diff --git a/forge-game/src/main/java/forge/game/card/CardState.java b/forge-game/src/main/java/forge/game/card/CardState.java index b7ce1d11f8a..c481ad2c234 100644 --- a/forge-game/src/main/java/forge/game/card/CardState.java +++ b/forge-game/src/main/java/forge/game/card/CardState.java @@ -455,18 +455,23 @@ public class CardState extends GameObject { triggers.clear(); for (Trigger tr : source.triggers) { - triggers.add(tr.copy(card, lki)); + if (tr.isIntrinsic()) { + triggers.add(tr.copy(card, lki)); + } } replacementEffects.clear(); for (ReplacementEffect re : source.replacementEffects) { - replacementEffects.add(re.copy(card, lki)); + if (re.isIntrinsic()) { + replacementEffects.add(re.copy(card, lki)); + } } staticAbilities.clear(); for (StaticAbility sa : source.staticAbilities) { - StaticAbility saCopy = new StaticAbility(sa, this.card); - staticAbilities.add(saCopy); + if (sa.isIntrinsic()) { + staticAbilities.add(new StaticAbility(sa, this.card)); + } } } diff --git a/forge-game/src/main/java/forge/game/card/CardUtil.java b/forge-game/src/main/java/forge/game/card/CardUtil.java index 864d6214400..a48988cb1ba 100644 --- a/forge-game/src/main/java/forge/game/card/CardUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardUtil.java @@ -35,10 +35,12 @@ import forge.game.GameObject; import forge.game.ability.AbilityUtils; import forge.game.ability.ApiType; import forge.game.player.Player; +import forge.game.replacement.ReplacementEffect; import forge.game.spellability.AbilityManaPart; import forge.game.spellability.AbilitySub; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; +import forge.game.trigger.Trigger; import forge.game.zone.ZoneType; import forge.util.TextUtil; import forge.util.collect.FCollection; @@ -220,9 +222,22 @@ public final class CardUtil { newCopy.setType(new CardType(in.getType())); newCopy.setToken(in.isToken()); - newCopy.setTriggers(in.getTriggers(), false); + + // extra copy non Intrinsic traits for (SpellAbility sa : in.getSpellAbilities()) { - newCopy.addSpellAbility(sa.copy(newCopy, true)); + if (!sa.isIntrinsic()) { + newCopy.addSpellAbility(sa.copy(newCopy, true)); + } + } + for (Trigger tr : in.getTriggers()) { + if (!tr.isIntrinsic()) { + newCopy.addTrigger(tr.copy(newCopy, true)); + } + } + for (ReplacementEffect re : in.getReplacementEffects()) { + if (!re.isIntrinsic()) { + newCopy.addReplacementEffect(re.copy(newCopy, true)); + } } // lock in the current P/T without bonus from counters