瀏覽代碼

fixed several bt19 cards, reworked digixros to use tamers, added face up security icons

mbunch_kascope 1 年之前
父節點
當前提交
95222fe104

+ 2 - 2
Assets/CardEffect/BT19/Green/BT19_047.cs

@@ -138,13 +138,13 @@ namespace DCGO.CardEffects.BT19
 
             #endregion
 
-            #region Your Turn - ESS
+            #region Opponent Turn - ESS
 
             if (timing == EffectTiming.None)
             {
                 bool Condition()
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) && CardEffectCommons.IsOwnerTurn(card) &&
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) && CardEffectCommons.IsOpponentTurn(card) &&
                            card.PermanentOfThisCard().TopCard.EqualsTraits("Xros Heart");
                 }
 

+ 1 - 1
Assets/CardEffect/BT19/Green/BT19_095.cs

@@ -49,7 +49,7 @@ namespace DCGO.CardEffects.BT19
 
                 bool HasDigimon(Permanent permanent)
                 {
-                    return CardEffectCommons.IsOwnerPermanent(permanent, card) && permanent.IsDigimon;
+                    return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card);
                 }
 
                 bool CanUseCondition(Hashtable hashtable)

+ 3 - 9
Assets/CardEffect/BT19/Red/BT19_007.cs

@@ -24,10 +24,8 @@ namespace DCGO.CardEffects.BT19
 
                 bool HasPermanentsCondition(Permanent permanent)
                 {
-                    if (permanent.IsDigimon && permanent.TopCard.EqualsCardName("Calumon") || permanent.IsTamer && permanent.TopCard.EqualsCardName("Takato Matsuki"))
-                    {
+                    if (permanent.TopCard.EqualsCardName("Calumon") || permanent.TopCard.EqualsCardName("Takato Matsuki"))
                         return true;
-                    }
 
                     return false;
                 }
@@ -47,17 +45,13 @@ namespace DCGO.CardEffects.BT19
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
+                           CardEffectCommons.HasMatchConditionOwnersPermanent(card, HasPermanentsCondition);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                     yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(1, activateClass));
-
-                    if (CardEffectCommons.HasMatchConditionOwnersPermanent(card, HasPermanentsCondition))
-                    {
-                        yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(1, activateClass));
-                    }
                 }
             }
             #endregion

+ 42 - 26
Assets/CardEffect/BT19/White/BT19_078.cs

@@ -25,22 +25,10 @@ namespace DCGO.CardEffects.BT19
                     return "[On Play] For each digivolution card of 1 of your [Mother D-Reaper]s, 1 of your opponent's Digimon gets -1000 for the turn.";
                 }
 
-                int getMaxCount()
-                {
-                    int count = 0;
-
-                    foreach (Permanent permanent in card.Owner.GetBattleAreaPermanents().Filter(IsMotherDReaper))
-                    {
-                        if (permanent.DigivolutionCards.Count > count)
-                            count = permanent.DigivolutionCards.Count;
-                    }
-
-                    return count;
-                }
-
                 bool IsMotherDReaper(Permanent permanent)
                 {
-                    return permanent.TopCard.EqualsCardName("Mother D-Reaper");
+                    return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card) &&
+                           permanent.TopCard.EqualsCardName("Mother D-Reaper");
                 }
 
                 bool CanSelectOpponentsDigimon(Permanent permanent)
