CardFactoryUtil: move Graft Keyword to new Trigger Format

This commit is contained in:
Hanmac
2016-11-05 08:10:40 +00:00
parent d6254b9d00
commit 38eb720b8a
2 changed files with 43 additions and 24 deletions

View File

@@ -1432,10 +1432,11 @@ public class Card extends GameEntity implements Comparable<Card> {
sbLong.append(keyword).append("\r\n");
} else if (keyword.startsWith("Sunburst") && hasStartOfKeyword("Modular")) {
} else if (keyword.startsWith("Modular") || keyword.startsWith("Bloodthirst")
|| keyword.startsWith("Strive") || keyword.startsWith("Escalate")
|| keyword.startsWith("Cycling") || keyword.startsWith("TypeCycling")
|| keyword.startsWith("Strive") || keyword.startsWith("Escalate")
|| keyword.startsWith("Cycling") || keyword.startsWith("TypeCycling")
|| keyword.startsWith("ETBReplacement") || keyword.startsWith("MayEffectFromOpeningHand")
|| keyword.equals("Undaunted") || keyword.startsWith("Monstrosity")) {
|| keyword.equals("Undaunted") || keyword.startsWith("Monstrosity")
|| keyword.startsWith("Graft")) {
} else if (keyword.startsWith("Provoke") || keyword.startsWith("Devour") || keyword.equals("Unleash")
|| keyword.startsWith("Soulbond") || keyword.equals("Partner") || keyword.equals("Retrace")
|| keyword.equals("Living Weapon") || keyword.equals("Myriad")) {

View File

@@ -2055,6 +2055,10 @@ public class CardFactoryUtil {
else if (keyword.startsWith("Surge")) {
addSpellAbility(keyword, card, null);
}
else if (keyword.startsWith("Graft")) {
addReplacementEffect(keyword, card, null);
addTriggerAbility(keyword, card, null);
}
else if (keyword.equals("Melee")) {
addTriggerAbility(keyword, card, null);
}
@@ -2798,6 +2802,26 @@ public class CardFactoryUtil {
final Trigger cardTrigger = card.addTrigger(flankingTrigger);
card.setSVar("FlankingPump", abStringFlanking);
if (!intrinsic) {
kws.addTrigger(cardTrigger);
}
} else if (keyword.startsWith("Graft")) {
final String abStr = "DB$ MoveCounter | Source$ Self | "
+ "Defined$ TriggeredCardLKICopy | CounterType$ P1P1 | CounterNum$ 1";
String trigStr = "Mode$ ChangesZone | ValidCard$ Creature.Other"
+ "| Origin$ Any | Destination$ Battlefield "
+ "| TriggerZones$ Battlefield | OptionalDecider$ You "
+ "| IsPresent$ Card.Self+counters_GE1_P1P1"
+ "| Secondary$ True | TriggerDescription$ "
+ "Whenever another creature enters the battlefield, you "
+ "may move a +1/+1 counter from this creature onto it.";
final Trigger trigger = TriggerHandler.parseTrigger(trigStr, card, intrinsic);
trigger.setOverridingAbility(AbilityFactory.getAbility(abStr, card));
final Trigger cardTrigger = card.addTrigger(trigger);
if (!intrinsic) {
kws.addTrigger(cardTrigger);
}
@@ -3187,6 +3211,21 @@ public class CardFactoryUtil {
if (!intrinsic) {
kws.addReplacement(cardre);
}
} else if (keyword.startsWith("Graft")) {
final String[] k = keyword.split(":");
final String m = k[1];
StringBuilder sb = new StringBuilder("etbCounter:P1P1:");
sb.append(m).append(":no Condition:");
sb.append("Graft ");
sb.append(m);
sb.append(" (").append(Keyword.getInstance(keyword).getReminderText()).append(")");
if (intrinsic) {
card.addIntrinsicKeyword(sb.toString());
} else {
kws.addReplacement(makeEtbCounter(sb.toString(), card, intrinsic));
}
} else if (keyword.startsWith("Madness")) {
// Set Madness Replacement effects
String repeffstr = "Event$ Discard | ActiveZones$ Hand | ValidCard$ Card.Self | " +
@@ -4020,27 +4059,6 @@ public class CardFactoryUtil {
* WARNING: must keep this keyword processing before etbCounter keyword
* processing.
*/
final int graft = hasKeyword(card, "Graft");
if (graft != -1) {
final String parse = card.getKeywords().get(graft).toString();
final int m = Integer.parseInt(parse.substring(6));
final String abStr = "AB$ MoveCounter | Cost$ 0 | Source$ Self | "
+ "Defined$ TriggeredCardLKICopy | CounterType$ P1P1 | CounterNum$ 1";
card.setSVar("GraftTrig", abStr);
String trigStr = "Mode$ ChangesZone | ValidCard$ Creature.Other | "
+ "Origin$ Any | Destination$ Battlefield"
+ " | TriggerZones$ Battlefield | OptionalDecider$ You | "
+ "IsPresent$ Card.Self+counters_GE1_P1P1 | "
+ "Execute$ GraftTrig | TriggerDescription$ "
+ "Whenever another creature enters the battlefield, you "
+ "may move a +1/+1 counter from this creature onto it.";
final Trigger myTrigger = TriggerHandler.parseTrigger(trigStr, card, true);
card.addTrigger(myTrigger);
card.addIntrinsicKeyword("etbCounter:P1P1:" + m);
}
final int bloodthirst = hasKeyword(card, "Bloodthirst");
if (bloodthirst != -1) {