mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Fix trigger running with no zone for Wall of Stolen Identity
This commit is contained in:
committed by
Michael Kamensky
parent
ddbe5af21c
commit
80a1c13a07
@@ -3,7 +3,6 @@ package forge.game.ability.effects;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
@@ -170,9 +169,9 @@ public class CloneEffect extends SpellAbilityEffect {
|
||||
cloneCard.clearImprintedCards();
|
||||
cloneCard.clearRemembered();
|
||||
// restore original Remembered and Imprinted, ignore cards from players who lost
|
||||
cloneCard.addImprintedCards(Iterables.filter(clonedImprinted, Predicates.not(CardPredicates.inZone(ZoneType.None))));
|
||||
cloneCard.addImprintedCards(Iterables.filter(clonedImprinted, CardPredicates.ownerLives()));
|
||||
cloneCard.addRemembered(Iterables.filter(clonedRemembered, Player.class));
|
||||
cloneCard.addRemembered(Iterables.filter(Iterables.filter(clonedRemembered, Card.class), CardPredicates.ownerLives()));
|
||||
cloneCard.addRemembered(Iterables.filter(Iterables.filter(clonedRemembered, Card.class), CardPredicates.ownerLives()));
|
||||
cloneCard.updateStateForView();
|
||||
game.fireEvent(new GameEventCardStatsChanged(cloneCard));
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import forge.game.ability.AbilityUtils;
|
||||
import forge.game.ability.SpellAbilityEffect;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardUtil;
|
||||
import forge.game.replacement.ReplacementType;
|
||||
import forge.game.spellability.AbilitySub;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.trigger.Trigger;
|
||||
@@ -57,7 +58,9 @@ public class ImmediateTriggerEffect extends SpellAbilityEffect {
|
||||
Card lki = CardUtil.getLKICopy(gameCard);
|
||||
lki.clearControllers();
|
||||
lki.setOwner(sa.getActivatingPlayer());
|
||||
final Trigger immediateTrig = TriggerHandler.parseTrigger(mapParams, lki, sa.isIntrinsic(), null);
|
||||
// if this trigger is part of ETBReplacement it shouldn't run with LKI from incomplete zone change (Wall of Stolen Identity)
|
||||
final Card trigHost = sa.getRootAbility().getReplacementEffect() != null && sa.getRootAbility().getReplacementEffect().getMode().equals(ReplacementType.Moved) ? gameCard : lki;
|
||||
final Trigger immediateTrig = TriggerHandler.parseTrigger(mapParams, trigHost, sa.isIntrinsic(), null);
|
||||
immediateTrig.setSpawningAbility(sa.copy(lki, sa.getActivatingPlayer(), true));
|
||||
|
||||
// Need to copy paid costs
|
||||
|
||||
@@ -91,9 +91,8 @@ public class PumpEffect extends SpellAbilityEffect {
|
||||
@Override
|
||||
public void run() {
|
||||
gameCard.removePTBoost(timestamp, 0);
|
||||
boolean updateText = false;
|
||||
updateText = gameCard.removeCanBlockAny(timestamp) || updateText;
|
||||
updateText = gameCard.removeCanBlockAdditional(timestamp) || updateText;
|
||||
boolean updateText = gameCard.removeCanBlockAny(timestamp);
|
||||
updateText |= gameCard.removeCanBlockAdditional(timestamp);
|
||||
|
||||
if (keywords.size() > 0) {
|
||||
|
||||
@@ -146,8 +145,12 @@ public class PumpEffect extends SpellAbilityEffect {
|
||||
}
|
||||
|
||||
private static void addUntilCommand(final SpellAbility sa, GameCommand untilEOT) {
|
||||
final Card host = sa.getHostCard();
|
||||
Card host = sa.getHostCard();
|
||||
final Game game = host.getGame();
|
||||
// in case host was LKI
|
||||
if (host.isLKI()) {
|
||||
host = game.getCardState(host);
|
||||
}
|
||||
|
||||
if (sa.hasParam("UntilEndOfCombat")) {
|
||||
game.getEndOfCombat().addUntil(untilEOT);
|
||||
|
||||
@@ -96,7 +96,7 @@ public class CardFactoryUtil {
|
||||
String abString = "AB$ Mana | Cost$ T | Produced$ " + strcolor +
|
||||
" | Secondary$ True | SpellDescription$ Add {" + strcolor + "}.";
|
||||
SpellAbility sa = AbilityFactory.getAbility(abString, state);
|
||||
sa.setIntrinsic(true); // always intristic
|
||||
sa.setIntrinsic(true); // always intrisic
|
||||
return sa;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user