From d3a18c55d34e62f18a5a3d8b3db0a000c4a5b0f5 Mon Sep 17 00:00:00 2001 From: Hanmac Date: Fri, 27 Oct 2017 06:16:08 +0000 Subject: [PATCH] Try to fix Keyword Creation on CardState#copy --- .../java/forge/game/card/CardFactory.java | 6 +++--- .../main/java/forge/game/card/CardState.java | 19 +++++++++++++++---- .../game/spellability/AbilityStatic.java | 12 +++++++++++- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java index 18161557ba3..34e7bc2f173 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -81,9 +81,9 @@ public class CardFactory { out.setToken(true); // add abilities - for (SpellAbility sa : in.getIntrinsicSpellAbilities()) { - out.addSpellAbility(sa); - } + //for (SpellAbility sa : in.getIntrinsicSpellAbilities()) { + // out.addSpellAbility(sa); + //} } for (final CardStateName state : in.getStates()) { 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 d815b4f25d2..5f084f96506 100644 --- a/forge-game/src/main/java/forge/game/card/CardState.java +++ b/forge-game/src/main/java/forge/game/card/CardState.java @@ -367,17 +367,28 @@ public class CardState extends GameObject { setColor(source.getColor()); setBasePower(source.getBasePower()); setBaseToughness(source.getBaseToughness()); + setSVars(source.getSVars()); + + this.manaAbilities.clear(); + for (SpellAbility sa : source.manaAbilities) { + this.manaAbilities.add(sa.copy()); + } + + this.nonManaAbilities.clear(); + for (SpellAbility sa : source.nonManaAbilities) { + this.nonManaAbilities.add(sa.copy()); + } + setIntrinsicKeywords(source.intrinsicKeywords); setImageKey(source.getImageKey()); setRarity(source.rarity); setSetCode(source.setCode); - setSVars(source.getSVars()); - replacementEffects = new FCollection(); - for (ReplacementEffect RE : source.getReplacementEffects()) { + replacementEffects.clear(); + for (ReplacementEffect RE : source.replacementEffects) { replacementEffects.add(RE.getCopy()); } this.staticAbilities.clear(); - for (StaticAbility sa : source.getStaticAbilities()) { + for (StaticAbility sa : source.staticAbilities) { StaticAbility saCopy = new StaticAbility(sa, this.card); saCopy.setIntrinsic(sa.isIntrinsic()); this.staticAbilities.add(saCopy); diff --git a/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java b/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java index eb5eb8d3a46..bd14a4c8834 100644 --- a/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java +++ b/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java @@ -30,7 +30,7 @@ import forge.game.player.Player; * @author Forge * @version $Id$ */ -public abstract class AbilityStatic extends Ability { +public abstract class AbilityStatic extends Ability implements Cloneable { /** *

* Constructor for Ability_Static. @@ -62,4 +62,14 @@ public abstract class AbilityStatic extends Ability { return this.getRestrictions().canPlay(c, this); } + + /** {@inheritDoc} */ + @Override + public final Object clone() { + try { + return super.clone(); + } catch (final Exception ex) { + throw new RuntimeException("AbilityStatic : clone() error, " + ex); + } + } }