Parcourir la source

Merge branch 'BT15_Red'

mbunch_kascope il y a 2 ans
Parent
commit
d0fc3179bb
40 fichiers modifiés avec 757 ajouts et 78 suppressions
  1. 8 0
      .idea/.idea.DCGO2/.idea/indexLayout.xml
  2. 6 0
      .idea/.idea.DCGO2/.idea/projectSettingsUpdater.xml
  3. 6 0
      .idea/.idea.DCGO2/.idea/vcs.xml
  4. 111 0
      .idea/.idea.DCGO2/.idea/workspace.xml
  5. 2 2
      Assets/CardBaseEntity/BT15/Red/DigiEgg/Yokomon-BT15-001.asset
  6. 2 2
      Assets/CardBaseEntity/BT15/Red/DigiEgg/Yokomon-BT15-001_P1.asset
  7. 2 2
      Assets/CardBaseEntity/BT15/Red/Digimon/Biyomon-BT15-007.asset
  8. 2 2
      Assets/CardBaseEntity/BT15/Red/Digimon/Biyomon-BT15-007_P1.asset
  9. 1 1
      Assets/CardBaseEntity/BT15/Red/Digimon/Garudamon-BT15-014_P2.asset
  10. 1 1
      Assets/CardEffect/BT15/Red/Akatorimon_BT15_010.cs
  11. 1 1
      Assets/CardEffect/BT15/Red/Birdramon_BT15_013.cs
  12. 3 3
      Assets/CardEffect/BT15/Red/Biyomon_BT15_007.cs
  13. 0 0
      Assets/CardEffect/BT15/Red/Biyomon_BT15_007.cs.meta
  14. 218 0
      Assets/CardEffect/BT15/Red/Brachiomon_BT15_016.cs
  15. 1 1
      Assets/CardEffect/BT15/Red/Brachiomon_BT15_016.cs.meta
  16. 3 3
      Assets/CardEffect/BT15/Red/Cannondramon_BT15_018.cs
  17. 0 0
      Assets/CardEffect/BT15/Red/Cannondramon_BT15_018.cs.meta
  18. 3 3
      Assets/CardEffect/BT15/Red/GarudamonAce_BT15_014.cs
  19. 1 1
      Assets/CardEffect/BT15/Red/Meramon_BT15_009.cs
  20. 2 2
      Assets/CardEffect/BT15/Red/Meteor_Wing_BT15_089.cs
  21. 0 0
      Assets/CardEffect/BT15/Red/Meteor_Wing_BT15_089.cs.meta
  22. 1 1
      Assets/CardEffect/BT15/Red/Muchomon_BT15_008.cs
  23. 4 4
      Assets/CardEffect/BT15/Red/Phoenixmon_BT15_017.cs
  24. 0 0
      Assets/CardEffect/BT15/Red/Phoenixmon_BT15_017.cs.meta
  25. 1 1
      Assets/CardEffect/BT15/Red/ShoutmonX2_BT15_012.cs
  26. 2 2
      Assets/CardEffect/BT15/Red/SkullMeramon_BT15_015.cs
  27. 0 0
      Assets/CardEffect/BT15/Red/SkullMeramon_BT15_015.cs.meta
  28. 189 0
      Assets/CardEffect/BT15/Red/Sora_Takenouchi_BT15_082.cs
  29. 11 0
      Assets/CardEffect/BT15/Red/Sora_Takenouchi_BT15_082.cs.meta
  30. 4 4
      Assets/CardEffect/BT15/Red/Tyrannomon_BT15_011.cs
  31. 0 0
      Assets/CardEffect/BT15/Red/Tyrannomon_BT15_011.cs.meta
  32. 23 25
      Assets/CardEffect/BT15/Red/Wings_of_Love_BT15_088.cs
  33. 11 0
      Assets/CardEffect/BT15/Red/Wings_of_Love_BT15_088.cs.meta
  34. 2 2
      Assets/CardEffect/BT15/Red/Yokomon_BT15_001.cs
  35. 0 0
      Assets/CardEffect/BT15/Red/Yokomon_BT15_001.cs.meta
  36. 38 0
      Assets/Scripts/CardEffectCommons/CanUseEffects/OnCardsReturnToHandFromTrash.cs
  37. 11 0
      Assets/Scripts/CardEffectCommons/CanUseEffects/OnCardsReturnToHandFromTrash.cs.meta
  38. 32 15
      Assets/Scripts/CardObjectController.cs
  39. 1 0
      Assets/Scripts/ICardEffect.cs
  40. 54 0
      lfs/objects/8c/4a/8c4a4795e56e873ee64823fd7d89121c77e6459cbcc8dc6160af57c6dce9046b

+ 8 - 0
.idea/.idea.DCGO2/.idea/indexLayout.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="UserContentModel">
+    <attachedFolders />
+    <explicitIncludes />
+    <explicitExcludes />
+  </component>
+</project>

+ 6 - 0
.idea/.idea.DCGO2/.idea/projectSettingsUpdater.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RiderProjectSettingsUpdater">
+    <option name="vcsConfiguration" value="2" />
+  </component>
+</project>

+ 6 - 0
.idea/.idea.DCGO2/.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 111 - 0
.idea/.idea.DCGO2/.idea/workspace.xml

