mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
*Fixed Clones not copying activated or static abilities.
This commit is contained in:
@@ -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++) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user