diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index a8ff585f6ca..29682398b19 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -3460,6 +3460,10 @@ public class AbilityUtils { return doXMath(player.getLandsPlayedThisTurn(), m, source, ctb); } + if (value.contains("SpellsCastThisTurn")) { + return doXMath(player.getSpellsCastThisTurn(), m, source, ctb); + } + if (value.contains("CardsDrawn")) { return doXMath(player.getNumDrawnThisTurn(), m, source, ctb); } diff --git a/forge-gui/res/cardsfolder/upcoming/nimblewright_schematic.txt b/forge-gui/res/cardsfolder/upcoming/nimblewright_schematic.txt new file mode 100644 index 00000000000..33e15551068 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/nimblewright_schematic.txt @@ -0,0 +1,8 @@ +Name:Nimblewright Schematic +ManaCost:2 +Types:Artifact +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield or is put into a graveyard from the battlefield, create a 1/1 colorless Construct artifact creature token. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Secondary$ True | Execute$ TrigToken | Secondary$ True | TriggerDescription$ When CARDNAME enters the battlefield or is put into a graveyard from the battlefield, create a 1/1 colorless Construct artifact creature token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_1_1_a_construct | TokenOwner$ You +DeckHas:Ability$Token +Oracle:When Nimblewright Schematic enters the battlefield or is put into a graveyard from the battlefield, create a 1/1 colorless Construct artifact creature token. diff --git a/forge-gui/res/cardsfolder/upcoming/pact_weapon.txt b/forge-gui/res/cardsfolder/upcoming/pact_weapon.txt new file mode 100644 index 00000000000..f2a68b7f91e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/pact_weapon.txt @@ -0,0 +1,15 @@ +Name:Pact Weapon +ManaCost:3 B +Types:Artifact Equipment +K:Equip:Discard<1/Card> +S:Mode$ Continuous | Affected$ You | IsPresent$ Card.Self+AttachedTo Creature | AddKeyword$ You don't lose the game for having 0 or less life. | Description$ As long as CARDNAME is attached to a creature, you don't lose the game for having 0 or less life. +T:Mode$ Attacks | ValidCard$ Creature.EquippedBy | Execute$ TrigDraw | TriggerDescription$ Whenever equipped creature attacks, draw a card and reveal it. The creature gets +X/+X until end of turn and you lose X life, where X is that card's mana value. +SVar:TrigDraw:DB$ Draw | NumCards$ 1 | Reveal$ True | RememberDrawn$ True | SubAbility$ DBPump +SVar:DBPump:DB$ Pump | Defined$ TriggeredAttacker | NumAtt$ +X | NumDef$ +X | SubAbility$ DBLoseLife +SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X | Defined$ You | SubAbility$ DBClean +SVar:DBClean:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$CardManaCost +SVar:AIPreference:DiscardCost$Card +DeckHas:Ability$Discard +DeckHints:Keyword$Madness & Ability$Delirium +Oracle:As long as Pact Weapon is attached to a creature, you don't lose the game for having 0 or less life.\nWhenever equipped creature attacks, draw a card and reveal it. The creature gets +X/+X until end of turn and you lose X life, where X is that card's mana value.\nEquip—Discard a card. diff --git a/forge-gui/res/cardsfolder/upcoming/poison_the_blade.txt b/forge-gui/res/cardsfolder/upcoming/poison_the_blade.txt new file mode 100644 index 00000000000..4a3c2b390fb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/poison_the_blade.txt @@ -0,0 +1,6 @@ +Name:Poison the Blade +ManaCost:1 G +Types:Instant +A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Deathtouch | SubAbility$ DBDraw | SpellDescription$ Target creature gains deathtouch until end of turn. +SVar:DBDraw:DB$ Draw | SpellDescription$ Draw a card. +Oracle:Target creature gains deathtouch until end of turn.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/pseudodragon_familiar.txt b/forge-gui/res/cardsfolder/upcoming/pseudodragon_familiar.txt new file mode 100644 index 00000000000..3a704d9610b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/pseudodragon_familiar.txt @@ -0,0 +1,7 @@ +Name:Pseudodragon Familiar +ManaCost:2 U +Types:Creature Dragon +PT:2/1 +K:Flying +A:AB$ Pump | Cost$ 2 U | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Flying | SpellDescription$ Target creature gains flying until end of turn. +Oracle:Flying\n{2}{U}: Target creature gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/reckless_barbarian.txt b/forge-gui/res/cardsfolder/upcoming/reckless_barbarian.txt new file mode 100644 index 00000000000..e433c17c5ae --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/reckless_barbarian.txt @@ -0,0 +1,7 @@ +Name:Reckless Barbarian +ManaCost:1 R +Types:Creature Dragon Barbarian +PT:2/2 +A:AB$ Mana | Cost$ Sac<1/CARDNAME> | Produced$ R | Amount$ 2 | SpellDescription$ Add {R}{R}. +AI:RemoveDeck:All +Oracle:Sacrifice Reckless Barbarian: Add {R}{R}. diff --git a/forge-gui/res/cardsfolder/upcoming/rescuer_chwinga.txt b/forge-gui/res/cardsfolder/upcoming/rescuer_chwinga.txt new file mode 100644 index 00000000000..ad4173ccaba --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rescuer_chwinga.txt @@ -0,0 +1,9 @@ +Name:Rescuer Chwinga +ManaCost:1 W +Types:Creature Elemental Spirit +PT:2/2 +K:Flash +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ Natural Shelter — When CARDNAME enters the battlefield, you may return another permanent you control to its owner's hand. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Hidden$ True | AILogic$ Never | Mandatory$ True | ChangeType$ Permanent.Other+YouCtrl +AI:RemoveDeck:Random +Oracle:Flash\nNatural Shelter — When Rescuer Chwinga enters the battlefield, you may return another permanent you control to its owner's hand. diff --git a/forge-gui/res/cardsfolder/upcoming/rug_of_smothering.txt b/forge-gui/res/cardsfolder/upcoming/rug_of_smothering.txt new file mode 100644 index 00000000000..bfbb2864558 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rug_of_smothering.txt @@ -0,0 +1,10 @@ +Name:Rug of Smothering +ManaCost:3 +Types:Artifact Creature Construct +PT:1/3 +K:Flying +T:Mode$ SpellCast | ValidActivatingPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever a player casts a spell, they lose 1 life for each spell they've cast this turn. +SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredActivator | LifeAmount$ X +SVar:X:TriggeredPlayer$SpellsCastThisTurn +AI:RemoveDeck:All +Oracle:Flying\nWhenever a player casts a spell, they lose 1 life for each spell they've cast this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/saddle_of_the_cavalier.txt b/forge-gui/res/cardsfolder/upcoming/saddle_of_the_cavalier.txt new file mode 100644 index 00000000000..455c2e7cc3f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/saddle_of_the_cavalier.txt @@ -0,0 +1,7 @@ +Name:Saddle of the Cavalier +ManaCost:2 G +Types:Artifact Equipment +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 3 | AddToughness$ 3 | Description$ Equipped creature gets +3/+3 and can't be blocked by creatures with power 3 or less. +S:Mode$ CantBlockBy | ValidAttacker$ Creature.EquippedBy | ValidBlocker$ Creature.powerLE3 | Secondary$ True | Description$ Enchanted creature can't be blocked by creatures with power 3 or less. +K:Equip:3 +Oracle:Equipped creature gets +3/+3 and can't be blocked by creatures with power 3 or less.\nEquip {3} diff --git a/forge-gui/res/cardsfolder/upcoming/scouting_hawk.txt b/forge-gui/res/cardsfolder/upcoming/scouting_hawk.txt new file mode 100644 index 00000000000..0496b1c4c49 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/scouting_hawk.txt @@ -0,0 +1,10 @@ +Name:Scouting Hawk +ManaCost:2 W +Types:Creature Bird +PT:1/1 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChange | CheckSVar$ Y | SVarCompare$ GTX | TriggerDescription$ When CARDNAME enters the battlefield, if an opponent controls more lands than you, search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle. +SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Plains.Basic | ChangeNum$ 1 +SVar:X:Count$Valid Land.YouCtrl +SVar:Y:PlayerCountOpponents$HighestValid Land.YouCtrl +Oracle:Flying\nKeen Sight — When Scouting Hawk enters the battlefield, if an opponent controls more lands than you, search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle. diff --git a/forge-gui/res/cardsfolder/upcoming/sharpshooter_elf.txt b/forge-gui/res/cardsfolder/upcoming/sharpshooter_elf.txt new file mode 100644 index 00000000000..c1d23ff1e6f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sharpshooter_elf.txt @@ -0,0 +1,11 @@ +Name:Sharpshooter Elf +ManaCost:2 G +Types:Creature Elf Ranger +PT:*/2 +K:Reach +S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | Description$ CARDNAME's power is equal to the number of creatures you control. +SVar:X:Count$Valid Creature.YouCtrl +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage equal to its power to target creature with flying an opponent controls. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.OppCtrl+withFlying | TgtPrompt$ Select target creature with flying an opponent controls | NumDmg$ X +SVar:X:Count$CardPower +Oracle:Reach\nSharpshooter Elf's power is equal to the number of creatures you control.\nWhen Sharpshooter Elf enters the battlefield, it deals damage equal to its power to target creature with flying an opponent controls. diff --git a/forge-gui/res/cardsfolder/upcoming/steadfast_unicorn.txt b/forge-gui/res/cardsfolder/upcoming/steadfast_unicorn.txt new file mode 100644 index 00000000000..f9407e59c89 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/steadfast_unicorn.txt @@ -0,0 +1,6 @@ +Name:Steadfast Unicorn +ManaCost:W +Types:Creature Unicorn +PT:1/2 +A:AB$ PumpAll | Cost$ 3 W | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | NumDef$ +1 | KW$ Vigilance | PlayerTurn$ True | SpellDescription$ Creatures you control get +1/+1 and gain vigilance until end of turn. Activate only during your turn. +Oracle:{3}{W}: Creatures you control get +1/+1 and gain vigilance until end of turn. Activate only during your turn. diff --git a/forge-gui/res/cardsfolder/upcoming/stoneskin.txt b/forge-gui/res/cardsfolder/upcoming/stoneskin.txt new file mode 100644 index 00000000000..eafcf629b9f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/stoneskin.txt @@ -0,0 +1,7 @@ +Name:Stoneskin +ManaCost:2 W +Types:Enchantment Aura +K:Flash +A:SP$ Attach | ValidTgts$ Creature | AILogic$ Pump +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddToughness$ 10 | Description$ Enchanted creature gets +0/+10. +Oracle:Flash\nEnchant creature\nEnchanted creature gets +0/+10. diff --git a/forge-gui/res/cardsfolder/upcoming/stunning_strike.txt b/forge-gui/res/cardsfolder/upcoming/stunning_strike.txt new file mode 100644 index 00000000000..0863e1d3653 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/stunning_strike.txt @@ -0,0 +1,11 @@ +Name:Stunning Strike +ManaCost:2 U +Types:Enchantment Aura +K:Flash +A:SP$ Attach | ValidTgts$ Creature | AILogic$ Curse +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTap | TriggerDescription$ When CARDNAME enters the battlefield, tap enchanted creature and remove it from combat. +SVar:TrigTap:DB$ Tap | Defined$ Enchanted | SubAbility$ RemCombat +SVar:RemCombat:DB$ RemoveFromCombat | Defined$ Enchanted +S:Mode$ Continuous | Affected$ Creature.nonlegendary+EnchantedBy | AddHiddenKeyword$ This card doesn't untap during your next untap step. | Description$ As long as enchanted creature isn't legendary, it doesn't untap during its controller's untap step. +DeckHints:Type$Creature +Oracle:Flash\nEnchant creature\nWhen Stunning Strike enters the battlefield, tap enchanted creature and remove it from combat.\nAs long as enchanted creature isn't legendary, it doesn't untap during its controller's untap step. diff --git a/forge-gui/res/cardsfolder/upcoming/swashbuckler_extraordinaire.txt b/forge-gui/res/cardsfolder/upcoming/swashbuckler_extraordinaire.txt new file mode 100644 index 00000000000..dbf2fa25702 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/swashbuckler_extraordinaire.txt @@ -0,0 +1,16 @@ +Name:Swashbuckler Extraordinaire +ManaCost:2 R +Types:Creature Dragon Rogue Warrior +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTreasure | TriggerDescription$ When CARDNAME enters the battlefield, create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.") +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:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:DBSize:Count$RememberedSize +SVar:X:Count$Valid Treasure.YouCtrl +DeckHas:Ability$Token|Sacrifice & Type$Treasure +AI:RemoveDeck:All +Oracle:When Swashbuckler Extraordinaire enters the battlefield, create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.")\nWhenever 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. diff --git a/forge-gui/res/cardsfolder/upcoming/zellix_sanity_flayer.txt b/forge-gui/res/cardsfolder/upcoming/zellix_sanity_flayer.txt new file mode 100644 index 00000000000..22f8fdf1a54 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/zellix_sanity_flayer.txt @@ -0,0 +1,10 @@ +Name:Zellix, Sanity Flayer +ManaCost:2 U +Types:Legendary Creature Horror +PT:2/3 +K:Choose a Background +T:Mode$ MilledAll | ValidPlayer$ Player | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Hive Mind — Whenever a player mills one or more creature cards, you create a 1/1 black Horror creature token. +SVar:TrigToken:DB$ Token | TokenScript$ b_1_1_horror +A:AB$ Mill | Cost$ 1 T | NumCards$ 3 | ValidTgts$ Player | TgtPrompt$ Select a player | SpellDescription$ Target player mills three cards. +DeckHas:Ability$Mill|Token +Oracle:Hive Mind — Whenever a player mills one or more creature cards, you create a 1/1 black Horror creature token.\n{1},{T}: Target player mills three cards.\nChoose a Background (You can have a Background as a second commander.) \ No newline at end of file diff --git a/forge-gui/res/tokenscripts/b_1_1_horror.txt b/forge-gui/res/tokenscripts/b_1_1_horror.txt new file mode 100644 index 00000000000..6c9a9e9af20 --- /dev/null +++ b/forge-gui/res/tokenscripts/b_1_1_horror.txt @@ -0,0 +1,6 @@ +Name:Horror Token +ManaCost:no cost +Types:Creature Horror +Colors:black +PT:1/1 +Oracle: