From 190edf0c3a107eee9d4a339574d51446aabcd26e Mon Sep 17 00:00:00 2001 From: Kleanthis Zymaris <43553123+kzymaris@users.noreply.github.com> Date: Mon, 12 Feb 2024 17:38:17 -0500 Subject: [PATCH] Wayta, Trainer Prodigy - fixed cost reduction ad to Way (#11782) --- .../src/mage/cards/w/WaytaTrainerProdigy.java | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/Mage.Sets/src/mage/cards/w/WaytaTrainerProdigy.java b/Mage.Sets/src/mage/cards/w/WaytaTrainerProdigy.java index 0c3d5e59be2..14226112377 100644 --- a/Mage.Sets/src/mage/cards/w/WaytaTrainerProdigy.java +++ b/Mage.Sets/src/mage/cards/w/WaytaTrainerProdigy.java @@ -101,22 +101,35 @@ enum WaytaTrainerProdigyAdjuster implements CostAdjuster { @Override public void adjustCosts(Ability ability, Game game) { - Target secondTarget = null; - for (Target target : ability.getTargets()){ - if (target.getTargetTag() == 2){ - secondTarget = target; - break; + if (game.inCheckPlayableState()) { + int controllerTargets = 0; //number of possible targets controlled by the ability's controller + for (UUID permId : CardUtil.getAllPossibleTargets(ability, game)) { + Permanent permanent = game.getPermanent(permId); + if (permanent != null && permanent.isControlledBy(ability.getControllerId())) { + controllerTargets++; + } + } + if (controllerTargets > 1) { + CardUtil.reduceCost(ability, 2); + } + } else { + Target secondTarget = null; + for (Target target : ability.getTargets()) { + if (target.getTargetTag() == 2) { + secondTarget = target; + break; + } + } + if (secondTarget == null) { + return; + } + // Having to call getFirstTarget() on a Target object called secondTarget + // (because it's the second target of a two-target ability) + // seems like an insult, but this is just getting the UUID of that target + Permanent permanent = game.getPermanentOrLKIBattlefield(secondTarget.getFirstTarget()); + if (permanent != null && permanent.isControlledBy(ability.getControllerId())) { + CardUtil.reduceCost(ability, 2); } - } - if (secondTarget == null){ - return; - } - // Having to call getFirstTarget() on a Target object called secondTarget - // (because it's the second target of a two-target ability) - // seems like an insult, but this is just getting the UUID of that target - Permanent permanent = game.getPermanentOrLKIBattlefield(secondTarget.getFirstTarget()); - if (permanent != null && permanent.isControlledBy(ability.getControllerId())) { - CardUtil.reduceCost(ability, 2); } } }