@@ -68,42 +56,70 @@ namespace DCGO.CardEffects.BT19
 
                 IEnumerator ActivateCoroutine(Hashtable _hashtable)
                 {
+                    Permanent selectedMother = null;
                     Permanent selectedPermanent = null;
 
                     SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
 
                     selectPermanentEffect.SetUp(
                         selectPlayer: card.Owner,
-                        canTargetCondition: CanSelectOpponentsDigimon,
+                        canTargetCondition: IsMotherDReaper,
                         canTargetCondition_ByPreSelecetedList: null,
                         canEndSelectCondition: null,
                         maxCount: 1,
                         canNoSelect: false,
                         canEndNotMax: false,
-                        selectPermanentCoroutine: SelectPermanentCoroutine,
+                        selectPermanentCoroutine: SelectMotherCoroutine,
                         afterSelectPermanentCoroutine: null,
                         mode: SelectPermanentEffect.Mode.Custom,
                         cardEffect: activateClass);
 
-                    selectPermanentEffect.SetUpCustomMessage($"Select 1 Digimon that will get -{1000* getMaxCount()} DP.", "The opponent is selecting 1 Digimon that will be DP reduced.");
+                    selectPermanentEffect.SetUpCustomMessage($"Choose 1 [Mother D-Reaper].", "The opponent is choosing 1 [Mother D-Reaper].");
 
                     yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
 
-                    IEnumerator SelectPermanentCoroutine(Permanent permanent)
+                    IEnumerator SelectMotherCoroutine(Permanent permanent)
                     {
-                        selectedPermanent = permanent;
+                        selectedMother = permanent;
 
                         yield return null;
                     }
 
-                    if (selectedPermanent != null)
+                    if(selectedMother != null)
                     {
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonDP(
-                                                        targetPermanent: selectedPermanent,
-                                                        changeValue: -1000 * getMaxCount(),
-                                                        effectDuration: EffectDuration.UntilEachTurnEnd,
-                                                        activateClass: activateClass));
-                    }
+                        selectPermanentEffect.SetUp(
+                        selectPlayer: card.Owner,
+                        canTargetCondition: CanSelectOpponentsDigimon,
+                        canTargetCondition_ByPreSelecetedList: null,
+                        canEndSelectCondition: null,
+                        maxCount: 1,
+                        canNoSelect: false,
+                        canEndNotMax: false,
+                        selectPermanentCoroutine: SelectPermanentCoroutine,
+                        afterSelectPermanentCoroutine: null,
+                        mode: SelectPermanentEffect.Mode.Custom,
+                        cardEffect: activateClass);
+
+                        selectPermanentEffect.SetUpCustomMessage($"Select 1 Digimon that will get -{1000 * selectedMother.DigivolutionCards.Count} DP.", "The opponent is selecting 1 Digimon that will be DP reduced.");
+
+                        yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
+                        IEnumerator SelectPermanentCoroutine(Permanent permanent)
+                        {
+                            selectedPermanent = permanent;
+
+                            yield return null;
+                        }
+
+                        if (selectedPermanent != null)
+                        {
+                            yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonDP(
+                                                            targetPermanent: selectedPermanent,
+                                                            changeValue: -1000 * selectedMother.DigivolutionCards.Count,
+                                                            effectDuration: EffectDuration.UntilEachTurnEnd,
+                                                            activateClass: activateClass));
+                        }
+                    }                    
                 }
             }
             #endregion

+ 38 - 20
Assets/CardEffect/BT19/White/BT19_100.cs

@@ -25,22 +25,10 @@ namespace DCGO.CardEffects.BT19
                     return "[Security] [Opponent's Turn] When an opponent's Digimon attacks, if all of your Digimon and Tamers have the [D-Reaper] trait, for each of 1 of your [Mother D-Reaper]'s digivolution cards, the attacking Digimon get -1000 DP for the turn.";
                 }
 
-                int getMaxCount()
-                {
-                    int count = 0;
-
-                    foreach (Permanent permanent in card.Owner.GetBattleAreaPermanents().Filter(IsMotherDReaper))
-                    {
-                        if (permanent.DigivolutionCards.Count > count)
-                            count = permanent.DigivolutionCards.Count;
-                    }
-
-                    return count;
-                }
-
                 bool IsMotherDReaper(Permanent permanent)
                 {
-                    return permanent.TopCard.EqualsCardName("Mother D-Reaper");
+                    return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card) &&
+                           permanent.TopCard.EqualsCardName("Mother D-Reaper");
                 }
 
                 bool HaveAllDReaper()
