- A somewhat more transparent implementation of DelayedTriggerRemembered fix.

This commit is contained in:
Agetian
2016-12-27 12:35:17 +00:00
parent aaa9bf1a73
commit 2f121ee34e

View File

@@ -197,13 +197,18 @@ public class AbilityUtils {
} }
} }
} else if (defined.equals("DelayTriggerRemembered")) { } else if (defined.equals("DelayTriggerRemembered")) {
SpellAbility trigSa = sa.isTrigger() ? sa : sa.getRootAbility().isTrigger() ? sa.getRootAbility() : null; SpellAbility trigSa = sa;
while (trigSa != null && !trigSa.isTrigger()) {
trigSa = sa.getRootAbility();
}
if (trigSa != null) { if (trigSa != null) {
for (Object o : trigSa.getTriggerRemembered()) { for (Object o : trigSa.getTriggerRemembered()) {
if (o instanceof Card) { if (o instanceof Card) {
cards.addAll(addRememberedFromCardState(game, (Card)o)); cards.addAll(addRememberedFromCardState(game, (Card)o));
} }
} }
} else {
System.err.println("Warning: couldn't find trigger SA in the chain of SpellAbility " + sa);
} }
} else if (defined.equals("FirstRemembered")) { } else if (defined.equals("FirstRemembered")) {
Object o = Iterables.getFirst(hostCard.getRemembered(), null); Object o = Iterables.getFirst(hostCard.getRemembered(), null);
@@ -923,13 +928,14 @@ public class AbilityUtils {
} }
else if (defined.startsWith("DelayTriggerRemembered")) { else if (defined.startsWith("DelayTriggerRemembered")) {
SpellAbility trigSa = sa; SpellAbility trigSa = sa;
while (!trigSa.isTrigger() && sa.getRootAbility() != null) { while (trigSa != null && !trigSa.isTrigger()) {
trigSa = sa.getRootAbility(); trigSa = sa.getRootAbility();
} }
if (!trigSa.isTrigger()) { if (trigSa != null) {
System.err.println("Warning: unable to find trigger in the parent chain of SubAbility " + sa);
}
addPlayer(trigSa.getTriggerRemembered(), defined, players); addPlayer(trigSa.getTriggerRemembered(), defined, players);
} else {
System.err.println("Warning: couldn't find trigger SA in the chain of SpellAbility " + sa);
}
} }
else if (defined.equals("ImprintedController")) { else if (defined.equals("ImprintedController")) {
for (final Card rem : card.getImprintedCards()) { for (final Card rem : card.getImprintedCards()) {