diff --git a/forge-game/src/main/java/forge/game/Game.java b/forge-game/src/main/java/forge/game/Game.java index 40572eb2d93..2f929466932 100644 --- a/forge-game/src/main/java/forge/game/Game.java +++ b/forge-game/src/main/java/forge/game/Game.java @@ -1185,6 +1185,12 @@ public void onCleanupPhase() { for (Player player : getRegisteredPlayers()) { player.onCleanupPhase(); } + for (final Card c : getCardsIncludePhasingIn(ZoneType.Battlefield)) { + c.onCleanupPhase(getPhaseHandler().getPlayerTurn()); + } + for (final Card card : getCardsInGame()) { + card.resetActivationsPerTurn(); + } } public void addCounterAddedThisTurn(Player putter, CounterType cType, Card card, Integer value) { diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index fb743a13032..2fe099b93c7 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -82,12 +82,6 @@ public GameAction(Game game0) { game = game0; } - public final void resetActivationsPerTurn() { - for (final Card card : game.getCardsInGame()) { - card.resetActivationsPerTurn(); - } - } - public Card changeZone(final Zone zoneFrom, Zone zoneTo, final Card c, Integer position, SpellAbility cause) { return changeZone(zoneFrom, zoneTo, c, position, cause, null); } 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 463b356ea0c..89da1cef2e4 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -1041,7 +1041,9 @@ public static void handleExiledWith(final Card movedCard, final SpellAbility cau exilingSource = cause.getOriginalHost(); } movedCard.setExiledWith(exilingSource); - movedCard.setExiledBy(cause.getActivatingPlayer()); + Player exiler = cause.hasParam("DefinedExiler") ? + getDefinedPlayersOrTargeted(cause, "DefinedExiler").get(0) : cause.getActivatingPlayer(); + movedCard.setExiledBy(exiler); } public static GameCommand exileEffectCommand(final Game game, final Card effect) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java index f74ff18fc18..3681e7603e5 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java @@ -127,7 +127,8 @@ public void resolve(SpellAbility sa) { final boolean skipReorder = sa.hasParam("SkipReorder"); // A hack for cards like Explorer's Scope that need to ensure that a card is revealed to the player activating the ability - final boolean forceRevealToController = sa.hasParam("ForceRevealToController"); + final boolean forceReveal = sa.hasParam("ForceRevealToController") || + sa.hasParam("ForceReveal"); // These parameters are used to indicate that a dialog box must be show to the player asking if the player wants to proceed // with an optional ability, otherwise the optional ability is skipped. @@ -236,9 +237,12 @@ else if (!sa.hasParam("NoLooking")) { valid = top; } - if (forceRevealToController) { - // Force revealing the card to the player activating the ability (e.g. Explorer's Scope) - game.getAction().revealTo(top, activator); + if (forceReveal) { + // Force revealing the card to defined (e.g. Gonti, Night Minister) or the player activating the + // ability (e.g. Explorer's Scope) + Player revealTo = sa.hasParam("ForceReveal") ? + getDefinedPlayersOrTargeted(sa, "ForceReveal").get(0) : activator; + game.getAction().revealTo(top, revealTo); delayedReveal = null; // top is already seen by the player, do not reveal twice } diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 681782e39ba..6af9ea532e9 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -7271,10 +7271,6 @@ public void onEndOfCombat(final Player active) { } public void onCleanupPhase(final Player turn) { - if (!StaticAbilityNoCleanupDamage.damageNotRemoved(this)) { - setDamage(0); - } - setHasBeenDealtDeathtouchDamage(false); resetExcessDamage(); setRegeneratedThisTurn(0); resetShieldCount(); diff --git a/forge-game/src/main/java/forge/game/combat/CombatUtil.java b/forge-game/src/main/java/forge/game/combat/CombatUtil.java index 943411ac261..794bfdf891a 100644 --- a/forge-game/src/main/java/forge/game/combat/CombatUtil.java +++ b/forge-game/src/main/java/forge/game/combat/CombatUtil.java @@ -374,7 +374,6 @@ public static void checkDeclaredAttacker(final Game game, final Card c, final Co final GameEntity defender = combat.getDefenderByAttacker(c); final List otherAttackers = combat.getAttackers(); - // Run triggers if (triggers) { final Map runParams = AbilityKey.newMap(); runParams.put(AbilityKey.Attacker, c); diff --git a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java index 1f046934248..109d3f08d0b 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -36,6 +36,7 @@ import forge.game.replacement.ReplacementType; import forge.game.spellability.SpellAbility; +import forge.game.staticability.StaticAbilityNoCleanupDamage; import forge.game.trigger.Trigger; import forge.game.trigger.TriggerType; import forge.game.zone.Zone; @@ -180,8 +181,6 @@ private void advanceToNextPhase() { } playerTurn.incrementTurn(); - game.getAction().resetActivationsPerTurn(); - final int lands = CardLists.count(playerTurn.getLandsInPlay(), CardPredicates.UNTAPPED); playerTurn.setNumPowerSurgeLands(lands); } @@ -395,7 +394,10 @@ private void onPhaseBegin() { // Rule 514.2 // Reset Damage received map for (final Card c : game.getCardsIncludePhasingIn(ZoneType.Battlefield)) { - c.onCleanupPhase(playerTurn); + if (!StaticAbilityNoCleanupDamage.damageNotRemoved(c)) { + c.setDamage(0); + } + c.setHasBeenDealtDeathtouchDamage(false); } game.getEndOfTurn().executeUntil(); diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 771a70059ec..82b91ce630b 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -1994,8 +1994,8 @@ public final void createSpeedEffect() { final PlayerZone com = getZone(ZoneType.Command); DetachedCardEffect eff = new DetachedCardEffect(this, "Speed Effect"); String trigger = "Mode$ LifeLost | ValidPlayer$ Opponent | TriggerZones$ Command | ActivationLimit$ 1 | " + - "PlayerTurn$ True | TriggerDescription$ Your speed increases once on each of your turns when an " + - "opponent loses life."; + "PlayerTurn$ True | CheckSVar$ Count$YourSpeed | SVarCompare$ LT4 | " + + "TriggerDescription$ Your speed increases once on each of your turns when an opponent loses life."; String speedUp = "DB$ ChangeSpeed"; Trigger lifeLostTrigger = TriggerHandler.parseTrigger(trigger, eff, true); lifeLostTrigger.setOverridingAbility(AbilityFactory.getAbility(speedUp, eff)); diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java index c5a93220546..1ac4c6c930f 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java @@ -56,9 +56,6 @@ public TriggerAttackerBlockedByCreature(final Map params, final public final boolean performTest(final Map runParams) { final Object a = runParams.get(AbilityKey.Attacker), b = runParams.get(AbilityKey.Blocker); - if (!(a instanceof Card && b instanceof Card)) { - return false; - } final Card attacker = (Card) a, blocker = (Card) b; diff --git a/forge-gui/res/cardsfolder/a/abrade.txt b/forge-gui/res/cardsfolder/a/abrade.txt index c1f1d563171..ec9d7df492f 100644 --- a/forge-gui/res/cardsfolder/a/abrade.txt +++ b/forge-gui/res/cardsfolder/a/abrade.txt @@ -3,5 +3,5 @@ ManaCost:1 R Types:Instant A:SP$ Charm | Choices$ DBDmg,DBDestroy SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature. -SVar:DBDestroy:DB$ Destroy | ValidTgts$ Artifact | TgtPrompt$ Select target artifact. | SpellDescription$ Destroy target artifact. +SVar:DBDestroy:DB$ Destroy | ValidTgts$ Artifact | TgtPrompt$ Select target artifact | SpellDescription$ Destroy target artifact. Oracle:Choose one —\n• Abrade deals 3 damage to target creature.\n• Destroy target artifact. diff --git a/forge-gui/res/cardsfolder/b/battle_cry.txt b/forge-gui/res/cardsfolder/b/battle_cry.txt index 95b5b1076e4..f2378b1904a 100644 --- a/forge-gui/res/cardsfolder/b/battle_cry.txt +++ b/forge-gui/res/cardsfolder/b/battle_cry.txt @@ -3,7 +3,7 @@ ManaCost:2 W Types:Instant A:SP$ UntapAll | ValidCards$ Creature.White+YouCtrl | SubAbility$ Battlecry | SpellDescription$ Untap all white creatures you control. Whenever a creature blocks this turn, it gets +0/+1 until end of turn. SVar:Battlecry:DB$ Effect | Triggers$ TrigBlocking -SVar:TrigBlocking:Mode$ AttackerBlocked | Execute$ Pump | TriggerDescription$ Whenever a creature blocks this turn, it gets +0/+1 until end of turn. +SVar:TrigBlocking:Mode$ Blocks | Execute$ Pump | TriggerDescription$ Whenever a creature blocks this turn, it gets +0/+1 until end of turn. SVar:Pump:DB$ Pump | Defined$ TriggeredBlockerLKICopy | NumDef$ 1 AI:RemoveDeck:All Oracle:Untap all white creatures you control.\nWhenever a creature blocks this turn, it gets +0/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/b/bringer_of_the_white_dawn.txt b/forge-gui/res/cardsfolder/b/bringer_of_the_white_dawn.txt index d433a17b66c..845ed339165 100644 --- a/forge-gui/res/cardsfolder/b/bringer_of_the_white_dawn.txt +++ b/forge-gui/res/cardsfolder/b/bringer_of_the_white_dawn.txt @@ -5,7 +5,7 @@ PT:5/5 K:Trample S:Mode$ AlternativeCost | ValidSA$ Spell.Self | EffectZone$ All | Cost$ W U B R G | Description$ You may pay {W}{U}{B}{R}{G} rather than pay this spell's mana cost. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ At the beginning of your upkeep, you may return target artifact card from your graveyard to the battlefield. -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Artifact.YouCtrl | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Artifact.YouCtrl DeckHas:Ability$Graveyard DeckNeeds:Type$Artifact Oracle:You may pay {W}{U}{B}{R}{G} rather than pay this spell's mana cost.\nTrample\nAt the beginning of your upkeep, you may return target artifact card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/c/charnelhoard_wurm.txt b/forge-gui/res/cardsfolder/c/charnelhoard_wurm.txt index 19c8185191e..7405470a1a4 100644 --- a/forge-gui/res/cardsfolder/c/charnelhoard_wurm.txt +++ b/forge-gui/res/cardsfolder/c/charnelhoard_wurm.txt @@ -4,5 +4,5 @@ Types:Creature Wurm PT:6/6 K:Trample T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | OptionalDecider$ You | Execute$ TrigChange | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage to an opponent, you may return target card from your graveyard to your hand. -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Card.YouCtrl | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Card.YouCtrl Oracle:Trample\nWhenever Charnelhoard Wurm deals damage to an opponent, you may return target card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/e/emeria_the_sky_ruin.txt b/forge-gui/res/cardsfolder/e/emeria_the_sky_ruin.txt index 7d2923bd371..8732c789e49 100644 --- a/forge-gui/res/cardsfolder/e/emeria_the_sky_ruin.txt +++ b/forge-gui/res/cardsfolder/e/emeria_the_sky_ruin.txt @@ -5,5 +5,5 @@ R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplacementRe SVar:ETBTapped:DB$ Tap | Defined$ Self | ETB$ True A:AB$ Mana | Cost$ T | Produced$ W | SpellDescription$ Add {W}. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigChange | IsPresent$ Card.Plains+YouCtrl | PresentCompare$ GE7 | TriggerDescription$ At the beginning of your upkeep, if you control seven or more Plains, you may return target creature card from your graveyard to the battlefield. -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl Oracle:Emeria, the Sky Ruin enters tapped.\nAt the beginning of your upkeep, if you control seven or more Plains, you may return target creature card from your graveyard to the battlefield.\n{T}: Add {W}. diff --git a/forge-gui/res/cardsfolder/f/floodgate.txt b/forge-gui/res/cardsfolder/f/floodgate.txt index 4754e2b456a..b279ee2a60d 100644 --- a/forge-gui/res/cardsfolder/f/floodgate.txt +++ b/forge-gui/res/cardsfolder/f/floodgate.txt @@ -4,7 +4,7 @@ Types:Creature Wall PT:0/5 K:Defender T:Mode$ Always | IsPresent$ Card.Self+withFlying | Execute$ Sacrifice | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME has flying, sacrifice it. -SVar:Sacrifice:AB$ Sacrifice | Cost$ 0 +SVar:Sacrifice:DB$ Sacrifice T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Any | Execute$ TrigDamage | TriggerDescription$ When CARDNAME leaves the battlefield, it deals damage equal to half the number of Islands you control, rounded down, to each nonblue creature without flying. SVar:TrigDamage:DB$ DamageAll | ValidCards$ Creature.nonBlue+withoutFlying | NumDmg$ X SVar:X:Count$Valid Island.YouCtrl/HalfDown diff --git a/forge-gui/res/cardsfolder/i/ian_malcolm_chaotician.txt b/forge-gui/res/cardsfolder/i/ian_malcolm_chaotician.txt index 570cbeb9fac..12310fcf903 100644 --- a/forge-gui/res/cardsfolder/i/ian_malcolm_chaotician.txt +++ b/forge-gui/res/cardsfolder/i/ian_malcolm_chaotician.txt @@ -4,5 +4,5 @@ Types:Legendary Creature Human Scientist PT:2/2 T:Mode$ Drawn | ValidPlayer$ Player | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ Whenever a player draws their second card each turn, that player exiles the top card of their library. SVar:TrigDig:DB$ Dig | Defined$ TriggeredPlayer | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card | RememberChanged$ True | DestinationZone$ Exile -S:Mode$ Continuous | Affected$ Card.ExiledWithSource+YouDontOwn | MayPlay$ True | MayPlayLimit$ 1 | MayPlayIgnoreType$ True | MayPlayPlayer$ ActivePlayer | EffectZone$ Battlefield | AffectedZone$ Exile | Description$ During each player's turn, that player may cast a spell from among the cards they don't own exiled with CARDNAME and mana of any type can be spent to cast it. +S:Mode$ Continuous | Affected$ Card.ExiledWithSource+!OwnedBy ActivePlayer | MayPlay$ True | MayPlayLimit$ 1 | MayPlayIgnoreType$ True | MayPlayPlayer$ ActivePlayer | EffectZone$ Battlefield | AffectedZone$ Exile | Description$ During each player's turn, that player may cast a spell from among the cards they don't own exiled with CARDNAME and mana of any type can be spent to cast it. Oracle:Whenever a player draws their second card each turn, that player exiles the top card of their library.\nDuring each player's turn, that player may cast a spell from among the cards they don't own exiled with Ian Malcolm, Chaotician, and mana of any type can be spent to cast it. diff --git a/forge-gui/res/cardsfolder/j/junk_diver.txt b/forge-gui/res/cardsfolder/j/junk_diver.txt index 8e37e7ae626..94b50b453a8 100644 --- a/forge-gui/res/cardsfolder/j/junk_diver.txt +++ b/forge-gui/res/cardsfolder/j/junk_diver.txt @@ -4,6 +4,6 @@ Types:Artifact Creature Bird PT:1/1 K:Flying T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME dies, return another target artifact card from your graveyard to your hand. -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Artifact.Other | TargetsWithDefinedController$ TriggeredCardController | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Artifact.Other | TargetsWithDefinedController$ TriggeredCardController SVar:SacMe:1 Oracle:Flying\nWhen Junk Diver dies, return another target artifact card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/l/lurebound_scarecrow.txt b/forge-gui/res/cardsfolder/l/lurebound_scarecrow.txt index 1026c80b3f7..0b4bc3682d8 100644 --- a/forge-gui/res/cardsfolder/l/lurebound_scarecrow.txt +++ b/forge-gui/res/cardsfolder/l/lurebound_scarecrow.txt @@ -5,6 +5,6 @@ PT:4/4 K:ETBReplacement:Other:ChooseColor SVar:ChooseColor:DB$ ChooseColor | Defined$ You | SpellDescription$ As CARDNAME enters, choose a color. | AILogic$ MostProminentComputerControls T:Mode$ Always | IsPresent$ Permanent.YouCtrl+ChosenColor | PresentCompare$ EQ0 | TriggerZones$ Battlefield | Execute$ TrigSacrifice | TriggerDescription$ When you control no permanents of the chosen color, sacrifice CARDNAME. -SVar:TrigSacrifice:AB$ Sacrifice | Cost$ 0 +SVar:TrigSacrifice:DB$ Sacrifice SVar:NeedsToPlay:Permanent.nonColorless+YouCtrl Oracle:As Lurebound Scarecrow enters, choose a color.\nWhen you control no permanents of the chosen color, sacrifice Lurebound Scarecrow. diff --git a/forge-gui/res/cardsfolder/m/mage_hunters_onslaught.txt b/forge-gui/res/cardsfolder/m/mage_hunters_onslaught.txt index 2f758976bd1..611966b31a7 100644 --- a/forge-gui/res/cardsfolder/m/mage_hunters_onslaught.txt +++ b/forge-gui/res/cardsfolder/m/mage_hunters_onslaught.txt @@ -3,6 +3,6 @@ ManaCost:2 B B Types:Sorcery A:SP$ Destroy | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | SubAbility$ DBEffect | SpellDescription$ Destroy target creature or planeswalker. SVar:DBEffect:DB$ Effect | Triggers$ TrigBlocking -SVar:TrigBlocking:Mode$ AttackerBlocked | Execute$ TrigLoseLife | TriggerDescription$ Whenever a creature blocks this turn, its controller loses 1 life. +SVar:TrigBlocking:Mode$ Blocks | Execute$ TrigLoseLife | TriggerDescription$ Whenever a creature blocks this turn, its controller loses 1 life. SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredBlockerController | LifeAmount$ 1 Oracle:Destroy target creature or planeswalker.\nWhenever a creature blocks this turn, its controller loses 1 life. diff --git a/forge-gui/res/cardsfolder/m/myr_retriever.txt b/forge-gui/res/cardsfolder/m/myr_retriever.txt index 2ce6a896830..de942933fca 100644 --- a/forge-gui/res/cardsfolder/m/myr_retriever.txt +++ b/forge-gui/res/cardsfolder/m/myr_retriever.txt @@ -3,6 +3,6 @@ ManaCost:2 Types:Artifact Creature Myr PT:1/1 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME dies, return another target artifact card from your graveyard to your hand. -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Artifact.Other | TargetsWithDefinedController$ TriggeredCardController | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Artifact.Other | TargetsWithDefinedController$ TriggeredCardController SVar:SacMe:1 Oracle:When Myr Retriever dies, return another target artifact card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/m/mystic_barrier.txt b/forge-gui/res/cardsfolder/m/mystic_barrier.txt index edaab794f00..90ccd62e9ea 100644 --- a/forge-gui/res/cardsfolder/m/mystic_barrier.txt +++ b/forge-gui/res/cardsfolder/m/mystic_barrier.txt @@ -3,7 +3,7 @@ ManaCost:4 W Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChooseDirection | TriggerDescription$ When CARDNAME enters or at the beginning of your upkeep, choose left or right. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChooseDirection | Secondary$ True | TriggerDescription$ When CARDNAME enters or at the beginning of your upkeep, choose left or right. -SVar:TrigChooseDirection:AB$ ChooseDirection | Cost$ 0 +SVar:TrigChooseDirection:DB$ ChooseDirection S:Mode$ CantAttack | DefenderNotNearestToYouInChosenDirection$ True | Description$ Each player may attack only the nearest opponent in the last chosen direction and planeswalkers controlled by that opponent. AI:RemoveDeck:Random SVar:NonStackingEffect:True diff --git a/forge-gui/res/cardsfolder/p/paleoloth.txt b/forge-gui/res/cardsfolder/p/paleoloth.txt index fb3abf8e089..1575b06ea36 100644 --- a/forge-gui/res/cardsfolder/p/paleoloth.txt +++ b/forge-gui/res/cardsfolder/p/paleoloth.txt @@ -3,5 +3,5 @@ ManaCost:4 G G Types:Creature Beast PT:5/5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.powerGE5+Other+YouCtrl | OptionalDecider$ You | TriggerZones$ Battlefield | Execute$ TrigChange | TriggerDescription$ Whenever another creature you control with power 5 or greater enters, you may return target creature card from your graveyard to your hand. -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouCtrl | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouCtrl Oracle:Whenever another creature you control with power 5 or greater enters, you may return target creature card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/p/phyrexian_boon.txt b/forge-gui/res/cardsfolder/p/phyrexian_boon.txt index 091bfad0f8b..c4d3b640ed9 100644 --- a/forge-gui/res/cardsfolder/p/phyrexian_boon.txt +++ b/forge-gui/res/cardsfolder/p/phyrexian_boon.txt @@ -3,6 +3,6 @@ ManaCost:2 B Types:Enchantment Aura K:Enchant creature A:SP$ Attach | ValidTgts$ Creature | AILogic$ SpecificCard | AIValid$ Card.Black -S:Mode$ Continuous | Affected$ Creature.EnchantedBy+Black | AddPower$ 2 | AddToughness$ 1 | Description$ Enchanted creature gets +2/+1 as long as it's black. -S:Mode$ Continuous | Affected$ Creature.EnchantedBy+nonBlack | AddPower$ -1 | AddToughness$ -2 | Description$ Otherwise, it gets -1/-2. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy+Black | AddPower$ 2 | AddToughness$ 1 | Description$ Enchanted creature gets +2/+1 as long as it's black. Otherwise, it gets -1/-2. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy+nonBlack | AddPower$ -1 | AddToughness$ -2 | Secondary$ True Oracle:Enchant creature\nEnchanted creature gets +2/+1 as long as it's black. Otherwise, it gets -1/-2. diff --git a/forge-gui/res/cardsfolder/r/reya_dawnbringer.txt b/forge-gui/res/cardsfolder/r/reya_dawnbringer.txt index 729ec682704..9cacdb5e1d7 100644 --- a/forge-gui/res/cardsfolder/r/reya_dawnbringer.txt +++ b/forge-gui/res/cardsfolder/r/reya_dawnbringer.txt @@ -4,5 +4,5 @@ Types:Legendary Creature Angel PT:4/6 K:Flying T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ At the beginning of your upkeep, you may return target creature card from your graveyard to the battlefield. -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl Oracle:Flying\nAt the beginning of your upkeep, you may return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/s/seal_of_strength.txt b/forge-gui/res/cardsfolder/s/seal_of_strength.txt index 88d2de4d604..b4c4cb24d90 100644 --- a/forge-gui/res/cardsfolder/s/seal_of_strength.txt +++ b/forge-gui/res/cardsfolder/s/seal_of_strength.txt @@ -1,6 +1,6 @@ Name:Seal of Strength ManaCost:G Types:Enchantment -A:AB$ Pump | Cost$ 0 Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +3 | NumDef$ +3 | SpellDescription$ Target creature gets +3/+3 until end of turn. +A:AB$ Pump | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +3 | NumDef$ +3 | SpellDescription$ Target creature gets +3/+3 until end of turn. SVar:PlayMain1:TRUE Oracle:Sacrifice Seal of Strength: Target creature gets +3/+3 until end of turn. diff --git a/forge-gui/res/cardsfolder/s/sun_titan.txt b/forge-gui/res/cardsfolder/s/sun_titan.txt index 390cf883f87..68e678c4f53 100644 --- a/forge-gui/res/cardsfolder/s/sun_titan.txt +++ b/forge-gui/res/cardsfolder/s/sun_titan.txt @@ -5,6 +5,6 @@ PT:6/6 K:Vigilance T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME enters or attacks, you may return target permanent card with mana value 3 or less from your graveyard to the battlefield. T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChange | TriggerZones$ Battlefield | OptionalDecider$ You | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters or attacks, you may return target permanent card with mana value 3 or less from your graveyard to the battlefield. -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Permanent.YouCtrl+cmcLE3 | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Permanent.YouCtrl+cmcLE3 SVar:HasAttackEffect:TRUE Oracle:Vigilance\nWhenever Sun Titan enters or attacks, you may return target permanent card with mana value 3 or less from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/s/swashbuckler_extraordinaire.txt b/forge-gui/res/cardsfolder/s/swashbuckler_extraordinaire.txt index 95def3f9642..7940eb58594 100644 --- a/forge-gui/res/cardsfolder/s/swashbuckler_extraordinaire.txt +++ b/forge-gui/res/cardsfolder/s/swashbuckler_extraordinaire.txt @@ -6,10 +6,10 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigTreasure:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You T:Mode$ AttackersDeclared | AttackingPlayer$ You | Execute$ TrigSac | TriggerZones$ Battlefield | TriggerDescription$ Whenever you attack, you may sacrifice one or more Treasures. When you do, up to that many target creatures gain double strike until end of turn. SVar:TrigSac:DB$ Sacrifice | Defined$ You | Amount$ X | SacValid$ Treasure | SacMessage$ treasure | Optional$ True | RememberSacrificed$ True | SubAbility$ TrigImmediateTrig -SVar:TrigImmediateTrig:DB$ ImmediateTrigger | Execute$ DBPump | TriggerDescription$ When you do, up to that many target creatures gain double strike until end of turn. -SVar:DBPump:DB$ Pump | ValidTgts$ Creature | KW$ Double Strike | TargetMin$ 0 | TargetMax$ DBSize | SubAbility$ DBCleanup | TgtPrompt$ Select target creatures | StackDescription$ {c:Targeted} gain double strike until end of turn. | SpellDescription$ Up to that many target creatures gain double strike until end of turn. +SVar:TrigImmediateTrig:DB$ ImmediateTrigger | Execute$ DBPump | ConditionDefined$ RememberedLKI | ConditionPresent$ Card | RememberObjects$ RememberedLKI | SubAbility$ DBCleanup | TriggerDescription$ When you do, up to that many target creatures gain double strike until end of turn. +SVar:DBPump:DB$ Pump | ValidTgts$ Creature | KW$ Double Strike | TargetMin$ 0 | TargetMax$ DBSize | TgtPrompt$ Select target creatures | StackDescription$ {c:Targeted} gain double strike until end of turn. | SpellDescription$ Up to that many target creatures gain double strike until end of turn. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:DBSize:Count$RememberedSize +SVar:DBSize:TriggerRemembered$Amount SVar:X:Count$Valid Treasure.YouCtrl AI:RemoveDeck:All DeckHas:Ability$Token|Sacrifice & Type$Treasure|Artifact diff --git a/forge-gui/res/cardsfolder/t/talon_gates.txt b/forge-gui/res/cardsfolder/t/talon_gates.txt index aa0a1bf9ae7..df7ee9ae3f7 100644 --- a/forge-gui/res/cardsfolder/t/talon_gates.txt +++ b/forge-gui/res/cardsfolder/t/talon_gates.txt @@ -1,7 +1,7 @@ Name:Talon Gates ManaCost:no cost Types:Plane Dominaria -A:AB$ ChangeZone | Cost$ 0 | Origin$ Hand | Destination$ Exile | ChangeType$ Card.nonLand+YouCtrl | DefinedPlayer$ You | RememberChanged$ True | SorcerySpeed$ True | ActivationZone$ Command | SubAbility$ TimeInGates | StackDescription$ Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its mana value. | SpellDescription$ Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its mana value. If the exiled card doesn't have suspend, it gains suspend. +A:AB$ ChangeZone | Cost$ 0 | Origin$ Hand | Destination$ Exile | ChangeType$ Card.nonLand+YouCtrl | DefinedPlayer$ You | RememberChanged$ True | SorcerySpeed$ True | ActivationZone$ Command | SubAbility$ TimeInGates | StackDescription$ REP Any time you could cast a sorcery, you may exile_{p:You} exiles & your hand_their hand & , where X is its mana value._. & If the_The & doesn't have suspend, it gains suspend._gains suspend if it doesn't have suspend. | SpellDescription$ Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its mana value. If the exiled card doesn't have suspend, it gains suspend. # Removed reminder text because it's too long for SA choice window. Add back when we wrap SA choices text. (At the beginning of its owner's upkeep, they remove a time counter. When the last is removed, the player casts it without paying its mana cost. If it's a creature, it has haste.) SVar:TimeInGates:DB$ PutCounter | Defined$ Remembered | CounterType$ TIME | CounterNum$ GateX | SubAbility$ GiveSuspend | TgtZone$ Exile | StackDescription$ None SVar:GiveSuspend:DB$ PumpAll | ValidCards$ Card.IsRemembered+withoutSuspend | KW$ Suspend | PumpZone$ Exile | Duration$ Permanent | SubAbility$ DBCleanup | StackDescription$ If it doesn't have suspend, it gains suspend. diff --git a/forge-gui/res/cardsfolder/t/tethmos_high_priest.txt b/forge-gui/res/cardsfolder/t/tethmos_high_priest.txt index 2da3ea01960..1a6c558a9d2 100644 --- a/forge-gui/res/cardsfolder/t/tethmos_high_priest.txt +++ b/forge-gui/res/cardsfolder/t/tethmos_high_priest.txt @@ -3,5 +3,5 @@ ManaCost:2 W Types:Creature Cat Cleric PT:2/3 T:Mode$ SpellCast | ValidActivatingPlayer$ You | TargetsValid$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigChange | TriggerDescription$ Heroic — Whenever you cast a spell that targets CARDNAME, return target creature card with mana value 2 or less from your graveyard to the battlefield. -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn+cmcLE2 | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn+cmcLE2 Oracle:Heroic — Whenever you cast a spell that targets Tethmos High Priest, return target creature card with mana value 2 or less from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/t/timely_hordemate.txt b/forge-gui/res/cardsfolder/t/timely_hordemate.txt index 3ec7f461d22..4d0e03a8d2c 100644 --- a/forge-gui/res/cardsfolder/t/timely_hordemate.txt +++ b/forge-gui/res/cardsfolder/t/timely_hordemate.txt @@ -4,5 +4,5 @@ Types:Creature Human Warrior PT:3/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ RaidTest | Execute$ TrigChange | TriggerDescription$ Raid — When CARDNAME enters, if you attacked this turn, return target creature card with mana value 2 or less from your graveyard to the battlefield. SVar:RaidTest:Count$AttackersDeclared -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl+cmcLE2 | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl+cmcLE2 Oracle:Raid — When Timely Hordemate enters, if you attacked this turn, return target creature card with mana value 2 or less from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/adrenaline_jockey.txt b/forge-gui/res/cardsfolder/upcoming/adrenaline_jockey.txt new file mode 100644 index 00000000000..b09402e0f3e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/adrenaline_jockey.txt @@ -0,0 +1,9 @@ +Name:Adrenaline Jockey +ManaCost:2 R +Types:Creature Minotaur Pilot +PT:3/3 +T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player.NonActive | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever a player casts a spell, if it's not their turn, this creature deals 4 damage to them. +SVar:TrigDealDamage:DB$ DealDamage | Defined$ TriggeredPlayer | NumDmg$ 4 +T:Mode$ AbilityCast | ValidActivatingPlayer$ You | ValidSA$ Activated.Exhaust | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you activate an exhaust ability, put a +1/+1 counter on this creature. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +Oracle:Whenever a player casts a spell, if it's not their turn, this creature deals 4 damage to them.\nWhenever you activate an exhaust ability, put a +1/+1 counter on this creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/bounce_off.txt b/forge-gui/res/cardsfolder/upcoming/bounce_off.txt new file mode 100644 index 00000000000..329f33a6427 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/bounce_off.txt @@ -0,0 +1,5 @@ +Name:Bounce Off +ManaCost:U +Types:Instant +A:SP$ ChangeZone | ValidTgts$ Creature,Vehicle | TgtPrompt$ Select target creature or Vehicle | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target creature or Vehicle to its owner's hand. +Oracle:Return target creature or Vehicle to its owner's hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/broodheart_engine.txt b/forge-gui/res/cardsfolder/upcoming/broodheart_engine.txt new file mode 100644 index 00000000000..8923c863e7b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/broodheart_engine.txt @@ -0,0 +1,8 @@ +Name:Broodheart Engine +ManaCost:B G +Types:Artifact +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigSurveil | TriggerDescription$ At the beginning of your upkeep, surveil 1. +SVar:TrigSurveil:DB$ Surveil | Amount$ 1 +A:AB$ ChangeZone | Cost$ 2 B G T Sac<1/CARDNAME> | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn,Vehicle.YouOwn | SorcerySpeed$ True | SpellDescription$ Return target creature or Vehicle card from your graveyard to the battlefield. Activate only as a sorcery. +DeckHas:Ability$Surveil|Sacrifice|Graveyard +Oracle:At the beginning of your upkeep, surveil 1.\n{2}{B}{G}, {T}, Sacrifice this artifact: Return target creature or Vehicle card from your graveyard to the battlefield. Activate only as a sorcery. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/burnout_bashtronaut.txt b/forge-gui/res/cardsfolder/upcoming/burnout_bashtronaut.txt new file mode 100644 index 00000000000..84997ceab05 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/burnout_bashtronaut.txt @@ -0,0 +1,9 @@ +Name:Burnout Bashtronaut +ManaCost:R +Types:Creature Goblin Warrior +PT:1/1 +K:Menace +K:Start your engines +A:AB$ Pump | Cost$ 2 | NumAtt$ +1 | SpellDescription$ This creature gets +1/+0 until end of turn. +S:Mode$ Continuous | Condition$ MaxSpeed | Affected$ Card.Self | AddKeyword$ Double Strike | Description$ Max speed — This creature has double strike. +Oracle:Menace\nStart your engines! (If you have no speed, it starts at 1. It increases once on each of your turns when an opponent loses life. Max speed is 4.)\n{2}: This creature gets +1/+0 until end of turn.\nMax speed — This creature has double strike. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/caelorna_coral_tyrant.txt b/forge-gui/res/cardsfolder/upcoming/caelorna_coral_tyrant.txt new file mode 100644 index 00000000000..4eb3a51adf3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/caelorna_coral_tyrant.txt @@ -0,0 +1,5 @@ +Name:Caelorna, Coral Tyrant +ManaCost:1 U +Types:Legendary Creature Octopus +PT:0/8 +Oracle: \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/crash_and_burn.txt b/forge-gui/res/cardsfolder/upcoming/crash_and_burn.txt new file mode 100644 index 00000000000..cd7fd2c4540 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/crash_and_burn.txt @@ -0,0 +1,7 @@ +Name:Crash and Burn +ManaCost:3 R +Types:Instant +A:SP$ Charm | Choices$ DBDestroy,DBDealDamage +SVar:DBDestroy:DB$ Destroy | ValidTgts$ Vehicle | TgtPrompt$ Select target Vehicle | SpellDescription$ Destroy target Vehicle. +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ 6 | SpellDescription$ CARDNAME deals 6 damage to target creature or planeswalker. +Oracle:Choose one —\n• Destroy target Vehicle.\n• Crash and Burn deals 6 damage to target creature or planeswalker. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/debris_beetle.txt b/forge-gui/res/cardsfolder/upcoming/debris_beetle.txt new file mode 100644 index 00000000000..c3a2e9046b2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/debris_beetle.txt @@ -0,0 +1,11 @@ +Name:Debris Beetle +ManaCost:2 B G +Types:Artifact Vehicle +PT:6/6 +K:Trample +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigLoseLife | TriggerDescription$ When this Vehicle enters, each opponent loses 3 life and you gain 3 life. +SVar:TrigLoseLife:DB$ LoseLife | LifeAmount$ 3 | Defined$ Opponent | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 +K:Crew:2 +DeckHas:Ability$LifeGain +Oracle:Trample\nWhen this Vehicle enters, each opponent loses 3 life and you gain 3 life.\nCrew 2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/diversion_unit.txt b/forge-gui/res/cardsfolder/upcoming/diversion_unit.txt index 01469375ba9..6b60c86861a 100644 --- a/forge-gui/res/cardsfolder/upcoming/diversion_unit.txt +++ b/forge-gui/res/cardsfolder/upcoming/diversion_unit.txt @@ -3,6 +3,6 @@ ManaCost:1 U Types:Artifact Creature Robot PT:2/1 K:Flying -A:AB$ Counter | Cost$ U Sac<1/CARDNAME> | TargetType$ Spell | ValidTgts$ Instant,Sorcery | TgtPrompt$ Select target instant or sorcery spell | UnlessCost$ 3 | SpellDescription$ Counter target instant or sorcery spell unless its controller pays {3}. +A:AB$ Counter | Cost$ U Sac<1/CARDNAME/this creature> | TargetType$ Spell | ValidTgts$ Instant,Sorcery | TgtPrompt$ Select target instant or sorcery spell | UnlessCost$ 3 | SpellDescription$ Counter target instant or sorcery spell unless its controller pays {3}. DeckHas:Ability$Sacrifice Oracle:Flying\n{U}, Sacrifice this creature: Counter target instant or sorcery spell unless its controller pays {3}. diff --git a/forge-gui/res/cardsfolder/upcoming/dracosaur_auxiliary.txt b/forge-gui/res/cardsfolder/upcoming/dracosaur_auxiliary.txt new file mode 100644 index 00000000000..0f9145ba805 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dracosaur_auxiliary.txt @@ -0,0 +1,10 @@ +Name:Dracosaur Auxiliary +ManaCost:4 R R +Types:Creature Dinosaur Dragon Mount +PT:4/4 +K:Flying +K:Haste +T:Mode$ Attacks | ValidCard$ Card.Self+IsSaddled | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever this creature attacks while saddled, it deals 2 damage to any target. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 2 +K:Saddle:3 +Oracle:Flying, haste\nWhenever this creature attacks while saddled, it deals 2 damage to any target.\nSaddle 3 (Tap any number of other creatures you control with total power 3 or more: This Mount becomes saddled until end of turn. Saddle only as a sorcery.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/flood_the_engine.txt b/forge-gui/res/cardsfolder/upcoming/flood_the_engine.txt new file mode 100644 index 00000000000..0a386cbc223 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/flood_the_engine.txt @@ -0,0 +1,9 @@ +Name:Flood the Engine +ManaCost:2 U +Types:Enchantment Aura +K:Enchant creature or Vehicle +A:SP$ Attach | ValidTgts$ Creature,Vehicle | AILogic$ KeepTapped +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigTap | TriggerDescription$ When this Aura enters, tap enchanted permanent. +SVar:TrigTap:DB$ Tap | Defined$ Enchanted +S:Mode$ Continuous | Affected$ Permanent.AttachedBy | RemoveAllAbilities$ True | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ Enchanted permanent loses all abilities and doesn't untap during its controller's untap step. +Oracle:Enchant creature or Vehicle\nWhen this Aura enters, tap enchanted permanent.\nEnchanted permanent loses all abilities and doesn't untap during its controller's untap step. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/fuel_the_flames.txt b/forge-gui/res/cardsfolder/upcoming/fuel_the_flames.txt new file mode 100644 index 00000000000..1cb8ec15f60 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/fuel_the_flames.txt @@ -0,0 +1,6 @@ +Name:Fuel the Flames +ManaCost:2 R +Types:Instant +A:SP$ DamageAll | NumDmg$ 2 | ValidCards$ Creature | ValidDescription$ each creature. | SpellDescription$ CARDNAME deals 2 damage to each creature. +K:Cycling:2 +Oracle:Fuel the Flames deals 2 damage to each creature.\nCycling {2} ({2}, Discard this card: Draw a card.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/gastal_thrillroller.txt b/forge-gui/res/cardsfolder/upcoming/gastal_thrillroller.txt new file mode 100644 index 00000000000..08a3670ddba --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gastal_thrillroller.txt @@ -0,0 +1,13 @@ +Name:Gastal Thrillroller +ManaCost:2 R +Types:Artifact Vehicle +PT:4/2 +K:Trample +K:Haste +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigAnimate | TriggerDescription$ When this Vehicle enters, it becomes an artifact creature until end of turn. +SVar:TrigAnimate:DB$ Animate | Defined$ Self | Types$ Artifact,Creature +K:Crew:2 +A:AB$ ChangeZone | Cost$ 2 R Discard<1/Card> | Origin$ Graveyard | Destination$ Battlefield | WithCountersType$ FINALITY | ActivationZone$ Graveyard | SorcerySpeed$ True | SpellDescription$ Return this card from your graveyard to the battlefield with a finality counter on it. Activate only as a sorcery. +DeckHas:Ability$Discard +DeckHints:Ability$Graveyard|Discard +Oracle:Trample, haste\nWhen this Vehicle enters, it becomes an artifact creature until end of turn.\nCrew 2\n{2}{R}, Discard a card: Return this card from your graveyard to the battlefield with a finality counter on it. Activate only as a sorcery. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/gonti_night_minister.txt b/forge-gui/res/cardsfolder/upcoming/gonti_night_minister.txt new file mode 100644 index 00000000000..f5e9496d3a2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gonti_night_minister.txt @@ -0,0 +1,13 @@ +Name:Gonti, Night Minister +ManaCost:2 B B +Types:Legendary Creature Aetherborn Rogue +PT:3/4 +T:Mode$ SpellCast | ValidCard$ Card | ValidSAonCard$ Spell.YouDontOwn | ValidActivatingPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigTreasure | TriggerDescription$ Whenever a player casts a spell they don't own, that player creates a Treasure token. +SVar:TrigTreasure:DB$ Token | TokenScript$ c_a_treasure_sac | TokenOwner$ TriggeredActivator +T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ Opponent | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ Whenever a creature deals combat damage to one of your opponents, its controller looks at the top card of that opponent's library and exiles it face down. They may play that card for as long as it remains exiled. Mana of any type can be spent to cast a spell this way. +SVar:TrigDig:DB$ Dig | DigNum$ 1 | Defined$ TriggeredTarget | ForceReveal$ TriggeredSourceController | DefinedExiler$ TriggeredSourceController | ChangeNum$ All | DestinationZone$ Exile | ExileFaceDown$ True | RememberChanged$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ STPlay | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | EffectOwner$ TriggeredSourceController | Duration$ Permanent +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:STPlay:Mode$ Continuous | MayLookAt$ You | MayPlay$ True | MayPlayIgnoreType$ True | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play this card for as long as it remains exiled, and mana of any type can be spent to cast it. +DeckHas:Ability$Token +Oracle:Whenever a player casts a spell they don't own, that player creates a Treasure token.\nWhenever a creature deals combat damage to one of your opponents, its controller looks at the top card of that opponent's library and exiles it face down. They may play that card for as long as it remains exiled. Mana of any type can be spent to cast a spell this way. diff --git a/forge-gui/res/cardsfolder/upcoming/greenbelt_guardian.txt b/forge-gui/res/cardsfolder/upcoming/greenbelt_guardian.txt new file mode 100644 index 00000000000..fcf63ee8524 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/greenbelt_guardian.txt @@ -0,0 +1,8 @@ +Name:Greenbelt Guardian +ManaCost:1 G +Types:Creature Elf Ranger +PT:2/2 +A:AB$ Pump | Cost$ G | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Trample | SpellDescription$ Target creature gains trample until end of turn. +A:AB$ PutCounter | Cost$ 3 G | Defined$ Self | CounterType$ P1P1 | CounterNum$ 3 | Exhaust$ True | SpellDescription$ Put three +1/+1 counters on this creature. (Activate each exhaust ability only once.) +DeckHas:Ability$Counters +Oracle:{G}: Target creature gains trample until end of turn.\nExhaust — {3}{G}: Put three +1/+1 counters on this creature. (Activate each exhaust ability only once.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/guardian_sunmare.txt b/forge-gui/res/cardsfolder/upcoming/guardian_sunmare.txt new file mode 100644 index 00000000000..ed2e6650d71 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/guardian_sunmare.txt @@ -0,0 +1,9 @@ +Name:Guardian Sunmare +ManaCost:3 W W +Types:Creature Horse Mount +PT:5/5 +K:Ward:2 +T:Mode$ Attacks | ValidCard$ Card.Self+IsSaddled | TriggerZones$ Battlefield | Execute$ TrigChangeZone | TriggerDescription$ Whenever this creature attacks while saddled, search your library for a nonland permanent card with mana value 3 or less, put it onto the battlefield, then shuffle. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Permanent.nonLand+cmcLE3 +K:Saddle:4 +Oracle:Ward {2}\nWhenever this creature attacks while saddled, search your library for a nonland permanent card with mana value 3 or less, put it onto the battlefield, then shuffle.\nSaddle 4 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/howlsquad_heavy.txt b/forge-gui/res/cardsfolder/upcoming/howlsquad_heavy.txt new file mode 100644 index 00000000000..689023f2bd1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/howlsquad_heavy.txt @@ -0,0 +1,16 @@ +Name:Howlsquad Heavy +ManaCost:2 R +Types:Creature Goblin Mercenary +PT:2/3 +K:Start your engines +S:Mode$ Continuous | Affected$ Goblin.YouCtrl+Other | AddKeyword$ Haste | Description$ Other Goblins you control have haste. +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ At the beginning of combat on your turn, create a 1/1 red Goblin creature token. That token attacks this combat if able. +SVar:TrigToken:DB$ Token | TokenScript$ r_1_1_goblin | RememberTokens$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ MustAttack | Duration$ UntilEndOfCombat | SubAbility$ DBCleanup +SVar:MustAttack:Mode$ MustAttack | ValidCreature$ Card.IsRemembered | Description$ This creature attacks this combat if able. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +A:AB$ Mana | PrecostDesc$ Max speed — | Cost$ T | Activation$ MaxSpeed | Produced$ R | Amount$ X | SpellDescription$ Add {R} for each Goblin you control. +SVar:X:Count$Valid Goblin.YouCtrl +DeckHas:Ability$Token +DeckHints:Type$Goblin +Oracle:Start your engines!\nOther Goblins you control have haste.\nAt the beginning of combat on your turn, create a 1/1 red Goblin creature token. That token attacks this combat if able.\nMax speed — {T}: Add {R} for each Goblin you control. diff --git a/forge-gui/res/cardsfolder/upcoming/loxodon_surveyor.txt b/forge-gui/res/cardsfolder/upcoming/loxodon_surveyor.txt index 9b3ba33d768..8c739fe2d28 100644 --- a/forge-gui/res/cardsfolder/upcoming/loxodon_surveyor.txt +++ b/forge-gui/res/cardsfolder/upcoming/loxodon_surveyor.txt @@ -3,5 +3,5 @@ ManaCost:2 G Types:Creature Elephant Scout PT:3/3 K:Start your engines -A:AB$ Draw | Cost$ 3 ExileFromGrave<1/CARDNAME> | ActivationZone$ Graveyard | Activation$ MaxSpeed | PrecostDesc$ Max speed — | SpellDescription$ Draw a card. +A:AB$ Draw | Cost$ 3 ExileFromGrave<1/CARDNAME/this card> | ActivationZone$ Graveyard | Activation$ MaxSpeed | PrecostDesc$ Max speed — | SpellDescription$ Draw a card. Oracle:Start your engines! (If you have no speed, it starts at 1. It increases once on each of your turns when an opponent loses life. Max speed is 4.)\nMax speed — {3}, Exile this card from your graveyard: Draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/lumbering_worldwagon.txt b/forge-gui/res/cardsfolder/upcoming/lumbering_worldwagon.txt new file mode 100644 index 00000000000..9b0b4388527 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/lumbering_worldwagon.txt @@ -0,0 +1,11 @@ +Name:Lumbering Worldwagon +ManaCost:2 G +Types:Artifact Vehicle +PT:*/4 +S:Mode$ Continuous | CharacteristicDefining$ True | SetPower$ X | Description$ This Vehicle's power is equal to the number of lands you control. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ Whenever this Vehicle enters or attacks, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerZones$ Battlefield | OptionalDecider$ You | Secondary$ True | TriggerDescription$ Whenever this Vehicle enters or attacks, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 1 +K:Crew:4 +SVar:X:Count$Valid Land.YouCtrl +Oracle:This Vehicle's power is equal to the number of lands you control.\nWhenever this Vehicle enters or attacks, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle.\nCrew 4 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/maximum_overdrive.txt b/forge-gui/res/cardsfolder/upcoming/maximum_overdrive.txt new file mode 100644 index 00000000000..3ade8f964e0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/maximum_overdrive.txt @@ -0,0 +1,6 @@ +Name:Maximum Overdrive +ManaCost:1 B +Types:Instant +A:SP$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPump | SpellDescription$ Put a +1/+1 counter on target creature. It gains deathtouch and indestructible until end of turn. +SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ Deathtouch & Indestructible +Oracle:Put a +1/+1 counter on target creature. It gains deathtouch and indestructible until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/mimeoplasm_revered_one.txt b/forge-gui/res/cardsfolder/upcoming/mimeoplasm_revered_one.txt new file mode 100644 index 00000000000..f01842f00ef --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mimeoplasm_revered_one.txt @@ -0,0 +1,14 @@ +Name:Mimeoplasm, Revered One +ManaCost:X B G U +Types:Legendary Creature Ooze +PT:0/0 +R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplaceWith$ DBChangeZone | ReplacementResult$ Updated | Description$ As NICKNAME enters, exile up to X creature cards from your graveyard. It enters with three +1/+1 counters on it for each creature card exiled this way. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ChangeType$ Creature.YouOwn | SelectPrompt$ Select up to X creature cards from your graveyard to exile | ChangeNum$ X | Hidden$ True | RememberChanged$ True | ETB$ True | SubAbility$ DBPutCounter +SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ Y | ETB$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +A:AB$ Clone | Cost$ X | ValidTgts$ Creature.ExiledWithSource | TgtZone$ Exile | TgtPrompt$ Select target creature card exiled with CARDNAME | GainThisAbility$ True | SetPower$ 0 | SetToughness$ 0 | SpellDescription$ NICKNAME becomes a copy of target creature card exiled with it, except it's 0/0 and has this ability. +SVar:X:Count$xPaid +SVar:Y:Remembered$Amount/Times.3 +DeckHas:Ability$Graveyard|Counters +DeckHints:Ability$Mill|Graveyard +Oracle:As Mimeoplasm enters, exile up to X creature cards from your graveyard. It enters with three +1/+1 counters on it for each creature card exiled this way.\n{2}: Mimeoplasm becomes a copy of target creature card exiled with it, except it's 0/0 and has this ability. diff --git a/forge-gui/res/cardsfolder/upcoming/monument_to_endurance.txt b/forge-gui/res/cardsfolder/upcoming/monument_to_endurance.txt new file mode 100644 index 00000000000..2faa8cc6002 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/monument_to_endurance.txt @@ -0,0 +1,9 @@ +Name:Monument to Endurance +ManaCost:3 +Types:Artifact +T:Mode$ Discarded | ValidCard$ Card.YouOwn | TriggerZones$ Battlefield | Execute$ TrigCharm | TriggerDescription$ Whenever you discard a card, ABILITY +SVar:TrigCharm:DB$ Charm | Choices$ DBDraw,DBToken,DBLoseLife | ChoiceRestriction$ ThisTurn | CharmNum$ 1 +SVar:DBDraw:DB$ Draw | SpellDescription$ Draw a card. +SVar:DBToken:DB$ Token | TokenScript$ c_a_treasure_sac | SpellDescription$ Create a Treasure token. +SVar:DBLoseLife:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 3 | SpellDescription$ Each opponent loses 3 life. +Oracle:Whenever you discard a card, choose one that hasn't been chosen this turn —\n• Draw a card.\n• Create a Treasure token.\n• Each opponent loses 3 life. diff --git a/forge-gui/res/cardsfolder/upcoming/ooze_patrol.txt b/forge-gui/res/cardsfolder/upcoming/ooze_patrol.txt new file mode 100644 index 00000000000..86fafdf5ff4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ooze_patrol.txt @@ -0,0 +1,10 @@ +Name:Ooze Patrol +ManaCost:3 G +Types:Creature Ooze +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ When this creature enters the battlefield, mill two cards, then put a +1/+1 counter on this creature for each card in your graveyard that is an artifact or creature. +SVar:TrigMill:DB$ Mill | NumCards$ 2 | Defined$ You | SubAbility$ DBPutCounter +SVar:DBPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ X +SVar:X:Count$ValidGraveyard Artifact.YouOwn,Creature.YouOwn +DeckHas:Ability$Graveyard +Oracle:When this creature enters the battlefield, mill two cards, then put a +1/+1 counter on this creature for each card in your graveyard that is an artifact or creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/oviya_automech_artisan.txt b/forge-gui/res/cardsfolder/upcoming/oviya_automech_artisan.txt new file mode 100644 index 00000000000..1acb98b0dc6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/oviya_automech_artisan.txt @@ -0,0 +1,10 @@ +Name:Oviya, Automech Artisan +ManaCost:3 G +Types:Legendary Creature Human Artificer +PT:1/2 +S:Mode$ Continuous | Affected$ Creature.attacking Opponent | AddKeyword$ Trample | Description$ Each creature that's attacking one of your opponents has trample. +A:AB$ ChangeZone | Cost$ G T | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature,Vehicle | ChangeNum$ 1 | RememberChanged$ True | SubAbility$ DBPutCounter | SpellDescription$ You may put a creature or Vehicle card from your hand onto the battlefield. If you put an artifact onto the battlefield this way, put two +1/+1 counters on it. +SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 2 | Defined$ Remembered | ConditionDefined$ Remembered | ConditionPresent$ Artifact | ConditionCompare$ GE1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHints$:Type$Artifact +Oracle:Each creature that's attacking one of your opponents has trample.\n{G}, {T}: You may put a creature or Vehicle card from your hand onto the battlefield. If you put an artifact onto the battlefield this way, put two +1/+1 counters on it. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/pactdoll_terror.txt b/forge-gui/res/cardsfolder/upcoming/pactdoll_terror.txt new file mode 100644 index 00000000000..939f2cda398 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/pactdoll_terror.txt @@ -0,0 +1,10 @@ +Name:Pactdoll Terror +ManaCost:3 B +Types:Artifact Creature Toy +PT:3/4 +T:Mode$ ChangesZone | ValidCard$ Card.Self,Artifact.Other+YouCtrl | Destination$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever this creature or another artifact you control enters, each opponent loses 1 life and you gain 1 life. +SVar:TrigLoseLife:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +SVar:BuffedBy:Artifact +DeckNeeds:Type$Artifact +Oracle:Whenever this creature or another artifact you control enters, each opponent loses 1 life and you gain 1 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/point_the_way.txt b/forge-gui/res/cardsfolder/upcoming/point_the_way.txt new file mode 100644 index 00000000000..d9ac9e8d7d8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/point_the_way.txt @@ -0,0 +1,6 @@ +Name:Point the Way +ManaCost:G +Types:Enchantment +K:Start your engines +A:AB$ ChangeZone | Cost$ 3 G Sac<1/CARDNAME> | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ Count$YourSpeed | Tapped$ True | SpellDescription$ Search your library for up to X basic land cards, where X is your speed. Put those cards onto the battlefield tapped, then shuffle. +Oracle:Start your engines! (If you have no speed, it starts at 1. It increases once on each of your turns when an opponent loses life. Max speed is 4.)\n{3}{G}, Sacrifice this enchantment: Search your library for up to X basic land cards, where X is your speed. Put those cards onto the battlefield tapped, then shuffle. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/radiant_lotus.txt b/forge-gui/res/cardsfolder/upcoming/radiant_lotus.txt new file mode 100644 index 00000000000..d67e541211a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/radiant_lotus.txt @@ -0,0 +1,9 @@ +Name:Radiant Lotus +ManaCost:6 +Types:Artifact +A:AB$ ChooseColor | Cost$ T Sac | XMin$ 1 | Defined$ You | SubAbility$ DBMana | SpellDescription$ Choose a color. Target player adds three mana of the chosen color for each artifact sacrificed this way. +SVar:DBMana:DB$ Mana | ValidTgts$ Player | Produced$ Chosen | Amount$ X +SVar:X:Count$xPaid/Times.3 +SVar:BuffedBy:Artifact +DeckNeeds:Type$Artifact +Oracle:{T}, Sacrifice one or more artifacts: Choose a color. Target player adds three mana of the chosen color for each artifact sacrificed this way. diff --git a/forge-gui/res/cardsfolder/upcoming/regal_imperiosaur.txt b/forge-gui/res/cardsfolder/upcoming/regal_imperiosaur.txt new file mode 100644 index 00000000000..92344bd0384 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/regal_imperiosaur.txt @@ -0,0 +1,8 @@ +Name:Regal Imperiosaur +ManaCost:1 G G +Types:Creature Dinosaur +PT:5/4 +S:Mode$ Continuous | Affected$ Creature.Dinosaur+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Dinosaurs you control get +1/+1. +SVar:PlayMain1:TRUE +SVar:BuffedBy:Dinosaur +Oracle:Other Dinosaurs you control get +1/+1. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/rides_end.txt b/forge-gui/res/cardsfolder/upcoming/rides_end.txt new file mode 100644 index 00000000000..bfa17ed6f80 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rides_end.txt @@ -0,0 +1,6 @@ +Name:Ride's End +ManaCost:4 W +Types:Instant +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 3 | ValidTarget$ Permanent.tapped | EffectZone$ All | Description$ This spell costs {3} less to cast if it targets a tapped permanent. +A:SP$ ChangeZone | ValidTgts$ Creature,Vehicle | TgtPrompt$ Select target creature or enchantment | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target creature or Vehicle. +Oracle:This spell costs {3} less to cast if it targets a tapped permanent.\nExile target creature or Vehicle. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ripclaw_wrangler.txt b/forge-gui/res/cardsfolder/upcoming/ripclaw_wrangler.txt new file mode 100644 index 00000000000..80a0061df4f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ripclaw_wrangler.txt @@ -0,0 +1,8 @@ +Name:Ripclaw Wrangler +ManaCost:3 B +Types:Artifact Vehicle +PT:4/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When this Vehicle enters, each opponent discards a card. +SVar:TrigDiscard:DB$ Discard | Defined$ Opponent | Mode$ TgtChoose +K:Crew:2 +Oracle:When this Vehicle enters, each opponent discards a card.\nCrew 2 (Tap any number of creatures you control with total power 2 or more: This Vehicle becomes an artifact creature until end of turn.) diff --git a/forge-gui/res/cardsfolder/upcoming/rover_blades.txt b/forge-gui/res/cardsfolder/upcoming/rover_blades.txt new file mode 100644 index 00000000000..0a59a1f9839 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rover_blades.txt @@ -0,0 +1,9 @@ +Name:Rover Blades +ManaCost:3 +Types:Artifact Equipment Vehicle +PT:2/2 +K:Double Strike +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ Double Strike | Description$ Equipped creature has double strike. +K:Equip:4 +K:Crew:2 +Oracle:Double strike\nEquipped creature has double strike.\Equip {4}\nCrew 2 (Tap any number of creatures you control with total power 2 or more: This Vehicle becomes an artifact creature until end of turn. Creatures can't be attached to other permanents.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/salvation_engine.txt b/forge-gui/res/cardsfolder/upcoming/salvation_engine.txt new file mode 100644 index 00000000000..af425292f02 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/salvation_engine.txt @@ -0,0 +1,10 @@ +Name:Salvation Engine +ManaCost:4 W +Types:Artifact Vehicle +PT:6/10 +S:Mode$ Continuous | Affected$ Creature.Artifact+YouCtrl+Other | AddPower$ 2 | AddToughness$ 2 | Description$ Other artifact creatures you control get +2/+2. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ Whenever this Vehicle attacks, return up to one target artifact card from your graveyard to the battlefield. +SVar:TrigChangeZone:DB$ ChangeZone | ValidTgts$ Artifact.YouOwn | TgtPrompt$ Choose up to one target artifact card in your graveyard | Origin$ Graveyard | Destination$ Battlefield | TargetMin$ 0 | TargetMax$ 1 +K:Crew:6 +SVar:PlayMain1:TRUE +Oracle:Other artifact creatures you control get +2/+2.\nWhenever this Vehicle attacks, return up to one target artifact card from your graveyard to the battlefield.\nCrew 6 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/scrap_compactor.txt b/forge-gui/res/cardsfolder/upcoming/scrap_compactor.txt index a7cf87db0dc..e7d57567712 100644 --- a/forge-gui/res/cardsfolder/upcoming/scrap_compactor.txt +++ b/forge-gui/res/cardsfolder/upcoming/scrap_compactor.txt @@ -1,7 +1,7 @@ Name:Scrap Compactor ManaCost:1 Types:Artifact -A:AB$ DealDamage | Cost$ 3 T Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SpellDescription$ It deals 3 damage to target creature. -A:AB$ Destroy | Cost$ 6 T Sac<1/CARDNAME> | ValidTgts$ Creature,Vehicle | TgtPrompt$ Select target creature or Vehicle | SpellDescription$ Destroy target creature or Vehicle. +A:AB$ DealDamage | Cost$ 3 T Sac<1/CARDNAME/this artifact> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SpellDescription$ It deals 3 damage to target creature. +A:AB$ Destroy | Cost$ 6 T Sac<1/CARDNAME/this artifact> | ValidTgts$ Creature,Vehicle | TgtPrompt$ Select target creature or Vehicle | SpellDescription$ Destroy target creature or Vehicle. DeckHas:Ability$Sacrifice Oracle:{3}, {T}, Sacrifice this artifact: It deals 3 damage to target creature.\n{6}, {T}, Sacrifice this artifact: Destroy target creature or Vehicle. diff --git a/forge-gui/res/cardsfolder/upcoming/shefet_archfiend.txt b/forge-gui/res/cardsfolder/upcoming/shefet_archfiend.txt new file mode 100644 index 00000000000..e66f3f1e86f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/shefet_archfiend.txt @@ -0,0 +1,10 @@ +Name:Shefet Archfiend +ManaCost:5 B B +Types:Creature Demon +PT:5/5 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerDescription$ When this creature enters, all other creatures get -2/-2 until end of turn. +SVar:TrigPumpAll:DB$ PumpAll | NumAtt$ -2 | NumDef$ -2 | ValidCards$ Creature.StrictlyOther | IsCurse$ True +K:Cycling:2 +SVar:PlayMain1:TRUE +Oracle:Flying\nWhen this creature enters, all other creatures get -2/-2 until end of turn.\nCycling {2} ({2}, Discard this card: Draw a card.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/skyseers_chariot.txt b/forge-gui/res/cardsfolder/upcoming/skyseers_chariot.txt new file mode 100644 index 00000000000..29cd8995457 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/skyseers_chariot.txt @@ -0,0 +1,10 @@ +Name:Skyseer's Chariot +ManaCost:1 W +Types:Artifact Vehicle +PT:3/3 +K:Flying +K:ETBReplacement:Other:DBNameCard +SVar:DBNameCard:DB$ NameCard | Defined$ You | ValidCards$ Card.nonLand | ValidDescription$ nonland | SpellDescription$ As this Vehicle enters, choose a nonland card name. +S:Mode$ RaiseCost | EffectZone$ Battlefield | ValidCard$ Card.NamedCard | ValidSpell$ Activated | Amount$ 2 | Description$ Activated abilities of sources with the chosen name cost {2} more to activate. +K:Crew:2 +Oracle:Flying\nAs this Vehicle enters, choose a nonland card name.\nActivated abilities of sources with the chosen name cost {2} more to activate.\nCrew 2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/skyserpent_seeker.txt b/forge-gui/res/cardsfolder/upcoming/skyserpent_seeker.txt new file mode 100644 index 00000000000..97d6e1ec882 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/skyserpent_seeker.txt @@ -0,0 +1,9 @@ +Name:Skyserpent Seeker +ManaCost:G U +Types:Creature Snake +PT:1/1 +K:Flying +K:Deathtouch +A:AB$ DigUntil | Cost$ 4 | Valid$ Land | ValidDescription$ land | Amount$ 2 | FoundDestination$ Battlefield | Tapped$ True | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | Exhaust$ True | SubABility$ DBPutCounter | SpellDescription$ Reveal cards from the top of your library until you reveal two land cards. Put those land cards onto the battlefield tapped and the rest on the bottom of your library in a random order. Put a +1/+1 counter on this creature. (Activate each exhaust ability only once.) +SVar:DBPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +Oracle:Flying, deathtouch\nExhaust — {4}: Reveal cards from the top of your library until you reveal two land cards. Put those land cards onto the battlefield tapped and the rest on the bottom of your library in a random order. Put a +1/+1 counter on this creature. (Activate each exhaust ability only once.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/spectacular_pileup.txt b/forge-gui/res/cardsfolder/upcoming/spectacular_pileup.txt new file mode 100644 index 00000000000..ef865779c3c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/spectacular_pileup.txt @@ -0,0 +1,7 @@ +Name:Spectacular Pileup +ManaCost:3 W W +Types:Sorcery +A:SP$ AnimateAll | ValidCards$ Creature,Vehicle | RemoveKeywords$ Indestructible | SubAbility$ DBDestroyAll | SpellDescription$ All creatures and Vehicles lose indestructible until end of turn, then destroy all creatures and Vehicles. +SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Creature,Vehicle +K:Cycling:2 +Oracle:All creatures and Vehicles lose indestructible until end of turn, then destroy all creatures and Vehicles.\nCycling {2} ({2}, Discard this card: Draw a card.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/stampeding_scurryfoot.txt b/forge-gui/res/cardsfolder/upcoming/stampeding_scurryfoot.txt new file mode 100644 index 00000000000..6059c4d5782 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/stampeding_scurryfoot.txt @@ -0,0 +1,8 @@ +Name:Stampeding Scurryfoot +ManaCost:G +Types:Creature Mouse +PT:1/1 +A:AB$ PutCounter | Cost$ 3 G | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | Exhaust$ True | SubAbility$ DBToken | SpellDescription$ Put a +1/+1 counter on this creature. Create a 3/3 green Elephant creature token. (Activate each exhaust ability only once.) +SVar:DBToken:DB$ Token | TokenScript$ g_3_3_elephant +DeckHas:Ability$Counters|Token +Oracle:Exhaust — {3}{G}: Put a +1/+1 counter on this creature. Create a 3/3 green Elephant creature token. (Activate each exhaust ability only once.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/unstoppable_plan.txt b/forge-gui/res/cardsfolder/upcoming/unstoppable_plan.txt new file mode 100644 index 00000000000..ebde9e88af8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/unstoppable_plan.txt @@ -0,0 +1,6 @@ +Name:Unstoppable Plan +ManaCost:2 U +Types:Enchantment +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ UntapMerfolk | TriggerDescription$ At the beginning of your end step, untap all nonland permanents you control. +SVar:UntapMerfolk:DB$ UntapAll | ValidCards$ Permanent.nonLand+YouCtrl +Oracle:At the beginning of your end step, untap all nonland permanents you control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/webstrike_elite.txt b/forge-gui/res/cardsfolder/upcoming/webstrike_elite.txt new file mode 100644 index 00000000000..5cfddbf5796 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/webstrike_elite.txt @@ -0,0 +1,10 @@ +Name:Webstrike Elite +ManaCost:G G +Types:Creature Insect Archer +PT:3/3 +K:Reach +K:Cycling:X G G +T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When you cycle this card, destroy up to one target artifact or enchantment with mana value X. +SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact.cmcEQX,Enchantment.cmcEQX | TgtPrompt$ Select up to one target artifact or enchantment with mana value X | TargetMin$ 0 | TargetMax$ 1 +SVar:X:Count$xPaid +Oracle:Reach\nCycling {X}{G}{G} ({X}{G}{G}, Discard this card: Draw a card.)\nWhen you cycle this card, destroy up to one target artifact or enchantment with mana value X. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/wretched_doll.txt b/forge-gui/res/cardsfolder/upcoming/wretched_doll.txt new file mode 100644 index 00000000000..0ff59964d5d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/wretched_doll.txt @@ -0,0 +1,5 @@ +Name:Wretched Doll +Types:Artifact Creature Toy +PT:3/1 +A:AB$ Surveil | Cost$ B T | Amount$ 1 | SpellDescription$ Surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) +Oracle:{B}, {T}: Surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/w/workshop_assistant.txt b/forge-gui/res/cardsfolder/w/workshop_assistant.txt index 16d1cf6bd51..e8d482d59c1 100644 --- a/forge-gui/res/cardsfolder/w/workshop_assistant.txt +++ b/forge-gui/res/cardsfolder/w/workshop_assistant.txt @@ -3,6 +3,6 @@ ManaCost:3 Types:Artifact Creature Construct PT:1/2 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME dies, return another target artifact card from your graveyard to your hand. -SVar:TrigChange:AB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Artifact.Other | TargetsWithDefinedController$ TriggeredCardController | Cost$ 0 +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Artifact.Other | TargetsWithDefinedController$ TriggeredCardController SVar:SacMe:1 Oracle:When Workshop Assistant dies, return another target artifact card from your graveyard to your hand. diff --git a/forge-gui/res/tokenscripts/c_1_1_a_snake_poison.txt b/forge-gui/res/tokenscripts/c_1_1_a_snake_poison.txt index 9d5e0e52cbf..b3dadc03218 100644 --- a/forge-gui/res/tokenscripts/c_1_1_a_snake_poison.txt +++ b/forge-gui/res/tokenscripts/c_1_1_a_snake_poison.txt @@ -3,5 +3,5 @@ ManaCost:no cost Types:Artifact Creature Snake PT:1/1 T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigPoison | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals damage to a player, that player gets a poison counter. -SVar:TrigPoison:AB$ Poison | Cost$ 0 | Defined$ TriggeredTarget | Num$ 1 +SVar:TrigPoison:DB$ Poison | Defined$ TriggeredTarget | Num$ 1 Oracle:Whenever this creature deals damage to a player, that player gets a poison counter.