فهرست منبع

Merge branch 'main' into EX6

Michael8818 2 سال پیش
والد
کامیت
28aba0a2ed
33فایلهای تغییر یافته به همراه1596 افزوده شده و 326 حذف شده
  1. 2 2
      Assets/CardBaseEntity/BT10/Black/Option/不死身の王者-BT10-104.asset
  2. 30 52
      Assets/CardEffect/BT12/Yellow/Lampmon_BT12_044.cs
  3. 1 1
      Assets/CardEffect/BT14/Purple/Fenrirugamon_BT14_081.cs
  4. 1 1
      Assets/CardEffect/BT15/Red/Birdramon_BT15_013.cs
  5. 1 1
      Assets/CardEffect/BT16/Black/AncientAngelOfSteel_BT16_097.cs
  6. 15 18
      Assets/CardEffect/BT16/Black/Zanmetsumon_BT16_062.cs
  7. 3 1
      Assets/CardEffect/BT16/Blue/Paildramon_BT16_025.cs
  8. 38 37
      Assets/CardEffect/BT16/Blue/VikemonAce_BT16_026.cs
  9. 2 2
      Assets/CardEffect/BT16/Green/Minomon_BT16_004.cs
  10. 32 32
      Assets/CardEffect/EX2/Red/MatsudaTakato_EX2_056.cs
  11. 11 2
      Assets/CardEffect/EX4/Green/Blackrapidmon_EX4_036.cs
  12. 11 6
      Assets/CardEffect/LM/Blue/Amphimon_LM_005.cs
  13. 148 14
      Assets/CardEffect/RB1/Blue/Anfimon_RB1_016.cs
  14. 1 1
      Assets/Editor/AttachCardData.cs
  15. 2 2
      Assets/Prefab/GameplayPanel.prefab
  16. 8 0
      Assets/Prefab/UI/Deck Selection.meta
  17. 897 0
      Assets/Prefab/UI/Deck Selection/DeckName.prefab
  18. 7 0
      Assets/Prefab/UI/Deck Selection/DeckName.prefab.meta
  19. 139 115
      Assets/Scenes/Opening.unity
  20. 3 2
      Assets/Scripts/CardEffectCommons/GiveEffect/GiveEffectToPermanent/ChangeSAttack.cs
  21. 11 3
      Assets/Scripts/CardEffectFactory/ChangeSAttack.cs
  22. 2 2
      Assets/Scripts/CardObjectController.cs
  23. 126 9
      Assets/Scripts/ContinuousController.cs
  24. 1 1
      Assets/Scripts/DeckBuildingRule.cs
  25. 14 0
      Assets/Scripts/DeckCodeUtility.cs
  26. 52 2
      Assets/Scripts/DeckData.cs
  27. 3 1
      Assets/Scripts/DeckInfoPanel.cs
  28. 2 0
      Assets/Scripts/EditDeck.cs
  29. 2 2
      Assets/Scripts/GameplayOption.cs
  30. 4 4
      Assets/Scripts/PhotonWaitController.cs
  31. 15 3
      Assets/Scripts/ProfanityFilter/ProfanityList.cs
  32. 2 0
      Assets/Scripts/SelectDeck.cs
  33. 10 10
      Assets/Scripts/StreamingAssetsUtility.cs

+ 2 - 2
Assets/CardBaseEntity/BT10/Black/Option/不死身の王者-BT10-104.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:04509076488a51582a7d23c45075a826badf2298dec8d641e3df715dd98fc6db
-size 2844
+oid sha256:3dc3db0cf2651709e81cdcfe5a662572dd0a58863d2c79c29e6c5a6918f69ca4
+size 2585

+ 30 - 52
Assets/CardEffect/BT12/Yellow/Lampmon_BT12_044.cs

@@ -12,6 +12,7 @@ public class Lampmon_BT12_044 : CEntity_Effect
     {
         List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+        #region When Digivolving
         if (timing == EffectTiming.OnEnterFieldAnyone)
         {
             ActivateClass activateClass = new ActivateClass();
@@ -83,56 +84,39 @@ public class Lampmon_BT12_044 : CEntity_Effect
                             activateClass: activateClass));
                     }
                 }
-            }
-        }
 
-        if (timing == EffectTiming.None)
-        {
-            int count()
-            {
-                if (CardEffectCommons.IsExistOnBattleArea(card))
+                //Initial check for your turn effect
+
+                int count()
                 {
                     return card.Owner.Enemy.GetBattleAreaDigimons().Count((permanent) => permanent.HasSecurityAttackChanges);
                 }
 
-                return 0;
-            }
+                List<ICardEffect> SecFromLamp = card.PermanentOfThisCard().EffectList(EffectTiming.None).Where(x => x.HashString == "SecAttackFromLampEffect").ToList();
 
-            bool PermanentCondition(Permanent permanent)
-            {
-                if(CardEffectCommons.IsExistOnBattleArea(card))
-                {
-                    if (permanent == card.PermanentOfThisCard())
-                    {
-                        return true;
-                    }
-                }
-                return false;
-            }
 
-            bool Condition()
-            {
-                if (CardEffectCommons.IsExistOnBattleArea(card))
+                if (count() > SecFromLamp.Count())
                 {
-                    if (CardEffectCommons.IsOwnerTurn(card))
+                    int timesToRunLoop = count() - SecFromLamp.Count();
+
+                    for (int i = 0; i < timesToRunLoop; i++)
                     {
-                        if (count() >= 1)
-                        {
-                            return true;
-                        }
+                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonSAttack(
+                        targetPermanent: card.PermanentOfThisCard(),
+                        changeValue: 1,
+                        effectDuration: EffectDuration.UntilEachTurnEnd,
+                        activateClass: activateClass,
+                        activateAnimation: false,
+                        hashstring: "SecAttackFromLampEffect"));
                     }
                 }
-
-                return false;
             }
-
-            cardEffects.Add(CardEffectFactory.ChangeSAttackStaticEffect<Func<int>>(PermanentCondition, changeValue: () => 1 * count(), isInheritedEffect: false, card: card, condition: Condition));
         }
+        #endregion
 
-        /*
-        if (timing == EffectTiming.AfterEffectsActivate || timing == EffectTiming.OnStartTurn || timing == EffectTiming.OnEnterFieldAnyone || timing == EffectTiming.OnUseOption)
+        #region Your Turn
+        if (timing == EffectTiming.AfterEffectsActivate || timing == EffectTiming.OnStartTurn || timing == EffectTiming.OnEnterFieldAnyone || timing == EffectTiming.OnUseOption || timing == EffectTiming.OptionSkill || timing == EffectTiming.SecuritySkill)
         {
-
             ActivateClass activateClass = new ActivateClass();
             activateClass.SetUpICardEffect("Gain Security Attack", CanUseCondition, card);
             activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
@@ -172,33 +156,27 @@ public class Lampmon_BT12_044 : CEntity_Effect
 
             IEnumerator ActivateCoroutine(Hashtable hashtable)
             {
-                if (card.PermanentOfThisCard().Strike < count())
-                {
-                    for (int i = 0; i <= count(); i++)
-                    {
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectFactory.ChangeSAttackStaticEffect(
-                        targetPermanent: card.PermanentOfThisCard(),
-                        changeValue: 1,
-                        effectDuration: EffectDuration.UntilEachTurnEnd,
-                        activateClass: activateClass, activateAnimation: false));
-                    }
-                }
+                List<ICardEffect> SecFromLamp = card.PermanentOfThisCard().EffectList(EffectTiming.None).Where(x => x.HashString == "SecAttackFromLampEffect").ToList();
 
-                if(card.PermanentOfThisCard().Strike > count())
+                if(count() > SecFromLamp.Count())
                 {
-                    for(int i= 0; i <= count();i++)
+                    int timesToRunLoop = count() - SecFromLamp.Count();
+
+                    for (int i = 0; i < timesToRunLoop; i++)
                     {
                         yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonSAttack(
                         targetPermanent: card.PermanentOfThisCard(),
-                        changeValue: -1,
+                        changeValue: 1,
                         effectDuration: EffectDuration.UntilEachTurnEnd,
-                        activateClass: activateClass, activateAnimation: false));
+                        activateClass: activateClass,
+                        activateAnimation: false,
+                        hashstring: "SecAttackFromLampEffect"));
                     }
                 }
-
             }
         }
-        */
+        #endregion
+
         return cardEffects;
     }
 }

+ 1 - 1
Assets/CardEffect/BT14/Purple/Fenrirugamon_BT14_081.cs

