From d40c6769371e0ccf99ef2bdc43070fe97c8b8d28 Mon Sep 17 00:00:00 2001 From: Glorax <114269106+Glorax@users.noreply.github.com> Date: Tue, 14 Nov 2023 07:30:13 -0800 Subject: [PATCH] WHO 3 cards (Masters + Turlough) (#4104) --- .../forge/game/ability/effects/GoadEffect.java | 7 ++++--- .../main/java/forge/game/card/CounterEnumType.java | 2 ++ .../upcoming/the_master_formed_anew.txt | 9 +++++++++ .../cardsfolder/upcoming/the_master_mesmerist.txt | 13 +++++++++++++ .../res/cardsfolder/upcoming/vislor_turlough.txt | 14 ++++++++++++++ 5 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/the_master_formed_anew.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/the_master_mesmerist.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/vislor_turlough.txt diff --git a/forge-game/src/main/java/forge/game/ability/effects/GoadEffect.java b/forge-game/src/main/java/forge/game/ability/effects/GoadEffect.java index 6b441f4f756..302796fe5dc 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/GoadEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/GoadEffect.java @@ -32,6 +32,7 @@ public class GoadEffect extends SpellAbilityEffect { final Game game = player.getGame(); final long timestamp = game.getNextTimestamp(); final boolean remember = sa.hasParam("RememberGoaded"); + final String duration = sa.getParamOrDefault("Duration", "UntilYourNextTurn"); for (final Card tgtC : getDefinedCardsOrTargeted(sa)) { // only goad things on the battlefield @@ -43,8 +44,8 @@ public class GoadEffect extends SpellAbilityEffect { tgtC.addGoad(timestamp, player); // currently, only Life of the Party uses Duration$ – Duration$ Permanent - if (!sa.hasParam("Duration")) { - final GameCommand untilEOT = new GameCommand() { + if (!duration.equals("Permanent")) { + final GameCommand until = new GameCommand() { private static final long serialVersionUID = -1731759226844770852L; @Override @@ -53,7 +54,7 @@ public class GoadEffect extends SpellAbilityEffect { } }; - game.getCleanup().addUntil(player, untilEOT); + addUntilCommand(sa, until); } if (remember && tgtC.isGoaded()) { diff --git a/forge-game/src/main/java/forge/game/card/CounterEnumType.java b/forge-game/src/main/java/forge/game/card/CounterEnumType.java index f7c401e5e6a..39614370e02 100644 --- a/forge-game/src/main/java/forge/game/card/CounterEnumType.java +++ b/forge-game/src/main/java/forge/game/card/CounterEnumType.java @@ -373,6 +373,8 @@ public enum CounterEnumType { STUN("STUN", 226, 192, 165), + TAKEOVER("TKVR", 63, 49, 191), + TASK("TASK", 191, 63, 49), THEFT("THEFT", 255, 176, 125), diff --git a/forge-gui/res/cardsfolder/upcoming/the_master_formed_anew.txt b/forge-gui/res/cardsfolder/upcoming/the_master_formed_anew.txt new file mode 100644 index 00000000000..aabea335029 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_master_formed_anew.txt @@ -0,0 +1,9 @@ +Name:The Master, Formed Anew +ManaCost:U B +Types:Legendary Creature Time Lord Rogue +PT:0/1 +K:ETBReplacement:Copy:DBCopy:Optional +T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigExile | OptionalDecider$ You | TriggerDescription$ Body Thief — When you cast this spell, you may exile a creature you control and put a takeover counter on it. +SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | Hidden$ True | ChangeType$ Creature.YouCtrl | ExileWithCounter$ TAKEOVER +SVar:DBCopy:DB$ Clone | Choices$ Creature.counters_GE1_TAKEOVER | ChoiceZone$ Exile | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of a creature card in exile with a takeover counter on it. +Oracle:Body Thief — When you cast this spell, you may exile a creature you control and put a takeover counter on it.\nYou may have The Master, Formed Anew enter the battlefield as a copy of a creature card in exile with a takeover counter on it. diff --git a/forge-gui/res/cardsfolder/upcoming/the_master_mesmerist.txt b/forge-gui/res/cardsfolder/upcoming/the_master_mesmerist.txt new file mode 100644 index 00000000000..9de42c8d124 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_master_mesmerist.txt @@ -0,0 +1,13 @@ +Name:The Master, Mesmerist +ManaCost:2 U B +Types:Legendary Creature Time Lord Rogue +PT:3/3 +A:AB$ Pump | Cost$ T | ValidTgts$ Creature.OppCtrl+powerLEX | TgtPrompt$ Select target creature an opponent controls with power less than or equal to NICKNAME's power | KW$ Skulk | SubAbility$ DBGoad | StackDescription$ {c:Targeted} gains skulk until end of turn. Goad it. | SpellDescription$ Target creature an opponent controls with power less than or equal to NICKNAME's power gains skulk until end of turn. Goad it. (A creature with skulk can't be blocked by creatures with greater power.) +SVar:DBGoad:DB$ Goad | Defined$ Targeted +T:Mode$ DamageDone | ValidSource$ Creature.withSkulk | ValidTarget$ Opponent | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever a creature with skulk deals combat damage to one of your opponents, put a +1/+1 counter on NICKNAME and draw a card. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ TrigDraw +SVar:TrigDraw:DB$ Draw | NumCards$ 1 +SVar:X:Count$CardPower +DeckHas:Ability$Counters +DeckHints:Keyword$Skulk +Oracle:{T}: Target creature an opponent controls with power less than or equal to The Master's power gains skulk until end of turn. Goad it. (A creature with skulk can't be blocked by creatures with greater power.)\nWhenever a creature with skulk deals combat damage to one of your opponents, put a +1/+1 counter on The Master and draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/vislor_turlough.txt b/forge-gui/res/cardsfolder/upcoming/vislor_turlough.txt new file mode 100644 index 00000000000..e0c1e96f8c2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/vislor_turlough.txt @@ -0,0 +1,14 @@ +Name:Vislor Turlough +ManaCost:3 B +Types:Legendary Creature Rogue +PT:2/5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | OptionalDecider$ You | TriggerDescription$ Deal with the Black Guardian — When CARDNAME enters the battlefield, you may have an opponent gain control of it. If you do, it's goaded for as long as they control it. +SVar:TrigChoose:DB$ ChoosePlayer | Defined$ You | Choices$ Opponent | ChoiceTitle$ Choose an opponent to give control to: | AILogic$ Curse | SubAbility$ DBDonate +SVar:DBDonate:DB$ GainControl | Defined$ Self | NewController$ ChosenPlayer | SubAbility$ DBGoad +SVar:DBGoad:DB$ Goad | Defined$ Self | Duration$ UntilLoseControlOfHost +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ At the beginning of your end step, draw a card, then you lose life equal to the number of cards in your hand. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBLoseLife +SVar:DBLoseLife:DB$ LoseLife | Defined$ You | LifeAmount$ X +SVar:X:Count$CardsInYourHand +K:Doctor's companion +Oracle:Deal with the Black Guardian — When Vislor Turlough enters the battlefield, you may have an opponent gain control of it. If you do, it's goaded for as long as they control it.\nAt the beginning of your end step, draw a card, then you lose life equal to the number of cards in your hand.\nDoctor's companion (You can have two commanders if the other is the Doctor.) \ No newline at end of file