@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AutoImportSettings">
+    <option name="autoReloadType" value="SELECTIVE" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="2a604e7d-e63d-47d6-bb9b-f1a732f88899" name="Changes" comment="">
+      <change beforePath="$PROJECT_DIR$/.idea/.idea.DCGO2/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.DCGO2/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/Assets/CardEffect/BT15/Red/Sora_Takenouchi_BT15_082.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/CardEffect/BT15/Red/Sora_Takenouchi_BT15_082.cs" afterDir="false" />
+    </list>
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="MarkdownSettingsMigration">
+    <option name="stateVersion" value="1" />
+  </component>
+  <component name="ProjectId" id="2esWFrVxdACMPvDyicZCQZotfkh" />
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent">{
+  &quot;keyToString&quot;: {
+    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
+    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
+    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
+    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
+    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
+    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
+    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
+    &quot;settings.editor.selected.configurable&quot;: &quot;preferences.fileTypes&quot;,
+    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
+  },
+  &quot;keyToStringList&quot;: {
+    &quot;rider.external.source.directories&quot;: [
+      &quot;C:\\Users\\wwm0n\\AppData\\Roaming\\JetBrains\\Rider2023.1\\resharper-host\\DecompilerCache&quot;,
+      &quot;C:\\Users\\wwm0n\\AppData\\Roaming\\JetBrains\\Rider2023.1\\resharper-host\\SourcesCache&quot;,
+      &quot;C:\\Users\\wwm0n\\AppData\\Local\\Symbols\\src&quot;
+    ]
+  }
+}</component>
+  <component name="RunManager" selected="Attach to Unity Editor.Attach to Unity Editor">
+    <configuration name="Standalone Player" type="RunUnityExe" factoryName="Unity Executable">
+      <option name="EXE_PATH" value="$USER_HOME$/Desktop/DCGO_Test_LM01/Game\DCGO.exe" />
+      <option name="PROGRAM_PARAMETERS" value="" />
+      <option name="WORKING_DIRECTORY" value="C:\Users\wwm0n\Desktop\DCGO_Test_Black\Game" />
+      <option name="PASS_PARENT_ENVS" value="1" />
+      <option name="USE_EXTERNAL_CONSOLE" value="0" />
+      <method v="2" />
+    </configuration>
+    <configuration name="Start Unity" type="RunUnityExe" factoryName="Unity Executable">
+      <option name="EXE_PATH" value="C:\Program Files\Unity\Hub\Editor\2021.3.15f1\Editor\Unity.exe" />
+      <option name="PROGRAM_PARAMETERS" value="-projectPath D:\Development\Unity\Git\DCGO2 -debugCodeOptimization" />
+      <option name="WORKING_DIRECTORY" value="D:\Development\Unity\Git\DCGO2" />
+      <option name="PASS_PARENT_ENVS" value="1" />
+      <option name="USE_EXTERNAL_CONSOLE" value="0" />
+      <method v="2" />
+    </configuration>
+    <configuration name="Unit Tests (batch mode)" type="RunUnityExe" factoryName="Unity Executable">
+      <option name="EXE_PATH" value="C:\Program Files\Unity\Hub\Editor\2021.3.15f1\Editor\Unity.exe" />
+      <option name="PROGRAM_PARAMETERS" value="-runTests -batchmode -projectPath D:\Development\Unity\Git\DCGO2 -testResults Logs/results.xml -testPlatform EditMode -debugCodeOptimization" />
+      <option name="WORKING_DIRECTORY" value="D:\Development\Unity\Git\DCGO2" />
+      <option name="PASS_PARENT_ENVS" value="1" />
+      <option name="USE_EXTERNAL_CONSOLE" value="0" />
+      <method v="2" />
+    </configuration>
+    <configuration name="Attach to Unity Editor &amp; Play" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="UNITY_ATTACH_AND_PLAY" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost">
+      <option name="allowRunningInParallel" value="false" />
+      <option name="listenPortForConnections" value="false" />
+      <option name="pid" />
+      <option name="projectPathOnTarget" />
+      <option name="selectedOptions">
+        <list />
+      </option>
+      <method v="2" />
+    </configuration>
+    <configuration name="Attach to Unity Editor" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="Unity Debug" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost">
+      <option name="allowRunningInParallel" value="false" />
+      <option name="listenPortForConnections" value="false" />
+      <option name="pid" />
+      <option name="projectPathOnTarget" />
+      <option name="selectedOptions">
+        <list />
+      </option>
+      <method v="2" />
+    </configuration>
+  </component>
+  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="2a604e7d-e63d-47d6-bb9b-f1a732f88899" name="Changes" comment="" />
+      <created>1712693666168</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1712693666168</updated>
+      <workItem from="1712693666604" duration="9048000" />
+      <workItem from="1712884503542" duration="3569000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="3" />
+  </component>
+  <component name="UnityProjectConfiguration" hasMinimizedUI="true" />
+  <component name="UnityUnitTestConfiguration" currentTestLauncher="Both" />
+  <component name="VcsManagerConfiguration">
+    <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
+  </component>
+</project>

+ 2 - 2
Assets/CardBaseEntity/BT15/Red/DigiEgg/Yokomon-BT15-001.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:c6487d068fc7491296320004aa55eb77a16bda798ef8004046edb963aad7f6af
-size 1535
+oid sha256:a171b31e62a710bbb956fa1834ca5626a2be46e861fd840f6d0650cd27e12869
+size 1521

+ 2 - 2
Assets/CardBaseEntity/BT15/Red/DigiEgg/Yokomon-BT15-001_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:c288ad490a77afa01967ba7b77c5071337dc1a36b381beaea1349acdb174cd82
-size 1541
+oid sha256:ca59671f6690b71d11ef237a49022bffc505e8ef4b30e5b1e39ac4c3a473b427
+size 1527

+ 2 - 2
Assets/CardBaseEntity/BT15/Red/Digimon/Biyomon-BT15-007.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:779ea7b06ffd94881a1d9f5458d28b92af82f3390d9ced2ad558a68e32ac44e4
-size 1818
+oid sha256:2d7fc42cce4390cd08430e2289ea2256209c15c7fb93cb0b9362604aeb349fe7
+size 1800

+ 2 - 2
Assets/CardBaseEntity/BT15/Red/Digimon/Biyomon-BT15-007_P1.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:fec476536d0c4a36a559ee2728c2b461e5ec7e9109fed36b079c60ea57977d20
-size 1824
+oid sha256:214dcbebf35bc59f6140218589d09db82576657078e873b6abb82b4c1a672f85
+size 1806

+ 1 - 1
Assets/CardBaseEntity/BT15/Red/Digimon/Garudamon-BT15-014_P2.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:65adfbbc648a1ae04980fe1a8d0219534f52eb7983a65b9cf20899e0e9bd143e
+oid sha256:8c4a4795e56e873ee64823fd7d89121c77e6459cbcc8dc6160af57c6dce9046b
 size 1519

+ 1 - 1
Assets/CardEffect/BT15/Red/Akatorimon_BT15_010.cs

@@ -20,7 +20,7 @@ public class Akatorimon_BT15_010 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[Your Turn] When one of your Digimon with [Greymon] in its name attacks (other than [DoruGreymon],[BurningGreymon], or [DexDoruGreymon]), you may suspend this Tamer to gain 1 memory.";
+                return "[Your Turn][Once per turn] When your Digimon attacks a player, delete 1 of your opponent's Digimon with 3000DP or less.";
             }
 
             bool PermanentCondition(Permanent permanent)

+ 1 - 1
Assets/CardEffect/BT15/Red/Birdramon_BT15_013.cs

@@ -19,7 +19,7 @@ public class Birdramon_BT15_013 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[On Play] Return 1 Digimon card with [Agumon] in its name from your trash to your hand.";
+                return "[When Digivolving] Return 1 red Digimon card with [Avian], [Bird], [Beast], [Animal] or [Sovereign], other than [Sea Animal], in one of it's traits from your trash to the hand.";
             }
 
             bool CanSelectCardCondition(CardSource cardSource)

+ 3 - 3
Assets/CardEffect/BT15/Red/Piyomon_BT15_007.cs → Assets/CardEffect/BT15/Red/Biyomon_BT15_007.cs

