diff --git a/forge-core/src/main/java/forge/card/CardType.java b/forge-core/src/main/java/forge/card/CardType.java index ce6ca332de6..21cf50dc0fc 100644 --- a/forge-core/src/main/java/forge/card/CardType.java +++ b/forge-core/src/main/java/forge/card/CardType.java @@ -204,6 +204,10 @@ public final class CardType implements Comparable, CardTypeView { calculatedType = null; } + public void removeCardTypes() { + coreTypes.clear(); + } + public boolean remove(final Supertype st) { return supertypes.remove(st); } 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 4f02bad1559..4da6445d96d 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -715,7 +715,8 @@ public class AbilityUtils { } val = playerXCount(getDefinedPlayers(card, key, sa), calcX[1], card, ability); } - else if (calcX[0].startsWith("TriggeredPlayer") || calcX[0].startsWith("TriggeredTarget")) { + else if (calcX[0].startsWith("TriggeredPlayer") || calcX[0].startsWith("TriggeredTarget") + || calcX[0].startsWith("TriggeredDefendingPlayer")) { final SpellAbility root = sa.getRootAbility(); Object o = root.getTriggeringObject(AbilityKey.fromString(calcX[0].substring(9))); val = o instanceof Player ? playerXProperty((Player) o, calcX[1], card, ability) : 0; diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java index 949be333a03..df0d3200f98 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -670,6 +670,10 @@ public class CardFactory { state.removeType(CardType.Supertype.Legendary); } + if (sa.hasParam("RemoveCardTypes")) { + state.removeCardTypes(); + } + state.addType(types); if (creatureTypes != null) { diff --git a/forge-game/src/main/java/forge/game/card/CardState.java b/forge-game/src/main/java/forge/game/card/CardState.java index 529b1b2598d..f3e4cb7c365 100644 --- a/forge-game/src/main/java/forge/game/card/CardState.java +++ b/forge-game/src/main/java/forge/game/card/CardState.java @@ -149,6 +149,10 @@ public class CardState extends GameObject implements IHasSVars { } } + public final void removeCardTypes() { + type.removeCardTypes(); + } + public final void setCreatureTypes(Collection ctypes) { if (type.setCreatureTypes(ctypes)) { view.updateType(this); diff --git a/forge-gui/res/cardsfolder/d/doomfall.txt b/forge-gui/res/cardsfolder/d/doomfall.txt index 0bd2cb6a90c..dbb0d448ac5 100644 --- a/forge-gui/res/cardsfolder/d/doomfall.txt +++ b/forge-gui/res/cardsfolder/d/doomfall.txt @@ -2,6 +2,6 @@ Name:Doomfall ManaCost:2 B Types:Sorcery A:SP$ Charm | Cost$ 2 B | Choices$ DBChangeZone1,DBChangeZone2 | Defined$ You -SVar:DBChangeZone1:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Player | DefinedPlayer$ Targeted | Mandatory$ True | ChangeType$ Creature | ChangeNum$ 1 | Hidden$ True | IsCurse$ True | Chooser$ Targeted | SpellDescription$ Target player exiles a creature they control. -SVar:DBChangeZone2:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | DefinedPlayer$ Targeted | ValidTgts$ Player | Chooser$ You | ChangeType$ Card.nonLand | ChangeNum$ 1 | IsCurse$ True | Mandatory$ True | StackDescription$ SpellDescription | SpellDescription$ Target opponent reveals their hand. You choose a nonland card from it. Exile that card. +SVar:DBChangeZone1:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Opponent | DefinedPlayer$ Targeted | Mandatory$ True | ChangeType$ Creature | ChangeNum$ 1 | Hidden$ True | IsCurse$ True | Chooser$ Targeted | SpellDescription$ Target opponent exiles a creature they control. +SVar:DBChangeZone2:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | DefinedPlayer$ Targeted | ValidTgts$ Opponent | Chooser$ You | ChangeType$ Card.nonLand | ChangeNum$ 1 | IsCurse$ True | Mandatory$ True | StackDescription$ SpellDescription | SpellDescription$ Target opponent reveals their hand. You choose a nonland card from it. Exile that card. Oracle:Choose one —\n• Target opponent exiles a creature they control.\n• Target opponent reveals their hand. You choose a nonland card from it. Exile that card. diff --git a/forge-gui/res/cardsfolder/upcoming/akki_battle_squad.txt b/forge-gui/res/cardsfolder/upcoming/akki_battle_squad.txt new file mode 100644 index 00000000000..b621674c857 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/akki_battle_squad.txt @@ -0,0 +1,9 @@ +Name:Akki Battle Squad +ManaCost:5 R +Types:Creature Goblin Samurai +PT:6/6 +T:Mode$ AttackersDeclared | ValidAttackers$ Creature.modified+YouCtrl | Execute$ TrigUntap | TriggerZones$ Battlefield | ActivationLimit$ 1 | TriggerDescription$ Whenever one or more modified creatures you control attack, untap all modified creatures you control. After this combat phase, there is an additional combat phase. This ability triggers only once each turn. (Equipment, Auras you control, and counters are modifications.) +SVar:TrigUntap:DB$ UntapAll | ValidCards$ Creature.modified+YouCtrl | SubAbility$ DBAddCombat +SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ Combat | AfterPhase$ EndCombat +DeckHints:Type$Aura|Equipment & Ability$Counters +Oracle:Whenever one or more modified creatures you control attack, untap all modified creatures you control. After this combat phase, there is an additional combat phase. This ability triggers only once each turn. (Equipment, Auras you control, and counters are modifications.) diff --git a/forge-gui/res/cardsfolder/upcoming/collision_of_realms.txt b/forge-gui/res/cardsfolder/upcoming/collision_of_realms.txt new file mode 100644 index 00000000000..3aa3b0a5663 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/collision_of_realms.txt @@ -0,0 +1,8 @@ +Name:Collision of Realms +ManaCost:6 R +Types:Sorcery +A:SP$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBShuffle | SpellDescription$ Each player shuffles all creatures they own into their library. Each player who shuffled a nontoken creature into their library this way reveals cards from the top of their library until they reveal a creature card, then puts that card onto the battlefield and the rest on the bottom of their library in a random order. +SVar:DBShuffle:DB$ ChangeZoneAll | ChangeType$ Creature.RememberedPlayerOwn | Imprint$ True | Origin$ Battlefield | Destination$ Library | Shuffle$ True | SubAbility$ DBDigUntil +SVar:DBDigUntil:DB$ DigUntil | ConditionDefined$ Imprinted | ConditionPresent$ Card.nonToken | ConditionCompare$ GE1 | Defined$ Remembered | Amount$ 1 | Valid$ Creature | FoundDestination$ Battlefield | RevealedDestination$ Library | Reveal$ True | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | SubAbility$ DBCleanImprint +SVar:DBCleanImprint:DB$ Cleanup | ClearImprinted$ True +Oracle:Each player shuffles all creatures they own into their library. Each player who shuffled a nontoken creature into their library this way reveals cards from the top of their library until they reveal a creature card, then puts that card onto the battlefield and the rest on the bottom of their library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/concord_with_the_kami.txt b/forge-gui/res/cardsfolder/upcoming/concord_with_the_kami.txt new file mode 100644 index 00000000000..6af81767660 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/concord_with_the_kami.txt @@ -0,0 +1,11 @@ +Name:Concord with the Kami +ManaCost:3 G +Types:Enchantment +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigCharm | TriggerDescription$ At the beginning of your end step, ABILITY +SVar:TrigCharm:DB$ Charm | Choices$ DBPutCounter,DBDraw,DBToken | MinCharmNum$ 1 | CharmNum$ 3 +SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1 | ValidTgts$ Creature.HasCounters | TgtPrompt$ Select target creature with a counter on it | SpellDescription$ Put a +1/+1 counter on target creature with a counter on it. +SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionPresent$ Creature.enchanted+YouCtrl | SpellDescription$ Draw a card if you control an enchanted creature. +SVar:DBToken:DB$ Token | TokenScript$ c_1_1_spirit | ConditionPresent$ Creature.equipped+YouCtrl | SpellDescription$ Create a 1/1 colorless Spirit creature token if you control an equipped creature. +DeckHas:Ability$Counters|Token +DeckHints:Ability$Counters & Type$Aura|Equipment|Spirit +Oracle:At the beginning of your end step, choose one or more —\n• Put a +1/+1 counter on target creature with a counter on it.\n• Draw a card if you control an enchanted creature.\n• Create a 1/1 colorless Spirit creature token if you control an equipped creature. diff --git a/forge-gui/res/cardsfolder/upcoming/go_shintai_of_lifes_origin.txt b/forge-gui/res/cardsfolder/upcoming/go_shintai_of_lifes_origin.txt new file mode 100644 index 00000000000..863362c68b9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/go_shintai_of_lifes_origin.txt @@ -0,0 +1,10 @@ +Name:Go-Shintai of Life's Origin +ManaCost:3 G +Types:Legendary Enchantment Creature Shrine +PT:3/4 +A:AB$ ChangeZone | Cost$ W U B R G T | ValidTgts$ Enchantment.YouOwn | TgtPrompt$ Select target enchantment card | Origin$ Graveyard | Destination$ Battlefield | SpellDescription$ Return target enchantment card from your graveyard to the battlefield. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | ValidCard$ Card.Self,Shrine.nonToken+Other+YouCtrl | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME or another nontoken Shrine enters the battlefield under your control, create a 1/1 colorless Shrine enchantment creature token. +SVar:TrigToken:DB$ Token | TokenScript$ c_1_1_e_shrine +DeckHas:Ability$Graveyard|Token +DeckHints:Type$Enchantment|Shrine +Oracle:{W}{U}{B}{R}{G}, {T}: Return target enchantment card from your graveyard to the battlefield.\nWhenever Go-Shintai of Life's Origin or another nontoken Shrine enters the battlefield under your control, create a 1/1 colorless Shrine enchantment creature token. diff --git a/forge-gui/res/cardsfolder/upcoming/imposter_mech.txt b/forge-gui/res/cardsfolder/upcoming/imposter_mech.txt new file mode 100644 index 00000000000..cb24a65d9e5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/imposter_mech.txt @@ -0,0 +1,8 @@ +Name:Imposter Mech +ManaCost:1 U +Types:Artifact Vehicle +PT:3/1 +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.OppCtrl | AddTypes$ Vehicle & Artifact | AddKeywords$ Crew:3 | RemoveCardTypes$ True | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of a creature an opponent controls, except it's a Vehicle artifact with crew 3 and it loses all other card types. +K:Crew:3 +Oracle:You may have Imposter Mech enter the battlefield as a copy of a creature an opponent controls, except it's a Vehicle artifact with crew 3 and it loses all other card types. diff --git a/forge-gui/res/cardsfolder/upcoming/kami_of_celebration.txt b/forge-gui/res/cardsfolder/upcoming/kami_of_celebration.txt new file mode 100644 index 00000000000..b19dbf5391d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kami_of_celebration.txt @@ -0,0 +1,14 @@ +Name:Kami of Celebration +ManaCost:4 R +Types:Creature Spirit +PT:3/3 +T:Mode$ Attacks | ValidCard$ Creature.modified+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigExile | TriggerDescription$ Whenever a modified creature you control attacks, exile the top card of your library. You may play that card this turn. (Equipment, Auras you control, and counters are modifications.) +SVar:TrigExile:DB$ Dig | Defined$ You | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | RememberObjects$ Remembered | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play this card this turn. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ SpellCast | ValidCard$ Card.wasCastFromExile | ValidActivatingPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a spell from exile, put a +1/+1 counter on target creature you control. +SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ P1P1 | CounterNum$ 1 +DeckHas:Ability$Counters +DeckHints:Type$Aura|Equipment & Ability$Counters +Oracle:Whenever a modified creature you control attacks, exile the top card of your library. You may play that card this turn. (Equipment, Auras you control, and counters are modifications.)\nWhenever you cast a spell from exile, put a +1/+1 counter on target creature you control. diff --git a/forge-gui/res/cardsfolder/upcoming/kappa_cannoneer.txt b/forge-gui/res/cardsfolder/upcoming/kappa_cannoneer.txt new file mode 100644 index 00000000000..50817612735 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kappa_cannoneer.txt @@ -0,0 +1,13 @@ +Name:Kappa Cannoneer +ManaCost:5 U +Types:Artifact Creature Turtle Warrior +PT:4/4 +K:Improvise +K:Ward:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Artifact.YouCtrl | IsPresent$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever an artifact enters the battlefield under your control, put a +1/+1 counter on CARDNAME and it can't be blocked this turn. +SVar:TrigPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPump +SVar:DBPump:DB$ Pump | Defined$ Self | KW$ HIDDEN Unblockable +DeckNeeds:Type$Artifact +DeckHas:Ability$Counters +SVar:BuffedBy:Artifact +Oracle:Improvise (Your artifacts can help cast this spell. Each artifact you tap after you're done activating mana abilities pays for {1}.)\nWard {4}\nWhenever an artifact enters the battlefield under your control, put a +1/+1 counter on Kappa Cannoneer and it can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/katsumasa_the_animator.txt b/forge-gui/res/cardsfolder/upcoming/katsumasa_the_animator.txt new file mode 100644 index 00000000000..4b9a15e8be4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/katsumasa_the_animator.txt @@ -0,0 +1,12 @@ +Name:Katsumasa, the Animator +ManaCost:2 U U +Types:Legendary Creature Moonfolk Artificer +PT:3/3 +K:Flying +A:AB$ Animate | Cost$ 2 U | ValidTgts$ Artifact.nonCreature+YouCtrl | TgtPrompt$ Select target noncreature artifact you control | Types$ Artifact,Creature | Keywords$ Flying | SubAbility$ NonVehicle | SpellDescription$ Until end of turn, target noncreature artifact you control becomes an artifact creature and gains flying. +SVar:NonVehicle:DB$ Animate | Defined$ Targeted.nonVehicle | Power$ 1 | Toughness$ 1 | IfDesc$ True | SpellDescription$ If it's not a Vehicle, it has base power and toughness 1/1 until end of turn. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounters | TriggerDescription$ At the beginning of your upkeep, put a +1/+1 counter on each of up to three target noncreature artifacts. +SVar:TrigPutCounters:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1 | TargetMin$ 0 | TargetMax$ 3 | ValidTgts$ Artifact.nonCreature | TgtPrompt$ Select up to three target noncreature artifacts +DeckHas:Ability$Counters +DeckHints:Type$Artifact|Vehicle +Oracle:Flying\n{2}{U}: Until end of turn, target noncreature artifact you control becomes an artifact creature and gains flying. If it's not a Vehicle, it has base power and toughness 1/1 until end of turn.\nAt the beginning of your upkeep, put a +1/+1 counter on each of up to three target noncreature artifacts. diff --git a/forge-gui/res/cardsfolder/upcoming/kosei_penitent_warlord.txt b/forge-gui/res/cardsfolder/upcoming/kosei_penitent_warlord.txt new file mode 100644 index 00000000000..a55fca7a25a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kosei_penitent_warlord.txt @@ -0,0 +1,13 @@ +Name:Kosei, Penitent Warlord +ManaCost:1 G G +Types:Legendary Creature Ogre Samurai +PT:0/5 +S:Mode$ Continuous | Affected$ Card.Self+enchanted+equipped+HasCounters | AddTrigger$ DamageTrigger | Description$ As long as CARDNAME is enchanted, equipped, and has a counter on it, NICKNAME has "Whenever CARDNAME deals combat damage to an opponent, you draw that many cards and NICKNAME deals that much damage to each other opponent." +SVar:DamageTrigger:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME deals combat damage to an opponent, you draw that many cards and NICKNAME deals that much damage to each other opponent. +SVar:TrigDraw:DB$ Draw | NumCards$ X | SubAbility$ DBDamage +SVar:DBDamage:DB$ DamageAll | ValidPlayers$ OppNonTriggeredTarget | NumDmg$ X +SVar:X:TriggerCount$DamageAmount +SVar:EnchantMe:Once +SVar:EquipMe:Once +DeckNeeds:Type$Enchantment|Equipment & Ability$Counters +Oracle:As long as Kosei, Penitent Warlord is enchanted, equipped, and has a counter on it, Kosei has "Whenever Kosei, Penitent Warlord deals combat damage to an opponent, you draw that many cards and Kosei deals that much damage to each other opponent." diff --git a/forge-gui/res/cardsfolder/upcoming/myojin_of_blooming_dawn.txt b/forge-gui/res/cardsfolder/upcoming/myojin_of_blooming_dawn.txt new file mode 100644 index 00000000000..874ae76392a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/myojin_of_blooming_dawn.txt @@ -0,0 +1,10 @@ +Name:Myojin of Blooming Dawn +ManaCost:5 W W W +Types:Legendary Creature Spirit +PT:4/6 +T:Mode$ ChangesZone | ValidCard$ Card.wasCastFromYourHandByYou+Self | Destination$ Battlefield | Static$ True | Execute$ ETBCounter | TriggerDescription$ CARDNAME enters the battlefield with an indestructible counter on it if you cast it from your hand. +SVar:ETBCounter:DB$ PutCounter | Defined$ Self | CounterType$ Indestructible | CounterNum$ 1 +A:AB$ Token | Cost$ SubCounter<1/Indestructible> | TokenScript$ c_1_1_spirit | TokenAmount$ X | SpellDescription$ Create a 1/1 colorless Spirit creature token for each permanent you control. +SVar:X:Count$Valid Permanent.YouCtrl +DeckHas:Ability$Token +Oracle:Myojin of Blooming Dawn enters the battlefield with an indestructible counter on it if you cast it from your hand.\nRemove an indestructible counter from Myojin of Blooming Dawn: Create a 1/1 colorless Spirit creature token for each permanent you control. diff --git a/forge-gui/res/cardsfolder/upcoming/myojin_of_cryptic_dreams.txt b/forge-gui/res/cardsfolder/upcoming/myojin_of_cryptic_dreams.txt new file mode 100644 index 00000000000..8acda66b2c4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/myojin_of_cryptic_dreams.txt @@ -0,0 +1,9 @@ +Name:Myojin of Cryptic Dreams +ManaCost:5 U U U +Types:Legendary Creature Spirit +PT:3/3 +T:Mode$ ChangesZone | ValidCard$ Card.wasCastFromYourHandByYou+Self | Destination$ Battlefield | Static$ True | Execute$ ETBCounter | TriggerDescription$ CARDNAME enters the battlefield with an indestructible counter on it if you cast it from your hand. +SVar:ETBCounter:DB$ PutCounter | Defined$ Self | CounterType$ Indestructible | CounterNum$ 1 +A:AB$ CopySpellAbility | Cost$ SubCounter<1/Indestructible> | TgtPrompt$ Select target permanent spell you control | ValidTgts$ Permanent.YouCtrl | TargetType$ Spell | Amount$ 3 | SpellDescription$ Copy target permanent spell you control three times. (The copies become tokens.) +DeckHas:Ability$Token +Oracle:Myojin of Cryptic Dreams enters the battlefield with an indestructible counter on it if you cast it from your hand.\nRemove an indestructible counter from Myojin of Cryptic Dreams: Copy target permanent spell you control three times. (The copies become tokens.) diff --git a/forge-gui/res/cardsfolder/upcoming/one_with_the_kami.txt b/forge-gui/res/cardsfolder/upcoming/one_with_the_kami.txt new file mode 100644 index 00000000000..3d290b62edc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/one_with_the_kami.txt @@ -0,0 +1,12 @@ +Name:One with the Kami +ManaCost:3 G +Types:Enchantment Aura +K:Flash +K:Enchant creature you control +A:SP$ Attach | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | AILogic$ Pump +T:Mode$ ChangesZone | ValidCard$ Creature.EnchantedBy,Creature.modified+NotEnchantedBy | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigToken | TriggerDescription$ Whenever enchanted creature or another modified creature you control dies, create X 1/1 colorless Spirit creature tokens, where X is that creature's power. (Equipment, Auras you control, and counters are modifications.) +SVar:TrigToken:DB$ Token | TokenScript$ c_1_1_spirit | TokenAmount$ X +SVar:X:TriggeredCard$CardPower +DeckHas:Ability$Token & Type$Spirit +DeckHints:Type$Aura|Equipment & Ability$Counters +Oracle:Flash\nEnchant creature you control\nWhenever enchanted creature or another modified creature you control dies, create X 1/1 colorless Spirit creature tokens, where X is that creature's power. (Equipment, Auras you control, and counters are modifications.) diff --git a/forge-gui/res/cardsfolder/upcoming/rampant_rejuvenator.txt b/forge-gui/res/cardsfolder/upcoming/rampant_rejuvenator.txt new file mode 100644 index 00000000000..09d40a188b6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rampant_rejuvenator.txt @@ -0,0 +1,11 @@ +Name:Rampant Rejuvenator +ManaCost:3 G +Types:Creature Plant Hydra +PT:0/0 +K:etbCounter:P1P1:2 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME dies, search your library for up to X basic land cards, where X is CARDNAME's power, put them onto the battlefield, then shuffle. +SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ X +SVar:X:TriggeredCard$CardPower +DeckHas:Ability$Counters +Oracle:Rampant Rejuvenator enters the battlefield with two +1/+1 counters on it. +When Rampant Rejuvenator dies, search your library for up to X basic land cards, where X is Rampant Rejuvenator's power, put them onto the battlefield, then shuffle. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/research_thief.txt b/forge-gui/res/cardsfolder/upcoming/research_thief.txt new file mode 100644 index 00000000000..7d384cda016 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/research_thief.txt @@ -0,0 +1,10 @@ +Name:Research Thief +ManaCost:4 U +Types:Artifact Creature Moonfolk Wizard +PT:3/3 +K:Flash +K:Flying +T:Mode$ DamageDone | ValidSource$ Artifact.Creature+YouCtrl | ValidTarget$ Player | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever an artifact creature you control deals combat damage to a player, draw a card. +SVar:TrigDraw:DB$ Draw | NumCards$ 1 +DeckHints:Type$Artifact +Oracle:Flash\nFlying\nWhenever an artifact creature you control deals combat damage to a player, draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/shorikai_genesis_engine.txt b/forge-gui/res/cardsfolder/upcoming/shorikai_genesis_engine.txt new file mode 100644 index 00000000000..2c851017e0b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/shorikai_genesis_engine.txt @@ -0,0 +1,12 @@ +Name:Shorikai, Genesis Engine +ManaCost:2 W U +Types:Legendary Artifact Vehicle +PT:8/8 +A:AB$ Draw | Cost$ 1 T | NumCards$ 2 | SubAbility$ DBDiscard | SpellDescription$ Draw two cards, then discard a card. Create a 1/1 colorless Pilot creature token with "This creature crews Vehicles as though its power were 2 greater." +SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenScript$ c_1_1_pilot_crewbuff +K:Crew:8 +K:CARDNAME can be your commander. +DeckHas:Ability$Discard|Token & Type$Pilot +DeckHints:Type$Vehicle +Oracle:{1}, {T}: Draw two cards, then discard a card. Create a 1/1 colorless Pilot creature token with "This creature crews Vehicles as though its power were 2 greater."\nCrew 8 (Tap any number of creatures you control with total power 8 or more: This Vehicle becomes an artifact creature until end of turn.)\nShorikai, Genesis Engine can be your commander. diff --git a/forge-gui/res/cardsfolder/upcoming/silkguard.txt b/forge-gui/res/cardsfolder/upcoming/silkguard.txt new file mode 100644 index 00000000000..a85307b0d32 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/silkguard.txt @@ -0,0 +1,9 @@ +Name:Silkguard +ManaCost:X G +Types:Instant +A:SP$ PutCounter | CounterNum$ 1 | CounterType$ P1P1 | TargetMin$ 0 | TargetMax$ X | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to X target creatures you control | SubAbility$ DBPumpAll | SpellDescription$ Put a +1/+1 counter on each of up to X target creatures you control. +SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Aura.YouCtrl,Equipment.YouCtrl,Creature.modified+YouCtrl | KW$ Hexproof | SpellDescription$ Auras, Equipment, and modified creatures you control gain hexproof until end of turn. (Equipment, Auras you control, and counters are modifications.) +SVar:X:Count$xPaid +DeckHas:Ability$Counters +DeckHints:Type$Aura|Equipment +Oracle:Put a +1/+1 counter on each of up to X target creatures you control.\nAuras, Equipment, and modified creatures you control gain hexproof until end of turn. (Equipment, Auras you control, and counters are modifications.) diff --git a/forge-gui/res/cardsfolder/upcoming/smoke_spirits_aid.txt b/forge-gui/res/cardsfolder/upcoming/smoke_spirits_aid.txt new file mode 100644 index 00000000000..6f7d08c8c97 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/smoke_spirits_aid.txt @@ -0,0 +1,8 @@ +Name:Smoke Spirits' Aid +ManaCost:X R +Types:Sorcery +A:SP$ RepeatEach | DefinedCards$ Targeted | RepeatSubAbility$ DBToken | ValidTgts$ Creature | TgtPrompt$ Select up to X target creatures | TargetMin$ 0 | TargetMax$ X | SpellDescription$ For each of up to X target creatures, create a red Aura enchantment token named Smoke Blessing attached to that creature. Those tokens have enchant creature and "When enchanted creature dies, it deals 1 damage to its controller and you create a Treasure token." +SVar:DBToken:DB$ Token | TokenScript$ smoke_blessing | AttachedTo$ Remembered +SVar:X:Count$xPaid +DeckHas:Ability$Token|Sacrifice & Type$Enchantment|Aura|Treasure|Artifact +Oracle:For each of up to X target creatures, create a red Aura enchantment token named Smoke Blessing attached to that creature. Those tokens have enchant creature and "When enchanted creature dies, it deals 1 damage to its controller and you create a Treasure token." diff --git a/forge-gui/res/cardsfolder/upcoming/tanuki_transplanter.txt b/forge-gui/res/cardsfolder/upcoming/tanuki_transplanter.txt new file mode 100644 index 00000000000..8b10e88a8d4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/tanuki_transplanter.txt @@ -0,0 +1,9 @@ +Name:Tanuki Transplanter +ManaCost:3 G +Types:Artifact Creature — Equipment Dog +PT:2/4 +T:Mode$ Attacks | ValidCard$ Card.Self,Creature.EquippedBy | Execute$ TrigMana | TriggerDescription$ Whenever CARDNAME or equipped creature attacks, add an amount of {G} equal to its power. Until end of turn, you don't lose this mana as steps and phases end. +SVar:TrigMana:DB$ Mana | Produced$ G | Amount$ X | PersistentMana$ True +SVar:X:TriggeredAttacker$CardPower +K:Reconfigure:3 +Oracle:Whenever Tanuki Transplanter or equipped creature attacks, add an amount of {G} equal to its power. Until end of turn, you don't lose this mana as steps and phases end.\nReconfigure {3} ({3}: Attach to target creature you control; or unattach from a creature. Reconfigure only as a sorcery. While attached, this isn't a creature.) diff --git a/forge-gui/res/cardsfolder/upcoming/unquenchable_fury.txt b/forge-gui/res/cardsfolder/upcoming/unquenchable_fury.txt new file mode 100644 index 00000000000..c509a0c3902 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/unquenchable_fury.txt @@ -0,0 +1,13 @@ +Name:Unquenchable Fury +ManaCost:2 R +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | ValidTgts$ Creature | TgtPrompt$ Select target creature | AILogic$ Pump +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddTrigger$ AttackTrigger | AddSVar$ AE | Description$ Enchanted creature has "Whenever this creature attacks, it deals X damage to defending player, where X is the number of cards in their hand." +SVar:AttackTrigger:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Whenever this creature attacks, it deals X damage to defending player, where X is the number of cards in their hand. +SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredDefender | NumDmg$ X +SVar:X:TriggeredDefendingPlayer$CardsInHand +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigReturn | TriggerDescription$ When CARDNAME is put into your graveyard from the battlefield, return it to your hand. +SVar:TrigReturn:DB$ ChangeZone | Defined$ TriggeredNewCardLKICopy | Origin$ Graveyard | Destination$ Hand +SVar:AE:SVar:HasAttackEffect:TRUE +Oracle:Enchant creature\nEnchanted creature has "Whenever this creature attacks, it deals X damage to defending player, where X is the number of cards in their hand."\nWhen Unquenchable Fury is put into your graveyard from the battlefield, return it to your hand. diff --git a/forge-gui/res/tokenscripts/c_1_1_e_shrine.txt b/forge-gui/res/tokenscripts/c_1_1_e_shrine.txt new file mode 100644 index 00000000000..272f0e53601 --- /dev/null +++ b/forge-gui/res/tokenscripts/c_1_1_e_shrine.txt @@ -0,0 +1,6 @@ +Name:Shrine Token +ManaCost:no cost +Types:Enchantment Creature Shrine +Colors:colorless +PT:1/1 +Oracle: diff --git a/forge-gui/res/tokenscripts/smoke_blessing.txt b/forge-gui/res/tokenscripts/smoke_blessing.txt new file mode 100644 index 00000000000..be9605c8e07 --- /dev/null +++ b/forge-gui/res/tokenscripts/smoke_blessing.txt @@ -0,0 +1,9 @@ +Name:Smoke Blessing +ManaCost:no cost +Colors:red +Types:Aura Enchantment +K:Enchant creature +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.EnchantedBy | Execute$ TrigDamage | TriggerDescription$ When enchanted creature dies, it deals 1 damage to its controller and you create a Treasure token. +SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredCardController | DamageSource$ TriggeredCard | NumDmg$ 1 | SubAbility$ DBTreasure +SVar:DBTreasure:DB$ Token | TokenScript$ c_a_treasure_sac +Oracle:Enchant creature\nWhen enchanted creature dies, it deals 1 damage to its controller and you create a Treasure token.