浏览代码

Merge branch 'BT21' into EX9

Lewisaaronwelch 1 年之前
父节点
当前提交
e3ee8a81a1
共有 100 个文件被更改,包括 1607 次插入495 次删除
  1. 1 2
      Assets/AddOn/GlitchFx-master/GlitchFx.unitypackage.meta
  2. 0 0
      Assets/CardBaseEntity/BT10/Black/Tamer/BT10_092_P2.asset
  3. 0 0
      Assets/CardBaseEntity/BT10/Black/Tamer/BT10_092_P2.asset.meta
  4. 2 2
      Assets/CardBaseEntity/BT21/Black/Digimon/BT21_053.asset
  5. 2 2
      Assets/CardBaseEntity/BT21/Black/Digimon/BT21_054.asset
  6. 2 2
      Assets/CardBaseEntity/BT21/Black/Digimon/BT21_055.asset
  7. 2 2
      Assets/CardBaseEntity/BT21/Black/Digimon/BT21_059.asset
  8. 2 2
      Assets/CardBaseEntity/BT21/Blue/Digimon/BT21_038.asset
  9. 2 2
      Assets/CardBaseEntity/BT21/Green/Digimon/BT21_047.asset
  10. 2 2
      Assets/CardBaseEntity/BT21/Purple/Digimon/BT21_067.asset
  11. 2 2
      Assets/CardBaseEntity/BT21/Purple/Digimon/BT21_070.asset
  12. 2 2
      Assets/CardBaseEntity/BT21/Purple/Digimon/BT21_071.asset
  13. 2 2
      Assets/CardBaseEntity/BT21/Purple/Digimon/BT21_073.asset
  14. 2 2
      Assets/CardBaseEntity/BT21/Purple/Digimon/BT21_074.asset
  15. 2 2
      Assets/CardBaseEntity/BT21/Red/Digimon/BT21_009.asset
  16. 2 2
      Assets/CardBaseEntity/BT21/Red/Digimon/BT21_009_P1.asset
  17. 2 2
      Assets/CardBaseEntity/BT21/Red/Digimon/BT21_015.asset
  18. 2 2
      Assets/CardBaseEntity/BT21/Red/Digimon/BT21_018.asset
  19. 2 2
      Assets/CardBaseEntity/BT21/Red/Digimon/BT21_019.asset
  20. 2 2
      Assets/CardBaseEntity/BT21/Red/Digimon/BT21_023.asset
  21. 2 2
      Assets/CardBaseEntity/BT21/Red/Digimon/BT21_023_P1.asset
  22. 2 2
      Assets/CardBaseEntity/BT21/White/Digimon/BT21_101.asset
  23. 2 2
      Assets/CardBaseEntity/BT21/White/Digimon/BT21_101_P1.asset
  24. 2 2
      Assets/CardBaseEntity/BT21/White/Digimon/BT21_101_P2.asset
  25. 2 2
      Assets/CardBaseEntity/BT21/Yellow/Digimon/BT21_041.asset
  26. 2 2
      Assets/CardBaseEntity/BT21/Yellow/Digimon/BT21_043.asset
  27. 2 2
      Assets/CardBaseEntity/BT21/Yellow/Tamer/BT21_086.asset
  28. 2 2
      Assets/CardBaseEntity/BT21/Yellow/Tamer/BT21_086_P1.asset
  29. 1 1
      Assets/CardBaseEntity/CardEntity_JSONLoader.asset
  30. 2 2
      Assets/CardBaseEntity/EX2/Purple/Digimon/EX2_074.asset
  31. 2 2
      Assets/CardBaseEntity/EX2/Purple/Digimon/EX2_074_P1.asset
  32. 3 0
      Assets/CardBaseEntity/LM/Black/Digimon/LM_043.asset
  33. 3 3
      Assets/CardBaseEntity/LM/Black/Digimon/LM_043.asset.meta
  34. 3 0
      Assets/CardBaseEntity/LM/Blue/Digimon/LM_040.asset
  35. 8 0
      Assets/CardBaseEntity/LM/Blue/Digimon/LM_040.asset.meta
  36. 3 0
      Assets/CardBaseEntity/LM/Blue/Digimon/LM_041.asset
  37. 8 0
      Assets/CardBaseEntity/LM/Blue/Digimon/LM_041.asset.meta
  38. 3 0
      Assets/CardBaseEntity/LM/Green/Digimon/LM_042.asset
  39. 8 0
      Assets/CardBaseEntity/LM/Green/Digimon/LM_042.asset.meta
  40. 3 0
      Assets/CardBaseEntity/LM/Purple/Digimon/LM_044.asset
  41. 8 0
      Assets/CardBaseEntity/LM/Purple/Digimon/LM_044.asset.meta
  42. 3 0
      Assets/CardBaseEntity/LM/Red/Digimon/LM_039.asset
  43. 8 0
      Assets/CardBaseEntity/LM/Red/Digimon/LM_039.asset.meta
  44. 3 0
      Assets/CardBaseEntity/P/Black/Digimon/P_183.asset
  45. 8 0
      Assets/CardBaseEntity/P/Black/Digimon/P_183.asset.meta
  46. 3 0
      Assets/CardBaseEntity/P/Black/Digimon/P_184.asset
  47. 8 0
      Assets/CardBaseEntity/P/Black/Digimon/P_184.asset.meta
  48. 3 0
      Assets/CardBaseEntity/P/Green/Digimon/P_185.asset
  49. 8 0
      Assets/CardBaseEntity/P/Green/Digimon/P_185.asset.meta
  50. 3 0
      Assets/CardBaseEntity/P/Purple/Digimon/P_187.asset
  51. 8 0
      Assets/CardBaseEntity/P/Purple/Digimon/P_187.asset.meta
  52. 3 0
      Assets/CardBaseEntity/P/Red/Digimon/P_182.asset
  53. 8 0
      Assets/CardBaseEntity/P/Red/Digimon/P_182.asset.meta
  54. 3 0
      Assets/CardBaseEntity/P/Red/Digimon/P_186.asset
  55. 8 0
      Assets/CardBaseEntity/P/Red/Digimon/P_186.asset.meta
  56. 2 2
      Assets/CardBaseEntity/ST14/Purple/Digimon/ST14_10.asset
  57. 1 1
      Assets/CardBaseEntity/ST16/Purple/Digimon/ST16_06_P0.asset
  58. 1 1
      Assets/CardEffect/BT15/Yellow/BT15_034.cs
  59. 1 1
      Assets/CardEffect/BT16/Yellow/BT16_093.cs
  60. 1 4
      Assets/CardEffect/BT18/Red/BT18_087.cs
  61. 1 6
      Assets/CardEffect/BT20/Purple/BT20_098.cs
  62. 4 5
      Assets/CardEffect/BT21/Black/BT21_053.cs
  63. 3 3
      Assets/CardEffect/BT21/Black/BT21_054.cs
  64. 109 76
      Assets/CardEffect/BT21/Black/BT21_056.cs
  65. 18 21
      Assets/CardEffect/BT21/Black/BT21_058.cs
  66. 111 7
      Assets/CardEffect/BT21/Black/BT21_059.cs
  67. 8 23
      Assets/CardEffect/BT21/Black/BT21_060.cs
  68. 94 37
      Assets/CardEffect/BT21/Black/BT21_062.cs
  69. 57 42
      Assets/CardEffect/BT21/Black/BT21_098.cs
  70. 1 1
      Assets/CardEffect/BT21/Blue/BT21_038.cs
  71. 1 0
      Assets/CardEffect/BT21/Blue/BT21_039.cs
  72. 7 5
      Assets/CardEffect/BT21/Blue/BT21_094.cs
  73. 1 1
      Assets/CardEffect/BT21/Blue/BT21_095.cs
  74. 3 2
      Assets/CardEffect/BT21/Green/BT21_047.cs
  75. 119 1
      Assets/CardEffect/BT21/Green/BT21_050.cs
  76. 1 1
      Assets/CardEffect/BT21/Green/BT21_051.cs
  77. 0 0
      Assets/CardEffect/BT21/Green/BT21_051.cs.meta
  78. 20 7
      Assets/CardEffect/BT21/Green/BT21_097.cs
  79. 1 1
      Assets/CardEffect/BT21/Purple/BT21_064.cs
  80. 2 2
      Assets/CardEffect/BT21/Purple/BT21_065.cs
  81. 2 2
      Assets/CardEffect/BT21/Purple/BT21_068.cs
  82. 12 0
      Assets/CardEffect/BT21/Purple/BT21_070.cs
  83. 15 3
      Assets/CardEffect/BT21/Purple/BT21_071.cs
  84. 8 1
      Assets/CardEffect/BT21/Purple/BT21_072.cs
  85. 93 47
      Assets/CardEffect/BT21/Purple/BT21_073.cs
  86. 87 104
      Assets/CardEffect/BT21/Purple/BT21_074.cs
  87. 6 6
      Assets/CardEffect/BT21/Purple/BT21_075.cs
  88. 10 4
      Assets/CardEffect/BT21/Purple/BT21_076.cs
  89. 124 4
      Assets/CardEffect/BT21/Purple/BT21_077.cs
  90. 4 2
      Assets/CardEffect/BT21/Purple/BT21_079.cs
  91. 6 10
      Assets/CardEffect/BT21/Purple/BT21_089.cs
  92. 2 2
      Assets/CardEffect/BT21/Purple/BT21_100.cs
  93. 116 0
      Assets/CardEffect/BT21/Red/BT21_001.cs
  94. 11 0
      Assets/CardEffect/BT21/Red/BT21_001.cs.meta
  95. 60 0
      Assets/CardEffect/BT21/Red/BT21_002.cs
  96. 11 0
      Assets/CardEffect/BT21/Red/BT21_002.cs.meta
  97. 111 0
      Assets/CardEffect/BT21/Red/BT21_007.cs
  98. 11 0
      Assets/CardEffect/BT21/Red/BT21_007.cs.meta
  99. 157 0
      Assets/CardEffect/BT21/Red/BT21_008.cs
  100. 11 0
      Assets/CardEffect/BT21/Red/BT21_008.cs.meta

+ 1 - 2
Assets/Editor/Missing AAs/BT10/Black.meta → Assets/AddOn/GlitchFx-master/GlitchFx.unitypackage.meta

@@ -1,6 +1,5 @@
 fileFormatVersion: 2
-guid: 5676a51a1c30e5240aa1be23d2ea445c
-folderAsset: yes
+guid: d80f995af690a474e841364c1e88ee1b
 DefaultImporter:
   externalObjects: {}
   userData: 

+ 0 - 0
Assets/Editor/Missing AAs/BT10/Black/Tamer/BT10_092_P2.asset → Assets/CardBaseEntity/BT10/Black/Tamer/BT10_092_P2.asset


+ 0 - 0
Assets/Editor/Missing AAs/BT10/Black/Tamer/BT10_092_P2.asset.meta → Assets/CardBaseEntity/BT10/Black/Tamer/BT10_092_P2.asset.meta


+ 2 - 2
Assets/CardBaseEntity/BT21/Black/Digimon/BT21_053.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:d028809417e285e897ff6f28e8fcddb4f07e33df64de8c80e53ffce17069af3c
-size 1387
+oid sha256:ea078e5aa425ef5e44d45ab65bfa129aecff76721c41f250ef8a81533a0460e1
+size 1362

+ 2 - 2
Assets/CardBaseEntity/BT21/Black/Digimon/BT21_054.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:f7859cfbb0f86df34b659878997ae2d5fdecfce7010384286d7646c89a8de96d
-size 1516
+oid sha256:df79cbc880e76811ceb415beb05c58acbf73d422e0b31c8e5b6f7864e910c192
+size 1491

+ 2 - 2
Assets/CardBaseEntity/BT21/Black/Digimon/BT21_055.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:0d12063ec0d9cbd7fbf7d828921ec85ae654b8465c5dc5029169a7e070aec70e
-size 1386
+oid sha256:2f0cac4a1c33280e3a4485a0c5b2c6fc58cc6db6d204702e9b7c656200b019d6
+size 1417

+ 2 - 2
Assets/CardBaseEntity/BT21/Black/Digimon/BT21_059.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:55a7ebf3ea0c3a21f86a49c2d8ca116376bfe9b2b838b7e8c2dbf67972b8fb3b
-size 1440
+oid sha256:d4b205f5bbac8eabe05e6b22fddaa1a92f58da538b662043c6692bc4a9b38c2a
+size 1415

+ 2 - 2
Assets/CardBaseEntity/BT21/Blue/Digimon/BT21_038.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:055cf70e2edfba03806f9f00a02abb20c27d5f3d393a523f22654984486e5213
-size 1322
+oid sha256:ed928072cb978422193136fb5e4726366224472dfc87f89143e3a20738ea68c3
+size 1308

+ 2 - 2
Assets/CardBaseEntity/BT21/Green/Digimon/BT21_047.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:de575be02d0bbc8f655c19f33ddaa081878d6d9b0379c6f94a4a9b597fc5353b
-size 1426
+oid sha256:e6c49d9c1b20c97f780e7832dc5db4b93560ae8969d59b3c4d3de18ad593509f
+size 1401

+ 2 - 2
Assets/CardBaseEntity/BT21/Purple/Digimon/BT21_067.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:faadcfd2ef56b8b05c45a3ef73abaa96cae3abeaa1f068193ae03f78e648c575
-size 1490
+oid sha256:21287a115b52e710cfa1ed0957a1a75d0c76638b60097b9b6d6808da266d79ed
+size 1476

+ 2 - 2
Assets/CardBaseEntity/BT21/Purple/Digimon/BT21_070.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:68a2e1c852fe2946019e7b04b9cc017906db6b87c99c882ae5a70c2319e39c77
-size 1462
+oid sha256:78697f8918c449f0d533475d003e90a28ef534ecde2af2b881ee220f396e31a5
+size 1437

+ 2 - 2
Assets/CardBaseEntity/BT21/Purple/Digimon/BT21_071.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:bde56b2e3b9ab024923fb411d0042dbeee8a50c6221b1900e763b18d4452b4da
-size 1477
+oid sha256:58cefc2d5900306445698a7d43b92c8d72554bfbec323dda50fa427136d6f13e
+size 1452

+ 2 - 2
Assets/CardBaseEntity/BT21/Purple/Digimon/BT21_073.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:1d8e5f857f9d642b3bcea5b2353158207be20d0a9121176c393adf1c2ab67594
-size 1795
+oid sha256:3b4764bd4838f2bd1629b60a7272f5879d9300a7a1fc7e7dbe67e4efb1da9652
+size 1770