@@ -78,14 +66,44 @@ namespace DCGO.CardEffects.BT19
                 IEnumerator ActivateCoroutine(Hashtable _hashtable)
                 {
                     Permanent selectedPermanent = GManager.instance.attackProcess.AttackingPermanent;
+                    Permanent selectedMother = null;
+
+                    SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                    selectPermanentEffect.SetUp(
+                        selectPlayer: card.Owner,
+                        canTargetCondition: IsMotherDReaper,
+                        canTargetCondition_ByPreSelecetedList: null,
+                        canEndSelectCondition: null,
+                        maxCount: 1,
+                        canNoSelect: false,
+                        canEndNotMax: false,
+                        selectPermanentCoroutine: SelectMotherCoroutine,
+                        afterSelectPermanentCoroutine: null,
+                        mode: SelectPermanentEffect.Mode.Custom,
+                        cardEffect: activateClass);
+
+                    selectPermanentEffect.SetUpCustomMessage($"Choose 1 [Mother D-Reaper].", "The opponent is choosing 1 [Mother D-Reaper].");
+
+                    yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
 
-                    if (selectedPermanent != null)
+                    IEnumerator SelectMotherCoroutine(Permanent permanent)
                     {
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonDP(
-                                                        targetPermanent: selectedPermanent,
-                                                        changeValue: -1000 * getMaxCount(),
-                                                        effectDuration: EffectDuration.UntilEachTurnEnd,
-                                                        activateClass: activateClass));
+                        selectedMother = permanent;
+
+                        yield return null;
+                    }
+
+                    if (selectedMother != null)
+                    {
+                        if (selectedPermanent != null)
+                        {
+                            yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonDP(
+                                                            targetPermanent: selectedPermanent,
+                                                            changeValue: -1000 * selectedMother.DigivolutionCards.Count,
+                                                            effectDuration: EffectDuration.UntilEachTurnEnd,
+                                                            activateClass: activateClass));
+                        }
                     }
                 }
             }

+ 7 - 5
Assets/CardEffect/BT19/White/BT19_102.cs

@@ -109,16 +109,17 @@ namespace DCGO.CardEffects.BT19
 
                 string EffectDescription()
                 {
-                    return  "[On Play] [When Digivolving] Choose 1 other Digimon. By playing level 4 or lower Digimon card from it's digivolution cards, delete the chosen Digimon.";
+                    return  "[On Play] Choose 1 other Digimon. By playing level 4 or lower Digimon card from it's digivolution cards, delete the chosen Digimon.";
                 }
 
                 bool CanSelectDigimon(Permanent permanent)
                 {
-                    return permanent != card.PermanentOfThisCard() &&
+                    return CardEffectCommons.IsPermanentExistsOnBattleAreaDigimon(permanent) &&
+                           permanent != card.PermanentOfThisCard() &&
                            permanent.DigivolutionCards.Count(CanSelectDigimonToPlay) > 0;
                 }
 
-                bool CanSelectDigimonToPlay(CardSource cardSource)
+                bool CanSelectDigimonToPlay(CardSource cardSource) 
                 {
                     if (cardSource.IsDigimon)
                     {
@@ -233,12 +234,13 @@ namespace DCGO.CardEffects.BT19
 
                 string EffectDescription()
                 {
-                    return "[When Digivolving] [When Digivolving] Choose 1 other Digimon. By playing level 4 or lower Digimon card from it's digivolution cards, delete the chosen Digimon.";
+                    return "[When Digivolving] Choose 1 other Digimon. By playing level 4 or lower Digimon card from it's digivolution cards, delete the chosen Digimon.";
                 }
 
                 bool CanSelectDigimon(Permanent permanent)
                 {
-                    return permanent != card.PermanentOfThisCard() &&
+                    return CardEffectCommons.IsPermanentExistsOnBattleAreaDigimon(permanent) &&
+                           permanent != card.PermanentOfThisCard() &&
                            permanent.DigivolutionCards.Count(CanSelectDigimonToPlay) > 0;
                 }
 

+ 2 - 2
Assets/CardEffect/BT19/Yellow/BT19_093.cs

@@ -46,7 +46,7 @@ namespace DCGO.CardEffects.BT19
 
                 bool HasDigimon(Permanent permanent)
                 {
-                    return CardEffectCommons.IsOpponentPermanent(permanent, card) && permanent.IsDigimon;
+                    return CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card);
                 }
 
                 bool CanUseCondition(Hashtable hashtable)
@@ -152,7 +152,7 @@ namespace DCGO.CardEffects.BT19
 
                 bool HasDigimon(Permanent permanent)
                 {
-                    return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card);
+                    return CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card);
                 }
 
                 bool CanUseCondition(Hashtable hashtable)

+ 8 - 0
Assets/Image/Icons.meta

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

+ 8 - 0
Assets/Image/Icons/Security.meta

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

二進制
Assets/Image/Icons/Security/Faceup Security Opponent Icon.png


+ 171 - 0
Assets/Image/Icons/Security/Faceup Security Opponent Icon.png.meta

