Card: fixed intrinsic on copied static abilities

This commit is contained in:
Hanmac
2017-02-16 06:21:48 +00:00
parent 93b0457526
commit 33917b7d65
3 changed files with 15 additions and 2 deletions

View File

@@ -3490,7 +3490,11 @@ public class Card extends GameEntity implements Comparable<Card> {
return null;
}
public final StaticAbility addStaticAbility(final StaticAbility stAb) {
return addStaticAbility(stAb, false);
}
public final StaticAbility addStaticAbility(final StaticAbility stAb, boolean intrinsic) {
final StaticAbility stAbCopy = new StaticAbility(stAb, this);
stAbCopy.setIntrinsic(intrinsic);
currentState.addStaticAbility(stAbCopy);
return stAbCopy;
}

View File

@@ -650,8 +650,12 @@ public class CardFactory {
to.addSpellAbility(sa.copy());
}
// add static abilities
to.getCurrentState().clearStaticAbilities();
for (StaticAbility staticAbility : fromCharacteristics.getStaticAbilities()) {
to.addStaticAbility(staticAbility);
if (staticAbility.isIntrinsic()) {
to.addStaticAbility(staticAbility, true);
}
}
// reset state
to.setState(oldToState, false);

View File

@@ -282,6 +282,9 @@ public class CardState {
public final void setStaticAbilities(final Iterable<StaticAbility> staticAbilities0) {
staticAbilities = new FCollection<StaticAbility>(staticAbilities0);
}
public final void clearStaticAbilities() {
staticAbilities.clear();
}
public final String getImageKey() {
return imageKey;
@@ -362,7 +365,9 @@ public class CardState {
}
this.staticAbilities.clear();
for (StaticAbility sa : source.getStaticAbilities()) {
this.staticAbilities.add(new StaticAbility(sa, c));
StaticAbility saCopy = new StaticAbility(sa, c);
saCopy.setIntrinsic(sa.isIntrinsic());
this.staticAbilities.add(saCopy);
}
view.updateKeywords(c, this);
}