Explorar el Código

Merge branch 'develop' into improved_capacity

Llandy Riveron Del Risco hace 4 meses
padre
commit
09e5794a9a
Se han modificado 99 ficheros con 2586 adiciones y 63 borrados
  1. 8 0
      Assets/CardBaseEntity/BT25.meta
  2. 8 0
      Assets/CardBaseEntity/BT25/Purple.meta
  3. 8 0
      Assets/CardBaseEntity/BT25/Purple/Digimon.meta
  4. 3 0
      Assets/CardBaseEntity/BT25/Purple/Digimon/BT25_085.asset
  5. 8 0
      Assets/CardBaseEntity/BT25/Purple/Digimon/BT25_085.asset.meta
  6. 3 0
      Assets/CardBaseEntity/BT25/Purple/Digimon/BT25_085_P1.asset
  7. 8 0
      Assets/CardBaseEntity/BT25/Purple/Digimon/BT25_085_P1.asset.meta
  8. 8 0
      Assets/CardBaseEntity/BT25/Red.meta
  9. 8 0
      Assets/CardBaseEntity/BT25/Red/Digimon.meta
  10. 3 0
      Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104.asset
  11. 8 0
      Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104.asset.meta
  12. 3 0
      Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104_P1.asset
  13. 8 0
      Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104_P1.asset.meta
  14. 3 0
      Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104_P2.asset
  15. 8 0
      Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104_P2.asset.meta
  16. 8 0
      Assets/CardBaseEntity/BT25/Unknown.meta
  17. 8 0
      Assets/CardBaseEntity/BT25/Unknown/Tamer.meta
  18. 3 0
      Assets/CardBaseEntity/BT25/Unknown/Tamer/BT25_057.asset
  19. 8 0
      Assets/CardBaseEntity/BT25/Unknown/Tamer/BT25_057.asset.meta
  20. 1 1
      Assets/CardBaseEntity/CardEntity_JSONLoader.asset
  21. 8 0
      Assets/CardBaseEntity/ST24.meta
  22. 8 0
      Assets/CardBaseEntity/ST24/Blue.meta
  23. 8 0
      Assets/CardBaseEntity/ST24/Blue/Digimon.meta
  24. 3 0
      Assets/CardBaseEntity/ST24/Blue/Digimon/ST24_02.asset
  25. 8 0
      Assets/CardBaseEntity/ST24/Blue/Digimon/ST24_02.asset.meta
  26. 3 0
      Assets/CardBaseEntity/ST24/Blue/Digimon/ST24_03.asset
  27. 8 0
      Assets/CardBaseEntity/ST24/Blue/Digimon/ST24_03.asset.meta
  28. 8 0
      Assets/CardBaseEntity/ST24/Green.meta
  29. 8 0
      Assets/CardBaseEntity/ST24/Green/Digimon.meta
  30. 3 0
      Assets/CardBaseEntity/ST24/Green/Digimon/ST24_08.asset
  31. 8 0
      Assets/CardBaseEntity/ST24/Green/Digimon/ST24_08.asset.meta
  32. 3 0
      Assets/CardBaseEntity/ST24/Green/Digimon/ST24_09.asset
  33. 8 0
      Assets/CardBaseEntity/ST24/Green/Digimon/ST24_09.asset.meta
  34. 3 0
      Assets/CardBaseEntity/ST24/Green/Digimon/ST24_10.asset
  35. 8 0
      Assets/CardBaseEntity/ST24/Green/Digimon/ST24_10.asset.meta
  36. 3 0
      Assets/CardBaseEntity/ST24/Green/Digimon/ST24_11.asset
  37. 8 0
      Assets/CardBaseEntity/ST24/Green/Digimon/ST24_11.asset.meta
  38. 8 0
      Assets/CardBaseEntity/ST24/Green/Tamer.meta
  39. 3 0
      Assets/CardBaseEntity/ST24/Green/Tamer/ST24_14.asset
  40. 8 0
      Assets/CardBaseEntity/ST24/Green/Tamer/ST24_14.asset.meta
  41. 8 0
      Assets/CardBaseEntity/ST24/Purple.meta
  42. 8 0
      Assets/CardBaseEntity/ST24/Purple/Digimon.meta
  43. 3 0
      Assets/CardBaseEntity/ST24/Purple/Digimon/ST24_12.asset
  44. 8 0
      Assets/CardBaseEntity/ST24/Purple/Digimon/ST24_12.asset.meta
  45. 8 0
      Assets/CardBaseEntity/ST24/White.meta
  46. 8 0
      Assets/CardBaseEntity/ST24/White/Option.meta
  47. 3 0
      Assets/CardBaseEntity/ST24/White/Option/ST24_15.asset
  48. 8 0
      Assets/CardBaseEntity/ST24/White/Option/ST24_15.asset.meta
  49. 8 0
      Assets/CardBaseEntity/ST24/Yellow.meta
  50. 8 0
      Assets/CardBaseEntity/ST24/Yellow/DigiEgg.meta
  51. 3 0
      Assets/CardBaseEntity/ST24/Yellow/DigiEgg/ST24_01.asset
  52. 8 0
      Assets/CardBaseEntity/ST24/Yellow/DigiEgg/ST24_01.asset.meta
  53. 8 0
      Assets/CardBaseEntity/ST24/Yellow/Digimon.meta
  54. 3 0
      Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_04.asset
  55. 8 0
      Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_04.asset.meta
  56. 3 0
      Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_05.asset
  57. 8 0
      Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_05.asset.meta
  58. 3 0
      Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_06.asset
  59. 8 0
      Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_06.asset.meta
  60. 3 0
      Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_07.asset
  61. 8 0
      Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_07.asset.meta
  62. 8 0
      Assets/CardBaseEntity/ST24/Yellow/Tamer.meta
  63. 3 0
      Assets/CardBaseEntity/ST24/Yellow/Tamer/ST24_13.asset
  64. 8 0
      Assets/CardBaseEntity/ST24/Yellow/Tamer/ST24_13.asset.meta
  65. 3 10
      Assets/Editor/JSONLoader_CardEntity.cs
  66. 721 2
      Assets/Prefab/GameplayPanel.prefab
  67. 43 1
      Assets/Scenes/ContinuousControllerScene.unity
  68. 45 8
      Assets/Scenes/Opening.unity
  69. 1 1
      Assets/Scripts/CardEffect/BT22/White/BT22_094.cs
  70. 8 0
      Assets/Scripts/CardEffect/BT25/Green.meta
  71. 11 0
      Assets/Scripts/CardEffect/BT25/Green/BT25_004.cs.meta
  72. 2 2
      Assets/Scripts/CardEffect/EX9/White/EX9_069.cs
  73. 275 0
      Assets/Scripts/CardEffect/ST24/Green/ST24_10.cs
  74. 11 0
      Assets/Scripts/CardEffect/ST24/Green/ST24_10.cs.meta
  75. 216 0
      Assets/Scripts/CardEffect/ST24/Green/ST24_11.cs
  76. 11 0
      Assets/Scripts/CardEffect/ST24/Green/ST24_11.cs.meta
  77. 150 0
      Assets/Scripts/CardEffect/ST24/Green/ST24_14.cs
  78. 11 0
      Assets/Scripts/CardEffect/ST24/Green/ST24_14.cs.meta
  79. 8 0
      Assets/Scripts/CardEffect/ST24/Purple.meta
  80. 11 0
      Assets/Scripts/CardEffect/ST24/Purple/ST24_12.cs.meta
  81. 8 0
      Assets/Scripts/CardEffect/ST24/White.meta
  82. 235 0
      Assets/Scripts/CardEffect/ST24/White/ST24_15.cs
  83. 11 0
      Assets/Scripts/CardEffect/ST24/White/ST24_15.cs.meta
  84. 11 0
      Assets/Scripts/CardEffect/ST24/Yellow/ST24_06.cs.meta
  85. 161 0
      Assets/Scripts/CardEffect/ST24/Yellow/ST24_13.cs
  86. 11 0
      Assets/Scripts/CardEffect/ST24/Yellow/ST24_13.cs.meta
  87. 1 0
      Assets/Scripts/Script/CEntity_Base.cs
  88. 11 0
      Assets/Scripts/Script/CardEffectCommons/CanUseEffects/WhenWouldLink.cs.meta
  89. 11 0
      Assets/Scripts/Script/CardEffects/ChangeLinkCostClass.cs.meta
  90. 41 5
      Assets/Scripts/Script/ContinuousController.cs
  91. 79 24
      Assets/Scripts/Script/DeckBuildingRule.cs
  92. 1 0
      Assets/Scripts/Script/EnterRoom.cs
  93. 32 0
      Assets/Scripts/Script/GameplayOption.cs
  94. 24 0
      Assets/Scripts/Script/Helper Scripts/DisableForBanlist.cs
  95. 11 0
      Assets/Scripts/Script/Helper Scripts/DisableForBanlist.cs.meta
  96. 1 0
      Assets/Scripts/Script/OptionUtility.cs
  97. 6 5
      Assets/Scripts/Script/RoomManager.cs
  98. 3 3
      Assets/Scripts/Script/YesNoObject.cs
  99. 1 1
      ProjectSettings/ProjectSettings.asset

+ 8 - 0
Assets/CardBaseEntity/BT25.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1dec288baa7ea7343b305c98ce9151e2
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/CardBaseEntity/BT25/Purple.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3ad4af90f18fbc04c936cd641a2a3bd3
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/CardBaseEntity/BT25/Purple/Digimon.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cfc6966ad7f7f1a4a9e595f475319169
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/BT25/Purple/Digimon/BT25_085.asset

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

+ 8 - 0
Assets/CardBaseEntity/BT25/Purple/Digimon/BT25_085.asset.meta

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

+ 3 - 0
Assets/CardBaseEntity/BT25/Purple/Digimon/BT25_085_P1.asset

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

+ 8 - 0
Assets/CardBaseEntity/BT25/Purple/Digimon/BT25_085_P1.asset.meta

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

+ 8 - 0
Assets/CardBaseEntity/BT25/Red.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 53ceed436d901764691fbfb7d600f6fe
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/CardBaseEntity/BT25/Red/Digimon.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b87cd1c45dd698b449d134b86358269c
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104.asset

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

+ 8 - 0
Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104.asset.meta

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

+ 3 - 0
Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104_P1.asset

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

+ 8 - 0
Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104_P1.asset.meta

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

+ 3 - 0
Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104_P2.asset

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

+ 8 - 0
Assets/CardBaseEntity/BT25/Red/Digimon/BT25_104_P2.asset.meta

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

+ 8 - 0
Assets/CardBaseEntity/BT25/Unknown.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1761712d451dd244b8ec6a7d4f072435
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/CardBaseEntity/BT25/Unknown/Tamer.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3cb84f37454f0fa438b9eece7d0e3dc6
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/BT25/Unknown/Tamer/BT25_057.asset

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

+ 8 - 0
Assets/CardBaseEntity/BT25/Unknown/Tamer/BT25_057.asset.meta

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

+ 1 - 1
Assets/CardBaseEntity/CardEntity_JSONLoader.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3ce86ac38e4fd9e45b5d7324b12d20e4
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/CardBaseEntity/ST24/Blue.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e1b8e26fdd60d8648a56b649caf14a46
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/CardBaseEntity/ST24/Blue/Digimon.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 702f289789c739b42b4ec4d9dc21aad5
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/ST24/Blue/Digimon/ST24_02.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Blue/Digimon/ST24_02.asset.meta

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

+ 3 - 0
Assets/CardBaseEntity/ST24/Blue/Digimon/ST24_03.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Blue/Digimon/ST24_03.asset.meta

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Green.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: efabd570293a73f42b2de66c6951a047
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/CardBaseEntity/ST24/Green/Digimon.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 27050d5ea66cef24f81cf636bed58946
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/ST24/Green/Digimon/ST24_08.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Green/Digimon/ST24_08.asset.meta

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

+ 3 - 0
Assets/CardBaseEntity/ST24/Green/Digimon/ST24_09.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Green/Digimon/ST24_09.asset.meta

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

+ 3 - 0
Assets/CardBaseEntity/ST24/Green/Digimon/ST24_10.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Green/Digimon/ST24_10.asset.meta

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

+ 3 - 0
Assets/CardBaseEntity/ST24/Green/Digimon/ST24_11.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Green/Digimon/ST24_11.asset.meta

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Green/Tamer.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 556650e967216ff4bbbef43b8e591f2e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/ST24/Green/Tamer/ST24_14.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Green/Tamer/ST24_14.asset.meta

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Purple.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eda1606ba97bda347a5e67f8ec0df48e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/CardBaseEntity/ST24/Purple/Digimon.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b9f02dbc8acb5ed40bb5dc6fb9330608
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/ST24/Purple/Digimon/ST24_12.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Purple/Digimon/ST24_12.asset.meta

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

+ 8 - 0
Assets/CardBaseEntity/ST24/White.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 06dd61d4a88cd3343accc9d7ef245f3c
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/CardBaseEntity/ST24/White/Option.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4500cffc28a419047a4ec5442be0ccf2
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/ST24/White/Option/ST24_15.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/White/Option/ST24_15.asset.meta

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Yellow.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 011f0c335a5829845899d05dcf58e798
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/CardBaseEntity/ST24/Yellow/DigiEgg.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 795fcc225bbe07849afa93bb72c6407d
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/ST24/Yellow/DigiEgg/ST24_01.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Yellow/DigiEgg/ST24_01.asset.meta

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Yellow/Digimon.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8656ed4b525398646ba951fdce8c8a67
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_04.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_04.asset.meta

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

+ 3 - 0
Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_05.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_05.asset.meta

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

+ 3 - 0
Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_06.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_06.asset.meta

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

+ 3 - 0
Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_07.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Yellow/Digimon/ST24_07.asset.meta

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Yellow/Tamer.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 55c75fe9d34d9324c820d84a058ff133
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/CardBaseEntity/ST24/Yellow/Tamer/ST24_13.asset

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

+ 8 - 0
Assets/CardBaseEntity/ST24/Yellow/Tamer/ST24_13.asset.meta

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

+ 3 - 10
Assets/Editor/JSONLoader_CardEntity.cs

@@ -153,14 +153,13 @@ namespace DCGO.CardEntities
             cardEntity.rarity = card.rarity.Equals("-") ? Rarity.None : (Rarity)Enum.Parse(typeof(Rarity), card.rarity);
             cardEntity.OverflowMemory = GetOverflowMemory(card.aceEffect);
             cardEntity.CardID = card.id;
-            cardEntity.MaxCountInDeck = GetMaxCount(card.restrictions.japanese, card.rule);
+            cardEntity.MaxCountInDeck = GetMaxCount(card.rule);
 
             cardEntity.LinkDP = dpParse(card.linkDP);
             cardEntity.LinkEffect = card.linkEffect;
             cardEntity.LinkRequirement = card.linkRequirement;
 
-            if(!card.dualEffect.IsNullOrEmpty())
-                cardEntity.dualEffect = GetName(card.name.english, false);
+           cardEntity.dualEffect = GetName(card.name.english, card.dualEffect.Equals("-"));
 
             Debug.Log(card.optionCardColourRequirement);
             cardEntity.OptionCardColorRequirements = GetCardColors(card.optionCardColourRequirement);
@@ -485,19 +484,13 @@ namespace DCGO.CardEntities
         }
 
         //Parse Max count in deck
-        int GetMaxCount(string restriction, string rule)
+        int GetMaxCount(string rule)
         {
             int value = 4;
 
             if (!String.IsNullOrEmpty(rule))
                 value = GetRuleMaxCount(rule);
 
-            if (restriction == "Banned")
-                value = 0;
-
-            if(restriction.StartsWith("Restricted"))
-                value = int.Parse(restriction.Substring(restriction.Length-1));
-
             return value;
         }
 

+ 721 - 2
Assets/Prefab/GameplayPanel.prefab

@@ -1,5 +1,479 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1399064674785651421
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8853518533412852053}
+  - component: {fileID: 8974717522652312775}
+  - component: {fileID: 7196561184119063763}
+  m_Layer: 5
+  m_Name: Label
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &8853518533412852053
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1399064674785651421}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 3862088377832865129}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 237.1, y: -0.5}
+  m_SizeDelta: {x: 196.51428, y: -3}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8974717522652312775
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1399064674785651421}
+  m_CullTransparentMesh: 0
+--- !u!114 &7196561184119063763
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1399064674785651421}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.7529412, g: 0.8392157, b: 0.9254902, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 385dce3fc9f7d434cb640e4d4d497263, type: 3}
+    m_FontSize: 36
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 3
+    m_MaxSize: 40
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: Switch_01
+--- !u!1 &4716808989185113691
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5739861113118089730}
+  - component: {fileID: 1847293459004985172}
+  - component: {fileID: 2082970149860354237}
+  - component: {fileID: 4232169421690341382}
+  - component: {fileID: 6645150066648278333}
+  m_Layer: 5
+  m_Name: TtitleText
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5739861113118089730
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4716808989185113691}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.2, y: 0.2, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2643633776091544438}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: -73.3, y: -0.0000076293945}
+  m_SizeDelta: {x: 1474.7, y: 148}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &1847293459004985172
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4716808989185113691}
+  m_CullTransparentMesh: 0
+--- !u!114 &2082970149860354237
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4716808989185113691}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 2100000, guid: 5e887a426c49a6748a021b8426a3cd53, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 31e9027949eff3b40a1e5d085e0a9935, type: 3}
+    m_FontSize: 120
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 300
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: Enable Banlist - Disables random matchmaking
+--- !u!114 &4232169421690341382
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4716808989185113691}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_EffectColor: {r: 0, g: 0.6165807, b: 1, a: 1}
+  m_EffectDistance: {x: 3, y: -3}
+  m_UseGraphicAlpha: 1
+--- !u!114 &6645150066648278333
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4716808989185113691}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 7958ec3f63b47324fa381152fb9ef2b2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  _fontMaterial_ENG: {fileID: 0}
+  _fontMaterial_JPN: {fileID: 0}
+  _font_ENG: {fileID: 12800000, guid: 31e9027949eff3b40a1e5d085e0a9935, type: 3}
+  _font_JPN: {fileID: 12800000, guid: 2f11c82edd19dad4bab7cebf6c7e61af, type: 3}
+  _fontSize_ENG: 120
+  _fontSize_JPN: 120
+  _text_ENG: Enable Banlist - Disables random matchmaking
+  _text_JPN: "\u7981\u6B62\u30EA\u30B9\u30C8\u3092\u6709\u52B9\u5316 \u2014 \u30E9\u30F3\u30C0\u30E0\u30DE\u30C3\u30C1\u30E1\u30A4\u30AD\u30F3\u30B0\u3092\u7121\u52B9\u306B\u3057\u307E\u3059"
+--- !u!1 &4866768862336323155
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 327947588219839728}
+  - component: {fileID: 2211690571409201864}
+  - component: {fileID: 2402828971342875976}
+  m_Layer: 5
+  m_Name: Background
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &327947588219839728
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4866768862336323155}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 3346079383509508976}
+  m_Father: {fileID: 3862088377832865129}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 120, y: 48}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2211690571409201864
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4866768862336323155}
+  m_CullTransparentMesh: 0
+--- !u!114 &2402828971342875976
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4866768862336323155}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 0ba5a7c179c59a742979b665a4359f7c, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &6204511538938132258
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3862088377832865129}
+  - component: {fileID: 6605809134732779800}
+  m_Layer: 5
+  m_Name: BanlistToggle
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3862088377832865129
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6204511538938132258}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 327947588219839728}
+  - {fileID: 8853518533412852053}
+  m_Father: {fileID: 2643633776091544438}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: -157.4, y: 0}
+  m_SizeDelta: {x: 120, y: 48}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &6605809134732779800
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6204511538938132258}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 2402828971342875976}
+  toggleTransition: 1
+  graphic: {fileID: 1264014670078919623}
+  m_Group: {fileID: 0}
+  onValueChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_IsOn: 1
+--- !u!1 &6701951063145432488
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8577515006174853630}
+  - component: {fileID: 1948442450806189145}
+  - component: {fileID: 5552503986355341603}
+  m_Layer: 5
+  m_Name: Icon (1)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &8577515006174853630
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6701951063145432488}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.8, y: 1.8, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2643633776091544438}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: -150.8, y: 0}
+  m_SizeDelta: {x: 25, y: 25}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1948442450806189145
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6701951063145432488}
+  m_CullTransparentMesh: 0
+--- !u!114 &5552503986355341603
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6701951063145432488}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 335e4fd0e3499ed4994253ba2f13e079, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &7238267468042061028
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3100428799753360437}
+  m_Layer: 5
+  m_Name: Banlist Active
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3100428799753360437
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7238267468042061028}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.8999999, y: 0.8999999, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 2643633776091544438}
+  m_Father: {fileID: 7928374915483524064}
+  m_RootOrder: 11
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &7928374914713416429
 GameObject:
   m_ObjectHideFlags: 0
@@ -2022,7 +2496,7 @@ CanvasRenderer:
   m_CullTransparentMesh: 0
 --- !u!95 &7928374915095919511
 Animator:
-  serializedVersion: 4
+  serializedVersion: 5
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
@@ -2039,7 +2513,8 @@ Animator:
   m_WarningMessage: 
   m_HasTransformHierarchy: 1
   m_AllowConstantClipSamplingOptimization: 1
-  m_KeepAnimatorControllerStateOnDisable: 0
+  m_KeepAnimatorStateOnDisable: 0
+  m_WriteDefaultValuesOnDisable: 0
 --- !u!114 &7928374915095919513
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -2064,6 +2539,7 @@ MonoBehaviour:
   _autoMinDigivolutionCostToggle: {fileID: 7928374915796515123}
   _autoMaxCardCountToggle: {fileID: 7928374916406609952}
   _autoHatchToggle: {fileID: 7928374916028117478}
+  _banlistToggle: {fileID: 6605809134732779800}
 --- !u!1 &7928374915102912128
 GameObject:
   m_ObjectHideFlags: 0
@@ -4627,6 +5103,7 @@ RectTransform:
   - {fileID: 7928374916528301011}
   - {fileID: 7928374914732064316}
   - {fileID: 7928374915230148751}
+  - {fileID: 3100428799753360437}
   m_Father: {fileID: 7928374915564279514}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -9818,3 +10295,245 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &7984105155246379293
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3346079383509508976}
+  - component: {fileID: 1402619638621006827}
+  - component: {fileID: 1264014670078919623}
+  m_Layer: 5
+  m_Name: Checkmark
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3346079383509508976
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7984105155246379293}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 327947588219839728}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 120, y: 48}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1402619638621006827
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7984105155246379293}
+  m_CullTransparentMesh: 0
+--- !u!114 &1264014670078919623
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7984105155246379293}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: b3688a350ec035145b44f75dc7e54fd3, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8310052256679860245
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2643633776091544438}
+  - component: {fileID: 5076500471585010723}
+  - component: {fileID: 7669067546430629117}
+  - component: {fileID: 5982150575648531567}
+  - component: {fileID: 7826128636079055205}
+  m_Layer: 5
+  m_Name: BanlistButton
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2643633776091544438
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8310052256679860245}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 2, y: 2, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 8577515006174853630}
+  - {fileID: 5739861113118089730}
+  - {fileID: 3862088377832865129}
+  m_Father: {fileID: 3100428799753360437}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 502.4, y: 110.4}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5076500471585010723
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8310052256679860245}
+  m_CullTransparentMesh: 0
+--- !u!114 &7669067546430629117
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8310052256679860245}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 15, y: 15, z: 15, w: 15}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 8bfbfe158974d9d458884d821045f082, type: 3}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &5982150575648531567
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8310052256679860245}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 2
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 21300000, guid: 131adcb72d5e7cb47bfe1fe8bba81dff, type: 3}
+    m_PressedSprite: {fileID: 21300000, guid: 131adcb72d5e7cb47bfe1fe8bba81dff, type: 3}
+    m_SelectedSprite: {fileID: 21300000, guid: 131adcb72d5e7cb47bfe1fe8bba81dff, type: 3}
+    m_DisabledSprite: {fileID: 21300000, guid: 84eaf2858ade3ca4dae1574d04166fc6, type: 3}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 7669067546430629117}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls:
+      - m_Target: {fileID: 7928374915095919513}
+        m_TargetAssemblyTypeName: GameplayOption, Assembly-CSharp
+        m_MethodName: HandleUseBanlistToggle
+        m_Mode: 1
+        m_Arguments:
+          m_ObjectArgument: {fileID: 0}
+          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+          m_IntArgument: 0
+          m_FloatArgument: 0
+          m_StringArgument: 
+          m_BoolArgument: 0
+        m_CallState: 2
+--- !u!114 &7826128636079055205
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8310052256679860245}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Delegates:
+  - eventID: 4
+    callback:
+      m_PersistentCalls:
+        m_Calls:
+        - m_Target: {fileID: 0}
+          m_TargetAssemblyTypeName: Opening, Assembly-CSharp
+          m_MethodName: CreateOnClickEffect
+          m_Mode: 1
+          m_Arguments:
+            m_ObjectArgument: {fileID: 0}
+            m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+            m_IntArgument: 0
+            m_FloatArgument: 0
+            m_StringArgument: 
+            m_BoolArgument: 0
+          m_CallState: 2

+ 43 - 1
Assets/Scenes/ContinuousControllerScene.unity

@@ -571,6 +571,12 @@ MonoBehaviour:
   - {fileID: 11400000, guid: f162337df21ef8843bfe268247de8147, type: 2}
   - {fileID: 11400000, guid: 951b70327d834984fb76cc0aac94588e, type: 2}
   - {fileID: 11400000, guid: 384cbeced540f9242907b9e15cd9cbf5, type: 2}
+  - {fileID: 11400000, guid: 18d28057bb2032347b892de032322e4f, type: 2}
+  - {fileID: 11400000, guid: 28c27d448a24fc547bedfe1431504c64, type: 2}
+  - {fileID: 11400000, guid: f5d2111d70ed73e439778212c9a2d776, type: 2}
+  - {fileID: 11400000, guid: c984fb103b914834b8625b7aa47315e3, type: 2}
+  - {fileID: 11400000, guid: 768be086d69a6874499502f2da49b5dc, type: 2}
+  - {fileID: 11400000, guid: 22237a6ca9132e148beedb82d387afb0, type: 2}
   - {fileID: 11400000, guid: 735db4175921cce4194f2780879afda3, type: 2}
   - {fileID: 11400000, guid: 1a2d9c97ba864f047a58b4027a498997, type: 2}
   - {fileID: 11400000, guid: 57a886a4ed1b5ea4394e4978ca26fabf, type: 2}
@@ -6230,6 +6236,21 @@ MonoBehaviour:
   - {fileID: 11400000, guid: 62e764372598a3e46b82f97bbc15e1e7, type: 2}
   - {fileID: 11400000, guid: 26216b7332c27de4083d227d14524cee, type: 2}
   - {fileID: 11400000, guid: 74835cf575207e749a4787ba69ad9adc, type: 2}
+  - {fileID: 11400000, guid: 21d77366b10754242bf39272c7f82848, type: 2}
+  - {fileID: 11400000, guid: 89aa0ce9bd67a184a9b81d699d003877, type: 2}
+  - {fileID: 11400000, guid: a3efc080c1649d043beef6685224dfb4, type: 2}
+  - {fileID: 11400000, guid: e4fde6a04a0996e47bf798e2084a2095, type: 2}
+  - {fileID: 11400000, guid: 8ca94cc86a6a6ee47b3105dfbea80b59, type: 2}
+  - {fileID: 11400000, guid: bb7d4abfc8360074e89031e1fb02595d, type: 2}
+  - {fileID: 11400000, guid: ad77edb9396c6d54d876ecc67a87cf4f, type: 2}
+  - {fileID: 11400000, guid: a57ee10fe9e3000469e2b43e783ec950, type: 2}
+  - {fileID: 11400000, guid: eef5d9665b920604a9d1815ba35307aa, type: 2}
+  - {fileID: 11400000, guid: 1b8bc0febf9560b4393909c3d38ffaf2, type: 2}
+  - {fileID: 11400000, guid: 0bf95e3a8b3632949973e2803ac883f7, type: 2}
+  - {fileID: 11400000, guid: ab8aec1908092c94d8077a5698452bca, type: 2}
+  - {fileID: 11400000, guid: 30d15b4c96952f841bcbc0b497db739c, type: 2}
+  - {fileID: 11400000, guid: cbb7c22f09bf5784bad80c9789db1e2d, type: 2}
+  - {fileID: 11400000, guid: bd00934a12a805141a974614c646e83f, type: 2}
   - {fileID: 11400000, guid: a472661157cd0a444b2bb572dbf1baae, type: 2}
   - {fileID: 11400000, guid: a200df331ac7f8c47a657a352527aa8b, type: 2}
   - {fileID: 11400000, guid: bb7215ff23b2521478df777b0d9542ae, type: 2}
@@ -13804,7 +13825,6 @@ MonoBehaviour:
   - {fileID: 11400000, guid: a689d2fd2a1979a4ea16a8d0d7c243b0, type: 2}
   - {fileID: 11400000, guid: a673b8c8b5dc2a04b9cd4a973447cf3d, type: 2}
   - {fileID: 11400000, guid: a6bd063dadcb61b46b8e11364b9a8dae, type: 2}
-  - {fileID: 11400000, guid: 2e932d3bd9ef7f641aeb540b3c1b2a2f, type: 2}
   - {fileID: 11400000, guid: 5ebaa220afe69ee488053c599dfef0c0, type: 2}
   - {fileID: 11400000, guid: 43bcf67c53d19664badb6c37238cd823, type: 2}
   - {fileID: 11400000, guid: 64f63fb3e61d05647b3b870d0fdf22ff, type: 2}
@@ -13838,6 +13858,7 @@ MonoBehaviour:
   - {fileID: 11400000, guid: d385515fe305e834d968440d45ebe3ff, type: 2}
   - {fileID: 11400000, guid: c634863311e77eb44b3f0e0d498eb249, type: 2}
   - {fileID: 11400000, guid: 951b70327d834984fb76cc0aac94588e, type: 2}
+  - {fileID: 11400000, guid: 2e932d3bd9ef7f641aeb540b3c1b2a2f, type: 2}
   - {fileID: 11400000, guid: 69340d7dffd8d884d91605d0945446ea, type: 2}
   - {fileID: 11400000, guid: e5dccd5ae873f144db121748f9f30b95, type: 2}
   - {fileID: 11400000, guid: 02876be40651fe14e82b703c5f5a5b9e, type: 2}
@@ -13849,6 +13870,27 @@ MonoBehaviour:
   - {fileID: 11400000, guid: 5ade29d0090df324ea6c5ce96e1dd251, type: 2}
   - {fileID: 11400000, guid: e57221647d81df24cabac10d88c40902, type: 2}
   - {fileID: 11400000, guid: cefaa5daf691ac24c9f0d91c7e21a5c9, type: 2}
+  - {fileID: 11400000, guid: a3efc080c1649d043beef6685224dfb4, type: 2}
+  - {fileID: 11400000, guid: 21d77366b10754242bf39272c7f82848, type: 2}
+  - {fileID: 11400000, guid: 89aa0ce9bd67a184a9b81d699d003877, type: 2}
+  - {fileID: 11400000, guid: e4fde6a04a0996e47bf798e2084a2095, type: 2}
+  - {fileID: 11400000, guid: 8ca94cc86a6a6ee47b3105dfbea80b59, type: 2}
+  - {fileID: 11400000, guid: bb7d4abfc8360074e89031e1fb02595d, type: 2}
+  - {fileID: 11400000, guid: ad77edb9396c6d54d876ecc67a87cf4f, type: 2}
+  - {fileID: 11400000, guid: eef5d9665b920604a9d1815ba35307aa, type: 2}
+  - {fileID: 11400000, guid: 1b8bc0febf9560b4393909c3d38ffaf2, type: 2}
+  - {fileID: 11400000, guid: 0bf95e3a8b3632949973e2803ac883f7, type: 2}
+  - {fileID: 11400000, guid: ab8aec1908092c94d8077a5698452bca, type: 2}
+  - {fileID: 11400000, guid: cbb7c22f09bf5784bad80c9789db1e2d, type: 2}
+  - {fileID: 11400000, guid: a57ee10fe9e3000469e2b43e783ec950, type: 2}
+  - {fileID: 11400000, guid: 30d15b4c96952f841bcbc0b497db739c, type: 2}
+  - {fileID: 11400000, guid: bd00934a12a805141a974614c646e83f, type: 2}
+  - {fileID: 11400000, guid: 18d28057bb2032347b892de032322e4f, type: 2}
+  - {fileID: 11400000, guid: 768be086d69a6874499502f2da49b5dc, type: 2}
+  - {fileID: 11400000, guid: 22237a6ca9132e148beedb82d387afb0, type: 2}
+  - {fileID: 11400000, guid: 28c27d448a24fc547bedfe1431504c64, type: 2}
+  - {fileID: 11400000, guid: f5d2111d70ed73e439778212c9a2d776, type: 2}
+  - {fileID: 11400000, guid: c984fb103b914834b8625b7aa47315e3, type: 2}
   - {fileID: 11400000, guid: b00372efcf5658c42ad76bf91c5df4c3, type: 2}
   - {fileID: 11400000, guid: 35c6ca847a511834abee752dd8e012f5, type: 2}
   - {fileID: 11400000, guid: ede9619666b7b9e42885a1e9736445c5, type: 2}

+ 45 - 8
Assets/Scenes/Opening.unity

@@ -70837,7 +70837,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &1715247868
 RectTransform:
   m_ObjectHideFlags: 0
@@ -92781,6 +92781,7 @@ GameObject:
   - component: {fileID: 3770572172492783824}
   - component: {fileID: 96121763673564827}
   - component: {fileID: 5403112551258770163}
+  - component: {fileID: 5403112551258770164}
   m_Layer: 5
   m_Name: RandomMatch
   m_TagString: Untagged
@@ -94890,7 +94891,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 2537255268459177726, guid: dfe3b8c9901825e469d97dc0aa0a788b, type: 3}
       propertyPath: m_AnchorMax.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 2537255268459177726, guid: dfe3b8c9901825e469d97dc0aa0a788b, type: 3}
       propertyPath: m_AnchorMin.x
@@ -94898,15 +94899,15 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 2537255268459177726, guid: dfe3b8c9901825e469d97dc0aa0a788b, type: 3}
       propertyPath: m_AnchorMin.y
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 2537255268459177726, guid: dfe3b8c9901825e469d97dc0aa0a788b, type: 3}
       propertyPath: m_SizeDelta.x
-      value: 0
+      value: 100
       objectReference: {fileID: 0}
     - target: {fileID: 2537255268459177726, guid: dfe3b8c9901825e469d97dc0aa0a788b, type: 3}
       propertyPath: m_SizeDelta.y
-      value: 0
+      value: 100
       objectReference: {fileID: 0}
     - target: {fileID: 2537255268459177726, guid: dfe3b8c9901825e469d97dc0aa0a788b, type: 3}
       propertyPath: m_LocalPosition.x