@@ -0,0 +1,171 @@
+fileFormatVersion: 2
+guid: f0c01a794c157b64ebda8d15e8aa5d2c
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 2
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 512
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: iPhone
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Windows Store Apps
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

二進制
Assets/Image/Icons/Security/Faceup Security Player Icon.png


+ 171 - 0
Assets/Image/Icons/Security/Faceup Security Player Icon.png.meta

@@ -0,0 +1,171 @@
+fileFormatVersion: 2
+guid: f28695dcb30af4548addcb469576486b
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 2
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 512
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: iPhone
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Windows Store Apps
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 8192
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 161 - 5
Assets/Scenes/BattleScene.unity

@@ -24416,6 +24416,82 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 300145971}
   m_CullTransparentMesh: 1
+--- !u!1 &300383867
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 300383868}
+  - component: {fileID: 300383870}
+  - component: {fileID: 300383869}
+  m_Layer: 0
+  m_Name: FaceupIcon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &300383868
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 300383867}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+  m_ConstrainProportionsScale: 1
+  m_Children: []
+  m_Father: {fileID: 421374527}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: -10, y: -10}
+  m_SizeDelta: {x: 161, y: 161}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &300383869
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 300383867}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: f28695dcb30af4548addcb469576486b, 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!222 &300383870
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 300383867}
+  m_CullTransparentMesh: 1
 --- !u!1 &300875456
 GameObject:
   m_ObjectHideFlags: 0
@@ -36827,7 +36903,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 1975436830}
-  m_RootOrder: 2
+  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}
@@ -37853,6 +37929,7 @@ RectTransform:
   m_Children:
   - {fileID: 1771870514}
   - {fileID: 607509946}
+  - {fileID: 300383868}
   - {fileID: 1676053602}
   m_Father: {fileID: 12679775}
   m_RootOrder: 10
@@ -37905,6 +37982,7 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   player: {fileID: 519228385}
   SecurityText: {fileID: 607509947}
+  faceupIcon: {fileID: 300383867}
   LifeCards: []
   Collider: {fileID: 1676053601}
   securityBreakGlass: {fileID: 5204873399507729058}
@@ -71178,6 +71256,82 @@ RectTransform:
   m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0, y: 0}
+--- !u!1 &943747281
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 943747284}
+  - component: {fileID: 943747283}
+  - component: {fileID: 943747282}
+  m_Layer: 0
+  m_Name: FaceupIcon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!114 &943747282
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 943747281}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: f0c01a794c157b64ebda8d15e8aa5d2c, 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!222 &943747283
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 943747281}
+  m_CullTransparentMesh: 1
+--- !u!224 &943747284
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 943747281}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+  m_ConstrainProportionsScale: 1
+  m_Children: []
+  m_Father: {fileID: 1975436830}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: -10, y: -10}
+  m_SizeDelta: {x: 161, y: 161}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &944087589
 GameObject:
   m_ObjectHideFlags: 0
@@ -149673,7 +149827,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 421374527}
-  m_RootOrder: 2
+  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}
@@ -164857,6 +165011,7 @@ RectTransform:
   m_Children:
   - {fileID: 2028379426}
   - {fileID: 1916030668}
+  - {fileID: 943747284}
   - {fileID: 400951382}
   m_Father: {fileID: 261743132}
   m_RootOrder: 8
@@ -164880,6 +165035,7 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   player: {fileID: 487997840}
   SecurityText: {fileID: 1916030669}
+  faceupIcon: {fileID: 943747281}
   LifeCards: []
   Collider: {fileID: 171694122}
   securityBreakGlass: {fileID: 1899386506}
@@ -175673,15 +175829,15 @@ PrefabInstance:
     m_Modifications:
     - target: {fileID: 3651413245858577326, guid: b028bda2f9bcba64989e7087b45465c6, type: 3}
       propertyPath: m_AnchorMax.y
-      value: 1
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 3651413245858577326, guid: b028bda2f9bcba64989e7087b45465c6, type: 3}
       propertyPath: m_AnchorMin.y
-      value: 1
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 3651413245858577326, guid: b028bda2f9bcba64989e7087b45465c6, type: 3}
       propertyPath: m_SizeDelta.y
-      value: 41.65997
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 3651413246452580820, guid: b028bda2f9bcba64989e7087b45465c6, type: 3}
       propertyPath: m_Pivot.x

+ 2 - 0
Assets/Scripts/CardController.cs

