From e83da9ff9c8086e89f4b42a74264d03b35f78f8d Mon Sep 17 00:00:00 2001 From: Sloth Date: Thu, 7 Nov 2013 09:17:48 +0000 Subject: [PATCH] - Some safety fixes for Muck Drubb. --- res/cardsfolder/m/muck_drubb.txt | 4 ++-- .../ability/effects/ChangeTargetsEffect.java | 22 ++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/res/cardsfolder/m/muck_drubb.txt b/res/cardsfolder/m/muck_drubb.txt index da9032dfd07..c07a0f1ee5d 100644 --- a/res/cardsfolder/m/muck_drubb.txt +++ b/res/cardsfolder/m/muck_drubb.txt @@ -4,8 +4,8 @@ Types:Creature Beast PT:3/3 K:Flash T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, change the target of target spell that targets only a single creature to Muck Drubb. -SVar:TrigChange:AB$ ChangeTargets | Cost$ 0 | TargetType$ Spell | ValidTgts$ Card | Defined$ Self | TargetsSingleTarget$ True | ChangeSingleTarget$ True | TargetValidTargeting$ Creature +SVar:TrigChange:AB$ ChangeTargets | Cost$ 0 | TargetType$ Spell | ValidTgts$ Card | Defined$ Self | TargetsSingleTarget$ True | TargetValidTargeting$ Creature K:Madness:2 B SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/muck_drubb.jpg -Oracle:Flash (You may cast this spell any time you could cast an instant.)\nWhen Muck Drubb enters the battlefield, change the target of target spell that targets only a single creature to Muck Drubb.\nMadness {2}{B} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.) +Oracle:Flash (You may cast this spell any time you could cast an instant.)\nWhen Muck Drubb enters the battlefield, change the target of target spell that targets only a single creature to Muck Drubb.\nMadness {2}{B} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.) \ No newline at end of file diff --git a/src/main/java/forge/card/ability/effects/ChangeTargetsEffect.java b/src/main/java/forge/card/ability/effects/ChangeTargetsEffect.java index d080d24c007..5d6eefbfadc 100644 --- a/src/main/java/forge/card/ability/effects/ChangeTargetsEffect.java +++ b/src/main/java/forge/card/ability/effects/ChangeTargetsEffect.java @@ -30,7 +30,6 @@ public class ChangeTargetsEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { final List sas = getTargetSpells(sa); final boolean remember = sa.hasParam("RememberTargetedCard"); - final boolean random = sa.hasParam("RandomTarget"); final MagicStack stack = sa.getActivatingPlayer().getGame().getStack(); for (final SpellAbility tgtSA : sas) { @@ -86,18 +85,25 @@ public class ChangeTargetsEffect extends SpellAbilityEffect { } else { while(changingTgtSI != null) { SpellAbility changingTgtSA = changingTgtSI.getSpellAbility(); - if (!random) { - // Update targets, with a potential new target - TargetChoices newTarget = sa.getActivatingPlayer().getController().chooseNewTargetsFor(changingTgtSA); - if (null != newTarget) { - changingTgtSI.updateTarget(newTarget); - } - } else { + if (sa.hasParam("RandomTarget")){ changingTgtSA.resetTargets(); List candidates = changingTgtSA.getTargetRestrictions().getAllCandidates(changingTgtSA, true); GameObject choice = Aggregates.random(candidates); changingTgtSA.getTargets().add(choice); changingTgtSI.updateTarget(changingTgtSA.getTargets()); + } else if (sa.hasParam("Defined")){ + GameObject newTarget = Iterables.getFirst(getDefinedCardsOrTargeted(sa), null); + if(changingTgtSA.canTarget(newTarget)) { + changingTgtSA.resetTargets(); + changingTgtSA.getTargets().add(newTarget); + changingTgtSI.updateTarget(changingTgtSA.getTargets()); + } + } else { + // Update targets, with a potential new target + TargetChoices newTarget = sa.getActivatingPlayer().getController().chooseNewTargetsFor(changingTgtSA); + if (null != newTarget) { + changingTgtSI.updateTarget(newTarget); + } } changingTgtSI = changingTgtSI.getSubInstace(); }