@@ -6,7 +6,7 @@ using Photon;
 using System;
 using Photon.Pun;
 
-public class Piyomon_BT15_007 : CEntity_Effect
+public class Biyomon_BT15_007 : CEntity_Effect
 {
     public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
     {
@@ -21,7 +21,7 @@ public class Piyomon_BT15_007 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[Start of Your Main Phase] If you have a Tamer with [Tai Kamiya] in its name, this Digimon may digivolve into [Greymon] in your hand without paying the cost.";
+                return "[Start of Your Main Phase] By trashing 1 Digimon with [Avian], [Bird], [Beast], or [Sovereign], other that [Sea Animal], in one of its traits in your hard, reveal the top 4 cards of your deck. Add 1 red card among them to your hand. Return the rest to the bottom of the deck.";
             }
 
             bool CanSelectCardCondition(CardSource cardSource)
@@ -142,7 +142,7 @@ public class Piyomon_BT15_007 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[Your Turn][Once Per Turn] When a card is removed from your opponent's security stack, <Draw 1>.";
+                return "[Your Turn][Once Per Turn] When a card is removed from your opponent's security stack, gain 1 memory.";
             }
 
             bool CanUseCondition(Hashtable hashtable)

+ 0 - 0
Assets/CardEffect/BT15/Red/Piyomon_BT15_007.cs.meta → Assets/CardEffect/BT15/Red/Biyomon_BT15_007.cs.meta


+ 218 - 0
Assets/CardEffect/BT15/Red/Brachiomon_BT15_016.cs

@@ -0,0 +1,218 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Linq;
+using Photon;
+using System;
+using Photon.Pun;
+public class Brachiomon_BT15_016 : CEntity_Effect
+{
+    public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+    {
+        List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+        #region On Play - When Digivolving
+        if (timing == EffectTiming.OnEnterFieldAnyone)
+        {
+            ActivateClass activateClass = new ActivateClass();
+            activateClass.SetUpICardEffect("Opponent's 1 Digimon with 8000 DP or more can't attak and delete 1 Digimon with 6000 DP or less", CanUseCondition, card);
+            activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
+            cardEffects.Add(activateClass);
+
+            string EffectDiscription()
+            {
+                return "[On Play] [When Digivolving] If your opponent has 4 or less memory, 1 of your opponent's Digimon with 8000 DP or more can't attack until the end of their turn. If they have 4 or more, delete 1 of their Digimon with 6000 DP or less.";
+            }
+
+            bool CanSelectPermanentCondition(Permanent permanent)
+            {
+                if (CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card))
+                {
+                    if (permanent.DP >= 8000)
+                    {
+                        return true;
+                    }
+                }
+
+                return false;
+            }
+
+            bool CanSelectPermanentCondition1(Permanent permanent)
+            {
+                if (CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card))
+                {
+                    if (permanent.DP <= card.Owner.MaxDP_DeleteEffect(6000, activateClass))
+                    {
+                        return true;
+                    }
+                }
+
+                return false;
+            }
+
+            bool CanUseCondition(Hashtable hashtable)
+            {
+                return CardEffectCommons.CanTriggerOnPlay(hashtable, card) || CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
+            }
+
+            bool CanActivateCondition(Hashtable hashtable)
+            {
+                if (CardEffectCommons.IsExistOnBattleArea(card))
+                {
+                    if (card.Owner.Enemy.MemoryForPlayer <= 4)
+                    {
+                        if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition))
+                        {
+                            return true;
+                        }
+                    }
+
+                    if (card.Owner.Enemy.MemoryForPlayer >= 4)
+                    {
+                        if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition1))
+                        {
+                            return true;
+                        }
+                    }
+                }
+
+                return false;
+            }
+
+            IEnumerator ActivateCoroutine(Hashtable _hashtable)
+            {
+                if (card.Owner.Enemy.MemoryForPlayer <= 4)
+                {
+                    if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition))
+                    {
+                        int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectPermanentCondition));
+
+                        SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                        selectPermanentEffect.SetUp(
+                            selectPlayer: card.Owner,
+                            canTargetCondition: CanSelectPermanentCondition,
+                            canTargetCondition_ByPreSelecetedList: null,
+                            canEndSelectCondition: null,
+                            maxCount: maxCount,
+                            canNoSelect: false,
+                            canEndNotMax: false,
+                            selectPermanentCoroutine: SelectPermanentCoroutine,
+                            afterSelectPermanentCoroutine: null,
+                            mode: SelectPermanentEffect.Mode.Custom,
+                            cardEffect: activateClass);
+
+                        selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon that can't attack", "The opponent is selecting 1 Digimon that can't attack.");
+
+                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
+                        IEnumerator SelectPermanentCoroutine(Permanent permanent)
+                        {
+                            yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotAttack(targetPermanent: permanent, defenderCondition: null, effectDuration: EffectDuration.UntilOpponentTurnEnd, activateClass: activateClass, effectName: "Can't Attack"));
+                        }
+                    }
+                }
+
+                if (card.Owner.Enemy.MemoryForPlayer >= 4)
+                {
+                    if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition1))
+                    {
+                        int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectPermanentCondition1));
+
+                        SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                        selectPermanentEffect.SetUp(
+                            selectPlayer: card.Owner,
+                            canTargetCondition: CanSelectPermanentCondition1,
+                            canTargetCondition_ByPreSelecetedList: null,
+                            canEndSelectCondition: null,
+                            maxCount: maxCount,
+                            canNoSelect: false,
+                            canEndNotMax: false,
+                            selectPermanentCoroutine: null,
+                            afterSelectPermanentCoroutine: null,
+                            mode: SelectPermanentEffect.Mode.Destroy,
+                            cardEffect: activateClass);
+
+                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+                    }
+                }
+            }
+        }
+        #endregion
+
+        #region On Deletion - Inherited Effect
+        if (timing == EffectTiming.OnDestroyedAnyone)
+        {
+            ActivateClass activateClass = new ActivateClass();
+            activateClass.SetUpICardEffect("Return 1 Digimon to hand", CanUseCondition, card);
+            activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
+            activateClass.SetIsInheritedEffect(true);
+            cardEffects.Add(activateClass);
+
+            string EffectDiscription()
+            {
+                return "[On Deletion] Return 1 of your opponent's Digimon with 7000 DP or less to the hand.";
+            }
+
+            bool CanSelectPermanentCondition(Permanent permanent)
+            {
+                if (CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card))
+                {
+                    if (permanent.DP <= 7000)
+                    {
+                        return true;
+                    }
+                }
+
+                return false;
+            }
+
+            bool CanUseCondition(Hashtable hashtable)
+            {
+                return CardEffectCommons.CanTriggerOnDeletion(hashtable, card);
+            }
+
+            bool CanActivateCondition(Hashtable hashtable)
+            {
+                if (CardEffectCommons.CanActivateOnDeletionInherited(hashtable, card))
+                {
+                    if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition))
+                    {
+                        return true;
+                    }
+                }
+
+                return false;
+            }
+
+            IEnumerator ActivateCoroutine(Hashtable _hashtable)
+            {
+                if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition))
+                {
+                    int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectPermanentCondition));
+
+                    SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                    selectPermanentEffect.SetUp(
+                        selectPlayer: card.Owner,
+                        canTargetCondition: CanSelectPermanentCondition,
+                        canTargetCondition_ByPreSelecetedList: null,
+                        canEndSelectCondition: null,
+                        maxCount: maxCount,
+                        canNoSelect: false,
+                        canEndNotMax: false,
+                        selectPermanentCoroutine: null,
+                        afterSelectPermanentCoroutine: null,
+                        mode: SelectPermanentEffect.Mode.Bounce,
+                        cardEffect: activateClass);
+
+                    yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+                }
+            }
+        }
+        #endregion
+
+        return cardEffects;
+    }
+}

