Просмотр исходного кода

Merge branch 'develop' into hooperk-BT25-004

Michael8818 4 месяцев назад
Родитель
Сommit
900ce89278
87 измененных файлов с 367 добавлено и 510 удалено
  1. 1 1
      Assets/CardBaseEntity/CardEntity_JSONLoader.asset
  2. 2 2
      Assets/CardBaseEntity/P/Black/Tamer/P_234.asset
  3. 2 2
      Assets/CardBaseEntity/P/Black/Tamer/P_234_P1.asset
  4. 1 1
      Assets/CardBaseEntity/P/Blue/Tamer/P_233.asset
  5. 1 1
      Assets/CardBaseEntity/P/Blue/Tamer/P_233_P1.asset
  6. 1 1
      Assets/CardBaseEntity/P/Green/Option/P_236.asset
  7. 1 1
      Assets/CardBaseEntity/P/Green/Option/P_236_P1.asset
  8. 1 1
      Assets/CardBaseEntity/P/Green/Option/P_237.asset
  9. 1 1
      Assets/CardBaseEntity/P/Green/Option/P_237_P1.asset
  10. 1 1
      Assets/CardBaseEntity/P/Purple/Option/P_238.asset
  11. 1 1
      Assets/CardBaseEntity/P/Purple/Option/P_238_P1.asset
  12. 1 1
      Assets/CardBaseEntity/P/Yellow/Option/P_235.asset
  13. 1 1
      Assets/CardBaseEntity/P/Yellow/Option/P_235_P1.asset
  14. 24 0
      Assets/Scenes/ContinuousControllerScene.unity
  15. 5 0
      Assets/Scripts/CardEffect/AD1/Black/AD1_023.cs
  16. 3 1
      Assets/Scripts/CardEffect/AD1/Blue/AD1_013.cs
  17. 0 2
      Assets/Scripts/CardEffect/AD1/Red/AD1_004.cs
  18. 7 2
      Assets/Scripts/CardEffect/AD1/Yellow/AD1_021.cs
  19. 33 49
      Assets/Scripts/CardEffect/BT1/Blue/BT1_040.cs
  20. 11 32
      Assets/Scripts/CardEffect/BT1/Red/BT1_021.cs
  21. 2 1
      Assets/Scripts/CardEffect/BT10/Green/BT10_046.cs
  22. 2 1
      Assets/Scripts/CardEffect/BT10/Purple/BT10_073.cs
  23. 2 1
      Assets/Scripts/CardEffect/BT10/Red/BT10_008.cs
  24. 2 1
      Assets/Scripts/CardEffect/BT10/Yellow/BT10_032.cs
  25. 2 1
      Assets/Scripts/CardEffect/BT11/Black/BT11_062.cs
  26. 2 1
      Assets/Scripts/CardEffect/BT11/Blue/BT11_020.cs
  27. 2 1
      Assets/Scripts/CardEffect/BT11/Blue/BT11_023.cs
  28. 2 1
      Assets/Scripts/CardEffect/BT11/Red/BT11_007.cs
  29. 2 1
      Assets/Scripts/CardEffect/BT12/Black/BT12_059.cs
  30. 2 1
      Assets/Scripts/CardEffect/BT12/Blue/BT12_021.cs
  31. 2 1
      Assets/Scripts/CardEffect/BT12/Green/BT12_047.cs
  32. 2 1
      Assets/Scripts/CardEffect/BT12/White/BT12_098.cs
  33. 2 1
      Assets/Scripts/CardEffect/BT12/Yellow/BT12_034.cs
  34. 3 2
      Assets/Scripts/CardEffect/BT13/Yellow/BT13_034.cs
  35. 2 0
      Assets/Scripts/CardEffect/BT18/Red/BT18_095.cs
  36. 2 0
      Assets/Scripts/CardEffect/BT18/Yellow/BT18_097.cs
  37. 11 117
      Assets/Scripts/CardEffect/BT24/Blue/BT24_090.cs
  38. 14 115
      Assets/Scripts/CardEffect/BT24/Green/BT24_094.cs
  39. 2 1
      Assets/Scripts/CardEffect/BT3/Blue/BT3_093.cs
  40. 2 1
      Assets/Scripts/CardEffect/BT3/Green/BT3_051.cs
  41. 5 4
      Assets/Scripts/CardEffect/BT3/Red/BT3_008.cs
  42. 2 1
      Assets/Scripts/CardEffect/BT5/Black/BT5_059.cs
  43. 2 1
      Assets/Scripts/CardEffect/BT5/Blue/BT5_020.cs
  44. 2 1
      Assets/Scripts/CardEffect/BT5/Red/BT5_007.cs
  45. 2 1
      Assets/Scripts/CardEffect/BT6/Green/BT6_047.cs
  46. 2 1
      Assets/Scripts/CardEffect/BT7/Green/BT7_046.cs
  47. 6 3
      Assets/Scripts/CardEffect/BT7/Yellow/BT7_032.cs
  48. 2 1
      Assets/Scripts/CardEffect/BT8/Black/BT8_058.cs
  49. 2 1
      Assets/Scripts/CardEffect/BT8/Black/BT8_060.cs
  50. 2 1
      Assets/Scripts/CardEffect/BT9/Black/BT9_090.cs
  51. 2 1
      Assets/Scripts/CardEffect/BT9/Blue/BT9_020.cs
  52. 2 1
      Assets/Scripts/CardEffect/BT9/Green/BT9_046.cs
  53. 2 1
      Assets/Scripts/CardEffect/BT9/Red/BT9_008.cs
  54. 2 1
      Assets/Scripts/CardEffect/BT9/White/BT9_092.cs
  55. 2 1
      Assets/Scripts/CardEffect/EX2/Purple/EX2_039.cs
  56. 2 1
      Assets/Scripts/CardEffect/EX2/Red/EX2_008.cs
  57. 2 1
      Assets/Scripts/CardEffect/EX2/White/EX2_047.cs
  58. 2 1
      Assets/Scripts/CardEffect/EX2/Yellow/EX2_019.cs
  59. 2 1
      Assets/Scripts/CardEffect/EX3/Black/EX3_048.cs
  60. 2 1
      Assets/Scripts/CardEffect/EX3/Green/EX3_037.cs
  61. 2 1
      Assets/Scripts/CardEffect/EX3/Red/EX3_007.cs
  62. 2 1
      Assets/Scripts/CardEffect/EX3/Yellow/EX3_028.cs
  63. 2 1
      Assets/Scripts/CardEffect/EX3/Yellow/EX3_030.cs
  64. 2 1
      Assets/Scripts/CardEffect/EX3/Yellow/EX3_031.cs
  65. 2 1
      Assets/Scripts/CardEffect/EX4/Black/EX4_038.cs
  66. 2 1
      Assets/Scripts/CardEffect/EX4/Black/EX4_039.cs
  67. 2 1
      Assets/Scripts/CardEffect/EX4/Blue/EX4_016.cs
  68. 2 1
      Assets/Scripts/CardEffect/EX4/Green/EX4_032.cs
  69. 2 1
      Assets/Scripts/CardEffect/EX4/Green/EX4_034.cs
  70. 2 1
      Assets/Scripts/CardEffect/EX4/Purple/EX4_053.cs
  71. 3 3
      Assets/Scripts/CardEffect/EX8/Black/EX8_070.cs
  72. 2 1
      Assets/Scripts/CardEffect/ST10/Purple/ST10_12.cs
  73. 2 1
      Assets/Scripts/CardEffect/ST10/Yellow/ST10_04.cs
  74. 7 0
      Assets/Scripts/Script/CEntity_EffectController.cs
  75. 7 7
      Assets/Scripts/Script/CardEffectCommons/KeyWordEffects/Alliance.cs
  76. 28 7
      Assets/Scripts/Script/CardEffectCommons/RevealLibrary.cs
  77. 30 0
      Assets/Scripts/Script/CardEffectFactory.cs
  78. 33 22
      Assets/Scripts/Script/CardEffectFactory/KeyWordEffects/Alliance.cs
  79. 0 7
      Assets/Scripts/Script/CardEffectInterfaces.cs
  80. 1 4
      Assets/Scripts/Script/CardEffects/AddSkillClass.cs
  81. 0 35
      Assets/Scripts/Script/CardEffects/AllianceClass.cs
  82. 0 11
      Assets/Scripts/Script/CardEffects/AllianceClass.cs.meta
  83. 7 1
      Assets/Scripts/Script/ICardEffect.cs
  84. 4 5
      Assets/Scripts/Script/MultipleSkills.cs
  85. 13 18
      Assets/Scripts/Script/Permanent.cs
  86. 1 1
      Assets/Scripts/Script/PermanentEffectFactory.cs
  87. 2 2
      ProjectSettings/ProjectSettings.asset

+ 1 - 1
Assets/CardBaseEntity/CardEntity_JSONLoader.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:9d15b6735ab6d3a7160d3a0ecd6cc66e7e2383966f09c836e45bcf5adc0bc6c2
+oid sha256:05efb436c86a95e4697b1de1dd970b7441b3e89b9617c5cc420acbf07e509965
 size 477

+ 2 - 2
Assets/CardBaseEntity/P/Black/Tamer/P_234.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:11daddd65d42650efeb82f7c0a1c2a43ffe51452086540027731f5476ca4d9e5
-size 1436
+oid sha256:0e017475be0ebdf1c52a461ec1f4b6358a78a551b7e19ec259f62a55ba683247
+size 1499

