CardFactoryUtil: rework Cascade without Svars

This commit is contained in:
Hanmac
2017-06-08 18:32:22 +00:00
parent cc007a93cf
commit 241e684ac8

View File

@@ -2504,21 +2504,32 @@ public class CardFactoryUtil {
"Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigCascade | Secondary$ " + "Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigCascade | Secondary$ " +
"True | TriggerDescription$ Cascade - CARDNAME"); "True | TriggerDescription$ Cascade - CARDNAME");
final String abString = "AB$ DigUntil | Cost$ 0 | Defined$ You | Amount$ 1 | Valid$ " final String abString = "DB$ DigUntil | Defined$ You | Amount$ 1 | Valid$ "
+ "Card.nonLand+cmcLTCascadeX | FoundDestination$ Exile | RevealedDestination$" + "Card.nonLand+cmcLTCascadeX | FoundDestination$ Exile | RevealedDestination$"
+ " Exile | References$ CascadeX | ImprintRevealed$ True | RememberFound$ True" + " Exile | ImprintRevealed$ True | RememberFound$ True";
+ " | SubAbility$ CascadeCast";
final String dbCascadeCast = "DB$ Play | Defined$ Remembered | WithoutManaCost$ True | " SpellAbility dig = AbilityFactory.getAbility(abString, card);
+ "Optional$ True | SubAbility$ CascadeMoveToLib"; dig.setSVar("CascadeX", "Count$CardManaCost");
final String dbCascadeCast = "DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True";
AbilitySub cascadeCast = (AbilitySub)AbilityFactory.getAbility(dbCascadeCast, card);
dig.setSubAbility(cascadeCast);
final String dbMoveToLib = "DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered,Card.IsImprinted" final String dbMoveToLib = "DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered,Card.IsImprinted"
+ " | Origin$ Exile | Destination$ Library | RandomOrder$ True | LibraryPosition$ -1" + " | Origin$ Exile | Destination$ Library | RandomOrder$ True | LibraryPosition$ -1";
+ " | SubAbility$ CascadeCleanup";
card.setSVar("TrigCascade", abString); AbilitySub moveToLib = (AbilitySub)AbilityFactory.getAbility(dbMoveToLib, card);
card.setSVar("CascadeCast", dbCascadeCast); cascadeCast.setSubAbility(moveToLib);
card.setSVar("CascadeMoveToLib", dbMoveToLib);
card.setSVar("CascadeX", "Count$CardManaCost"); final String cascadeCleanup = "DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True";
card.setSVar("CascadeCleanup", "DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True"); AbilitySub cleanup = (AbilitySub)AbilityFactory.getAbility(cascadeCleanup, card);
moveToLib.setSubAbility(cleanup);
dig.setIntrinsic(intrinsic);
final Trigger cascadeTrigger = TriggerHandler.parseTrigger(trigScript.toString(), card, intrinsic); final Trigger cascadeTrigger = TriggerHandler.parseTrigger(trigScript.toString(), card, intrinsic);
cascadeTrigger.setOverridingAbility(dig);
final Trigger cardTrigger = card.addTrigger(cascadeTrigger); final Trigger cardTrigger = card.addTrigger(cascadeTrigger);
if (!intrinsic) { if (!intrinsic) {