@@ -94938,11 +94939,11 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 2537255268459177726, guid: dfe3b8c9901825e469d97dc0aa0a788b, type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: 0
+      value: -186
       objectReference: {fileID: 0}
     - target: {fileID: 2537255268459177726, guid: dfe3b8c9901825e469d97dc0aa0a788b, type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: 0
+      value: -99
       objectReference: {fileID: 0}
     - target: {fileID: 2537255268459177726, guid: dfe3b8c9901825e469d97dc0aa0a788b, type: 3}
       propertyPath: m_LocalEulerAnglesHint.x
@@ -96554,7 +96555,7 @@ MonoBehaviour:
     m_HighlightedSprite: {fileID: 21300000, guid: 5949fbf05cf8c144eb81cf4f2e444548, type: 3}
     m_PressedSprite: {fileID: 21300000, guid: 1aa1f88cd22b407408b8abc1f034d5cc, type: 3}
     m_SelectedSprite: {fileID: 21300000, guid: 5949fbf05cf8c144eb81cf4f2e444548, type: 3}
-    m_DisabledSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 21300000, guid: c1919f74d78e3a84e982ad813a4732a4, type: 3}
   m_AnimationTriggers:
     m_NormalTrigger: Normal
     m_HighlightedTrigger: Highlighted
@@ -100168,6 +100169,18 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 9304cb057684aa3448c3c8974edc49bf, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+--- !u!114 &5403112551258770164
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 212399625081886019}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e7fc67810ccfd464096476c860a52031, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!222 &5482114191962187318
 CanvasRenderer:
   m_ObjectHideFlags: 0
@@ -109656,6 +109669,30 @@ PrefabInstance:
   m_Modification:
     m_TransformParent: {fileID: 993687780}
     m_Modifications:
+    - target: {fileID: 3100428799753360437, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 3100428799753360437, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 3100428799753360437, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 100
+      objectReference: {fileID: 0}
+    - target: {fileID: 3100428799753360437, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_SizeDelta.y
+      value: 100
+      objectReference: {fileID: 0}
+    - target: {fileID: 3100428799753360437, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 1380.62
+      objectReference: {fileID: 0}
+    - target: {fileID: 3100428799753360437, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: -803.2
+      objectReference: {fileID: 0}
     - target: {fileID: 7928374914713416426, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchorMax.y
       value: 1

+ 1 - 1
Assets/Scripts/CardEffect/BT22/White/BT22_094.cs

@@ -70,7 +70,7 @@ namespace DCGO.CardEffects.BT22
             {
                 ActivateClass activateClass2 = new ActivateClass();
                 activateClass2.SetUpICardEffect("Reduce play cost", CanUseCondition2, card);
-                activateClass2.SetUpActivateClass(CanActivateCondition2, ActivateCoroutine2, 1, true, EffectDiscription2());
+                activateClass2.SetUpActivateClass(CanActivateCondition2, ActivateCoroutine2, -1, true, EffectDiscription2());
                 cardEffects.Add(activateClass2);
 
                 string EffectDiscription2()

+ 8 - 0
Assets/Scripts/CardEffect/BT25/Green.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fe505b0cee9ebb2458873f610fea057d
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 11 - 0
Assets/Scripts/CardEffect/BT25/Green/BT25_004.cs.meta

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

+ 2 - 2
Assets/Scripts/CardEffect/EX9/White/EX9_069.cs

@@ -72,7 +72,7 @@ namespace DCGO.CardEffects.EX9
                         cardEffect: activateClass);
 
                     selectHandEffect.SetUpCustomMessage("Select 1 card to add as face down source", "The opponent is selecting 1 card to add as face down source");
-                    selectHandEffect.SetUpCustomMessage_ShowCard("Played Card");
+                    selectHandEffect.SetUpCustomMessage_ShowCard("Selected Card");
                     yield return StartCoroutine(selectHandEffect.Activate());
 
                     IEnumerator SelectCardCoroutine(CardSource cardSource)
@@ -222,4 +222,4 @@ namespace DCGO.CardEffects.EX9
             return cardEffects;
         }
     }
-}
+}

+ 275 - 0
Assets/Scripts/CardEffect/ST24/Green/ST24_10.cs

@@ -0,0 +1,275 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+// Lilamon
+namespace DCGO.CardEffects.ST24
+{
+    public class ST24_10 : CEntity_Effect
+    {
+        public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+        {
+            List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+            #region Alt Digivolution Condition
+            if (timing == EffectTiming.None)
+            {
+                static bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.EqualsTraits("DATA SQUAD");
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(level: 4, permanentCondition: PermanentCondition, digivolutionCost: 3, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+
+            #endregion
+
+            #region Shared OP/WD/WA
+            string SharedEffectName = "Suspend 1 enemy Digimon/Tamer, by trashing 2 bottom face-down cards from your Tamers, may digivolve into a [DATA SQUAD] in the hand for free";
+
+            string SharedEffectHash = "ST24_10_SharedEffect";
+
+            CardEffectFactory.ActivateClassesForSharedEffects
+                (ref cardEffects, timing, card,
+                    SharedEffectName,
+                    SharedActivateCoroutine,
+                    SharedEffectDescription,
+                    optional: false,
+                    maxCountPerTurn: 1,
+                    hashValue: SharedEffectHash,
+                    onPlay: true,
+                    whenDigivolving: true,
+                    whenAttacking: true);
+
+            string SharedEffectDescription(string tag) => $"[{tag}] [Once Per Turn] Suspend 1 of your opponent's Digimon or Tamers. It can't unsuspend until their turn ends. Then, by trashing 2 bottom face-down cards from under any of your Tamers, this Digimon may digivolve into a [DATA SQUAD] trait Digimon card in the hand without paying the cost.";
+
+            bool CanSelectPermanentConditionForSuspend(Permanent permanent)
+            {
+                return CardEffectCommons.IsPermanentExistsOnOpponentBattleArea(permanent, card)
+                    && (permanent.IsDigimon
+                        || permanent.IsTamer);
+            }
+
+            bool TamerWithOneFaceDownSource(Permanent permanent)
+            {
+                return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaTamer(permanent, card)
+                    && permanent.DigivolutionCards.Any(CanSelectTrashSourceCardCondition);
+            }
+
+            bool TamerWith2OrMoreFaceDownSources(Permanent permanent)
+            {
+                return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaTamer(permanent, card)
+                    && permanent.DigivolutionCards.Count(CanSelectTrashSourceCardCondition) > 1;
+            }
+
+            bool CanSelectTrashSourceCardCondition(CardSource cardSource)
+            {
+                return cardSource.IsFlipped;
+            }
+
+            IEnumerator SharedActivateCoroutine(Hashtable hashtable, ActivateClass activateClass)
+            {
+                int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectPermanentConditionForSuspend));
+
+                SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                selectPermanentEffect.SetUp(
+                    selectPlayer: card.Owner,
+                    canTargetCondition: CanSelectPermanentConditionForSuspend,
+                    canTargetCondition_ByPreSelecetedList: null,
+                    canEndSelectCondition: null,
+                    maxCount: maxCount,
+                    canNoSelect: false,
+                    canEndNotMax: false,
+                    selectPermanentCoroutine: SelectPermanentCoroutine,
+                    afterSelectPermanentCoroutine: null,
+                    mode: SelectPermanentEffect.Mode.Custom,
+                    cardEffect: activateClass);
+
+                selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon/Tamer to suspend and give can't unsuspend", "The opponent is selecting 1 Digimon/Tamer to suspend and give can't unsuspend");
+
+                IEnumerator SelectPermanentCoroutine(Permanent permanent)
+                {
+                    List<Permanent> _targetPermanents = new List<Permanent>();
+                    Permanent selectedPermanent = permanent;
+
+                    if (selectedPermanent != null)
+                    {
+                        yield return ContinuousController.instance.StartCoroutine(new SuspendPermanentsClass(_targetPermanents, hashtable).Tap());
+
+                        CanNotUnsuspendClass canNotUnsuspendClass = new CanNotUnsuspendClass();
+                        canNotUnsuspendClass.SetUpICardEffect("Can't Unsuspend", CanUseCondition1, card);
+                        canNotUnsuspendClass.SetUpCanNotUntapClass(PermanentCondition: PermanentCondition);
+                        selectedPermanent.UntilOwnerTurnEndEffects.Add((_timing) => canNotUnsuspendClass);
+
+                        if (!selectedPermanent.TopCard.CanNotBeAffected(activateClass))
+                        {
+                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateDebuffEffect(selectedPermanent));
+                        }
+
+                        bool CanUseCondition1(Hashtable hashtable)
+                        {
+                            return selectedPermanent.TopCard != null
+                                && !selectedPermanent.TopCard.CanNotBeAffected(activateClass);
+                        }
+
+                        bool PermanentCondition(Permanent permanent)
+                        {
+                            return permanent == selectedPermanent;
+                        }
+                    }
+                }
+
+                yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
+                if (CardEffectCommons.MatchConditionPermanentCount(TamerWithOneFaceDownSource) > 1 || CardEffectCommons.MatchConditionPermanentCount(TamerWith2OrMoreFaceDownSources) > 0)
+                {
+                    string selectPlayerMessage = "Will you trash 2 bottom face-down cards from under any of your Tamers?";
+                    string notSelectPlayerMessage = "The opponent is choosing if they will trash 2 bottom face-down cards from under any of your Tamers.";
+
+                    List<SelectionElement<bool>> command_SelectCommands = new List<SelectionElement<bool>>()
+                        {
+                            new SelectionElement<bool>(message: $"Yes", value: true, spriteIndex: 0),
+                            new SelectionElement<bool>(message: $"No", value: false, spriteIndex: 1),
+                        };
+
+                    GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: command_SelectCommands, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+
+                    yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+
+                    bool trash = GManager.instance.userSelectionManager.SelectedBoolValue;
+
+                    if (trash)
+                    {
+                        SelectPermanentEffect selectPermanentEffect1 = GManager.instance.GetComponent<SelectPermanentEffect>();
+                        int maxCount1 = Math.Min(2, CardEffectCommons.MatchConditionPermanentCount(TamerWithOneFaceDownSource));
+
+                        selectPermanentEffect1.SetUp(
+                            selectPlayer: card.Owner,
+                            canTargetCondition: TamerWithOneFaceDownSource,
+                            canTargetCondition_ByPreSelecetedList: null,
+                            canEndSelectCondition: CanEndSelectCondition,
+                            maxCount: maxCount1,
+                            canNoSelect: false,
+                            canEndNotMax: true,
+                            selectPermanentCoroutine: null,
+                            afterSelectPermanentCoroutine: AfterSelectPermanentCoroutine,
+                            mode: SelectPermanentEffect.Mode.Custom,
+                            cardEffect: activateClass);
+
+                        selectPermanentEffect1.SetUpCustomMessage("Select 1 Tamer to trash 1 bottom face-down card from", "The opponent is selecting 1 Tamer to trash 1 bottom face-down card from");
+
+                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect1.Activate());
+
+                        bool CanEndSelectCondition(List<Permanent> permanents)
+                        {
+                            return permanents.Count == 2 || (permanents.Count > 0 && permanents[0].DigivolutionCards.Count(CanSelectTrashSourceCardCondition) >= 2);
+                        }
+
+                        IEnumerator AfterSelectPermanentCoroutine(List<Permanent> permanents)
+                        {
+                            if (permanents.Count == 1)
+                            {
+                                yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.TrashDigivolutionCardsFromTopOrBottom(targetPermanent: permanents[0], trashCount: 2, isFromTop: false, activateClass: activateClass, CanSelectTrashSourceCardCondition));
+                            }
+                            else
+                            {
+                                foreach (Permanent selectedPermanent in permanents)
+                                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.TrashDigivolutionCardsFromTopOrBottom(targetPermanent: selectedPermanent, trashCount: 1, isFromTop: false, activateClass: activateClass, CanSelectTrashSourceCardCondition));
+                            }
+                        }
+
+                        bool CanSelectCardCondition(CardSource cardSource)
+                        {
+                            return cardSource.EqualsTraits("DATA SQUAD");
+                        }
+
+                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DigivolveIntoHandOrTrashCard(
+                        targetPermanent: card.PermanentOfThisCard(),
+                        cardCondition: CanSelectCardCondition,
+                        payCost: false,
+                        reduceCostTuple: null,
+                        fixedCostTuple: null,
+                        ignoreDigivolutionRequirementFixedCost: -1,
+                        isHand: true, activateClass: activateClass,
+                        successProcess: null));
+                    }
+                }
+            }
+            #endregion
+
+            #region Inherited
+            if (timing == EffectTiming.WhenRemoveField)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Trash the bottom face-down card from 1 Tamer to not leave", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, true, EffectDescription());
+                activateClass.SetHashString("ST24_10_Inherited");
+                activateClass.SetIsInheritedEffect(true);
+                cardEffects.Add(activateClass);
+
+                string EffectDescription()
+                {
+                    return "[All Turns] [Once Per Turn] When this Digimon with [Rosemon] in its name or the [DATA SQUAD] trait would leave the battle area, by trashing the bottom face-down card from under any of your Tamers, it doesn't leave";
+                }
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card)
+                        && (card.PermanentOfThisCard().TopCard.ContainsCardName("Rosemon")
+                            || card.PermanentOfThisCard().TopCard.EqualsTraits("DATA SQUAD"))
+                        && CardEffectCommons.CanTriggerWhenRemoveField(hashtable, card);
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card)
+                        && CardEffectCommons.HasMatchConditionPermanent(TamerWithOneFaceDownSource);
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.HasMatchConditionPermanent(TamerWithOneFaceDownSource))
+                    {
+                        Permanent thisCardPermanent = card.PermanentOfThisCard();
+                        SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                        selectPermanentEffect.SetUp(
+                            selectPlayer: card.Owner,
+                            canTargetCondition: TamerWithOneFaceDownSource,
+                            canTargetCondition_ByPreSelecetedList: null,
+                            canEndSelectCondition: null,
+                            maxCount: 1,
+                            canNoSelect: true,
+                            canEndNotMax: false,
+                            selectPermanentCoroutine: SelectPermanentCoroutine,
+                            afterSelectPermanentCoroutine: null,
+                            mode: SelectPermanentEffect.Mode.Custom,
+                            cardEffect: activateClass);
+
+                        selectPermanentEffect.SetUpCustomMessage("Select 1 Tamer to trash 1 bottom face-down card from", "The opponent is selecting 1 Tamer to trash 1 bottom face-down card from");
+                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
+                        IEnumerator SelectPermanentCoroutine(Permanent permanent)
+                        {
+                            yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.TrashDigivolutionCardsFromTopOrBottom(targetPermanent: new List<Permanent>() { permanent }[0], trashCount: 1, isFromTop: false, activateClass: activateClass, CanSelectTrashSourceCardCondition));
+
+                            thisCardPermanent.willBeRemoveField = false;
+
+                            thisCardPermanent.HideDeleteEffect();
+                            thisCardPermanent.HideHandBounceEffect();
+                            thisCardPermanent.HideDeckBounceEffect();
+                            thisCardPermanent.HideWillRemoveFieldEffect();
+
+                            yield return null;
+                        }
+                    }
+                }
+            }
+            #endregion
+
+            return cardEffects;
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/CardEffect/ST24/Green/ST24_10.cs.meta

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

