mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Impending: use Effect for Last Time counter removed (#6096)
This commit is contained in:
@@ -463,6 +463,11 @@ public abstract class SpellAbilityEffect {
|
|||||||
card.addChangedSVars(Collections.singletonMap("EndOfTurnLeavePlay", "AtEOT"), card.getGame().getNextTimestamp(), 0);
|
card.addChangedSVars(Collections.singletonMap("EndOfTurnLeavePlay", "AtEOT"), card.getGame().getNextTimestamp(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static SpellAbility getExileSpellAbility(final Card card) {
|
||||||
|
String effect = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile";
|
||||||
|
return AbilityFactory.getAbility(effect, card);
|
||||||
|
}
|
||||||
|
|
||||||
protected static SpellAbility getForgetSpellAbility(final Card card) {
|
protected static SpellAbility getForgetSpellAbility(final Card card) {
|
||||||
String forgetEffect = "DB$ Pump | ForgetObjects$ TriggeredCard";
|
String forgetEffect = "DB$ Pump | ForgetObjects$ TriggeredCard";
|
||||||
String exileEffect = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile"
|
String exileEffect = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile"
|
||||||
@@ -498,17 +503,15 @@ public abstract class SpellAbilityEffect {
|
|||||||
|
|
||||||
protected static void addExileOnMovedTrigger(final Card card, final String zone) {
|
protected static void addExileOnMovedTrigger(final Card card, final String zone) {
|
||||||
String trig = "Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ " + zone + " | Destination$ Any | TriggerZones$ Command | Static$ True";
|
String trig = "Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ " + zone + " | Destination$ Any | TriggerZones$ Command | Static$ True";
|
||||||
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(getExileSpellAbility(card));
|
||||||
card.addTrigger(parsedTrigger);
|
card.addTrigger(parsedTrigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void addExileOnCounteredTrigger(final Card card) {
|
protected static void addExileOnCounteredTrigger(final Card card) {
|
||||||
String trig = "Mode$ Countered | ValidCard$ Card.IsRemembered | TriggerZones$ Command | Static$ True";
|
String trig = "Mode$ Countered | ValidCard$ Card.IsRemembered | TriggerZones$ Command | Static$ True";
|
||||||
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(getExileSpellAbility(card));
|
||||||
card.addTrigger(parsedTrigger);
|
card.addTrigger(parsedTrigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -520,6 +523,13 @@ public abstract class SpellAbilityEffect {
|
|||||||
card.addTrigger(parsedTrigger);
|
card.addTrigger(parsedTrigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static void addExileCounterTrigger(final Card card, final String counterType) {
|
||||||
|
String trig = "Mode$ CounterRemoved | TriggerZones$ Command | ValidCard$ Card.EffectSource | CounterType$ " + counterType + " | NewCounterAmount$ 0 | Static$ True";
|
||||||
|
final Trigger parsedTrigger = TriggerHandler.parseTrigger(trig, card, true);
|
||||||
|
parsedTrigger.setOverridingAbility(getExileSpellAbility(card));
|
||||||
|
card.addTrigger(parsedTrigger);
|
||||||
|
}
|
||||||
|
|
||||||
protected static void addForgetCounterTrigger(final Card card, final String counterType) {
|
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 trig = "Mode$ CounterRemoved | TriggerZones$ Command | ValidCard$ Card.IsRemembered | CounterType$ " + counterType + " | NewCounterAmount$ 0 | Static$ True";
|
||||||
String trig2 = "Mode$ PhaseOut | TriggerZones$ Command | ValidCard$ Card.phasedOutIsRemembered | Static$ True";
|
String trig2 = "Mode$ PhaseOut | TriggerZones$ Command | ValidCard$ Card.phasedOutIsRemembered | Static$ True";
|
||||||
@@ -536,9 +546,8 @@ public abstract class SpellAbilityEffect {
|
|||||||
|
|
||||||
protected static void addExileOnLostTrigger(final Card card) {
|
protected static void addExileOnLostTrigger(final Card card) {
|
||||||
String trig = "Mode$ LosesGame | ValidPlayer$ You | TriggerController$ Player | TriggerZones$ Command | Static$ True";
|
String trig = "Mode$ LosesGame | ValidPlayer$ You | TriggerController$ Player | TriggerZones$ Command | Static$ True";
|
||||||
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(getExileSpellAbility(card));
|
||||||
card.addTrigger(parsedTrigger);
|
card.addTrigger(parsedTrigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -251,6 +251,10 @@ public class EffectEffect extends SpellAbilityEffect {
|
|||||||
addExileOnLostTrigger(eff);
|
addExileOnLostTrigger(eff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sa.hasParam("ExileOnCounter")) {
|
||||||
|
addExileCounterTrigger(eff, sa.getParam("ExileOnCounter"));
|
||||||
|
}
|
||||||
|
|
||||||
// Set Imprinted
|
// Set Imprinted
|
||||||
if (effectImprinted != null) {
|
if (effectImprinted != null) {
|
||||||
eff.addImprintedCards(AbilityUtils.getDefinedCards(hostCard, effectImprinted, sa));
|
eff.addImprintedCards(AbilityUtils.getDefinedCards(hostCard, effectImprinted, sa));
|
||||||
|
|||||||
@@ -2354,7 +2354,17 @@ public class CardFactoryUtil {
|
|||||||
final String effect = "DB$ PutCounter | Defined$ ReplacedCard | CounterType$ TIME | CounterNum$ " + m
|
final String effect = "DB$ PutCounter | Defined$ ReplacedCard | CounterType$ TIME | CounterNum$ " + m
|
||||||
+ " | ETB$ True | SpellDescription$ " + desc;
|
+ " | ETB$ True | SpellDescription$ " + desc;
|
||||||
|
|
||||||
final ReplacementEffect re = createETBReplacement(card, ReplacementLayer.Other, effect, false, true, intrinsic, "Card.Self+impended", "");
|
SpellAbility repAb = AbilityFactory.getAbility(effect, card);
|
||||||
|
|
||||||
|
String staticEffect = "DB$ Effect | StaticAbilities$ NoCreature | ExileOnCounter$ TIME | Duration$ UntilHostLeavesPlay";
|
||||||
|
|
||||||
|
String staticNoCreature = "Mode$ Continuous | Affected$ Card.EffectSource+counters_GE1_TIME | RemoveType$ Creature | Description$ EFFECTSOURCE isn't a creature.";
|
||||||
|
|
||||||
|
AbilitySub effectAb = (AbilitySub)AbilityFactory.getAbility(staticEffect, card);
|
||||||
|
effectAb.setSVar("NoCreature", staticNoCreature);
|
||||||
|
repAb.setSubAbility(effectAb);
|
||||||
|
|
||||||
|
final ReplacementEffect re = createETBReplacement(card, ReplacementLayer.Other, repAb, false, true, intrinsic, "Card.Self+impended", "");
|
||||||
|
|
||||||
inst.addReplacement(re);
|
inst.addReplacement(re);
|
||||||
} else if (keyword.equals("Jump-start")) {
|
} else if (keyword.equals("Jump-start")) {
|
||||||
@@ -3988,9 +3998,6 @@ public class CardFactoryUtil {
|
|||||||
String effect = "Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.withoutHorsemanship | Secondary$ True " +
|
String effect = "Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.withoutHorsemanship | Secondary$ True " +
|
||||||
" | Description$ Horsemanship (" + inst.getReminderText() + ")";
|
" | Description$ Horsemanship (" + inst.getReminderText() + ")";
|
||||||
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
|
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
|
||||||
} else if (keyword.startsWith("Impending")) {
|
|
||||||
String effect = "Mode$ Continuous | Affected$ Card.Self+counters_GE1_TIME | RemoveType$ Creature | Secondary$ True";
|
|
||||||
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
|
|
||||||
} else if (keyword.equals("Intimidate")) {
|
} else if (keyword.equals("Intimidate")) {
|
||||||
String effect = "Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.nonArtifact+notSharesColorWith | Secondary$ True " +
|
String effect = "Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.nonArtifact+notSharesColorWith | Secondary$ True " +
|
||||||
" | Description$ Intimidate (" + inst.getReminderText() + ")";
|
" | Description$ Intimidate (" + inst.getReminderText() + ")";
|
||||||
|
|||||||
Reference in New Issue
Block a user