@@ -4011,6 +4011,8 @@ public class IAddSecurity
 
     public IEnumerator AddSecurity()
     {
+        GManager.OnSecurityStackChanged?.Invoke(_player);
+
         #region "When security cards are added" effect
 
         #region Hashtable setting

+ 2 - 0
Assets/Scripts/GManager.cs

@@ -216,6 +216,8 @@ public class GManager : MonoBehaviour
     public static Action OnReverseOpponentsCardsChanged;
     public static Action OnCardFlippedChanged;
     public static Action<bool> OnCardSuspendedChanged;
+
+    public static Action<Player> OnSecurityStackChanged;
     
     #endregion
 

+ 19 - 0
Assets/Scripts/SecurityObject.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 using UnityEngine.Events;
+using System.Linq;
 
 public class SecurityObject : MonoBehaviour
 {
@@ -12,6 +13,9 @@ public class SecurityObject : MonoBehaviour
     [Header("セキュリティテキスト")]
     public Text SecurityText;
 
+    [Header("Face up card Icon")]
+    public GameObject faceupIcon;
+
     [Header("ライフカード")]
     public List<Image> LifeCards = new List<Image>();
 
@@ -62,6 +66,8 @@ public class SecurityObject : MonoBehaviour
                 }
             }
         }
+
+        GManager.OnSecurityStackChanged += CheckFaceupSecurity;
     }
 
     public void OffShowSecurityAttackObject()
@@ -158,5 +164,18 @@ public class SecurityObject : MonoBehaviour
         OnClickAction?.Invoke();
         RemoveClickTarget();
     }
+
+    public void CheckFaceupSecurity(Player changedPlayer)
+    {
+        if (player != changedPlayer)
+            return;
+
+        faceupIcon.SetActive((changedPlayer.SecurityCards.Count(cardSource => !cardSource.IsFlipped) > 0));
+    }
+
+    public void OnDestroy()
+    {
+        GManager.OnSecurityStackChanged -= CheckFaceupSecurity;
+    }
 }
 

+ 22 - 31
Assets/Scripts/SelectDigiXrosClass.cs

@@ -25,7 +25,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
         addDigivolutionCardInfos.Add(digivolutionCardsInfo);
     }
 