+ 216 - 0
Assets/Scripts/CardEffect/ST24/Green/ST24_11.cs

@@ -0,0 +1,216 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+// Rosemon
+namespace DCGO.CardEffects.ST24
+{
+    public class ST24_11 : CEntity_Effect
+    {
+        public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+        {
+            List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+            #region Alt Digivolution Condition
+            if (timing == EffectTiming.None)
+            {
+                static bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.EqualsCardName("Lilamon");
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 3, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+
+            if (timing == EffectTiming.None)
+            {
+                static bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.EqualsTraits("DATA SQUAD");
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(level: 5, permanentCondition: PermanentCondition, digivolutionCost: 3, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+
+            #endregion
+
+            #region Shared WD/WA
+            string SharedEffectName = "May suspend up to 2 enemy Digimon or Tamers, then may trash bottommost face-down card from your Tamer so enemy Digimon cannot unsuspend until their turn ends";
+
+            string SharedEffectHash = "ST24_11_SharedEffect";
+
+            CardEffectFactory.ActivateClassesForSharedEffects
+                (ref cardEffects, timing, card,
+                    SharedEffectName,
+                    SharedActivateCoroutine,
+                    SharedEffectDescription,
+                    optional: false,
+                    maxCountPerTurn: 1,
+                    hashValue: SharedEffectHash,
+                    whenDigivolving: true,
+                    whenAttacking: true);
+
+            string SharedEffectDescription(string tag) => $"[{tag}] [Once Per Turn] You may suspend up to 2 of your opponent's Digimon or Tamers. Then, by trashing the bottom face-down card from under any of your Tamers, none of their Digimon can unsuspend until their turn ends.";
+
+            bool TamerWithOneFaceDownSource(Permanent permanent)
+            {
+                return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaTamer(permanent, card)
+                    && permanent.DigivolutionCards.Any(CanSelectTrashSourceCardCondition);
+            }
+
+            bool CanSelectTrashSourceCardCondition(CardSource cardSource)
+            {
+                return cardSource.IsFlipped;
+            }
+
+            bool CanSelectOpponentPermanentCondition(Permanent permanent)
+            {
+                return CardEffectCommons.IsPermanentExistsOnOpponentBattleArea(permanent, card)
+                    && (permanent.IsDigimon
+                    || permanent.IsTamer);
+            }
+
+            IEnumerator SharedActivateCoroutine(Hashtable hashtable, ActivateClass activateClass)
+            {
+                if (CardEffectCommons.HasMatchConditionPermanent(CanSelectOpponentPermanentCondition))
+                {
+                    int maxCount = Math.Min(2,
+                        CardEffectCommons.MatchConditionPermanentCount(CanSelectOpponentPermanentCondition));
+
+                    SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                    selectPermanentEffect.SetUp(
+                        selectPlayer: card.Owner,
+                        canTargetCondition: CanSelectOpponentPermanentCondition,
+                        canTargetCondition_ByPreSelecetedList: null,
+                        canEndSelectCondition: null,
+                        maxCount: maxCount,
+                        canNoSelect: false,
+                        canEndNotMax: false,
+                        selectPermanentCoroutine: null,
+                        afterSelectPermanentCoroutine: null,
+                        mode: SelectPermanentEffect.Mode.Tap,
+                        cardEffect: activateClass);
+
+                    yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+                }
+
+                bool trashed = false;
+
+                SelectPermanentEffect selectPermanentEffect1 = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                selectPermanentEffect1.SetUp(
+                    selectPlayer: card.Owner,
+                    canTargetCondition: TamerWithOneFaceDownSource,
+                    canTargetCondition_ByPreSelecetedList: null,
+                    canEndSelectCondition: null,
+                    maxCount: 1,
+                    canNoSelect: true,
+                    canEndNotMax: true,
+                    selectPermanentCoroutine: null,
+                    afterSelectPermanentCoroutine: AfterSelectPermanentCoroutine,
+                    mode: SelectPermanentEffect.Mode.Custom,
+                    cardEffect: activateClass);
+
+                selectPermanentEffect1.SetUpCustomMessage("Select 1 Tamer to trash 1 bottom face-down card from", "The opponent is selecting 1 Tamer to trash 1 bottom face-down card from");
+
+                yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect1.Activate());
+
+                IEnumerator AfterSelectPermanentCoroutine(List<Permanent> permanents)
+                {
+                    if (permanents.Count == 1)
+                    {
+                        trashed = true;
+
+                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.TrashDigivolutionCardsFromTopOrBottom(targetPermanent: permanents[0], trashCount: 1, isFromTop: false, activateClass: activateClass, CanSelectTrashSourceCardCondition));
+                    }
+                }
+
+                if (trashed)
+                {
+                    bool PermanentCondition(Permanent permanent)
+                    {
+                        return CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card)
+                            && !permanent.TopCard.CanNotBeAffected(activateClass);
+                    }
+
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotUnsuspendPlayerEffect(
+                            permanentCondition: PermanentCondition,
+                            effectDuration: EffectDuration.UntilOpponentTurnEnd,
+                            activateClass: activateClass,
+                            isOnlyActivePhase: false,
+                            effectName: "Your Digimon can't unsuspend"));
+                }
+            }
+            #endregion
+
+            #region Shared All Turns
+            string SharedEffectName1 = "Trash your opponent's top security card";
+
+            string SharedHashString = "ST24_11_AT";
+
+            string SharedEffectDescription1() => "[All Turns] [Once Per Turn] When any of your opponent's Digimon or Tamers suspend, or effects trash cards from under your Tamers, trash your opponent's top security card.";
+
+            bool SharedCanActivateCondition(Hashtable hashtable) => CardEffectCommons.IsExistOnBattleArea(card);
+
+            IEnumerator SharedActivateCoroutine1(Hashtable hashtable, ActivateClass activateClass)
+            {
+                yield return ContinuousController.instance.StartCoroutine(new IDestroySecurity(
+                        player: card.Owner.Enemy,
+                        destroySecurityCount: 1,
+                        cardEffect: activateClass,
+                        fromTop: true).DestroySecurity());
+            }
+            #endregion
+
+            #region All turns Trigger - On Suspend
+            if (timing == EffectTiming.OnTappedAnyone)
+            {
+                ActivateClass activateClass = new();
+                activateClass.SetUpICardEffect(SharedEffectName1, CanUseCondition, card);
+                activateClass.SetUpActivateClass(SharedCanActivateCondition, hash => SharedActivateCoroutine1(hash, activateClass), 1, false, SharedEffectDescription1());
+                activateClass.SetHashString(SharedHashString);
+                cardEffects.Add(activateClass);
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleArea(card)
+                        && CardEffectCommons.CanTriggerWhenPermanentSuspends(hashtable, PermanentCondition);
+                }
+
+                bool PermanentCondition(Permanent permanent)
+                {
+                    return CardEffectCommons.IsPermanentExistsOnOpponentBattleArea(permanent, card)
+                        && (permanent.IsDigimon
+                            || permanent.IsTamer);
+                }                
+            }
+            #endregion
+
+            #region All Turns Trigger - On Trashed
+            if (timing == EffectTiming.OnDigivolutionCardDiscarded)
+            {
+                ActivateClass activateClass = new();
+                activateClass.SetUpICardEffect(SharedEffectName1, CanUseCondition, card);
+                activateClass.SetUpActivateClass(SharedCanActivateCondition, hash => SharedActivateCoroutine1(hash, activateClass), 1, false, SharedEffectDescription1());
+                activateClass.SetHashString(SharedHashString);
+                cardEffects.Add(activateClass);
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleArea(card)
+                        && CardEffectCommons.CanTriggerOnTrashDigivolutionCard(hashtable, PermanentCondition, cardEffect => cardEffect != null, cardSource => true);
+                }
+
+                bool PermanentCondition(Permanent permanent)
+                {
+                    return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaTamer(permanent, card);
+                }
+            }
+            #endregion
+
+            return cardEffects;
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/CardEffect/ST24/Green/ST24_11.cs.meta

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

+ 150 - 0
Assets/Scripts/CardEffect/ST24/Green/ST24_14.cs