@@ -29,7 +29,7 @@ public class Fenrirugamon_BT14_081 : CEntity_Effect
                 {
                     if (CardEffectCommons.CanPlayAsNewPermanent(cardSource: cardSource, payCost: false, cardEffect: activateClass))
                     {
-                        if (cardSource.HasLevel)
+                        if (cardSource.HasLevel && cardSource.HasPlayCost)
                         {
                             if (cardSource.CardTraits.Contains("Dark Animal"))
                             {

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

@@ -96,7 +96,7 @@ public class Birdramon_BT15_013 : 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)

+ 1 - 1
Assets/CardEffect/BT16/Black/AncientAngelOfSteel_BT16_097.cs

@@ -223,7 +223,7 @@ namespace DCGO.CardEffects.BT16
 
                 string EffectDiscription()
                 {
-                    return "[Main] You may play 1 [Armadillomon] or [Patamon] from your hand without paying the cost. Then, 2 of your Digimon may DNA digivolve into a Digimon card in your hand. If DNA digivolved by this effect, <Recovery +1(Deck)>";
+                    return "[Security] You may play 1 [Armadillomon] or [Patamon] from your hand or trash without paying the cost. Then, add this card to the hand.";
                 }
 
                 bool CanSelectCardCondition(CardSource cardSource)

+ 15 - 18
Assets/CardEffect/BT16/Black/Zanmetsumon_BT16_062.cs

@@ -109,25 +109,22 @@ namespace DCGO.CardEffects.BT16
                             yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
                         }
 
-                        if (card.PermanentOfThisCard().cardSources.Count > 1)
+                        if (CardEffectCommons.HasMatchConditionPermanent(CanSelectDeletePermanentCondition))
                         {
-                            if (CardEffectCommons.HasMatchConditionPermanent(CanSelectDeletePermanentCondition))
-                            {
-                                selectPermanentEffect.SetUp(
-                                    selectPlayer: card.Owner,
-                                    canTargetCondition: CanSelectDeletePermanentCondition,
-                                    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());
-                            }
+                            selectPermanentEffect.SetUp(
+                                selectPlayer: card.Owner,
+                                canTargetCondition: CanSelectDeletePermanentCondition,
+                                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());
                         }
                     }
 

+ 3 - 1
Assets/CardEffect/BT16/Blue/Paildramon_BT16_025.cs

@@ -165,7 +165,9 @@ namespace DCGO.CardEffects.BT16
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                     List<Permanent> oppenentDigimon = card.Owner.Enemy.GetBattleAreaDigimons();
-                    List<Permanent> opponentSuspendable = oppenentDigimon.Where(permanent => permanent.DigivolutionCards.Count <= card.PermanentOfThisCard().DigivolutionCards.Count).ToList();
+                    List<Permanent> opponentSuspendable = oppenentDigimon.Where(permanent => 
+                        permanent.DigivolutionCards.Count <= card.PermanentOfThisCard().DigivolutionCards.Count &&
+                        PermanentCondition(permanent)).ToList();
 
                     yield return ContinuousController.instance.StartCoroutine(new SuspendPermanentsClass(opponentSuspendable, hashtable).Tap());
 

+ 38 - 37
Assets/CardEffect/BT16/Blue/VikemonAce_BT16_026.cs

@@ -92,13 +92,6 @@ namespace DCGO.CardEffects.BT16
                         selectPermanentEffect.SetUpCustomMessage("Select Digimons to De-Digivolve.", "The opponent is selecting Digimons to De-Digivolve.");
                         yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
 
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotUnsuspendPlayerEffect(
-                            permanentCondition: CantSuspendCondition,
-                            effectDuration: EffectDuration.UntilOpponentTurnEnd,
-                            activateClass: activateClass,
-                            isOnlyActivePhase: false,
-                            effectName: "Your Digimon can't unsuspend"));
-
                         IEnumerator SelectPermanentCoroutine(Permanent permanent)
                         {
                             if (permanent != null)
@@ -106,9 +99,15 @@ namespace DCGO.CardEffects.BT16
 
                             yield return null;
                         }
+
                     }
 
-                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotSuspendPlayerEffect(CantSuspendCondition, EffectDuration.UntilOpponentTurnEnd, activateClass, isOnlyActivePhase: false, "Can't Suspend"));
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotSuspendPlayerEffect(
+                        permanentCondition: CantSuspendCondition,
+                        effectDuration: EffectDuration.UntilOpponentTurnEnd,
+                        activateClass: activateClass,
+                        isOnlyActivePhase: false,
+                        effectName: "Can't Suspend"));
                 }
             }
             #endregion
@@ -173,13 +172,6 @@ namespace DCGO.CardEffects.BT16
                         selectPermanentEffect.SetUpCustomMessage("Select Digimons to De-Digivolve.", "The opponent is selecting Digimons to De-Digivolve.");
                         yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
 
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotUnsuspendPlayerEffect(
-                            permanentCondition: CantSuspendCondition,
-                            effectDuration: EffectDuration.UntilOpponentTurnEnd,
-                            activateClass: activateClass,
-                            isOnlyActivePhase: false,
-                            effectName: "Your Digimon can't unsuspend"));
-
                         IEnumerator SelectPermanentCoroutine(Permanent permanent)
                         {
                             if (permanent != null)
@@ -187,9 +179,15 @@ namespace DCGO.CardEffects.BT16
 
                             yield return null;
                         }
+
                     }
 
-                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotSuspendPlayerEffect(CantSuspendCondition, EffectDuration.UntilOpponentTurnEnd, activateClass, isOnlyActivePhase: false, "Can't Suspend"));
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotSuspendPlayerEffect(
+                        permanentCondition: CantSuspendCondition,
+                        effectDuration: EffectDuration.UntilOpponentTurnEnd,
+                        activateClass: activateClass,
+                        isOnlyActivePhase: false,
+                        effectName: "Can't Suspend"));
                 }
             }
             #endregion
@@ -210,7 +208,7 @@ namespace DCGO.CardEffects.BT16
                 bool CanSelectPermanentCondition(Permanent targetPermanent)
                 {
                     if(CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(targetPermanent, card))
-                        return targetPermanent.DigivolutionCards.Count <= 1;
+                        return (targetPermanent.DigivolutionCards.Count <= 1);
 
                     return false;
                 }
@@ -222,30 +220,33 @@ namespace DCGO.CardEffects.BT16
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
+                    if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
+                    {
+                        if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition))
+                            return true;
+                    }
+
+                    return false;
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
-                    if(CardEffectCommons.HasMatchConditionOpponentsPermanent(card, CanSelectPermanentCondition))
-                    {
-                        SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
-
-                        selectPermanentEffect.SetUp(
-                            selectPlayer: card.Owner,
-                            canTargetCondition: CanSelectPermanentCondition,
-                            canTargetCondition_ByPreSelecetedList: null,
-                            canEndSelectCondition: null,
-                            maxCount: 1,
-                            canNoSelect: false,
-                            canEndNotMax: false,
-                            selectPermanentCoroutine: null,
-                            afterSelectPermanentCoroutine: null,
-                            mode: SelectPermanentEffect.Mode.Destroy,
-                            cardEffect: activateClass);
-
-                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
-                    }
+                    SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                    selectPermanentEffect.SetUp(
+                        selectPlayer: card.Owner,
+                        canTargetCondition: CanSelectPermanentCondition,
+                        canTargetCondition_ByPreSelecetedList: null,
+                        canEndSelectCondition: null,
+                        maxCount: 1,
+                        canNoSelect: false,
+                        canEndNotMax: false,
+                        selectPermanentCoroutine: null,
+                        afterSelectPermanentCoroutine: null,
+                        mode: SelectPermanentEffect.Mode.Destroy,
+                        cardEffect: activateClass);
+
+                    yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
                 }
             }
             #endregion

+ 2 - 2
Assets/CardEffect/BT16/Green/Minomon_BT16_004.cs

@@ -22,7 +22,7 @@ namespace DCGO.CardEffects.BT16
 
                 string EffectDiscription()
                 {
-                    return "[All Turns][Once Per Turn] When an opponent's Digimon is deleted in battle, if this Digimon has 2 or more colors, gain 1 memory.";
+                    return "[All Turns] [Once Per Turn] When this Digimon deletes an opponent's Digimon in battle, if this Digimon has 2 or more colors, gain 1 memory.";
                 }
 
                 bool PermanentCondition(Permanent permanent)
@@ -38,7 +38,7 @@ namespace DCGO.CardEffects.BT16
                         {
                             if (CardEffectCommons.CanTriggerOnPermanentDeleted(hashtable, PermanentCondition))
                             {
-                                bool WinnerCondition(Permanent permanent) => permanent.cardSources.Contains(card);
+                                bool WinnerCondition(Permanent permanent) => card.PermanentOfThisCard() == permanent;
                                 bool LoserCondition(Permanent permanent) => CardEffectCommons.IsOpponentPermanent(permanent, card);
 
                                 if (CardEffectCommons.CanTriggerWhenDeleteOpponentDigimonByBattle(hashtable: hashtable, winnerCondition: WinnerCondition, loserCondition: LoserCondition, isOnlyWinnerSurvive: true))

+ 32 - 32
Assets/CardEffect/EX2/Red/MatsudaTakato_EX2_056.cs

@@ -161,48 +161,48 @@ public class MatsudaTakato_EX2_056 : CEntity_Effect
                                 yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateBuffEffect(permanent));
 
                                 yield return new WaitForSeconds(0.2f);
-                            }
-                        }
 
-                        AddSkillClass addSkillClass = new AddSkillClass();
-                        addSkillClass.SetUpICardEffect("Gain Blitz", CanUseCondition1, card);
-                        addSkillClass.SetUpAddSkillClass(cardSourceCondition: CardSourceCondition, getEffects: GetEffects);
-                        CardEffectCommons.AddEffectToPlayer(effectDuration: EffectDuration.UntilEachTurnEnd, card: card, cardEffect: addSkillClass, timing: EffectTiming.None);
+                                AddSkillClass addSkillClass = new AddSkillClass();
+                                addSkillClass.SetUpICardEffect("Gain Blitz", CanUseCondition1, card);
+                                addSkillClass.SetUpAddSkillClass(cardSourceCondition: CardSourceCondition, getEffects: GetEffects);
+                                CardEffectCommons.AddEffectToPermanent(targetPermanent: permanent, effectDuration: EffectDuration.UntilEachTurnEnd, card: card, cardEffect: addSkillClass, timing: EffectTiming.None);
 
