mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
ForgetOnMoved: extra logic for cast stuff to not forget when cast is canceled
This commit is contained in:
committed by
Michael Kamensky
parent
acbd82ef7f
commit
350e2cf480
@@ -332,8 +332,7 @@ public abstract class SpellAbilityEffect {
|
||||
}
|
||||
}
|
||||
|
||||
protected static void addForgetOnMovedTrigger(final Card card, final String zone) {
|
||||
String trig = "Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ " + zone + " | Destination$ Any | TriggerZones$ Command | Static$ True";
|
||||
protected static SpellAbility getForgetSpellAbility(final Card card) {
|
||||
String forgetEffect = "DB$ Pump | ForgetObjects$ TriggeredCard";
|
||||
String exileEffect = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile"
|
||||
+ " | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0";
|
||||
@@ -341,11 +340,23 @@ public abstract class SpellAbilityEffect {
|
||||
SpellAbility saForget = AbilityFactory.getAbility(forgetEffect, card);
|
||||
AbilitySub saExile = (AbilitySub) AbilityFactory.getAbility(exileEffect, card);
|
||||
saForget.setSubAbility(saExile);
|
||||
return saForget;
|
||||
}
|
||||
|
||||
protected static void addForgetOnMovedTrigger(final Card card, final String zone) {
|
||||
String trig = "Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ " + zone + " | ExcludedDestinations$ Stack | Destination$ Any | TriggerZones$ Command | Static$ True";
|
||||
|
||||
final Trigger parsedTrigger = TriggerHandler.parseTrigger(trig, card, true);
|
||||
parsedTrigger.setOverridingAbility(saForget);
|
||||
final Trigger addedTrigger = card.addTrigger(parsedTrigger);
|
||||
addedTrigger.setIntrinsic(true);
|
||||
parsedTrigger.setOverridingAbility(getForgetSpellAbility(card));
|
||||
card.addTrigger(parsedTrigger);
|
||||
}
|
||||
|
||||
protected static void addForgetOnCastTrigger(final Card card) {
|
||||
String trig = "Mode$ SpellCast | ValidCard$ Card.IsRemembered | TriggerZones$ Command | Static$ True";
|
||||
|
||||
final Trigger parsedTrigger = TriggerHandler.parseTrigger(trig, card, true);
|
||||
parsedTrigger.setOverridingAbility(getForgetSpellAbility(card));
|
||||
card.addTrigger(parsedTrigger);
|
||||
}
|
||||
|
||||
protected static void addExileOnMovedTrigger(final Card card, final String zone) {
|
||||
@@ -368,35 +379,18 @@ public abstract class SpellAbilityEffect {
|
||||
|
||||
protected static void addForgetOnPhasedInTrigger(final Card card) {
|
||||
String trig = "Mode$ PhaseIn | ValidCard$ Card.IsRemembered | TriggerZones$ Command | Static$ True";
|
||||
String forgetEffect = "DB$ Pump | ForgetObjects$ TriggeredCard";
|
||||
String exileEffect = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile"
|
||||
+ " | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0";
|
||||
|
||||
SpellAbility saForget = AbilityFactory.getAbility(forgetEffect, card);
|
||||
AbilitySub saExile = (AbilitySub) AbilityFactory.getAbility(exileEffect, card);
|
||||
saForget.setSubAbility(saExile);
|
||||
|
||||
final Trigger parsedTrigger = TriggerHandler.parseTrigger(trig, card, true);
|
||||
parsedTrigger.setOverridingAbility(saForget);
|
||||
final Trigger addedTrigger = card.addTrigger(parsedTrigger);
|
||||
addedTrigger.setIntrinsic(true);
|
||||
parsedTrigger.setOverridingAbility(getForgetSpellAbility(card));
|
||||
card.addTrigger(parsedTrigger);
|
||||
}
|
||||
|
||||
protected static void addForgetCounterTrigger(final Card card, final String counterType) {
|
||||
String trig = "Mode$ CounterRemoved | TriggerZones$ Command | ValidCard$ Card.IsRemembered | CounterType$ " + counterType + " | NewCounterAmount$ 0 | Static$ True";
|
||||
|
||||
String forgetEffect = "DB$ Pump | ForgetObjects$ TriggeredCard";
|
||||
String exileEffect = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile"
|
||||
+ " | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0";
|
||||
|
||||
SpellAbility saForget = AbilityFactory.getAbility(forgetEffect, card);
|
||||
AbilitySub saExile = (AbilitySub) AbilityFactory.getAbility(exileEffect, card);
|
||||
saForget.setSubAbility(saExile);
|
||||
|
||||
final Trigger parsedTrigger = TriggerHandler.parseTrigger(trig, card, true);
|
||||
parsedTrigger.setOverridingAbility(saForget);
|
||||
final Trigger addedTrigger = card.addTrigger(parsedTrigger);
|
||||
addedTrigger.setIntrinsic(true);
|
||||
parsedTrigger.setOverridingAbility(getForgetSpellAbility(card));
|
||||
card.addTrigger(parsedTrigger);
|
||||
}
|
||||
|
||||
protected static void addLeaveBattlefieldReplacement(final Card card, final SpellAbility sa, final String zone) {
|
||||
|
||||
@@ -215,6 +215,7 @@ public class EffectEffect extends SpellAbilityEffect {
|
||||
}
|
||||
if (sa.hasParam("ForgetOnMoved")) {
|
||||
addForgetOnMovedTrigger(eff, sa.getParam("ForgetOnMoved"));
|
||||
addForgetOnCastTrigger(eff);
|
||||
} else if (sa.hasParam("ExileOnMoved")) {
|
||||
addExileOnMovedTrigger(eff, sa.getParam("ExileOnMoved"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user