From 11b692fa4783006c3af19b12324e220e04a65f8d Mon Sep 17 00:00:00 2001 From: North Date: Fri, 25 May 2012 20:08:12 +0300 Subject: [PATCH] fixed BlocksTriggeredAbility --- .../src/mage/sets/magic2010/WallOfFrost.java | 42 ++----------------- .../src/mage/sets/tenth/LoyalSentry.java | 2 +- .../common/BlocksTriggeredAbility.java | 18 ++++++-- 3 files changed, 18 insertions(+), 44 deletions(-) diff --git a/Mage.Sets/src/mage/sets/magic2010/WallOfFrost.java b/Mage.Sets/src/mage/sets/magic2010/WallOfFrost.java index 75b624555ab..8a6b74d9719 100644 --- a/Mage.Sets/src/mage/sets/magic2010/WallOfFrost.java +++ b/Mage.Sets/src/mage/sets/magic2010/WallOfFrost.java @@ -31,16 +31,11 @@ package mage.sets.magic2010; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; -import mage.Constants.Zone; import mage.MageInt; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.BlocksTriggeredAbility; import mage.abilities.effects.common.SkipNextUntapTargetEffect; import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; -import mage.target.common.TargetCreaturePermanent; /** * @@ -57,7 +52,8 @@ public class WallOfFrost extends CardImpl { this.toughness = new MageInt(7); this.addAbility(DefenderAbility.getInstance()); - this.addAbility(new WallOfFrostAbility()); + // Whenever Wall of Frost blocks a creature, that creature doesn't untap during its controller's next untap step. + this.addAbility(new BlocksTriggeredAbility(new SkipNextUntapTargetEffect(), false, true)); } public WallOfFrost(final WallOfFrost card) { @@ -70,35 +66,3 @@ public class WallOfFrost extends CardImpl { } } - -class WallOfFrostAbility extends TriggeredAbilityImpl { - - public WallOfFrostAbility() { - super(Zone.BATTLEFIELD, new SkipNextUntapTargetEffect(), false); - } - - public WallOfFrostAbility(final WallOfFrostAbility ability) { - super(ability); - } - - @Override - public WallOfFrostAbility copy() { - return new WallOfFrostAbility(this); - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getType() == EventType.BLOCKER_DECLARED && event.getSourceId().equals(this.getSourceId())) { - this.addTarget(new TargetCreaturePermanent()); - this.getTargets().get(0).add(event.getTargetId(), game); - return true; - } - return false; - } - - @Override - public String getRule() { - return "Whenever {this} blocks a creature, that creature doesn't untap during its controller's next untap step"; - } - -} diff --git a/Mage.Sets/src/mage/sets/tenth/LoyalSentry.java b/Mage.Sets/src/mage/sets/tenth/LoyalSentry.java index a5d17506c65..765cc75fe29 100644 --- a/Mage.Sets/src/mage/sets/tenth/LoyalSentry.java +++ b/Mage.Sets/src/mage/sets/tenth/LoyalSentry.java @@ -57,7 +57,7 @@ public class LoyalSentry extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - this.addAbility(new BlocksTriggeredAbility(new LoyalSentryEffect(), false)); + this.addAbility(new BlocksTriggeredAbility(new LoyalSentryEffect(), false, true)); } public LoyalSentry (final LoyalSentry card) { diff --git a/Mage/src/mage/abilities/common/BlocksTriggeredAbility.java b/Mage/src/mage/abilities/common/BlocksTriggeredAbility.java index cd0d7feed6e..d2b00fe4bed 100644 --- a/Mage/src/mage/abilities/common/BlocksTriggeredAbility.java +++ b/Mage/src/mage/abilities/common/BlocksTriggeredAbility.java @@ -33,7 +33,7 @@ import mage.abilities.effects.Effect; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; -import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.FixedTarget; /** * @@ -41,9 +41,15 @@ import mage.target.common.TargetCreaturePermanent; */ public class BlocksTriggeredAbility extends TriggeredAbilityImpl { + private boolean fixedTargetPointer; + public BlocksTriggeredAbility(Effect effect, boolean optional) { + this(effect, optional, false); + } + + public BlocksTriggeredAbility(Effect effect, boolean optional, boolean fixedTargetPointer) { super(Zone.BATTLEFIELD, effect, optional); - this.addTarget(new TargetCreaturePermanent()); + this.fixedTargetPointer = fixedTargetPointer; } public BlocksTriggeredAbility(final BlocksTriggeredAbility ability) { @@ -53,7 +59,11 @@ public class BlocksTriggeredAbility extends TriggeredAbilityImpl