-                        bool CanUseCondition1(Hashtable hashtable)
-                        {
-                            return true;
-                        }
-
-                        bool CardSourceCondition(CardSource cardSource)
-                        {
-                            if (PermanentCondition(cardSource.PermanentOfThisCard()))
-                            {
-                                if (cardSource == cardSource.PermanentOfThisCard().TopCard)
+                                bool CanUseCondition1(Hashtable hashtable)
                                 {
                                     return true;
                                 }
-                            }
 
-                            return false;
-                        }
-
-                        List<ICardEffect> GetEffects(CardSource cardSource, List<ICardEffect> cardEffects, EffectTiming _timing)
-                        {
-                            if (_timing == EffectTiming.OnEnterFieldAnyone)
-                            {
-                                bool Condition()
+                                bool CardSourceCondition(CardSource cardSource)
                                 {
-                                    return CardSourceCondition(cardSource);
+                                    if (PermanentCondition(cardSource.PermanentOfThisCard()))
+                                    {
+                                        if (cardSource == cardSource.PermanentOfThisCard().TopCard)
+                                        {
+                                            return true;
+                                        }
+                                    }
+
+                                    return false;
                                 }
 
-                                cardEffects.Add(CardEffectFactory.BlitzSelfEffect(isInheritedEffect: false,
-                                    card: cardSource,
-                                    condition: Condition,
-                                    isWhenDigivolving: true));
+                                List<ICardEffect> GetEffects(CardSource cardSource, List<ICardEffect> cardEffects, EffectTiming _timing)
+                                {
+                                    if (_timing == EffectTiming.OnEnterFieldAnyone)
+                                    {
+                                        bool Condition()
+                                        {
+                                            return CardSourceCondition(cardSource);
+                                        }
+
+                                        cardEffects.Add(CardEffectFactory.BlitzSelfEffect(isInheritedEffect: false,
+                                            card: cardSource,
+                                            condition: Condition,
+                                            isWhenDigivolving: true));
+                                    }
+
+                                    return cardEffects;
+                                }
                             }
-
-                            return cardEffects;
                         }
                     }
                 }

+ 11 - 2
Assets/CardEffect/EX4/Green/Blackrapidmon_EX4_036.cs

@@ -15,9 +15,18 @@ public class Blackrapidmon_EX4_036 : CEntity_Effect
         {
             bool PermanentCondition(Permanent targetPermanent)
             {
-                return targetPermanent.TopCard.ContainsCardName("Gargomon") || (targetPermanent.TopCard.CardColors.Contains(CardColor.Green) && targetPermanent.TopCard.CardColors.Count == 2 && targetPermanent.TopCard.HasLevel && targetPermanent.Level == 4);
-            }
+                if(targetPermanent.TopCard.HasLevel && targetPermanent.Level == 4)
+                {
+                    if (targetPermanent.TopCard.ContainsCardName("Gargomon"))
+                        return true;
+
+                    if (targetPermanent.TopCard.CardColors.Contains(CardColor.Green) && targetPermanent.TopCard.CardColors.Count == 2)
+                        return true;
+                }
 
+                return false;
+            }
+            
             cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 3, ignoreDigivolutionRequirement: false, card: card, condition: null));
         }
 

+ 11 - 6
Assets/CardEffect/LM/Blue/Amphimon_LM_005.cs

@@ -18,11 +18,6 @@ namespace DCGO.CardEffects.LM
             }
 
             #region On Play/When Digivolving Shared