@@ -0,0 +1,150 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+// Yoshino Fujieda & Keenan Crier
+namespace DCGO.CardEffects.ST24
+{
+    public class ST24_14 : CEntity_Effect
+    {
+        public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+        {
+            List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+            #region Name Rule
+            if (timing == EffectTiming.None)
+            {
+                ChangeCardNamesClass changeCardNamesClass = new ChangeCardNamesClass();
+                changeCardNamesClass.SetUpICardEffect("[Rule] Name: Also treated as [Yoshino Fujieda]/[Keenan Crier].", _ => true, card);
+                changeCardNamesClass.SetUpChangeCardNamesClass(changeCardNames: ChangeCardNames);
+                cardEffects.Add(changeCardNamesClass);
+
+                List<string> ChangeCardNames(CardSource cardSource, List<string> cardNames)
+                {
+                    if (cardSource == card)
+                    {
+                        cardNames.Add("Yoshino Fujieda");
+                        cardNames.Add("Keenan Crier");
+                    }
+
+                    return cardNames;
+                }
+            }
+            #endregion
+
+            #region Shared OP/SOMP
+            string SharedEffectName = "Place top card of deck face down under this tamer, then if enemy has Digimon gain 1 memory";
+
+            CardEffectFactory.ActivateClassesForSharedEffects
+                (ref cardEffects, timing, card,
+                    SharedEffectName,
+                    SharedActivateCoroutine,
+                    SharedEffectDescription,
+                    optional: false,
+                    onPlay: true,
+                    startOfYourMainPhase: true);
+
+            string SharedEffectDescription(string tag) =>
+                $"[{tag}] You may place the top card of your deck face down under this tamer. Then, if your opponent has a Digimon, gain 1 memory.";
+
+            IEnumerator SharedActivateCoroutine(Hashtable hashtable, ActivateClass activateClass)
+            {
+                if (card.Owner.LibraryCards.Count >= 1)
+                {
+                    List<SelectionElement<int>> selectionElements = new List<SelectionElement<int>>();
+
+                    selectionElements.Add(new(message: $"Yes", value: 1, spriteIndex: 0));
+                    selectionElements.Add(new(message: $"No", value: 2, spriteIndex: 1));
+
+                    string selectPlayerMessage = "Will you place the top card from your deck under this Tamer face down?";
+                    string notSelectPlayerMessage = "The opponent is choosing whether to place the top card from their deck under their Tamer face down.";
+
+                    GManager.instance.userSelectionManager.SetIntSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+
+                    yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+
+                    bool Yes = GManager.instance.userSelectionManager.SelectedIntValue == 1;
+
+                    if (Yes)
+                    {
+                        yield return ContinuousController.instance.StartCoroutine(card.PermanentOfThisCard().AddDigivolutionCardsBottom(
+                                new List<CardSource> { card.Owner.LibraryCards[0] }, activateClass, isFacedown: true));
+                    }
+                }
+
+                if (card.Owner.Enemy.GetBattleAreaDigimons().Count >= 1)
+                {
+                    yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(1, activateClass));
+                }
+            }
+            #endregion
+
+            #region All Turns
+            if (timing == EffectTiming.OnDigivolutionCardDiscarded)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Suspend this tamer to suspend 1 enemy Digimon", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDescription());
+                cardEffects.Add(activateClass);
+
+                string EffectDescription()
+                {
+                    return "[All Turns] When effects trash cards from under this Tamer, by suspending this Tamer, suspend 1 of your opponent's Digimon.";
+                }
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleArea(card)
+                        && CardEffectCommons.CanTriggerOnTrashDigivolutionCard(hashtable, permanent => permanent == card.PermanentOfThisCard(), effect => effect != null, cardSource => true);
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleArea(card);
+                }
+
+                bool CanSelectPermanentCondition(Permanent permanent)
+                {
+                    return CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card);
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    yield return ContinuousController.instance.StartCoroutine(new SuspendPermanentsClass(
+                        new List<Permanent>() { card.PermanentOfThisCard() },
+                        CardEffectCommons.CardEffectHashtable(activateClass)).Tap());
+
+                    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.Tap,
+                        cardEffect: activateClass);
+
+                    yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+                }
+            }
+            #endregion
+
+            #region Security Effect
+            if (timing == EffectTiming.SecuritySkill)
+            {
+                cardEffects.Add(CardEffectFactory.PlaySelfTamerSecurityEffect(card));
+            }
+            #endregion
+
+            return cardEffects;
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/CardEffect/ST24/Green/ST24_14.cs.meta

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

+ 8 - 0
Assets/Scripts/CardEffect/ST24/Purple.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 371064acd0641ca42b8a7b1d71f4af5e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 11 - 0
Assets/Scripts/CardEffect/ST24/Purple/ST24_12.cs.meta

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

+ 8 - 0
Assets/Scripts/CardEffect/ST24/White.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dc855b31815b06e4eb49235ab3af7724
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 235 - 0
Assets/Scripts/CardEffect/ST24/White/ST24_15.cs

@@ -0,0 +1,235 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+// DNA Charge
+namespace DCGO.CardEffects.ST24
+{
+    public class ST24_15 : CEntity_Effect
+    {
+        public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+        {
+            List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+            #region Ignore Color Requirement
+            if (timing == EffectTiming.None)
+            {
+                cardEffects.Add(CardEffectFactory.UseRequirements(card, PermanentCondition));
+
+                bool PermanentCondition(Permanent permanent)
+                {
+                    return CardEffectCommons.IsOwnerPermanent(permanent, card)
+                        && permanent.TopCard.EqualsTraits("DATA SQUAD")
+                        && (permanent.IsDigimon || permanent.IsTamer);
+                }
+            }
+            #endregion     
+
+            #region Main
+            if (timing == EffectTiming.OptionSkill)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Play 1 [DATA SQUAD] card with a play cost of 4 or less from hand or trash for free, place this card in battle area", CanUseCondition, card);
+                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDescription());
+                cardEffects.Add(activateClass);
+
+                string EffectDescription()
+                {
+                    return "[Main] You may play 1 [DATA SQUAD] trait card with a play cost of 4 or less from your hand or trash without paying the cost. Then, place this card in the battle area.";
+                }
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.CanTriggerOptionMainEffect(hashtable, card);
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    bool CanSelectPlayCondition(CardSource cardSource)
+                    {
+                        return (cardSource.IsDigimon
+                                || cardSource.IsTamer)
+                            && cardSource.HasPlayCost
+                            && cardSource.EqualsTraits("DATA SQUAD")
+                            && cardSource.GetCostItself <= 4
+                            && CardEffectCommons.CanPlayAsNewPermanent(cardSource: cardSource, payCost: false, cardEffect: activateClass);
+                    }
+
+                    bool canSelectHand = CardEffectCommons.HasMatchConditionOwnersHand(card, CanSelectPlayCondition);
+                    bool canSelectTrash = CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanSelectPlayCondition);
+
+                    if (canSelectHand || canSelectTrash)
+                    {
+                        #region Setup Location Selection
+                        List<SelectionElement<int>> selectionElements = new List<SelectionElement<int>>();
+                        if (canSelectHand)
+                        {
+                            selectionElements.Add(new(message: $"From hand", value: 1, spriteIndex: 0));
+                        }
+                        if (canSelectTrash)
+                        {
+                            selectionElements.Add(new(message: $"From trash", value: 2, spriteIndex: 0));
+                        }
+                        selectionElements.Add(new(message: $"Do not play", value: 3, spriteIndex: 1));
+
+                        string selectPlayerMessage = "From which area do you select a card?";
+                        string notSelectPlayerMessage = "The opponent is choosing from which area to select a card.";
+
+                        GManager.instance.userSelectionManager.SetIntSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+
+                        yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+                        #endregion
+
+                        bool doPlay = GManager.instance.userSelectionManager.SelectedIntValue != 3;
+                        bool fromHand = GManager.instance.userSelectionManager.SelectedIntValue == 1;
+
+                        if (doPlay)
+                        {
+                            #region Hand/Trash Card Selection & Play
+                            if (fromHand)
+                            {
+                                SelectHandEffect selectHandEffect2 = GManager.instance.GetComponent<SelectHandEffect>();
+
+                                selectHandEffect2.SetUp(
+                                    selectPlayer: card.Owner,
+                                    canTargetCondition: CanSelectPlayCondition,
+                                    canTargetCondition_ByPreSelecetedList: null,
+                                    canEndSelectCondition: null,
+                                    maxCount: 1,
+                                    canNoSelect: true,
+                                    canEndNotMax: false,
+                                    isShowOpponent: true,
+                                    selectCardCoroutine: null,
+                                    afterSelectCardCoroutine: null,
+                                    mode: SelectHandEffect.Mode.PlayForFree,
+                                    cardEffect: activateClass);
+
+                                yield return StartCoroutine(selectHandEffect2.Activate());
+                            }
+                            else
+                            {
+                                SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
+
+                                selectCardEffect.SetUp(
+                                    canTargetCondition: CanSelectPlayCondition,
+                                    canTargetCondition_ByPreSelecetedList: null,
+                                    canEndSelectCondition: null,
+                                    canNoSelect: () => true,
+                                    selectCardCoroutine: null,
+                                    afterSelectCardCoroutine: null,
+                                    message: "Select 1 card to play.",
+                                    maxCount: 1,
+                                    canEndNotMax: false,
+                                    isShowOpponent: true,
+                                    mode: SelectCardEffect.Mode.PlayForFree,
+                                    root: SelectCardEffect.Root.Trash,
+                                    customRootCardList: null,
+                                    canLookReverseCard: true,
+                                    selectPlayer: card.Owner,
+                                    cardEffect: activateClass);
+
+                                yield return StartCoroutine(selectCardEffect.Activate());
+                            }
+                            #endregion
+                        }
+                    }
+
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlaceDelayOptionCards(card: card, cardEffect: activateClass));
+                }
+            }
+            #endregion
+
+            #region Security
+            if (timing == EffectTiming.SecuritySkill)
+            {
+                CardEffectCommons.AddActivateMainOptionSecurityEffect(
+                    card: card,
+                    cardEffects: ref cardEffects,
+                    effectName: "[Security] You may play 1 [DATA SQUAD] trait card with a play cost of 4 or less from your hand or trash without paying the cost. Then, place this card in the battle area.");
+            }
+            #endregion
+
+            #region Start of Your Main Phase
+            if (timing == EffectTiming.OnStartMainPhase)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Place this card under 1 [DATA SQUAD] tamer face down to <Draw 1> and gain 1 memory", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDescription());
+                cardEffects.Add(activateClass);
+
+                string EffectDescription()
+                {
+                    return "[Start of Your Main Phase] By placing this card from the battle area face down under any of your [DATA SQUAD] trait Tamers, <Draw 1> and gain 1 memory.";
+                }
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleArea(card)
+                        && CardEffectCommons.IsOwnerTurn(card);
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleArea(card)
+                        && CardEffectCommons.HasMatchConditionPermanent(CanSelectPermamentCondition);
+                }
+
+                bool CanSelectPermamentCondition(Permanent permanent)
+                {
+                    return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaTamer(permanent, card)
+                        && permanent.TopCard.EqualsTraits("DATA SQUAD");
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermamentCondition))
+                    {
+                        Permanent selectedPermanent = null;
+
+                        int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectPermamentCondition));
+
+                        SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                        selectPermanentEffect.SetUp(
+                            selectPlayer: card.Owner,
+                            canTargetCondition: CanSelectPermamentCondition,
+                            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 Tamer that will get a digivolution card.", "The opponent is selecting 1 Tamer that will get a digivolution card.");
+
+                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
+                        IEnumerator SelectPermanentCoroutine(Permanent permanent)
+                        {
+                            selectedPermanent = permanent;
+
+                            yield return null;
+                        }
+
+                        if (selectedPermanent != null && !selectedPermanent.IsToken)
+                        {
+                            yield return ContinuousController.instance.StartCoroutine(card.Owner.brainStormObject.CloseBrainstrorm(card));
+
+                            yield return ContinuousController.instance.StartCoroutine(selectedPermanent.AddDigivolutionCardsBottom(new List<CardSource>() { card }, activateClass));
+
+                            yield return ContinuousController.instance.StartCoroutine(new DrawClass(card.Owner, 1, activateClass).Draw());
+
+                            yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(1, activateClass));
+                        }
+                    }
+                }
+            }
+            #endregion
+
+            return cardEffects;
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/CardEffect/ST24/White/ST24_15.cs.meta

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

