Try to fix Keyword Creation on CardState#copy

This commit is contained in:
Hanmac
2017-10-27 06:16:08 +00:00
parent 8bffadeb14
commit d3a18c55d3
3 changed files with 29 additions and 8 deletions

View File

@@ -81,9 +81,9 @@ public class CardFactory {
out.setToken(true); out.setToken(true);
// add abilities // add abilities
for (SpellAbility sa : in.getIntrinsicSpellAbilities()) { //for (SpellAbility sa : in.getIntrinsicSpellAbilities()) {
out.addSpellAbility(sa); // out.addSpellAbility(sa);
} //}
} }
for (final CardStateName state : in.getStates()) { for (final CardStateName state : in.getStates()) {

View File

@@ -367,17 +367,28 @@ public class CardState extends GameObject {
setColor(source.getColor()); setColor(source.getColor());
setBasePower(source.getBasePower()); setBasePower(source.getBasePower());
setBaseToughness(source.getBaseToughness()); 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); setIntrinsicKeywords(source.intrinsicKeywords);
setImageKey(source.getImageKey()); setImageKey(source.getImageKey());
setRarity(source.rarity); setRarity(source.rarity);
setSetCode(source.setCode); setSetCode(source.setCode);
setSVars(source.getSVars()); replacementEffects.clear();
replacementEffects = new FCollection<ReplacementEffect>(); for (ReplacementEffect RE : source.replacementEffects) {
for (ReplacementEffect RE : source.getReplacementEffects()) {
replacementEffects.add(RE.getCopy()); replacementEffects.add(RE.getCopy());
} }
this.staticAbilities.clear(); this.staticAbilities.clear();
for (StaticAbility sa : source.getStaticAbilities()) { for (StaticAbility sa : source.staticAbilities) {
StaticAbility saCopy = new StaticAbility(sa, this.card); StaticAbility saCopy = new StaticAbility(sa, this.card);
saCopy.setIntrinsic(sa.isIntrinsic()); saCopy.setIntrinsic(sa.isIntrinsic());
this.staticAbilities.add(saCopy); this.staticAbilities.add(saCopy);

View File

@@ -30,7 +30,7 @@ import forge.game.player.Player;
* @author Forge * @author Forge
* @version $Id$ * @version $Id$
*/ */
public abstract class AbilityStatic extends Ability { public abstract class AbilityStatic extends Ability implements Cloneable {
/** /**
* <p> * <p>
* Constructor for Ability_Static. * Constructor for Ability_Static.
@@ -62,4 +62,14 @@ public abstract class AbilityStatic extends Ability {
return this.getRestrictions().canPlay(c, this); 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);
}
}
} }