- Add a static ability string to card when adding a keyword static ability (fixes Clone on a card with one of those keyword abilities, e.g. Cloning a card with Changeling).

- Simplified CardFactoryUtil::addStaticAbility code.
This commit is contained in:
Agetian
2016-12-21 15:45:34 +00:00
parent fcad3618e0
commit 930c804b93

View File

@@ -3913,6 +3913,7 @@ public class CardFactoryUtil {
public static void addStaticAbility(final String keyword, final Card card, final KeywordsChange kws) { public static void addStaticAbility(final String keyword, final Card card, final KeywordsChange kws) {
final boolean intrinsic = kws == null; final boolean intrinsic = kws == null;
String effect = null;
if (keyword.startsWith("Escalate")) { if (keyword.startsWith("Escalate")) {
final String[] k = keyword.split(":"); final String[] k = keyword.split(":");
@@ -3925,45 +3926,28 @@ public class CardFactoryUtil {
} }
sb.append(cost.toSimpleString()); sb.append(cost.toSimpleString());
final String effect = "Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Escalate | Cost$ "+ manacost +" | EffectZone$ All" + effect = "Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Escalate | Cost$ "+ manacost +" | EffectZone$ All" +
" | Description$ " + sb.toString() + " (" + Keyword.getInstance(keyword).getReminderText() + ")"; " | Description$ " + sb.toString() + " (" + Keyword.getInstance(keyword).getReminderText() + ")";
StaticAbility st = card.addStaticAbility(effect);
st.setIntrinsic(intrinsic);
if (!intrinsic) {
kws.addStaticAbility(st);
}
} else if (keyword.equals("Changeling")) { } else if (keyword.equals("Changeling")) {
final String effect = "Mode$ Continuous | EffectZone$ All | Affected$ Card.Self" + effect = "Mode$ Continuous | EffectZone$ All | Affected$ Card.Self" +
" | CharacteristicDefining$ True | AddType$ AllCreatureTypes | Secondary$ True" + " | CharacteristicDefining$ True | AddType$ AllCreatureTypes | Secondary$ True" +
" | Description$ Changeling (" + Keyword.getInstance(keyword).getReminderText() + ")"; " | Description$ Changeling (" + Keyword.getInstance(keyword).getReminderText() + ")";
StaticAbility st = card.addStaticAbility(effect);
st.setIntrinsic(intrinsic);
if (!intrinsic) {
kws.addStaticAbility(st);
}
} else if (keyword.startsWith("Strive")) { } else if (keyword.startsWith("Strive")) {
final String[] k = keyword.split(":"); final String[] k = keyword.split(":");
final String manacost = k[1]; final String manacost = k[1];
final String effect = "Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Strive | Cost$ "+ manacost +" | EffectZone$ All" + effect = "Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Strive | Cost$ "+ manacost +" | EffectZone$ All" +
" | Description$ Strive - " + Keyword.getInstance(keyword).getReminderText(); " | Description$ Strive - " + Keyword.getInstance(keyword).getReminderText();
StaticAbility st = card.addStaticAbility(effect);
st.setIntrinsic(intrinsic);
if (!intrinsic) {
kws.addStaticAbility(st);
}
} else if (keyword.equals("Unleash")) { } else if (keyword.equals("Unleash")) {
final String effect = "Mode$ Continuous | Affected$ Card.Self+counters_GE1_P1P1 | AddHiddenKeyword$ CARDNAME can't block."; effect = "Mode$ Continuous | Affected$ Card.Self+counters_GE1_P1P1 | AddHiddenKeyword$ CARDNAME can't block.";
StaticAbility st = card.addStaticAbility(effect);
st.setIntrinsic(intrinsic);
if (!intrinsic) {
kws.addStaticAbility(st);
}
} else if (keyword.equals("Undaunted")) { } else if (keyword.equals("Undaunted")) {
final String effect = "Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Undaunted | EffectZone$ All" + effect = "Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Undaunted | EffectZone$ All" +
" | Description$ Undaunted (" + Keyword.getInstance(keyword).getReminderText() + ")"; " | Description$ Undaunted (" + Keyword.getInstance(keyword).getReminderText() + ")";
}
if (effect != null) {
StaticAbility st = card.addStaticAbility(effect); StaticAbility st = card.addStaticAbility(effect);
card.addStaticAbilityString(effect);
st.setIntrinsic(intrinsic); st.setIntrinsic(intrinsic);
if (!intrinsic) { if (!intrinsic) {
kws.addStaticAbility(st); kws.addStaticAbility(st);