+ 11 - 0
Assets/Scripts/CardEffect/ST24/Yellow/ST24_06.cs.meta

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

+ 161 - 0
Assets/Scripts/CardEffect/ST24/Yellow/ST24_13.cs

@@ -0,0 +1,161 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+// Marcus Damon & Thomas H. Norstein
+namespace DCGO.CardEffects.ST24
+{
+    public class ST24_13 : CEntity_Effect
+    {
+        public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+        {
+            List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+            #region Name Rule
+            if (timing == EffectTiming.None)
+            {
+                ChangeCardNamesClass changeCardNamesClass = new ChangeCardNamesClass();
+                changeCardNamesClass.SetUpICardEffect("[Rule] Name: Also treated as [Marcus Damon]/[Thomas H. Norstein].", _ => true, card);
+                changeCardNamesClass.SetUpChangeCardNamesClass(changeCardNames: ChangeCardNames);
+                cardEffects.Add(changeCardNamesClass);
+
+                List<string> ChangeCardNames(CardSource cardSource, List<string> cardNames)
+                {
+                    if (cardSource == card)
+                    {
+                        cardNames.Add("Marcus Damon");
+                        cardNames.Add("Thomas H. Norstein");
+                    }
+
+                    return cardNames;
+                }
+            }
+            #endregion
+
+            #region Shared OP/SOMP
+            string SharedEffectName = "Place top card of deck face down under this tamer, then if enemy has Digimon gain 1 memory";
+
+            CardEffectFactory.ActivateClassesForSharedEffects
+                (ref cardEffects, timing, card,
+                    SharedEffectName,
+                    SharedActivateCoroutine,
+                    SharedEffectDescription,
+                    optional: false,
+                    onPlay: true,
+                    startOfYourMainPhase: true);
+
+            string SharedEffectDescription(string tag) =>
+                $"[{tag}] You may place the top card of your deck face down under this tamer. Then, if your opponent has a Digimon, gain 1 memory.";
+
+            IEnumerator SharedActivateCoroutine(Hashtable hashtable, ActivateClass activateClass)
+            {
+                if (card.Owner.LibraryCards.Count >= 1)
+                {
+                    List<SelectionElement<int>> selectionElements = new List<SelectionElement<int>>();
+
+                    selectionElements.Add(new(message: $"Yes", value: 1, spriteIndex: 0));
+                    selectionElements.Add(new(message: $"No", value: 2, spriteIndex: 1));
+
+                    string selectPlayerMessage = "Will you place the top card from your deck under this Tamer face down?";
+                    string notSelectPlayerMessage = "The opponent is choosing whether to place the top card from their deck under their Tamer face down.";
+
+                    GManager.instance.userSelectionManager.SetIntSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+
+                    yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+
+                    bool Yes = GManager.instance.userSelectionManager.SelectedIntValue == 1;
+
+                    if (Yes)
+                    {
+                        yield return ContinuousController.instance.StartCoroutine(card.PermanentOfThisCard().AddDigivolutionCardsBottom(
+                                new List<CardSource> { card.Owner.LibraryCards[0] }, activateClass, isFacedown: true));
+                    }
+                }
+
+                if (card.Owner.Enemy.GetBattleAreaDigimons().Count >= 1)
+                {
+                    yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(1, activateClass));
+                }
+            }
+            #endregion       
+
+            #region All Turns
+            if (timing == EffectTiming.OnDigivolutionCardDiscarded)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Suspend this tamer to give 1 of your [DATA SQUAD] Digimon <Jamming> for the turn", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDescription());
+                cardEffects.Add(activateClass);
+
+                string EffectDescription()
+                {
+                    return "[Your Turn] When effects trash cards from under this Tamer, by suspending this Tamer, 1 of your [DATA SQUAD] trait Digimon gains <Jamming> for the turn.";
+                }
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleArea(card)
+                        && CardEffectCommons.IsOwnerTurn(card)
+                        && CardEffectCommons.CanTriggerOnTrashDigivolutionCard(hashtable, permanent => permanent == card.PermanentOfThisCard(), effect => effect != null, cardSource => true);
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleArea(card);
+                }
+
+                bool CanSelectPermanentCondition(Permanent permanent)
+                {
+                    return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card)
+                        && permanent.TopCard.EqualsTraits("DATA SQUAD");
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
+                {
+                    yield return ContinuousController.instance.StartCoroutine(new SuspendPermanentsClass(
+                        new List<Permanent>() { card.PermanentOfThisCard() },
+                        CardEffectCommons.CardEffectHashtable(activateClass)).Tap());
+
+                    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: SelectPermanentCoroutine,
+                        afterSelectPermanentCoroutine: null,
+                        mode: SelectPermanentEffect.Mode.Custom,
+                        cardEffect: activateClass);
+
+                    selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon that will get Jamming.", "The opponent is selecting 1 Digimon that will get Jamming.");
+
+                    yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
+                    IEnumerator SelectPermanentCoroutine(Permanent permanent)
+                    {
+                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainJamming(
+                                targetPermanent: permanent,
+                                effectDuration: EffectDuration.UntilEachTurnEnd,
+                                activateClass: activateClass));
+                    }
+                }
+            }
+            #endregion
+
+            #region Security Effect
+            if (timing == EffectTiming.SecuritySkill)
+            {
+                cardEffects.Add(CardEffectFactory.PlaySelfTamerSecurityEffect(card));
+            }
+            #endregion
+
+            return cardEffects;
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/CardEffect/ST24/Yellow/ST24_13.cs.meta

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

+ 1 - 0
Assets/Scripts/Script/CEntity_Base.cs

@@ -396,6 +396,7 @@ public enum Rarity
     U,
     R,
     SR,
+    UR,
     SEC,
     P,
     None,

+ 11 - 0
Assets/Scripts/Script/CardEffectCommons/CanUseEffects/WhenWouldLink.cs.meta

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

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

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

+ 41 - 5
Assets/Scripts/Script/ContinuousController.cs

@@ -6,8 +6,8 @@ using System.IO;
 using System.Linq;
 using System.Threading.Tasks;
 using UnityEngine;
-using UnityEngine.Events;
 using UnityEngine.EventSystems;
+using UnityEngine.Networking;
 using UnityEngine.SceneManagement;
 using Hashtable = ExitGames.Client.Photon.Hashtable;
 
@@ -120,11 +120,31 @@ public class ContinuousController : MonoBehaviour
     public CEntity_Base AthoRenePorToken { get; private set; }
     public CEntity_Base HinukamuyToken { get; private set; }
     public CEntity_Base PetrificationToken { get; private set; }
-    public CardRestriction BanList { get; private set; } = new CardRestriction(new List<CardLimitCount>(), new List<BannedPair>());
+    //public CardRestriction BanList { get; private set; } = new CardRestriction(new List<CardLimitCount>(), new List<BannedPair>());
+    public BanList BanList { get; private set; } = new BanList();
 
-    void LoadBanList()
+
+    async Task LoadBanListOnline()
     {
-        BanList = DataBase.ENGBanList;
+        string url = "https://www.dcgo.online/Banlist.json";
+        UnityWebRequest jsonWebRequest = UnityWebRequest.Get(url);
+
+        UnityWebRequestAsyncOperation operation = jsonWebRequest.SendWebRequest();
+
+        while (!operation.isDone)
+        {
+            await Task.Yield(); // Keep the method asynchronous without blocking
+        }
+
+        if (jsonWebRequest.result != UnityWebRequest.Result.Success)
+        {
+            Debug.Log(jsonWebRequest.error);
+            useBanlist = false;
+        }
+        else
+        {
+            BanList = JsonUtility.FromJson<BanList>(jsonWebRequest.downloadHandler.text);
+        }
     }
 
     async Task CreateTokenData()
@@ -512,7 +532,7 @@ public class ContinuousController : MonoBehaviour
             ReverseCard_Digitama = reverseDigieggCardSprite;
         }
 
-        LoadBanList();
+        await LoadBanListOnline();
 
         // deck data
         //DeckDatas = PlayerPrefsUtil.LoadList<DeckData>(DeckDatasPlayerPrefsKey);
@@ -530,6 +550,7 @@ public class ContinuousController : MonoBehaviour
         LoadAutoMinDigivolutionCost();
         LoadAutoMaxCardCount();
         LoadAutoHatch();
+        //LoadUseBanlist();
         LoadShowCutInAnimation();
         LoadReverseOpponentsCards();
         LoadTurnSuspendedCards();
@@ -857,6 +878,21 @@ public class ContinuousController : MonoBehaviour
     }
     #endregion
 
+    #region Use Banlist
+    public bool useBanlist = true;
+    string _useBanlistKey = "UseBanlist";
+
+    public void SaveUseBanlist()
+    {
+        PlayerPrefsUtil.SetBool(_useBanlistKey, useBanlist);
+        PlayerPrefs.Save();
+    }
+    public void LoadUseBanlist()
+    {
+        useBanlist = PlayerPrefsUtil.GetBool(_useBanlistKey, false);
+    }
+    #endregion
+
     #region Show CutIn Animation
     [HideInInspector] public bool showCutInAnimation = false;
     string _showCutInAnimationKey = "ShowCutInAnimation";

+ 79 - 24
Assets/Scripts/Script/DeckBuildingRule.cs

@@ -1,3 +1,5 @@
+using DCGO.CardEntities;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using UnityEngine;
@@ -63,13 +65,16 @@ public class DeckBuildingRule : MonoBehaviour
             }
 
             //規定枚数以上のカードを抜く