+ 2 - 2
Assets/CardBaseEntity/BT21/Purple/Digimon/BT21_074.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:165b5224ef08eb80a14cffcb956744b600dac17c0219b6602543391f7a92908c
-size 1882
+oid sha256:e37528b654c7d4ccb84efb4a08588e486bb2893604d79e766b1ed05c6d32f79e
+size 1857

+ 2 - 2
Assets/CardBaseEntity/BT21/Red/Digimon/BT21_009.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:7d4c82098a230aadeb138b20340159fc17ddd99c58b4eb647f7a82de05e11e6f
-size 1409
+oid sha256:d1f08473b87974470baa91a8548c5b5e2ad3ad4c78afa9c545b8524ac52fec29
+size 1384

+ 2 - 2
Assets/CardBaseEntity/BT21/Red/Digimon/BT21_009_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:4042095c69283681712e74d2b9a2b40e0c49dda620ef5d9377b028a4c9dba394
-size 1415
+oid sha256:0c751cb02c67e733be147ceb3a853e71ad1744fb4a3188ad584bce53c0a60161
+size 1390

+ 2 - 2
Assets/CardBaseEntity/BT21/Red/Digimon/BT21_015.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:0ac57514208c27f5aa061fe1fb694f46cb1113d088138a2118340c36ae29d1b4
-size 1330
+oid sha256:bec90ee29b47a69d0dbc8a0d6a05e5eeb9c8527161f2dc31eeef397843c8a3ef
+size 1316

+ 2 - 2
Assets/CardBaseEntity/BT21/Red/Digimon/BT21_018.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:89a7e1747fa9015ad25d4a195e50983d72ef73a111e6e214319d268ee690dab5
-size 1453
+oid sha256:5d8e65a800a312a98d4b57bec68c9e95ad7dffc39c5a2818122a3a85f5f51d98
+size 1428

+ 2 - 2
Assets/CardBaseEntity/BT21/Red/Digimon/BT21_019.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:3873955464151000612deca6cede594503f7524891b6d795a8bfa786777bf870
-size 1322
+oid sha256:465df3f12d42d562c53f86ea81800edb8d34e08eb8e5759b582db3e9ac80a31a
+size 1308

+ 2 - 2
Assets/CardBaseEntity/BT21/Red/Digimon/BT21_023.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:2943f7b74874fc187e703aea4726104ba9911b7145e7746810bb33e73fea9a77
-size 1726
+oid sha256:86caafb23ecc5b8be192758e933f6308f89dcd584ac999804c8f322571d5566f
+size 1701

+ 2 - 2
Assets/CardBaseEntity/BT21/Red/Digimon/BT21_023_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:ffc5a429fc12a187f45f9a5cef709bf9c5bc54ed23fe193c7784d3edb3840c02
-size 1732
+oid sha256:cc222c5257d51780365eedbe5edb0428bbb192a33f6ae86a71cd99e09860b031
+size 1707

+ 2 - 2
Assets/CardBaseEntity/BT21/White/Digimon/BT21_101.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:b10da82baa2125b41d4b27ea43179a178eb777a99147580329a0216302f547eb
-size 1565
+oid sha256:0d7a6fdbdce77fb21733cb6c299d5aa53c684712877bd43f2502f8eba4e4d9fd
+size 1540

+ 2 - 2
Assets/CardBaseEntity/BT21/White/Digimon/BT21_101_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:b2e521baa3ee8d1beb5a219ba2bc4ae2f501a1ee8427490983f58b8e9089a459
-size 1571
+oid sha256:fd7238216e0cb6aa16e65fbf13131008d26fa56ed04c3a64e5fa27830defbb9a
+size 1546

+ 2 - 2
Assets/CardBaseEntity/BT21/White/Digimon/BT21_101_P2.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:a3bbcd28c5297081d4f10ea40312b1eec268415cf0fb75107e9d56488cb5c0c8
-size 1571
+oid sha256:67b3e9d843c2dd66926033f49c56c046df223fc26293648a83e89f1eadad06bb
+size 1546

+ 2 - 2
Assets/CardBaseEntity/BT21/Yellow/Digimon/BT21_041.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:18fe203674888f981eb831b6af25dffdba7879b5829528ed064093e0e2eb1d0d
-size 1357
+oid sha256:d539aead9f64b63326e6f5c4eb6e4bed9f481d75bf77dde7327f52548812fcab
+size 1332

+ 2 - 2
Assets/CardBaseEntity/BT21/Yellow/Digimon/BT21_043.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:eb0c325f1299280411836a8781606bb072f0d1a5bb7970dbe51d57f903b14bf3
-size 1428
+oid sha256:f05ec39e254622b44e33c906192c19cf0cf36b7f675e113e3f2a2f4713e90ec0
+size 1403

+ 2 - 2
Assets/CardBaseEntity/BT21/Yellow/Tamer/BT21_086.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:57052404d4cd1206549bcebb56cf28f82ca21029d71e55551e697a96ebdce852
-size 1443
+oid sha256:c1579fc914d9c4eab037ff854287952e5e14c14e0825f924cf18c7d0b81a8211
+size 1429

+ 2 - 2
Assets/CardBaseEntity/BT21/Yellow/Tamer/BT21_086_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:972552ab2f307a0104ebec164f64416ba35da2111c0006457097e909f6b32102
-size 1449
+oid sha256:8034bbcbb591bddfe43952d35a9747f35f0f000a7c60a778883928e43e2464e3
+size 1435

+ 1 - 1
Assets/CardBaseEntity/CardEntity_JSONLoader.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:5ab7d7561a78a623f0561e670b62cf69c366d2d86240ffd7a291b2f5b3102238
+oid sha256:4060db4e879354973f9f8610c2554a83035ce05c041fcb511e611bbbc91875a0
 size 477

+ 2 - 2
Assets/CardBaseEntity/EX2/Purple/Digimon/EX2_074.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:e50904842b804ce0c6a80a3aa8737629569ba159571185b7f4a6a29372974aba
-size 2372
+oid sha256:b7e20a8d1131e0c373538da8e4e94e21e8704138cc74232d5fe1b1dafdcfb550
+size 2377

+ 2 - 2
Assets/CardBaseEntity/EX2/Purple/Digimon/EX2_074_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:2981eb833cc4cfb8e659d90343d0d2de5856ada93aa374d36f20ce4b4aadbb38
-size 2378
+oid sha256:e2759f8f7484c31889bde8adb0b8a662bd80648960f39e75c93e96d0ad1d96d2
+size 2383

+ 3 - 0
Assets/CardBaseEntity/LM/Black/Digimon/LM_043.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:60d7e0b69f83172a7330a42aa5ff870c6a31c503bdfd263f016b5a8f272f39f3
+size 1475

+ 3 - 3
Assets/Editor/Missing AAs/BT10/Black/Tamer.meta → Assets/CardBaseEntity/LM/Black/Digimon/LM_043.asset.meta

@@ -1,8 +1,8 @@
 fileFormatVersion: 2
-guid: 5e08a7dd386751645a21ac2b90959f6d
-folderAsset: yes
-DefaultImporter:
+guid: 1282380ee5dc8814897d57bea9c4ca1f
+NativeFormatImporter:
   externalObjects: {}
+  mainObjectFileID: 11400000
   userData: 
   assetBundleName: 
   assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/LM/Blue/Digimon/LM_040.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e42e20db30199f0e3897571333d019bce84447d906ea9e4e1063d845c065e9b
+size 1531

+ 8 - 0
Assets/CardBaseEntity/LM/Blue/Digimon/LM_040.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 76371d0c2b9963845b1b48fa7045d8a3
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/LM/Blue/Digimon/LM_041.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bcb3cea710a3ae4fb70ac1bd7162cd37e2d7e0084e73dd2977b670eddf914e96
+size 1542

+ 8 - 0
Assets/CardBaseEntity/LM/Blue/Digimon/LM_041.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ad272e8d0eb256546937af2153fc2b2a
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/LM/Green/Digimon/LM_042.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:50b7ed837359bb849559d1301d3fa00e4fceac4ddfc46eec85b8882a009419ac
+size 1521

+ 8 - 0
Assets/CardBaseEntity/LM/Green/Digimon/LM_042.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c3228d9409848f5459cf19f536465f82
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/LM/Purple/Digimon/LM_044.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:601246c7ccfae5c2bcd093e6ffc9a7ba0a0713ddfd5ad8859fa4dd1fd373ba58
+size 1405

+ 8 - 0
Assets/CardBaseEntity/LM/Purple/Digimon/LM_044.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a7f1acb016daaa64eae65f96ebd6a278
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/LM/Red/Digimon/LM_039.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d5ad0be9d254eda530d6bd39bde14eb6445ca770081f490cb34699f1eaf61e3
+size 1516

+ 8 - 0
Assets/CardBaseEntity/LM/Red/Digimon/LM_039.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 85f03e27a1947f549be3b2f283debde2
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/P/Black/Digimon/P_183.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b25ceed35838a9b80b930d86b4e13455c3e7ad3a3d119c2407fa8a2dbb231eca
+size 1482

+ 8 - 0
Assets/CardBaseEntity/P/Black/Digimon/P_183.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: da685e438f1d3d34db5b701873ab6d6c
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/P/Black/Digimon/P_184.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:584b432c4d8484352cd704eda0d294af07959114cf9a4e304f5ad48c64a9a262
+size 1509

+ 8 - 0
Assets/CardBaseEntity/P/Black/Digimon/P_184.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 20599dc7920db664bbff823e103d0c16
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/P/Green/Digimon/P_185.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7862d947d5019c3033efecf4d6d1670a83889c8cddf1327cbd48ea0635771f15
+size 1560

+ 8 - 0
Assets/CardBaseEntity/P/Green/Digimon/P_185.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f3f3ccbba803a0e468adf5485f082186
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/P/Purple/Digimon/P_187.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:699c246633f11d995dedf4f9f57e7526a1f380868ee64bf45bf7c2275bda2461
+size 1552

+ 8 - 0
Assets/CardBaseEntity/P/Purple/Digimon/P_187.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c3f9c42c9734c934b80c4e1e304c7c37
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/P/Red/Digimon/P_182.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e952e8a566d6ce8981946315f504eda6c0135ab3230cc449c699d45872a3bb35
+size 1420

+ 8 - 0
Assets/CardBaseEntity/P/Red/Digimon/P_182.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: aa682946b51acef4086f9bf2355a8c2c
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/P/Red/Digimon/P_186.asset

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f8cc492ff7086d1a5a7cf4ab85c23d87802952dae439d7df12521801c5475ef8
+size 1558

+ 8 - 0
Assets/CardBaseEntity/P/Red/Digimon/P_186.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 35b9d2e07408f234181dee64bf137f99
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 2 - 2
Assets/CardBaseEntity/ST14/Purple/Digimon/ST14_10.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:ba4644d4e271570d3f76ee3e2f5615abf2dbad9d1b420a894fcd0b4776c720be
-size 2144
+oid sha256:6f8fe62fc410a4ebd79b7bcc68d7cbd797e62abd4871b89b569bec694778646b
+size 2149

+ 1 - 1
Assets/CardBaseEntity/ST16/Purple/Digimon/ST16_06_P0.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:8f986609bcf7183bf9e29156ab33a805bbd5093bd6f695a793f898a8e77579f8
+oid sha256:8ce5f2aec867338a32bd043076179f79f70d17903a5819e70aa7b42d2f3bd63c
 size 1063

+ 1 - 1
Assets/CardEffect/BT15/Yellow/BT15_034.cs

@@ -189,7 +189,7 @@ namespace DCGO.CardEffects.BT15
 
                             selectHandEffect.SetUpCustomMessage(
                                 "Select 1 card to place at the top or bottom of security.",
-                                "The opponent is selecting 1 card to place at the bottom of security.");
+                                "The opponent is selecting 1 card to place at the top or bottom of security.");
                             selectHandEffect.SetUpCustomMessage_ShowCard("Security Top/Bottom Card");
 
                             yield return StartCoroutine(selectHandEffect.Activate());

+ 1 - 1
Assets/CardEffect/BT16/Yellow/BT16_093.cs

@@ -164,7 +164,7 @@ namespace DCGO.CardEffects.BT16
             {
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect($"Play 1 level 3 Digimon card with [Terriermon] in it's name from your hand or trash", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, true, EffectDiscription());
+                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
                 activateClass.SetIsSecurityEffect(true);
                 cardEffects.Add(activateClass);
 

+ 1 - 4
Assets/CardEffect/BT18/Red/BT18_087.cs

@@ -61,10 +61,7 @@ namespace DCGO.CardEffects.BT18
                     {
                         if (CardEffectCommons.CanTriggerWhenLoseSecurity(hashtable, player => player == card.Owner.Enemy))
                         {
-                            if (CardEffectCommons.IsOwnerTurn(card))
-                            {
-                                return true;
-                            }
+                            return true;
                         }
                     }
 

+ 1 - 6
Assets/CardEffect/BT20/Purple/BT20_098.cs

@@ -137,11 +137,6 @@ namespace DCGO.CardEffects.BT20
                                                cardEffect: activateClass);
                                 }
 
-                                bool CanNoSelect()
-                                {
-                                    return selectedCardsToPlay.Count == 0;
-                                }
-
                                 bool RemoveOptionsAlreadySelected(List<CardSource> cardSources, CardSource cardSource)
                                 {
                                     if (cardSources.Contains(cardSource))
@@ -154,7 +149,7 @@ namespace DCGO.CardEffects.BT20
                                     canTargetCondition: CanSelectPlayCardCondition,
                                     canTargetCondition_ByPreSelecetedList: RemoveOptionsAlreadySelected,
                                     canEndSelectCondition: null,
-                                    canNoSelect: CanNoSelect,
+                                    canNoSelect: () => true,
                                     selectCardCoroutine: SelectCardCoroutine2,
                                     afterSelectCardCoroutine: null,
                                     message: "Select 1 card to play.",

+ 4 - 5
Assets/CardEffect/BT21/Black/BT21_053.cs

@@ -20,7 +20,7 @@ namespace DCGO.CardEffects.BT21
                     return targetPermanent.TopCard.HasAppmonTraits;
                 }
 
-                cardEffects.Add(CardEffectFactory.AddSelfLinkConditionStaticEffect(permanentCondition: PermanentCondition, linkCost: 0, card: card));
+                cardEffects.Add(CardEffectFactory.AddSelfLinkConditionStaticEffect(permanentCondition: PermanentCondition, linkCost: 1, card: card));
             }
 
             #endregion