+ 1 - 1
Assets/CardEffect/BT15/Red/DualWingOfLove_BT15_088.cs.meta → Assets/CardEffect/BT15/Red/Brachiomon_BT15_016.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: fac1ee684717187419754b68b7c929fc
+guid: ca17576e7aadf9e4ebea7012cf507b0c
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 3 - 3
Assets/CardEffect/BT15/Red/Canondramon_BT15_018.cs → Assets/CardEffect/BT15/Red/Cannondramon_BT15_018.cs

@@ -5,7 +5,7 @@ using System.Linq;
 using Photon;
 using System;
 using Photon.Pun;
-public class Canondramon_BT15_018 : CEntity_Effect
+public class Cannondramon_BT15_018 : CEntity_Effect
 {
     public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
     {
@@ -21,7 +21,7 @@ public class Canondramon_BT15_018 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[End of Your Turn] Trash the top card of your security stack.";
+                return "[End of Your Turn] [Once Per Turn] If your opponent has 4 or more memory, delete 1 of their Digimon with the lowest DP.";
             }
 
             bool CanSelectPermanentCondition(Permanent permanent)
@@ -91,7 +91,7 @@ public class Canondramon_BT15_018 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[End of Your Turn] Trash the top card of your security stack.";
+                return "[End of Opponent's Turn] [Once Per Turn] If you have 4 or less memory, delete 1 of your opponent's Digimon with the highest play cost.";
             }
 
             bool CanSelectPermanentCondition(Permanent permanent)

+ 0 - 0
Assets/CardEffect/BT15/Red/Canondramon_BT15_018.cs.meta → Assets/CardEffect/BT15/Red/Cannondramon_BT15_018.cs.meta


+ 3 - 3
Assets/CardEffect/BT15/Red/GarudamonAce_BT15_014.cs

@@ -25,7 +25,7 @@ public class GarudamonAce_BT15_014 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[On Play] Delete 1 of your opponent's Digimon with 6000 DP or less.";
+                return "[On Play] You may play 1 red Tamer card with a play cost of 4 or less from your hand without paying the cost.";
             }
 
             bool CanSelectCardCondition(CardSource cardSource)
@@ -118,7 +118,7 @@ public class GarudamonAce_BT15_014 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[On Play] Delete 1 of your opponent's Digimon with 6000 DP or less.";
+                return "[When Digivolving] You may play 1 red Tamer card with a play cost of 4 or less from your hand without paying the cost.";
             }
 
             bool CanSelectCardCondition(CardSource cardSource)
@@ -212,7 +212,7 @@ public class GarudamonAce_BT15_014 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[All Turns][Once Per Turn] When you play a Tamer, you may play 1 level 3 Digimon card from your hand without paying the cost.";
+                return "[All Turns][Once Per Turn] When your Tamer card is played, delete 1 of your opponent's Digimon with [Blocker].";
             }
 
             bool PermanentCondition(Permanent permanent)

+ 1 - 1
Assets/CardEffect/BT15/Red/Meramon_BT15_009.cs

@@ -19,7 +19,7 @@ public class Meramon_BT15_009 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[Main] If you have a level 5 or higher green Digimon in play�Cyou can suspend this Tamer to reveal the top card of your deck. If that card is a Digimon card�Cadd it to your hand. Otherwise place it at the bottom of your deck.";
+                return "[Main][Once per turn] By paying 2 memory, delete 1 of your opponent's Digimon with DP less than or equal to this Digimon.";
             }
 
             bool CanSelectPermanentCondition(Permanent permanent)

+ 2 - 2
Assets/CardEffect/BT15/Red/MeteorWing_BT15_089.cs → Assets/CardEffect/BT15/Red/Meteor_Wing_BT15_089.cs

@@ -6,7 +6,7 @@ using Photon;
 using System;
 using Photon.Pun;
 
-public class MeteorWing_BT15_089 : CEntity_Effect
+public class Meteor_Wing_BT15_089 : CEntity_Effect
 {
     public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
     {
@@ -21,7 +21,7 @@ public class MeteorWing_BT15_089 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[Main] Delete 1 of your opponent's Digimon with 4000 DP or less.";
+                return "[Main] Delete 1 of your opponent's Digimon with 15000 DP or less. For each of your opponent's security cards, subtract 2000 from the maximum this DP-based deletion effect can delete.";
             }
 
             bool CanSelectPermanentCondition(Permanent permanent)

+ 0 - 0
Assets/CardEffect/BT15/Red/MeteorWing_BT15_089.cs.meta → Assets/CardEffect/BT15/Red/Meteor_Wing_BT15_089.cs.meta


+ 1 - 1
Assets/CardEffect/BT15/Red/Muchomon_BT15_008.cs

@@ -18,7 +18,7 @@ public class Muchomon_BT15_008 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[Your Turn] When one of your Digimon with [Greymon] in its name attacks (other than [DoruGreymon],[BurningGreymon], or [DexDoruGreymon]), you may suspend this Tamer to gain 1 memory.";
+                return "[Your Turn][Once per turn] When your red Digimon attacks a play, [Draw 1].";
             }
 
             bool PermanentCondition(Permanent permanent)

+ 4 - 4
Assets/CardEffect/BT15/Red/Hoohmon_BT15_017.cs → Assets/CardEffect/BT15/Red/Phoenixmon_BT15_017.cs

@@ -6,7 +6,7 @@ using Photon;
 using System;
 using Photon.Pun;
 
