From a94c837ad0cf9d6a544fc14a93563194c5ea7b54 Mon Sep 17 00:00:00 2001 From: "Alex W. Jackson" Date: Fri, 8 Jul 2022 23:37:52 -0400 Subject: [PATCH] Fix casting of Disturb cards with Auras on the back (#8600) --- .../main/java/mage/abilities/keyword/DisturbAbility.java | 8 ++------ Mage/src/main/java/mage/cards/Card.java | 2 ++ Mage/src/main/java/mage/cards/CardImpl.java | 9 +++++++++ Mage/src/main/java/mage/game/stack/Spell.java | 5 +++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Mage/src/main/java/mage/abilities/keyword/DisturbAbility.java b/Mage/src/main/java/mage/abilities/keyword/DisturbAbility.java index 4a6d3441667..fa75c9fd8b8 100644 --- a/Mage/src/main/java/mage/abilities/keyword/DisturbAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/DisturbAbility.java @@ -30,14 +30,10 @@ public class DisturbAbility extends SpellAbility { private SpellAbility spellAbilityToResolve; public DisturbAbility(Card card, String manaCost) { - super(card.getSpellAbility()); + super(card.getSecondFaceSpellAbility()); this.newId(); - // verify check - if (card.getSecondCardFace() == null || card.getSecondCardFace().getClass().equals(card.getClass())) { - throw new IllegalArgumentException("Wrong code usage. Disturb ability can be added to double faces card only (main side)."); - } - + // getSecondFaceSpellAbility() already verified that second face exists this.setCardName(card.getSecondCardFace().getName() + " with Disturb"); this.zone = Zone.GRAVEYARD; this.spellAbilityType = SpellAbilityType.BASE_ALTERNATE; diff --git a/Mage/src/main/java/mage/cards/Card.java b/Mage/src/main/java/mage/cards/Card.java index 5db0ca7208d..628eacd57ce 100644 --- a/Mage/src/main/java/mage/cards/Card.java +++ b/Mage/src/main/java/mage/cards/Card.java @@ -72,6 +72,8 @@ public interface Card extends MageObject { Card getSecondCardFace(); + SpellAbility getSecondFaceSpellAbility(); + boolean isNightCard(); void assignNewId(); diff --git a/Mage/src/main/java/mage/cards/CardImpl.java b/Mage/src/main/java/mage/cards/CardImpl.java index 90379940bc0..eda028ffc5d 100644 --- a/Mage/src/main/java/mage/cards/CardImpl.java +++ b/Mage/src/main/java/mage/cards/CardImpl.java @@ -636,6 +636,15 @@ public abstract class CardImpl extends MageObjectImpl implements Card { return secondSideCard; } + @Override + public SpellAbility getSecondFaceSpellAbility() { + Card secondFace = getSecondCardFace(); + if (secondFace == null || secondFace.getClass().equals(getClass())) { + throw new IllegalArgumentException("Wrong code usage. getSecondFaceSpellAbility can only be used for double faced card (main side)."); + } + return secondFace.getSpellAbility(); + } + @Override public boolean isNightCard() { return this.nightCard; diff --git a/Mage/src/main/java/mage/game/stack/Spell.java b/Mage/src/main/java/mage/game/stack/Spell.java index 56c90ba6bdf..92126c25429 100644 --- a/Mage/src/main/java/mage/game/stack/Spell.java +++ b/Mage/src/main/java/mage/game/stack/Spell.java @@ -768,6 +768,11 @@ public class Spell extends StackObjectImpl implements Card { return null; } + @Override + public SpellAbility getSecondFaceSpellAbility() { + return null; + } + @Override public boolean isNightCard() { return false;