From bc1f4e409ca8355fb869a45d3e80eb6eab4e7a7a Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 15 Jul 2016 15:30:47 -0500 Subject: [PATCH] - Fixed Aura Swap bug #2025. --- .../sets/tenthedition/AcademyResearchers.java | 21 +++++++------- .../abilities/keyword/AuraSwapAbility.java | 29 +++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Mage.Sets/src/mage/sets/tenthedition/AcademyResearchers.java b/Mage.Sets/src/mage/sets/tenthedition/AcademyResearchers.java index da1d335a3f1..d16a6be2aa9 100644 --- a/Mage.Sets/src/mage/sets/tenthedition/AcademyResearchers.java +++ b/Mage.Sets/src/mage/sets/tenthedition/AcademyResearchers.java @@ -93,23 +93,24 @@ class AcademyResearchersEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { + FilterCard filterCardInHand = new FilterCard(); + filterCardInHand.add(new SubtypePredicate("Aura")); Player controller = game.getPlayer(source.getControllerId()); - Permanent permanent = game.getPermanent(source.getSourceId()); - if (controller != null && permanent != null) { - FilterCard filter = new FilterCard(); - filter.add(new SubtypePredicate("Aura")); - filter.add(new AuraCardCanAttachToPermanentId(permanent.getId())); - TargetCardInHand target = new TargetCardInHand(0, 1, filter); + Permanent academyResearchers = game.getPermanent(source.getSourceId()); + if (controller != null && academyResearchers != null) { + filterCardInHand.add(new AuraCardCanAttachToPermanentId(academyResearchers.getId())); + TargetCardInHand target = new TargetCardInHand(0, 1, filterCardInHand); if (controller.choose(Outcome.PutCardInPlay, target, source.getSourceId(), game)) { Card auraInHand = game.getCard(target.getFirstTarget()); if (auraInHand != null) { - game.getState().setValue("attachTo:" + auraInHand.getId(), permanent); - if (controller.moveCards(auraInHand, Zone.BATTLEFIELD, source, game)) { - permanent.addAttachment(auraInHand.getId(), game); + game.getState().setValue("attachTo:" + auraInHand.getId(), academyResearchers); + auraInHand.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), controller.getId()); + if (academyResearchers.addAttachment(auraInHand.getId(), game)) { + game.informPlayers(controller.getLogName() + " put " + auraInHand.getLogName() + " on the battlefield attached to " + academyResearchers.getLogName() + "."); + return true; } } } - return true; } return false; } diff --git a/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java b/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java index d8120f6c6d7..eb00024e058 100644 --- a/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java @@ -50,7 +50,6 @@ public class AuraSwapAbility extends ActivatedAbilityImpl { public AuraSwapAbility(ManaCost manaCost) { super(Zone.BATTLEFIELD, new AuraSwapEffect(), manaCost); - } public AuraSwapAbility(final AuraSwapAbility ability) { @@ -72,12 +71,6 @@ public class AuraSwapAbility extends ActivatedAbilityImpl { class AuraSwapEffect extends OneShotEffect { - private static final FilterCard filter = new FilterCard(); - - static { - filter.add(new SubtypePredicate("Aura")); - } - AuraSwapEffect() { super(Outcome.PutCardInPlay); this.staticText = "Exchange this Aura with an Aura card in your hand."; @@ -94,20 +87,26 @@ class AuraSwapEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { + FilterCard filterCardToCheck = new FilterCard(); + filterCardToCheck.add(new SubtypePredicate("Aura")); Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - Permanent auraPermanent = game.getPermanent(source.getSourceId()); - if (auraPermanent != null && auraPermanent.getSubtype().contains("Aura") && auraPermanent.getOwnerId().equals(source.getControllerId())) { - Permanent enchantedPermanent = game.getPermanent(auraPermanent.getAttachedTo()); - filter.add(new AuraCardCanAttachToPermanentId(enchantedPermanent.getId())); - TargetCardInHand target = new TargetCardInHand(0, 1, filter); + Permanent auraSourcePermanent = game.getPermanent(source.getSourceId()); + if (auraSourcePermanent != null + && auraSourcePermanent.getSubtype().contains("Aura") + && auraSourcePermanent.getOwnerId().equals(source.getControllerId())) { + Permanent enchantedPermanent = game.getPermanent(auraSourcePermanent.getAttachedTo()); + filterCardToCheck.add(new AuraCardCanAttachToPermanentId(enchantedPermanent.getId())); + TargetCardInHand target = new TargetCardInHand(filterCardToCheck); if (controller.choose(Outcome.PutCardInPlay, target, source.getSourceId(), game)) { Card auraInHand = game.getCard(target.getFirstTarget()); if (auraInHand != null) { - controller.moveCards(auraInHand, Zone.BATTLEFIELD, source, game); + game.getState().setValue("attachTo:" + auraInHand.getId(), enchantedPermanent); + auraInHand.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), controller.getId()); enchantedPermanent.addAttachment(auraInHand.getId(), game); - controller.moveCards(auraPermanent, Zone.HAND, source, game); - return true; + game.informPlayers(controller.getLogName() + " put " + auraInHand.getLogName() + " on the battlefield attached to " + enchantedPermanent.getLogName() + "."); + enchantedPermanent.removeAttachment(auraSourcePermanent.getId(), game); + return controller.moveCardToHandWithInfo(auraSourcePermanent, source.getSourceId(), game); } } }