From 8b2a81cb42c337497a32068fc13cee5ad076812b Mon Sep 17 00:00:00 2001 From: xenohedron <12538125+xenohedron@users.noreply.github.com> Date: Sat, 31 May 2025 23:03:02 -0400 Subject: [PATCH] fix some missing target tags --- .../src/mage/cards/c/ClosingStatement.java | 10 ++++----- .../src/mage/cards/c/CombineGuildmage.java | 2 +- .../src/mage/cards/d/DaghatarTheAdamant.java | 2 +- .../src/mage/cards/d/DevouringTendrils.java | 11 ++-------- .../src/mage/cards/f/FallOfGilGalad.java | 2 +- .../src/mage/cards/g/GarrukSavageHerald.java | 22 ++++--------------- Mage.Sets/src/mage/cards/l/LeechBonder.java | 2 +- Mage.Sets/src/mage/cards/m/MastersRebuke.java | 6 ++--- .../src/mage/cards/n/NestingGrounds.java | 2 +- Mage.Sets/src/mage/cards/r/RumorMonger.java | 2 +- Mage.Sets/src/mage/cards/s/SelfDestruct.java | 4 ++-- .../src/mage/cards/s/SimicGuildmage.java | 6 ++--- 12 files changed, 24 insertions(+), 47 deletions(-) diff --git a/Mage.Sets/src/mage/cards/c/ClosingStatement.java b/Mage.Sets/src/mage/cards/c/ClosingStatement.java index 83c29a92f1d..12444cbfcb2 100644 --- a/Mage.Sets/src/mage/cards/c/ClosingStatement.java +++ b/Mage.Sets/src/mage/cards/c/ClosingStatement.java @@ -44,11 +44,11 @@ public final class ClosingStatement extends CardImpl { this.addAbility(ability); // Destroy target creature or planeswalker you don't control. Put a +1/+1 counter on up to one target creature you control. - this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker(1, 1, filter, false)); + this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker(1, 1, filter, false) + .setTargetTag(1)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); - Target target = new TargetControlledCreaturePermanent(0, 1); - target.setTargetTag(2); - this.getSpellAbility().addTarget(target); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent(0, 1) + .setTargetTag(2)); this.getSpellAbility().addEffect(new ClosingStatementEffect()); } @@ -94,4 +94,4 @@ class ClosingStatementEffect extends OneShotEffect { } return true; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/c/CombineGuildmage.java b/Mage.Sets/src/mage/cards/c/CombineGuildmage.java index 9bc468d89f6..33acf4c366c 100644 --- a/Mage.Sets/src/mage/cards/c/CombineGuildmage.java +++ b/Mage.Sets/src/mage/cards/c/CombineGuildmage.java @@ -53,7 +53,7 @@ public final class CombineGuildmage extends CardImpl { // {1}{U}, {T}: Move a +1/+1 counter from target creature you control onto another target creature you control. ability = new SimpleActivatedAbility(new MoveCounterTargetsEffect(CounterType.P1P1), new ManaCostsImpl<>("{1}{U}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetControlledCreaturePermanent().withChooseHint("to remove a counter from")); + ability.addTarget(new TargetControlledCreaturePermanent().withChooseHint("to remove a counter from").setTargetTag(1)); ability.addTarget(new TargetPermanent(filter).withChooseHint("to move a counter to").setTargetTag(2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DaghatarTheAdamant.java b/Mage.Sets/src/mage/cards/d/DaghatarTheAdamant.java index 9c679a78189..826be14a536 100644 --- a/Mage.Sets/src/mage/cards/d/DaghatarTheAdamant.java +++ b/Mage.Sets/src/mage/cards/d/DaghatarTheAdamant.java @@ -53,7 +53,7 @@ public final class DaghatarTheAdamant extends CardImpl { Ability ability = new SimpleActivatedAbility( new MoveCounterTargetsEffect(CounterType.P1P1), new ManaCostsImpl<>("{1}{B/G}{B/G}") ); - ability.addTarget(new TargetCreaturePermanent().withChooseHint("to remove a counter from")); + ability.addTarget(new TargetCreaturePermanent().withChooseHint("to remove a counter from").setTargetTag(1)); ability.addTarget(new TargetPermanent(filter).withChooseHint("to move a counter to").setTargetTag(2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DevouringTendrils.java b/Mage.Sets/src/mage/cards/d/DevouringTendrils.java index 07f16c164de..27b67965980 100644 --- a/Mage.Sets/src/mage/cards/d/DevouringTendrils.java +++ b/Mage.Sets/src/mage/cards/d/DevouringTendrils.java @@ -19,7 +19,6 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; -import mage.target.Target; import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -44,9 +43,7 @@ public final class DevouringTendrils extends CardImpl { Effect effect = new DamageWithPowerFromOneToAnotherTargetEffect(); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - TargetPermanent target = new TargetPermanent(filter); - target.setTargetTag(2); - this.getSpellAbility().addTarget(target); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DevouringTendrilsEffect()); } @@ -79,11 +76,7 @@ class DevouringTendrilsEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Target target = source.getTargets().stream() - .filter(t -> t.getTargetTag() == 2) - .findFirst() - .orElseThrow(() -> new IllegalStateException("Expected to find target with tag 2 but found none")); - Permanent permanent = game.getPermanent(target.getFirstTarget()); + Permanent permanent = game.getPermanent(source.getTargets().get(1).getFirstTarget()); if (permanent != null) { DelayedTriggeredAbility delayedAbility = new DevouringTendrilsDelayedTriggeredAbility(new MageObjectReference(permanent, game)); game.addDelayedTriggeredAbility(delayedAbility, source); diff --git a/Mage.Sets/src/mage/cards/f/FallOfGilGalad.java b/Mage.Sets/src/mage/cards/f/FallOfGilGalad.java index f1632d577dc..3dbe36dec56 100644 --- a/Mage.Sets/src/mage/cards/f/FallOfGilGalad.java +++ b/Mage.Sets/src/mage/cards/f/FallOfGilGalad.java @@ -52,7 +52,7 @@ public final class FallOfGilGalad extends CardImpl { .setTriggerPhrase("When this creature dies, ") ).setText("until end of turn, target creature you control gains \"When this creature dies, draw two cards.\"")); ability.addEffect(new FightTargetsEffect().setText("Then that creature fights up to one other target creature")); - ability.addTarget(new TargetControlledCreaturePermanent()); + ability.addTarget(new TargetControlledCreaturePermanent().setTargetTag(1)); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2)); }); diff --git a/Mage.Sets/src/mage/cards/g/GarrukSavageHerald.java b/Mage.Sets/src/mage/cards/g/GarrukSavageHerald.java index fec2310512c..35f1bdb7619 100644 --- a/Mage.Sets/src/mage/cards/g/GarrukSavageHerald.java +++ b/Mage.Sets/src/mage/cards/g/GarrukSavageHerald.java @@ -12,19 +12,11 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.CardsImpl; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.SubType; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.StaticFilters; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; import mage.game.Game; import mage.players.Player; -import mage.target.common.TargetControlledCreaturePermanent; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; import java.util.UUID; @@ -49,14 +41,8 @@ public final class GarrukSavageHerald extends CardImpl { effect.setText("Target creature you control deals damage equal to its power to another target creature"); Ability minusAbility = new LoyaltyAbility(effect, -2); - TargetControlledCreaturePermanent controlledCreature = new TargetControlledCreaturePermanent(); - controlledCreature.setTargetTag(1); - minusAbility.addTarget(controlledCreature); - - FilterCreaturePermanent filter = new FilterCreaturePermanent(); - filter.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent anotherTargetCreature = new TargetCreaturePermanent(filter); - minusAbility.addTarget(anotherTargetCreature.withChooseHint("another creature to deal damage to")); + minusAbility.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_CREATURE).setTargetTag(1)); + minusAbility.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2)); this.addAbility(minusAbility); diff --git a/Mage.Sets/src/mage/cards/l/LeechBonder.java b/Mage.Sets/src/mage/cards/l/LeechBonder.java index 0bc52070d2b..42db886683d 100644 --- a/Mage.Sets/src/mage/cards/l/LeechBonder.java +++ b/Mage.Sets/src/mage/cards/l/LeechBonder.java @@ -46,7 +46,7 @@ public final class LeechBonder extends CardImpl { // {U}, {untap}: Move a counter from target creature onto another target creature. Ability ability = new SimpleActivatedAbility(new MoveCounterTargetsEffect(), new ManaCostsImpl<>("{U}")); ability.addCost(new UntapSourceCost()); - ability.addTarget(new TargetCreaturePermanent().withChooseHint("to remove a counter from")); + ability.addTarget(new TargetCreaturePermanent().withChooseHint("to remove a counter from").setTargetTag(1)); ability.addTarget(new TargetPermanent(filter).withChooseHint("to move a counter to").setTargetTag(2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MastersRebuke.java b/Mage.Sets/src/mage/cards/m/MastersRebuke.java index 399b4227601..30b79c0ca82 100644 --- a/Mage.Sets/src/mage/cards/m/MastersRebuke.java +++ b/Mage.Sets/src/mage/cards/m/MastersRebuke.java @@ -29,13 +29,11 @@ public class MastersRebuke extends CardImpl { // Target creature you control deals damage equal to its power to target creature or planeswalker you don’t control. this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - TargetPermanent targetForDamage = new TargetPermanent(filter); - targetForDamage.setTargetTag(2); - this.getSpellAbility().addTarget(targetForDamage); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private MastersRebuke(final MastersRebuke card) { super(card); } @Override public MastersRebuke copy() { return new MastersRebuke(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/n/NestingGrounds.java b/Mage.Sets/src/mage/cards/n/NestingGrounds.java index 1682f65cf3d..7de92d27804 100644 --- a/Mage.Sets/src/mage/cards/n/NestingGrounds.java +++ b/Mage.Sets/src/mage/cards/n/NestingGrounds.java @@ -36,7 +36,7 @@ public final class NestingGrounds extends CardImpl { // {1}, {T}: Move a counter from target permanent you control onto another target permanent. Activate this ability only any time you could cast a sorcery. Ability ability = new ActivateAsSorceryActivatedAbility(new MoveCounterTargetsEffect(), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetControlledPermanent().withChooseHint("to remove a counter from")); + ability.addTarget(new TargetControlledPermanent().withChooseHint("to remove a counter from").setTargetTag(1)); ability.addTarget(new TargetPermanent(filter).withChooseHint("to move a counter to").setTargetTag(2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RumorMonger.java b/Mage.Sets/src/mage/cards/r/RumorMonger.java index ac7d4fb79c7..82296836051 100644 --- a/Mage.Sets/src/mage/cards/r/RumorMonger.java +++ b/Mage.Sets/src/mage/cards/r/RumorMonger.java @@ -46,7 +46,7 @@ public final class RumorMonger extends CardImpl { // Bounty — Whenever a creature an opponent controls with a bounty counter on it dies, you may move a bounty counter from one target creature to another target creatute. ability = new BountyAbility(new MoveCounterTargetsEffect(CounterType.BOUNTY), true); - ability.addTarget(new TargetCreaturePermanent().withChooseHint("to remove a counter from")); + ability.addTarget(new TargetCreaturePermanent().withChooseHint("to remove a counter from").setTargetTag(1)); ability.addTarget(new TargetPermanent(filter).setTargetTag(2).withChooseHint("to move a counter to")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SelfDestruct.java b/Mage.Sets/src/mage/cards/s/SelfDestruct.java index 9c563c32492..fb3b01e108f 100644 --- a/Mage.Sets/src/mage/cards/s/SelfDestruct.java +++ b/Mage.Sets/src/mage/cards/s/SelfDestruct.java @@ -35,8 +35,8 @@ public final class SelfDestruct extends CardImpl { // Target creature you control deals X damage to any other target and X damage to itself, where X is its power. this.getSpellAbility().addEffect(new SelfDestructEffect()); - this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetAnyTarget().setTargetTag(2)); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent().setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetAnyTarget(filter).setTargetTag(2)); } private SelfDestruct(final SelfDestruct card) { diff --git a/Mage.Sets/src/mage/cards/s/SimicGuildmage.java b/Mage.Sets/src/mage/cards/s/SimicGuildmage.java index 4a2ab0f780a..b70db6158b3 100644 --- a/Mage.Sets/src/mage/cards/s/SimicGuildmage.java +++ b/Mage.Sets/src/mage/cards/s/SimicGuildmage.java @@ -57,7 +57,7 @@ public final class SimicGuildmage extends CardImpl { // {1}{G}: Move a +1/+1 counter from target creature onto another target creature with the same controller. Ability countersAbility = new SimpleActivatedAbility(new MoveCounterTargetsEffect(CounterType.P1P1), new ManaCostsImpl<>("{1}{G}")); - countersAbility.addTarget(new TargetCreaturePermanent().withChooseHint("to remove a counter from")); + countersAbility.addTarget(new TargetCreaturePermanent().withChooseHint("to remove a counter from").setTargetTag(1)); countersAbility.addTarget(new TargetPermanent(filter).withChooseHint("to move a counter to").setTargetTag(2)); this.addAbility(countersAbility); @@ -136,7 +136,7 @@ class MoveAuraEffect extends OneShotEffect { } FilterPermanent filter = new FilterPermanent( "permanent" + Optional - .ofNullable(aura) + .of(aura) .map(Permanent::getAttachedTo) .map(game::getControllerId) .map(game::getPlayer) @@ -153,7 +153,7 @@ class MoveAuraEffect extends OneShotEffect { target.withNotTarget(true); controller.choose(outcome, target, source, game); return Optional - .ofNullable(target) + .of(target) .map(TargetImpl::getFirstTarget) .map(game::getPermanent) .map(permanent -> permanent.addAttachment(aura.getId(), source, game))