@@ -150,14 +150,13 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
-                        CardEffectCommons.CanTriggerWhenLinking(hashtable, null, card) &&
-                        CardEffectCommons.HasMatchConditionOpponentsPermanent(card, IsOpponentsDigimon);
+                    return CardEffectCommons.CanTriggerWhenLinking(hashtable, null, card);
                 }
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
+                           CardEffectCommons.HasMatchConditionOpponentsPermanent(card, IsOpponentsDigimon);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)

+ 3 - 3
Assets/CardEffect/BT21/Black/BT21_054.cs

@@ -23,7 +23,7 @@ namespace DCGO.CardEffects.BT21
                     return targetPermanent.TopCard.HasAppmonTraits;
                 }
 
-                cardEffects.Add(CardEffectFactory.AddSelfLinkConditionStaticEffect(permanentCondition: PermanentCondition, linkCost: 0, card: card));
+                cardEffects.Add(CardEffectFactory.AddSelfLinkConditionStaticEffect(permanentCondition: PermanentCondition, linkCost: 1, card: card));
             }
 
             #endregion
@@ -206,8 +206,8 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
-                        CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition);
+                    return CardEffectCommons.IsExistOnBattleArea(card) &&
+                           CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)

+ 109 - 76
Assets/CardEffect/BT21/Black/BT21_056.cs

@@ -18,7 +18,7 @@ namespace DCGO.CardEffects.BT21
             {
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Trash 1 card with [Vemmon] in text from hand to return 1 non-Digi-Egg card with [Vemmon] in text from trash to hand", CanUseCondition, card);
-                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDiscription());
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
                 cardEffects.Add(activateClass);
 
                 string EffectDiscription()
@@ -112,7 +112,7 @@ namespace DCGO.CardEffects.BT21
                                             canTargetCondition: CanSelectCardCondition,
                                             canTargetCondition_ByPreSelecetedList: null,
                                             canEndSelectCondition: null,
-                                            canNoSelect: () => false,
+                                            canNoSelect: () => true,
                                             selectCardCoroutine: null,
                                             afterSelectCardCoroutine: null,
                                             message: "Select 1 card to add to your hand.",
@@ -137,111 +137,144 @@ namespace DCGO.CardEffects.BT21
 
             #endregion
 
-            #region Your Turn Inherited
+            #region Your Turn - ESS
 
-            if (timing == EffectTiming.BeforePayCost)
-            {
-                ActivateClass activateClass = new ActivateClass();
-                activateClass.SetUpICardEffect("Digivolution Cost -1", CanUseCondition, card);
-                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, false, EffectDiscription());
-                activateClass.SetIsInheritedEffect(true);
-                activateClass.SetHashString("DigivolutionCost-1_BT21_056");
-                cardEffects.Add(activateClass);
+            ActivateClass activateClass2 = new ActivateClass();
+            activateClass2.SetUpICardEffect("Digivolution Cost -1", CanUseCondition2, card);
+            activateClass2.SetUpActivateClass(CanActivateCondition2, ActivateCoroutine2, 1, false, EffectDiscription2());
+            activateClass2.SetIsInheritedEffect(true);
+            activateClass2.SetNotShowUI(true);
+            activateClass2.SetIsBackgroundProcess(true);
+            activateClass2.SetHashString("DigivolutionCost-1_BT11_061");
 
-                string EffectDiscription()
-                {
-                    return "[Your Turn] [Once Per Turn] When this Digimon would digivolve into a Digimon card with [Vemmon] in its text, reduce the digivolution cost by 1.";
-                }
-
-                bool PermanentCondition(Permanent permanent)
-                {
-                    return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card) &&
-                        permanent == card.PermanentOfThisCard();
-                }
+            string EffectDiscription2()
+            {
+                return "";
+            }
 
-                bool CardCondition(CardSource cardSource)
+            bool CanUseCondition2(Hashtable hashtable)
+            {
+                if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
                 {
-                    return cardSource.IsDigimon &&
-                        cardSource.HasText("Vemmon");
-                }
+                    if (CardEffectCommons.IsOwnerTurn(card))
+                    {
+                        if (CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card))
+                        {
+                            List<CardSource> evoRootTops = CardEffectCommons.GetEvoRootTopsFromEnterFieldHashtable(
+                                hashtable,
+                                permanent => permanent.cardSources.Contains(card));
 
-                bool CanUseCondition(Hashtable hashtable)
-                {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
-                        CardEffectCommons.IsOwnerTurn(card) &&
-                        CardEffectCommons.CanTriggerWhenPermanentWouldDigivolve(hashtable, PermanentCondition, CardCondition);
+                            if (evoRootTops != null)
+                            {
+                                if (!evoRootTops.Contains(card))
+                                {
+                                    if (card.PermanentOfThisCard().TopCard.HasText("Vemmon"))
+                                    {
+                                        return true;
+                                    }
+                                }
+                            }
+                        }
+                    }
                 }
 
-                bool CanActivateCondition(Hashtable hashtable)
-                {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
-                }
+                return false;
+            }
 
-                IEnumerator ActivateCoroutine(Hashtable _hashtable)
-                {
-                    if (isExistOnField(card))
-                    {
-                        Hashtable hashtable = new Hashtable();
-                        hashtable.Add("CardEffect", activateClass);
+            bool CanActivateCondition2(Hashtable hashtable)
+            {
+                return CardEffectCommons.IsExistOnBattleArea(card);
+            }
 
-                        ContinuousController.instance.PlaySE(GManager.instance.GetComponent<Effects>().BuffSE);
+            IEnumerator ActivateCoroutine2(Hashtable _hashtable)
+            {
+                yield return null;
+            }
 
-                        ChangeCostClass changeCostClass = new ChangeCostClass();
-                        changeCostClass.SetUpICardEffect("Digivolution Cost -1", CanUseCondition1, card);
-                        changeCostClass.SetUpChangeCostClass(changeCostFunc: ChangeCost, cardSourceCondition: CardSourceCondition, rootCondition: RootCondition, isUpDown: isUpDown, isCheckAvailability: () => false, isChangePayingCost: () => true);
-                        card.Owner.UntilCalculateFixedCostEffect.Add((_timing) => changeCostClass);
+            if (timing == EffectTiming.OnEnterFieldAnyone)
+            {
+                cardEffects.Add(activateClass2);
+            }
 
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ShowReducedCost(_hashtable));
+            if (timing == EffectTiming.None)
+            {
+                ChangeCostClass changeCostClass = new ChangeCostClass();
+                changeCostClass.SetUpICardEffect($"Digivolution Cost -1", CanUseCondition, card);
+                changeCostClass.SetUpChangeCostClass(changeCostFunc: ChangeCost, cardSourceCondition: CardSourceCondition, rootCondition: RootCondition, isUpDown: isUpDown, isCheckAvailability: () => false, isChangePayingCost: () => true);
 
-                        bool CanUseCondition1(Hashtable hashtable)
-                        {
-                            return true;
-                        }
+                changeCostClass.SetIsInheritedEffect(true);
+                cardEffects.Add(changeCostClass);
 
-                        int ChangeCost(CardSource cardSource, int Cost, SelectCardEffect.Root root, List<Permanent> targetPermanents)
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.IsExistOnBattleArea(card))
+                    {
+                        if (CardEffectCommons.IsOwnerTurn(card))
                         {
-                            if (CardSourceCondition(cardSource) && RootCondition(root) && PermanentsCondition(targetPermanents))
+                            if (!card.cEntity_EffectController.isOverMaxCountPerTurn(activateClass2, activateClass2.MaxCountPerTurn))
                             {
-                                Cost -= 1;
+                                return true;
                             }
-
-                            return Cost;
                         }
+                    }
 
-                        bool PermanentsCondition(List<Permanent> targetPermanents)
-                        {
-                            return targetPermanents != null &&
-                                targetPermanents.Count(PermanentCondition) >= 1;
-                        }
+                    return false;
+                }
 
-                        bool PermanentCondition(Permanent targetPermanent)
+                int ChangeCost(CardSource cardSource, int Cost, SelectCardEffect.Root root, List<Permanent> targetPermanents)
+                {
+                    if (CardSourceCondition(cardSource))
+                    {
+                        if (RootCondition(root))
                         {
-                            return targetPermanent.TopCard != null &&
-                                targetPermanent.TopCard.Owner == card.Owner &&
-                                targetPermanent.TopCard.Owner.GetBattleAreaPermanents().Contains(targetPermanent);
+                            if (PermanentsCondition(targetPermanents))
+                            {
+                                Cost -= 1;
+                            }
                         }
+                    }
 
-                        bool CardSourceCondition(CardSource cardSource)
-                        {
-                            return cardSource != null &&
-                                cardSource.Owner == card.Owner &&
-                                cardSource.HasText("Vemmon");
-                        }
+                    return Cost;
+                }
 
-                        bool RootCondition(SelectCardEffect.Root root)
+                bool PermanentsCondition(List<Permanent> targetPermanents)
+                {
+                    if (targetPermanents != null)
+                    {
+                        if (targetPermanents.Count(PermanentCondition) >= 1)
                         {
                             return true;
                         }
+                    }
 
-                        bool isUpDown()
-                        {
-                            return true;
-                        }
+                    return false;
+                }
 
+                bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent == card.PermanentOfThisCard();
+                }
+
+                bool CardSourceCondition(CardSource cardSource)
+                {
+                    if (cardSource.HasText("Vemmon"))
+                    {
+                        return true;
                     }
+
+                    return false;
+                }
+
+                bool RootCondition(SelectCardEffect.Root root)
+                {
+                    return true;
                 }
-            }
 
+                bool isUpDown()
+                {
+                    return true;
+                }
+            }
             #endregion
 
             return cardEffects;

+ 18 - 21
Assets/CardEffect/BT21/Black/BT21_058.cs

@@ -321,27 +321,24 @@ namespace DCGO.CardEffects.BT21
 
                 IEnumerator ActivateCoroutine(Hashtable _hashtable)
                 {
-                    if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition))
-                    {
-                        int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectPermanentCondition));
-
-                        SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
-
-                        selectPermanentEffect.SetUp(
-                            selectPlayer: card.Owner,
-                            canTargetCondition: CanSelectPermanentCondition,
-                            canTargetCondition_ByPreSelecetedList: null,
-                            canEndSelectCondition: null,
-                            maxCount: maxCount,
-                            canNoSelect: false,
-                            canEndNotMax: false,
-                            selectPermanentCoroutine: null,
-                            afterSelectPermanentCoroutine: null,
-                            mode: SelectPermanentEffect.Mode.Destroy,
-                            cardEffect: activateClass);
-
-                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
-                    }
+                    int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectPermanentCondition));
+
+                    SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                    selectPermanentEffect.SetUp(
+                        selectPlayer: card.Owner,
+                        canTargetCondition: CanSelectPermanentCondition,
+                        canTargetCondition_ByPreSelecetedList: null,
+                        canEndSelectCondition: null,
+                        maxCount: maxCount,
+                        canNoSelect: false,
+                        canEndNotMax: false,
+                        selectPermanentCoroutine: null,
+                        afterSelectPermanentCoroutine: null,
+                        mode: SelectPermanentEffect.Mode.Destroy,
+                        cardEffect: activateClass);
+
+                    yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
                 }
             }
             #endregion

+ 111 - 7
Assets/CardEffect/BT21/Black/BT21_059.cs

@@ -11,6 +11,18 @@ namespace DCGO.CardEffects.BT21
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+            #region Alternative Digivolution Condition
+            if (timing == EffectTiming.None)
+            {
+                bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.EqualsTraits("Stnd.");
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 2, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+            #endregion
+
             #region Link Condition
 
             if (timing == EffectTiming.None)
@@ -20,14 +32,107 @@ namespace DCGO.CardEffects.BT21
                     return targetPermanent.TopCard.HasAppmonTraits;
                 }
 
-                cardEffects.Add(CardEffectFactory.AddSelfLinkConditionStaticEffect(permanentCondition: PermanentCondition, linkCost: 0, card: card));
+                cardEffects.Add(CardEffectFactory.AddSelfLinkConditionStaticEffect(permanentCondition: PermanentCondition, linkCost: 2, card: card));
             }
 
             #endregion
 
-            #region App Fusion
+            #region App Fusion (Globemon & Charismon)
 
             if (timing == EffectTiming.None)
+            {
+                AddAppFusionConditionClass addAppFusionConditionClass = new AddAppFusionConditionClass();
+                addAppFusionConditionClass.SetUpICardEffect($"App Fusion", (hashtable) => true, card);
+                addAppFusionConditionClass.SetUpAddAppFusionConditionClass(getAppFusionCondition: GetAppFusion);
+                addAppFusionConditionClass.SetNotShowUI(true);
+                cardEffects.Add(addAppFusionConditionClass);
+
+                AppFusionCondition GetAppFusion(CardSource cardSource)
+                {
+                    bool linkCondition(Permanent permanent, CardSource source)
+                    {
+                        if (source != null)
+                        {
+                            if (source != card)
+                            {
+                                if (permanent.TopCard.EqualsCardName("Watchmon"))
+                                {
+                                    if (permanent.LinkedCards.Find(x => x.EqualsCardName("Savemon") || x.EqualsCardName("Calendamon")))
+                                    {
+                                        return true;
+                                    }
+                                }
+                                if (permanent.TopCard.EqualsCardName("Savemon"))
+                                {
+                                    if (permanent.LinkedCards.Find(x => x.EqualsCardName("Watchmon") || x.EqualsCardName("Calendamon")))
+                                    {
+                                        return true;
+                                    }
+                                }
+                                if (permanent.TopCard.EqualsCardName("Calendamon"))
+                                {
+                                    if (permanent.LinkedCards.Find(x => x.EqualsCardName("Watchmon") || x.EqualsCardName("Savemon")))
+                                    {
+                                        return true;
+                                    }
+                                }
+                            }
+
+                            return false;
+                        }
+
+                        return false;
+                    }
+                    bool digimonCondition(Permanent permanent)
+                    {
+                        if (CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card))
+                        {
+                            if (permanent.TopCard.EqualsCardName("Watchmon"))
+                            {
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Savemon") || x.EqualsCardName("Calendamon")))
+                                {
+                                    return true;
+                                }
+                            }
+                            if (permanent.TopCard.EqualsCardName("Savemon"))
+                            {
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Watchmon") || x.EqualsCardName("Calendamon")))
+                                {
+                                    return true;
+                                }
+                            }
+                            if (permanent.TopCard.EqualsCardName("Calendamon"))
+                            {
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Watchmon") || x.EqualsCardName("Savemon")))
+                                {
+                                    return true;
+                                }
+                            }
+                            return false;
+                        }
+
+                        return false;
+                    }
+
+                    if (cardSource == card)
+                    {
+                        AppFusionCondition AppFusionCondition = new AppFusionCondition(
+                            linkedCondition: linkCondition,
+                            digimonCondition: digimonCondition,
+                            cost: 0);
+
+                        return AppFusionCondition;
+                    }
+
+                    return null;
+                }
+            }
+
+            #endregion
+
+            #region App Fusion
+
+            /*if (timing == EffectTiming.None)
             {
                 AddAppFusionConditionClass addAppFusionConditionClass = new AddAppFusionConditionClass();
                 addAppFusionConditionClass.SetUpICardEffect($"App Fusion", CanUseCondition, card);
@@ -73,7 +178,7 @@ namespace DCGO.CardEffects.BT21
 
                     return null;
                 }
-            }
+            }*/
 
             #endregion
 
