improve Decayed keyword trigger implementation

This commit is contained in:
Northmoc
2021-09-03 08:58:23 -04:00
committed by leriomaggio
parent fcbc873044
commit 2abbcea1fb

View File

@@ -968,6 +968,26 @@ public class CardFactoryUtil {
trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card));
inst.addTrigger(trigger); inst.addTrigger(trigger);
} else if (keyword.equals("Decayed")) {
final String attackTrig = "Mode$ Attacks | ValidCard$ Card.Self | Secondary$ True | TriggerDescription$ " +
"When a creature with decayed attacks, sacrifice it at end of combat.";
final String delayTrigStg = "DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | " +
"TriggerDescription$ At end of combat, sacrifice CARDNAME.";
final String trigSacStg = "DB$ SacrificeAll | Defined$ Self | Controller$ You";
SpellAbility delayTrigSA = AbilityFactory.getAbility(delayTrigStg, card);
AbilitySub sacSA = (AbilitySub) AbilityFactory.getAbility(trigSacStg, card);
delayTrigSA.setAdditionalAbility("Execute", sacSA);
final Trigger parsedTrigger = TriggerHandler.parseTrigger(attackTrig, card, intrinsic);
delayTrigSA.setIntrinsic(intrinsic);
parsedTrigger.setOverridingAbility(delayTrigSA);
inst.addTrigger(parsedTrigger);
} else if (keyword.equals("Demonstrate")) { } else if (keyword.equals("Demonstrate")) {
final String trigScript = "Mode$ SpellCast | ValidCard$ Card.Self | TriggerDescription$ Demonstrate (" + inst.getReminderText() + ")"; final String trigScript = "Mode$ SpellCast | ValidCard$ Card.Self | TriggerDescription$ Demonstrate (" + inst.getReminderText() + ")";
final String youCopyStr = "DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | MayChooseTarget$ True | Optional$ True | RememberCopies$ True"; final String youCopyStr = "DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | MayChooseTarget$ True | Optional$ True | RememberCopies$ True";
@@ -3401,26 +3421,9 @@ public class CardFactoryUtil {
} else if (keyword.startsWith("Dash")) { } else if (keyword.startsWith("Dash")) {
effect = "Mode$ Continuous | Affected$ Card.Self+dashed | AddKeyword$ Haste"; effect = "Mode$ Continuous | Affected$ Card.Self+dashed | AddKeyword$ Haste";
} else if (keyword.equals("Decayed")) { } else if (keyword.equals("Decayed")) {
StringBuilder sb = new StringBuilder(); effect = "Mode$ Continuous | Affected$ Card.Self | AddHiddenKeyword$ CARDNAME can't block. | " +
sb.append("Mode$ Continuous | Affected$ Card.Self | AddTrigger$ DecayedTrigger | AddHiddenKeyword$ "); "Secondary$ True";
sb.append("CARDNAME can't block."); svars.put("SacrificeEndCombat", "True");
effect = sb.toString();
sb = new StringBuilder();
sb.append("Mode$ Attacks | ValidCard$ Card.Self | Execute$ DelayedTrig | TriggerDescription$ ");
sb.append("When CARDNAME attacks, sacrifice it at end of combat.");
String trig = sb.toString();
sb = new StringBuilder();
sb.append("DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ ");
sb.append("TrigSacrifice | TriggerDescription$ At end of combat, sacrifice CARDNAME.");
String delTrig = sb.toString();
String trigSac = "DB$ SacrificeAll | Defined$ Self | Controller$ You";
svars.put("DecayedTrigger", trig);
svars.put("DelayedTrig", delTrig);
svars.put("TrigSacrifice", trigSac);
} else if (keyword.equals("Defender")) { } else if (keyword.equals("Defender")) {
effect = "Mode$ CantAttack | ValidCard$ Card.Self | DefenderKeyword$ True | Secondary$ True"; effect = "Mode$ CantAttack | ValidCard$ Card.Self | DefenderKeyword$ True | Secondary$ True";
} else if (keyword.equals("Devoid")) { } else if (keyword.equals("Devoid")) {