+ 2 - 2
Assets/CardBaseEntity/P/Black/Tamer/P_234_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:ad2d06a8c30d99764700157287dddb2262382b0cd9fe084ffb7572f1a2ace234
-size 1442
+oid sha256:ed0de5e769703a492ed912b7f652c10065f373c9416953bc9c68c8254ab39e50
+size 1505

+ 1 - 1
Assets/CardBaseEntity/P/Blue/Tamer/P_233.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:5cc98daa105ba5bd76b00384aad81ccd3db274c888f85e247833f87fbe69c45c
+oid sha256:1f88fb49d3546f295316996309125f5e18dc43513a7160bfc438ea2ce962f995
 size 1448

+ 1 - 1
Assets/CardBaseEntity/P/Blue/Tamer/P_233_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:50eb4cf6147c60170410fbfb4886ef71e5b77aa1c91c59b809b1c9229e98e1fb
+oid sha256:1e16dc7f9ce0ca61645a282dad30a3d465fb7e51dda5828531c257b1af75429c
 size 1454

+ 1 - 1
Assets/CardBaseEntity/P/Green/Option/P_236.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:2dcd027da2de411d61cfddf0344bbd3f93e616367f4469c2814357e564234881
+oid sha256:f312543c0b2b3a3e065c845bbab2b10490bc0b357cab75f6a1bc28f066a67dbf
 size 1400

+ 1 - 1
Assets/CardBaseEntity/P/Green/Option/P_236_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:01ce7934f6b3c531919013e065d2217a00dc1a2d4425fc9478e25e42016bb8c1
+oid sha256:1a4366bc3f8a6a11942f0b3ac94f0228dd0fc99e8d3a6b1c1bb8af81303cacec
 size 1406

+ 1 - 1
Assets/CardBaseEntity/P/Green/Option/P_237.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:7fc5be088c887f73cd4f947b826bd5e567cf06c08d86c6fd745fe50f70b3ebde
+oid sha256:c100b9ae8f18fab6202bccba8b9f6aa26ba76ff413697aa77c2d0bbbca21714c
 size 1540

+ 1 - 1
Assets/CardBaseEntity/P/Green/Option/P_237_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:9e8d6e48e01778bf02e086b64ecab26bc534d973239a5f802cb2149791af4f21
+oid sha256:1263f7c9d7bc88ec074c88c1e68e6d57c821246384c7f31c29c1daf9ad4d0c80
 size 1546

+ 1 - 1
Assets/CardBaseEntity/P/Purple/Option/P_238.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:1bf9e7905c564886922a44ea7829ce8b350ddcac102b912d0943c26690b94b6b
+oid sha256:cdbd7eafbba12032377e446e4a89b3ba946722f2bca93e151ab5f27db247f430
 size 1449

+ 1 - 1
Assets/CardBaseEntity/P/Purple/Option/P_238_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:ff9158915a9645fa5fce82cea3094c503c6a9cb1e3be9b4d81201046cbab80c7
+oid sha256:cab2487ec2de3e2edeb4f750e9f4735c4ac4c693bf16cfa524ea971aaeb9b94e
 size 1455

+ 1 - 1
Assets/CardBaseEntity/P/Yellow/Option/P_235.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:122379721f2a87fbf1218454db5f461623c8bb8be048a0727fce25f869f3bb35
+oid sha256:899d66eb170621b29dbb71a26cfcf6ba2e2cf2632757843e663ac4960fe0c9f9
 size 1398

+ 1 - 1
Assets/CardBaseEntity/P/Yellow/Option/P_235_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:d7a58437484a774450597f02f9c7e352bff07d572876e8b21b74db836f5c9306
+oid sha256:ff5247945718ec0ed3ba2dbcecaac77c0612b59afb08d36619ad36cfd5c12972
 size 1404

+ 24 - 0
Assets/Scenes/ContinuousControllerScene.unity

@@ -6936,6 +6936,8 @@ MonoBehaviour:
   - {fileID: 11400000, guid: 45a3634bac7650745ae1cab2d7af52d8, type: 2}
   - {fileID: 11400000, guid: 9ec2e255e45ce92448a5fd1942f28a6f, type: 2}
   - {fileID: 11400000, guid: 48c5632b481a36f46a414d0f04ed3930, type: 2}
+  - {fileID: 11400000, guid: 2e932d3bd9ef7f641aeb540b3c1b2a2f, type: 2}
+  - {fileID: 11400000, guid: 69340d7dffd8d884d91605d0945446ea, type: 2}
   - {fileID: 11400000, guid: e62260a9dd14a3743bc1d559e88d18aa, type: 2}
   - {fileID: 11400000, guid: 609da9d18f186944b8e9710db96f3e3a, type: 2}
   - {fileID: 11400000, guid: 62cff5a349c37904f99c1f861e5ac90c, type: 2}
@@ -7006,6 +7008,8 @@ MonoBehaviour:
   - {fileID: 11400000, guid: c21c366536bc869429c14578d675876c, type: 2}
   - {fileID: 11400000, guid: f9bfa0c56e0f2d843b5d36d1af83948f, type: 2}
   - {fileID: 11400000, guid: d55522adc9552b447abda7177f262ddd, type: 2}
+  - {fileID: 11400000, guid: 8f0e96c155fe8a049a2d843c6d239342, type: 2}
+  - {fileID: 11400000, guid: 1fb7911eb9cc89245b768edc41603a5a, type: 2}
   - {fileID: 11400000, guid: 99de8b57fc534a740a455255aad17046, type: 2}
   - {fileID: 11400000, guid: dcbf45052e02194418adbe47efa87dee, type: 2}
   - {fileID: 11400000, guid: edf2c4f510f612d428c5a72b96202290, type: 2}
@@ -7072,6 +7076,10 @@ MonoBehaviour:
   - {fileID: 11400000, guid: 09506a1ba68dd7443aa2b96eac6600f5, type: 2}
   - {fileID: 11400000, guid: 24ee05cb42786cc46ae474e914e79d0e, type: 2}
   - {fileID: 11400000, guid: ea509882cd6935a4c9498e09de77cd63, type: 2}
+  - {fileID: 11400000, guid: 9b01ca2c1ee5f93479a8757f35f9ec39, type: 2}
+  - {fileID: 11400000, guid: f5fb96146626327448cf2bd935fe8a24, type: 2}
+  - {fileID: 11400000, guid: 1b2486cc3200067419af870332c46146, type: 2}
+  - {fileID: 11400000, guid: 5ade29d0090df324ea6c5ce96e1dd251, type: 2}
   - {fileID: 11400000, guid: 8b407f27b312b044cb49cb11a148c989, type: 2}
   - {fileID: 11400000, guid: 31438a32c4cd8bc4a9f8ee12540270ea, type: 2}
   - {fileID: 11400000, guid: 0b4bb608e6a951141b9528be7b419b63, type: 2}
@@ -7146,6 +7154,8 @@ MonoBehaviour:
   - {fileID: 11400000, guid: 10757b08b2efb33478634dfedac6fefa, type: 2}
   - {fileID: 11400000, guid: 56f5171f19d736542a77b90e62ed5114, type: 2}
   - {fileID: 11400000, guid: b8f1f25e8ae70fe45af7c4ee4876d912, type: 2}
+  - {fileID: 11400000, guid: e5dccd5ae873f144db121748f9f30b95, type: 2}
+  - {fileID: 11400000, guid: 02876be40651fe14e82b703c5f5a5b9e, type: 2}
   - {fileID: 11400000, guid: eabf1c609de718c42a5ce2d0ed2c3f66, type: 2}
   - {fileID: 11400000, guid: 3177390918038b942894bff607f18385, type: 2}
   - {fileID: 11400000, guid: 60d73225a93ad3241b36dae2d75b2a70, type: 2}
@@ -7200,6 +7210,8 @@ MonoBehaviour:
   - {fileID: 11400000, guid: 0076338724712084aa020f526ed83513, type: 2}
   - {fileID: 11400000, guid: b4740f9cb9b27d44594c47b295c5d21b, type: 2}
   - {fileID: 11400000, guid: 0b069769d90f7af46b407342d59e3952, type: 2}
+  - {fileID: 11400000, guid: e57221647d81df24cabac10d88c40902, type: 2}
+  - {fileID: 11400000, guid: cefaa5daf691ac24c9f0d91c7e21a5c9, type: 2}
   - {fileID: 11400000, guid: a1bd8e0a9746ee142bf2b76e8b2da7a7, type: 2}
   - {fileID: 11400000, guid: e8a79deb2fbbdee4fb06295c5fcd171f, type: 2}
   - {fileID: 11400000, guid: 94a5e6198e6f2eb428716d49b81d3c56, type: 2}
@@ -13792,6 +13804,7 @@ MonoBehaviour:
   - {fileID: 11400000, guid: a689d2fd2a1979a4ea16a8d0d7c243b0, type: 2}
   - {fileID: 11400000, guid: a673b8c8b5dc2a04b9cd4a973447cf3d, type: 2}
   - {fileID: 11400000, guid: a6bd063dadcb61b46b8e11364b9a8dae, type: 2}
+  - {fileID: 11400000, guid: 2e932d3bd9ef7f641aeb540b3c1b2a2f, type: 2}
   - {fileID: 11400000, guid: 5ebaa220afe69ee488053c599dfef0c0, type: 2}
   - {fileID: 11400000, guid: 43bcf67c53d19664badb6c37238cd823, type: 2}
   - {fileID: 11400000, guid: 64f63fb3e61d05647b3b870d0fdf22ff, type: 2}
