This commit is contained in:
Anthony Calosa
2022-12-29 10:11:48 +08:00
parent fb4239196f
commit 4f365848e1
3 changed files with 11 additions and 3 deletions

View File

@@ -400,13 +400,21 @@ public abstract class SpellAbilityEffect {
addedTrigger.setIntrinsic(true); addedTrigger.setIntrinsic(true);
} }
protected static void addExileOnCastTrigger(final Card card) { protected static void addExileOnCastOrMoveTrigger(final Card card, final String zone) {
String trig = "Mode$ SpellCast | ValidCard$ Card.IsRemembered | TriggerZones$ Command | Static$ True"; String trig = "Mode$ SpellCast | ValidCard$ Card.IsRemembered | TriggerZones$ Command | Static$ True";
String effect = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile"; String effect = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile";
final Trigger parsedTrigger = TriggerHandler.parseTrigger(trig, card, true); final Trigger parsedTrigger = TriggerHandler.parseTrigger(trig, card, true);
parsedTrigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); parsedTrigger.setOverridingAbility(AbilityFactory.getAbility(effect, card));
final Trigger addedTrigger = card.addTrigger(parsedTrigger); final Trigger addedTrigger = card.addTrigger(parsedTrigger);
addedTrigger.setIntrinsic(true); addedTrigger.setIntrinsic(true);
//Any on Destination will cause the effect to remove itself when cancelling to play the card
String trig2 = "Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ " + zone + " | Destination$ Hand,Library,Graveyard,Battlefield,Command,Sideboard | TriggerZones$ Command | Static$ True";
String effect2 = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile";
final Trigger parsedTrigger2 = TriggerHandler.parseTrigger(trig2, card, true);
parsedTrigger2.setOverridingAbility(AbilityFactory.getAbility(effect2, card));
final Trigger addedTrigger2 = card.addTrigger(parsedTrigger2);
addedTrigger2.setIntrinsic(true);
} }
protected static void addExileOnCounteredTrigger(final Card card) { protected static void addExileOnCounteredTrigger(final Card card) {

View File

@@ -228,7 +228,7 @@ public class EffectEffect extends SpellAbilityEffect {
} else if (sa.hasParam("ExileOnMoved")) { } else if (sa.hasParam("ExileOnMoved")) {
addExileOnMovedTrigger(eff, sa.getParam("ExileOnMoved")); addExileOnMovedTrigger(eff, sa.getParam("ExileOnMoved"));
} else if (sa.hasParam("ExileOnCast")) { } else if (sa.hasParam("ExileOnCast")) {
addExileOnCastTrigger(eff); addExileOnCastOrMoveTrigger(eff, sa.getParam("ExileOnCast"));
} }
if (sa.hasParam("ForgetOnPhasedIn")) { if (sa.hasParam("ForgetOnPhasedIn")) {
addForgetOnPhasedInTrigger(eff); addForgetOnPhasedInTrigger(eff);

View File

@@ -3855,7 +3855,7 @@ public class CardFactoryUtil {
SpellAbility saExile = AbilityFactory.getAbility(abExile, card); SpellAbility saExile = AbilityFactory.getAbility(abExile, card);
String abEffect = "DB$ Effect | RememberObjects$ Self | StaticAbilities$ Play | ExileOnCast$ True | Duration$ Permanent | ConditionDefined$ Self | ConditionPresent$ Card.nonCopiedSpell"; String abEffect = "DB$ Effect | RememberObjects$ Self | StaticAbilities$ Play | ExileOnCast$ Exile | Duration$ Permanent | ConditionDefined$ Self | ConditionPresent$ Card.nonCopiedSpell";
AbilitySub saEffect = (AbilitySub)AbilityFactory.getAbility(abEffect, card); AbilitySub saEffect = (AbilitySub)AbilityFactory.getAbility(abEffect, card);
StringBuilder sbPlay = new StringBuilder(); StringBuilder sbPlay = new StringBuilder();