-public class Hoohmon_BT15_017 : CEntity_Effect
+public class Phoenixmon_BT15_017 : CEntity_Effect
 {
     public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
     {
@@ -21,7 +21,7 @@ public class Hoohmon_BT15_017 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[On Play] Delete 1 of your opponent's Digimon with <Blocker>.";
+                return "[On Play] If your opponent has 3 or fewer security cards, delete 1 of their Digimon with the lowest DP. If they have 4 or more, trash the top card of their security stack.";
             }
 
             bool CanSelectPermanentCondition(Permanent permanent)
@@ -102,7 +102,7 @@ public class Hoohmon_BT15_017 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[On Deletion] Gain 2 memory.";
+                return "[On Deletion] If your opponent has 3 or fewer security cards, delete 1 of their Digimon with the lowest DP. If they have 4 or more, trash the top card of their security stack.";
             }
 
             bool CanSelectPermanentCondition(Permanent permanent)
@@ -183,7 +183,7 @@ public class Hoohmon_BT15_017 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[On Play] Delete 1 of your opponent's Digimon with 6000 DP or less.";
+                return "[On Play] You may play 1 red Digimon card with 5000 DP or less or 1 red Tamer card from your hand without paying the cost.";
             }
 
             bool CanSelectCardCondition(CardSource cardSource)

+ 0 - 0
Assets/CardEffect/BT15/Red/Hoohmon_BT15_017.cs.meta → Assets/CardEffect/BT15/Red/Phoenixmon_BT15_017.cs.meta


+ 1 - 1
Assets/CardEffect/BT15/Red/ShoutmonX2_BT15_012.cs

@@ -117,7 +117,7 @@ public class ShoutmonX2_BT15_012 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[When Digivolving] Suspend 1 of your opponent's Digimon. That Digimon doesn't unsuspend during their next unsuspend phase.";
+                return "[On Play] Suspend 1 of your opponent's Digimon. If DigiXrosing with 2 cards, that Digimon can't unsuspend during your opponent's next unsuspend phase.";
             }
 
             bool CanSelectPermanentCondition(Permanent permanent)

+ 2 - 2
Assets/CardEffect/BT15/Red/Deathmeramon_BT15_015.cs → Assets/CardEffect/BT15/Red/SkullMeramon_BT15_015.cs

@@ -5,7 +5,7 @@ using System;
 using System.Linq;
 
 
-public class Deathmeramon_BT15_015 : CEntity_Effect
+public class SkullMeramon_BT15_015 : CEntity_Effect
 {
     public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
     {
@@ -21,7 +21,7 @@ public class Deathmeramon_BT15_015 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[Main] If you have a level 5 or higher green Digimon in play�Cyou can suspend this Tamer to reveal the top card of your deck. If that card is a Digimon card�Cadd it to your hand. Otherwise place it at the bottom of your deck.";
+                return "[Main][Once per turn] By paying 2 memory, this Digimon gains [Security A+1] for the turn. Then, this Digimon may attack.";
             }
 
             bool CanUseCondition(Hashtable hashtable)

+ 0 - 0
Assets/CardEffect/BT15/Red/Deathmeramon_BT15_015.cs.meta → Assets/CardEffect/BT15/Red/SkullMeramon_BT15_015.cs.meta


+ 189 - 0
Assets/CardEffect/BT15/Red/Sora_Takenouchi_BT15_082.cs

@@ -0,0 +1,189 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Linq;
+using Photon;
+using System;
+using Photon.Pun;
+
+public class Sora_Takenouchi_BT15_082 : CEntity_Effect
+{
+    public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
+    {
+        List<ICardEffect> cardEffects = new List<ICardEffect>();
+
+        if (timing == EffectTiming.OnStartTurn)
+        {
+            cardEffects.Add(CardEffectFactory.SetMemoryTo3TamerEffect(card));
+        }
+
+        if(timing == EffectTiming.OnReturnCardsToHandFromTrash)
+        {
+            ActivateClass activateClass = new ActivateClass();
+            activateClass.SetUpICardEffect("Return this Tamer to your hand to play a Digimon from your hand.", CanUseCondition, card);
+            activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDiscription());
+            cardEffects.Add(activateClass);
+
+            string EffectDiscription()
+            {
+                return "[All Turns] When a red Digimon card returns from your trash to the hand, by returning this Tamer to the hand, you may play 1 13000 DP or less red Digimon card with [Avian], [Bird], [Beast], [Animal] or [Sovereign], other than [Sea Animal] in one of its traits from your hand without paying the cost. For each of your opponent's security cards, remove 2000 from this effect's playable card's DP maximum.";
+            }
+
+            bool CanSelectPermanentCondition(Permanent permanent)
+            {
+                return permanent.TopCard == card;
+            }
+
+            bool CardReturnedCondition(CardSource cardSource)
+            {
+                return cardSource.CardColors.Contains(CardColor.Red);
+            }
+
+            bool CanUseCondition(Hashtable hashtable)
+            {
+                if (CardEffectCommons.IsExistOnBattleArea(card))
+                {
+                    if (CardEffectCommons.CanTriggerWhenCardsReturnToHandFromTrash(hashtable, CardReturnedCondition, card))
+                    {
+                        return true;
+                    }
+                }
+                
+                return false;
+            }
+
+            bool CanActivateCondition(Hashtable hashtable)
+            {
+                if (CardEffectCommons.IsExistOnBattleArea(card))
+                {
+                        return true;
+                }
+
+                return false;
+            }
+            
+            bool CanSelectCardCondition(CardSource cardSource)
+            {
+                int subAmount = card.Owner.Enemy.SecurityCards.Count * 2000;
+                int cardDP = 13000 - subAmount;
+
+                if (cardSource.CardDP <= cardDP && cardSource.CardColors.Contains(CardColor.Red) && cardSource.Owner == card.Owner)
+                {
+                    if (CardEffectCommons.CanPlayAsNewPermanent(cardSource: cardSource, payCost: false,
+                            cardEffect: activateClass))
+                    {
+                        if (cardSource.ContainsTraits("Avian"))
+                        {
+                            return true;
+                        }
+                        if (cardSource.ContainsTraits("Bird"))
+                        {
+                            return true;
+                        }
+                        if (cardSource.ContainsTraits("Beast"))
+                        {
+                            return true;
+                        }
+                        if (cardSource.ContainsTraits("Animal"))
+                        {
+                            return true;
+                        }
+                        if (cardSource.ContainsTraits("Sovereign"))
+                        {
+                            return true;
+                        }
+                        if (cardSource.ContainsTraits("Sea Animal"))
+                        {
+                            return false;
+                        }
+                    }
+                }
+
+                return false;
+            }
+
+            IEnumerator ActivateCoroutine(Hashtable _hashtable)
+            {
+                Permanent bounceTargetPermanent = null;
+
+                SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                selectPermanentEffect.SetUp(
+                    selectPlayer: card.Owner,
+                    canTargetCondition: CanSelectPermanentCondition,
+                    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 return to hand.", "The opponent is selecting 1 tamer to return to hand.");
+
+                yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
+                IEnumerator SelectPermanentCoroutine(Permanent permanent)
+                {
+                    bounceTargetPermanent = permanent;
+
+                    yield return null;
+                }
+
+                if (bounceTargetPermanent != null)
+                {
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.BouncePeremanentAndProcessAccordingToResult(
+                        targetPermanents: new List<Permanent>() { bounceTargetPermanent },
+                        activateClass: activateClass,
+                        successProcess: SuccessProcess(),
+                        failureProcess: null));
+
+                    IEnumerator SuccessProcess()
+                    {
+                        Debug.Log("Successful Return: Select and Play out digimon");
+                        List<CardSource> selectedCards = new List<CardSource>();
+
+                        SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
+
+                        selectHandEffect.SetUp(
+                            selectPlayer: card.Owner,
+                            canTargetCondition: CanSelectCardCondition,
+                            canTargetCondition_ByPreSelecetedList: null,
+                            canEndSelectCondition: null,
+                            maxCount: 1,
+                            canNoSelect: true,
+                            canEndNotMax: false,
+                            isShowOpponent: true,
+                            selectCardCoroutine: SelectCardCoroutine,
+                            afterSelectCardCoroutine: null,
+                            mode: SelectHandEffect.Mode.Custom,
+                            cardEffect: activateClass);
+
+                        selectHandEffect.SetUpCustomMessage("Select 1 card to play.", "The opponent is selecting 1 card to play.");
+                        selectHandEffect.SetUpCustomMessage_ShowCard("Played Card");
+
+                        yield return StartCoroutine(selectHandEffect.Activate());
+
+                        IEnumerator SelectCardCoroutine(CardSource cardSource)
+                        {
+                            selectedCards.Add(cardSource);
+
+                            yield return null;
+                        }
+
+                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false, root: SelectCardEffect.Root.Hand, activateETB: true));
+                    }
+                }
+            }
+        }
+        
+        
+        if(timing == EffectTiming.SecuritySkill)
+        {
+            cardEffects.Add(CardEffectFactory.PlaySelfTamerSecurityEffect(card));
+        }
+        return cardEffects;    
+    }
+}

