From d773ed3d1331a9367502d656c2517e012fcd7be0 Mon Sep 17 00:00:00 2001 From: North Date: Sat, 21 Jul 2012 23:18:17 +0300 Subject: [PATCH] [filters] Replaced EvilTwin filter with predicate This commit also touches the targeting system. Changes were made for consistency. --- .../src/mage/player/human/HumanPlayer.java | 4 +-- Mage.Server/plugins/mage-player-human.jar | Bin 14379 -> 14496 bytes .../src/mage/sets/innistrad/EvilTwin.java | 34 +++++++++--------- Mage/src/mage/target/Targets.java | 2 +- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java index 40dd05f68b7..595ec0b5cc2 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java @@ -242,8 +242,8 @@ public class HumanPlayer extends PlayerImpl { public boolean chooseTarget(Outcome outcome, Target target, Ability source, Game game) { updateGameStatePriority("chooseTarget", game); while (!abort) { - Set possibleTargets = target.possibleTargets(source==null?null:source.getId(), playerId, game); - boolean required = possibleTargets.size() == 0 ? false : target.isRequired(); + Set possibleTargets = target.possibleTargets(source==null?null:source.getSourceId(), playerId, game); + boolean required = possibleTargets.isEmpty() ? false : target.isRequired(); game.fireSelectTargetEvent(playerId, target.getMessage(), possibleTargets, required, getOptions(target)); waitForResponse(); if (response.getUUID() != null) { diff --git a/Mage.Server/plugins/mage-player-human.jar b/Mage.Server/plugins/mage-player-human.jar index 61d79465e30a0b1bf4ce78b846dd6f429d1e0e83..b10caac72adf76bf1f54374eedf78c5b5b09aa23 100644 GIT binary patch delta 12941 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 vp!~)C_zxVr}b9(LFysEl( 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 diff --git a/Mage.Sets/src/mage/sets/innistrad/EvilTwin.java b/Mage.Sets/src/mage/sets/innistrad/EvilTwin.java index 3d410b3b887..a5aa08ca761 100644 --- a/Mage.Sets/src/mage/sets/innistrad/EvilTwin.java +++ b/Mage.Sets/src/mage/sets/innistrad/EvilTwin.java @@ -43,6 +43,8 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.ObjectSourcePlayer; +import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; @@ -53,6 +55,12 @@ import mage.target.common.TargetCreaturePermanent; */ public class EvilTwin extends CardImpl { + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with the same name as this creature"); + + static { + filter.add(new EvilTwinPredicate()); + } + public EvilTwin(UUID ownerId) { super(ownerId, 212, "Evil Twin", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{U}{B}"); this.expansionSetCode = "ISD"; @@ -67,7 +75,7 @@ public class EvilTwin extends CardImpl { Ability ability1 = new SimpleStaticAbility(Zone.BATTLEFIELD, new EntersBattlefieldEffect(new CopyPermanentEffect(), "You may have {this} enter the battlefield as a copy of any creature on the battlefield except it gains {U}{B}, {T}: Destroy target creature with the same name as this creature")); Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{U}{B}")); ability2.addCost(new TapSourceCost()); - ability2.addTarget(new TargetCreaturePermanent(new EvilTwinFilter())); + ability2.addTarget(new TargetCreaturePermanent(filter)); ability1.addEffect(new GainAbilitySourceEffect(ability2)); this.addAbility(ability1); } @@ -82,24 +90,18 @@ public class EvilTwin extends CardImpl { } } -class EvilTwinFilter extends FilterCreaturePermanent { +class EvilTwinPredicate implements ObjectSourcePlayerPredicate> { - public EvilTwinFilter() { - super("creature with the same name as this creature"); + @Override + public boolean apply(ObjectSourcePlayer input, Game game) { + Permanent permanent = input.getObject(); + Permanent twin = game.getPermanent(input.getSourceId()); + + return permanent != null && twin != null && permanent.getName().equals(twin.getName()); } @Override - public boolean match(Permanent permanent, UUID sourceId, UUID playerId, Game game) { - if (!super.match(permanent, game)) - return notFilter; - - Permanent twin = game.getPermanent(sourceId); - if (twin != null) { - if (!permanent.getName().equals(twin.getName())) - return false; - } - - return !notFilter; + public String toString() { + return "SameNameAsSource"; } - } diff --git a/Mage/src/mage/target/Targets.java b/Mage/src/mage/target/Targets.java index 8dcb37cc030..2077fbd8ee5 100644 --- a/Mage/src/mage/target/Targets.java +++ b/Mage/src/mage/target/Targets.java @@ -87,7 +87,7 @@ public class Targets extends ArrayList { public boolean chooseTargets(Outcome outcome, UUID playerId, Ability source, Game game) { if (this.size() > 0) { - if (!canChoose(source.getId(), playerId, game)) + if (!canChoose(source.getSourceId(), playerId, game)) return false; while (!isChosen()) { Target target = this.getUnchosen().get(0);