TokenEffectBase: fill table with none zone

This commit is contained in:
Hans Mackowiak
2021-02-05 08:36:07 +01:00
parent 113df1d7cf
commit b54edb269c
4 changed files with 19 additions and 4 deletions

View File

@@ -64,6 +64,7 @@ public abstract class TokenEffectBase extends SpellAbilityEffect {
Card c = game.getAction().moveToPlay(tok, sa); Card c = game.getAction().moveToPlay(tok, sa);
if (c == null || c.getZone() == null) { if (c == null || c.getZone() == null) {
// in case token can't enter the battlefield, it isn't created // in case token can't enter the battlefield, it isn't created
triggerList.put(ZoneType.None, ZoneType.None, c);
continue; continue;
} }
triggerList.put(ZoneType.None, c.getZone().getZoneType(), c); triggerList.put(ZoneType.None, c.getZone().getZoneType(), c);

View File

@@ -221,7 +221,7 @@ public class TriggerHandler {
public final void registerActiveTrigger(final Card c, final boolean onlyExtrinsic) { public final void registerActiveTrigger(final Card c, final boolean onlyExtrinsic) {
for (final Trigger t : c.getTriggers()) { for (final Trigger t : c.getTriggers()) {
if (!onlyExtrinsic || c.isCloned() || !t.isIntrinsic() || t instanceof TriggerAlways) { if (!onlyExtrinsic || c.isCloned() || !t.isIntrinsic() || TriggerType.Always.equals(t.getMode())) {
registerOneTrigger(t); registerOneTrigger(t);
} }
} }
@@ -379,7 +379,7 @@ public class TriggerHandler {
if (regtrig.getHostCard().isFaceDown() && regtrig.isIntrinsic()) { if (regtrig.getHostCard().isFaceDown() && regtrig.isIntrinsic()) {
return false; // Morphed cards only have pumped triggers go off. return false; // Morphed cards only have pumped triggers go off.
} }
if (regtrig instanceof TriggerAlways) { if (TriggerType.Always.equals(regtrig.getMode())) {
if (game.getStack().hasStateTrigger(regtrig.getId())) { if (game.getStack().hasStateTrigger(regtrig.getId())) {
return false; // State triggers that are already on the stack return false; // State triggers that are already on the stack
// don't trigger again. // don't trigger again.
@@ -432,7 +432,7 @@ public class TriggerHandler {
return false; // Trigger removed by effect return false; // Trigger removed by effect
} }
if (regtrig instanceof TriggerAlways) { if (TriggerType.Always.equals(regtrig.getMode())) {
if (game.getStack().hasStateTrigger(regtrig.getId())) { if (game.getStack().hasStateTrigger(regtrig.getId())) {
return false; // State triggers that are already on the stack return false; // State triggers that are already on the stack
// don't trigger again. // don't trigger again.

View File

@@ -444,7 +444,7 @@ public class WrappedAbility extends Ability {
final Game game = sa.getActivatingPlayer().getGame(); final Game game = sa.getActivatingPlayer().getGame();
final Trigger regtrig = getTrigger(); final Trigger regtrig = getTrigger();
if (!(regtrig instanceof TriggerAlways) && !regtrig.hasParam("NoResolvingCheck")) { if (!(TriggerType.Always.equals(regtrig.getMode())) && !regtrig.hasParam("NoResolvingCheck")) {
// Most State triggers don't have "Intervening If" // Most State triggers don't have "Intervening If"
if (!regtrig.requirementsCheck(game)) { if (!regtrig.requirementsCheck(game)) {
return; return;

View File

@@ -0,0 +1,14 @@
Name:Mystic Reflection
ManaCost:1 U
Types:Instant
A:SP$ Effect | ValidTgts$ Creature.nonLegendary | TgtPrompt$ Choose target nonlegendary creature | RememberObjects$ Targeted | ReplacementEffects$ ReplaceETB | Triggers$ TrigRemove | SVars$ EnterAsCopy,DBImprint,MoveToBattlefield,Z,ExileSelf | SpellDescription$ Choose target nonlegendary creature. The next time one or more creatures or planeswalkers enter the battlefield this turn, they enter as copies of the chosen creature.
SVar:ReplaceETB:Event$ Moved | Destination$ Battlefield | ValidCard$ Creature,Planeswalker | ReplaceWith$ EnterAsCopy | Description$ The next time one or more creatures or planeswalkers enter the battlefield this turn, they enter as copies of the chosen creature.
SVar:EnterAsCopy:DB$ Clone | Defined$ Remembered | CloneTarget$ ReplacedCard | SubAbility$ MoveToBattlefield
SVar:MoveToBattlefield:DB$ InternalEtbReplacement | SubAbility$ DBImprint
SVar:DBImprint:DB$ Pump | ImprintCards$ ReplacedCard
SVar:TrigRemove:Mode$ ChangesZoneAll | CheckSVar$ Z | Execute$ ExileSelf | Static$ True
SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self
SVar:Z:Imprinted$Amount
K:Foretell:U
AI:RemoveDeck:All
Oracle:Choose target nonlegendary creature. The next time one or more creatures or planeswalkers enter the battlefield this turn, they enter as copies of the chosen creature.\nForetell {U} (During your turn, you may pay {2} and exile this card from your hand face down. Cast it on a later turn for its foretell cost.)