@@ -13825,6 +13838,17 @@ MonoBehaviour:
   - {fileID: 11400000, guid: d385515fe305e834d968440d45ebe3ff, type: 2}
   - {fileID: 11400000, guid: c634863311e77eb44b3f0e0d498eb249, type: 2}
   - {fileID: 11400000, guid: 951b70327d834984fb76cc0aac94588e, type: 2}
+  - {fileID: 11400000, guid: 69340d7dffd8d884d91605d0945446ea, type: 2}
+  - {fileID: 11400000, guid: e5dccd5ae873f144db121748f9f30b95, type: 2}
+  - {fileID: 11400000, guid: 02876be40651fe14e82b703c5f5a5b9e, type: 2}
+  - {fileID: 11400000, guid: 8f0e96c155fe8a049a2d843c6d239342, type: 2}
+  - {fileID: 11400000, guid: 1fb7911eb9cc89245b768edc41603a5a, type: 2}
+  - {fileID: 11400000, guid: 9b01ca2c1ee5f93479a8757f35f9ec39, type: 2}
+  - {fileID: 11400000, guid: f5fb96146626327448cf2bd935fe8a24, type: 2}
+  - {fileID: 11400000, guid: 1b2486cc3200067419af870332c46146, type: 2}
+  - {fileID: 11400000, guid: 5ade29d0090df324ea6c5ce96e1dd251, type: 2}
+  - {fileID: 11400000, guid: e57221647d81df24cabac10d88c40902, type: 2}
+  - {fileID: 11400000, guid: cefaa5daf691ac24c9f0d91c7e21a5c9, type: 2}
   - {fileID: 11400000, guid: b00372efcf5658c42ad76bf91c5df4c3, type: 2}
   - {fileID: 11400000, guid: 35c6ca847a511834abee752dd8e012f5, type: 2}
   - {fileID: 11400000, guid: ede9619666b7b9e42885a1e9736445c5, type: 2}

+ 5 - 0
Assets/Scripts/CardEffect/AD1/Black/AD1_023.cs

@@ -259,6 +259,11 @@ namespace DCGO.CardEffects.AD1
                 {
                     yield return ContinuousController.instance.StartCoroutine(CardObjectController.AddHandCards(new List<CardSource>() { card.Owner.SecurityCards[0] }, false, activateClass));
 
+                    yield return ContinuousController.instance.StartCoroutine(new IReduceSecurity(
+                        player: card.Owner,
+                        refSkillInfos: ref ContinuousController.instance.nullSkillInfos,
+                        activateClass).ReduceSecurity());
+
                     card.PermanentOfThisCard().willBeRemoveField = false;
 
                     card.PermanentOfThisCard().HideDeleteEffect();

+ 3 - 1
Assets/Scripts/CardEffect/AD1/Blue/AD1_013.cs

@@ -194,7 +194,9 @@ namespace DCGO.CardEffects.AD1
             {
                 bool Condition()
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card)
+                        && (card.PermanentOfThisCard().TopCard.EqualsTraits("Blue Flare")
+                            || card.PermanentOfThisCard().TopCard.EqualsTraits("Xros Heart"));
                 }
 
                 int changeDP()

+ 0 - 2
Assets/Scripts/CardEffect/AD1/Red/AD1_004.cs

@@ -130,7 +130,6 @@ namespace DCGO.CardEffects.AD1
                     {
 
                         List<CardSource> cards = card.Owner.GetBattleAreaPermanents()
-                        .Concat(card.Owner.GetBattleAreaPermanents()).ToList()
                         .Map(card => card.TopCard)
                         .Where(x => x.IsTamer).ToList();
 
@@ -163,7 +162,6 @@ namespace DCGO.CardEffects.AD1
                     if (CardEffectCommons.IsExistOnBattleArea(card))
                     {
                         List<CardSource> cards = card.Owner.GetBattleAreaPermanents()
-                        .Concat(card.Owner.Enemy.GetBattleAreaPermanents()).ToList()
                         .Map(card => card.TopCard)
                         .Where(x => x.IsTamer).ToList();
 

+ 7 - 2
Assets/Scripts/CardEffect/AD1/Yellow/AD1_021.cs

@@ -43,7 +43,7 @@ namespace DCGO.CardEffects.AD1
             if (timing == EffectTiming.OnTappedAnyone)
             {
                 ActivateClass activateClass = new ActivateClass();
-                activateClass.SetUpICardEffect("Draw 1, 1 Digimon my digivolve into a yellow Digimon with [Greymon] in name for -3", CanUseCondition, card);
+                activateClass.SetUpICardEffect("Draw 1, 1 Digimon may digivolve into a yellow Digimon with [Greymon] in name for -3", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDescription());
                 cardEffects.Add(activateClass);
 
@@ -122,7 +122,6 @@ namespace DCGO.CardEffects.AD1
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("1 Marcus Damon is also a 6k Digimon, gains Rush & can't digivolve. Then, 1 of your Digimon may attack", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, true, EffectDescription());
-                activateClass.SetIsOptionalOverride(_ => !CardEffectCommons.HasMatchConditionOwnersPermanent(card, PermanentCondition));//Effect is optional while you do not have an Agumon or Greymon
                 activateClass.SetHashString("AD1_021_EoYT");
                 cardEffects.Add(activateClass);
 
@@ -158,6 +157,7 @@ namespace DCGO.CardEffects.AD1
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
+                    bool activated = false;
                     if (CardEffectCommons.HasMatchConditionOwnersPermanent(card, PermanentCondition))
                     {
                         SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
@@ -181,6 +181,8 @@ namespace DCGO.CardEffects.AD1
 
                         IEnumerator SelectPermanentCoroutine(Permanent permanent)
                         {
+                            activated = true;
+
                             yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.BecomeDigimonThatCantDigivolve(
                                 targetPermanent: permanent, 
                                 DP: 6000, 
@@ -216,6 +218,8 @@ namespace DCGO.CardEffects.AD1
 
                         IEnumerator SelectPermanentCoroutine(Permanent permanent)
                         {
+                            activated = true;
+
                             SelectAttackEffect selectAttackEffect = GManager.instance.GetComponent<SelectAttackEffect>();
 
                             selectAttackEffect.SetUp(
@@ -227,6 +231,7 @@ namespace DCGO.CardEffects.AD1
                             yield return ContinuousController.instance.StartCoroutine(selectAttackEffect.Activate());
                         }
                     }
+                    if (!activated) activateClass.RemoveUse();
                 }
             }
             #endregion

+ 33 - 49
Assets/Scripts/CardEffect/BT1/Blue/BT1_040.cs

@@ -1,74 +1,58 @@
-using System.Collections;
+using System.Collections;
 using System.Collections.Generic;
-using UnityEngine;
 
+// WereGarurumon
 namespace DCGO.CardEffects.BT1
 {
     public class BT1_040 : CEntity_Effect
     {
         public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
         {
-        List<ICardEffect> cardEffects = new List<ICardEffect>();
+            List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-        if (timing == EffectTiming.OnAllyAttack)
-        {
-            ActivateClass activateClass = new ActivateClass();
-            activateClass.SetUpICardEffect("Memory +3", CanUseCondition, card);
-            activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
-            cardEffects.Add(activateClass);
-
-            string EffectDiscription()
-            {
-                return "[When Attacking] Gain 3 memory. At end of turn lose 3 memory.";
-            }
-
-            bool CanUseCondition(Hashtable hashtable)
+            if (timing == EffectTiming.OnAllyAttack)
             {
-                return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
-            }
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Memory +3", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
+                cardEffects.Add(activateClass);
 
-            bool CanActivateCondition(Hashtable hashtable)
-            {
-                if (CardEffectCommons.IsExistOnBattleArea(card))
+                string EffectDiscription()
                 {
-                    return true;
+                    return "[When Attacking] Gain 3 memory. At end of turn lose 3 memory.";
                 }
 
-                return false;
-            }
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
+                }
 
-            IEnumerator ActivateCoroutine(Hashtable _hashtable)
-            {
-                yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(3, activateClass));
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleArea(card);
+                }
 
-                    ActivateClass activateClass1 = new ActivateClass();
-                    activateClass1.SetUpICardEffect("Memory -3", CanUseCondition1, card);
-                    activateClass1.SetUpActivateClass(CanActivateCondition1, ActivateCoroutine1, -1, false, EffectDiscription1());
-                    CardEffectCommons.AddEffectToPlayer(effectDuration: EffectDuration.UntilEachTurnEnd, card: card, cardEffect: activateClass1, timing: EffectTiming.OnEndTurn);
+                IEnumerator ActivateCoroutine(Hashtable _hashtable)
+                {
+                    yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(3, activateClass));
 
-                    string EffectDiscription1()
-                    {
-                        return "Lose 3 memory.";
-                    }
+                    card.Owner.UntilEachTurnEndEffects.Add(GetCardEffect);
 
-                    bool CanUseCondition1(Hashtable hashtable)
+                    ICardEffect GetCardEffect(EffectTiming _timing)
                     {
-                        return true;
-                    }
+                        if (_timing == EffectTiming.OnEndTurn)
+                        {
+                            return CardEffectFactory.EoTLose3Memory(card);
+                        }
 
-                    bool CanActivateCondition1(Hashtable hashtable)
-                    {
-                        return true;
+                        return null;
                     }
 
-                    IEnumerator ActivateCoroutine1(Hashtable _hashtable1)
-                    {
-                        yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(-3, activateClass1));
-                    }
+                    yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateBuffEffect(card.PermanentOfThisCard()));
                 }
-        }
+            }
 
-        return cardEffects;
-    }
+            return cardEffects;
+        }
     }
-}
+}

+ 11 - 32
Assets/Scripts/CardEffect/BT1/Red/BT1_021.cs