@@ -193,14 +298,13 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
-                        CardEffectCommons.CanTriggerWhenLinking(hashtable, null, card) &&
-                        CardEffectCommons.HasMatchConditionOpponentsPermanent(card, IsOpponentsDigimon);
+                    return CardEffectCommons.CanTriggerWhenLinking(hashtable, null, card);
                 }
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
+                    return CardEffectCommons.IsExistOnBattleArea(card) &&
+                           CardEffectCommons.HasMatchConditionOpponentsPermanent(card, IsOpponentsDigimon);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)

+ 8 - 23
Assets/CardEffect/BT21/Black/BT21_060.cs

@@ -79,39 +79,24 @@ namespace DCGO.CardEffects.BT21
 
                     if (selectedPermanent != null)
                     {
-                        ImmuneFromDeDigivolveClass immuneFromDeDigivolveClass = new ImmuneFromDeDigivolveClass();
-                        immuneFromDeDigivolveClass.SetUpICardEffect("Isn't affected by <De-Digivolve>", CanUseCondition1, selectedPermanent.TopCard);
-                        immuneFromDeDigivolveClass.SetUpImmuneFromDeDigivolveClass(PermanentCondition: PermanentCondition);
-                        selectedPermanent.UntilOpponentTurnEndEffects.Add((_timing) => immuneFromDeDigivolveClass);
+                        ImmuneStackTrashingClass immuneFromStackTrashingClass = new ImmuneStackTrashingClass();
+                        immuneFromStackTrashingClass.SetUpICardEffect("Isn't affected by trashing any stacked card", CanUseCondition1, selectedPermanent.TopCard);
+                        immuneFromStackTrashingClass.SetUpImmuneFromStackTrashingClass(PermanentCondition: PermanentCondition, EffectCondition: EffectCondition);
+                        selectedPermanent.UntilOpponentTurnEndEffects.Add((_timing) => immuneFromStackTrashingClass);
 
                         bool CanUseCondition1(Hashtable hashtable1)
                         {
                             return selectedPermanent.TopCard != null;
                         }
 
-                        bool PermanentCondition(Permanent permanent)
-                        {
-                            return permanent == selectedPermanent;
-                        }
-
-                        CanNotTrashFromDigivolutionCardsClass canNotTrashFromDigivolutionCardsClass = new CanNotTrashFromDigivolutionCardsClass();
-                        canNotTrashFromDigivolutionCardsClass.SetUpICardEffect("[This Digimon's sources can't be trashed", CanUseCondition2, card);
-                        canNotTrashFromDigivolutionCardsClass.SetUpCanNotTrashFromDigivolutionCardsClass(CardCondition: CardCondition, CardEffectCondition: CardEffectCondition);
-                        cardEffects.Add(canNotTrashFromDigivolutionCardsClass);
-
-                        bool CanUseCondition2(Hashtable hashtable)
+                        bool EffectCondition(ICardEffect effect)
                         {
-                            return CardEffectCommons.IsExistOnBattleArea(card);
+                            return CardEffectCommons.IsOpponentEffect(effect, card);
                         }
 
-                        bool CardCondition(CardSource cardSource)
-                        {
-                            return CardEffectCommons.IsExistOnBattleArea(card);
-                        }
-
-                        bool CardEffectCondition(ICardEffect cardEffect)
+                        bool PermanentCondition(Permanent permanent)
                         {
-                            return CardEffectCommons.IsOpponentEffect(cardEffect, card);
+                            return permanent == selectedPermanent;
                         }
                     }
 

+ 94 - 37
Assets/CardEffect/BT21/Black/BT21_062.cs

@@ -64,7 +64,7 @@ namespace DCGO.CardEffects.BT21
                 {
                     if (CardEffectCommons.IsExistOnBattleArea(card))
                     {
-                        if (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanSelectCardCondition))
+                        if (CardEffectCommons.MatchConditionOwnersCardCountInTrash(card, CanSelectCardCondition) >= 4)
                         {
                             return true;
                         }
@@ -145,34 +145,34 @@ namespace DCGO.CardEffects.BT21
 
                         if (added)
                         {
-                            List<CardSource> selectedCards = new List<CardSource>();
+                            bool canSelectHand = card.Owner.HandCards.Count(CanSelectCardCondition1) >= 1;
+                            bool canSelectTrash = CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanSelectCardCondition1);
 
-                            if (card.Owner.HandCards.Count(CanSelectCardCondition1) >= 1)
+                            if (canSelectHand || canSelectTrash)
                             {
-                                int maxCount = 1;
-
-                                SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
-
-                                selectHandEffect.SetUp(
-                                    selectPlayer: card.Owner,
-                                    canTargetCondition: CanSelectCardCondition1,
-                                    canTargetCondition_ByPreSelecetedList: null,
-                                    canEndSelectCondition: null,
-                                    maxCount: maxCount,
-                                    canNoSelect: true,
-                                    canEndNotMax: false,
-                                    isShowOpponent: true,
-                                    selectCardCoroutine: SelectCardCoroutine,
-                                    afterSelectCardCoroutine: null,
-                                    mode: SelectHandEffect.Mode.Custom,
-                                    cardEffect: activateClass);
-
-                                selectHandEffect.SetUpCustomMessage(
-                                    "Select 1 option card to use.",
-                                    "The opponent is selecting 1 option card to use.");
-                                selectHandEffect.SetUpCustomMessage_ShowCard("Used Card");
-
-                                yield return StartCoroutine(selectHandEffect.Activate());
+                                if (canSelectHand && canSelectTrash)
+                                {
+                                    List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
+                                    {
+                                        new SelectionElement<bool>(message: $"From hand", value : true, spriteIndex: 0),
+                                        new SelectionElement<bool>(message: $"From trash", value : false, spriteIndex: 1),
+                                    };
+
+                                    string selectPlayerMessage = "From which area do you play a card?";
+                                    string notSelectPlayerMessage = "The opponent is choosing from which area to play a card.";
+
+                                    GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+                                }
+                                else
+                                {
+                                    GManager.instance.userSelectionManager.SetBool(canSelectHand);
+                                }
+
+                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+
+                                bool fromHand = GManager.instance.userSelectionManager.SelectedBoolValue;
+
+                                List<CardSource> selectedCards = new List<CardSource>();
 
                                 IEnumerator SelectCardCoroutine(CardSource cardSource)
                                 {
@@ -180,18 +180,75 @@ namespace DCGO.CardEffects.BT21
 
                                     yield return null;
                                 }
-                            }
 
-                            if (selectedCards.Count >= 1)
-                            {
+                                if (fromHand)
+                                {
+                                    int maxCount = 1;
+
+                                    SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
+
+                                    selectHandEffect.SetUp(
+                                        selectPlayer: card.Owner,
+                                        canTargetCondition: CanSelectCardCondition1,
+                                        canTargetCondition_ByPreSelecetedList: null,
+                                        canEndSelectCondition: null,
+                                        maxCount: maxCount,
+                                        canNoSelect: true,
+                                        canEndNotMax: false,
+                                        isShowOpponent: true,
+                                        selectCardCoroutine: SelectCardCoroutine,
+                                        afterSelectCardCoroutine: null,
+                                        mode: SelectHandEffect.Mode.Custom,
+                                        cardEffect: activateClass);
+
+                                    selectHandEffect.SetUpCustomMessage("Select 1 card to play.", "The opponent is selecting 1 card to play.");
+                                    selectHandEffect.SetUpCustomMessage_ShowCard("Played Card");
+
+                                    yield return StartCoroutine(selectHandEffect.Activate());
+                                }
+                                else
+                                {
+                                    int maxCount = 1;
+
+                                    SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
+
+                                    selectCardEffect.SetUp(
+                                        canTargetCondition: CanSelectCardCondition1,
+                                        canTargetCondition_ByPreSelecetedList: null,
+                                        canEndSelectCondition: null,
+                                        canNoSelect: () => true,
+                                        selectCardCoroutine: SelectCardCoroutine,
+                                        afterSelectCardCoroutine: null,
+                                        message: "Select 1 card to play.",
+                                        maxCount: maxCount,
+                                        canEndNotMax: false,
+                                        isShowOpponent: true,
+                                        mode: SelectCardEffect.Mode.Custom,
+                                        root: SelectCardEffect.Root.Trash,
+                                        customRootCardList: null,
+                                        canLookReverseCard: true,
+                                        selectPlayer: card.Owner,
+                                        cardEffect: activateClass);
+
+                                    selectCardEffect.SetUpCustomMessage("Select 1 card to play.", "The opponent is selecting 1 card to play.");
+                                    selectCardEffect.SetUpCustomMessage_ShowCard("Played Card");
+
+                                    yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
+                                }
+
+                                SelectCardEffect.Root root = SelectCardEffect.Root.Hand;
+
+                                if (!fromHand)
+                                {
+                                    root = SelectCardEffect.Root.Trash;
+                                }
+
                                 yield return ContinuousController.instance.StartCoroutine(
                                     CardEffectCommons.PlayOptionCards(
-                                        cardSources: selectedCards,
-                                        activateClass: activateClass,
-                                        payCost: false,
-                                        root: SelectCardEffect.Root.Hand
-                                    )
-                                );
+                                    cardSources: selectedCards,
+                                    activateClass: activateClass,
+                                    payCost: false,
+                                    root: root));
                             }
                         }
                     }
@@ -331,7 +388,7 @@ namespace DCGO.CardEffects.BT21
                         selectCardCoroutine: null,
                         afterSelectCardCoroutine: AfterSelectCardCoroutine,
                         message: "Select 4 [Vemmon] to place at the bottom of the deck.",
-                        maxCount: 1,
+                        maxCount: 4,
                         canEndNotMax: false,
                         isShowOpponent: false,
                         mode: SelectCardEffect.Mode.Custom,

+ 57 - 42
Assets/CardEffect/BT21/Black/BT21_098.cs

@@ -55,16 +55,16 @@ namespace DCGO.CardEffects.BT21
                             cardEffect: activateClass);
 
                         yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
-
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlaceDelayOptionCards(card: card, cardEffect: activateClass));
                     }
+
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlaceDelayOptionCards(card: card, cardEffect: activateClass));
                 }
             }
 
             #endregion
 
             #region Your Turn Delay
-            if (timing == EffectTiming.OnDeclaration)
+            if (timing == EffectTiming.OnAllyAttack)
             {
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Delete 1 opponent's Digimon with lowest play cost, trash security until 1 left if didn't delete", CanUseCondition, card);
@@ -123,60 +123,75 @@ namespace DCGO.CardEffects.BT21
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
+                    bool activateDelay = false;
+
                     List<Permanent> deleteTargetPermanents = new List<Permanent>();
 
-                    bool attemptedToDelete = false;
+                    bool failedToDelete = true;
 
-                    if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition))
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DeletePeremanentAndProcessAccordingToResult(
+                                    targetPermanents: new List<Permanent>() { card.PermanentOfThisCard() }, 
+                                    activateClass: activateClass, 
+                                    successProcess: permanents => SuccessProcess(), 
+                                    failureProcess: null));
+
+                    IEnumerator SuccessProcess()
                     {
-                        SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+                        activateDelay = true;
+                        yield return null;
+                    }
 
-                        selectPermanentEffect.SetUp(
-                            selectPlayer: card.Owner,
-                            canTargetCondition: CanSelectPermanentCondition,
-                            canTargetCondition_ByPreSelecetedList: null,
-                            canEndSelectCondition: null,
-                            maxCount: 1,
-                            canNoSelect: false,
-                            canEndNotMax: false,
-                            selectPermanentCoroutine: null,
-                            afterSelectPermanentCoroutine: AfterSelectPermanentCoroutine,
-                            mode: SelectPermanentEffect.Mode.Destroy,
-                            cardEffect: activateClass);
+                    if (activateDelay)
+                    {
+                        if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition))
+                        {
+                            SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
 
-                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+                            selectPermanentEffect.SetUp(
+                                selectPlayer: card.Owner,
+                                canTargetCondition: CanSelectPermanentCondition,
+                                canTargetCondition_ByPreSelecetedList: null,
+                                canEndSelectCondition: null,
+                                maxCount: 1,
+                                canNoSelect: false,
+                                canEndNotMax: false,
+                                selectPermanentCoroutine: null,
+                                afterSelectPermanentCoroutine: AfterSelectPermanentCoroutine,
+                                mode: SelectPermanentEffect.Mode.Custom,
+                                cardEffect: activateClass);
 
-                        IEnumerator AfterSelectPermanentCoroutine(List<Permanent> permanents)
-                        {
-                            deleteTargetPermanents = permanents.Clone();
+                            yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
 
-                            attemptedToDelete = true;
+                            IEnumerator AfterSelectPermanentCoroutine(List<Permanent> permanents)
+                            {
+                                deleteTargetPermanents = permanents.Clone();
 
-                            yield return null;
+                                yield return null;
+                            }
                         }
-                    }
 
-                    if (attemptedToDelete)
-                    {
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DeletePeremanentAndProcessAccordingToResult(targetPermanents: deleteTargetPermanents, activateClass: activateClass, successProcess: null, failureProcess: FailureProcess));
+                        if (deleteTargetPermanents.Count > 0)
+                        {
+                            yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DeletePeremanentAndProcessAccordingToResult(targetPermanents: deleteTargetPermanents, activateClass: activateClass, successProcess: SuccessDeleteProcess, failureProcess: null));
+
+                            IEnumerator SuccessDeleteProcess(List<Permanent> permanents)
+                            {
+                                if(permanents.Count > 0)
+                                    failedToDelete = false;
+
+                                yield return null;
+                            }
+                        }
 
-                        IEnumerator FailureProcess()
+                        if (failedToDelete)
                         {
                             yield return ContinuousController.instance.StartCoroutine(new IDestroySecurity(
-                                player: card.Owner.Enemy,
-                                destroySecurityCount: card.Owner.Enemy.SecurityCards.Count - 1,
-                                cardEffect: activateClass,
-                                fromTop: true).DestroySecurity());
+                                    player: card.Owner.Enemy,
+                                    destroySecurityCount: card.Owner.Enemy.SecurityCards.Count - 1,
+                                    cardEffect: activateClass,
+                                    fromTop: true).DestroySecurity());
                         }
                     }
