diff --git a/forge-game/src/main/java/forge/game/card/CounterEnumType.java b/forge-game/src/main/java/forge/game/card/CounterEnumType.java index 9b27cafafaf..0bcccc14fc6 100644 --- a/forge-game/src/main/java/forge/game/card/CounterEnumType.java +++ b/forge-game/src/main/java/forge/game/card/CounterEnumType.java @@ -458,6 +458,7 @@ public enum CounterEnumType { TRAMPLE("Trample"), VIGILANCE("Vigilance") SHADOW("Shadow") + EXALTED("Exalted") //*/ ; diff --git a/forge-game/src/main/java/forge/game/card/CounterType.java b/forge-game/src/main/java/forge/game/card/CounterType.java index be57c3ee0b3..a1f7fd2f408 100644 --- a/forge-game/src/main/java/forge/game/card/CounterType.java +++ b/forge-game/src/main/java/forge/game/card/CounterType.java @@ -19,7 +19,7 @@ public class CounterType implements Comparable, Serializable { // Rule 122.1b static ImmutableList keywordCounter = ImmutableList.of( - "Flying", "First Strike", "Double Strike", "Deathtouch", "Haste", "Hexproof", + "Flying", "First Strike", "Double Strike", "Deathtouch", "Exalted", "Haste", "Hexproof", "Indestructible", "Lifelink", "Menace", "Reach", "Shadow", "Trample", "Vigilance"); private static Map eMap = Maps.newEnumMap(CounterEnumType.class); diff --git a/forge-gui/res/cardsfolder/upcoming/abstruse_appropriation.txt b/forge-gui/res/cardsfolder/upcoming/abstruse_appropriation.txt new file mode 100644 index 00000000000..dd858d2485a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/abstruse_appropriation.txt @@ -0,0 +1,10 @@ +Name:Abstruse Appropriation +ManaCost:2 W B +Types:Instant +K:Devoid +A:SP$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Permanent.nonLand | RememberChanged$ True | TgtPromt$ Select target nonland permanent | SubAbility$ DBEffect | SpellDescription$ Exile target nonland permanent. +SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ MayPlay,ManaConvert | SubAbility$ DBCleanup | Duration$ Permanent | ForgetOnMoved$ Exile | SpellDescription$ You may cast that card for as long as it remains exiled, and you may spend colorless mana as though it were mana of any color to cast that spell. +SVar:MayPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered+nonLand | AffectedZone$ Exile | Description$ You may cast that card for as long as it remains exiled +SVar:ManaConvert:Mode$ ManaConvert | ValidPlayer$ You | ValidCard$ Card.IsRemembered | ValidSA$ Spell.MayPlaySource | ManaConversion$ C->AnyColor | AffectedZone$ Exile | Description$ You may spend colorless mana as though it were mana of any color to cast that spell. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Devoid\nExile target nonland permanent. You may cast that card for as long as it remains exiled, and you may spend colorless mana as though it were mana of any color to cast that spell. diff --git a/forge-gui/res/cardsfolder/upcoming/corrupted_shapeshifter.txt b/forge-gui/res/cardsfolder/upcoming/corrupted_shapeshifter.txt new file mode 100644 index 00000000000..af7cdffcf90 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/corrupted_shapeshifter.txt @@ -0,0 +1,11 @@ +Name:Corrupted Shapeshifter +ManaCost:3 U +Types:Creature Eldrazi Shapeshifter +PT:*/* +K:Devoid +K:ETBReplacement:Other:MorphChoice +SVar:MorphChoice:DB$ GenericChoice | Defined$ You | Choices$ Flyer,VigilancePump,Wall | SpellDescription$ As CARDNAME enters the battlefield, it becomes your choice of a 3/3 creature with flying, a 2/5 creature with vigilance, or a 0/12 creature with defender. +SVar:Flyer:DB$ Animate | Defined$ Self | Duration$ Permanent | Power$ 3 | Toughness$ 3 | Keywords$ Flying | SpellDescription$ CARDNAME is a 3/3 creature with flying. +SVar:VigilancePump:DB$ Animate | Defined$ Self | Duration$ Permanent | Power$ 2 | Toughness$ 5 | Keywords$ Vigilance | SpellDescription$ CARDNAME is a 2/5 creature with vigilance. +SVar:Wall:DB$ Animate | Defined$ Self | Duration$ Permanent | Power$ 0 | Toughness$ 12 | Keywords$ Defender | SpellDescription$ CARDNAME is a 0/12 creature with defender. +Oracle:Devoid (This card has no color.)\nAs Corrupted Shapeshifter enters the battlefield, it becomes your choice of a 3/3 creature with flying, a 2/5 creature with vigilance, or a 0/12 creature with defender. diff --git a/forge-gui/res/cardsfolder/upcoming/devourer_of_destiny.txt b/forge-gui/res/cardsfolder/upcoming/devourer_of_destiny.txt new file mode 100644 index 00000000000..6ea5a89e061 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/devourer_of_destiny.txt @@ -0,0 +1,12 @@ +Name:Devourer of Destiny +ManaCost:5 C C +Types:Creature Eldrazi +PT:6/6 +K:MayEffectFromOpeningHand:RevealCard +SVar:RevealCard:DB$ Reveal | RevealDefined$ Self | SubAbility$ TrigEffect | SpellDescription$ You may reveal this card from your opening hand. If you do, at the beginning of your first upkeep, look at the top four cards of your library. You may put one of those cards back on top of your library. Exile the rest. +SVar:TrigEffect:DB$ Effect | Triggers$ UpkeepTrig | Duration$ Permanent +SVar:UpkeepTrig:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigDig | OneOff$ True | TriggerDescription$ At the beginning of your first upkeep, look at the top four cards of your library. You may put one of those cards back on top of your library. Exile the rest. +SVar:TrigDig:DB$ Dig | DigNum$ 4 | DestinationZone$ Library | DestinationZone2$ Exile | ChangeNum$ 1 | LibraryPosition$ 0 | Optional$ True +T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When you cast this spell, exile target permanent that's one or more colors. +SVar:TrigChange:DB$ ChangeZone | ValidTgts$ Permanent.nonColorless | TgtPrompt$ ¨Select target permanent that's one or more colors | Origin$ Battlefield | Destination$ Exile +Oracle:You may reveal this card from your opening hand. If you do, at the beginning of your first upkeep, look at the top four cards of your library. You may put one of those cards back on top of your library. Exile the rest.\nWhen you cast this spell, exile target permanent that's one or more colors. diff --git a/forge-gui/res/cardsfolder/upcoming/dog_umbra.txt b/forge-gui/res/cardsfolder/upcoming/dog_umbra.txt new file mode 100644 index 00000000000..603acc0fb6a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dog_umbra.txt @@ -0,0 +1,9 @@ +Name:Dog Umbra +ManaCost:1 W +Types:Enchantment Aura +K:Flash +K:Enchant creature +A:SP$ Attach | ValidTgts$ Creature +S:Mode$ Continuous | Affected$ Creature.EnchantedBy+ControlledBy Player.Other | AddHiddenKeyword$ CARDNAME can't attack or block. | Description$ As long as another player controls enchanted creature, it can't attack or block. Otherwise, CARDNAME has umbra armor. (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) +S:Mode$ Continuous | Affected$ Card.Self | IsPresent$ Creature.YouCtrl+EnchantedBy | AddKeyword$ Umbra Armor | Secondary$ True | Description$ As long as another player controls enchanted creature, it can't attack or block. Otherwise, CARDNAME has umbra armor. (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) +Oracle:Flash\nEnchant creature\nAs long as another player controls enchanted creature, it can't attack or block. Otherwise, Dog Umbra has umbra armor. (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) diff --git a/forge-gui/res/cardsfolder/upcoming/emissary_of_soulfire.txt b/forge-gui/res/cardsfolder/upcoming/emissary_of_soulfire.txt new file mode 100644 index 00000000000..b3510ffc609 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/emissary_of_soulfire.txt @@ -0,0 +1,8 @@ +Name:Emissary of Soulfire +ManaCost:1 W U +Types:Creature Djinn Monk +PT:1/4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEnergy | TriggerDescription$ When CARDNAME enters the battlefield, you get {E}{E}{E}. +SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ 3 +A:AB$ PutCounter | Cost$ PayEnergy<2> | CounterType$ Exalted | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SorcerySpeed$ True | SpellDescription$ Put an exalted counter on target creature you control. Activate only as a sorcery. +Oracle:When Emissary of Soulfire enters the battlefield, you get {E}{E}{E}.\nPay {E}{E}: Put an exalted counter on target creature you control. Activate only as a sorcery. diff --git a/forge-gui/res/cardsfolder/upcoming/emperor_of_bones.txt b/forge-gui/res/cardsfolder/upcoming/emperor_of_bones.txt new file mode 100644 index 00000000000..9a365ee724d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/emperor_of_bones.txt @@ -0,0 +1,13 @@ +Name:Emperor of Bones +ManaCost:1 B +Types:Creature Skeleton Noble +PT:2/2 +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, exile up to one target card from a graveyard. +SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Card | TgtPrompt$ Select up to one target card from a graveyard +K:Adapt:2:1 B +T:Mode$ CounterAddedOnce | ValidCard$ Card.Self | TriggerZones$ Battlefield | CounterType$ P1P1 | Execute$ TrigChangeZone | TriggerDescription$ Whenever one or more +1/+1 counters are put on CARDNAME, put a creature card exiled with CARDNAME onto the battlefield under your control with a finality counter on it. It gains haste. Sacrifice it at the beginning of the next end step. +SVar:TrigChangeZone:DB$ ChangeZone | ChangeType$ Creature.ExiledWithSource | GainControl$ True | Origin$ Exile | Hidden$ True | Mandatory$ True | RememberChanged$ True | Destination$ Battlefield | WithCountersType$ FINALITY | SubAbility$ DBPump +SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | AtEOT$ Sacrifice | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Counters|Graveyard +Oracle:At the beginning of combat on your turn, exile up to one target card from a graveyard.\n{1}{B}: Adapt 2.\nWhenever one or more +1/+1 counters are put on Emperor of Bones, put a creature card exiled with Emperor of Bones onto the battlefield under your control with a finality counter on it. It gains haste. Sacrifice it at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/upcoming/evolution_witness.txt b/forge-gui/res/cardsfolder/upcoming/evolution_witness.txt new file mode 100644 index 00000000000..33ada47bede --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/evolution_witness.txt @@ -0,0 +1,9 @@ +Name:Evolution Witness +ManaCost:2 G +Types:Creature Elf Shaman Mutant +PT:2/1 +K:Adapt:2:1 G +T:Mode$ CounterAddedOnce | ValidCard$ Card.Self | TriggerZones$ Battlefield | CounterType$ P1P1 | Execute$ TrigChangeZone | TriggerDescription$ Whenever one or more +1/+1 counters are put on CARDNAME, return target permanent card from your graveyard to your hand. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Permanent.YouCtrl | TgtPrompt$ Select target permanent card from your graveyard +DeckHas:Ability$Counters|Graveyard +Oracle:{1}{G}: Adapt 2. (If this creature has no +1/+1 counters on it, put two +1/+1 counters on it.)\nWhenever one or more +1/+1 counters are put on Evolution Witness, return target permanent card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/grim_servant.txt b/forge-gui/res/cardsfolder/upcoming/grim_servant.txt new file mode 100644 index 00000000000..858d9e2c75b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/grim_servant.txt @@ -0,0 +1,12 @@ +Name:Grim Servant +ManaCost:3 B +Types:Creature Zombie Warlock +PT:3/2 +K:Menace +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigSearch | TriggerDescription$ When CARDNAME enters the battlefield, search your library for a card with mana value less than or equal to your devotion to black, reveal it, put it into your hand, then shuffle. You lose 3 life. (Each {B} in the mana costs of permanents you control counts toward your devotion to black.) +SVar:TrigSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Card.cmcLEX | ChangeNum$ 1 | SubAbility$ DBLoseLife +SVar:DBLoseLife:DB$ LoseLife | Defined$ You | LifeAmount$ 3 +SVar:X:Count$Devotion.Black +DeckHas:Ability$Graveyard +DeckHints:Ability$Mill +Oracle:When Grim Servant enters the battlefield, search your library for a card with mana value less than or equal to your devotion to black, reveal it, put it into your hand, then shuffle. You lose 3 life. (Each {B} in the mana costs of permanents you control counts toward your devotion to black.) diff --git a/forge-gui/res/cardsfolder/upcoming/petrifying_meddler.txt b/forge-gui/res/cardsfolder/upcoming/petrifying_meddler.txt new file mode 100644 index 00000000000..dbe2f59e1b9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/petrifying_meddler.txt @@ -0,0 +1,10 @@ +Name:Petrifying Meddler +ManaCost:4 U +Types:Creature Eldrazi +PT:4/5 +K:Devoid +K:Reach +T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigTap | TriggerDescription$ When you cast this spell, tap up to one target creature and put a stun counter on it. (If a permanent with a stun counter would become untapped, remove one from it instead.) +SVar:TrigTap:DB$ Tap | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target creature | SubAbility$ DBCounter +SVar:DBCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ Stun | CounterNum$ 1 +Oracle:Devoid (This card has no color.)\nWhen you cast this spell, tap up to one target creature and put a stun counter on it. (If a permanent with a stun counter would become untapped, remove one from it instead.)\nReach diff --git a/forge-gui/res/cardsfolder/upcoming/serum_visionary.txt b/forge-gui/res/cardsfolder/upcoming/serum_visionary.txt new file mode 100644 index 00000000000..93a47aa2d45 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/serum_visionary.txt @@ -0,0 +1,8 @@ +Name:Serum Visionary +ManaCost:2 U +Types:Creature Vedalken Wizard +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw a card, then scry 2. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBScry +SVar:DBScry:DB$ Scry | ScryNum$ 2 +Oracle:When Serum Visionary enters the battlefield, draw a card, then scry 2.