@@ -1,10 +1,5 @@
 using System.Collections;
 using System.Collections.Generic;
-using UnityEngine;
-using System.Linq;
-using Photon;
-using System;
-using Photon.Pun;
 
 public class BT1_021 : CEntity_Effect
 {
@@ -31,42 +26,26 @@ public class BT1_021 : CEntity_Effect
 
             bool CanActivateCondition(Hashtable hashtable)
             {
-                if (CardEffectCommons.IsExistOnBattleArea(card))
-                {
-                    return true;
-                }
-
-                return false;
+                return CardEffectCommons.IsExistOnBattleArea(card);
             }
 
             IEnumerator ActivateCoroutine(Hashtable _hashtable)
             {
                 yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(3, activateClass));
 
-                        ActivateClass activateClass1 = new ActivateClass();
-                        activateClass1.SetUpICardEffect("Memory -3", CanUseCondition1, card);
-                        activateClass1.SetUpActivateClass(CanActivateCondition1, ActivateCoroutine1, -1, false, EffectDiscription1());
-                        CardEffectCommons.AddEffectToPlayer(effectDuration: EffectDuration.UntilEachTurnEnd, card: card, cardEffect: activateClass1, timing: EffectTiming.OnEndTurn);
+                card.Owner.UntilEachTurnEndEffects.Add(GetCardEffect);
 
-                        string EffectDiscription1()
-                        {
-                            return "Lose 3 memory.";
-                        }
-
-                        bool CanUseCondition1(Hashtable hashtable)
-                        {
-                            return true;
-                        }
+                ICardEffect GetCardEffect(EffectTiming _timing)
+                {
+                    if (_timing == EffectTiming.OnEndTurn)
+                    {
+                        return CardEffectFactory.EoTLose3Memory(card);
+                    }
 
-                        bool CanActivateCondition1(Hashtable hashtable)
-                        {
-                            return true;
-                        }
+                    return null;
+                }
 
-                        IEnumerator ActivateCoroutine1(Hashtable _hashtable1)
-                        {
-                            yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(-3, activateClass1));
-                        }
+                yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateBuffEffect(card.PermanentOfThisCard()));
             }
         }
 

+ 2 - 1
Assets/Scripts/CardEffect/BT10/Green/BT10_046.cs

@@ -75,7 +75,8 @@ namespace DCGO.CardEffects.BT10
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT10/Purple/BT10_073.cs

@@ -98,7 +98,8 @@ namespace DCGO.CardEffects.BT10
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT10/Red/BT10_008.cs

@@ -101,7 +101,8 @@ namespace DCGO.CardEffects.BT10
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT10/Yellow/BT10_032.cs

@@ -91,7 +91,8 @@ namespace DCGO.CardEffects.BT10
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT11/Black/BT11_062.cs

@@ -99,7 +99,8 @@ namespace DCGO.CardEffects.BT11
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT11/Blue/BT11_020.cs

@@ -87,7 +87,8 @@ namespace DCGO.CardEffects.BT11
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.Trash,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT11/Blue/BT11_023.cs

@@ -86,7 +86,8 @@ namespace DCGO.CardEffects.BT11
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT11/Red/BT11_007.cs

@@ -89,7 +89,8 @@ namespace DCGO.CardEffects.BT11
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT12/Black/BT12_059.cs

@@ -101,7 +101,8 @@ namespace DCGO.CardEffects.BT12
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT12/Blue/BT12_021.cs

@@ -95,7 +95,8 @@ namespace DCGO.CardEffects.BT12
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT12/Green/BT12_047.cs

@@ -95,7 +95,8 @@ namespace DCGO.CardEffects.BT12
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT12/White/BT12_098.cs

@@ -80,7 +80,8 @@ namespace DCGO.CardEffects.BT12
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/BT12/Yellow/BT12_034.cs

@@ -99,7 +99,8 @@ namespace DCGO.CardEffects.BT12
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 3 - 2
Assets/Scripts/CardEffect/BT13/Yellow/BT13_034.cs

@@ -90,7 +90,8 @@ namespace DCGO.CardEffects.BT13
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }
@@ -106,7 +107,7 @@ namespace DCGO.CardEffects.BT13
 
                 string EffectDiscription()
                 {
-                    return "[When Attacking][Once per Turn] If there're 6 or fewer total cards in both players' security stacks, 1 of your opponentf Digimon gets -2000 DP for the turn.";
+                    return "[When Attacking][Once per Turn] If there're 6 or fewer total cards in both players' security stacks, 1 of your opponent�f Digimon gets -2000 DP for the turn.";
                 }
 
                 bool CanSelectPermanentCondition(Permanent permanent)

+ 2 - 0
Assets/Scripts/CardEffect/BT18/Red/BT18_095.cs

