- Fixed the AI changing targets of triggers with "OptionalDecider" before resolving.

This commit is contained in:
Sloth
2012-09-27 16:14:55 +00:00
parent 1f7a5906ec
commit 4e039e9ba4
3 changed files with 23 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ SVar:DBSacrifice:DB$ Sacrifice | ConditionCheckSVar$ X | ConditionSVarCompare$ E
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount SVar:X:Remembered$Amount
T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your draw step, you may have CARDNAME deal 3 damage to target creature. T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your draw step, you may have CARDNAME deal 3 damage to target creature.
SVar:TrigDealDamage:AB$DealDamage | Cost$ 0 | Tgt$ TgtC | NumDmg$ 3 SVar:TrigDealDamage:AB$ DealDamage | Cost$ 0 | Tgt$ TgtC | NumDmg$ 3
SVar:RemAIDeck:True SVar:RemAIDeck:True
SVar:Rarity:Rare SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/razormane_masticore.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/razormane_masticore.jpg

View File

@@ -124,6 +124,17 @@ public class TargetChoices {
return false; return false;
} }
/**
* <p>
* clear.
* </p>
*/
public final void clear() {
this.targetPlayers.clear();
this.targetCards.clear();
this.targetSAs.clear();
}
/** /**
* <p> * <p>
* removeTarget. * removeTarget.

View File

@@ -978,10 +978,21 @@ public class TriggerHandler {
} }
} }
} else { } else {
ArrayList<Object> tgts = null;
// make sure the targets won't change
if (sa[0].getTarget() != null) {
tgts = new ArrayList<Object>(sa[0].getTarget().getTargetChoices().getTargets());
}
// This isn't quite right, but better than canPlayAI // This isn't quite right, but better than canPlayAI
if (!sa[0].doTrigger(isMandatory)) { if (!sa[0].doTrigger(isMandatory)) {
return; return;
} }
if (sa[0].getTarget() != null) {
for (Object tgt : tgts) {
sa[0].getTarget().getTargetChoices().clear();
sa[0].getTarget().getTargetChoices().addTarget(tgt);
}
}
} }
} }