From 4334ac8987625a4b14a827e46c8204fccb9b4f67 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Thu, 29 Feb 2024 22:33:37 +0400 Subject: [PATCH] refactor: added face down status to SpellAbilityCastMode (related to #11884); --- .../mage/constants/SpellAbilityCastMode.java | 17 +++++++++++------ Mage/src/main/java/mage/game/stack/Spell.java | 3 +-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Mage/src/main/java/mage/constants/SpellAbilityCastMode.java b/Mage/src/main/java/mage/constants/SpellAbilityCastMode.java index a57affc664b..eed7402ab97 100644 --- a/Mage/src/main/java/mage/constants/SpellAbilityCastMode.java +++ b/Mage/src/main/java/mage/constants/SpellAbilityCastMode.java @@ -8,8 +8,6 @@ import mage.cards.Card; import mage.game.Game; import mage.game.stack.Spell; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -22,8 +20,8 @@ public enum SpellAbilityCastMode { FLASHBACK("Flashback"), BESTOW("Bestow"), PROTOTYPE("Prototype"), - MORPH("Morph", false, SpellAbilityCastMode.MORPH_ADDITIONAL_RULE), - MEGAMORPH("Megamorph", false, SpellAbilityCastMode.MORPH_ADDITIONAL_RULE), + MORPH("Morph", false, true, SpellAbilityCastMode.MORPH_ADDITIONAL_RULE), + MEGAMORPH("Megamorph", false, true, SpellAbilityCastMode.MORPH_ADDITIONAL_RULE), TRANSFORMED("Transformed", true), DISTURB("Disturb", true), MORE_THAN_MEETS_THE_EYE("More than Meets the Eye", true); @@ -36,6 +34,8 @@ public enum SpellAbilityCastMode { // should the cast mode use the second face? private final boolean isTransformed; + private final boolean isFaceDown; + // use it to add additional info in stack object cause face down has nothing // TODO: is it possible to use InfoEffect or CardHint instead that? private final List additionalRulesOnStack; @@ -49,15 +49,20 @@ public enum SpellAbilityCastMode { } SpellAbilityCastMode(String text, boolean isTransformed) { - this(text, isTransformed, null); + this(text, isTransformed, false, null); } - SpellAbilityCastMode(String text, boolean isTransformed, String additionalRulesOnStack) { + SpellAbilityCastMode(String text, boolean isTransformed, boolean isFaceDown, String additionalRulesOnStack) { this.text = text; this.isTransformed = isTransformed; + this.isFaceDown = isFaceDown; this.additionalRulesOnStack = additionalRulesOnStack == null ? null : Collections.singletonList(additionalRulesOnStack); } + public boolean isFaceDown() { + return this.isFaceDown; + } + public List getAdditionalRulesOnStack() { return additionalRulesOnStack; } diff --git a/Mage/src/main/java/mage/game/stack/Spell.java b/Mage/src/main/java/mage/game/stack/Spell.java index 5d94377e08a..b3fcca29d38 100644 --- a/Mage/src/main/java/mage/game/stack/Spell.java +++ b/Mage/src/main/java/mage/game/stack/Spell.java @@ -100,8 +100,7 @@ public class Spell extends StackObjectImpl implements Card { this.ability = ability; this.ability.setControllerId(controllerId); - if (ability.getSpellAbilityCastMode() == SpellAbilityCastMode.MORPH - || ability.getSpellAbilityCastMode() == SpellAbilityCastMode.MEGAMORPH){ + if (ability.getSpellAbilityCastMode().isFaceDown()){ // TODO: need research: // - why it use game param for color and subtype (possible bug?) // - is it possible to use BecomesFaceDownCreatureEffect.makeFaceDownObject or like that?