@@ -43,6 +43,8 @@ namespace DCGO.CardEffects.BT18
 
                 List<string> GetNamesList(List<CardSource> cardSources)
                 {
+	                selectedNames.Clear();
+
                     foreach (CardSource cardName in cardSources)
                     {
                         foreach (string name in cardName.CardNames)

+ 2 - 0
Assets/Scripts/CardEffect/BT18/Yellow/BT18_097.cs

@@ -43,6 +43,8 @@ namespace DCGO.CardEffects.BT18
 
                 List<string> GetNamesList(List<CardSource> cardSources)
                 {
+	                selectedNames.Clear();
+
                     foreach (CardSource cardName in cardSources)
                     {
                         foreach (string name in cardName.CardNames)

+ 11 - 117
Assets/Scripts/CardEffect/BT24/Blue/BT24_090.cs

@@ -57,139 +57,33 @@ namespace DCGO.CardEffects.BT24
             #endregion
 
             #region Alliance
-
-            string GrantedAllianceHashstring(CardSource cardSource) => $"BT24_090_Alliance_On_{cardSource.CardIndex}_From_{card.CardIndex}";//Get unique reference of this card granting to particular cardsource
-
-            /// Alliance effect which is granted to all of your Digimon while this card is face up in security
-            /// The effect itself tracks if the card granting it is still present and if the conditions for granting are still met
-            ICardEffect GetAllianceEffect(CardSource cardSource)
-            {
-                bool HasOXII(Permanent permanent)
-                {
-                    return permanent.TopCard.EqualsCardName("Neptunemon")
-                        || permanent.TopCard.EqualsCardName("Venusmon");
-                }
-
-                bool Condition()
-                {
-                    return CardEffectCommons.IsExistInSecurity(card, false) //Is this card that provides the effect still providing the effect
-                        && cardSource == cardSource.PermanentOfThisCard().TopCard //Added effects don't check if it is inherited or not so have to check that this is the topcard
-                        && (cardSource.CardColors.Contains(CardColor.Blue) || cardSource.CardColors.Contains(CardColor.Yellow))
-                        && cardSource.HasTSTraits // Does this card meet conditions
-                        && CardEffectCommons.HasMatchConditionOwnersPermanent(card, HasOXII); // Is the condition for granting met
-                }
-
-                ICardEffect cardEffect = CardEffectFactory.AllianceSelfEffect(false, cardSource, Condition);
-                cardEffect.SetHashString(GrantedAllianceHashstring(cardSource)); // Unique identifier using exact card object references
-                return cardEffect;
-            }
-
-            ///Grant all cards in a permanent the effect permanently
-            ///Grants to every card so effect can survive through degeneration
-            ///The effect's CanUseCondition will deactivate when the conditions for granting are not met
-            void GrantEffect(List<Permanent> permanents)
-            {
-                foreach (Permanent permanent in permanents)
-                {
-                    foreach(CardSource cardSource in permanent.cardSources)
-                    {
-                        if(!cardSource.HasDP || permanent.EffectList_ForCard(EffectTiming.OnAllyAttack, cardSource).Any(effect => effect.HashString == GrantedAllianceHashstring(cardSource)))
-                            continue; // if the card could not be a relevant top card or if it already has the effect, don't grant the effect
-
-                        Func<EffectTiming, ICardEffect> getCardEffect = CardEffectCommons.GetCardEffectByEffectTiming(timing: EffectTiming.OnAllyAttack, cardEffect: GetAllianceEffect(cardSource));
-
-                        permanent.PermanentEffects.Add(getCardEffect);
-                    }
-                }
-            }
-
-            string SharedEffectDescription() => "(Security) [All Turns] All of your blue or yellow [TS] trait Digimon gain <Blocker>. While you have [Neptunemon] or [Venusmon], all of your blue or yellow [TS] trait Digimon gain <Alliance>."; 
-
-            bool IsYourPermanent(Permanent permanent) => CardEffectCommons.IsPermanentExistsOnOwnerBattleArea(permanent, card);
-
-            #region Give permanents conditional Alliance on card added to security
-            if (timing == EffectTiming.OnAddSecurity)
-            {
-                ActivateClass activateClass = new();
-                activateClass.SetUpICardEffect("Set Up Alliance", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, SharedEffectDescription());
-                activateClass.SetIsBackgroundProcess(true);
-                cardEffects.Add(activateClass);
-
-                bool CanUseCondition(Hashtable hashtable)
-                {
-                    return CardEffectCommons.IsExistInSecurity(card, false)
-                        && CardEffectCommons.GetCardSourcesFromHashtable(hashtable).Contains(card);
-                }
-
-                IEnumerator ActivateCoroutine(Hashtable hashtable)
-                {
-                    List<Permanent> permanents = card.Owner.GetBattleAreaPermanents();
-                    GrantEffect(permanents);
-                    yield return null;
-                }
-            }
-            #endregion
-
-            #region Give permanents conditional Alliance on permanent enter
-            if (timing == EffectTiming.OnEnterFieldAnyone)
+            if (timing == EffectTiming.OnAllyAttack)
             {
-                ActivateClass activateClass = new();
-                activateClass.SetUpICardEffect("Set Up Alliance", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, SharedEffectDescription());
-                activateClass.SetIsBackgroundProcess(true);
-                cardEffects.Add(activateClass);
-
-                bool CanUseCondition(Hashtable hashtable)
+                bool PermanentCondition(Permanent permanent)
                 {
-                    return CardEffectCommons.IsExistInSecurity(card, false)
-                        && (CardEffectCommons.CanTriggerOnPermanentPlay(hashtable, IsYourPermanent)
-                            || CardEffectCommons.CanTriggerWhenPermanentDigivolving(hashtable, IsYourPermanent));
+                    return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card)
+                        && (permanent.TopCard.CardColors.Contains(CardColor.Blue) || permanent.TopCard.CardColors.Contains(CardColor.Yellow))
+                        && permanent.TopCard.HasTSTraits;
                 }
 
-                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                bool HasOXII(Permanent permanent)
                 {
-                    List<Permanent> permanents = CardEffectCommons.GetHashtablesFromHashtable(hashtable)
-                            .Map(CardEffectCommons.GetPermanentFromHashtable)
-                            .Filter(IsYourPermanent);
-                    GrantEffect(permanents);
-                    yield return null;
+                    return permanent.TopCard.EqualsCardName("Neptunemon")
+                        || permanent.TopCard.EqualsCardName("Venusmon");
                 }
-            }
-            #endregion
-
-            #region Give permanents conditional Alliance on card added to permanent stack
-            if(timing == EffectTiming.OnAddDigivolutionCards)
-            {
-                ActivateClass activateClass = new();
-                activateClass.SetUpICardEffect("Set Up Alliance", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, SharedEffectDescription());
-                activateClass.SetIsBackgroundProcess(true);
-                cardEffects.Add(activateClass);
 
-                bool CanUseCondition(Hashtable hashtable)
+                bool CanUseCondition()
                 {
                     return CardEffectCommons.IsExistInSecurity(card, false)
-                        && CardEffectCommons.CanTriggerOnAddDigivolutionCard(
-                                hashtable: hashtable,
-                                permanentCondition: IsYourPermanent,
-                                cardEffectCondition: null,
-                                cardCondition: null);
+                        && CardEffectCommons.HasMatchConditionOwnersPermanent(card, HasOXII);
                 }
 
-                IEnumerator ActivateCoroutine(Hashtable hashtable)
-                {
-                    List<Permanent> permanents = new List<Permanent>() { CardEffectCommons.GetPermanentFromHashtable(hashtable) };
-                    GrantEffect(permanents);
-                    yield return null;
-                }
+                cardEffects.Add(CardEffectFactory.AllianceStaticEffect(PermanentCondition, false, card, CanUseCondition));
             }
             #endregion
 
             #endregion
 
-            #endregion
-
             #region Main Effect
 
             if (timing == EffectTiming.OptionSkill)

+ 14 - 115
Assets/Scripts/CardEffect/BT24/Green/BT24_094.cs

@@ -34,8 +34,9 @@ namespace DCGO.CardEffects.BT24
 
             #endregion
 
-            #region All Turns - Security DP
+            #region All Turns - Security
 
+            #region All Turns - Security DP
             if (timing == EffectTiming.None)
             {
                 bool PermanentCondition(Permanent permanent)
@@ -60,136 +61,34 @@ namespace DCGO.CardEffects.BT24
                     effectName: () => "All of your green or yellow [TS] trait Digimon get +2000 DP."));
                 #endregion
             }
+            #endregion
 
             #region All Turns - Security Alliance
-            string GrantedAllianceHashstring(CardSource cardSource) => $"BT24_090_Alliance_On_{cardSource.CardIndex}_From_{card.CardIndex}";//Get unique reference of this card granting to particular cardsource
-
-            /// Alliance effect which is granted to all of your Digimon while this card is face up in security
-            /// The effect itself tracks if the card granting it is still present and if the conditions for granting are still met
-            ICardEffect GetAllianceEffect(CardSource cardSource)
-            {
-                bool HasOXII(Permanent permanent)
-                {
-                    return permanent.TopCard.EqualsCardName("Merukimon")
-                        || permanent.TopCard.EqualsCardName("Minervamon");
-                }
-
-                bool Condition()
-                {
-                    return CardEffectCommons.IsExistInSecurity(card, false) //Is this card that provides the effect still providing the effect
-                        && cardSource == cardSource.PermanentOfThisCard().TopCard //Added effects don't check if it is inherited or not so have to check that this is the topcard
-                        && (cardSource.CardColors.Contains(CardColor.Blue) || cardSource.CardColors.Contains(CardColor.Yellow))
-                        && cardSource.HasTSTraits // Does this card meet conditions
-                        && CardEffectCommons.HasMatchConditionOwnersPermanent(card, HasOXII); // Is the condition for granting met
-                }
-
-                ICardEffect cardEffect = CardEffectFactory.AllianceSelfEffect(false, cardSource, Condition);
-                cardEffect.SetHashString(GrantedAllianceHashstring(cardSource)); // Unique identifier using exact card object references
-                return cardEffect;
-            }
-
-            ///Grant all cards in a permanent the effect permanently
-            ///Grants to every card so effect can survive through degeneration
-            ///The effect's CanUseCondition will deactivate when the conditions for granting are not met
-            void GrantEffect(List<Permanent> permanents)
+            if (timing == EffectTiming.OnAllyAttack)
             {
-                foreach (Permanent permanent in permanents)
-                {
-                    foreach (CardSource cardSource in permanent.cardSources)
-                    {
-                        if (!cardSource.HasDP || permanent.EffectList_ForCard(EffectTiming.OnAllyAttack, cardSource).Any(effect => effect.HashString == GrantedAllianceHashstring(cardSource)))
-                            continue; // if the card could not be a relevant top card or if it already has the effect, don't grant the effect
-
-                        Func<EffectTiming, ICardEffect> getCardEffect = CardEffectCommons.GetCardEffectByEffectTiming(timing: EffectTiming.OnAllyAttack, cardEffect: GetAllianceEffect(cardSource));
-
-                        permanent.PermanentEffects.Add(getCardEffect);
-                    }
-                }
-            }
-
-            string SharedEffectDescription() => "(Security) [All Turns] All of your blue or yellow [TS] trait Digimon gain <Blocker>. While you have [Neptunemon] or [Venusmon], all of your blue or yellow [TS] trait Digimon gain <Alliance>.";
-
-            bool IsYourPermanent(Permanent permanent) => CardEffectCommons.IsPermanentExistsOnOwnerBattleArea(permanent, card);
-
-            #region Give permanents conditional Alliance on card added to security
-            if (timing == EffectTiming.OnAddSecurity)
-            {
-                ActivateClass activateClass = new();
-                activateClass.SetUpICardEffect("Set Up Alliance", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, SharedEffectDescription());
-                activateClass.SetIsBackgroundProcess(true);
-                cardEffects.Add(activateClass);
-
-                bool CanUseCondition(Hashtable hashtable)
+                bool PermanentCondition(Permanent permanent)
                 {
-                    return CardEffectCommons.IsExistInSecurity(card, false)
-                        && CardEffectCommons.GetCardSourcesFromHashtable(hashtable).Contains(card);
+                    return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card)
+                        && (permanent.TopCard.CardColors.Contains(CardColor.Green) || permanent.TopCard.CardColors.Contains(CardColor.Yellow))
+                        && permanent.TopCard.HasTSTraits;
                 }
 
-                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                bool HasOXII(Permanent permanent)
                 {
-                    List<Permanent> permanents = card.Owner.GetBattleAreaPermanents();
-                    GrantEffect(permanents);
-                    yield return null;
+                    return permanent.TopCard.EqualsCardName("Merukimon")
+                        || permanent.TopCard.EqualsCardName("Minervamon");
                 }
-            }
-            #endregion
-
-            #region Give permanents conditional Alliance on permanent enter
-            if (timing == EffectTiming.OnEnterFieldAnyone)
-            {
-                ActivateClass activateClass = new();
-                activateClass.SetUpICardEffect("Set Up Alliance", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, SharedEffectDescription());
-                activateClass.SetIsBackgroundProcess(true);
-                cardEffects.Add(activateClass);
 
-                bool CanUseCondition(Hashtable hashtable)
+                bool CanUseCondition()
                 {
                     return CardEffectCommons.IsExistInSecurity(card, false)
-                        && (CardEffectCommons.CanTriggerOnPermanentPlay(hashtable, IsYourPermanent)
-                            || CardEffectCommons.CanTriggerWhenPermanentDigivolving(hashtable, IsYourPermanent));
+                        && CardEffectCommons.HasMatchConditionOwnersPermanent(card, HasOXII);
                 }
 
-                IEnumerator ActivateCoroutine(Hashtable hashtable)
-                {
-                    List<Permanent> permanents = CardEffectCommons.GetHashtablesFromHashtable(hashtable)
-                            .Map(CardEffectCommons.GetPermanentFromHashtable)
-                            .Filter(IsYourPermanent);
-                    GrantEffect(permanents);
-                    yield return null;
-                }
+                cardEffects.Add(CardEffectFactory.AllianceStaticEffect(PermanentCondition, false, card, CanUseCondition));
             }
             #endregion
 