-    #region トラッシュのカードをデジクロスに選択できる最大枚数
+    #region Max Trash Count
     int maxTrashCount(CardSource card)
     {
         int maxTrashCount = 0;
@@ -120,7 +120,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region テイマーの進化元のカードをデジクロスに選択できる最大枚数
+    #region Max Tamer Digivolution Cards Count
     int maxTamerDigivolutionCardsCount(CardSource card)
     {
         int maxTamerDigivolutionCardsCount = 0;
@@ -210,17 +210,14 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region 手札のカードか
+    #region Is Hand Card
     bool isHandCard(CardSource cardSource)
     {
         if (cardSource != null)
         {
             if (cardSource.Owner.HandCards.Contains(cardSource))
             {
-                if (cardSource.IsDigimon)
-                {
-                    return true;
-                }
+                return true;
             }
         }
 
@@ -228,14 +225,14 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region バトルエリアのカードか
+    #region Is Battle Area Card
     bool isBattleAreaCard(CardSource cardSource)
     {
         if (cardSource != null)
         {
             if (cardSource.PermanentOfThisCard() != null)
             {
-                if (cardSource.Owner.GetBattleAreaDigimons().Contains(cardSource.PermanentOfThisCard()))
+                if (cardSource.Owner.GetBattleAreaPermanents().Contains(cardSource.PermanentOfThisCard()))
                 {
                     if (cardSource == cardSource.PermanentOfThisCard().TopCard)
                     {
@@ -249,17 +246,14 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region トラッシュのカードか
+    #region Is Trash Card
     bool isTrashCard(CardSource cardSource)
     {
         if (cardSource != null)
         {
             if (CardEffectCommons.IsExistOnTrash(cardSource))
             {
-                if (cardSource.IsDigimon)
-                {
-                    return true;
-                }
+                return true;
             }
         }
 
@@ -267,7 +261,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region テイマーの進化元か
+    #region is Tamer Digivolution Card
     bool isTamerDigivolutionCard(CardSource cardSource)
     {
         if (cardSource != null)
@@ -278,10 +272,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
                 {
                     if (cardSource.PermanentOfThisCard().DigivolutionCards.Contains(cardSource))
                     {
-                        if (cardSource.IsDigimon)
-                        {
-                            return true;
-                        }
+                        return true;
                     }
                 }
             }
@@ -291,7 +282,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region デジクロスの素材として選択できる
+    #region Can Select DigiXros
     bool CanSelectDigiXros(DigiXrosConditionElement element, CardSource targetCard, CardSource card)
     {
         if (card != targetCard)
@@ -349,7 +340,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region デジクロス選択
+    #region Select
     public IEnumerator Select(CardSource card)
     {
         GManager.instance.turnStateMachine.isSync = true;
@@ -388,7 +379,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
 
                     bool canSelectField = false;
 
-                    if (CardEffectCommons.HasMatchConditionOwnersPermanent(card, (permanent) => permanent.IsDigimon && CanSelectDigiXros(element, permanent.TopCard, card)))
+                    if (CardEffectCommons.HasMatchConditionOwnersPermanent(card, (permanent) =>  CanSelectDigiXros(element, permanent.TopCard, card)))
                     {
                         canSelectField = true;
                     }
@@ -414,7 +405,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
                     }
 
                     Func<IEnumerator> _SelectHandCard = () => SelectHandCard(digiXrosCondition, element, card);
-                    Func<IEnumerator> _SelectBattleAreaDigimon = () => SelectBattleAreaDigimon(digiXrosCondition, element, card);
+                    Func<IEnumerator> _SelectBattleAreaDigimon = () => SelectBattleAreaPermanent(digiXrosCondition, element, card);
                     Func<IEnumerator> _SelectTrashCard = () => SelectTrashCard(digiXrosCondition, element, card);
                     Func<IEnumerator> _SelectTamerDigivolutionCard = () => SelectTamerDigivolutionCard(digiXrosCondition, element, card);
                     Func<IEnumerator> _EndSelectDigiXros = () => EndSelectDigiXros();
@@ -560,7 +551,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region 手札のカードを選択する
+    #region Select Hand Card
 
     IEnumerator SelectHandCard(DigiXrosCondition digiXrosCondition, DigiXrosConditionElement element, CardSource card)
     {
@@ -618,10 +609,10 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region 場のデジモンのカードを選択する
-    IEnumerator SelectBattleAreaDigimon(DigiXrosCondition digiXrosCondition, DigiXrosConditionElement element, CardSource card)
+    #region 輯elect Battle Area Permanent
+    IEnumerator SelectBattleAreaPermanent(DigiXrosCondition digiXrosCondition, DigiXrosConditionElement element, CardSource card)
     {
-        bool CanSelectPermanentCondition(Permanent permanent) => permanent.TopCard.Owner.GetBattleAreaDigimons().Contains(permanent) && CanSelectDigiXros(element, permanent.TopCard, card);
+        bool CanSelectPermanentCondition(Permanent permanent) => permanent.TopCard.Owner.GetBattleAreaPermanents().Contains(permanent) && CanSelectDigiXros(element, permanent.TopCard, card);
 
         ActivateClass activateClass = new ActivateClass();
         activateClass.SetUpICardEffect("", null, card);
@@ -676,7 +667,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region テイマーの進化元を選択する
+    #region Select Tamer Digivolution Card
     IEnumerator SelectTamerDigivolutionCard(DigiXrosCondition digiXrosCondition, DigiXrosConditionElement element, CardSource card)
     {
         bool CanSelectCardCondition(CardSource cardSource) => CanSelectDigiXros(element, cardSource, card);
@@ -797,7 +788,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region トラッシュのカードを選択する
+    #region Select Trash Card
     IEnumerator SelectTrashCard(DigiXrosCondition digiXrosCondition, DigiXrosConditionElement element, CardSource card)
     {
         bool CanSelectCardCondition(CardSource cardSource) => CanSelectDigiXros(element, cardSource, card);
@@ -858,7 +849,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region 選択を終了する
+    #region End Select DigiXros
     IEnumerator EndSelectDigiXros()
     {
         _endSelectDigiXros = true;
@@ -866,7 +857,7 @@ public class SelectDigiXrosClass : MonoBehaviourPunCallbacks
     }
     #endregion
 
-    #region 選択した進化元を付与
+    #region Add Digivolution Cards
     public IEnumerator AddDigivolutiuonCards(CardSource card)
     {
         if (selectedDigicrossCards.Count >= 1)