-            string EffectDiscription()
-            {
-                return "[On Play] [When Digivolving] You may trash up to 4 blue cards in your hand. For each one, trash any 1 card under your opponent's Digimon or Tamers. Then, return 1 of their Digimon or Tamers without cards under it to the hand.";
-            }
-
             bool CanSelectCardTrashingCondition(CardSource cardSource)
             {
                 if (cardSource.CardColors.Contains(CardColor.Blue))
@@ -69,6 +64,11 @@ namespace DCGO.CardEffects.LM
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
                 cardEffects.Add(activateClass);
 
+                string EffectDiscription()
+                {
+                    return "[On Play] You may trash up to 4 blue cards in your hand. For each one, trash any 1 card under your opponent's Digimon or Tamers. Then, return 1 of their Digimon or Tamers without cards under it to the hand.";
+                }
+
                 bool CanSelectCardCondition(CardSource cardSource)
                 {
                     return !cardSource.CanNotTrashFromDigivolutionCards(activateClass);
@@ -170,6 +170,11 @@ namespace DCGO.CardEffects.LM
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
                 cardEffects.Add(activateClass);
 
+                string EffectDiscription()
+                {
+                    return "[When Digivolving] You may trash up to 4 blue cards in your hand. For each one, trash any 1 card under your opponent's Digimon or Tamers. Then, return 1 of their Digimon or Tamers without cards under it to the hand.";
+                }
+
                 bool CanSelectCardCondition(CardSource cardSource)
                 {
                     return !cardSource.CanNotTrashFromDigivolutionCards(activateClass);
@@ -179,7 +184,7 @@ namespace DCGO.CardEffects.LM
                 {
                     if (CardEffectCommons.IsPermanentExistsOnOpponentBattleArea(permanent, card))
                     {
-                        if (!permanent.TopCard.IsDigiEgg || !permanent.TopCard.IsOption)
+                        if (permanent.IsDigimon || permanent.IsTamer)
                         {
                             if (permanent.DigivolutionCards.Count(CanSelectCardCondition) >= 1)
                             {

+ 148 - 14
Assets/CardEffect/RB1/Blue/Anfimon_RB1_016.cs

@@ -12,7 +12,8 @@ public class Anfimon_RB1_016 : CEntity_Effect
     {
         List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-        if (timing == EffectTiming.OnEnterFieldAnyone || timing == EffectTiming.OnAllyAttack)
+        #region When Digivolving
+        if (timing == EffectTiming.OnAllyAttack)
         {
             ActivateClass activateClass = new ActivateClass();
             activateClass.SetUpICardEffect("Trash cards from hand to trash digivolution cards, and return  1 Digimon to deck bottom", CanUseCondition, card);
@@ -21,15 +22,7 @@ public class Anfimon_RB1_016 : CEntity_Effect
 
             string EffectDiscription()
             {
-                if (timing == EffectTiming.OnEnterFieldAnyone)
-                {
-                    return "[When Digivolving] You may trash up to 2 blue cards in your hand. For each one, trash any 1 card under your opponent�fs Digimon or Tamers. Then, you may return 1 of your opponent�fDigimon with no digivolution cards to the bottom of the deck.";
-                }
-
-                else
-                {
-                    return "[When Attacking] You may trash up to 2 blue cards in your hand. For each one, trash any 1 card under your opponent�fs Digimon or Tamers. Then, you may return 1 of your opponent�fDigimon with no digivolution cards to the bottom of the deck.";
-                }
+                return "[When Attacking] You may trash up to 2 blue cards in your hand. For each one, trash any 1 card under your opponent�fs Digimon or Tamers. Then, you may return 1 of your opponent�fDigimon with no digivolution cards to the bottom of the deck.";
             }
 
             bool CanSelectCardCondition(CardSource cardSource)
@@ -73,15 +66,154 @@ public class Anfimon_RB1_016 : CEntity_Effect
 
             bool CanUseCondition(Hashtable hashtable)
             {
-                if (timing == EffectTiming.OnEnterFieldAnyone)
+                return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
+            }
+
+            bool CanActivateCondition(Hashtable hashtable)
+            {
+                if (CardEffectCommons.IsExistOnBattleArea(card))
                 {
-                    return CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
+                    if (card.Owner.HandCards.Count >= 1)
+                    {
+                        return true;
+                    }
+
+                    if (card.Owner.Enemy.GetBattleAreaPermanents().Count(CanSelectPermanentCondition1) >= 1)
+                    {
+                        return true;
+                    }
                 }
 
-                else
+                return false;
+            }
+
+            IEnumerator ActivateCoroutine(Hashtable _hashtable)
+            {
+                if (card.Owner.HandCards.Count(CanSelectCardCondition) >= 1)
                 {
-                    return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
+                    List<CardSource> discardCards = new List<CardSource>();
+
+                    int maxCount = Math.Min(2, card.Owner.HandCards.Count(CanSelectCardCondition));
+
+                    SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
+
+                    selectHandEffect.SetUp(
+                        selectPlayer: card.Owner,
+                        canTargetCondition: CanSelectCardCondition,
+                        canTargetCondition_ByPreSelecetedList: null,
+                        canEndSelectCondition: null,
+                        maxCount: maxCount,
+                        canNoSelect: true,
+                        canEndNotMax: true,
+                        isShowOpponent: true,
+                        selectCardCoroutine: null,
+                        afterSelectCardCoroutine: AfterSelectCardCoroutine,
+                        mode: SelectHandEffect.Mode.Discard,
+                        cardEffect: activateClass);
+
+                    yield return StartCoroutine(selectHandEffect.Activate());
+
+                    IEnumerator AfterSelectCardCoroutine(List<CardSource> cardSources)
+                    {
+                        if (cardSources.Count >= 1)
+                        {
+                            discardCards = cardSources.Clone();
+
+                            yield return null;
+                        }
+                    }
+
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.SelectTrashDigivolutionCards(
+                        permanentCondition: CanSelectPermanentCondition,
+                        cardCondition: CanSelectCardCondition1,
+                        maxCount: discardCards.Count,
+                        canNoTrash: false,
+                        isFromOnly1Permanent: false,
+                        activateClass: activateClass,
+                        selectString: "Digimon or Tamer"
+                    ));
                 }
+
+                if (card.Owner.Enemy.GetBattleAreaPermanents().Count(CanSelectPermanentCondition1) >= 1)
+                {
+                    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: true,
+                        canEndNotMax: false,
+                        selectPermanentCoroutine: null,
+                        afterSelectPermanentCoroutine: null,
+                        mode: SelectPermanentEffect.Mode.PutLibraryBottom,
+                        cardEffect: activateClass);
+
+                    yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+                }
+            }
+        }
+        #endregion
+
+        #region When Digivolving
+        if (timing == EffectTiming.OnEnterFieldAnyone)
+        {
+            ActivateClass activateClass = new ActivateClass();
+            activateClass.SetUpICardEffect("Trash cards from hand to trash digivolution cards, and return  1 Digimon to deck bottom", CanUseCondition, card);
+            activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDiscription());
+            cardEffects.Add(activateClass);
+
+            string EffectDiscription()
+            {
+                return "[When Digivolving] You may trash up to 2 blue cards in your hand. For each one, trash any 1 card under your opponent�fs Digimon or Tamers. Then, you may return 1 of your opponent�fDigimon with no digivolution cards to the bottom of the deck.";
+            }
+
+            bool CanSelectCardCondition(CardSource cardSource)
+            {
+                return cardSource.CardColors.Contains(CardColor.Blue);
+            }
+
+            bool CanSelectPermanentCondition(Permanent permanent)
+            {
+                if (CardEffectCommons.IsPermanentExistsOnOpponentBattleArea(permanent, card))
+                {
+                    if (permanent.IsDigimon || permanent.IsTamer)
+                    {
+                        if (permanent.DigivolutionCards.Count(CanSelectCardCondition1) >= 1)
+                        {
+                            return true;
+                        }
+                    }
+                }
+
+                return false;
+            }
+
+            bool CanSelectCardCondition1(CardSource cardSource)
+            {
+                return !cardSource.CanNotTrashFromDigivolutionCards(activateClass);
+            }
+
+            bool CanSelectPermanentCondition1(Permanent permanent)
+            {
+                if (CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card))
+                {
+                    if (permanent.HasNoDigivolutionCards)
+                    {
+                        return true;
+                    }
+                }
+
+                return false;
+            }
+
+            bool CanUseCondition(Hashtable hashtable)
+            {
+                return CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
             }
 
             bool CanActivateCondition(Hashtable hashtable)
@@ -172,6 +304,8 @@ public class Anfimon_RB1_016 : CEntity_Effect
                 }
             }
         }
+        #endregion
+
 
         if (timing == EffectTiming.WhenPermanentWouldBeDeleted)
         {

+ 1 - 1
Assets/Editor/AttachCardData.cs

@@ -12,7 +12,7 @@ public class AttachCardData : MonoBehaviour
     {
         List<CEntity_Base> List = GetAsset.LoadAll<CEntity_Base>("Assets/CardBaseEntity/");
 
-        List<string> UnimplementedCardIDs = new List<string>() { "BT10-084", "BT12-044", "P-137", "P-138", "P-139", "P-140", "P-141", "P-142" };
+        List<string> UnimplementedCardIDs = new List<string>() { "BT10-084", "P-137", "P-138", "P-139", "P-140", "P-141", "P-142" };
 
         foreach (GameObject obj in Selection.gameObjects)
         {

+ 2 - 2
Assets/Prefab/GameplayPanel.prefab

@@ -6650,7 +6650,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &7928374915970859287
 RectTransform:
   m_ObjectHideFlags: 0
@@ -7689,7 +7689,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 1384.76, y: -438.595}
+  m_AnchoredPosition: {x: 1380.62, y: -269.8}
   m_SizeDelta: {x: 100, y: 100}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &7928374916272943219

+ 8 - 0
Assets/Prefab/UI/Deck Selection.meta

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

+ 897 - 0
Assets/Prefab/UI/Deck Selection/DeckName.prefab

@@ -0,0 +1,897 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1308966902999428248
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1308966902999428249}
+  - component: {fileID: 1308966902999428247}
+  - component: {fileID: 1308966902999428246}
+  m_Layer: 5
+  m_Name: Placeholder (1)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1308966902999428249
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1308966902999428248}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.35, y: 0.35, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7748629246206561071}
+  m_RootOrder: 7
+  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: -43.5, y: 0}
+  m_SizeDelta: {x: 1291, y: 108.1}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1308966902999428247
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1308966902999428248}
+  m_CullTransparentMesh: 0
+--- !u!114 &1308966902999428246
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1308966902999428248}
+  m_Enabled: 0
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 2100000, guid: f447ab1ead2deb54ca93d215f75ddd8d, 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: 385dce3fc9f7d434cb640e4d4d497263, type: 3}
+    m_FontSize: 120
+    m_FontStyle: 1
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 180
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 0
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: Enter Deck Name
+--- !u!1 &1308966904346324205
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1308966904346324202}
+  - component: {fileID: 1308966904346324200}
+  - component: {fileID: 1308966904346324203}
+  m_Layer: 5
+  m_Name: EditIcon (1)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1308966904346324202
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1308966904346324205}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0.00009247751}
+  m_LocalScale: {x: 1.2499999, y: 1.2499999, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7748629246206561071}
+  m_RootOrder: 6
+  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: 290.1, y: 0}
+  m_SizeDelta: {x: 35, y: 35}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1308966904346324200
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1308966904346324205}
+  m_CullTransparentMesh: 0
+--- !u!114 &1308966904346324203
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1308966904346324205}
+  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: e79a3af0dbdb81841a8d56869219b7d4, 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 &1308966904917765165
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1308966904917765162}
+  - component: {fileID: 1308966904917765161}
+  - component: {fileID: 1308966904917765160}
+  - component: {fileID: 1308966904917765163}
+  m_Layer: 5
+  m_Name: DeckNameText
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1308966904917765162
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1308966904917765165}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.35000002, y: 0.35000002, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7748629246206561071}
+  m_RootOrder: 8
+  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: -43.8, y: 0}
+  m_SizeDelta: {x: 1700, y: 108.1}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1308966904917765161
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1308966904917765165}
+  m_CullTransparentMesh: 0
+--- !u!114 &1308966904917765160
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1308966904917765165}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 2100000, guid: f447ab1ead2deb54ca93d215f75ddd8d, type: 3}
+  m_Color: {r: 0, g: 0, b: 0, 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: 385dce3fc9f7d434cb640e4d4d497263, type: 3}
+    m_FontSize: 120
+    m_FontStyle: 1
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 180
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 0
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: new deck
+--- !u!114 &1308966904917765163
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1308966904917765165}
+  m_Enabled: 0
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_EffectColor: {r: 0, g: 0, b: 0, a: 1}
+  m_EffectDistance: {x: 5, y: 5}
+  m_UseGraphicAlpha: 1
+--- !u!1 &7748629245283055957
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7748629245283055956}
+  - component: {fileID: 7748629245283055958}
+  - component: {fileID: 7748629245283055959}
+  m_Layer: 5
+  m_Name: Your icon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &7748629245283055956
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245283055957}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.55, y: 0.55, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7748629246206561071}
+  m_RootOrder: 5
+  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: 290.1, y: 0}
+  m_SizeDelta: {x: 64, y: 66}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7748629245283055958
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245283055957}
+  m_CullTransparentMesh: 0
+--- !u!114 &7748629245283055959
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245283055957}
+  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: 0.8066038, g: 0.90586287, 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: 75f43b17bbb9f504bb2b713c69a5f77f, 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 &7748629245420991108
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7748629245420991111}
+  - component: {fileID: 7748629245420991105}
+  - component: {fileID: 7748629245420991110}
+  - component: {fileID: 1308966903596603981}
+  - component: {fileID: 1308966903596603980}
+  m_Layer: 5
+  m_Name: DeckNameInputField
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7748629245420991111
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245420991108}
+  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: 7748629246206561071}
+  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: -58.30007, y: -3.5000732}
+  m_SizeDelta: {x: 648.6, y: 83.4}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7748629245420991105
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245420991108}
+  m_CullTransparentMesh: 0
+--- !u!114 &7748629245420991110
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245420991108}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 2100000, guid: 79542e24f01da6b48a2206d65b654942, type: 2}
+  m_Color: {r: 0.5707547, g: 0.8647273, 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: b1df64f4a7138d34da6c6e319bb0c07c, 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!61 &1308966903596603981
+BoxCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245420991108}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 28.25409, y: 0}
+  m_SpriteTilingProperty:
+    border: {x: 0, y: 0, z: 0, w: 0}
+    pivot: {x: 0, y: 0}
+    oldSize: {x: 0, y: 0}
+    newSize: {x: 0, y: 0}
+    adaptiveTilingThreshold: 0
+    drawMode: 0
+    adaptiveTiling: 0
+  m_AutoTiling: 0
+  serializedVersion: 2
+  m_Size: {x: 698.98816, y: 68.76}
+  m_EdgeRadius: 0
+--- !u!114 &1308966903596603980
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245420991108}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, 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: 0
+  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: 7748629245420991110}
+  m_TextComponent: {fileID: 1308966904917765160}
+  m_Placeholder: {fileID: 1308966902999428246}
+  m_ContentType: 0
+  m_InputType: 0
+  m_AsteriskChar: 42
+  m_KeyboardType: 0
+  m_LineType: 0
+  m_HideMobileInput: 0
+  m_CharacterValidation: 0
+  m_CharacterLimit: 28
+  m_OnSubmit:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnDidEndEdit:
+    m_PersistentCalls:
+      m_Calls:
+      - m_Target: {fileID: 0}
+        m_TargetAssemblyTypeName: 
+        m_MethodName: 
+        m_Mode: 1
+        m_Arguments:
+          m_ObjectArgument: {fileID: 0}
+          m_ObjectArgumentAssemblyTypeName: 
+          m_IntArgument: 0
+          m_FloatArgument: 0
+          m_StringArgument: 
+          m_BoolArgument: 0
+        m_CallState: 2
+  m_OnValueChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_CustomCaretColor: 0
+  m_SelectionColor: {r: 0.7971698, g: 0.8857623, b: 1, a: 1}
+  m_Text: new deck
+  m_CaretBlinkRate: 0.85
+  m_CaretWidth: 5
+  m_ReadOnly: 0
+  m_ShouldActivateOnSelect: 1
+--- !u!1 &7748629245736205374
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7748629245736205369}
+  - component: {fileID: 7748629245736205371}
+  - component: {fileID: 7748629245736205368}
+  - component: {fileID: 7748629245736205370}
+  m_Layer: 5
+  m_Name: SciFi_Circle02Blue_03
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7748629245736205369
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245736205374}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.55, y: 0.55, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7748629246206561071}
+  m_RootOrder: 4
+  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: 290.1, y: 0}
+  m_SizeDelta: {x: 195, y: 195}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7748629245736205371
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245736205374}
+  m_CullTransparentMesh: 0
+--- !u!114 &7748629245736205368
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245736205374}
+  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: b3a70d13dcaa564408af9e011e7dd1fb, 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!114 &7748629245736205370
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629245736205374}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f038eca21917e8a4b8b3fae275990700, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  canRotate: 1
+  speed: -40
+--- !u!1 &7748629246066800430
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7748629246066800425}
+  - component: {fileID: 7748629246066800427}
+  - component: {fileID: 7748629246066800424}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &7748629246066800425
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246066800430}
+  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: 7748629246206561071}
+  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: -29, y: -1.2}
+  m_SizeDelta: {x: 336.9973, y: 75.51367}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7748629246066800427
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246066800430}
+  m_CullTransparentMesh: 0
+--- !u!114 &7748629246066800424
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246066800430}
+  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.74509805, g: 0.87058824, 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_FontData:
+    m_Font: {fileID: 12800000, guid: 385dce3fc9f7d434cb640e4d4d497263, type: 3}
+    m_FontSize: 40
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 4
+    m_MaxSize: 40
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: This is scifi title
+--- !u!1 &7748629246206561068
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7748629246206561071}
+  m_Layer: 5
+  m_Name: DeckName
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7748629246206561071
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246206561068}
+  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: 7748629245420991111}
+  - {fileID: 7748629246066800425}
+  - {fileID: 7748629246362870032}
+  - {fileID: 7748629246487468327}
+  - {fileID: 7748629245736205369}
+  - {fileID: 7748629245283055956}
+  - {fileID: 1308966904346324202}
+  - {fileID: 1308966902999428249}
+  - {fileID: 1308966904917765162}
+  m_Father: {fileID: 0}
+  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: 336.8, y: 120.5}
+  m_SizeDelta: {x: 665.7357, y: 215.89197}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &7748629246362870033
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7748629246362870032}
+  - component: {fileID: 7748629246362870034}
+  - component: {fileID: 7748629246362870035}
+  - component: {fileID: 7748629246362870045}
+  m_Layer: 5
+  m_Name: SciFi_Circle02Blue_01
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7748629246362870032
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246362870033}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.55, y: 0.55, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7748629246206561071}
+  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: 290.1, y: 0}
+  m_SizeDelta: {x: 195, y: 195}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7748629246362870034
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246362870033}
+  m_CullTransparentMesh: 0
+--- !u!114 &7748629246362870035
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246362870033}
+  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: e2b594f723735f84e9058b18b85ef3d6, 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!114 &7748629246362870045
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246362870033}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f038eca21917e8a4b8b3fae275990700, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  canRotate: 1
+  speed: 40
+--- !u!1 &7748629246487468324
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7748629246487468327}
+  - component: {fileID: 7748629246487468320}
+  - component: {fileID: 7748629246487468321}
+  m_Layer: 5
+  m_Name: SciFi_Circle02Blue_02
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7748629246487468327
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246487468324}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.55, y: 0.55, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7748629246206561071}
+  m_RootOrder: 3
+  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: 290.1, y: 0}
+  m_SizeDelta: {x: 195, y: 195}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7748629246487468320
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246487468324}
+  m_CullTransparentMesh: 0
+--- !u!114 &7748629246487468321
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7748629246487468324}
+  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: 08e16831cfbf90145b10182152346bfc, 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