-            #region Give permanents conditional Alliance on card added to permanent stack
-            if (timing == EffectTiming.OnAddDigivolutionCards)
-            {
-                ActivateClass activateClass = new();
-                activateClass.SetUpICardEffect("Set Up Alliance", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, SharedEffectDescription());
-                activateClass.SetIsBackgroundProcess(true);
-                cardEffects.Add(activateClass);
-
-                bool CanUseCondition(Hashtable hashtable)
-                {
-                    return CardEffectCommons.IsExistInSecurity(card, false)
-                        && CardEffectCommons.CanTriggerOnAddDigivolutionCard(
-                                hashtable: hashtable,
-                                permanentCondition: IsYourPermanent,
-                                cardEffectCondition: null,
-                                cardCondition: null);
-                }
-
-                IEnumerator ActivateCoroutine(Hashtable hashtable)
-                {
-                    List<Permanent> permanents = new List<Permanent>() { CardEffectCommons.GetPermanentFromHashtable(hashtable) };
-                    GrantEffect(permanents);
-                    yield return null;
-                }
-            }
-            #endregion
-            #endregion
             #endregion
 
             #region Main Effect

+ 2 - 1
Assets/Scripts/CardEffect/BT3/Blue/BT3_093.cs

@@ -94,7 +94,8 @@ public class BT3_093 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT3/Green/BT3_051.cs

@@ -96,7 +96,8 @@ public class BT3_051 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.Trash,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 5 - 4
Assets/Scripts/CardEffect/BT3/Red/BT3_008.cs

@@ -99,7 +99,8 @@ public class BT3_008 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
 
                 #region old
@@ -114,7 +115,7 @@ public class BT3_008 : CEntity_Effect
 
                                             int maxCount = 2;
 
-                                            #region 最大枚数
+                                            #region �スナ大枚�ス�ス
                                             List<CardSource[]> cardsList = ParameterComparer.Enumerate(revealLibrary.revealedCards, maxCount).ToList();
 
                                             List<int> maxCounts = new List<int>() { 0 };
@@ -212,7 +213,7 @@ public class BT3_008 : CEntity_Effect
 
                                             yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
 
-                                            #region リストによる選択条件
+                                            #region �ス�ス�スX�スg�スノゑソス�スI�ス�ス�ス�ス�ス�ス
                                             bool CanTargetCondition_ByPreSelecetedList(List<CardSource> cardSources, CardSource cardSource)
                                             {
                                                 List<CardSource> _cardSources = new List<CardSource>();
@@ -264,7 +265,7 @@ public class BT3_008 : CEntity_Effect
                                             }
                                             #endregion
 
-                                            #region 選択条件
+                                            #region �スI�ス�ス�ス�ス�ス�ス
                                             bool CanEndSelectCondition(List<CardSource> cardSources)
                                             {
                                                 List<CardSource[]> cardsList = ParameterComparer.Enumerate(cardSources, cardSources.Count).ToList();

+ 2 - 1
Assets/Scripts/CardEffect/BT5/Black/BT5_059.cs

@@ -92,7 +92,8 @@ public class BT5_059 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT5/Blue/BT5_020.cs

@@ -89,7 +89,8 @@ public class BT5_020 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT5/Red/BT5_007.cs

@@ -88,7 +88,8 @@ public class BT5_007 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT6/Green/BT6_047.cs

@@ -81,7 +81,8 @@ public class BT6_047 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT7/Green/BT7_046.cs

@@ -98,7 +98,8 @@ public class BT7_046 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 6 - 3
Assets/Scripts/CardEffect/BT7/Yellow/BT7_032.cs

@@ -12,8 +12,7 @@ public class BT7_032 : CEntity_Effect
         {
             ActivateClass activateClass = new ActivateClass();
             activateClass.SetUpICardEffect("If you have 3 security cards, gain 2 memory", CanUseCondition, card);
-            activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, true, EffectDiscription());
-            activateClass.SetIsOptionalOverride(_ => card.Owner.SecurityCards.Count != 3);//Effect is optional while you do not have 3 mem to whiff
+            activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, false, EffectDiscription());
             activateClass.SetIsInheritedEffect(true);
             activateClass.SetHashString("Memory+2_BT7_032");
             cardEffects.Add(activateClass);
@@ -34,12 +33,16 @@ public class BT7_032 : CEntity_Effect
                 return CardEffectCommons.IsExistOnBattleArea(card);
             }
 
-            IEnumerator ActivateCoroutine(Hashtable _hashtable)
+            IEnumerator ActivateCoroutine(Hashtable hashtable)
             {
                 if (card.Owner.SecurityCards.Count == 3)
                 { 
                     yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(2, activateClass));
                 }
+                else
+                {
+                    activateClass.RemoveUse();
+                }
             }
         }
 

+ 2 - 1
Assets/Scripts/CardEffect/BT8/Black/BT8_058.cs

@@ -73,7 +73,8 @@ public class BT8_058 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT8/Black/BT8_060.cs

@@ -83,7 +83,8 @@ public class BT8_060 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT9/Black/BT9_090.cs

@@ -81,7 +81,8 @@ public class BT9_090 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT9/Blue/BT9_020.cs

@@ -103,7 +103,8 @@ public class BT9_020 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT9/Green/BT9_046.cs

@@ -102,7 +102,8 @@ public class BT9_046 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT9/Red/BT9_008.cs

@@ -103,7 +103,8 @@ public class BT9_008 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/BT9/White/BT9_092.cs

@@ -89,7 +89,8 @@ public class BT9_092 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 2 - 1
Assets/Scripts/CardEffect/EX2/Purple/EX2_039.cs

@@ -172,7 +172,8 @@ namespace DCGO.CardEffects.EX2
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX2/Red/EX2_008.cs

@@ -91,7 +91,8 @@ namespace DCGO.CardEffects.EX2
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX2/White/EX2_047.cs

@@ -80,7 +80,8 @@ namespace DCGO.CardEffects.EX2
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX2/Yellow/EX2_019.cs

@@ -95,7 +95,8 @@ namespace DCGO.CardEffects.EX2
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX3/Black/EX3_048.cs

@@ -133,7 +133,8 @@ namespace DCGO.CardEffects.EX3
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX3/Green/EX3_037.cs

@@ -93,7 +93,8 @@ namespace DCGO.CardEffects.EX3
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX3/Red/EX3_007.cs

@@ -134,7 +134,8 @@ namespace DCGO.CardEffects.EX3
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX3/Yellow/EX3_028.cs

@@ -88,7 +88,8 @@ namespace DCGO.CardEffects.EX3
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX3/Yellow/EX3_030.cs

@@ -89,7 +89,8 @@ namespace DCGO.CardEffects.EX3
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX3/Yellow/EX3_031.cs

@@ -89,7 +89,8 @@ namespace DCGO.CardEffects.EX3
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX4/Black/EX4_038.cs

@@ -96,7 +96,8 @@ namespace DCGO.CardEffects.EX4
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckTop,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX4/Black/EX4_039.cs

@@ -96,7 +96,8 @@ namespace DCGO.CardEffects.EX4
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckTop,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX4/Blue/EX4_016.cs

@@ -93,7 +93,8 @@ namespace DCGO.CardEffects.EX4
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.Trash,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX4/Green/EX4_032.cs

@@ -87,7 +87,8 @@ namespace DCGO.CardEffects.EX4
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX4/Green/EX4_034.cs

@@ -87,7 +87,8 @@ namespace DCGO.CardEffects.EX4
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 2 - 1
Assets/Scripts/CardEffect/EX4/Purple/EX4_053.cs

@@ -97,7 +97,8 @@ namespace DCGO.CardEffects.EX4
                             selectCardCoroutine: null),
                         },
                         remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                        activateClass: activateClass
+                        activateClass: activateClass,
+                        mutualConditions: true
                     ));
                 }
             }

+ 3 - 3
Assets/Scripts/CardEffect/EX8/Black/EX8_070.cs

@@ -2,8 +2,8 @@ using System.Collections;
 using System.Collections.Generic;
 using System;
 using System.Linq;
-using System.Diagnostics;
 
+// Zofr Kabus
 namespace DCGO.CardEffects.EX8
 {
     public class EX8_070 : CEntity_Effect
@@ -51,7 +51,7 @@ namespace DCGO.CardEffects.EX8
 
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.SelectTrashDigivolutionCards(
                         permanentCondition: DigimonWithProperSource,
-                        cardCondition: HasProperTrait,
+                        cardCondition: null,
                         maxCount: 1,
                         canNoTrash: true,
                         isFromOnly1Permanent: true,
@@ -222,4 +222,4 @@ namespace DCGO.CardEffects.EX8
             return cardEffects;
         }
     }
-}
+}

+ 2 - 1
Assets/Scripts/CardEffect/ST10/Purple/ST10_12.cs

@@ -155,7 +155,8 @@ public class ST10_12 : CEntity_Effect
                                     selectCardCoroutine: null),
                             },
                             remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                            activateClass: activateClass
+                            activateClass: activateClass,
+                            mutualConditions: true
                             ));
                     }
                 }

+ 2 - 1
Assets/Scripts/CardEffect/ST10/Yellow/ST10_04.cs

@@ -88,7 +88,8 @@ public class ST10_04 : CEntity_Effect
                             selectCardCoroutine: null),
                     },
                     remainingCardsPlace: RemainingCardsPlace.DeckBottom,
-                    activateClass: activateClass
+                    activateClass: activateClass,
+                    mutualConditions: true
                 ));
             }
         }

+ 7 - 0
Assets/Scripts/Script/CEntity_EffectController.cs

@@ -273,6 +273,13 @@ public class CEntity_EffectController : MonoBehaviour
         UseEffectsThisTurn.Add(cardEffect);
     }
     #endregion
