mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
CardState: fixed copyState and LKI
This commit is contained in:
@@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
Reference in New Issue
Block a user