+ 11 - 0
Assets/CardEffect/BT15/Red/Sora_Takenouchi_BT15_082.cs.meta

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

+ 4 - 4
Assets/CardEffect/BT15/Red/Tiranomon_BT15_011.cs → Assets/CardEffect/BT15/Red/Tyrannomon_BT15_011.cs

@@ -6,7 +6,7 @@ using Photon;
 using System;
 using Photon.Pun;
 
-public class Tiranomon_BT15_011 : CEntity_Effect
+public class Tyrannomon_BT15_011 : CEntity_Effect
 {
     public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
     {
@@ -47,7 +47,7 @@ public class Tiranomon_BT15_011 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[On Play] Reveal the top 4 cards of your deck. Add 2 cards with [Garurumon]/[X Antibody] in their names among them to the hand. Place the rest at the bottom of the deck. If you added cards, trash 1 card in your hand.";
+                return "[On Play] Reveal the top 4 cards of your deck. Add 1 Digimon card and 1 Tamer card both with the [SoC] trait among them to the hand. Return the rest to the bottom of the deck. If you added, trash 1 card in your hand.";
             }
 
             bool CanSelectCardCondition(CardSource cardSource)
@@ -105,13 +105,13 @@ public class Tiranomon_BT15_011 : CEntity_Effect
                     {
                         new SimplifiedSelectCardConditionClass(
                             canTargetCondition:CanSelectCardCondition,
-                            message: "Select 1 card with [Garurumon]/[X Antibody] in their names.",
+                            message: "Select 1 Digimon card with the [SoC] trait.",
                             mode: SelectCardEffect.Mode.AddHand,
                             maxCount: 1,
                             selectCardCoroutine: null),
                         new SimplifiedSelectCardConditionClass(
                             canTargetCondition:CanSelectCardCondition1,
-                            message: "Select 1 card with [Garurumon]/[X Antibody] in their names.",
+                            message: "Select 1 Tamer card with the [SoC] trait.",
                             mode: SelectCardEffect.Mode.AddHand,
                             maxCount: 1,
                             selectCardCoroutine: null),

+ 0 - 0
Assets/CardEffect/BT15/Red/Tiranomon_BT15_011.cs.meta → Assets/CardEffect/BT15/Red/Tyrannomon_BT15_011.cs.meta


+ 23 - 25
Assets/CardEffect/BT15/Red/DualWingOfLove_BT15_088.cs → Assets/CardEffect/BT15/Red/Wings_of_Love_BT15_088.cs

@@ -6,7 +6,7 @@ using Photon;
 using System;
 using Photon.Pun;
 
-public class DualWingOfLove_BT15_088 : CEntity_Effect
+public class Wings_of_Love_BT15_088 : CEntity_Effect
 {
     public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
     {
@@ -21,23 +21,20 @@ public class DualWingOfLove_BT15_088 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[Main] By placing 1 [Greymon] and 1 [MetalGreymon] from your trash as 1 of your [Agumon]'s bottom digivolution cards, that Digimon may digivolve into [WarGreymon] in your hand without paying the cost, ignoring its digivolution requirements.";
+                return "[Main] You may play 1 red Tamer card with a play cost of 4 or less from your hand without paying the cost. Then, if you have a Tamer with [Sora Takenouchi] in its name, return 1 red Digimon card from your trash to the hand.";
             }
 
             bool CanSelectCardCondition(CardSource cardSource)
             {
                 if (cardSource.IsTamer)
                 {
-                    if (cardSource.GetCostItself <= 4)
+                    if (cardSource.CardColors.Contains(CardColor.Red))
                     {
-                        if (cardSource.HasPlayCost)
+                        if (cardSource.GetCostItself <= 4)
                         {
                             if (CardEffectCommons.CanPlayAsNewPermanent(cardSource: cardSource, payCost: false, cardEffect: activateClass))
                             {
-                                if (cardSource.CardColors.Contains(CardColor.Red))
-                                {
-                                    return true;
-                                }
+                                return true;
                             }
                         }
                     }
@@ -46,29 +43,29 @@ public class DualWingOfLove_BT15_088 : CEntity_Effect
                 return false;
             }
 
-            bool PermanentCondition(Permanent permanent)
+            bool CanSelectCardCondition1(CardSource cardSource)
             {
-                if (CardEffectCommons.IsPermanentExistsOnOwnerBattleArea(permanent, card))
+                if (cardSource.IsDigimon)
                 {
-                    if (permanent.IsTamer)
+                    if (cardSource.CardColors.Contains(CardColor.Red))
                     {
-                        if (permanent.TopCard.ContainsCardName("Sora Takenouchi"))
-                        {
-                            return true;
-                        }
+                        return true;
                     }
                 }
 
                 return false;
             }
 
-            bool CanSelectCardCondition1(CardSource cardSource)
+            bool DoesPermanentExist(Permanent permanent)
             {
-                if (cardSource.IsDigimon)
+                if (CardEffectCommons.IsPermanentExistsOnOwnerBattleArea(permanent, card))
                 {
-                    if (cardSource.CardColors.Contains(CardColor.Red))
+                    if (permanent.IsTamer)
                     {
-                        return true;
+                        if (permanent.TopCard.ContainsCardName("Sora Takenouchi"))
+                        {
+                            return true;
+                        }
                     }
                 }
 
@@ -104,7 +101,7 @@ public class DualWingOfLove_BT15_088 : CEntity_Effect
                         mode: SelectHandEffect.Mode.Custom,
                         cardEffect: activateClass);
 
-                    selectHandEffect.SetUpCustomMessage("Select 1 card to play.", "The opponent is selecting 1 card to play.");
+                    selectHandEffect.SetUpCustomMessage("Select 1 Tamer card to play.", "The opponent is selecting 1 card to play.");
                     selectHandEffect.SetUpCustomMessage_ShowCard("Played Card");
 
                     yield return StartCoroutine(selectHandEffect.Activate());
@@ -119,11 +116,11 @@ public class DualWingOfLove_BT15_088 : CEntity_Effect
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false, root: SelectCardEffect.Root.Hand, activateETB: true));
                 }
 
-                if (CardEffectCommons.HasMatchConditionOwnersPermanent(card, PermanentCondition))
+                if (CardEffectCommons.HasMatchConditionPermanent(DoesPermanentExist))
                 {
                     if (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanSelectCardCondition1))
                     {
-                        int maxCount = Math.Min(1, card.Owner.TrashCards.Count(CanSelectCardCondition1));
+                        int maxCount1 = Math.Min(1, card.Owner.TrashCards.Count(CanSelectCardCondition1));
 
                         SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
 
@@ -134,8 +131,8 @@ public class DualWingOfLove_BT15_088 : CEntity_Effect
                             canNoSelect: () => false,
                             selectCardCoroutine: null,
                             afterSelectCardCoroutine: null,
-                            message: "Select 1 card to add to your hand.",
-                            maxCount: maxCount,
+                            message: "Select 1 red card to add to your hand.",
+                            maxCount: maxCount1,
                             canEndNotMax: false,
                             isShowOpponent: true,
                             mode: SelectCardEffect.Mode.AddHand,
@@ -148,6 +145,7 @@ public class DualWingOfLove_BT15_088 : CEntity_Effect
                         yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
                     }
                 }