-                    else
-                    {
-                        yield return ContinuousController.instance.StartCoroutine(new IDestroySecurity(
-                            player: card.Owner.Enemy,
-                            destroySecurityCount: card.Owner.Enemy.SecurityCards.Count - 1,
-                            cardEffect: activateClass,
-                            fromTop: true).DestroySecurity());
-                    }
                 }
             }
             #endregion
@@ -187,7 +202,7 @@ namespace DCGO.CardEffects.BT21
             {
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect($"Play 1 card with [VEMMON] in text from hand or trash and add this card to hand", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, true, EffectDescription());
+                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDescription());
                 activateClass.SetIsSecurityEffect(true);
                 cardEffects.Add(activateClass);
 

+ 1 - 1
Assets/CardEffect/BT21/Blue/BT21_038.cs

@@ -20,7 +20,7 @@ namespace DCGO.CardEffects.BT21
 
                 cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(
                     permanentCondition: PermanentCondition,
-                    digivolutionCost: 2,
+                    digivolutionCost: 3,
                     ignoreDigivolutionRequirement: false,
                     card: card,
                     condition: null));

+ 1 - 0
Assets/CardEffect/BT21/Blue/BT21_039.cs

@@ -172,6 +172,7 @@ namespace DCGO.CardEffects.BT21
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("1 of your other Digimon digivolves without paying the cost", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, true, EffectDescription());
+                activateClass.SetHashString("WA_BT21-039");
                 cardEffects.Add(activateClass);
 
                 string EffectDescription()

+ 7 - 5
Assets/CardEffect/BT21/Blue/BT21_094.cs

@@ -74,8 +74,7 @@ namespace DCGO.CardEffects.BT21
 
             #region Delay Effect
 
-            // TODO Make on top stacked card trashed
-            if (timing == EffectTiming.WhenPermanentWouldBeDeleted)
+            if (timing == EffectTiming.WhenTopCardTrashed)
             {
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Digivolve into a Digimon card with [Armor Form] trait in your hand", CanUseCondition, card);
@@ -89,11 +88,15 @@ namespace DCGO.CardEffects.BT21
                         "[All Turns] When the top stacked card of any your [Armor Form] trait Digimon is trashed, [Delay] • 1 of your Digimon may digivolve into a Digimon card with the [Armor Form] in the hand without paying the cost.";
                 }
 
+                bool TrashedCardCondition(CardSource cardSource)
+                {
+                    return cardSource.EqualsTraits("Armor Form");
+                }
+
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    // TODO Make on top stacked card trashed
                     return CardEffectCommons.CanDeclareOptionDelayEffect(card) &&
-                           CardEffectCommons.CanTriggerWhenPermanentRemoveField(hashtable, CanSelectPermanentCondition);
+                           CardEffectCommons.CanTriggerWhenTopCardTrashed(hashtable, TrashedCardCondition);
                 }
 
                 bool CanSelectHandCardCondition(CardSource cardSource)
@@ -105,7 +108,6 @@ namespace DCGO.CardEffects.BT21
                 bool CanSelectPermanentCondition(Permanent permanent)
                 {
                     return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card) &&
-                           permanent.TopCard.EqualsTraits("Armor Form") &&
                            card.Owner.HandCards.Where(CanSelectHandCardCondition).Any(cardSource =>
                                cardSource.CanPlayCardTargetFrame(permanent.PermanentFrame, false, activateClass));
                 }

+ 1 - 1
Assets/CardEffect/BT21/Blue/BT21_095.cs

@@ -63,7 +63,7 @@ namespace DCGO.CardEffects.BT21
 
                 List<ICardEffect> GetEffects(CardSource cardSource, List<ICardEffect> effects, EffectTiming effectTiming)
                 {
-                    if (effectTiming == EffectTiming.OnAllyAttack)
+                    if (effectTiming == EffectTiming.OnEndTurn)
                     {
                         bool Condition()
                         {

+ 3 - 2
Assets/CardEffect/BT21/Green/BT21_047.cs

@@ -109,11 +109,12 @@ namespace DCGO.CardEffects.BT21
             }
             #endregion
 
-            #region Inherit
+            #region Link Effect
             if (timing == EffectTiming.OnDetermineDoSecurityCheck)
             {
                 cardEffects.Add(CardEffectFactory.PierceSelfEffect(
-                    isInheritedEffect: true,
+                    isInheritedEffect: false,
+                    isLinkedEffect: true,
                     card: card,
                     condition: null));
             }

+ 119 - 1
Assets/CardEffect/BT21/Green/BT21_050.cs

@@ -18,10 +18,128 @@ namespace DCGO.CardEffects.BT21
                     return (targetPermanent.TopCard.EqualsTraits("WG") && targetPermanent.TopCard.IsLevel4);
                 }
 
-                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 2, ignoreDigivolutionRequirement: false, card: card, condition: null));
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 3, ignoreDigivolutionRequirement: false, card: card, condition: null));
             }
             #endregion
 
