diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java index dd3b3809987..d15c24b81e1 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -1487,7 +1487,7 @@ public class ChangeZoneAi extends SpellAbilityAi { String logic = sa.getParam("AILogic"); if ("NeverBounceItself".equals(logic)) { Card source = sa.getHostCard(); - if (fetchList.contains(source) && (fetchList.size() > 1 || !sa.getTriggeringAbility().isMandatory())) { + if (fetchList.contains(source) && (fetchList.size() > 1 || !sa.getRootAbility().isMandatory())) { // For cards that should never be bounced back to hand with their own [e.g. triggered] abilities, such as guild lands. fetchList.remove(source); } diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index 813d2463e18..593c57c1012 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -240,9 +240,9 @@ public class AbilityUtils { } } } else if (defined.equals("DelayTriggerRememberedLKI")) { - SpellAbility trigSa = sa.getTriggeringAbility(); - if (trigSa != null) { - for (Object o : trigSa.getTriggerRemembered()) { + SpellAbility root = sa.getRootAbility(); + if (root != null) { + for (Object o : root.getTriggerRemembered()) { if (o instanceof Card) { cards.add((Card)o); } @@ -251,9 +251,9 @@ public class AbilityUtils { System.err.println("Warning: couldn't find trigger SA in the chain of SpellAbility " + sa); } } else if (defined.equals("DelayTriggerRemembered")) { - SpellAbility trigSa = sa.getTriggeringAbility(); - if (trigSa != null) { - for (Object o : trigSa.getTriggerRemembered()) { + SpellAbility root = sa.getRootAbility(); + if (root != null) { + for (Object o : root.getTriggerRemembered()) { if (o instanceof Card) { cards.addAll(addRememberedFromCardState(game, (Card)o)); } @@ -1021,9 +1021,9 @@ public class AbilityUtils { addPlayer(card.getRemembered(), defined, players); } else if (defined.startsWith("DelayTriggerRemembered")) { - SpellAbility trigSa = sa.getTriggeringAbility(); - if (trigSa != null) { - addPlayer(trigSa.getTriggerRemembered(), defined, players); + SpellAbility root = sa.getRootAbility(); + if (root != null) { + addPlayer(root.getTriggerRemembered(), defined, players); } else { System.err.println("Warning: couldn't find trigger SA in the chain of SpellAbility " + sa); } @@ -1696,9 +1696,9 @@ public class AbilityUtils { return sum; } if (sq[0].startsWith("TriggerRememberAmount")) { - SpellAbility trigSa = sa.getTriggeringAbility(); + SpellAbility root = sa.getRootAbility(); int count = 0; - for (final Object o : trigSa.getTriggerRemembered()) { + for (final Object o : root.getTriggerRemembered()) { if (o instanceof Integer) { count += (Integer) o; } diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 48445ae770d..58b24052693 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -671,14 +671,6 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit return saRoot.optionalCosts.contains(cost); } - public SpellAbility getTriggeringAbility() { - SpellAbility sa = this; - while (sa.getParent() != null && !sa.isTrigger()) { - sa = sa.getParent(); - } - return sa; - } - public Map getTriggeringObjects() { return triggeringObjects; }