+
             }
         }
 
@@ -161,7 +159,7 @@ public class DualWingOfLove_BT15_088 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[Security] You may play 1 [Agumon] from your hand or trash without paying the cost. Then, add this card to the hand.";
+                return "[Security] You may play 1 [Biyomon] from your hand or trash without paying the cost. Then, add this card to the hand.";
             }
 
             bool CanSelectCardCondition(CardSource cardSource)

+ 11 - 0
Assets/CardEffect/BT15/Red/Wings_of_Love_BT15_088.cs.meta

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

+ 2 - 2
Assets/CardEffect/BT15/Red/Pyokomon_BT15_001.cs → Assets/CardEffect/BT15/Red/Yokomon_BT15_001.cs

@@ -6,7 +6,7 @@ using Photon;
 using System;
 using Photon.Pun;
 
-public class Pyokomon_BT15_001 : CEntity_Effect
+public class Yokomon_BT15_001 : CEntity_Effect
 {
     public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
     {
@@ -22,7 +22,7 @@ public class Pyokomon_BT15_001 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[On Deletion] Gain 1 memory.";
+                return "[On Deletion] Return 1 Digimon card with [Avian], [Bird], [Beast], [Animal], [Sovereign] in one of its traits other than [Sea Animal], from your trash to the hand.";
             }
 
             bool CanSelectCardCondition(CardSource cardSource)

+ 0 - 0
Assets/CardEffect/BT15/Red/Pyokomon_BT15_001.cs.meta → Assets/CardEffect/BT15/Red/Yokomon_BT15_001.cs.meta


+ 38 - 0
Assets/Scripts/CardEffectCommons/CanUseEffects/OnCardsReturnToHandFromTrash.cs

@@ -0,0 +1,38 @@
+using System.Collections;
+using System.Collections.Generic;
+using System;
+using System.Linq;
+using UnityEngine;
+
+public partial class CardEffectCommons
+{
+    #region Can trigger "When your cards return to Hand from tash" effects
+
+    public static bool CanTriggerWhenOwnerCardsReturnToHandFromTrash(Hashtable hashtable, Func<CardSource, bool> cardCondition, CardSource card)
+    {
+        bool CardCondition(CardSource cardSource) => cardSource.Owner == card.Owner && (cardCondition == null || cardCondition(cardSource));
+
+        return CanTriggerWhenCardsReturnToHandFromTrash(hashtable, CardCondition, card);
+    }
+    #endregion
+
+    #region Can trigger "When cards return to hand from tash" effects
+
+    public static bool CanTriggerWhenCardsReturnToHandFromTrash(Hashtable hashtable, Func<CardSource, bool> cardCondition, CardSource card)
+    {
+        List<CardSource> CardSources = GetCardSourcesFromHashtable(hashtable);
+
+        if (CardSources != null)
+        {
+            CardSources = CardSources.Filter(cardSource => !cardSource.IsDigiEgg && (cardCondition == null || cardCondition(cardSource)));
+
+            if (CardSources.Count >= 1)
+            {
+                return true;
+            }
+        }
+
+        return false;
+    }
+    #endregion
+}

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

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

+ 32 - 15
Assets/Scripts/CardObjectController.cs

@@ -12,7 +12,7 @@ using DG.Tweening;
 //Card-related operations
 public class CardObjectController : MonoBehaviour
 {
-    #region お互いのプレイヤーのデッキのカードを生成する
+    #region Generate cards for each player's deck
     public static IEnumerator CreatePlayerDecks(CardSource CardPrefab, GameContext gameContext)
     {
 
@@ -343,7 +343,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region カードを生成
+    #region generate card
     public static CardSource CreateCardSource(int _PlayerID, CEntity_Base cEntity_Base, bool isToken)
     {
         Player player = GManager.instance.turnStateMachine.gameContext.PlayerFromID(_PlayerID);
@@ -366,7 +366,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region カードをすべての領域から取り除く
+    #region Remove cards from all areas
     public static IEnumerator RemoveFromAllArea(CardSource cardSource)
     {
         cardSource.SetFace();
@@ -500,7 +500,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region 場を離れさせる
+    #region leave the place
     public static IEnumerator RemoveField(Permanent permanent, bool ignoreOverflow = false)
     {
         if (permanent == null) yield break;
@@ -538,13 +538,30 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region カードを手札に加える
+    #region add card to hand
     public static IEnumerator AddHandCards(List<CardSource> cardSources, bool isDraw, ICardEffect cardEffect)
     {
         if (cardSources.Count == 0) yield break;
 
+        bool isFromTrash = cardSources.Some(cardSource => CardEffectCommons.IsExistOnTrash(cardSource));
+
         cardSources = cardSources.Filter(cardSource => cardSource != null && !cardSource.Owner.HandCards.Contains(cardSource));
 
+        if (isFromTrash)
+        {
+            #region "Effect of "When a card is returned from the trash to the hand"
+
+            #region Hashtable Setting
+            System.Collections.Hashtable hashtable = new System.Collections.Hashtable()
+            {
+                {"CardSources", cardSources}
+            };
+            #endregion
+
+            yield return ContinuousController.instance.StartCoroutine(GManager.instance.autoProcessing.StackSkillInfos(hashtable, EffectTiming.OnReturnCardsToHandFromTrash));
+            #endregion
+        }
+
         foreach (CardSource cardSource in cardSources)
         {
             if (cardSource.IsToken)
@@ -675,7 +692,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region カードをトラッシュに置く
+    #region put the card in the trash
     public static IEnumerator AddTrashCard(CardSource cardSource)
     {
         if (!CardEffectCommons.IsExistOnTrash(cardSource))
@@ -697,7 +714,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region カードをまとめてトラッシュに置く
+    #region Put the cards together in the trash
     public static IEnumerator AddTrashCards(List<CardSource> cardSources)
     {
         List<CardSource> handCards = new List<CardSource>();
@@ -739,7 +756,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region カードを山札の上に置く
+    #region place a card on top of the deck
     public static IEnumerator AddLibraryTopCards(List<CardSource> cardSources, bool notAddLog = false)
     {
         if (cardSources.Count <= 0) yield break;
@@ -750,7 +767,7 @@ public class CardObjectController : MonoBehaviour
 
         if (isFromTrash)
         {
-            #region "カードがトラッシュから山札に戻った時"の効果
+            #region "Effect of "When a card is returned from the trash to the deck"
 
             #region Hashtable Setting
             System.Collections.Hashtable hashtable = new System.Collections.Hashtable()
@@ -821,7 +838,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region カードを山札の下に置く
+    #region put a card at the bottom of the deck
     public static IEnumerator AddLibraryBottomCards(List<CardSource> cardSources, bool notAddLog = false)
     {
         if (cardSources.Count <= 0) yield break;
@@ -915,7 +932,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region カードを処理領域に置く
+    #region Place the card in the processing area
     public static IEnumerator AddExecutingCard(CardSource cardSource)
     {
         if (!cardSource.Owner.ExecutingCards.Contains(cardSource))
@@ -934,7 +951,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region カードをセキュリティに追加する
+    #region Add card to security
     public static IEnumerator AddSecurityCard(CardSource cardSource, bool toTop = true)
     {
         if (!cardSource.Owner.SecurityCards.Contains(cardSource))
@@ -957,7 +974,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region デッキをシャッフル
+    #region Shuffle
     public static IEnumerator Shuffle(Player player)
     {
         ContinuousController.instance.PlaySE(GManager.instance.ShuffleSE);
@@ -968,7 +985,7 @@ public class CardObjectController : MonoBehaviour
     }
     #endregion
 
-    #region パーマネントを移動
+    #region move permanent
     public static IEnumerator MovePermanent(FieldCardFrame movingPermanentFrame)
     {
         if (movingPermanentFrame != null)
@@ -995,7 +1012,7 @@ public class CardObjectController : MonoBehaviour
                         player.FieldPermanents[newFrameID] = movingPermanent;
                         player.fieldCardFrames[newFrameID].SetFramePermanent(movingPermanent);
 
-                        #region アニメーション
+                        #region animation
                         bool end = false;
                         var sequence = DOTween.Sequence();
 

+ 1 - 0
Assets/Scripts/ICardEffect.cs

@@ -766,6 +766,7 @@ public enum EffectTiming
     OnDigivolutionCardReturnToDeckBottom,
     OnReturnCardsToLibraryFromTrash,
     OnPermamemtReturnedToHand,
+    OnReturnCardsToHandFromTrash,
 }
 #endregion
 

+ 54 - 0
lfs/objects/8c/4a/8c4a4795e56e873ee64823fd7d89121c77e6459cbcc8dc6160af57c6dce9046b

@@ -0,0 +1,54 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: ac423894725fed64a9146a10d3878ce1, type: 3}
+  m_Name: Garudamon-BT15-014_P2
+  m_EditorClassIdentifier: 
+  CardIndex: 3136
+  cardColors: 00000000
+  PlayCost: 4
+  EvoCosts:
+  - CardColor: 0
+    Level: 4
+    MemoryCost: 3
+  Level: 5
+  CardName_JPN: "\u30AC\u30EB\u30C0\u30E2\u30F3\r"
+  CardName_ENG: Garudamon
+  Form_JPN:
+  - "\u5B8C\u5168\u4F53\r"
+  Form_ENG:
+  - Ultimate
+  Attribute_JPN:
+  - "\u30EF\u30AF\u30C1\u30F3\u7A2E\r"
+  Attribute_ENG:
+  - Vaccine
+  Type_JPN:
+  - "\u9CE5\u4EBA\u578B\r"
+  Type_ENG:
+  - Birdkin
+  CardSpriteName: BT15-014_P2
+  cardKind: 0
+  EffectDiscription_JPN: 
+  EffectDiscription_ENG: "[Hand] [Counter]  (Your Digimon may digivolve into this
+    card without paying the cost).[On Play] [When Digivolving] You may play 1 play
+    cost 4 or lower red Tamer card from your hand without paying the cost.[All Turns]
+    [Once Per Turn] When one of your Tamers is played, delete 1 of your opponent\u2019s
+    Digimon with ."
+  InheritedEffectDiscription_JPN: 
+  InheritedEffectDiscription_ENG: 
+  SecurityEffectDiscription_JPN: 
+  SecurityEffectDiscription_ENG: 
+  CardEffectClassName: GarudamonAce_BT15_014
+  DP: 7000
+  rarity: 3
+  OverflowMemory: 3
+  CardID: BT15-014
+  MaxCountInDeck: 4