+            #region On Play
+
+            if (timing == EffectTiming.OnEnterFieldAnyone)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Suspend", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
+                cardEffects.Add(activateClass);
+
+                string EffectDiscription()
+                {
+                    return "[On Play] You may suspend 1 Digimon.";
+                }
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.CanTriggerOnPlay(hashtable, card);
+                }
+
+                bool PermanentCondition(Permanent permanent)
+                {
+                    return CardEffectCommons.IsPermanentExistsOnBattleAreaDigimon(permanent);
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.HasMatchConditionPermanent(PermanentCondition))
+                    {
+                        int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(PermanentCondition));
+
+                        SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                        selectPermanentEffect.SetUp(
+                            selectPlayer: card.Owner,
+                            canTargetCondition: PermanentCondition,
+                            canTargetCondition_ByPreSelecetedList: null,
+                            canEndSelectCondition: null,
+                            maxCount: maxCount,
+                            canNoSelect: true,
+                            canEndNotMax: false,
+                            selectPermanentCoroutine: null,
+                            afterSelectPermanentCoroutine: null,
+                            mode: SelectPermanentEffect.Mode.Tap,
+                            cardEffect: activateClass);
+
+                        selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon to suspend.", "The opponent is selecting 1 Digimon to suspend.");
+
+                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+                    }
+                }
+            }
+
+            #endregion
+
+            #region When Digivolving
+
+            if (timing == EffectTiming.OnEnterFieldAnyone)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Suspend", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
+                cardEffects.Add(activateClass);
+
+                string EffectDiscription()
+                {
+                    return "[When Digivolving] You may suspend 1 Digimon.";
+                }
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
+                }
+
+                bool PermanentCondition(Permanent permanent)
+                {
+                    return CardEffectCommons.IsPermanentExistsOnBattleAreaDigimon(permanent);
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.HasMatchConditionPermanent(PermanentCondition))
+                    {
+                        int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(PermanentCondition));
+
+                        SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                        selectPermanentEffect.SetUp(
+                            selectPlayer: card.Owner,
+                            canTargetCondition: PermanentCondition,
+                            canTargetCondition_ByPreSelecetedList: null,
+                            canEndSelectCondition: null,
+                            maxCount: maxCount,
+                            canNoSelect: true,
+                            canEndNotMax: false,
+                            selectPermanentCoroutine: null,
+                            afterSelectPermanentCoroutine: null,
+                            mode: SelectPermanentEffect.Mode.Tap,
+                            cardEffect: activateClass);
+
+                        selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon to suspend.", "The opponent is selecting 1 Digimon to suspend.");
+
+                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+                    }
+                }
+            }
+
+            #endregion
+
             #region Opponents Turn
             if (timing == EffectTiming.OnAllyAttack)
             {

+ 1 - 1
Assets/CardEffect/BT21/Green/BT21_51.cs → Assets/CardEffect/BT21/Green/BT21_051.cs

@@ -4,7 +4,7 @@ using System.Collections.Generic;
 
 namespace DCGO.CardEffects.BT21
 {
-    public class BT21_51 : CEntity_Effect
+    public class BT21_051 : CEntity_Effect
     {
         public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
         {

+ 0 - 0
Assets/CardEffect/BT21/Green/BT21_51.cs.meta → Assets/CardEffect/BT21/Green/BT21_051.cs.meta


+ 20 - 7
Assets/CardEffect/BT21/Green/BT21_097.cs

@@ -20,11 +20,14 @@ namespace DCGO.CardEffects.BT21
 
                 bool HasAppmonTrait(Permanent permanent)
                 {
-                    if (permanent.TopCard.EqualsTraits("Appmon"))
+                    if(CardEffectCommons.IsOwnerPermanent(permanent, card))
                     {
-                        if (permanent.IsDigimon || permanent.IsTamer)
+                        if (permanent.TopCard.EqualsTraits("Appmon"))
                         {
-                            return true;
+                            if (permanent.IsDigimon || permanent.IsTamer)
+                            {
+                                return true;
+                            }
                         }
                     }
 
@@ -33,7 +36,7 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.HasMatchConditionOwnersPermanent(card, HasAppmonTrait);
+                    return CardEffectCommons.HasMatchConditionPermanent(HasAppmonTrait, true);
                 }
 
                 bool CardCondition(CardSource cardSource)
@@ -119,6 +122,8 @@ namespace DCGO.CardEffects.BT21
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
+                    bool delaySuccussful = false;
+
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DeletePeremanentAndProcessAccordingToResult(
                     targetPermanents: new List<Permanent>() { card.PermanentOfThisCard() },
                     activateClass: activateClass,
@@ -126,6 +131,13 @@ namespace DCGO.CardEffects.BT21
                     failureProcess: null));
 
                     IEnumerator SuccessProcess()
+                    {
+                        delaySuccussful = true;
+
+                        yield return null;
+                    }
+
+                    if (delaySuccussful)
                     {
                         Permanent selectedPermanent = null;
                         CardSource cardForLinking = null;
@@ -136,7 +148,7 @@ namespace DCGO.CardEffects.BT21
 
                             selectHandEffect.SetUp(
                                 selectPlayer: card.Owner,
-                                canTargetCondition: (cardSource) => true,
+                                canTargetCondition: CanSelectLinkTarget,
                                 canTargetCondition_ByPreSelecetedList: null,
                                 canEndSelectCondition: null,
                                 maxCount: 1,
@@ -160,7 +172,7 @@ namespace DCGO.CardEffects.BT21
                             yield return null;
                         }
 
-                        if(cardForLinking != null)
+                        if (cardForLinking != null)
                         {
                             SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
 
@@ -183,7 +195,8 @@ namespace DCGO.CardEffects.BT21
 
                             bool CanSelectPermanentCondition(Permanent permanent)
                             {
-                                return cardForLinking.CanLinkFromTargetPermanent(permanent, false);
+                                return  CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card) &&
+                                        cardForLinking.CanLinkToTargetPermanent(permanent, false);
                             }
 
                             IEnumerator SelectPermanentCoroutine(Permanent permanent)

+ 1 - 1
Assets/CardEffect/BT21/Purple/BT21_064.cs

@@ -16,7 +16,7 @@ namespace DCGO.CardEffects.BT21
             {
                 bool PermanentCondition(Permanent targetPermanent)
                 {
-                    return targetPermanent.TopCard.EqualsCardName("Guilmon") || (targetPermanent.Level == 2 && targetPermanent.TopCard.EqualsTraits("Hero"));
+                    return targetPermanent.TopCard.EqualsCardName("Gigimon") || (targetPermanent.Level == 2 && targetPermanent.TopCard.EqualsTraits("Hero"));
                 }
 
                 cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(

+ 2 - 2
Assets/CardEffect/BT21/Purple/BT21_065.cs

@@ -174,12 +174,12 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.CanActivateOnDeletionInherited(hashtable, card);
+                    return CardEffectCommons.CanTriggerOnDeletion(hashtable, card);
                 }
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    if (CardEffectCommons.CanActivateOnDeletion(card))
+                    if (CardEffectCommons.CanActivateOnDeletionInherited(hashtable,card))
                     {
                         if (card.Owner.CanAddMemory(activateClass))
                         {

+ 2 - 2
Assets/CardEffect/BT21/Purple/BT21_068.cs

@@ -201,12 +201,12 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.CanActivateOnDeletionInherited(hashtable, card);
+                    return CardEffectCommons.CanTriggerOnDeletion(hashtable, card);
                 }
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    if (CardEffectCommons.CanActivateOnDeletion(card))
+                    if (CardEffectCommons.CanActivateOnDeletionInherited(hashtable, card))
                     {
                         if (card.Owner.CanAddMemory(activateClass))
                         {

+ 12 - 0
Assets/CardEffect/BT21/Purple/BT21_070.cs

@@ -10,6 +10,18 @@ namespace DCGO.CardEffects.BT21
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+            #region Alternative Digivolution Condition
+            if (timing == EffectTiming.None)
+            {
+                bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.EqualsTraits("Stnd.");
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 2, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+            #endregion
+
             #region Security
             if (timing == EffectTiming.SecuritySkill)
             {

+ 15 - 3
Assets/CardEffect/BT21/Purple/BT21_071.cs

@@ -12,8 +12,20 @@ namespace DCGO.CardEffects.BT21
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-            #region Digivolution Condition
-            if(timing == EffectTiming.None)
+            #region Alternative Digivolution Condition - Stnd.
+            if (timing == EffectTiming.None)
+            {
+                bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.EqualsTraits("Stnd.");
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 2, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+            #endregion
+
+            #region Alternative Digivolution Condition - Three Musketeers
+            if (timing == EffectTiming.None)
             {
                 bool Condition(Permanent permanent)
                 {
@@ -389,7 +401,7 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return isExistOnField(card) && (card.Owner.HandCards.Count >= 1 || card.Owner.LibraryCards.Count >= 1);
+                    return isExistOnField(card);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)

+ 8 - 1
Assets/CardEffect/BT21/Purple/BT21_072.cs

@@ -22,6 +22,7 @@ namespace DCGO.CardEffects.BT21
                 cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(validDigivolutionCondition, 3, false, card, null));
             }
             #endregion
+
             #region raid, piercing
             if (timing == EffectTiming.OnAllyAttack)
             {
@@ -33,6 +34,7 @@ namespace DCGO.CardEffects.BT21
                 cardEffects.Add(CardEffectFactory.PierceSelfEffect(isInheritedEffect: false, card: card, condition: null));
             }
             #endregion
+
             #region When Digivolving
             if (timing == EffectTiming.OnEnterFieldAnyone)
             {
@@ -88,7 +90,12 @@ namespace DCGO.CardEffects.BT21
             {
                 int count()
                 {
-                    return card.PermanentOfThisCard().DigivolutionCards.Count();
+                    if (CardEffectCommons.IsExistOnBattleArea(card))
+                    {
+                        return card.PermanentOfThisCard().DigivolutionCards.Count();
+                    }
+
+                    return 0;
                 }
 
                 bool condition()

+ 93 - 47
Assets/CardEffect/BT21/Purple/BT21_073.cs

@@ -11,65 +11,87 @@ namespace DCGO.CardEffects.BT21
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-            #region  Appfusion
+            #region Alternative Digivolution Condition - Sup.
+            if (timing == EffectTiming.None)
+            {
+                bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.EqualsTraits("Sup.");
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 4, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+            #endregion
+
+            #region App Fusion (Globemon & Charismon)
+
             if (timing == EffectTiming.None)
             {
                 AddAppFusionConditionClass addAppFusionConditionClass = new AddAppFusionConditionClass();
-                addAppFusionConditionClass.SetUpICardEffect($"App Fusion", CanUseCondition, card);
+                addAppFusionConditionClass.SetUpICardEffect($"App Fusion", (hashtable) => true, card);
                 addAppFusionConditionClass.SetUpAddAppFusionConditionClass(getAppFusionCondition: GetAppFusion);
                 addAppFusionConditionClass.SetNotShowUI(true);
                 cardEffects.Add(addAppFusionConditionClass);
 
-                
-                bool CanUseCondition(Hashtable hashtable)
-                {
-                    return true;
-                }
-
                 AppFusionCondition GetAppFusion(CardSource cardSource)
                 {
-                    string[] validCards = { "Sociamon", "Gossipmon" };
-                    if (cardSource == card)
+                    bool linkCondition(Permanent permanent, CardSource source)
                     {
-                        bool linkCondition(CardSource source)
+                        if (source != null)
                         {
-                            foreach (string name in validCards)
+                            if (source != card)
                             {
-                                if (source.EqualsCardName(name))
+                                if (permanent.TopCard.EqualsCardName("Sociamon"))
+                                {
+                                    if (permanent.LinkedCards.Find(x => x.EqualsCardName("Gossipmon")))
+                                    {
+                                        return true;
+                                    }
+                                }
+                                if (permanent.TopCard.EqualsCardName("Gossipmon"))
                                 {
-                                    foreach(string otherName in validCards)
+                                    if (permanent.LinkedCards.Find(x => x.EqualsCardName("Sociamon")))
                                     {
-                                        if(otherName != name && source.PermanentOfThisCard().TopCard.EqualsCardName(otherName))
-                                        {
-                                            return true;
-                                        }
+                                        return true;
                                     }
                                 }
                             }
+
                             return false;
                         }
 
-                        bool digimonCondition(Permanent permanent)
+                        return false;
+                    }
+                    bool digimonCondition(Permanent permanent)
+                    {
+                        if (CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card))
                         {
-                            if (!card.CanNotEvolve(permanent))
+                            if (permanent.TopCard.EqualsCardName("Sociamon"))
                             {
-                                foreach(string name in validCards)
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Gossipmon")))
                                 {
-                                    if (permanent.TopCard.EqualsCardName(name))
-                                    {
-                                        return true;
-                                    }
+                                    return true;
+                                }
+                            }
+                            if (permanent.TopCard.EqualsCardName("Gossipmon"))
+                            {
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Sociamon")))
+                                {
+                                    return true;
                                 }
                             }
 
                             return false;
                         }
 
+                        return false;
+                    }
+
+                    if (cardSource == card)
+                    {
                         AppFusionCondition AppFusionCondition = new AppFusionCondition(
                             linkedCondition: linkCondition,
-                            selectLinkMessage: "1 [Sociamon] or [Gossipmon]",
                             digimonCondition: digimonCondition,
-                            selectDigimonMessage: "1 [Sociamon] or [Gossipmon]",
                             cost: 0);
 
                         return AppFusionCondition;
@@ -78,6 +100,7 @@ namespace DCGO.CardEffects.BT21
                     return null;
                 }
             }
+
             #endregion
 
             #region Blocker
@@ -90,12 +113,13 @@ namespace DCGO.CardEffects.BT21
             #region On Play/When Digivolving shared
             bool CanLinkCondition(CardSource cardSource)
             {
-                return cardSource.HasLevel && cardSource.Level <= 4 && cardSource.CanLinkFromTargetPermanent(card.PermanentOfThisCard(), false);
+                return cardSource.HasLevel && cardSource.Level <= 4 && cardSource.CanLinkToTargetPermanent(card.PermanentOfThisCard(), false);
             }
 
             bool CanActivateConditionShared(Hashtable hashtable)
             {
-                return isExistOnField(card) && (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanLinkCondition) ||
+                return isExistOnField(card) && 
+                    (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanLinkCondition) ||
                     card.PermanentOfThisCard().DigivolutionCards.Exists(CanLinkCondition));
             }
             #endregion
@@ -105,7 +129,7 @@ namespace DCGO.CardEffects.BT21
             {
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Link from trash or sources", CanUseCondition, card);
-                activateClass.SetUpActivateClass(CanActivateConditionShared, ActivateCoroutine, -1, true, EffectDescription());
+                activateClass.SetUpActivateClass(CanActivateConditionShared, ActivateCoroutine, -1, false, EffectDescription());
                 cardEffects.Add(activateClass);
 
                 string EffectDescription()
@@ -215,7 +239,7 @@ namespace DCGO.CardEffects.BT21
 
                         if (selectedCards.Count >= 1)
                         {
-                            yield return card.PermanentOfThisCard().AddLinkCard(selectedCards[0], activateClass);
+                            yield return ContinuousController.instance.StartCoroutine(card.PermanentOfThisCard().AddLinkCard(selectedCards[0], activateClass));
                         }
                     }
                 
@@ -229,7 +253,7 @@ namespace DCGO.CardEffects.BT21
             {
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Link from trash or sources", CanUseCondition, card);
-                activateClass.SetUpActivateClass(CanActivateConditionShared, ActivateCoroutine, -1, true, EffectDescription());
+                activateClass.SetUpActivateClass(CanActivateConditionShared, ActivateCoroutine, -1, false, EffectDescription());
                 cardEffects.Add(activateClass);
 
                 string EffectDescription()
@@ -239,7 +263,7 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.CanTriggerOnPlay(hashtable, card);
+                    return CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
@@ -339,7 +363,7 @@ namespace DCGO.CardEffects.BT21
 
                         if (selectedCards.Count >= 1)
                         {
-                            yield return card.PermanentOfThisCard().AddLinkCard(selectedCards[0], activateClass);
+                            yield return ContinuousController.instance.StartCoroutine(card.PermanentOfThisCard().AddLinkCard(selectedCards[0], activateClass));
                         }
                     }
 
@@ -515,7 +539,7 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
+                    return CardEffectCommons.IsExistLinked(card) &&
                            CardEffectCommons.CanTriggerWhenRemoveField(hashtable, card);
                     
                 }
@@ -540,33 +564,55 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
+                    return CardEffectCommons.IsExistLinked(card) &&
                            !card.PermanentOfThisCard().HasNoLinkCards;
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
-                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.SelectTrashLinkedCards(CanSelectPermanentCondition, CanSelectCardCondition, 1, true, true, activateClass,afterSelectionCoroutine: AfterSelectCardCoroutine));
-
+                    Permanent thisPermanent = card.PermanentOfThisCard();
                     bool trashed = false;
 
-                    IEnumerator AfterSelectCardCoroutine(Permanent permanent, List<CardSource> cardSources)
+                    SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
+
+                    selectCardEffect.SetUp(
+                                canTargetCondition: CanSelectCardCondition,
+                                canTargetCondition_ByPreSelecetedList: null,
+                                canEndSelectCondition: null,
+                                canNoSelect: () => true,
+                                selectCardCoroutine: null,
+                                afterSelectCardCoroutine: SelectCardCoroutine,
+                                message: "Select 1 link card to trash.",
+                                maxCount: 1,
+                                canEndNotMax: false,
+                                isShowOpponent: true,
+                                mode: SelectCardEffect.Mode.Discard,
+                                root: SelectCardEffect.Root.Custom,
+                                customRootCardList: card.PermanentOfThisCard().LinkedCards,
+                                canLookReverseCard: true,
+                                selectPlayer: card.Owner,
+                                cardEffect: activateClass);
+
+                    selectCardEffect.SetUpCustomMessage("Select 1 link card to trash.", "The opponent is selecting 1 link card to trash.");
+
+                    yield return StartCoroutine(selectCardEffect.Activate());
+
+                    IEnumerator SelectCardCoroutine(List<CardSource> cardSources)
                     {
-                        if(cardSources.Count == 1)
-                        {
+                        if (cardSources.Count > 0)
                             trashed = true;
-                        }
+
                         yield return null;
                     }
 
                     if (trashed)
                     {
-                        card.PermanentOfThisCard().willBeRemoveField = false;
+                        thisPermanent.willBeRemoveField = false;
 
-                        card.PermanentOfThisCard().HideHandBounceEffect();
-                        card.PermanentOfThisCard().HideDeckBounceEffect();
-                        card.PermanentOfThisCard().HideWillRemoveFieldEffect();
-                        card.PermanentOfThisCard().HideDeleteEffect();
+                        thisPermanent.HideHandBounceEffect();
+                        thisPermanent.HideDeckBounceEffect();
+                        thisPermanent.HideWillRemoveFieldEffect();
+                        thisPermanent.HideDeleteEffect();
                     }
                 }
             }

+ 87 - 104
Assets/CardEffect/BT21/Purple/BT21_074.cs

@@ -12,13 +12,29 @@ namespace DCGO.CardEffects.BT21
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-            #region Digivolution condition
-            if(timing == EffectTiming.None)
+            #region Alternate Digivolution Requirement - Three Musketeers
+
+            if (timing == EffectTiming.None)
+            {
+                static bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.Level == 4 && targetPermanent.TopCard.HasText("Three Musketeers");
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 3, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+
+            #endregion
+
+            #region Alternative Digivolution Condition - Sup.
+            if (timing == EffectTiming.None)
             {
-                bool Condition(Permanent permanent)
+                bool PermanentCondition(Permanent targetPermanent)
                 {
-                    return permanent.Level == 4 && permanent.TopCard.HasText("Three Musketeers");
+                    return targetPermanent.TopCard.EqualsTraits("Sup.");
                 }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 4, ignoreDigivolutionRequirement: false, card: card, condition: null));
             }
             #endregion
 
@@ -58,7 +74,7 @@ namespace DCGO.CardEffects.BT21
             #region OnPlay/WhenDigivolving/WhenAttacking shared
             bool CanTuckOrTrash(CardSource cardSource)
             {
-                return card.EqualsTraits("Appmon") || card.HasThreeMusketeersTraits;
+                return cardSource.EqualsTraits("Appmon") || cardSource.HasThreeMusketeersTraits;
             }
             #endregion
 
@@ -373,38 +389,42 @@ namespace DCGO.CardEffects.BT21
 
                             yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
 
+                            Permanent selectedPermanent = null;
+
                             IEnumerator SelectPermanentCoroutine(Permanent permanent)
                             {
-                                Permanent selectedPermanent = permanent;
+                                selectedPermanent = permanent;
 
-                                if (selectedPermanent != null)
-                                {
-                                    yield return ContinuousController.instance.StartCoroutine(selectedPermanent.AddDigivolutionCardsBottom(new List<CardSource>() { selectedCards[0] }, activateClass));
-
-                                    #region Immunities
-
-                                    bool CardEffectCondition(ICardEffect cardEffect)
-                                    {
-                                        return CardEffectCommons.IsOpponentEffect(cardEffect, card);
-                                    }
+                                yield return null;
+                            }
 
-                                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotReturnToHand(
-                                        targetPermanent: card.PermanentOfThisCard(),
-                                        cardEffectCondition: CardEffectCondition,
-                                        effectDuration: EffectDuration.UntilOpponentTurnEnd,
-                                        activateClass: activateClass,
-                                        effectName: "Can't return to hand by opponent's effects"));
+                            if (selectedPermanent != null)
+                            {
+                                yield return ContinuousController.instance.StartCoroutine(selectedPermanent.AddDigivolutionCardsBottom(new List<CardSource>() { selectedCards[0] }, activateClass));
 
-                                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotReturnToDeck(
-                                        targetPermanent: card.PermanentOfThisCard(),
-                                        cardEffectCondition: CardEffectCondition,
-                                        effectDuration: EffectDuration.UntilOpponentTurnEnd,
-                                        activateClass: activateClass,
-                                        effectName: "Can't return to deck by opponent's effects"));
+                                #region Immunities
 
-                                    ActivateDeDigivolveProtection();
-                                    #endregion
+                                bool CardEffectCondition(ICardEffect cardEffect)
+                                {
+                                    return CardEffectCommons.IsOpponentEffect(cardEffect, card);
                                 }
+
+                                yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotReturnToHand(
+                                    targetPermanent: selectedPermanent,
+                                    cardEffectCondition: CardEffectCondition,
+                                    effectDuration: EffectDuration.UntilOpponentTurnEnd,
+                                    activateClass: activateClass,
+                                    effectName: "Can't return to hand by opponent's effects"));
+
+                                yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotReturnToDeck(
+                                    targetPermanent: selectedPermanent,
+                                    cardEffectCondition: CardEffectCondition,
+                                    effectDuration: EffectDuration.UntilOpponentTurnEnd,
+                                    activateClass: activateClass,
+                                    effectName: "Can't return to deck by opponent's effects"));
+
+                                ActivateDeDigivolveProtection();
+                                #endregion
                             }
                         }
                     }
@@ -415,7 +435,16 @@ namespace DCGO.CardEffects.BT21
             #region When Digivolving/When Attacking shared
             bool CanActivateConditionAtkShared(Hashtable hashtable)
             {
-                return isExistOnField(card) && card.PermanentOfThisCard().DigivolutionCards.Some(CanTuckOrTrash);
+                return CardEffectCommons.IsExistOnBattleAreaDigimon(card) && 
+                       card.PermanentOfThisCard().DigivolutionCards.Some(CanTuckOrTrash);
+            }
+
+            bool CanSelectPermanentCondition(Permanent permanent)
+            {
+                if (CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card))
+                    return permanent.DigivolutionCards.Count(CanTuckOrTrash) >= 1;
+
+                return false;
             }
 
             bool DedigivolveTarget(Permanent permanent)
@@ -447,47 +476,24 @@ namespace DCGO.CardEffects.BT21
                 {
                     bool trashed = false;
 
-                    List<CardSource> selectedCards = new List<CardSource>();
-
-                    SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
-
-                    selectCardEffect.SetUp(
-                                canTargetCondition: CanTuckOrTrash,
-                                canTargetCondition_ByPreSelecetedList: null,
-                                canEndSelectCondition: null,
-                                canNoSelect: () => true,
-                                selectCardCoroutine: SelectCardCoroutine,
-                                afterSelectCardCoroutine: null,
-                                message: "Select 1 [Three Musketeers] or [Appmon] card to trash.",
-                                maxCount: 1,
-                                canEndNotMax: false,
-                                isShowOpponent: true,
-                                mode: SelectCardEffect.Mode.Custom,
-                                root: SelectCardEffect.Root.Custom,
-                                customRootCardList: card.PermanentOfThisCard().DigivolutionCards,
-                                canLookReverseCard: true,
-                                selectPlayer: card.Owner,
-                                cardEffect: null);
-
-                    selectCardEffect.SetUpCustomMessage("Select 1 [Three Musketeers] or [Appmon] card to trash.", "The opponent is selecting 1 [Three Musketeers] or [Appmon] card to trash.");
-
-                    yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
-
-                    IEnumerator SelectCardCoroutine(CardSource cardSource)
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.SelectTrashDigivolutionCards(
+                        permanentCondition: CanSelectPermanentCondition,
+                        cardCondition: CanTuckOrTrash,
+                        maxCount: 1,
+                        canNoTrash: false,
+                        isFromOnly1Permanent: false,
+                        activateClass: activateClass,
+                        afterSelectionCoroutine: AfterTrashedCards
+                    ));
+
+                    IEnumerator AfterTrashedCards(Permanent permanent, List<CardSource> cards)
                     {
-                        selectedCards.Add(cardSource);
+                        if(cards.Count > 0)
+                            trashed = true;
 
                         yield return null;
                     }
 
-                    if (selectedCards.Count >= 1)
-                    {
-                        yield return ContinuousController.instance.StartCoroutine(new ITrashDigivolutionCards(card.PermanentOfThisCard(), selectedCards, activateClass).TrashDigivolutionCards());
-
-                        trashed = true;
-                        selectedCards.Clear();
-                    }
-
                     if (trashed)
                     {
                         if (CardEffectCommons.HasMatchConditionPermanent(DedigivolveTarget))
@@ -544,47 +550,24 @@ namespace DCGO.CardEffects.BT21
                 {
                     bool trashed = false;
 
-                    List<CardSource> selectedCards = new List<CardSource>();
-
-                    SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
-
-                    selectCardEffect.SetUp(
-                                canTargetCondition: CanTuckOrTrash,
-                                canTargetCondition_ByPreSelecetedList: null,
-                                canEndSelectCondition: null,
-                                canNoSelect: () => true,
-                                selectCardCoroutine: SelectCardCoroutine,
-                                afterSelectCardCoroutine: null,
-                                message: "Select 1 [Three Musketeers] or [Appmon] card to trash.",
-                                maxCount: 1,
-                                canEndNotMax: false,
-                                isShowOpponent: true,
-                                mode: SelectCardEffect.Mode.Custom,
-                                root: SelectCardEffect.Root.Custom,
-                                customRootCardList: card.PermanentOfThisCard().DigivolutionCards,
-                                canLookReverseCard: true,
-                                selectPlayer: card.Owner,
-                                cardEffect: null);
-
-                    selectCardEffect.SetUpCustomMessage("Select 1 [Three Musketeers] or [Appmon] card to trash.", "The opponent is selecting 1 [Three Musketeers] or [Appmon] card to trash.");
-
-                    yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
-
-                    IEnumerator SelectCardCoroutine(CardSource cardSource)
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.SelectTrashDigivolutionCards(
+                        permanentCondition: CanSelectPermanentCondition,
+                        cardCondition: CanTuckOrTrash,
+                        maxCount: 1,
+                        canNoTrash: false,
+                        isFromOnly1Permanent: false,
+                        activateClass: activateClass,
+                        afterSelectionCoroutine: AfterTrashedCards
+                    ));
+
+                    IEnumerator AfterTrashedCards(Permanent permanent, List<CardSource> cards)
                     {
-                        selectedCards.Add(cardSource);
+                        if (cards.Count > 0)
+                            trashed = true;
 
                         yield return null;
                     }
 
-                    if (selectedCards.Count >= 1)
-                    {
-                        yield return ContinuousController.instance.StartCoroutine(new ITrashDigivolutionCards(card.PermanentOfThisCard(), selectedCards, activateClass).TrashDigivolutionCards());
-
-                        trashed = true;
-                        selectedCards.Clear();
-                    }
-
                     if (trashed)
                     {
                         if (CardEffectCommons.HasMatchConditionPermanent(DedigivolveTarget))
@@ -661,7 +644,7 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return isExistOnField(card) && CardEffectCommons.HasMatchConditionOpponentsPermanent(card, DeletionTargetCondition);
+                    return isExistOnField(card) && CardEffectCommons.HasMatchConditionPermanent(DeletionTargetCondition);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)

+ 6 - 6
Assets/CardEffect/BT21/Purple/BT21_075.cs

@@ -37,7 +37,7 @@ namespace DCGO.CardEffects.BT21
             if(timing == EffectTiming.OnEnterFieldAnyone)
             {
                 ActivateClass activateClass = new ActivateClass();
-                activateClass.SetUpICardEffect("Give raid and retal", CanUseCondition, card);
+                activateClass.SetUpICardEffect("Give Raid and Retaliation", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateConditionShared, ActivateCoroutine, -1, false, EffectDescription());
                 cardEffects.Add(activateClass);
 
@@ -88,12 +88,12 @@ namespace DCGO.CardEffects.BT21
 
                             yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainRaid(
                                 targetPermanent: selectedPermanent,
-                                effectDuration: EffectDuration.UntilEachTurnEnd,
+                                effectDuration: EffectDuration.UntilOpponentTurnEnd,
                                 activateClass: activateClass));
 
                             yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainRetaliation(
                                 targetPermanent: selectedPermanent,
-                                effectDuration: EffectDuration.UntilEachTurnEnd,
+                                effectDuration: EffectDuration.UntilOpponentTurnEnd,
                                 activateClass: activateClass));
                         }
                     }