+ 7 - 0
Assets/Prefab/UI/Deck Selection/DeckName.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 09e7bd4e7f4230b48b3331d06e6b5d3f
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 139 - 115
Assets/Scenes/Opening.unity

@@ -8394,7 +8394,7 @@ GameObject:
   - component: {fileID: 195562656}
   - component: {fileID: 195562655}
   m_Layer: 0
-  m_Name: Canvas3
+  m_Name: Friend Lobby
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -25088,97 +25088,6 @@ RectTransform:
   m_AnchoredPosition: {x: 50, y: 111.149994}
   m_SizeDelta: {x: 100, y: 100}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!21 &600610283
-Material:
-  serializedVersion: 8
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_Name: Shapes2D Material
-  m_Shader: {fileID: 4800000, guid: 44f74e30da9814584b2fdcdbe799e51a, type: 3}
-  m_ValidKeywords:
-  - FILL_OUTLINE_COLOR
-  - RECTANGLE
-  m_InvalidKeywords:
-  - _EMISSION
-  m_LightmapFlags: 1
-  m_EnableInstancingVariants: 0
-  m_DoubleSidedGI: 0
-  m_CustomRenderQueue: 3000
-  stringTagMap: {}
-  disabledShaderPasses: []
-  m_SavedProperties:
-    serializedVersion: 3
-    m_TexEnvs:
-    - _BumpMap:
-        m_Texture: {fileID: 0}
-        m_Scale: {x: 1, y: 1}
-        m_Offset: {x: 0, y: 0}
-    - _DetailAlbedoMap:
-        m_Texture: {fileID: 0}
-        m_Scale: {x: 1, y: 1}
-        m_Offset: {x: 0, y: 0}
-    - _DetailMask:
-        m_Texture: {fileID: 0}
-        m_Scale: {x: 1, y: 1}
-        m_Offset: {x: 0, y: 0}
-    - _DetailNormalMap:
-        m_Texture: {fileID: 0}
-        m_Scale: {x: 1, y: 1}
-        m_Offset: {x: 0, y: 0}
-    - _EmissionMap:
-        m_Texture: {fileID: 0}
-        m_Scale: {x: 1, y: 1}
-        m_Offset: {x: 0, y: 0}
-    - _MainTex:
-        m_Texture: {fileID: 0}
-        m_Scale: {x: 1, y: 1}
-        m_Offset: {x: 0, y: 0}
-    - _MetallicGlossMap:
-        m_Texture: {fileID: 0}
-        m_Scale: {x: 1, y: 1}
-        m_Offset: {x: 0, y: 0}
-    - _OcclusionMap:
-        m_Texture: {fileID: 0}
-        m_Scale: {x: 1, y: 1}
-        m_Offset: {x: 0, y: 0}
-    - _ParallaxMap:
-        m_Texture: {fileID: 0}
-        m_Scale: {x: 1, y: 1}
-        m_Offset: {x: 0, y: 0}
-    m_Ints: []
-    m_Floats:
-    - _BumpScale: 1
-    - _ColorMask: 15
-    - _Cutoff: 0.5
-    - _DetailNormalMapScale: 1
-    - _DstBlend: 0
-    - _GlossMapScale: 1
-    - _Glossiness: 0.5
-    - _GlossyReflections: 1
-    - _Metallic: 0
-    - _Mode: 0
-    - _OcclusionStrength: 1
-    - _Parallax: 0.02
-    - _Shapes2D_DstAlpha: 1
-    - _Shapes2D_DstBlend: 10
-    - _Shapes2D_SrcAlpha: 1
-    - _Shapes2D_SrcBlend: 1
-    - _SmoothnessTextureChannel: 0
-    - _SpecularHighlights: 1
-    - _SrcBlend: 1
-    - _Stencil: 0
-    - _StencilComp: 8
-    - _StencilOp: 0
-    - _StencilReadMask: 255
-    - _StencilWriteMask: 255
-    - _UVSec: 0
-    - _ZWrite: 1
-    m_Colors:
-    - _Color: {r: 1, g: 1, b: 1, a: 1}
-    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
-  m_BuildTextureStacks: []
 --- !u!114 &601519770 stripped
 MonoBehaviour:
   m_CorrespondingSourceObject: {fileID: 2357870368142129188, guid: e358e77ca0e59034894b27870d5d0b04, type: 3}
