diff --git a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java index b1d829a2d8a..d9a8f8fa3df 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -331,9 +331,24 @@ public abstract class SpellAbilityEffect { } protected static void addSelfTrigger(final SpellAbility sa, String location, final Card card) { + String player = ""; + String whose = " the "; + if (location.contains("_")) { + String[] locSplit = location.split("_"); + player = locSplit[0]; + location = locSplit[1]; + if (player.equals("You")) { + whose = " your next "; + } + } + String trigStr = "Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield " + - "| TriggerDescription$ At the beginning of the end step, " + location.toLowerCase() + " CARDNAME."; - + "| TriggerDescription$ At the beginning of" + whose + "end step, " + location.toLowerCase() + + " CARDNAME."; + if (!player.equals("")) { + trigStr += " | Player$ " + player; + } + final Trigger trig = TriggerHandler.parseTrigger(trigStr, card, true); String trigSA = ""; @@ -518,6 +533,9 @@ public abstract class SpellAbilityEffect { "| Origin$ Battlefield | Destination$ Graveyard " + "| Description$ If that permanent would die this turn, exile it instead."; String effect = "DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Battlefield | Destination$ " + zone; + if (sa.hasParam("ReplaceDyingRemember")) { + effect += " | RememberToEffectSource$ True"; + } ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, eff, true); re.setLayer(ReplacementLayer.Other); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index fb43d803b3a..f0242e6f230 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -789,6 +789,11 @@ public class ChangeZoneEffect extends SpellAbilityEffect { } } + if (sa.hasParam("RememberToEffectSource")) { + if (hostCard.isImmutable() && hostCard.getEffectSource() != null) { + hostCard.getEffectSource().addRemembered(movedCard); + } + } if (remember != null) { hostCard.addRemembered(movedCard); // addRememberedFromCardState ? diff --git a/forge-gui/res/cardsfolder/upcoming/gut_fanatical_priestess.txt b/forge-gui/res/cardsfolder/upcoming/gut_fanatical_priestess.txt new file mode 100644 index 00000000000..f3890853877 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gut_fanatical_priestess.txt @@ -0,0 +1,85 @@ +Name:Gut, Fanatical Priestess +ManaCost:4 R R +Types:Legendary Creature Goblin Shaman +PT:4/3 +K:Specialize:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFight | TriggerDescription$ When CARDNAME enters the battlefield, up to one target creature you control fights target creature you don't control. If the creature you don't control would die this turn, exile it instead. +SVar:TrigFight:DB$ Pump | ValidTgts$ Creature.YouCtrl | AILogic$ Fight | TgtPrompt$ Select up to one target creature you control | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBFight +SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Select target creature you don't control | ReplaceDyingDefined$ ThisTargetedCard | ReplaceDyingRemember$ True +T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget +SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +AlternateMode:Specialize +Oracle:Specialize {5}\nWhen Gut, Fanatical Priestess enters the battlefield, up to one target creature you control fights target creature you don't control. If the creature you don't control would die this turn, exile it instead. + +SPECIALIZE:WHITE + +Name:Gut, Zealous Fanatic +ManaCost:4 R R W +Types:Legendary Creature Goblin Shaman +PT:5/4 +T:Mode$ Specializes | ValidCard$ Card.Self | Execute$ TrigCopy | TriggerDescription$ When this creature specializes, create two tokens that are copies of a creature card exiled with this creature, except they're 2/2 and have haste. Sacrifice them at the beginning of your next end step. +SVar:TrigCopy:DB$ CopyPermanent | Defined$ Remembered | SetPower$ 2 | SetToughness$ 2 | NumCopies$ 2 | AddKeywords$ Haste | AtEOTTrig$ You_Sacrifice +T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget +SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Token +Oracle:When this creature specializes, create two tokens that are copies of a creature card exiled with this creature, except they're 2/2 and have haste. Sacrifice them at the beginning of your next end step. + +SPECIALIZE:BLUE + +Name:Gut, Devious Fanatic +ManaCost:4 U R R +Types:Legendary Creature Goblin Shaman +PT:5/4 +T:Mode$ Specializes | ValidCard$ Card.Self | Execute$ TrigCopy | TriggerDescription$ When this creature specializes, create a token that's a copy of a creature card exiled with this creature, except it's 3/3 and has flying and haste. Sacrifice it at the beginning of your next end step. +SVar:TrigCopy:DB$ CopyPermanent | Defined$ Remembered | SetPower$ 3 | SetToughness$ 3 | AddKeywords$ Flying & Haste | AtEOTTrig$ You_Sacrifice +T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget +SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:When this creature specializes, create a token that's a copy of a creature card exiled with this creature, except it's 3/3 and has flying and haste. Sacrifice it at the beginning of your next end step. + +SPECIALIZE:BLACK + +Name:Gut, Brutal Fanatic +ManaCost:4 B R R +Types:Legendary Creature Goblin Shaman +PT:5/4 +T:Mode$ Specializes | ValidCard$ Card.Self | Execute$ TrigCopy | TriggerDescription$ When this creature specializes, create a token that's a copy of a creature card exiled with this creature, except it's 4/4 and has menace and haste. Sacrifice it at the beginning of your next end step. +SVar:TrigCopy:DB$ CopyPermanent | Defined$ Remembered | SetPower$ 4 | SetToughness$ 4 | AddKeywords$ Menace & Haste | AtEOTTrig$ You_Sacrifice +T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget +SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:When this creature specializes, create a token that's a copy of a creature card exiled with this creature, except it's 4/4 and has menace and haste. Sacrifice it at the beginning of your next end step. + +SPECIALIZE:RED + +Name:Gut, Furious Fanatic +ManaCost:4 R R R +Types:Legendary Creature Goblin Shaman +PT:5/4 +T:Mode$ Specializes | ValidCard$ Card.Self | Execute$ TrigCopy | TriggerDescription$ When this creature specializes, create a token that's a copy of a creature card exiled with this creature, except it has double strike and haste. Sacrifice it at the beginning of your next end step. +SVar:TrigCopy:DB$ CopyPermanent | Defined$ Remembered | AddKeywords$ Double Strike & Haste | AtEOTTrig$ You_Sacrifice +T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget +SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:When this creature specializes, create a token that's a copy of a creature card exiled with this creature, except it has double strike and haste. Sacrifice it at the beginning of your next end step. + +SPECIALIZE:GREEN + +Name:Gut, Bestial Fanatic +ManaCost:4 R R G +Types:Legendary Creature Goblin Shaman +PT:5/4 +T:Mode$ Specializes | ValidCard$ Card.Self | Execute$ TrigCopy | TriggerDescription$ When this creature specializes, create a token that's a copy of a creature card exiled with this creature, except it's 5/5 and has trample and haste. Sacrifice it at the beginning of your next end step. +SVar:TrigCopy:DB$ CopyPermanent | Defined$ Remembered.ExiledWithSource | SetPower$ 5 | SetToughness$ 5 | AddKeywords$ Trample & Haste | AtEOTTrig$ You_Sacrifice +T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget +SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:When this creature specializes, create a token that's a copy of a creature card exiled with this creature, except it's 5/5 and has trample and haste. Sacrifice it at the beginning of your next end step. diff --git a/forge-gui/res/cardsfolder/upcoming/rasaad_monk_of_selune.txt b/forge-gui/res/cardsfolder/upcoming/rasaad_monk_of_selune.txt new file mode 100644 index 00000000000..c14563488a1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rasaad_monk_of_selune.txt @@ -0,0 +1,72 @@ +Name:Rasaad, Monk of Selune +ManaCost:2 W +Types:Legendary Creature Human Monk +PT:2/2 +K:Specialize:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile target creature an opponent controls until this creature leaves the battlefield. +SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | Duration$ UntilHostLeavesPlay | RememberChanged$ True +T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget +SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +AlternateMode:Specialize +Oracle:Specialize {5}\nWhen Rasaad, Monk of Selune enters the battlefield, exile target creature an opponent controls until this creature leaves the battlefield. + +SPECIALIZE:WHITE + +Name:Rasaad, Radiant Monk +ManaCost:2 W W +Types:Legendary Creature Human Monk +PT:4/4 +T:Mode$ Specializes | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When this creature specializes, target creature card exiled with this creature perpetually loses all abilities and has base power and toughness 1/1. +SVar:TrigEffect:DB$ Effect | TgtPrompt$ Select target creature card exiled with this creature | ValidTgts$ Creature.IsRemembered+ExiledWithSource | TgtZone$ Exile | IsCurse$ True | RememberObjects$ Targeted | StaticAbilities$ PerpetualLoss | Name$ Rasaad, Radiant Monk's Perpetual Effect | Duration$ Permanent +SVar:PerpetualLoss:Mode$ Continuous | SetPower$ 1 | SetToughness$ 1 | Affected$ Card.IsRemembered | RemoveAllAbilities$ True | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature perpetually loses all abilities and has base power and toughness 1/1. +T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget +SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:When this creature specializes, target creature card exiled with this creature perpetually loses all abilities and has base power and toughness 1/1. + +SPECIALIZE:BLUE + +Name:Rasaad, Dragon Monk +ManaCost:2 W U +Types:Legendary Creature Human Monk +PT:4/4 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME dies, create two 1/1 blue Faerie Dragon creature tokens with flying. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ u_1_1_faerie_dragon_flying +DeckHas:Ability$Token & Type$Faerie|Dragon +Oracle:When Rasaad, Dragon Monk dies, create two 1/1 blue Faerie Dragon creature tokens with flying. + +SPECIALIZE:BLACK + +Name:Rasaad, Shadow Monk +ManaCost:2 W B +Types:Legendary Creature Human Monk +PT:4/4 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME dies, create a 4/1 black Skeleton creature token. +SVar:TrigToken:DB$ Token | TokenScript$ b_4_1_skeleton_menace +DeckHas:Ability$Token & Type$Skeleton +Oracle:When Rasaad, Shadow Monk dies, create a 4/1 black Skeleton creature token with menace. + +SPECIALIZE:RED + +Name:Rasaad, Warrior Monk +ManaCost:2 R W +Types:Legendary Creature Human Monk +PT:4/4 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME dies, create three 1/1 white Soldier creature tokens. +SVar:TrigToken:DB$ Token | TokenAmount$ 3 | TokenScript$ w_1_1_soldier +DeckHas:Ability$Token & Type$Soldier +Oracle:When Rasaad, Warrior Monk dies, create three 1/1 white Soldier creature tokens. + +SPECIALIZE:GREEN + +Name:Rasaad, Sylvan Monk +ManaCost:2 G W +Types:Legendary Creature Human Monk +PT:4/4 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME dies, create 2/2 green Boar creature tokens. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ g_2_2_boar +DeckHas:Ability$Token & Type$Boar +Oracle:When Rasaad, Sylvan Monk dies, create two 2/2 green Boar creature tokens.