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);
// add abilities
for (SpellAbility sa : in.getIntrinsicSpellAbilities()) {
out.addSpellAbility(sa);
}
//for (SpellAbility sa : in.getIntrinsicSpellAbilities()) {
// out.addSpellAbility(sa);
//}
}
for (final CardStateName state : in.getStates()) {

View File

@@ -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<ReplacementEffect>();
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);

View File

@@ -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 {
/**
* <p>
* 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);
}
}
}