+
+    #region Remove a use of the effect this turn
+    public void RemoveUseEffectThisTurn(ICardEffect cardEffect)
+    {
+        UseEffectsThisTurn.Remove(cardEffect);
+    }
+    #endregion
 }
 
 public class EmptyEffectClass : CEntity_Effect

+ 7 - 7
Assets/Scripts/Script/CardEffectCommons/KeyWordEffects/Alliance.cs

@@ -38,13 +38,13 @@ public partial class CardEffectCommons
     #endregion
 
     #region Effect process of [Alliance]
-    public static IEnumerator AllianceProcess(Hashtable hashtable, ICardEffect activateClass, CardSource card)
+    public static IEnumerator AllianceProcess(Hashtable hashtable, ICardEffect activateClass, Permanent targetPermanent, CardSource card)
     {
         bool CanSelectPermanentCondition(Permanent permanent)
         {
             if (IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card))
             {
-                if (permanent != card.PermanentOfThisCard())
+                if (permanent != targetPermanent)
                 {
                     if (CanActivateSuspendCostEffect(permanent.TopCard))
                     {
@@ -106,18 +106,18 @@ public partial class CardEffectCommons
                             {
                                 if (tapPermanent.IsSuspended)
                                 {
-                                    if (IsExistOnBattleArea(card))
+                                    if (IsPermanentExistsOnOwnerBattleAreaDigimon(targetPermanent, card))
                                     {
                                         int plusDP = tapPermanent.DP;
 
                                         yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonDP(
-                                            targetPermanent: card.PermanentOfThisCard(),
+                                            targetPermanent: targetPermanent,
                                             changeValue: plusDP,
                                             effectDuration: EffectDuration.UntilEndAttack,
                                             activateClass: activateClass));
 
                                         yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonSAttack(
-                                            targetPermanent: card.PermanentOfThisCard(),
+                                            targetPermanent: targetPermanent,
                                             changeValue: 1,
                                             effectDuration: EffectDuration.UntilEndAttack,
                                             activateClass: activateClass));
@@ -205,9 +205,9 @@ public partial class CardEffectCommons
             return true;
         }
 
-        AllianceClass alliance = CardEffectFactory.AllianceStaticEffect(permanentCondition: PermanentCondition, isInheritedEffect: false, card: card, condition: CanUseCondition);
+        ICardEffect alliance = CardEffectFactory.AllianceStaticEffect(permanentCondition: PermanentCondition, isInheritedEffect: false, card: card, condition: CanUseCondition);
 
-        AddEffectToPlayer(effectDuration: effectDuration, card: card, cardEffect: alliance, timing: EffectTiming.None);
+        AddEffectToPlayer(effectDuration: effectDuration, card: card, cardEffect: alliance, timing: EffectTiming.OnAllyAttack);
 
         foreach (Permanent permanent in GManager.instance.turnStateMachine.gameContext.PermanentsForTurnPlayer)
         {

+ 28 - 7
Assets/Scripts/Script/CardEffectCommons/RevealLibrary.cs

@@ -187,7 +187,8 @@ public partial class CardEffectCommons
         bool canEndNotMax = false,
         bool isSendAllCardsToSamePlace = false,
         bool isOpponentDeck = false,
-        Func<List<CardSource>, IEnumerator> revealedCardsCoroutine = null)
+        Func<List<CardSource>, IEnumerator> revealedCardsCoroutine = null,
+        bool mutualConditions = false)
     {
         if (revealCount <= 0) yield break;
         if (activateClass == null) yield break;
@@ -220,7 +221,8 @@ public partial class CardEffectCommons
             activateClass: activateClass,
             isSendAllCardsToSamePlace: isSendAllCardsToSamePlace,
             isOpponentDeck: isOpponentDeck,
-            revealedCardsCoroutine: revealedCardsCoroutine
+            revealedCardsCoroutine: revealedCardsCoroutine,
+            mutualConditions: mutualConditions
         ));
     }
 
@@ -232,7 +234,8 @@ public partial class CardEffectCommons
         bool canNoAction = false,
         bool isSendAllCardsToSamePlace = false,
         bool isOpponentDeck = false,
-        Func<List<CardSource>, IEnumerator> revealedCardsCoroutine = null)
+        Func<List<CardSource>, IEnumerator> revealedCardsCoroutine = null,
+        bool mutualConditions = false)
     {
         if (revealCount <= 0) yield break;
         if (activateClass == null) yield break;
@@ -253,10 +256,12 @@ public partial class CardEffectCommons
 
         List<CardSource> remainingCards = revealedCards.Clone();
 
+        List<CardSource> chosenCards = new List<CardSource>();
+
         bool doAction = true;
 
-        // バーニングスタークラッシャー(BT10-096)
-        // ブレイジング・メモリーブースト
+        // �スo�ス[�スj�ス�ス�スO�スX�ス^�ス[�スN�ス�ス�スb�スV�ス�ス�ス[(BT10-096)
+        // �スu�ス�ス�スC�スW�ス�ス�スO�スE�ス�ス�ス�ス�ス�ス�ス[�スu�ス[�スX�スg
         if (selectCardConditions.Length >= 2)
         {
             if (canNoAction)
@@ -282,17 +287,32 @@ public partial class CardEffectCommons
         {
             SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
 
+            bool firstSelection = true;
+
             foreach(SelectCardConditionClass selectCondition in selectCardConditions)
             {
                 int maxCount = Math.Min(selectCondition.MaxCount, revealedCards.Count(selectCondition.CanTargetCondition));
 
                 if (maxCount >= 1)
                 {
+                    bool canNoSelect = selectCondition.CanNoSelect;
+                    if (firstSelection)
+                    {
+                        firstSelection = false;
+                    }
+                    else if (mutualConditions //If both conditions are chosen at once (per card game rules)
+                          && chosenCards.Count == 1 //And first condition lets you select 1
+                          && selectCondition.CanTargetCondition(chosenCards[0]) //If that one also fulfills the second condition
+                          && !revealedCards.Any(selectCardConditions[0].CanTargetCondition)) //And was the only card that could fulfill the first condition
+                    {
+                        canNoSelect = true; // Can no select on the basis of choosing it as the second condition, leaving no valid targets for the first
+                    }
+
                     selectCardEffect.SetUp(
                         canTargetCondition: selectCondition.CanTargetCondition,
                         canTargetCondition_ByPreSelecetedList: selectCondition.CanTargetCondition_ByPreSelecetedList,
                         canEndSelectCondition: selectCondition.CanEndSelectCondition,
-                        canNoSelect: () => selectCondition.CanNoSelect,
+                        canNoSelect: () => canNoSelect,
                         selectCardCoroutine: selectCondition.SelectCardCoroutine,
                         afterSelectCardCoroutine: AfterSelectCardCoroutine,
                         message: selectCondition.Message,
@@ -313,6 +333,7 @@ public partial class CardEffectCommons
                 {
                     foreach (CardSource cardSource in cardSources)
                     {
+                        chosenCards.Add(cardSource);
                         revealedCards.Remove(cardSource);
                     }
 
@@ -743,7 +764,7 @@ public class RevealLibraryClass
             yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().ShowCardEffect(RevealedCards, "Revealed Cards", true, true));
         }
 
-        #region ログ追加
+        #region �ス�ス�スO�スヌ会ソス
         if (RevealedCards.Count >= 1)
         {
             string log = "";

+ 30 - 0
Assets/Scripts/Script/CardEffectFactory.cs

@@ -1432,4 +1432,34 @@ public partial class CardEffectFactory
     }
 
     #endregion
+
+    #region At end of turn lose 3 memory
+    public static ActivateClass EoTLose3Memory(CardSource card)
+    {
+        ActivateClass activateClass1 = new ActivateClass();
+        activateClass1.SetUpICardEffect("Memory -3", CanUseCondition1, card);
+        activateClass1.SetUpActivateClass(CanActivateCondition1, ActivateCoroutine1, -1, false, EffectDiscription1());
+        return activateClass1;
+
+        string EffectDiscription1()
+        {
+            return "Lose 3 memory.";
+        }
+
+        bool CanUseCondition1(Hashtable hashtable)
+        {
+            return true;
+        }
+
+        bool CanActivateCondition1(Hashtable hashtable)
+        {
+            return true;
+        }
+
+        IEnumerator ActivateCoroutine1(Hashtable _hashtable1)
+        {
+            yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(-3, activateClass1));
+        }
+    }
+    #endregion
 }

+ 33 - 22
Assets/Scripts/Script/CardEffectFactory/KeyWordEffects/Alliance.cs

@@ -71,37 +71,26 @@ public partial class CardEffectFactory
 
         IEnumerator ActivateCoroutine(Hashtable _hashtable)
         {
-            return CardEffectCommons.AllianceProcess(_hashtable, activateClass, card);
+            return CardEffectCommons.AllianceProcess(_hashtable, activateClass, targetPermanent, card);
         }
 
         return activateClass;
     }
     #endregion
 
-    #region Static effect of [Alliance]
-    public static AllianceClass AllianceStaticEffect(Func<Permanent, bool> permanentCondition, bool isInheritedEffect, CardSource card, Func<bool> condition)
+    #region Static effect of [Alliance] to all PermanentCondition Digimon
+    public static ActivateClass AllianceStaticEffect(Func<Permanent, bool> permanentCondition, bool isInheritedEffect, CardSource card, Func<bool> condition)
     {
-        string effectName = "Alliance";
-
-        AllianceClass allianceClass = new AllianceClass();
-        allianceClass.SetUpICardEffect(effectName, CanUseCondition, card);
-        allianceClass.SetUpAllianceClass(PermanentCondition: PermanentCondition);
-
-        if (isInheritedEffect)
-        {
-            allianceClass.SetIsInheritedEffect(true);
-        }
+        ActivateClass activateClass = new ActivateClass();
+        activateClass.SetUpICardEffect("Alliance", CanUseCondition, card);
+        activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, DataBase.AllianceEffectDiscription());
+        activateClass.SetIsInheritedEffect(isInheritedEffect);
 
         bool CanUseCondition(Hashtable hashtable)
         {
-            return condition == null || condition();
-        }
-
-        bool PermanentCondition(Permanent permanent)
-        {
-            if (CardEffectCommons.IsPermanentExistsOnBattleArea(permanent))
+            if (CardEffectCommons.CanTriggerOnPermanentAttack(hashtable, permanentCondition))
             {
-                if (permanentCondition == null || permanentCondition(permanent))
+                if (condition == null || condition())
                 {
                     return true;
                 }
@@ -110,7 +99,29 @@ public partial class CardEffectFactory
             return false;
         }
 
-        return allianceClass;
+        bool CanActivateCondition(Hashtable hashtable)
+        {
+            Permanent attackingPermanent = CardEffectCommons.GetAttackerFromHashtable(hashtable);
+
+            bool CanSelectPermanentCondition(Permanent permanent)
+            {
+                return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card)
+                    && permanent != attackingPermanent
+                    && CardEffectCommons.CanActivateSuspendCostEffect(permanent.TopCard);
+            }
+
+            return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(attackingPermanent, card)
+                && CardEffectCommons.HasMatchConditionOwnersPermanent(card, CanSelectPermanentCondition)
+                && (condition == null || condition());
+        }
+
+        IEnumerator ActivateCoroutine(Hashtable hashtable)
+        {
+            Permanent attackingPermanent = CardEffectCommons.GetAttackerFromHashtable(hashtable);
+            return CardEffectCommons.AllianceProcess(hashtable, activateClass, attackingPermanent, card);
+        }
+
+        return activateClass;
     }
     #endregion
-}
+}