@@ -39988,7 +39897,7 @@ GameObject:
   - component: {fileID: 993687782}
   - component: {fileID: 993687781}
   m_Layer: 0
-  m_Name: Canvas4
+  m_Name: Other panels/Random Match
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -50369,6 +50278,97 @@ MonoBehaviour:
   minY: -800
   maxY: 800
   defaultPos: {x: 0, y: 0, z: 0}
+--- !u!21 &1226454526
+Material:
+  serializedVersion: 8
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Shapes2D Material
+  m_Shader: {fileID: 4800000, guid: 44f74e30da9814584b2fdcdbe799e51a, type: 3}
+  m_ValidKeywords:
+  - FILL_SOLID_COLOR
+  - RECTANGLE
+  m_InvalidKeywords:
+  - _EMISSION
+  m_LightmapFlags: 1
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: 3000
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Ints: []
+    m_Floats:
+    - _BumpScale: 1
+    - _ColorMask: 15
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 0
+    - _GlossMapScale: 1
+    - _Glossiness: 0.5
+    - _GlossyReflections: 1
+    - _Metallic: 0
+    - _Mode: 0
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _Shapes2D_DstAlpha: 1
+    - _Shapes2D_DstBlend: 10
+    - _Shapes2D_SrcAlpha: 1
+    - _Shapes2D_SrcBlend: 1
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _Stencil: 0
+    - _StencilComp: 8
+    - _StencilOp: 0
+    - _StencilReadMask: 255
+    - _StencilWriteMask: 255
+    - _UVSec: 0
+    - _ZWrite: 1
+    m_Colors:
+    - _Color: {r: 1, g: 1, b: 1, a: 1}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+  m_BuildTextureStacks: []
 --- !u!1 &1226836294
 GameObject:
   m_ObjectHideFlags: 0
@@ -102824,7 +102824,7 @@ GameObject:
   - component: {fileID: 7827412352163992437}
   - component: {fileID: 7827412352163992436}
   m_Layer: 5
-  m_Name: Canvas1
+  m_Name: DeckSelection/Battle Selection
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -105633,7 +105633,7 @@ GameObject:
   - component: {fileID: 7827412353158085701}
   - component: {fileID: 7827412353158085700}
   m_Layer: 5
-  m_Name: Canvas0
+  m_Name: Main Menu
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -105804,7 +105804,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  m_Material: {fileID: 600610283}
+  m_Material: {fileID: 1226454526}
   m_Color: {r: 0.122641504, g: 0.122641504, b: 0.122641504, a: 0}
   m_RaycastTarget: 1
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
@@ -106074,7 +106074,7 @@ GameObject:
   - component: {fileID: 7827412353509478733}
   - component: {fileID: 7827412353509478732}
   m_Layer: 5
-  m_Name: Canvas10
+  m_Name: Loading Objects
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -107812,11 +107812,11 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 7928374914713416426, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: 480
+      value: 1380.62
       objectReference: {fileID: 0}
     - target: {fileID: 7928374914713416426, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: -625.4
+      value: -447.6
       objectReference: {fileID: 0}
     - target: {fileID: 7928374914732064316, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchorMax.y
@@ -107836,11 +107836,11 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 7928374914732064316, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: 480
+      value: 1380.62
       objectReference: {fileID: 0}
     - target: {fileID: 7928374914732064316, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: -803.2
+      value: -625.4
       objectReference: {fileID: 0}
     - target: {fileID: 7928374914864650546, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target
@@ -107872,11 +107872,11 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915092997801, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: 480
+      value: 1380.62
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915092997801, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: -269.8
+      value: -92
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915095919510, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_Pivot.x
@@ -107996,7 +107996,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915230148751, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: 1380.62
+      value: 480
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915230148751, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.y
@@ -108036,7 +108036,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915654171919, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: 1380.62
+      value: 480
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915654171919, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.y
@@ -108060,11 +108060,11 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915836328847, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: 480
+      value: 1380.62
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915836328847, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: -447.6
+      value: -269.8
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915840589320, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target
@@ -108072,27 +108072,27 @@ PrefabInstance:
       objectReference: {fileID: 7827412352956199573}
     - target: {fileID: 7928374915970859287, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchorMax.y
-      value: 1
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915970859287, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchorMin.y
-      value: 1
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915970859287, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_SizeDelta.x
-      value: 100
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915970859287, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_SizeDelta.y
-      value: 100
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915970859287, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: 1380.62
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 7928374915970859287, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: -92
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 7928374916004630462, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target
@@ -108122,6 +108122,30 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: -92
       objectReference: {fileID: 0}
+    - target: {fileID: 7928374916266468725, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7928374916266468725, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7928374916266468725, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7928374916266468725, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_SizeDelta.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7928374916266468725, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7928374916266468725, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 7928374916272943217, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target
       value: 
@@ -108148,7 +108172,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 7928374916357260136, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: 1380.62
+      value: 480
       objectReference: {fileID: 0}
     - target: {fileID: 7928374916357260136, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.y
@@ -108172,7 +108196,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 7928374916528301011, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.x
-      value: 1380.62
+      value: 480
       objectReference: {fileID: 0}
     - target: {fileID: 7928374916528301011, guid: aa8ce49467fcea94aae7d999af274a72, type: 3}
       propertyPath: m_AnchoredPosition.y

+ 3 - 2
Assets/Scripts/CardEffectCommons/GiveEffect/GiveEffectToPermanent/ChangeSAttack.cs

@@ -59,7 +59,7 @@ public partial class CardEffectCommons
         }
     }
 
-    public static IEnumerator ChangeDigimonSAttack(Permanent targetPermanent, int changeValue, EffectDuration effectDuration, ICardEffect activateClass, bool activateAnimation)
+    public static IEnumerator ChangeDigimonSAttack(Permanent targetPermanent, int changeValue, EffectDuration effectDuration, ICardEffect activateClass, bool activateAnimation, string hashstring = null)
     {
         if (targetPermanent == null) yield break;
         if (!IsPermanentExistsOnBattleArea(targetPermanent)) yield break;
@@ -88,7 +88,8 @@ public partial class CardEffectCommons
                     changeValue: changeValue,
                     isInheritedEffect: false,
                     card: card,
-                    condition: CanUseCondition);
+                    condition: CanUseCondition,
+                    hashstring: hashstring);
 
         AddEffectToPermanent(
             targetPermanent: targetPermanent,

+ 11 - 3
Assets/Scripts/CardEffectFactory/ChangeSAttack.cs

@@ -41,7 +41,8 @@ public partial class CardEffectFactory
         T changeValue,
         bool isInheritedEffect,
         CardSource card,
-        Func<bool> condition)
+        Func<bool> condition,
+        string hashstring = null)
     {
         bool PermanentCondition(Permanent permanent)
         {
@@ -53,7 +54,8 @@ public partial class CardEffectFactory
             changeValue: changeValue,
             isInheritedEffect: isInheritedEffect,
             card: card,
-            condition: condition
+            condition: condition,
+            hashstring: hashstring
         );
     }
 
@@ -62,7 +64,8 @@ public partial class CardEffectFactory
         T changeValue,
         bool isInheritedEffect,
         CardSource card,
-        Func<bool> condition)
+        Func<bool> condition,
+        string hashstring = null)
     {
         bool isInt = typeof(T) == typeof(int);
         bool isIntFunc = typeof(T) == typeof(Func<int>);
@@ -80,6 +83,11 @@ public partial class CardEffectFactory
         changeSAttackClass.SetUpICardEffect("", CanUseCondition, card);
         changeSAttackClass.SetUpChangeSAttackClass(changeSAttackFunc: ChangeSAttack, permanentCondition: PermanentCondition, isUpDown: _isUpDown);
 
+        if (hashstring != null)
+        {
+            changeSAttackClass.SetHashString(hashstring);
+        }
+
         if (isInheritedEffect)
         {
             changeSAttackClass.SetIsInheritedEffect(true);

+ 2 - 2
Assets/Scripts/CardObjectController.cs

@@ -36,14 +36,14 @@ public class CardObjectController : MonoBehaviour
 
                 DeckData randomDeck = deckDatas[UnityEngine.Random.Range(0, deckDatas.Count)];
 
-                RandomDeck = new DeckData(randomDeck.GetThisDeckCode());
+                RandomDeck = new DeckData(randomDeck.GetThisDeckCode(), randomDeck.DeckID);
 
 #if UNITY_EDITOR && !UNITY_WINDOWS
                 foreach (DeckData deckData in ContinuousController.instance.DeckDatas)
                 {
                     if (deckData.IsValidDeckData())
                     {
-                        RandomDeck = new DeckData(deckData.GetThisDeckCode());
+                        RandomDeck = new DeckData(deckData.GetThisDeckCode(), deckData.DeckID);
                         break;
                     }
                 }

+ 126 - 9
Assets/Scripts/ContinuousController.cs

@@ -1,14 +1,14 @@
-using System.Collections;
+using Photon.Pun;
+using System;
+using System.Collections;
 using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
 using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.EventSystems;
 using UnityEngine.SceneManagement;
-using Photon.Pun;
-using System;
 using Hashtable = ExitGames.Client.Photon.Hashtable;
-using UnityEngine.EventSystems;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Globalization;
 
 public class ContinuousController : MonoBehaviour
 {
@@ -271,7 +271,8 @@ public class ContinuousController : MonoBehaviour
         }
 
         // deck data
-        DeckDatas = PlayerPrefsUtil.LoadList<DeckData>(DeckDatasPlayerPrefsKey);
+        //DeckDatas = PlayerPrefsUtil.LoadList<DeckData>(DeckDatasPlayerPrefsKey);
+        LoadDeckLists();
         ModifyAllDeckDatas();
         GetComponent<StarterDeck>().SetStarterDecks();
         SaveDeckDatas();
@@ -312,6 +313,7 @@ public class ContinuousController : MonoBehaviour
         DontDestroyOnLoad(gameObject);
     }
 
+    [Obsolete("This is obsolete, switching to save files")]
     public void ModifyAllDeckDatas()
     {
         List<DeckData> tempDeckDatas = new List<DeckData>();
@@ -341,6 +343,7 @@ public class ContinuousController : MonoBehaviour
         SaveDeckDatas();
     }
 
+    [Obsolete("This is obsolete, switching to save files")]
     public void SaveDeckDatas()
     {
         PlayerPrefsUtil.SaveList(DeckDatasPlayerPrefsKey, DeckDatas);
@@ -348,6 +351,118 @@ public class ContinuousController : MonoBehaviour
         PlayerPrefs.Save();
     }
 
+    public void SaveDeckData(DeckData data)
+    {
+        string savePath = StreamingAssetsUtility.GetStreamingAssetPath("Decks", false);
+
+        File.WriteAllText($"{savePath}/{data.DeckName}_{data.DeckID}.txt", DeckCodeUtility.GetDeckBuilderFile(data));
+
+        List<UnityAction> Commands = new List<UnityAction>()
+                {
+                    null
+                };
+
+        List<string> CommandTexts = new List<string>()
+                {
+                    "OK"
+                };
+
+        Opening.instance.SetUpActiveYesNoObject(
+            Commands,
+            CommandTexts,
+            LocalizeUtility.GetLocalizedString(
+            EngMessage: "Deck Saved to Assets/Decks!\n(Also, you can use it for Digimon Card dev.)",
+            JpnMessage: "デッキがアセット/デッキに保存されました!\n(Digimon Card dev.でも使えます)"
+        ),
+            true);
+    }
+
+    public void DeleteDeck(DeckData data)
+    {
+        string filePath = StreamingAssetsUtility.GetStreamingAssetPath("Decks", false);
+
+        if (!Directory.Exists(filePath))
+            return;
+
+        if(File.Exists($"{filePath}/{data.DeckName}_{data.DeckID}.txt"))
+            File.Delete($"{filePath}/{data.DeckName}_{data.DeckID}.txt");
+    }
+
+    public void DeleteAllDecks()
+    {
+        foreach(DeckData data in DeckDatas)
+        {
+            DeleteDeck(data);
+        }
+    }
+
+    public void LoadDeckLists()
+    {
+        string loadPath = StreamingAssetsUtility.GetStreamingAssetPath("Decks", false);
+
+        if (!Directory.Exists(loadPath))
+            return;
+
+        string[] deckLists = Directory.GetFiles(loadPath);
+
+        foreach(string deckPath in deckLists)
+        {
+            string fileName = Path.GetFileNameWithoutExtension(deckPath);
+
+            if (!fileName.Contains("_"))
+                continue;
+
+            string deckList = File.ReadAllText(deckPath);
+
+            StreamReader sr = new StreamReader(deckPath);
+
+            string deckName = sr.ReadLine().Replace("Name: ", "");
+            int KeyCard = int.Parse(sr.ReadLine().Replace("Key Card: ", ""));
+            int SortValue = int.Parse(sr.ReadLine().Replace("Sort Index: ", ""));
+
+            string deck = deckList.Substring(deckList.IndexOf("//"));
+            //Debug.Log(deckName);
+
+            if(SortValue < 0)
+                SortValue = 0;
+
+            CreateDeckFromFile(fileName.Split("_")[1], deckName, KeyCard, deck, SortValue);
+        }
+    }
+
+    private void CreateDeckFromFile(string id, string name, int keyID, string deckCode, int index = 0)
+    {
+        List<CEntity_Base> AllDeckCards = DeckCodeUtility.GetAllDeckCardsFromDeckBuilderDeckCode(deckCode);
+
+        if (AllDeckCards.Count == 0)
+        {
+            AllDeckCards = DeckCodeUtility.GetAllDeckCardsFromTTSDeckCode(deckCode);
+        }
+
+        List<CEntity_Base> deckCards = new List<CEntity_Base>();
+        List<CEntity_Base> digitamaDeckCards = new List<CEntity_Base>();
+
+        foreach (CEntity_Base cEntity_Base in AllDeckCards)
+        {
+            if (cEntity_Base.cardKind == CardKind.DigiEgg)
+            {
+                digitamaDeckCards.Add(cEntity_Base);
+            }
+
+            else
+            {
+                deckCards.Add(cEntity_Base);
+            }
+        }
+
+        DeckData deckData = (new DeckData(DeckData.GetDeckCode(name, deckCards, digitamaDeckCards, null),id)).ModifiedDeckData();
+
+        deckData.KeyCardId = keyID;
+        deckData.DeckName = name;
+
+        DeckDatas.Insert(index, deckData);
+    }
+
     #region Player Name
     string _playerName;
     string _playerNameKey = "PlayerName";
@@ -511,7 +626,9 @@ public class ContinuousController : MonoBehaviour
     }
     public void LoadShowCutInAnimation()
     {
-        showCutInAnimation = PlayerPrefsUtil.GetBool(_showCutInAnimationKey, true);
+        //TODO: Setting default to false, to fix animation syncing bug, MB
+        showCutInAnimation = false;
+        //showCutInAnimation = PlayerPrefsUtil.GetBool(_showCutInAnimationKey, true);
     }
     #endregion
 

+ 1 - 1
Assets/Scripts/DeckBuildingRule.cs

@@ -103,7 +103,7 @@ public class DeckBuildingRule : MonoBehaviour
             return deckCards;
         }
 