+            if (!ContinuousController.instance.useBanlist)
+                return deckCards;
+
             foreach (CEntity_Base cEntity_Base in DistinctDeckCards1)
             {
-                foreach (CardLimitCount cardLimitCount in ContinuousController.instance.BanList.CardLimitCounts)
+                foreach (Restrictions restriction in ContinuousController.instance.BanList.Restrictions)
                 {
-                    if (cEntity_Base.CardID == cardLimitCount.CardID)
+                    if (cEntity_Base.CardID == restriction.id)
                     {
-                        while (cEntity_Base.SameCardIDCount(deckCards) > cardLimitCount.LimitCount)
+                        while (cEntity_Base.SameCardIDCount(deckCards) > restriction.limit)
                         {
                             CEntity_Base removeCard = deckCards.Find(cEntity_Base1 => cEntity_Base1.CardID == cEntity_Base.CardID);
 
@@ -81,15 +86,14 @@ public class DeckBuildingRule : MonoBehaviour
                     }
                 }
 
-                foreach (BannedPair bannedPair in ContinuousController.instance.BanList.BannedPairs)
+                foreach (Pair bannedPair in ContinuousController.instance.BanList.BannedPair)
                 {
-                    if (cEntity_Base.CardID == bannedPair.CardID_A)
+                    if (cEntity_Base.CardID == bannedPair.id)
                     {
-                        UnityEngine.Debug.Log($"Banned Pair Found: {deckCards.Some(cEntity_Base1 => bannedPair.CardIDs_B.Contains(cEntity_Base1.CardID))}");
-                        while (deckCards.Some(cEntity_Base1 => bannedPair.CardIDs_B.Contains(cEntity_Base1.CardID)))
+                        while (deckCards.Some(cEntity_Base1 => bannedPair.pairs.Contains(cEntity_Base1.CardID)))
                         {
-                            CEntity_Base removeCard = deckCards.Find(cEntity_Base1 => bannedPair.CardIDs_B.Contains(cEntity_Base1.CardID));
-                            UnityEngine.Debug.Log($"Banned Pair: {removeCard.CardID}");
+                            CEntity_Base removeCard = deckCards.Find(cEntity_Base1 => bannedPair.pairs.Contains(cEntity_Base1.CardID));
+
                             if (removeCard != null)
                             {
                                 deckCards.Remove(removeCard);
@@ -97,12 +101,12 @@ public class DeckBuildingRule : MonoBehaviour
                         }
                     }
 
-                    if (bannedPair.CardIDs_B.Contains(cEntity_Base.CardID))
+                    if (bannedPair.pairs.Contains(cEntity_Base.CardID))
                     {
-                        while (deckCards.Some(cEntity_Base1 => cEntity_Base1.CardID == bannedPair.CardID_A))
+                        while (deckCards.Some(cEntity_Base1 => cEntity_Base1.CardID == bannedPair.id))
                         {
-                            CEntity_Base removeCard = deckCards.Find(cEntity_Base1 => bannedPair.CardID_A.Contains(cEntity_Base1.CardID));
-                            UnityEngine.Debug.Log($"Banned Pair: {removeCard.CardID}");
+                            CEntity_Base removeCard = deckCards.Find(cEntity_Base1 => bannedPair.id.Contains(cEntity_Base1.CardID));
+
                             if (removeCard != null)
                             {
                                 deckCards.Remove(removeCard);
@@ -131,11 +135,14 @@ public class DeckBuildingRule : MonoBehaviour
     {
         int count = cEntity_Base.MaxCountInDeck;
 
-        foreach (CardLimitCount cardLimitCount in ContinuousController.instance.BanList.CardLimitCounts)
+        if (!ContinuousController.instance.useBanlist)
+            return count;
+
+        foreach (Restrictions restriction in ContinuousController.instance.BanList.Restrictions)
         {
-            if (cEntity_Base.CardID == cardLimitCount.CardID)
+            if (cEntity_Base.CardID == restriction.id)
             {
-                count = cardLimitCount.LimitCount;
+                count = restriction.limit;
                 break;
             }
         }
@@ -166,30 +173,33 @@ public class DeckBuildingRule : MonoBehaviour
             }
         }
 
-        foreach (CardLimitCount cardLimitCount in ContinuousController.instance.BanList.CardLimitCounts)
+        if (!ContinuousController.instance.useBanlist)
+            return true;
+
+        foreach (Restrictions restriction in ContinuousController.instance.BanList.Restrictions)
         {
-            if (cEntity_Base.CardID == cardLimitCount.CardID)
+            if (cEntity_Base.CardID == restriction.id)
             {
-                if (cEntity_Base.SameCardIDCount(deckData.AllDeckCards()) >= cardLimitCount.LimitCount)
+                if (cEntity_Base.SameCardIDCount(deckData.AllDeckCards()) >= restriction.limit)
                 {
                     return false;
                 }
             }
         }
 
-        foreach (BannedPair bannedPair in ContinuousController.instance.BanList.BannedPairs)
+        foreach (Pair bannedPair in ContinuousController.instance.BanList.BannedPair)
         {
-            if (cEntity_Base.CardID == bannedPair.CardID_A)
+            if (cEntity_Base.CardID == bannedPair.id)
             {
-                if (deckData.AllDeckCards().Some(cEntity_Base1 => bannedPair.CardIDs_B.Contains(cEntity_Base1.CardID)))
+                if (deckData.AllDeckCards().Some(cEntity_Base1 => bannedPair.pairs.Contains(cEntity_Base1.CardID)))
                 {
                     return false;
                 }
             }
 
-            if (bannedPair.CardIDs_B.Contains(cEntity_Base.CardID))
+            if (bannedPair.pairs.Contains(cEntity_Base.CardID))
             {
-                if (deckData.AllDeckCards().Some(cEntity_Base1 => cEntity_Base1.CardID == bannedPair.CardID_A))
+                if (deckData.AllDeckCards().Some(cEntity_Base1 => cEntity_Base1.CardID == bannedPair.id))
                 {
                     return false;
                 }
@@ -200,6 +210,51 @@ public class DeckBuildingRule : MonoBehaviour
     }
 }
 
+#region Banlist
+[Serializable]
+public class BanList
+{
+    public List<Pair> BannedPair;
+    public List<Restrictions> Restrictions;
+
+    public BanList()
+    {
+        BannedPair = new List<Pair>();
+        Restrictions = new List<Restrictions>();
+    }
+
+    
+
+    public CardRestriction ConvertToCardRestriction()
+    {
+        List<CardLimitCount> CardLimit = new List<CardLimitCount>();
+        List<BannedPair> BannedPairs = new List<BannedPair>();
+
+        foreach (Pair pair in BannedPair)
+            BannedPairs.Add(new BannedPair(pair.id, pair.pairs));
+
+        foreach (Restrictions restrict in Restrictions)
+            CardLimit.Add(new CardLimitCount(restrict.id, restrict.limit));
+
+        return new CardRestriction(CardLimit, BannedPairs);
+    }
+}
+
+[Serializable]
+public class Pair
+{
+    public string id;
+    public List<string> pairs;
+}
+
+[Serializable]
+public class Restrictions
+{
+    public string id;
+    public int limit;
+}
+#endregion
+
 public class CardRestriction
 {
     public CardRestriction(List<CardLimitCount> cardLimitCounts, List<BannedPair> bannedPairs)

+ 1 - 0
Assets/Scripts/Script/EnterRoom.cs

@@ -105,6 +105,7 @@ public class EnterRoom : MonoBehaviourPunCallbacks
 
     public override void OnJoinRoomFailed(short returnCode, string message)
     {
+        Debug.Log($"{returnCode} - {message}");
         Opening.instance.PlayDecisionSE();
         Opening.instance.SetUpActiveYesNoObject(
             new List<UnityAction>() { null },

+ 32 - 0
Assets/Scripts/Script/GameplayOption.cs

@@ -1,3 +1,4 @@
+using Photon.Pun;
 using System;
 using System.Collections;
 using System.Collections.Generic;
@@ -18,6 +19,7 @@ public class GameplayOption : OffAnimation
     [SerializeField] Toggle _autoMinDigivolutionCostToggle;
     [SerializeField] Toggle _autoMaxCardCountToggle;
     [SerializeField] Toggle _autoHatchToggle;
+    [SerializeField] Toggle _banlistToggle;
 
     public void Close()
     {
@@ -117,6 +119,15 @@ public class GameplayOption : OffAnimation
                 onToggleChanged: OnAutoHatchToggleChanged,
                 value: ContinuousController.instance.autoHatch
             );
+
+            OptionUtility.InitToggle(
+               toggle: _banlistToggle,
+               onToggleChanged: OnUseBanlistToggleChanged,
+               value: ContinuousController.instance.useBanlist
+           );
+
+            if (ContinuousController.instance.BanList.Restrictions.Count == 0 || PhotonNetwork.InRoom)
+                _banlistToggle.interactable = false;
         }
 
         gameObject.SetActive(true);
@@ -351,4 +362,25 @@ public class GameplayOption : OffAnimation
         OnAutoHatchToggleChanged(!_autoHatchToggle.isOn);
     }
     #endregion
+
+    #region Use Banlist
+
+    public void OnUseBanlistToggleChanged(bool value)
+    {
+        if (ContinuousController.instance == null) return;
+
+        OptionUtility.OnToggleChanged(
+            value: value,
+            toggle: _banlistToggle,
+            onToggleChanged: OnUseBanlistToggleChanged,
+            settingRef: ref ContinuousController.instance.useBanlist,
+            saveAction: ContinuousController.instance.SaveUseBanlist
+        );
+    }
+
+    public void HandleUseBanlistToggle()
+    {
+        OnUseBanlistToggleChanged(!_banlistToggle.isOn);
+    }
+    #endregion
 }

+ 24 - 0
Assets/Scripts/Script/Helper Scripts/DisableForBanlist.cs

@@ -0,0 +1,24 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+[RequireComponent(typeof(Button))]
+public class DisableForBanlist : MonoBehaviour
+{
+    private Button _button;
+
+    // Start is called before the first frame update
+    void Awake()
+    {
+        _button = GetComponent<Button>();
+    }
+
+    private void OnEnable()
+    {
+        if (ContinuousController.instance == null)
+            return;
+
+        _button.interactable = ContinuousController.instance.useBanlist;
+    }
+}

+ 11 - 0
Assets/Scripts/Script/Helper Scripts/DisableForBanlist.cs.meta

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

+ 1 - 0
Assets/Scripts/Script/OptionUtility.cs

@@ -16,6 +16,7 @@ public static class OptionUtility
     public static void OnToggleChanged(bool value, Toggle toggle, UnityAction<bool> onToggleChanged, ref bool settingRef, UnityAction saveAction)
     {
         if (toggle == null) return;
+        if (!toggle.interactable) return;
         if (saveAction == null) return;
 
         toggle.onValueChanged.RemoveAllListeners();

+ 6 - 5
Assets/Scripts/Script/RoomManager.cs

@@ -136,19 +136,20 @@ public class RoomManager : MonoBehaviourPunCallbacks
             roomOptions.CustomRoomProperties = new Hashtable()
             {
                 { "RoomCreator",PhotonNetwork.NickName },
-
+                { "UseBanlist", ContinuousController.instance.useBanlist }
             };
 
             //Display custom property information in the lobby
             roomOptions.CustomRoomPropertiesForLobby = new string[]
             {
                 "RoomCreator",
+                "UseBanlist"
             };
 
             string RoomName = StringUtils.GeneratePassword_Num(5);
 
             //Create Room
-            PhotonNetwork.CreateRoom(RoomName, roomOptions, null);
+            PhotonNetwork.CreateRoom(RoomName + "-" + ContinuousController.instance.useBanlist, roomOptions, null);
 
             while (true)
             {
@@ -232,7 +233,7 @@ public class RoomManager : MonoBehaviourPunCallbacks
 
     #endregion
 
-    #region Room information is acquired and reflected in the UI
+    #region Room information is acquired and reflected in the UIs
     public IEnumerator ShowRoomInfo()
     {
         yield return new WaitWhile(() => !PhotonNetwork.IsConnectedAndReady);
@@ -240,7 +241,7 @@ public class RoomManager : MonoBehaviourPunCallbacks
 
         #region RoomName
         string RoomName = PhotonNetwork.CurrentRoom.Name;
-        RoomIDText.text = RoomName;
+        RoomIDText.text = RoomName.Substring(0,5);
         #endregion
     }
     #endregion
@@ -802,7 +803,7 @@ public class RoomManager : MonoBehaviourPunCallbacks
         if (PhotonNetwork.InRoom)
         {
             #region クリップボードにデッキコードをコピー
-            GUIUtility.systemCopyBuffer = PhotonNetwork.CurrentRoom.Name;
+            GUIUtility.systemCopyBuffer = PhotonNetwork.CurrentRoom.Name.Substring(0, 5);
             #endregion
 
             List<UnityAction> Commands = new List<UnityAction>()

+ 3 - 3
Assets/Scripts/Script/YesNoObject.cs

@@ -26,10 +26,7 @@ public class YesNoObject : MonoBehaviour
         for (int i = 0; i < Buttons.Count; i++)
         {
             Buttons[i].OnClickAction = null;
-        }
 
-        for (int i = 0; i < Buttons.Count; i++)
-        {
             if (i < OnClickActions.Count)
             {
                 Buttons[i].gameObject.SetActive(true);
@@ -40,6 +37,9 @@ public class YesNoObject : MonoBehaviour
 
                 Buttons[i].OnClickAction = () => 
                 {
+                    if (!Buttons[k].GetComponent<Button>().interactable)
+                        return;
+
                     OnClickActions[k]?.Invoke();
                     
                     if(this.CloseOnButtonClicked)

+ 1 - 1
ProjectSettings/ProjectSettings.asset

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