*Fixed Clones not copying activated or static abilities.

This commit is contained in:
Hellfish
2011-11-20 12:09:30 +00:00
parent 4d9d8d11cb
commit c4abc45cdd
3 changed files with 50 additions and 42 deletions

View File

@@ -417,46 +417,6 @@ public abstract class AbstractCardFactory implements CardFactoryInterface {
return result;
}
/**
* Adds the ability factory abilities.
*
* @param card
* the card
*/
protected final void addAbilityFactoryAbilities(final Card card) {
// **************************************************
// AbilityFactory cards
final ArrayList<String> ia = card.getIntrinsicAbilities();
if (ia.size() > 0) {
for (int i = 0; i < ia.size(); i++) {
final AbilityFactory af = new AbilityFactory();
// System.out.println(cardName);
final SpellAbility sa = af.getAbility(ia.get(i), card);
card.addSpellAbility(sa);
final String bbCost = card.getSVar("Buyback");
if (!bbCost.equals("")) {
final SpellAbility bbSA = sa.copy();
final String newCost = CardUtil.addManaCosts(card.getManaCost(), bbCost);
if (bbSA.getPayCosts() != null) {
bbSA.setPayCosts(new Cost(newCost, sa.getSourceCard().getName(), false)); // create
// new
// abCost
}
final StringBuilder sb = new StringBuilder();
sb.append("Buyback ").append(bbCost).append(" (You may pay an additional ").append(bbCost);
sb.append(" as you cast this spell. If you do, put this card into your hand as it resolves.)");
bbSA.setDescription(sb.toString());
bbSA.setIsBuyBackAbility(true);
card.addSpellAbility(bbSA);
}
}
}
}
/**
* <p>
* getCard2.
@@ -497,7 +457,7 @@ public abstract class AbstractCardFactory implements CardFactoryInterface {
continue; //Ignore FaceDown for DFC since they have none.
}
card.setState(state);
this.addAbilityFactoryAbilities(card);
CardFactoryUtil.addAbilityFactoryAbilities(card);
ArrayList<String> stAbs = card.getStaticAbilityStrings();
if (stAbs.size() > 0) {
for (int i = 0; i < stAbs.size(); i++) {

View File

@@ -2255,6 +2255,10 @@ public class CardFactoryCreatures {
}
CardFactoryUtil.copyCharacteristics(cloned, card);
CardFactoryUtil.addAbilityFactoryAbilities(card);
for (int i = 0; i < card.getStaticAbilityStrings().size(); i++) {
card.addStaticAbility(card.getStaticAbilityStrings().get(i));
}
this.grantExtras();
// If target is a flipped card, also copy the flipped
@@ -2265,6 +2269,10 @@ public class CardFactoryCreatures {
card.addAlternateState("Flipped");
card.setState("Flipped");
CardFactoryUtil.copyCharacteristics(cloned, card);
CardFactoryUtil.addAbilityFactoryAbilities(card);
for (int i = 0; i < card.getStaticAbilityStrings().size(); i++) {
card.addStaticAbility(card.getStaticAbilityStrings().get(i));
}
this.grantExtras();
card.setFlip(true);

View File

@@ -4214,13 +4214,53 @@ public class CardFactoryUtil {
to.setSVars(from.getSVars());
to.setSets(from.getSets());
to.setIntrinsicAbilities(from.getIntrinsicAbilities());
to.setImageName(from.getImageName());
to.setImageFilename(from.getImageFilename());
to.setTriggers(from.getTriggers());
to.setStaticAbilityStrings(from.getStaticAbilityStrings());
}
/**
* Adds the ability factory abilities.
*
* @param card
* the card
*/
public static final void addAbilityFactoryAbilities(final Card card) {
// **************************************************
// AbilityFactory cards
final ArrayList<String> ia = card.getIntrinsicAbilities();
if (ia.size() > 0) {
for (int i = 0; i < ia.size(); i++) {
final AbilityFactory af = new AbilityFactory();
// System.out.println(cardName);
final SpellAbility sa = af.getAbility(ia.get(i), card);
card.addSpellAbility(sa);
final String bbCost = card.getSVar("Buyback");
if (!bbCost.equals("")) {
final SpellAbility bbSA = sa.copy();
final String newCost = CardUtil.addManaCosts(card.getManaCost(), bbCost);
if (bbSA.getPayCosts() != null) {
bbSA.setPayCosts(new Cost(newCost, sa.getSourceCard().getName(), false)); // create
// new
// abCost
}
final StringBuilder sb = new StringBuilder();
sb.append("Buyback ").append(bbCost).append(" (You may pay an additional ").append(bbCost);
sb.append(" as you cast this spell. If you do, put this card into your hand as it resolves.)");
bbSA.setDescription(sb.toString());
bbSA.setIsBuyBackAbility(true);
card.addSpellAbility(bbSA);
}
}
}
}
/**
* <p>