-        DeckData deckData1 = new DeckData(DeckData.GetDeckCode(deckData.DeckName, modifiedDeckCards, modifiedDigitamaDeckCards, deckData.KeyCard));
+        DeckData deckData1 = new DeckData(DeckData.GetDeckCode(deckData.DeckName, modifiedDeckCards, modifiedDigitamaDeckCards, deckData.KeyCard), deckData.DeckID);
 
         if (!deckData1.AllDeckCards().Contains(deckData1.KeyCard))
         {

+ 14 - 0
Assets/Scripts/DeckCodeUtility.cs

@@ -7,6 +7,20 @@ using System.Text.RegularExpressions;
 
 public class DeckCodeUtility
 {
+    public static string GetDeckBuilderFile(DeckData data)
+    {
+        string DeckBuilderFile = "";
+
+        DeckBuilderFile += $"Name: {data.DeckName}\n";
+        DeckBuilderFile += $"Key Card: {data.KeyCardId}\n";
+        DeckBuilderFile += $"Sort Index: {data.SortValue}\n\n";
+
+        DeckBuilderFile += GetDeckBuilderDeckCode(data.AllDeckCards());
+
+        return DeckBuilderFile;
+    }
+
+    [Obsolete]
     public static string GetTTSDeckCode(List<CEntity_Base> AllDeckCards)
     {
         string TTSDeckCode = "";

+ 52 - 2
Assets/Scripts/DeckData.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Text;
 using UnityEngine;
 
 [System.Serializable]
@@ -14,7 +15,7 @@ public class DeckData
     public static int CardKindCellLength = (int)Math.Ceiling(Mathf.Log(maxCardKind, m));
 
     #region  constructor
-    public DeckData(string DeckCode)
+    public DeckData(string DeckCode, string ID = "")
     {
         List<int> _DeckCardIDs = new List<int>();
         List<int> _DigitamaDeckCardIDs = new List<int>();
@@ -27,6 +28,8 @@ public class DeckData
         List<int> DistinctDigitamaDeckCardIDs = new List<int>();
         List<int> DistinctDigitamaDeckCardCounts = new List<int>();
 
+        DeckID = ID;
+
         for (int i = 0; i < parseByComma.Length; i++)
         {
             //deck name
@@ -140,6 +143,53 @@ public class DeckData
     }
     #endregion
 
+    #region sort value
+    int _sortValue = 0;
+    public int SortValue
+    {
+        get
+        {
+            return _sortValue;
+        }
+
+        set
+        {
+            _sortValue = value;
+        }
+    }
+    #endregion
+
+    #region deck id
+    string _deckID = "";
+    public string DeckID
+    {
+        get
+        {
+            if (string.IsNullOrEmpty(_deckID))
+            {
+                StringBuilder builder = new StringBuilder();
+                Enumerable
+                   .Range(65, 26)
+                    .Select(e => ((char)e).ToString())
+                    .Concat(Enumerable.Range(97, 26).Select(e => ((char)e).ToString()))
+                    .Concat(Enumerable.Range(0, 10).Select(e => e.ToString()))
+                    .OrderBy(e => Guid.NewGuid())
+                    .Take(11)
+                    .ToList().ForEach(e => builder.Append(e));
+
+                return builder.ToString();
+            }
+
+            return _deckID;
+        }
+
+        set
+        {
+            _deckID = value;
+        }
+    }
+    #endregion
+
     #region deck name
     string _deckName = "";
     public string DeckName
@@ -728,7 +778,7 @@ public class DeckData
             return deckCards;
         }
 
-        DeckData deckData = new DeckData(GetDeckCode(ValidateDeckName(this._deckName), modifiedDeckCards, modifiedDigitamaDeckCards, KeyCard));
+        DeckData deckData = new DeckData(GetDeckCode(ValidateDeckName(this._deckName), modifiedDeckCards, modifiedDigitamaDeckCards, KeyCard), DeckID);
 
         if (!deckData.AllDeckCards().Contains(deckData.KeyCard))
         {

+ 3 - 1
Assets/Scripts/DeckInfoPanel.cs

@@ -168,6 +168,7 @@ public class DeckInfoPanel : MonoBehaviour
                             ContinuousController.instance.StartCoroutine(Opening.instance.deck.selectDeck.SetDeckList(false));
                             Opening.instance.deck.selectDeck.ResetDeckInfoPanel();
                             ContinuousController.instance.SaveDeckDatas();
+                            ContinuousController.instance.DeleteDeck(deckData);
                         }
                     },
 
@@ -242,7 +243,7 @@ public class DeckInfoPanel : MonoBehaviour
 
         text = DeckData.ValidateDeckName(text);
 
-        while (text.Length > 15)
+        while (text.Length > DeckName.characterLimit)
         {
             text = text.Substring(0, text.Length - 1);
         }
@@ -250,6 +251,7 @@ public class DeckInfoPanel : MonoBehaviour
         ShowingDeckData.DeckName = text;
 
         ContinuousController.instance.SaveDeckDatas();
+        ContinuousController.instance.SaveDeckData(ShowingDeckData);
 
         if (isFromSelectDeck)
         {

+ 2 - 0
Assets/Scripts/EditDeck.cs

@@ -314,6 +314,7 @@ public class EditDeck : MonoBehaviour
         #endregion
 
         ContinuousController.instance.SaveDeckDatas();
+        ContinuousController.instance.SaveDeckData(EdittingDeckData);
 
         for (int i = 0; i < DeckScroll.content.childCount; i++)
         {
@@ -467,6 +468,7 @@ public class EditDeck : MonoBehaviour
         EdittingDeckData = deckData;
 
         ContinuousController.instance.SaveDeckDatas();
+        //ContinuousController.instance.SaveDeckData(EdittingDeckData);
 
         OffDetailCard();
 

+ 2 - 2
Assets/Scripts/GameplayOption.cs

@@ -58,11 +58,11 @@ public class GameplayOption : OffAnimation
                 value: ContinuousController.instance.reverseOpponentsCards
             );
 
-            OptionUtility.InitToggle(
+            /*OptionUtility.InitToggle(
                 toggle: _showCutInAnimationToggle,
                 onToggleChanged: OnShowCutInAnimationToggleChanged,
                 value: ContinuousController.instance.showCutInAnimation
-            );
+            );*/
 
             OptionUtility.InitToggle(
                 toggle: _turnSuspendedCardsToggle,

+ 4 - 4
Assets/Scripts/PhotonWaitController.cs

@@ -226,10 +226,10 @@ public class PhotonWaitController : MonoBehaviour
             key += "_" + PhotonNetwork.CurrentRoom.Name;
         }
         //TODO Currently Disabled For Alpha Testing To Fix Xross Issues
-        //key += "_" + UnityEngine.Random.Range(0, 9999999).ToString();
-        int synchronizedSeed = PhotonNetwork.CurrentRoom.Name.GetHashCode() + waitCount;
-        System.Random random = new System.Random(synchronizedSeed);
-        key += "_" + random.Next(0, 9999999).ToString();
+        key += "_" + UnityEngine.Random.Range(0, 9999999).ToString();
+        //int synchronizedSeed = PhotonNetwork.CurrentRoom.Name.GetHashCode() + waitCount;
+        //System.Random random = new System.Random(synchronizedSeed);
+        //key += "_" + random.Next(0, 9999999).ToString();
         
         keys.Add(key);
 

+ 15 - 3
Assets/Scripts/ProfanityFilter/ProfanityList.cs

@@ -1068,8 +1068,22 @@ namespace ProfanityFilter
              "muthafuckker",
              "muther",
              "mutherfucker",
+			 "nigga",
              "n1gga",
-             "n1gger",
+			 "nigg@",
+			 "n1gg@",
+			 "nigg4",
+			 "n1gg4",
+			 "niggah",
+             "n1ggah",
+			 "nigg@h",
+			 "nigg4h",
+			 "n1gg@h",
+			 "n1gg4h",
+             "nigger",
+			 "n1gger",
+			 "nigg3r",
+			 "n1gg3r",
              "naked",
              "nambla",
              "napalm",
@@ -1090,8 +1104,6 @@ namespace ProfanityFilter
              "niggah",
              "niggas",
              "niggaz",
-             "nigger",
-             "niggers",
              "niggle",
              "niglet",
              "nig-nog",

+ 2 - 0
Assets/Scripts/SelectDeck.cs

@@ -252,6 +252,7 @@ public class SelectDeck : OffAnimation
             foreach (DeckData deckdata in gotDeckDatas)
             {
                 ContinuousController.instance.DeckDatas.Insert(0, deckdata);
+                ContinuousController.instance.SaveDeckData(deckdata);
             }
 
             List<UnityAction> Commands = new List<UnityAction>()
@@ -307,6 +308,7 @@ public class SelectDeck : OffAnimation
                 ContinuousController.instance.StartCoroutine(SetDeckList(false));
                 ResetDeckInfoPanel();
                 ContinuousController.instance.SaveDeckDatas();
+                ContinuousController.instance.DeleteAllDecks();
             }
                     ,null
                 };

+ 10 - 10
Assets/Scripts/StreamingAssetsUtility.cs

@@ -35,11 +35,11 @@ public class StreamingAssetsUtility
         {
             if (fileName.Contains("-token"))
             {
-                return await GetTokenImageData(Path.Combine(GetStreamingAssetPath(isLauncher), $"Card/{fileName}.png").Replace("\\", "/"));
+                return await GetTokenImageData(Path.Combine(GetStreamingAssetPath("Textures", isLauncher), $"Card/{fileName}.png").Replace("\\", "/"));
             }
             else
             {
-                path = Path.Combine(GetStreamingAssetPath(isLauncher), $"Card/{fileName}.webp").Replace("\\", "/");
+                path = Path.Combine(GetStreamingAssetPath("Textures", isLauncher), $"Card/{fileName}.webp").Replace("\\", "/");
 
                 if (!File.Exists(path))
                 {
@@ -59,10 +59,10 @@ public class StreamingAssetsUtility
 
     public static async Task<Sprite> GetSpriteImage(string fileName, bool isLauncher = false)
     {
-        string path = Path.Combine(GetStreamingAssetPath(isLauncher), $"{fileName}.jpg").Replace("\\", "/");
+        string path = Path.Combine(GetStreamingAssetPath("Textures", isLauncher), $"{fileName}.jpg").Replace("\\", "/");
 
         if(!File.Exists(path))
-            path = Path.Combine(GetStreamingAssetPath(isLauncher), $"{fileName}.png").Replace("\\", "/");
+            path = Path.Combine(GetStreamingAssetPath("Textures", isLauncher), $"{fileName}.png").Replace("\\", "/");
 
         if (File.Exists(path))
         {
@@ -159,10 +159,10 @@ public class StreamingAssetsUtility
 
     public static bool IsCardExists(CEntity_Base cEntity_Base)
     {
-        string path = Path.Combine(GetStreamingAssetPath(false), $"Card/{cEntity_Base.CardSpriteName}.webp").Replace("\\", "/");
+        string path = Path.Combine(GetStreamingAssetPath("Textures", false), $"Card/{cEntity_Base.CardSpriteName}.webp").Replace("\\", "/");
 
         if (cEntity_Base.CardSpriteName.Contains("token"))
-            path = Path.Combine(GetStreamingAssetPath(false), $"Card/{cEntity_Base.CardSpriteName}.png").Replace("\\", "/");
+            path = Path.Combine(GetStreamingAssetPath("Textures", false), $"Card/{cEntity_Base.CardSpriteName}.png").Replace("\\", "/");
 
         return File.Exists(path);
     }
@@ -170,7 +170,7 @@ public class StreamingAssetsUtility
     #region テキストファイルの取得
     public static string GetText(string fileName)
     {
-        string path = Path.Combine(GetStreamingAssetPath(false), $"{fileName}.txt").Replace("\\", "/");
+        string path = Path.Combine(GetStreamingAssetPath("", false), $"{fileName}.txt").Replace("\\", "/");
 
         if (File.Exists(path))
         {
@@ -181,7 +181,7 @@ public class StreamingAssetsUtility
     }
     #endregion
 
-    static string GetStreamingAssetPath(bool isLauncher)
+    public static string GetStreamingAssetPath(string subPath, bool isLauncher)
     {
         if (isLauncher)
         {
@@ -189,7 +189,7 @@ public class StreamingAssetsUtility
 
             path = GetOneUpperDirectoryPath(path);
 
-            path = Path.Combine(path, $"Textures").Replace("\\", "/");
+            path = Path.Combine(path, $"Assets/{subPath}").Replace("\\", "/");
 
             return path;
         }
@@ -202,7 +202,7 @@ public class StreamingAssetsUtility
 
             path = GetOneUpperDirectoryPath(path);
 
-            path = Path.Combine(path, $"Textures").Replace("\\", "/");
+            path = Path.Combine(path, $"Assets/{subPath}").Replace("\\", "/");
 
             return path;
         }