diff --git a/Mage.Sets/src/mage/cards/a/AccursedWitch.java b/Mage.Sets/src/mage/cards/a/AccursedWitch.java index bf88d81b5e9..a6ad8937615 100644 --- a/Mage.Sets/src/mage/cards/a/AccursedWitch.java +++ b/Mage.Sets/src/mage/cards/a/AccursedWitch.java @@ -84,8 +84,7 @@ class AccursedWitchReturnTransformedEffect extends OneShotEffect { } game.getState().setValue(TransformAbility.VALUE_KEY_ENTER_TRANSFORMED + source.getSourceId(), Boolean.TRUE); - UUID secondFaceId = card.getSecondCardFace().getId(); - game.getState().setValue("attachTo:" + secondFaceId, attachTo.getId()); + game.getState().setValue("attachTo:" + source.getSourceId(), attachTo.getId()); if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) { attachTo.addAttachment(card.getId(), source, game); } diff --git a/Mage.Sets/src/mage/cards/r/RadiantGrace.java b/Mage.Sets/src/mage/cards/r/RadiantGrace.java index 0ab4e8ac2d9..ec94edc67b2 100644 --- a/Mage.Sets/src/mage/cards/r/RadiantGrace.java +++ b/Mage.Sets/src/mage/cards/r/RadiantGrace.java @@ -96,8 +96,7 @@ class RadiantGraceEffect extends OneShotEffect { } game.getState().setValue(TransformAbility.VALUE_KEY_ENTER_TRANSFORMED + source.getSourceId(), Boolean.TRUE); - UUID secondFaceId = game.getCard(source.getSourceId()).getSecondCardFace().getId(); - game.getState().setValue("attachTo:" + secondFaceId, player.getId()); + game.getState().setValue("attachTo:" + source.getSourceId(), player.getId()); if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) { player.addAttachment(card.getId(), source, game); } diff --git a/Mage.Sets/src/mage/cards/v/VengefulStrangler.java b/Mage.Sets/src/mage/cards/v/VengefulStrangler.java index 1b1de179298..89d335b6562 100644 --- a/Mage.Sets/src/mage/cards/v/VengefulStrangler.java +++ b/Mage.Sets/src/mage/cards/v/VengefulStrangler.java @@ -92,8 +92,7 @@ class VengefulStranglerEffect extends OneShotEffect { } game.getState().setValue(TransformAbility.VALUE_KEY_ENTER_TRANSFORMED + source.getSourceId(), Boolean.TRUE); - UUID secondFaceId = game.getCard(source.getSourceId()).getSecondCardFace().getId(); - game.getState().setValue("attachTo:" + secondFaceId, permanent.getId()); + game.getState().setValue("attachTo:" + source.getSourceId(), permanent); if (controller.moveCards(card, Zone.BATTLEFIELD, source, game)) { permanent.addAttachment(card.getId(), source, game); } diff --git a/Mage/src/main/java/mage/abilities/effects/AuraReplacementEffect.java b/Mage/src/main/java/mage/abilities/effects/AuraReplacementEffect.java index 4c491da8d29..15cb21e2582 100644 --- a/Mage/src/main/java/mage/abilities/effects/AuraReplacementEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/AuraReplacementEffect.java @@ -2,7 +2,6 @@ package mage.abilities.effects; import java.util.Locale; import java.util.UUID; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.SpellAbility; import mage.abilities.effects.common.AttachEffect; @@ -14,16 +13,14 @@ import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; import mage.game.permanent.PermanentCard; -import mage.game.stack.StackAbility; import mage.players.Player; import mage.target.Target; import mage.target.common.TargetCardInGraveyard; -import static org.apache.log4j.LogMF.info; /** * Cards with the Aura subtype don't change the zone they are in, if there is no * valid target on the battlefield. Also, when entering the battlefield and it - * was not cast (so from Zone != Hand), this effect gets the target to whitch to + * was not cast (so from Zone != Stack), this effect gets the target to which to * attach it and adds the Aura the the battlefield and attachs it to the target. * The "attachTo:" value in game state has to be set therefore. *
@@ -63,15 +60,6 @@ public class AuraReplacementEffect extends ReplacementEffectImpl { return false; } - Card firstCardFace = null; - if (game.getState().getValue(TransformAbility.VALUE_KEY_ENTER_TRANSFORMED + card.getId()) != null) { - firstCardFace = card; - card = card.getSecondCardFace(); - if (!card.isEnchantment(game) || !card.hasSubtype(SubType.AURA, game)) { - return false; - } - } - // Aura cards that go to battlefield face down (Manifest) don't have to select targets if (card.isFaceDown(game)) { return false; @@ -93,14 +81,7 @@ public class AuraReplacementEffect extends ReplacementEffectImpl { } UUID targetId = null; - MageObject sourceObject = game.getObject(event.getSourceId()); boolean enchantCardInGraveyard = false; - if (sourceObject instanceof StackAbility) { - StackAbility stackAbility = (StackAbility) sourceObject; - if (!stackAbility.getEffects().isEmpty()) { - targetId = stackAbility.getEffects().get(0).getTargetPointer().getFirst(game, stackAbility); - } - } game.applyEffects(); // So continuousEffects are removed if previous effect of the same ability did move objects that cause continuous effects Player controllingPlayer = null; @@ -153,12 +134,7 @@ public class AuraReplacementEffect extends ReplacementEffectImpl { } Player targetPlayer = game.getPlayer(targetId); if (targetCard != null || targetPermanent != null || targetPlayer != null) { - if (firstCardFace != null) { - // transforming card. remove first face (original card) from old zone - firstCardFace.removeFromZone(game, fromZone, source); - } else { - card.removeFromZone(game, fromZone, source); - } + card.removeFromZone(game, fromZone, source); PermanentCard permanent = new PermanentCard(card, (controllingPlayer == null ? card.getOwnerId() : controllingPlayer.getId()), game); ZoneChangeEvent zoneChangeEvent = new ZoneChangeEvent(permanent, event.getPlayerId(), fromZone, Zone.BATTLEFIELD); permanent.updateZoneChangeCounter(game, zoneChangeEvent); @@ -202,16 +178,19 @@ public class AuraReplacementEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (((ZoneChangeEvent) event).getToZone() == Zone.BATTLEFIELD - && (((ZoneChangeEvent) event).getFromZone() != Zone.STACK)) { - Card card = game.getCard(event.getTargetId()); - return card != null && (card.isEnchantment(game) && card.hasSubtype(SubType.AURA, game) - || // in case of transformable enchantments - (game.getState().getValue(TransformAbility.VALUE_KEY_ENTER_TRANSFORMED + card.getId()) != null - && card.getSecondCardFace() != null - && card.getSecondCardFace().isEnchantment(game) - && card.getSecondCardFace().hasSubtype(SubType.AURA, game))); + ZoneChangeEvent zEvent = (ZoneChangeEvent) event; + if (zEvent.getToZone() != Zone.BATTLEFIELD || zEvent.getFromZone() == Zone.STACK) { + return false; } - return false; + Card card = game.getCard(zEvent.getTargetId()); + if (card == null) { + return false; + } + // in case of transformable enchantments + if (Boolean.TRUE.equals(game.getState().getValue(TransformAbility.VALUE_KEY_ENTER_TRANSFORMED + card.getId())) + && card.getSecondCardFace() != null) { + card = card.getSecondCardFace(); + } + return card.isEnchantment(game) && card.hasSubtype(SubType.AURA, game); } }