- Fixed triggers on clones leaving the battlefield not firing.

This commit is contained in:
Sloth
2013-06-04 08:48:35 +00:00
parent 73223667ee
commit ddce2bb584
2 changed files with 8 additions and 6 deletions

View File

@@ -120,6 +120,9 @@ public final class CardUtil {
newCopy.setOwner(in.getOwner());
newCopy.setController(in.getController(), 0);
newCopy.getCharacteristics().copyFrom(in.getState(in.getCurState()));
if (in.isCloned()) {
newCopy.addAlternateState(CardCharacteristicName.Cloner);
}
newCopy.setType(new ArrayList<String>(in.getType()));
newCopy.setTriggers(in.getTriggers(), false);
for (SpellAbility sa : in.getManaAbility()) {

View File

@@ -249,7 +249,8 @@ public class TriggerHandler {
Card card = (Card) runParams.get("Card");
if (card.getController() == player) {
for (final Trigger t : card.getTriggers()) {
if (!t.isStatic() && (card.isToken() || !t.isIntrinsic()) && canRunTrigger(t, mode, runParams)) {
if (!t.isStatic() && (card.isCloned() || card.isToken() || !t.isIntrinsic())
&& canRunTrigger(t, mode, runParams)) {
this.runSingleTrigger(t, runParams);
checkStatics = true;
}
@@ -348,11 +349,7 @@ public class TriggerHandler {
}
SpellAbility sa = null;
Card host = game.getCardState(regtrig.getHostCard());
if (host == null) {
host = regtrig.getHostCard();
}
Card host = regtrig.getHostCard();
sa = regtrig.getOverridingAbility();
if (sa == null) {
@@ -366,6 +363,8 @@ public class TriggerHandler {
sa = AbilityFactory.getAbility(host.getSVar(triggerParams.get("Execute")), host);
}
}
host = game.getCardState(regtrig.getHostCard());
sa.setSourceCard(host);
sa.setTrigger(true);
sa.setSourceTrigger(regtrig.getId());
regtrig.setTriggeringObjects(sa);