@@ -105,7 +105,7 @@ namespace DCGO.CardEffects.BT21
             if (timing == EffectTiming.OnEnterFieldAnyone)
             {
                 ActivateClass activateClass = new ActivateClass();
-                activateClass.SetUpICardEffect("Give raid and retal", CanUseCondition, card);
+                activateClass.SetUpICardEffect("Give Raid and Retaliation", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateConditionShared, ActivateCoroutine, -1, false, EffectDescription());
                 cardEffects.Add(activateClass);
 
@@ -156,12 +156,12 @@ namespace DCGO.CardEffects.BT21
 
                             yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainRaid(
                                 targetPermanent: selectedPermanent,
-                                effectDuration: EffectDuration.UntilEachTurnEnd,
+                                effectDuration: EffectDuration.UntilOpponentTurnEnd,
                                 activateClass: activateClass));
 
                             yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainRetaliation(
                                 targetPermanent: selectedPermanent,
-                                effectDuration: EffectDuration.UntilEachTurnEnd,
+                                effectDuration: EffectDuration.UntilOpponentTurnEnd,
                                 activateClass: activateClass));
                         }
                     }

+ 10 - 4
Assets/CardEffect/BT21/Purple/BT21_076.cs

@@ -10,11 +10,16 @@ namespace DCGO.CardEffects.BT21
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-            #region alternative digivolution method
-            if(timing == EffectTiming.None)
+            #region Alternate Digivolution Requirement
+            if (timing == EffectTiming.None)
             {
+                static bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.ContainsCardName("Growlmon") && 
+                           targetPermanent.TopCard.HasLevel && targetPermanent.TopCard.Level == 4;
+                }
 
-                CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanent => permanent.Level == 4 && permanent.TopCard.ContainsCardName("Growlmon"), 3, false, card, null);
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 3, ignoreDigivolutionRequirement: false, card: card, condition: null));
             }
             #endregion
 
@@ -70,7 +75,7 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.CanTriggerOnPlay(hashtable, card);
+                    return CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
@@ -183,6 +188,7 @@ namespace DCGO.CardEffects.BT21
                 }
             }
             #endregion
+
             return cardEffects;
         }
     }

+ 124 - 4
Assets/CardEffect/BT21/Purple/BT21_077.cs

@@ -128,8 +128,68 @@ namespace DCGO.CardEffects.BT21
 
                                 if (selectedPermanent != null)
                                 {
+                                    #region Give Collision
+                                    AddSkillClass addSkillClass = new AddSkillClass();
+                                    addSkillClass.SetUpICardEffect("Gain Collision", CanUseCondition1, card);
+                                    addSkillClass.SetUpAddSkillClass(cardSourceCondition: CardSourceCondition, getEffects: GetEffects);
 
-                                    CardEffectCommons.GainCollision(selectedPermanent, EffectDuration.UntilOpponentTurnEnd, activateClass);
+                                    selectedPermanent.TopCard.Owner.UntilOpponentTurnEndEffects.Add((_timing) => addSkillClass);
+
+                                    bool CanUseCondition1(Hashtable hashtable)
+                                    {
+                                        return true;
+                                    }
+
+                                    bool CardSourceCondition(CardSource cardSource)
+                                    {
+                                        return PermanentCondition(selectedPermanent);
+                                    }
+
+                                    bool PermanentCondition(Permanent permanent)
+                                    {
+                                        if (CardEffectCommons.IsPermanentExistsOnBattleAreaDigimon(permanent))
+                                        {
+                                            if (!permanent.TopCard.CanNotBeAffected(activateClass))
+                                            {
+                                                if (permanent == selectedPermanent)
+                                                    return true;
+                                            }
+                                        }
+
+                                        return false;
+                                    }
+
+                                    List<ICardEffect> GetEffects(CardSource cardSource, List<ICardEffect> cardEffects, EffectTiming _timing)
+                                    {
+                                        if (_timing == EffectTiming.OnCounterTiming)
+                                        {
+                                            bool CardSourceCondition(CardSource cardSource)
+                                            {
+                                                if (CardEffectCommons.IsExistOnBattleAreaDigimon(cardSource))
+                                                {
+                                                    if (cardSource == selectedPermanent.TopCard)
+                                                    {
+                                                        if (PermanentCondition(selectedPermanent))
+                                                        {
+                                                            return true;
+                                                        }
+                                                    }
+                                                }
+
+                                                return false;
+                                            }
+
+                                            bool Condition()
+                                            {
+                                                return CardSourceCondition(cardSource);
+                                            }
+
+                                            cardEffects.Add(CardEffectFactory.CollisionSelfStaticEffect(false, cardSource, Condition));
+                                        }
+
+                                        return cardEffects;
+                                    }
+                                    #endregion
 
                                     ActivateClass activateClassDebuff = new ActivateClass();
                                     activateClassDebuff.SetUpICardEffect("Attack with this Digimon", CanUseConditionDebuff,
@@ -284,8 +344,68 @@ namespace DCGO.CardEffects.BT21
 
                                 if (selectedPermanent != null)
                                 {
+                                    #region Give Collision
+                                    AddSkillClass addSkillClass = new AddSkillClass();
+                                    addSkillClass.SetUpICardEffect("Gain Collision", CanUseCondition1, card);
+                                    addSkillClass.SetUpAddSkillClass(cardSourceCondition: CardSourceCondition, getEffects: GetEffects);
+
+                                    selectedPermanent.TopCard.Owner.UntilOpponentTurnEndEffects.Add((_timing) => addSkillClass);
 
-                                    CardEffectCommons.GainCollision(selectedPermanent, EffectDuration.UntilOpponentTurnEnd, activateClass);
+                                    bool CanUseCondition1(Hashtable hashtable)
+                                    {
+                                        return true;
+                                    }
+
+                                    bool CardSourceCondition(CardSource cardSource)
+                                    {
+                                        return PermanentCondition(selectedPermanent);
+                                    }
+
+                                    bool PermanentCondition(Permanent permanent)
+                                    {
+                                        if (CardEffectCommons.IsPermanentExistsOnBattleAreaDigimon(permanent))
+                                        {
+                                            if (!permanent.TopCard.CanNotBeAffected(activateClass))
+                                            {
+                                                if (permanent == selectedPermanent)
+                                                    return true;
+                                            }
+                                        }
+
+                                        return false;
+                                    }
+
+                                    List<ICardEffect> GetEffects(CardSource cardSource, List<ICardEffect> cardEffects, EffectTiming _timing)
+                                    {
+                                        if (_timing == EffectTiming.OnCounterTiming)
+                                        {
+                                            bool CardSourceCondition(CardSource cardSource)
+                                            {
+                                                if (CardEffectCommons.IsExistOnBattleAreaDigimon(cardSource))
+                                                {
+                                                    if (cardSource == selectedPermanent.TopCard)
+                                                    {
+                                                        if (PermanentCondition(selectedPermanent))
+                                                        {
+                                                            return true;
+                                                        }
+                                                    }
+                                                }
+
+                                                return false;
+                                            }
+
+                                            bool Condition()
+                                            {
+                                                return CardSourceCondition(cardSource);
+                                            }
+
+                                            cardEffects.Add(CardEffectFactory.CollisionSelfStaticEffect(false, cardSource, Condition));
+                                        }
+
+                                        return cardEffects;
+                                    }
+                                    #endregion
 
                                     ActivateClass activateClassDebuff = new ActivateClass();
                                     activateClassDebuff.SetUpICardEffect("Attack with this Digimon", CanUseConditionDebuff,
@@ -449,7 +569,7 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.CanActivateOnDeletionInherited(hashtable, card);
+                    return CardEffectCommons.CanTriggerOnDeletion(hashtable, card);
                 }
 
                 bool CanPlay(CardSource cardSource)
@@ -460,7 +580,7 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.CanTriggerOnDeletion(hashtable, card) && CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanPlay);
+                    return CardEffectCommons.CanActivateOnDeletionInherited(hashtable, card) && CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanPlay);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)

+ 4 - 2
Assets/CardEffect/BT21/Purple/BT21_079.cs

@@ -2,6 +2,7 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
+using UnityEngine;
 
 namespace DCGO.CardEffects.BT21
 {
@@ -103,7 +104,7 @@ namespace DCGO.CardEffects.BT21
 
                 int Count()
                 {
-                    return (card.Owner.TrashCards.Count + card.Owner.Enemy.TrashCards.Count) / 10;
+                    return Mathf.FloorToInt((card.Owner.TrashCards.Count + card.Owner.Enemy.TrashCards.Count) / 10);
                 }
 
                 bool CanUseCondition(Hashtable hashtable)
@@ -120,7 +121,7 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) && CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanSelectCardCondition);
+                    return CardEffectCommons.CanActivateOnDeletion(card) && CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanSelectCardCondition);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
@@ -174,6 +175,7 @@ namespace DCGO.CardEffects.BT21
                 }
             }
             #endregion
