From eb62b921f0515a906a5b65c4301dace1483f9a77 Mon Sep 17 00:00:00 2001 From: PurpleCrowbar <26198472+PurpleCrowbar@users.noreply.github.com> Date: Mon, 22 Aug 2022 02:28:42 +0100 Subject: [PATCH] Fixed Icingdeath, Frost Tongue not triggering on attack. Closes #9380 --- .../token/IcingdeathFrostTongueToken.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/Mage/src/main/java/mage/game/permanent/token/IcingdeathFrostTongueToken.java b/Mage/src/main/java/mage/game/permanent/token/IcingdeathFrostTongueToken.java index b1398e817c6..39d6c118f3a 100644 --- a/Mage/src/main/java/mage/game/permanent/token/IcingdeathFrostTongueToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/IcingdeathFrostTongueToken.java @@ -11,10 +11,14 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.DefendingPlayerControlsPredicate; +import mage.filter.predicate.ObjectSourcePlayer; +import mage.filter.predicate.ObjectSourcePlayerPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import java.util.Arrays; +import java.util.Optional; /** * @author TheElk801 @@ -25,7 +29,7 @@ public class IcingdeathFrostTongueToken extends TokenImpl { = new FilterCreaturePermanent("creature defending player controls"); static { - filter.add(DefendingPlayerControlsPredicate.instance); + filter.add(IcingdeathFrostTonguePredicate.instance); } public IcingdeathFrostTongueToken() { @@ -61,3 +65,21 @@ public class IcingdeathFrostTongueToken extends TokenImpl { return new IcingdeathFrostTongueToken(this); } } + +enum IcingdeathFrostTonguePredicate implements ObjectSourcePlayerPredicate { + instance; + + @Override + public boolean apply(ObjectSourcePlayer input, Game game) { + return Optional.ofNullable(input.getSource().getSourcePermanentOrLKI(game)) + .map(Permanent::getAttachedTo) + .map(uuid -> game.getCombat().getDefendingPlayerId(uuid, game)) + .map(input.getObject()::isControlledBy) + .orElse(false); + } + + @Override + public String toString() { + return ""; + } +}