CardState: fixed copyState and LKI

This commit is contained in:
Hanmac
2018-02-18 18:06:38 +01:00
parent 3a071ea071
commit b29b1b3630
2 changed files with 26 additions and 6 deletions

View File

@@ -455,18 +455,23 @@ public class CardState extends GameObject {
triggers.clear(); triggers.clear();
for (Trigger tr : source.triggers) { for (Trigger tr : source.triggers) {
if (tr.isIntrinsic()) {
triggers.add(tr.copy(card, lki)); triggers.add(tr.copy(card, lki));
} }
}
replacementEffects.clear(); replacementEffects.clear();
for (ReplacementEffect re : source.replacementEffects) { for (ReplacementEffect re : source.replacementEffects) {
if (re.isIntrinsic()) {
replacementEffects.add(re.copy(card, lki)); replacementEffects.add(re.copy(card, lki));
} }
}
staticAbilities.clear(); staticAbilities.clear();
for (StaticAbility sa : source.staticAbilities) { for (StaticAbility sa : source.staticAbilities) {
StaticAbility saCopy = new StaticAbility(sa, this.card); if (sa.isIntrinsic()) {
staticAbilities.add(saCopy); staticAbilities.add(new StaticAbility(sa, this.card));
}
} }
} }

View File

@@ -35,10 +35,12 @@ import forge.game.GameObject;
import forge.game.ability.AbilityUtils; import forge.game.ability.AbilityUtils;
import forge.game.ability.ApiType; import forge.game.ability.ApiType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.replacement.ReplacementEffect;
import forge.game.spellability.AbilityManaPart; import forge.game.spellability.AbilityManaPart;
import forge.game.spellability.AbilitySub; import forge.game.spellability.AbilitySub;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions; import forge.game.spellability.TargetRestrictions;
import forge.game.trigger.Trigger;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.util.TextUtil; import forge.util.TextUtil;
import forge.util.collect.FCollection; import forge.util.collect.FCollection;
@@ -220,10 +222,23 @@ public final class CardUtil {
newCopy.setType(new CardType(in.getType())); newCopy.setType(new CardType(in.getType()));
newCopy.setToken(in.isToken()); newCopy.setToken(in.isToken());
newCopy.setTriggers(in.getTriggers(), false);
// extra copy non Intrinsic traits
for (SpellAbility sa : in.getSpellAbilities()) { for (SpellAbility sa : in.getSpellAbilities()) {
if (!sa.isIntrinsic()) {
newCopy.addSpellAbility(sa.copy(newCopy, true)); 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 // lock in the current P/T without bonus from counters
newCopy.setBasePower(in.getCurrentPower() + in.getTempPowerBoost() + in.getSemiPermanentPowerBoost()); newCopy.setBasePower(in.getCurrentPower() + in.getTempPowerBoost() + in.getSemiPermanentPowerBoost());