+
             return cardEffects;
         }
     }

+ 6 - 10
Assets/CardEffect/BT21/Purple/BT21_089.cs

@@ -11,7 +11,6 @@ namespace DCGO.CardEffects.BT21
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-
             #region Start of Main Phase
             if (timing == EffectTiming.OnStartMainPhase)
             {
@@ -71,7 +70,7 @@ namespace DCGO.CardEffects.BT21
 
                 string EffectDescription()
                 {
-                    return "[All Turns] When any of your Digimon are played or digivolve, by suspending this Tamer, until your opponent's turn ends, 1 of your Digimon with [Guilmon], [Growlmon], [Gallantmon], or [Megidramon] in its name or the [Hero] trait gains <Blocker> and, it here are 10 or more total cards in both players' trashes, gets + 2000 DP.";
+                    return "[All Turns] When any of your Digimon are played or digivolve, by suspending this Tamer, until your opponent's turn ends, 1 of your Digimon with [Guilmon], [Growlmon], [Gallantmon], or [Megidramon] in its name or the [Hero] trait gains <Blocker> and, it here are 10 or more total cards in both players' trashes, gets +2000 DP.";
                 }
 
                 bool MyDigimonPlayedDigid(Permanent permanent)
@@ -81,16 +80,13 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
+                    if (isExistOnField(card))
                     {
-                        if (CardEffectCommons.IsOwnerTurn(card))
-                        {
-                            if (CardEffectCommons.CanTriggerOnPermanentPlay(hashtable, MyDigimonPlayedDigid))
-                                return true;
+                        if (CardEffectCommons.CanTriggerOnPermanentPlay(hashtable, MyDigimonPlayedDigid))
+                            return true;
 
-                            if (CardEffectCommons.CanTriggerWhenPermanentDigivolving(hashtable, MyDigimonPlayedDigid))
-                                return true;
-                        }
+                        if (CardEffectCommons.CanTriggerWhenPermanentDigivolving(hashtable, MyDigimonPlayedDigid))
+                            return true;
                     }
 
                     return false;

+ 2 - 2
Assets/CardEffect/BT21/Purple/BT21_100.cs

@@ -36,7 +36,6 @@ namespace DCGO.CardEffects.BT21
             }
             #endregion
 
-
             #region Main
             if (timing == EffectTiming.OptionSkill)
             {
@@ -108,7 +107,8 @@ namespace DCGO.CardEffects.BT21
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.CanDeclareOptionDelayEffect(card) &&
+                    return CardEffectCommons.IsOwnerTurn(card) &&
+                           CardEffectCommons.CanDeclareOptionDelayEffect(card) &&
                            CardEffectCommons.CanTriggerOnPermanentDeleted(hashtable, TriggerPermanentCondition) &&
                            CardEffectCommons.IsByEffect(hashtable, null);
                 }

+ 116 - 0
Assets/CardEffect/BT21/Red/BT21_001.cs

@@ -0,0 +1,116 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+//Gigimon
+namespace DCGO.CardEffects.BT21
+{
+    public class BT21_001 : CEntity_Effect
+    {
+        public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+        {
+            List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+            #region Your Turn - ESS
+
+            if (timing == EffectTiming.OnLoseSecurity)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Digivolve a digimon", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, true, EffectDescription());
+                activateClass.SetIsInheritedEffect(true);
+                activateClass.SetHashString("Digivolve_BT21_001");
+                cardEffects.Add(activateClass);
+
+                string EffectDescription()
+                    => "[Your Turn] [Once Per Turn] When your opponent's security stack is removed from, 1 of your Digimon may digivolve into a Digimon card with the [Reptile]/[Dragonkin] trait in the hand with the digivolution cost reduced by 1.";
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
+                    {
+                        if (CardEffectCommons.CanTriggerWhenLoseSecurity(hashtable, player => player == card.Owner.Enemy))
+                        {
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+
+                bool CanSelectDigivolvePermanent(Permanent permanent)
+                {
+                    if (CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card))
+                    {
+                        return true;
+                    }
+                    return false;
+                }
+
+                bool CanSelectCardCondition(CardSource digivolveTarget, Permanent digivolvingTarget)
+                {
+                    if (digivolveTarget.CardTraits.FirstOrDefault(x => x.Equals("Reptile")) != null || digivolveTarget.CardTraits.FirstOrDefault(x => x.Equals("Dragonkin")) != null)
+                    {
+                        if (digivolveTarget.CanPlayCardTargetFrame(digivolvingTarget.PermanentFrame, true, activateClass))
+                        {
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    Permanent selectedPermanent = null;
+                    int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectDigivolvePermanent));
+                    SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                    selectPermanentEffect.SetUp(
+                        selectPlayer: card.Owner,
+                        canTargetCondition: CanSelectDigivolvePermanent,
+                        canTargetCondition_ByPreSelecetedList: null,
+                        canEndSelectCondition: null,
+                        maxCount: maxCount,
+                        canNoSelect: true,
+                        canEndNotMax: false,
+                        selectPermanentCoroutine: SelectPermanentCoroutine,
+                        afterSelectPermanentCoroutine: null,
+                        mode: SelectPermanentEffect.Mode.Custom,
+                        cardEffect: activateClass);
+
+                    selectPermanentEffect.SetUpCustomMessage("Select 1 digimon to digivolve", "The opponent is selecting 1 digimon to digivolve");
+                    yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
+                    IEnumerator SelectPermanentCoroutine(Permanent permanent)
+                    {
+                        selectedPermanent = permanent;
+                        yield return null;
+                    }
+
+                    if (selectedPermanent != null)
+                    {
+                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DigivolveIntoHandOrTrashCard(
+                                targetPermanent: selectedPermanent,
+                                cardCondition: (cardSource) => CanSelectCardCondition(cardSource, selectedPermanent),
+                                payCost: true,
+                                reduceCostTuple: (reduceCost: 1, reduceCostCardCondition: null),
+                                fixedCostTuple: null,
+                                ignoreDigivolutionRequirementFixedCost: -1,
+                                isHand: true,
+                                activateClass: activateClass,
+                                successProcess: null));
+                    }
+                }
+            }
+
+            #endregion
+
+            return cardEffects;
+        }
+    }
+}

+ 11 - 0
Assets/CardEffect/BT21/Red/BT21_001.cs.meta

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

+ 60 - 0
Assets/CardEffect/BT21/Red/BT21_002.cs

@@ -0,0 +1,60 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+//Gurimon
+namespace DCGO.CardEffects.BT21
+{
+    public class BT21_002 : CEntity_Effect
+    {
+        public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+        {
+            List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+            #region Your Turn - ESS
+
+            if (timing == EffectTiming.OnAllyAttack)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Draw a card", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, false, EffectDescription());
+                activateClass.SetIsInheritedEffect(true);
+                activateClass.SetHashString("Draw_BT21_002");
+                cardEffects.Add(activateClass);
+
+                string EffectDescription()
+                    => "[When Attacking] [Once Per Turn] If this Digimon has [Gammamon] in its text or the [Hero] trait, <Draw 1> (Draw 1 card from your deck).";
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
+                    {
+                        if (CardEffectCommons.CanTriggerOnAttack(hashtable, card))
+                        {
+                            if (card.PermanentOfThisCard().TopCard.HasText("Gammamon") || card.PermanentOfThisCard().TopCard.CardTraits.FirstOrDefault(x => x.Equals("Hero")) != null)
+                            {
+                                return true;
+                            }
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    yield return ContinuousController.instance.StartCoroutine(new DrawClass(card.Owner, 1, activateClass).Draw());
+                }
+            }
+
+            #endregion
+
+            return cardEffects;
+        }
+    }
+}

+ 11 - 0
Assets/CardEffect/BT21/Red/BT21_002.cs.meta

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

+ 111 - 0
Assets/CardEffect/BT21/Red/BT21_007.cs

@@ -0,0 +1,111 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+//Agumon
+namespace DCGO.CardEffects.BT21
+{
+    public class BT21_007 : CEntity_Effect
+    {
+        public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+        {
+            List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+            #region On Play
+
+            if (timing == EffectTiming.OnEnterFieldAnyone)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Return a card from trash", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDescription());
+                cardEffects.Add(activateClass);
+
+                string EffectDescription()
+                    => "[On Play] You may return 1 Digimon card with the [Reptile]/[Dragonkin] trait from your trash to the hand.";
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
+                    {
+                        if (CardEffectCommons.CanTriggerOnPlay(hashtable, card))
+                        {
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
+                }
+
+                bool CanSelectCardCondition(CardSource cardSource)
+                {
+                    if (cardSource.CardTraits.Find(x => x.Equals("Reptile")) != null || cardSource.CardTraits.Find(x => x.Equals("Dragonkin")) != null)
+                    {
+                        return true;
+                    }
+                    return false;
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanSelectCardCondition))
+                    {
+                        int maxCount = Math.Min(1, card.Owner.TrashCards.Count(CanSelectCardCondition));
+
+                        SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
+
+                        selectCardEffect.SetUp(
+                            canTargetCondition: CanSelectCardCondition,
+                            canTargetCondition_ByPreSelecetedList: null,
+                            canEndSelectCondition: null,
+                            canNoSelect: () => true,
+                            selectCardCoroutine: null,
+                            afterSelectCardCoroutine: null,
+                            message: "Select 1 card to add to your hand.",
+                            maxCount: maxCount,
+                            canEndNotMax: false,
+                            isShowOpponent: true,
+                            mode: SelectCardEffect.Mode.AddHand,
+                            root: SelectCardEffect.Root.Trash,
+                            customRootCardList: null,
+                            canLookReverseCard: true,
+                            selectPlayer: card.Owner,
+                            cardEffect: activateClass);
+
+                        yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
+                    }
+                }
+            }
+
+            #endregion
+
+            #region ESS
+
+            if (timing == EffectTiming.None)
+            {
+                bool Condition()
+                {
+                    if (CardEffectCommons.IsExistOnBattleArea(card))
+                    {
+                        if (CardEffectCommons.IsOwnerTurn(card))
+                        {
+                            return true;
+                        }
+                    }
+
+                    return false;
+                }
+
+                cardEffects.Add(CardEffectFactory.ChangeSelfDPStaticEffect(changeValue: 2000, isInheritedEffect: true, card: card, condition: Condition));
+            }
+
+            #endregion
+
+            return cardEffects;
+        }
+    }
+}

+ 11 - 0
Assets/CardEffect/BT21/Red/BT21_007.cs.meta

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

+ 157 - 0
Assets/CardEffect/BT21/Red/BT21_008.cs

@@ -0,0 +1,157 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+// Elizamon
+namespace DCGO.CardEffects.BT21
+{
+    public class BT21_008 : CEntity_Effect
+    {
+        public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+        {
+            List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+            #region On Play
+
+            if (timing == EffectTiming.OnEnterFieldAnyone)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Reveal top 3, Add Reptile/Dragonkin & 1 Liberator", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
+                cardEffects.Add(activateClass);
+
+                string EffectDiscription()
+                    => "[On Play] Reveal the top 3 cards of your deck. Add 1 card with the [Reptile]/[Dragonkin] trait and 1 card with the [LIBERATOR] trait among them to the hand. Return the rest to the bottom of the deck.";
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
+                    {
+                        if (CardEffectCommons.CanTriggerOnPlay(hashtable, card))
+                        {
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
+                    {
+                        return true;
+                    }
+
+                    return false;
+                }
+
+                bool CanSelectCardCondition(CardSource cardSource, int searchOption)
+                {
+                    if (searchOption == 1)
+                    {
+                        if (cardSource.EqualsTraits("Reptile"))
+                        {
+                            return true;
+                        }
+                        if (cardSource.EqualsTraits("Dragonkin"))
+                        {
+                            return true;
+                        }
+                    }
+                    if (searchOption == 2)
+                    {
+                        if (cardSource.EqualsTraits("LIBERATOR"))
+                        {
+                            return true;
+                        }
+                    }
+
+                    return false;
+                }
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.SimplifiedRevealDeckTopCardsAndSelect(
+                        revealCount: 3,
+                        simplifiedSelectCardConditions:
+                        new SimplifiedSelectCardConditionClass[]
+                        {
+                        new SimplifiedSelectCardConditionClass(
+                            canTargetCondition: cardsource => CanSelectCardCondition(cardsource, 1),
+                            message: "Select 1 card with [Reptile] or [Dragonkin] in its traits.",
+                            mode: SelectCardEffect.Mode.AddHand,
+                            maxCount: 1,
+                            selectCardCoroutine: null),
+                        new SimplifiedSelectCardConditionClass(
+                            canTargetCondition: cardsource => CanSelectCardCondition(cardsource, 2),
+                            message: "Select 1 card with [LIBERATOR] in its traits.",
+                            mode: SelectCardEffect.Mode.AddHand,
+                            maxCount: 1,
+                            selectCardCoroutine: null),
+                        },
+                        remainingCardsPlace: RemainingCardsPlace.DeckBottom,
+                        activateClass: activateClass
+                    ));
+                }
+            }
+
+            #endregion
+
+            #region Your Turn (ESS)
+
+            if (timing == EffectTiming.OnLoseSecurity)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Gain 1 memory", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, false, EffectDiscription());
+                activateClass.SetIsInheritedEffect(true);
+                activateClass.SetHashString("GainMemory_BT21_008");
+                cardEffects.Add(activateClass);
+
+                string EffectDiscription()
+                    => "[Your Turn] [Once Per Turn] When your opponent's security stack is removed from, gain 1 memory.";
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
+                    {
+                        if (CardEffectCommons.CanTriggerWhenLoseSecurity(hashtable, PlayerCondition))
+                        {
+                            if (CardEffectCommons.IsOwnerTurn(card))
+                            {
+                                return true;
+                            }
+                        }
+                    }
+                    return false;
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
+                    {
+                        return true;
+                    }
+                    return false;
+                }
+
+                bool PlayerCondition(Player player)
+                {
+                    if (player == card.Owner.Enemy)
+                    {
+                        return true;
+                    }
+                    return false;
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(1, activateClass));
+                }
+            }
+
+            #endregion
+
+            return cardEffects;
+        }
+    }
+}

+ 11 - 0
Assets/CardEffect/BT21/Red/BT21_008.cs.meta

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

部分文件因为文件数量过多而无法显示