+ 0 - 7
Assets/Scripts/Script/CardEffectInterfaces.cs

@@ -51,13 +51,6 @@ public interface IRebootEffect
 }
 #endregion
 
-#region "Target permanent gains Alliance" effect
-public interface IAllianceEffect
-{
-    bool HasAlliance(Permanent permanent);
-}
-#endregion
-
 #region "Target permanent gains Scapegoat" effect
 public interface IScapegoatEffect
 {

+ 1 - 4
Assets/Scripts/Script/CardEffects/AddSkillClass.cs

@@ -19,10 +19,7 @@ public class AddSkillClass : ICardEffect, IAddSkillEffect
             getCardEffect = _getEffects(card, getCardEffect, timing);
         }
 
-        foreach (ICardEffect effect in getCardEffect)
-        {
-            effect.SetEffectSourceCard(card);
-        }
+        SetEffectSourceCard(card);
 
         return getCardEffect;
     }

+ 0 - 35
Assets/Scripts/Script/CardEffects/AllianceClass.cs

@@ -1,35 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using System.Linq;
-using Photon;
-using System;
-
-public class AllianceClass : ICardEffect, IAllianceEffect
-{
-    public void SetUpAllianceClass(Func<Permanent, bool> PermanentCondition)
-    {
-        this.PermanentCondition = PermanentCondition;
-    }
-
-    Func<Permanent, bool> PermanentCondition { get; set; }
-
-    public bool HasAlliance(Permanent permanent)
-    {
-        if (PermanentCondition != null)
-        {
-            if (permanent != null)
-            {
-                if (permanent.TopCard != null)
-                {
-                    if (PermanentCondition(permanent))
-                    {
-                        return true;
-                    }
-                }
-            }
-        }
-
-        return false;
-    }
-}

+ 0 - 11
Assets/Scripts/Script/CardEffects/AllianceClass.cs.meta

@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 12be472d7187a674daa43b4847d6b0c2
-MonoImporter:
-  externalObjects: {}
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 7 - 1
Assets/Scripts/Script/ICardEffect.cs

@@ -1088,7 +1088,6 @@ public static class ActivateICardEffectExtensionClass
             ((ICardEffect)activateICardEffect).SetOnProcessCallbuck(null);
 
             //Handling Effect
-            ((ICardEffect)activateICardEffect).EffectSourceCard.cEntity_EffectController.RegisterUseEfffectThisTurn(((ICardEffect)activateICardEffect));
             yield return ContinuousController.instance.StartCoroutine(activateICardEffect.Activate(hash));
         }
     }
@@ -1206,6 +1205,13 @@ public static class ActivateICardEffectExtensionClass
 
     #endregion
 
+    #region remove a usage of an X Per Turn
+    public static void RemoveUse(this ActivateICardEffect activateICardEffect)
+    {
+        ((ICardEffect)activateICardEffect).EffectSourceCard.cEntity_EffectController.RemoveUseEffectThisTurn((ICardEffect)activateICardEffect);
+    }
+    #endregion
+
     #region Effect → Processing
 
     public static IEnumerator Activate_Effect_Execute(this ActivateICardEffect activateICardEffect, Hashtable hash, UnityAction<ICardEffect> useEffectCallback)

+ 4 - 5
Assets/Scripts/Script/MultipleSkills.cs

@@ -270,7 +270,7 @@ public class MultipleSkills : MonoBehaviourPunCallbacks
                     {
                         if (player.isYou)
                         {
-                            int skillIndex = 0;
+                            int skillIndex = -1;
 
                             if (!ContinuousController.instance.autoEffectOrder)
                             {
@@ -286,7 +286,7 @@ public class MultipleSkills : MonoBehaviourPunCallbacks
                                 _CanEndSelectCondition: null,
                                 _MaxCount: 1,
                                 _CanEndNotMax: false,
-                                _CanNoSelect: () => skillInfos_active.All(skillInfo => skillInfo.CardEffect.IsOptional),
+                                _CanNoSelect: () => skillInfos_active.All(skillInfo => skillInfo.CardEffect.IsOptionalCondition(skillInfo.Hashtable)),
                                 CanLookReverseCard: true,
                                 skillInfos: skillInfos_active,
                                 root: SelectCardEffect.Root.None));
@@ -297,11 +297,10 @@ public class MultipleSkills : MonoBehaviourPunCallbacks
                                 }
                                 else
                                 {
-                                    foreach(SkillInfo skillInfo in skillInfos_active)
+                                    foreach (FieldPermanentCard fieldPermanentCard in player.FieldPermanentObjects)
                                     {
-                                        StackedSkillInfos.Remove(skillInfo);
+                                        fieldPermanentCard.OffPermanentIndexText();
                                     }
-                                    continue;
                                 }
                             }
 

+ 13 - 18
Assets/Scripts/Script/Permanent.cs

@@ -2885,6 +2885,10 @@ public class Permanent
     {
         get
         {
+            Hashtable hashtable = new Hashtable(){
+                {"AttackingPermanent", this}
+            };
+            
             foreach (Player player in GManager.instance.turnStateMachine.gameContext.Players_ForTurnPlayer)
             {
                 foreach (Permanent permanent in player.GetFieldPermanents())
@@ -2892,14 +2896,11 @@ public class Permanent
                     #region Permanent Effects
                     foreach (ICardEffect cardEffect in permanent.EffectList(EffectTiming.OnAllyAttack))
                     {
-                        if (cardEffect is IAllianceEffect)
+                        if (cardEffect.EffectName == "Alliance")
                         {
-                            if (cardEffect.CanTrigger(null))
+                            if (cardEffect.CanTrigger(hashtable))
                             {
-                                if (((IAllianceEffect)cardEffect).HasAlliance(this))
-                                {
-                                    return true;
-                                }
+                                return true;
                             }
                         }
                     }
@@ -2914,14 +2915,11 @@ public class Permanent
 
                     foreach (ICardEffect cardEffect in source.EffectList(EffectTiming.OnAllyAttack))
                     {
-                        if (cardEffect is IAllianceEffect)
+                        if (cardEffect.EffectName == "Alliance")
                         {
-                            if (cardEffect.CanTrigger(null))
+                            if (cardEffect.CanTrigger(hashtable))
                             {
-                                if (((IAllianceEffect)cardEffect).HasAlliance(this))
-                                {
-                                    return true;
-                                }
+                                return true;
                             }
                         }
                     }
@@ -2931,14 +2929,11 @@ public class Permanent
                 #region Player Effects
                 foreach (ICardEffect cardEffect in player.EffectList(EffectTiming.OnAllyAttack))
                 {
-                    if (cardEffect is IAllianceEffect)
+                    if (cardEffect.EffectName == "Alliance")
                     {
-                        if (cardEffect.CanTrigger(null))
+                        if (cardEffect.CanTrigger(hashtable))
                         {
-                            if (((IAllianceEffect)cardEffect).HasAlliance(this))
-                            {
-                                return true;
-                            }
+                            return true;
                         }
                     }
                 }

+ 1 - 1
Assets/Scripts/Script/PermanentEffectFactory.cs

@@ -97,4 +97,4 @@ public partial class PermanentEffectFactory
         }
     }
     #endregion
-}
+}

+ 2 - 2
ProjectSettings/ProjectSettings.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:90c9a9851dae21bd75acad53899bc68188413b2a6dd8db2f05cba4bb61220692
-size 20480
+oid sha256:d552b809829af9a0f15d41f60facddb38bdb6e416384285697ee6dfe8d52dea5
+size 20479