diff --git a/forge-game/src/main/java/forge/game/cost/CostAdjustment.java b/forge-game/src/main/java/forge/game/cost/CostAdjustment.java index 39ed09a1f0e..bb650a9ab80 100644 --- a/forge-game/src/main/java/forge/game/cost/CostAdjustment.java +++ b/forge-game/src/main/java/forge/game/cost/CostAdjustment.java @@ -433,10 +433,6 @@ public class CostAdjustment { if (!st.matchesValidParam("Activator", activator)) { return false; } - if (st.hasParam("NonActivatorTurn") && (activator == null - || game.getPhaseHandler().isPlayerTurn(activator))) { - return false; - } if (st.hasParam("Type")) { final String type = st.getParam("Type"); @@ -556,4 +552,4 @@ public class CostAdjustment { } return true; } -} \ No newline at end of file +} diff --git a/forge-game/src/main/java/forge/game/player/PlayerProperty.java b/forge-game/src/main/java/forge/game/player/PlayerProperty.java index e997cd039df..3bcda5ac413 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerProperty.java +++ b/forge-game/src/main/java/forge/game/player/PlayerProperty.java @@ -49,11 +49,11 @@ public class PlayerProperty { return false; } } else if (property.equals("Active")) { - if (!player.equals(game.getPhaseHandler().getPlayerTurn())) { + if (!game.getPhaseHandler().isPlayerTurn(player)) { return false; } } else if (property.equals("NonActive")) { - if (player.equals(game.getPhaseHandler().getPlayerTurn())) { + if (game.getPhaseHandler().isPlayerTurn(player)) { return false; } } else if (property.equals("OpponentToActive")) { diff --git a/forge-gui-desktop/src/test/java/forge/card/CardDbCardMockTestCase.java b/forge-gui-desktop/src/test/java/forge/card/CardDbCardMockTestCase.java index f403ce1c4e5..14dcd7faacd 100644 --- a/forge-gui-desktop/src/test/java/forge/card/CardDbCardMockTestCase.java +++ b/forge-gui-desktop/src/test/java/forge/card/CardDbCardMockTestCase.java @@ -57,8 +57,8 @@ public class CardDbCardMockTestCase extends CardMockTestCase { protected final String latestArtLightningDragonEdition = "VMA"; protected final String latestArtLightningDragonEditionNoPromo = "USG"; - protected final String latestArtHymnToTourachEdition = "EMA"; - protected final String latestArtHymnToTourachEditionNoPromo = "EMA"; + protected final String latestArtHymnToTourachEdition = "PLIST"; + protected final String latestArtHymnToTourachEditionNoPromo = "PLIST"; protected final String originalArtHymnToTourachEdition = "FEM"; protected final String originalArtHymnToTourachEditionNoPromo = "FEM"; diff --git a/forge-gui/res/cardsfolder/d/defense_grid.txt b/forge-gui/res/cardsfolder/d/defense_grid.txt index ce0907a6382..f522bd808ea 100644 --- a/forge-gui/res/cardsfolder/d/defense_grid.txt +++ b/forge-gui/res/cardsfolder/d/defense_grid.txt @@ -1,6 +1,6 @@ Name:Defense Grid ManaCost:2 Types:Artifact -S:Mode$ RaiseCost | Activator$ Player | Type$ Spell | Amount$ 3 | NonActivatorTurn$ True | Description$ Each spell costs {3} more to cast except during its controller's turn. +S:Mode$ RaiseCost | Activator$ Player.NonActive | Type$ Spell | Amount$ 3 | Description$ Each spell costs {3} more to cast except during its controller's turn. AI:RemoveDeck:Random Oracle:Each spell costs {3} more to cast except during its controller's turn. diff --git a/forge-gui/res/cardsfolder/k/kindred_boon.txt b/forge-gui/res/cardsfolder/k/kindred_boon.txt index 0c7ad6f9262..6946bed8551 100644 --- a/forge-gui/res/cardsfolder/k/kindred_boon.txt +++ b/forge-gui/res/cardsfolder/k/kindred_boon.txt @@ -3,6 +3,6 @@ ManaCost:2 W W Types:Enchantment K:ETBReplacement:Other:ChooseCT SVar:ChooseCT:DB$ ChooseType | Type$ Creature | AILogic$ MostProminentInComputerDeck | SpellDescription$ As CARDNAME enters the battlefield, choose a creature type. -S:Mode$ Continuous | Affected$ Creature.ChosenType+YouCtrl+counters_GE1_DIVINITY | AddKeyword$ Indestructible | Description$ Each creature you control with a divinity counter on it has indestructible. +S:Mode$ Continuous | Affected$ Creature.YouCtrl+counters_GE1_DIVINITY | AddKeyword$ Indestructible | Description$ Each creature you control with a divinity counter on it has indestructible. A:AB$ PutCounter | Cost$ 1 W | ValidTgts$ Creature.ChosenType+YouCtrl | TgtPrompt$ Select target creature you control of the chosen type | CounterType$ DIVINITY | CounterNum$ 1 | SpellDescription$ Put a divinity counter on target creature you control of the chosen type. Oracle:As Kindred Boon enters the battlefield, choose a creature type.\n{1}{W}: Put a divinity counter on target creature you control of the chosen type.\nEach creature you control with a divinity counter on it has indestructible. diff --git a/forge-gui/res/cardsfolder/upcoming/aether_channeler.txt b/forge-gui/res/cardsfolder/upcoming/aether_channeler.txt new file mode 100644 index 00000000000..e2999e4d8b6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/aether_channeler.txt @@ -0,0 +1,11 @@ +Name:Aether Channeler +ManaCost:2 U +Types:Creature Human Wizard +PT:2/1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCharm | TriggerDescription$ When CARDNAME enters the battlefield, ABILITY +SVar:TrigCharm:DB$ Charm | Choices$ DBToken,DBBounce,DBDraw +SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_bird_flying | TokenOwner$ You | SpellDescription$ Create a 1/1 white Bird creature token with flying. +SVar:DBBounce:DB$ ChangeZone | ValidTgts$ Permanent.Other+nonLand | TgtPrompt$ Select another target nonland permanent | TgtZone$ Battlefield | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return another target nonland permanent to its owner's hand. +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SpellDescription$ Draw a card. +DeckHas:Ability$Token +Oracle:When Aether Channeler enters the battlefield, choose one —\n• Create a 1/1 white Bird creature token with flying.\n• Return another target nonland permanent to its owner's hand.\n• Draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/braids_frightful_return.txt b/forge-gui/res/cardsfolder/upcoming/braids_frightful_return.txt new file mode 100644 index 00000000000..7913b29da47 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/braids_frightful_return.txt @@ -0,0 +1,13 @@ +Name:Braids's Frightful Return +ManaCost:2 B +Types:Enchantment Saga +K:Read ahead:3:DBSacrifice,DBChangeZone,DBSacrificeOpp +SVar:DBSacrifice:DB$ Sacrifice| Optional$ True | Defined$ You | RememberSacrificed$ True | SacValid$ Creature | Amount$ 1 | SubAbility$ DBDiscard | SpellDescription$ You may sacrifice a creature. If you do, each opponent discards a card. +SVar:DBDiscard:DB$ Discard | Mode$ TgtChoose | Defined$ Player.Opponent | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | NumCards$ 1 | ConditionPresent$ Card | SubAbility DBCleanup +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouOwn | SpellDescription$ Return target creature card from your graveyard to your hand. +SVar:DBSacrificeOpp:DB$ Sacrifice | ValidTgts$ Opponent | SacValid$ Permanent.nonLand+nonToken | RememberSacrificed$ True | SubAbility$ DBDraw | SpellDescription$ Target opponent may sacrifice a nonland, nontoken permanent. If they don't, they lose 2 life and you draw a card. +SVar:DBDraw:DB$ Draw | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBLoseLife +SVar:DBLoseLife:DB$ LoseLife | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | LifeAmount$ 2 | Defined$ Targeted | SubAbility DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Discard|Sacrifice +Oracle:Read ahead (Choose a chapter and start with that many lore counters. Add one after your draw step. Skipped chapters don't trigger. Sacrifice after III.)\nI — You may sacrifice a creature. If you do, each opponent discards a card.\nII — Return target creature card from your graveyard to your hand.\nIII — Target opponent may sacrifice a nonland, nontoken permanent. If they don't, they lose 2 life and you draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/crystal_grotto.txt b/forge-gui/res/cardsfolder/upcoming/crystal_grotto.txt new file mode 100644 index 00000000000..f4d5192267b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/crystal_grotto.txt @@ -0,0 +1,8 @@ +Name:Crystal Grotto +ManaCost:no cost +Types:Land +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigScry | TriggerDescription$ When CARDNAME enters the battlefield, scry 1. +SVar:TrigScry:DB$ Scry | ScryNum$ 1 +A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. +A:AB$ Mana | Cost$ 1 T | Produced$ Any | SpellDescription$ Add one mana of any color. +Oracle:When Crystal Grotto enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.)\n{T}: Add {C}.\n{1}, {T}: Add one mana of any color. diff --git a/forge-gui/res/cardsfolder/upcoming/cult_conscript.txt b/forge-gui/res/cardsfolder/upcoming/cult_conscript.txt new file mode 100644 index 00000000000..206da245a69 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/cult_conscript.txt @@ -0,0 +1,10 @@ +Name:Cult Conscript +ManaCost:B +Types:Creature Skeleton Warrior +PT:2/1 +K:CARDNAME enters the battlefield tapped. +A:AB$ ChangeZone | Cost$ 1 B | Origin$ Graveyard | Destination$ Battlefield | ActivationZone$ Graveyard | CheckSVar$ X | SVarCompare GT0 | SpellDescription$ Return CARDNAME from your graveyard to the battlefield. Activate only if a non-Skeleton creature died under your control this turn. +SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature.YouCtrl+nonSkeleton +SVar:DiscardMe:1 +SVar:SacMe:1 +Oracle:Cult Conscript enters the battlefield tapped.\n{1}{B}: Return Cult Conscript from your graveyard to the battlefield. Activate only if a non-Skeleton creature died under your control this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/dihada_binder_of_wills.txt b/forge-gui/res/cardsfolder/upcoming/dihada_binder_of_wills.txt index eb37aba7d9f..3b76a079579 100644 --- a/forge-gui/res/cardsfolder/upcoming/dihada_binder_of_wills.txt +++ b/forge-gui/res/cardsfolder/upcoming/dihada_binder_of_wills.txt @@ -1,5 +1,5 @@ Name:Dihada, Binder of Wills -ManaCost:3 R W B +ManaCost:1 R W B Types:Legendary Planeswalker Dihada Loyalty:5 Text:CARDNAME can be your commander. diff --git a/forge-gui/res/cardsfolder/upcoming/drag_to_the_bottom.txt b/forge-gui/res/cardsfolder/upcoming/drag_to_the_bottom.txt new file mode 100644 index 00000000000..cc62349f1bd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/drag_to_the_bottom.txt @@ -0,0 +1,8 @@ +Name:Drag to the Bottom +ManaCost:2 B B +Types:Sorcery +A:SP$ PumpAll | ValidCards$ Creature | NumAtt$ -X | NumDef$ -X | SpellDescription$ Domain — Each creature gets -X/-X until end of turn, where X is 1 plus the number of basic land types among lands you control. +SVar:X:Count$Domain/Plus.1 +SVar:BuffedBy:Plains,Island,Swamp,Mountain,Forest +AI:RemoveDeck:Random +Oracle:Domain — Each creature gets -X/-X until end of turn, where X is 1 plus the number of basic land types among lands you control. diff --git a/forge-gui/res/cardsfolder/upcoming/founding_the_third_path.txt b/forge-gui/res/cardsfolder/upcoming/founding_the_third_path.txt new file mode 100644 index 00000000000..1d934ffadfc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/founding_the_third_path.txt @@ -0,0 +1,11 @@ +Name:Founding the Third Path +ManaCost:1 U +Types:Enchantment Saga +K:Read ahead:3:DBPlayFree,DBMill,DBCopy +SVar:DBPlayFree:DB$ Play | Valid$ Instant.YouOwn,Sorcery.YouOwn | ValidSA$ Spell.cmcEQ1,Spell.cmcEQ2 | ValidZone$ Hand | WithoutManaCost$ True | Amount$ 1 | Controller$ You | Optional$ True | SpellDescription$ You may cast an instant or sorcery spell with mana value 1 or 2 from your hand without paying its mana cost. +SVar:DBMill:DB$ Mill | NumCards$ 4 | ValidTgts$ Player | SpellDescription$ Target player mills four cards. +SVar:DBCopy:DB$ ChangeZone | TargetMax$ 1 | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose up to one target instant or sorcery card in your graveyard | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | RememberChanged$ True | SubAbility$ DBPlay | SpellDescription$ Exile target instant or sorcery card from your graveyard. Copy it. You may cast the copy. +SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | Optional$ True | CopyCard$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Mill|Graveyard +Oracle:Read ahead (Choose a chapter and start with that many lore counters. Add one after your draw step. Skipped chapters don't trigger. Sacrifice after III.)\nI — You may cast an instant or sorcery spell with mana value 1 or 2 from your hand without paying its mana cost.\nII — Target player mills four cards.\nIII — Exile target instant or sorcery card from your graveyard. Copy it. You may cast the copy. diff --git a/forge-gui/res/cardsfolder/upcoming/love_song_of_night_and_day.txt b/forge-gui/res/cardsfolder/upcoming/love_song_of_night_and_day.txt new file mode 100644 index 00000000000..443f19b4f26 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/love_song_of_night_and_day.txt @@ -0,0 +1,9 @@ +Name:Love Song of Night and Day +ManaCost:2 W +Types:Enchantment Saga +K:Read ahead:3:DBDraw,DBToken,DBPutCounter +SVar:DBDraw:DB$ Draw | NumCards$ 2 | ValidTgts$ Opponent | Defined$ TargetedAndYou | SpellDescription$ You and target opponent each draw two cards. +SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ u_1_1_bird_flying | SpellDescription$ Create a 1/1 white Bird creature token with flying. +SVar:DBPutCounter:DB$ PutCounter | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on each of up to two target creatures. +DeckHas:Ability$Counters|Tokens +Oracle:Read ahead (Choose a chapter and start with that many lore counters. Add one after your draw step. Skipped chapters don't trigger. Sacrifice after III.)\nI — You and target opponent each draw two cards.\nII — Create a 1/1 white Bird creature token with flying.\nIII — Put a +1/+1 counter on each of up to two target creatures. diff --git a/forge-gui/res/cardsfolder/upcoming/phoenix_chick.txt b/forge-gui/res/cardsfolder/upcoming/phoenix_chick.txt new file mode 100644 index 00000000000..a5ad7e26ebd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/phoenix_chick.txt @@ -0,0 +1,14 @@ +Name:Phoenix Chick +ManaCost:R +Types:Creature Phoenix +PT:1/1 +K:Flying +K:Haste +K:CARDNAME can't block. +T:Mode$ AttackersDeclared | CheckSVar$ X | SVarCompare$ GE3 | Execute$ TrigReturn | NoResolvingCheck$ True | TriggerZones$ Graveyard | AttackingPlayer$ You | TriggerDescription$ Whenever you attack with three or more creatures, you may pay {R}{R}. If you do, return Phoenix Chick from your graveyard to the battlefield tapped and attacking with a +1/+1 counter on it. +SVar:TrigReturn:AB$ ChangeZone | Cost$ R R | Defined$ Self | Origin$ Graveyard | Destination$ Battlefield | Tapped$ True | Attacking$ True | WithCountersType$ P1P1 | WithCountersAmount$ 1 +SVar:X:Count$Valid Creature.attacking +SVar:DiscardMe:1 +SVar:SacMe:1 +DeckHas:Ability$Counters|Graveyard +Oracle:Flying, haste\nPhoenix Chick can't block.\nWhenever you attack with three or more creatures, you may pay {R}{R}. If you do, return Phoenix Chick from your graveyard to the battlefield tapped and attacking with a +1/+1 counter on it. diff --git a/forge-gui/res/cardsfolder/upcoming/quirion_beastcaller.txt b/forge-gui/res/cardsfolder/upcoming/quirion_beastcaller.txt new file mode 100644 index 00000000000..fa967050816 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/quirion_beastcaller.txt @@ -0,0 +1,12 @@ +Name:Quirion Beastcaller +ManaCost:1 G +Types:Creature Dryad Warrior +PT:2/2 +T:Mode$ SpellCast | ValidCard$ Card.Creature | ValidActivatingPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a creature spell, put a +1/+1 counter on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigCounterDist | TriggerDescription$ When CARDNAME dies, distribute X +1/+1 counters among any number of target creatures you control, where X is the number of +1/+1 counters on CARDNAME. +SVar:TrigCounterDist:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | ChoiceTitle$ Choose any number of creatures you control to distribute counters to | CounterType$ P1P1 | CounterNum$ X | DividedAsYouChoose$ X | TargetMin$ 1 | TargetMax$ X +SVar:X:TriggeredCard$CardCounters.P1P1 +SVar:BuffedBy:Creature +DeckHas:Ability$Counters +Oracle:Whenever you cast a creature spell, put a +1/+1 counter on Quirion Beastcaller.\nWhen Quirion Beastcaller dies, distribute X +1/+1 counters among any number of target creatures you control, where X is the number of +1/+1 counters on Quirion Beastcaller. diff --git a/forge-gui/res/cardsfolder/upcoming/shadow_rite_priest.txt b/forge-gui/res/cardsfolder/upcoming/shadow_rite_priest.txt new file mode 100644 index 00000000000..c64663a781a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/shadow_rite_priest.txt @@ -0,0 +1,9 @@ +Name:Shadow-Rite Priest +ManaCost:1 B +Types:Creature Human Cleric +PT:2/2 +S:Mode$ Continuous | Affected$ Cleric.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Clerics you control get +1/+1. +A:AB$ ChangeZone | Cost$ T 3 B B Sac<1/Cleric.Other> | Origin$ Library | Destination$ Battlefield | ChangeType$ Creature.Black | SpellDescription$ Search your library for a black creature card, put it onto the battlefield, then shuffle. +DeckHas:Ability$Sacrifice +DeckNeeds:Type$Cleric +Oracle:Other Clerics you control get +1/+1.\n{3}{B}{B}, {T}, Sacrifice another Cleric: Search your library for a black creature card, put it onto the battlefield, then shuffle. diff --git a/forge-gui/res/cardsfolder/upcoming/the_cruelty_of_gix.txt b/forge-gui/res/cardsfolder/upcoming/the_cruelty_of_gix.txt new file mode 100644 index 00000000000..38f0cec482c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_cruelty_of_gix.txt @@ -0,0 +1,10 @@ +Name:The Cruelty of Gix +ManaCost:3 B B +Types:Enchantment Saga +K:Read ahead:3:DBDiscard,DBTutor,DBReanimate +SVar:DBDiscard:DB$ Discard | ValidTgts$ Opponent | Mode$ RevealYouChoose | DiscardValid$ Card.Creature,Card.Planeswalker | NumCards$ 1 | SpellDescription$ Target opponent reveals their hand. You choose a creature or planeswalker card from it. That player discards that card. +SVar:DBTutor:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Card | SubAbility$ DBLoseLife | SpellDescription$ Search your library for a card, put that card into your hand, then shuffle. You lose 3 life. +SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 3 +SVar:DBReanimate:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | ValidTgts$ Creature | SpellDescription$ Put target creature card from a graveyard onto the battlefield under your control. +DeckHas:Ability$Discard +Oracle:Read ahead (Choose a chapter and start with that many lore counters. Add one after your draw step. Skipped chapters don't trigger. Sacrifice after III.)\nI — Target opponent reveals their hand. You choose a creature or planeswalker card from it. That player discards that card.\nII — Search your library for a card, put that card into your hand, then shuffle. You lose 3 life.\nIII — Put target creature card from a graveyard onto the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/upcoming/the_phasing_of_zhalfir.txt b/forge-gui/res/cardsfolder/upcoming/the_phasing_of_zhalfir.txt new file mode 100644 index 00000000000..1c6ae41df76 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_phasing_of_zhalfir.txt @@ -0,0 +1,15 @@ +Name:The Phasing of Zhalfir +ManaCost:2 U U +Types:Enchantment Saga +K:Read ahead:3:DBPhase,DBPhase,DBDestroyAll +SVar:DBPhase:DB$ Phases | ValidTgts$ Permanent.nonLand+Other | WontPhaseInNormal$ True | ConditionPresent$ Card.Self | SubAbility$ DBEffect | SpellDescription$ Another target nonland permanent phases out. It can't phase in for as long as you control CARDNAME. +SVar:DBEffect:DB$ Effect | Triggers$ TrigComeBack | RememberObjects$ Targeted | ImprintCards$ Self | ConditionPresent$ Card.Self | Duration$ Permanent | ForgetOnPhasedIn$ True +SVar:TrigComeBack:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsImprinted | Execute$ DBPhaseIn | TriggerZones$ Command | TriggerController$ TriggeredCardController | Static$ True +SVar:DBPhaseIn:DB$ Phases | Defined$ Remembered | PhaseInOrOut$ True | SubAbility$ DBExileSelf +SVar:DBExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self +SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Creature | RememberDestroyed$ True | SubAbility$ DBRepeat | SpellDescription$ Destroy all creatures. For each creature destroyed this way, its controller creates a 2/2 black Phyrexian creature token. +SVar:DBRepeat:DB$ RepeatEach | UseImprinted$ True | DefinedCards$ DirectRemembered | RepeatSubAbility$ DBToken | SubAbility$ DBCleanup | ChangeZoneTable$ True +SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenOwner$ ImprintedController | TokenScript$ b_2_2_phyrexian +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ true +DeckHas:Ability$Tokens +Oracle:Read ahead (Choose a chapter and start with that many lore counters. Add one after your draw step. Skipped chapters don't trigger. Sacrifice after III.)\nI, II — Another target nonland permanent phases out. It can't phase in for as long as you control The Phasing of Zhalfir.\nIII — Destroy all creatures. For each creature destroyed this way, its controller creates a 2/2 black Phyrexian creature token. diff --git a/forge-gui/res/cardsfolder/upcoming/the_world_spell.txt b/forge-gui/res/cardsfolder/upcoming/the_world_spell.txt new file mode 100644 index 00000000000..aeba6ea1ce2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_world_spell.txt @@ -0,0 +1,7 @@ +Name:The World Spell +ManaCost:5 G G +Types:Enchantment Saga +K:Read ahead:3:DBDig,DBDig,DBChangeZone +SVar:DBDig:DB$ Dig | DigNum$ 7 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Permanent.nonSaga | RestRandomOrder$ True | SpellDescription$ Look at the top seven cards of your library. You may reveal a non-Saga permanent card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Permanent.nonSaga | ChangeNum$ 2 | SpellDescription$ Put up to two non-Saga permanent cards from your hand onto the battlefield. +Oracle:Read ahead (Choose a chapter and start with that many lore counters. Add one after your draw step. Skipped chapters don't trigger. Sacrifice after III.)\nI, II — Look at the top seven cards of your library. You may reveal a non-Saga permanent card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\nIII — Put up to two non-Saga permanent cards from your hand onto the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/thran_portal.txt b/forge-gui/res/cardsfolder/upcoming/thran_portal.txt new file mode 100644 index 00000000000..715b1c846bc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/thran_portal.txt @@ -0,0 +1,12 @@ +Name:Thran Portal +ManaCost:no cost +Types:Land Gate +K:ETBReplacement:Other:LandTapped +SVar:LandTapped:DB$ Tap | Defined$ Self | ETB$ True | ConditionCheckSVar$ ETBCheckSVar2 | ConditionSVarCompare$ GT2 | SpellDescription$ CARDNAME enters the battlefield tapped unless you control two or fewer other lands. +K:ETBReplacement:Other:DBChooseBasic +SVar:DBChooseBasic:DB$ ChooseType | Type$ Basic Land | SpellDescription$ As CARDNAME enters the battlefield, choose a basic land type. +S:Mode$ Continuous | Affected$ Card.Self | AddType$ ChosenType | Description$ CARDNAME is the chosen type in addition to its other types. +S:Mode$ RaiseCost | Type$ Ability | ValidSpell$ Activated.ManaAbility | ValidCard$ Card.Self | Cost$ PayLife<1> | EffectZone$ All | Description$ Mana abilities of CARDNAME cost an additional 1 life to activate. +SVar:ETBCheckSVar2:Count$LastStateBattlefield Land.YouCtrl +AI:RemoveDeck:All +Oracle:Thran Portal enters the battlefield tapped unless you control two or fewer other lands.\nAs Thran Portal enters the battlefield, choose a basic land type.\nThran Portal is the chosen type in addition to its other types.\nMana abilities of Thran Portal cost an additional 1 life to activate. diff --git a/forge-gui/res/cardsfolder/upcoming/urborg_lhurgoyf.txt b/forge-gui/res/cardsfolder/upcoming/urborg_lhurgoyf.txt new file mode 100644 index 00000000000..6f216673478 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/urborg_lhurgoyf.txt @@ -0,0 +1,12 @@ +Name:Urborg Lhurgoyf +ManaCost:1 G +Types:Creature Lhurgoyf +PT:*/1+* +K:Kicker:U:B +K:ETBReplacement:Other:TrigMill +SVar:TrigMill:DB$ Mill | NumCards$ Z | Defined$ You | SpellDescription$ As CARDNAME enters the battlefield, mill three cards for each time it was kicked. +S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ Y | Description$ CARDNAME's power is equal to the number of creature cards in your graveyard and its toughness is equal to that number plus 1. +SVar:X:Count$TypeInYourYard.Creature +SVar:Y:SVar$X/Plus.1 +SVar:Z:Count$TimesKicked/Times.3 +Oracle:Kicker {U} and/or {B} (You may pay an additional {U} and/or {B} as you cast this spell.)\nAs Urborg Lhurgoyf enters the battlefield, mill three cards for each time it was kicked.\nUrborg Lhurgoyf's power is equal to the number of creature cards in your graveyard and its toughness is equal to that number plus 1. diff --git a/forge-gui/res/cardsfolder/upcoming/vodalian_hexcatcher.txt b/forge-gui/res/cardsfolder/upcoming/vodalian_hexcatcher.txt new file mode 100644 index 00000000000..2d680b8da87 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/vodalian_hexcatcher.txt @@ -0,0 +1,9 @@ +Name:Vodalian Hexcatcher +ManaCost:1 U +Types:Creature Merfolk Wizard +PT:1/1 +K:Flash +S:Mode$ Continuous | Affected$ Card.Merfolk+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Merfolk you control get +1/+1. +A:AB$ Counter | Cost$ 1 Sac<1/Merfolk> | TargetType$ Spell | UnlessCost$ 1 | ValidTgts$ Card.nonCreature | SpellDescription$ Sacrifice a Merfolk: Counter target noncreature spell unless its controller pays {1} +DeckHas:Ability$Sacrifice +Oracle:Flash\nOther Merfolk you control get +1/+1.\nSacrifice a Merfolk: Counter target noncreature spell unless its controller pays {1} diff --git a/forge-gui/res/cardsfolder/upcoming/yotia_declares_war.txt b/forge-gui/res/cardsfolder/upcoming/yotia_declares_war.txt new file mode 100644 index 00000000000..d27a52f9b58 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/yotia_declares_war.txt @@ -0,0 +1,11 @@ +Name:Yotia Declares War +ManaCost:1 R +Types:Enchantment Saga +K:Read ahead:3:DBToken,TrigTap,DBAnimate +SVar:DBToken:DB$ Token | TokenScript$ ornithopter | SpellDescription$ Create a 0/2 colorless Thopter artifact creature token with flying named Ornithopter. +SVar:TrigTap:AB$ ImmediateTrigger | Cost$ Mandatory tapXType | Execute$ DBDamage | SpellDescription$ Tap any number of untapped artifacts you control. When you do, CARDNAME deals that much damage to target creature or planeswalker. +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker | NumDmg$ X +SVar:X:Count$xPaid +SVar:DBAnimate:DB$ Animate | ValidTgts$ Artifact.YouCtrl | Power$ 4 | Toughness$ 4 | Types$ Artifact,Creature | SpellDescription$ Up to one target artifact you control becomes an artifact creature with base power and toughness 4/4 until end of turn. +DeckHas:Ability$Token & Type$Artifact +Oracle:Read ahead (Choose a chapter and start with that many lore counters. Add one after your draw step. Skipped chapters don't trigger. Sacrifice after III.)\nI — Create a 0/2 colorless Thopter artifact creature token with flying named Ornithopter.\nII — Tap any number of untapped artifacts you control. When you do, Yotia Declares War deals that much damage to target creature or planeswalker.\nIII — Up to one target artifact you control becomes an artifact creature with base power and toughness 4/4 until end of turn. diff --git a/forge-gui/res/editions/Dominaria United Commander.txt b/forge-gui/res/editions/Dominaria United Commander.txt index 23264d7a64a..963ffc9800e 100644 --- a/forge-gui/res/editions/Dominaria United Commander.txt +++ b/forge-gui/res/editions/Dominaria United Commander.txt @@ -135,7 +135,7 @@ ScryfallCode=DMC 127 C Thrill of Possibility @Izzy 128 C Abundant Growth @Vincent Proce 129 U Beast Within @Jesper Ejsing -130 U Cultivate @Anthony Palumbo +130 C Cultivate @Anthony Palumbo 131 C Explore @John Avon 132 U Explosive Vegetation @John Avon 133 C Farseek @Martina Pilcerova diff --git a/forge-gui/res/editions/Dominaria United.txt b/forge-gui/res/editions/Dominaria United.txt index 67775daad7a..6dea64c63c4 100644 --- a/forge-gui/res/editions/Dominaria United.txt +++ b/forge-gui/res/editions/Dominaria United.txt @@ -27,7 +27,7 @@ ScryfallCode=DMU 17 C Destroy Evil @Anna Christenson 18 C Griffin Protector @Omar Rayyan 19 R Guardian of New Benalia @Ernanda Souza -20 C Heroic Charge @Paul Scott Canavan +20 C Heroic Charge @Zoltan Boros 21 U Join Forces @Aurore Folny 22 C Juniper Order Rootweaver @Matt Stewart 23 U Knight of Dawn's Light @Billy Christian @@ -55,7 +55,7 @@ ScryfallCode=DMU 45 U Coral Colony @Campbell White 46 R Defiler of Dreams @Ryan Pancoast 47 U Djinn of the Fountain @Bastien L. Deharme -48 C Ertai's Scorn @Alex Negrea +48 U Ertai's Scorn @Alex Negrea 49 C Essence Scatter @Anastasia Ovchinnikova 50 U Founding the Third Path @Chris Seaman 51 U Frostfist Strider @Francisco Miyara @@ -172,7 +172,7 @@ ScryfallCode=DMU 162 U Elvish Hydromancer @Fajareka Setiawan 163 C Floriferous Vinewall @Jakub Kasper 164 C Gaea's Might @Alex Negrea -165 R Herd Migration @Antonio José Manzanedo +165 R Herd Migration @Eric Deschamps 166 C Hexbane Tortoise @Joshua Raphael 167 R Leaf-Crowned Visionary @Anna Steinbauer 168 U Linebreaker Baloth @Brent Hollowell @@ -420,7 +420,7 @@ ScryfallCode=DMU 410 M Shivan Devastator @Brent Hollowell 411 R Temporal Firestorm @Nestor Ossandon Leal 412 R Defiler of Vigor @Chase Stone -413 R Herd Migration @Antonio José Manzanedo +413 R Herd Migration @Eric Deschamps 414 R Leaf-Crowned Visionary @Anna Steinbauer 415 R Llanowar Greenwidow @Jokubas Uogintas 416 R Llanowar Loamspeaker @Zara Alfonso diff --git a/forge-gui/res/editions/Media Inserts.txt b/forge-gui/res/editions/Media Inserts.txt index 38d03e8105e..486328110c8 100644 --- a/forge-gui/res/editions/Media Inserts.txt +++ b/forge-gui/res/editions/Media Inserts.txt @@ -48,3 +48,4 @@ ScryfallCode=PMEI 45 R Bone Shredder @Ron Spencer 46 R Disenchant @Allen Williams 47 R Wild Growth @Pat Lewis +49 R Usher of the Fallen @Anastasia Ovchinnikova diff --git a/forge-gui/res/editions/The List.txt b/forge-gui/res/editions/The List.txt index 42ab8fa9990..81c2ec2b3fb 100644 --- a/forge-gui/res/editions/The List.txt +++ b/forge-gui/res/editions/The List.txt @@ -820,3 +820,78 @@ F567 R Puresteel Angel @Lukas Litzsinger 812 R Forsaken City @Dana Knutson 813 M Maze's End @Cliff Childs 814 U Underdark Rift @Chris Ostrowski +815 M Karn Liberated @Jason Chan +816 R Ajani's Last Stand @Slawomir Maniak +817 M Ajani, Strength of the Pride @Chris Rallis +818 C Benalish Infantry @Dan Frazier +819 R Dominaria's Judgment @John Avon +820 R Graceful Antelope @Heather Hudson +821 R Orim's Chant @Kev Walker +822 R Planar Collapse @Mark Zug +823 R Rout @Ron Spencer +824 C Teremko Griffin @Martin McKenna +825 R Braids, Conjurer Adept @Zoltan Boros +826 R Collective Restraint @Alan Rabinowitz +827 R Empress Galina @Matt Cavotta +828 R Ertai's Meddling @Steve Luke +829 U Ghost of Ramirez DePietro @Grzegorz Rutkowski +830 U Jodah's Avenger @Pete Venters +831 U Metathran Elite @Jim Nelson +832 C Probe @Eric Peterson +833 R Seahunter @Heather Hudson +834 U Teferi's Veil @Brom +835 R Whirlpool Warrior @Kev Walker +836 U Cast Down @Bastien L. Deharme +837 U Chain of Smog @Greg Staples +838 R Contamination @Stephen Daniele +839 C Crypt Rats @Paul Lee +840 C Dark Ritual @Tom Fleming +841 C Dash Hopes @Zoltan Boros +842 R Doomsday @Adrian Smith +843 U Hymn to Tourach @Greg Staples +844 U Imps' Taunt @Colin MacNeil +845 C Phyresis @Izzy +846 C Phyrexian Battleflies @Dan Frazier +847 M Phyrexian Scriptures @Joseph Meehan +848 M Sheoldred, Whispering One @Jana Schirmer +849 R Sleeper Agent @Randy Gallegos +850 U Stitch Together @Arnie Swekel +851 M Tourach, Dread Cantor @Greg Staples +852 R Alpine Moon @Alayna Danner +853 C Brightstone Ritual @Wayne England +854 C Burning Inquiry @Zoltan Boros +855 R Ghitu Fire @Glen Angus +856 R Invasion Plans @Pete Venters +857 R Jaya Ballard, Task Mage @Matt Cavotta +858 R Lovisa Coldeyes @Brian Snõddy +859 R Obliterate @Kev Walker +860 R Pandemonium @Pete Venters +861 R Skirk Fire Marshal @Greg Hildebrandt +862 U Viashino Heretic @Douglas Shuler +863 R Wake of Destruction @Todd Lockwood +864 U Wall of Granite @Kev Walker +865 U Elephant Grass @Tony Roberts +866 R Elvish Champion @D. Alexander Gregory +867 R Jedit Ojanen of Efrava @Carl Critchlow +868 R Magnigoth Treefolk @Peter Bollinger +869 R The Mending of Dominaria @Adam Paquette +870 U Riftsweeper @Brian Despain +871 C Cavern Harpy @Daren Bader +872 S Coalition Victory @Eric Peterson +873 R Ertai, the Corrupted @Mark Tedin +874 R Jhoira of the Ghitu @Kev Walker +875 R Kangee, Aerie Keeper @Mark Romanoski +876 M Prossh, Skyraider of Kher @Todd Lockwood +877 R Tsabo Tavoc @Michael Sutfin +878 M Vaevictis Asmadi, the Dire @Steven Belledin +879 U Wall of Denial @Howard Lyon +880 R Amber Prison @Donato Giancola +881 R Coalition Relic @Donato Giancola +882 R Helm of the Host @Igor Kieryluk +883 R Legacy Weapon @John Avon +884 U Phyrexian Furnace @George Pratt +885 C Phyrexian Walker @Bryan Talbot +886 M Scion of Draco @Greg Staples +887 U Shifting Wall @Michael Sutfin +888 U Desert @Glen Angus +889 U Dromar's Cavern @Franz Vohwinkel diff --git a/forge-gui/res/formats/Casual/Brawl.txt b/forge-gui/res/formats/Casual/Brawl.txt index 2b09f0def7c..89d11812902 100644 --- a/forge-gui/res/formats/Casual/Brawl.txt +++ b/forge-gui/res/formats/Casual/Brawl.txt @@ -3,5 +3,5 @@ Name:Brawl Order:101 Type:Casual Subtype:Commander -Sets:ZNR, KHM, STX, AFR, MID, VOW, NEO, SNC -Banned:Omnath, Locus of Creation; Pithing Needle +Sets:MID, VOW, NEO, SNC, DMU +Banned:Pithing Needle diff --git a/forge-gui/res/formats/Sanctioned/Historic.txt b/forge-gui/res/formats/Sanctioned/Historic.txt index d7f2555d826..7442f18f450 100644 --- a/forge-gui/res/formats/Sanctioned/Historic.txt +++ b/forge-gui/res/formats/Sanctioned/Historic.txt @@ -4,5 +4,5 @@ Type:Digital Subtype:Arena Effective:2019-11-21 Order:142 -Sets:XLN, RIX, DOM, M19, ANA, PANA, GRN, G18, RNA, WAR, M20, ELD, HA1, THB, HA2, IKO, HA3, M21, JMP, AJMP, AKR, ANB, ZNR, KLR, KHM, HA4, STX, STA, HA5, AFR, J21, MID, VOW, YMID, NEO, YNEO, SNC, YSNC, HBG, HA6, EA1 +Sets:XLN, RIX, DOM, M19, ANA, PANA, GRN, G18, RNA, WAR, M20, ELD, HA1, THB, HA2, IKO, HA3, M21, JMP, AJMP, AKR, ANB, ZNR, KLR, KHM, HA4, STX, STA, HA5, AFR, J21, MID, VOW, YMID, NEO, YNEO, SNC, YSNC, HBG, HA6, EA1, DMU Banned:Agent of Treachery; Brainstorm; Channel; Counterspell; Dark Ritual; Demonic Tutor; Field of the Dead; Lightning Bolt; Memory Lapse; Natural Order; Nexus of Fate; Oko, Thief of Crowns; Once Upon a Time; Swords to Plowshares; Thassa's Oracle; Tibalt's Trickery; Time Warp; Uro, Titan of Nature's Wrath; Veil of Summer; Wilderness Reclamation diff --git a/forge-gui/res/formats/Sanctioned/Legacy.txt b/forge-gui/res/formats/Sanctioned/Legacy.txt index 18f9fa1b26c..d5c58ba7f6e 100644 --- a/forge-gui/res/formats/Sanctioned/Legacy.txt +++ b/forge-gui/res/formats/Sanctioned/Legacy.txt @@ -3,5 +3,5 @@ Name:Legacy Order:105 Subtype:Legacy Type:Sanctioned -Sets:LEA, LEB, 2ED, ARN, ATQ, 3ED, LEG, DRC94, DRK, FEM, ARENA, WW, FS, SHC, 4ED, ICE, CHR, HML, ALL, MIR, VIS, 5ED, POR, WTH, TMP, STH, EXO, PO2, USG, ATH, ULG, 6ED, UDS, S99, PTK, MMQ, BRB, NMS, S00, PCY, BTD, INV, PLS, 7ED, APC, ODY, DKM, TOR, JUD, ONS, LGN, SCG, 8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, MED, LRW, DD1, MOR, SHM, EVE, DRB, ME2, ALA, DD2, CFX, DDC, ARB, M10, TD0, V09, ME3, ZEN, DDD, H09, WWK, DDE, ROE, DPA, M11, V10, DDF, SOM, TD1, PD2, ME4, MBS, DDG, NPH, TD2, COM, M12, V11, DDH, ISD, PD3, DKA, DDI, AVR, M13, V12, DDJ, RTR, CM1, GTC, DDK, DGM, MMA, M14, V13, DDL, THS, C13, BNG, DDM, JOU, MD1, CNS, VMA, M15, V14, DDN, KTK, C14, DVD, EVG, GVL, JVC, FRF, UGF, DDO, DTK, TPR, MM2, ORI, V15, DDP, BFZ, EXP, C15, PZ1, OGW, DDQ, SOI, W16, EMA, EMN, V16, CN2, DDR, KLD, MPS_KLD, C16, PZ2, AER, MM3, DDS, AKH, MPS_AKH, W17, CMA, HOU, C17, XLN, DDT, IMA, V17, RIX, A25, DDU, DOM, CM2, BBD, SS1, GS1, M19, C18, GRN, MPS_GRN, GK1, G18, GNT, UMA, RNA, MPS_RNA, GK2, WAR, MPS_WAR, MH1, SS2, M20, C19, ELD, MB1, GN2, SLD, THB, IKO, C20, SS3, M21, JMP, 2XM, ZNR, ZNE, ZNC, CMR, CC1, KHM, KHC, TSR, STX, STA, C21, MH2, H1R, AFR, AFC, MID, MIC, VOW, VOC, DBL, CC2, NEO, NEC, SNC, NCC, SLX, CLB, 2X2 +Sets:LEA, LEB, 2ED, ARN, ATQ, 3ED, LEG, DRC94, DRK, FEM, ARENA, WW, FS, SHC, 4ED, ICE, CHR, HML, ALL, MIR, VIS, 5ED, POR, WTH, TMP, STH, EXO, PO2, USG, ATH, ULG, 6ED, UDS, S99, PTK, MMQ, BRB, NMS, S00, PCY, BTD, INV, PLS, 7ED, APC, ODY, DKM, TOR, JUD, ONS, LGN, SCG, 8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, MED, LRW, DD1, MOR, SHM, EVE, DRB, ME2, ALA, DD2, CFX, DDC, ARB, M10, TD0, V09, ME3, ZEN, DDD, H09, WWK, DDE, ROE, DPA, M11, V10, DDF, SOM, TD1, PD2, ME4, MBS, DDG, NPH, TD2, COM, M12, V11, DDH, ISD, PD3, DKA, DDI, AVR, M13, V12, DDJ, RTR, CM1, GTC, DDK, DGM, MMA, M14, V13, DDL, THS, C13, BNG, DDM, JOU, MD1, CNS, VMA, M15, V14, DDN, KTK, C14, DVD, EVG, GVL, JVC, FRF, UGF, DDO, DTK, TPR, MM2, ORI, V15, DDP, BFZ, EXP, C15, PZ1, OGW, DDQ, SOI, W16, EMA, EMN, V16, CN2, DDR, KLD, MPS_KLD, C16, PZ2, AER, MM3, DDS, AKH, MPS_AKH, W17, CMA, HOU, C17, XLN, DDT, IMA, V17, RIX, A25, DDU, DOM, CM2, BBD, SS1, GS1, M19, C18, GRN, MPS_GRN, GK1, G18, GNT, UMA, RNA, MPS_RNA, GK2, WAR, MPS_WAR, MH1, SS2, M20, C19, ELD, MB1, GN2, SLD, THB, IKO, C20, SS3, M21, JMP, 2XM, ZNR, ZNE, ZNC, CMR, CC1, KHM, KHC, TSR, STX, STA, C21, MH2, H1R, AFR, AFC, MID, MIC, VOW, VOC, DBL, CC2, NEO, NEC, SNC, NCC, SLX, CLB, 2X2, DMU, DMC Banned:Advantageous Proclamation; Adriana's Valor; Amulet of Quoz; Ancestral Recall; Arcum's Astrolabe; Assemble the Rank and Vile; Backup Plan; Balance; Bazaar of Baghdad; Black Lotus; Brago's Favor; Bronze Tablet; Channel; Chaos Orb; Cleanse; Contract from Below; Crusade; Darkpact; Deathrite Shaman; Demonic Attorney; Demonic Consultation; Demonic Tutor; Dig Through Time; Double Stroke; Dreadhorde Arcanist; Earthcraft; Echoing Boon; Emissary's Ploy; Falling Star; Fastbond; Flash; Frantic Search; Gitaxian Probe; Goblin Recruiter; Gush; Hermit Druid; Hired Heist; Hold the Perimeter; Hymn of the Wilds; Immediate Action; Imperial Seal; Imprison; Incendiary Dissent; Invoke Prejudice; Iterative Analysis; Jeweled Bird; Jihad; Library of Alexandria; Lurrus of the Dream-Den; Mana Crypt; Mana Drain; Mana Vault; Memory Jar; Mental Misstep; Mind Twist; Mind's Desire; Mishra's Workshop; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Muzzio's Preparations; Mystical Tutor; Natural Unity; Necropotence; Oath of Druids; Oko, Thief of Crowns; Power Play; Pradesh Gypsies; Ragavan, Nimble Pilferer; Rebirth; Secret Summoning; Secrets of Paradise; Sensei's Divining Top; Sentinel Dispatch; Shahrazad; Skullclamp; Sol Ring; Sovereign's Realm; Stone-Throwing Devils; Strip Mine; Summoner's Bond; Survival of the Fittest; Tempest Efreet; Time Vault; Time Walk; Timetwister; Timmerian Fiends; Tinker; Tolarian Academy; Treasure Cruise; Underworld Breach; Unexpected Potential; Vampiric Tutor; Weight Advantage; Wheel of Fortune; Windfall; Worldknit; Wrenn and Six; Yawgmoth's Bargain; Yawgmoth's Will; Zirda, the Dawnwaker diff --git a/forge-gui/res/formats/Sanctioned/Modern.txt b/forge-gui/res/formats/Sanctioned/Modern.txt index e478071aedb..ccd64ea3e56 100644 --- a/forge-gui/res/formats/Sanctioned/Modern.txt +++ b/forge-gui/res/formats/Sanctioned/Modern.txt @@ -3,5 +3,5 @@ Name:Modern Order:103 Subtype:Modern Type:Sanctioned -Sets:8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, LRW, MOR, SHM, EVE, ALA, CFX, ARB, M10, ZEN, WWK, ROE, DPA, M11, SOM, MBS, NPH, M12, ISD, DKA, AVR, M13, RTR, GTC, DGM, MMA, M14, THS, BNG, JOU, MD1, M15, KTK, FRF, DTK, MM2, ORI, BFZ, OGW, SOI, W16, EMN, KLD, AER, MM3, W17, AKH, HOU, XLN, RIX, DOM, M19, GRN, GK1, G18, RNA, GK2, WAR, MH1, M20, ELD, THB, IKO, M21, ZNR, KHM, TSR, STX, MH2, AFR, MID, VOW, DBL, NEO, SNC +Sets:8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, LRW, MOR, SHM, EVE, ALA, CFX, ARB, M10, ZEN, WWK, ROE, DPA, M11, SOM, MBS, NPH, M12, ISD, DKA, AVR, M13, RTR, GTC, DGM, MMA, M14, THS, BNG, JOU, MD1, M15, KTK, FRF, DTK, MM2, ORI, BFZ, OGW, SOI, W16, EMN, KLD, AER, MM3, W17, AKH, HOU, XLN, RIX, DOM, M19, GRN, GK1, G18, RNA, GK2, WAR, MH1, M20, ELD, THB, IKO, M21, ZNR, KHM, TSR, STX, MH2, AFR, MID, VOW, DBL, NEO, SNC, DMU Banned:Ancient Den; Arcum's Astrolabe; Birthing Pod; Blazing Shoal; Bridge from Below; Chrome Mox; Cloudpost; Dark Depths; Deathrite Shaman; Dig Through Time; Dread Return; Eye of Ugin; Faithless Looting; Field of the Dead; Gitaxian Probe; Glimpse of Nature; Golgari Grave-Troll; Great Furnace; Green Sun's Zenith; Hogaak, Arisen Necropolis; Hypergenesis; Krark-Clan Ironworks; Lurrus of the Dream-Den; Mental Misstep; Mox Opal; Mycosynth Lattice; Mystic Sanctuary; Oko, Thief of Crowns; Once Upon a Time; Ponder; Preordain; Punishing Fire; Rite of Flame; Seat of the Synod; Second Sunrise; Seething Song; Sensei's Divining Top; Simian Spirit Guide; Skullclamp; Splinter Twin; Summer Bloom; Tibalt's Trickery; Treasure Cruise; Tree of Tales; Umezawa's Jitte; Uro, Titan of Nature's Wrath; Vault of Whispers diff --git a/forge-gui/res/formats/Sanctioned/Pioneer.txt b/forge-gui/res/formats/Sanctioned/Pioneer.txt index 4d6b30874a7..f473b69bf09 100644 --- a/forge-gui/res/formats/Sanctioned/Pioneer.txt +++ b/forge-gui/res/formats/Sanctioned/Pioneer.txt @@ -3,5 +3,5 @@ Name:Pioneer Order:102 Subtype:Pioneer Type:Sanctioned -Sets:RTR, GTC, DGM, M14, THS, BNG, JOU, M15, KTK, FRF, DTK, ORI, BFZ, OGW, SOI, W16, EMN, KLD, AER, W17, AKH, HOU, XLN, RIX, DOM, M19, GRN, G18, RNA, WAR, M20, ELD, THB, IKO, M21, ZNR, KHM, STX, AFR, MID, VOW, DBL, NEO, SNC +Sets:RTR, GTC, DGM, M14, THS, BNG, JOU, M15, KTK, FRF, DTK, ORI, BFZ, OGW, SOI, W16, EMN, KLD, AER, W17, AKH, HOU, XLN, RIX, DOM, M19, GRN, G18, RNA, WAR, M20, ELD, THB, IKO, M21, ZNR, KHM, STX, AFR, MID, VOW, DBL, NEO, SNC, DMU Banned:Balustrade Spy; Bloodstained Mire; Expressive Iteration; Felidar Guardian; Field of the Dead; Flooded Strand; Inverter of Truth; Kethis, the Hidden Hand; Leyline of Abundance; Lurrus of the Dream-Den; Nexus of Fate; Oko, Thief of Crowns; Once Upon a Time; Polluted Delta; Smuggler's Copter; Teferi, Time Raveler; Undercity Informer; Underworld Breach; Uro, Titan of Nature's Wrath; Veil of Summer; Walking Ballista; Wilderness Reclamation; Windswept Heath; Winota, Joiner of Forces; Wooded Foothills diff --git a/forge-gui/res/formats/Sanctioned/Standard.txt b/forge-gui/res/formats/Sanctioned/Standard.txt index b55ad5dd5f8..2976159e38f 100644 --- a/forge-gui/res/formats/Sanctioned/Standard.txt +++ b/forge-gui/res/formats/Sanctioned/Standard.txt @@ -3,5 +3,4 @@ Name:Standard Order:101 Subtype:Standard Type:Sanctioned -Sets:ZNR, KHM, STX, AFR, MID, VOW, NEO, SNC -Banned:Alrund's Epiphany; Divide by Zero; Faceless Haven; Omnath, Locus of Creation +Sets:MID, VOW, NEO, SNC, DMU diff --git a/forge-gui/res/formats/Sanctioned/Vintage.txt b/forge-gui/res/formats/Sanctioned/Vintage.txt index 9be7cda5362..7e6c36df1c6 100644 --- a/forge-gui/res/formats/Sanctioned/Vintage.txt +++ b/forge-gui/res/formats/Sanctioned/Vintage.txt @@ -3,6 +3,6 @@ Name:Vintage Order:104 Subtype:Vintage Type:Sanctioned -Sets:LEA, LEB, 2ED, ARN, ATQ, 3ED, LEG, DRC94, DRK, FEM, ARENA, WW, FS, SHC, 4ED, ICE, CHR, HML, ALL, MIR, VIS, 5ED, POR, WTH, TMP, STH, EXO, PO2, USG, ATH, ULG, 6ED, UDS, S99, PTK, MMQ, BRB, NMS, S00, PCY, BTD, INV, PLS, 7ED, APC, ODY, DKM, TOR, JUD, ONS, LGN, SCG, 8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, MED, LRW, DD1, MOR, SHM, EVE, DRB, ME2, ALA, DD2, CFX, DDC, ARB, M10, TD0, V09, ME3, ZEN, DDD, H09, WWK, DDE, ROE, DPA, M11, V10, DDF, SOM, TD1, PD2, ME4, MBS, DDG, NPH, TD2, COM, M12, V11, DDH, ISD, PD3, DKA, DDI, AVR, M13, V12, DDJ, RTR, CM1, GTC, DDK, DGM, MMA, M14, V13, DDL, THS, C13, BNG, DDM, JOU, MD1, CNS, VMA, M15, V14, DDN, KTK, C14, DVD, EVG, GVL, JVC, FRF, UGF, DDO, DTK, TPR, MM2, ORI, V15, DDP, BFZ, EXP, C15, PZ1, OGW, DDQ, SOI, W16, EMA, EMN, V16, CN2, DDR, KLD, MPS_KLD, C16, PZ2, AER, MM3, DDS, AKH, MPS_AKH, W17, CMA, HOU, C17, XLN, DDT, IMA, V17, RIX, A25, DDU, DOM, CM2, BBD, SS1, GS1, M19, C18, GRN, MPS_GRN, GK1, G18, GNT, UMA, RNA, MPS_RNA, GK2, WAR, MPS_WAR, MH1, SS2, M20, C19, ELD, MB1, GN2, SLD, THB, IKO, C20, SS3, M21, JMP, 2XM, ZNR, ZNE, ZNC, CMR, CC1, KHM, KHC, TSR, STX, STA, C21, MH2, H1R, AFR, AFC, MID, MIC, VOW, VOC, DBL, CC2, NEO, NEC, SNC, NCC, SLX, CLB, 2X2 +Sets:LEA, LEB, 2ED, ARN, ATQ, 3ED, LEG, DRC94, DRK, FEM, ARENA, WW, FS, SHC, 4ED, ICE, CHR, HML, ALL, MIR, VIS, 5ED, POR, WTH, TMP, STH, EXO, PO2, USG, ATH, ULG, 6ED, UDS, S99, PTK, MMQ, BRB, NMS, S00, PCY, BTD, INV, PLS, 7ED, APC, ODY, DKM, TOR, JUD, ONS, LGN, SCG, 8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, MED, LRW, DD1, MOR, SHM, EVE, DRB, ME2, ALA, DD2, CFX, DDC, ARB, M10, TD0, V09, ME3, ZEN, DDD, H09, WWK, DDE, ROE, DPA, M11, V10, DDF, SOM, TD1, PD2, ME4, MBS, DDG, NPH, TD2, COM, M12, V11, DDH, ISD, PD3, DKA, DDI, AVR, M13, V12, DDJ, RTR, CM1, GTC, DDK, DGM, MMA, M14, V13, DDL, THS, C13, BNG, DDM, JOU, MD1, CNS, VMA, M15, V14, DDN, KTK, C14, DVD, EVG, GVL, JVC, FRF, UGF, DDO, DTK, TPR, MM2, ORI, V15, DDP, BFZ, EXP, C15, PZ1, OGW, DDQ, SOI, W16, EMA, EMN, V16, CN2, DDR, KLD, MPS_KLD, C16, PZ2, AER, MM3, DDS, AKH, MPS_AKH, W17, CMA, HOU, C17, XLN, DDT, IMA, V17, RIX, A25, DDU, DOM, CM2, BBD, SS1, GS1, M19, C18, GRN, MPS_GRN, GK1, G18, GNT, UMA, RNA, MPS_RNA, GK2, WAR, MPS_WAR, MH1, SS2, M20, C19, ELD, MB1, GN2, SLD, THB, IKO, C20, SS3, M21, JMP, 2XM, ZNR, ZNE, ZNC, CMR, CC1, KHM, KHC, TSR, STX, STA, C21, MH2, H1R, AFR, AFC, MID, MIC, VOW, VOC, DBL, CC2, NEO, NEC, SNC, NCC, SLX, CLB, 2X2, DMU, DMC Restricted:Ancestral Recall; Balance; Black Lotus; Brainstorm; Chalice of the Void; Channel; Demonic Consultation; Demonic Tutor; Dig Through Time; Flash; Gitaxian Probe; Golgari Grave-Troll; Gush; Imperial Seal; Karn, the Great Creator; Library of Alexandria; Lion's Eye Diamond; Lodestone Golem; Lotus Petal; Mana Crypt; Mana Vault; Memory Jar; Mental Misstep; Merchant Scroll; Mind's Desire; Monastery Mentor; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Mystic Forge; Mystical Tutor; Narset, Parter of Veils; Necropotence; Ponder; Sol Ring; Strip Mine; Thorn of Amethyst; Time Vault; Time Walk; Timetwister; Tinker; Tolarian Academy; Treasure Cruise; Trinisphere; Vampiric Tutor; Wheel of Fortune; Windfall; Yawgmoth's Will Banned:Adriana's Valor; Advantageous Proclamation; Amulet of Quoz; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Bronze Tablet; Chaos Orb; Cleanse; Contract from Below; Crusade; Darkpact; Demonic Attorney; Double Stroke; Echoing Boon; Emissary's Ploy; Falling Star; Hired Heist; Hold the Perimeter; Hymn of the Wilds; Immediate Action; Imprison; Incendiary Dissent; Invoke Prejudice; Iterative Analysis; Jeweled Bird; Jihad; Muzzio's Preparations; Natural Unity; Power Play; Pradesh Gypsies; Rebirth; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Shahrazad; Sovereign's Realm; Stone-Throwing Devils; Summoner's Bond; Tempest Efreet; Timmerian Fiends; Unexpected Potential; Weight Advantage; Worldknit diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 61c024a14e0..bdf60af4ff4 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -2241,6 +2241,7 @@ lblSubtype=Untertyp lblGenericCost=Generische Kosten lblManaCost=Mana-Kosten lblFirstPrinting=Erstdruck +lblArtist=Artist lblAverageCMC=Durchschnittlicher Manabetrag lblMainDeck=Hauptdeck lblMainDeckSize=Größe Hauptdeck diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index 418ea0c7a31..3857d55185b 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -2239,6 +2239,7 @@ lblSubtype=Subtype lblGenericCost=Generic Cost lblManaCost=Mana Cost lblFirstPrinting=First Printing +lblArtist=Artist lblAverageCMC=Average Mana Value lblMainDeck=Main Deck lblMainDeckSize=Main Deck Size diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index 6d276328b86..30c51b5b69c 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -2239,6 +2239,7 @@ lblSubtype=Subtipo lblGenericCost=Coste Genérico lblManaCost=Coste de maná lblFirstPrinting=Primera impresión +lblArtist=Artist lblAverageCMC=Media de CMC lblMainDeck=Mazo principal lblMainDeckSize=Tamaño del mazo principal diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index e8e0a4838f8..6d33b8ed6b9 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -2238,6 +2238,7 @@ lblSubtype=Sottotipo lblGenericCost=Costo generico lblManaCost=Costo di mana lblFirstPrinting=Prima stampa +lblArtist=Artist lblAverageCMC=CMC medio lblMainDeck=Mazzo lblMainDeckSize=Dimensione del mazzo diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index 4615c61800a..dbe86649671 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -2238,6 +2238,7 @@ lblSubtype=サブタイプ lblGenericCost=不特定コスト lblManaCost=マナコスト lblFirstPrinting=初版 +lblArtist=Artist lblAverageCMC=マナ総量平均 lblMainDeck=メインデッキ lblMainDeckSize=メインデッキ枚数 diff --git a/forge-gui/res/languages/pt-BR.properties b/forge-gui/res/languages/pt-BR.properties index bc6a529ee73..d710049340c 100644 --- a/forge-gui/res/languages/pt-BR.properties +++ b/forge-gui/res/languages/pt-BR.properties @@ -2308,6 +2308,7 @@ lblSubtype=Subtipo lblGenericCost=Custo Genérico lblManaCost=Custo de Mana lblFirstPrinting=Primeira Impressão +lblArtist=Artist lblAverageCMC=Valor Médio de Mana lblMainDeck=Deck Principal lblMainDeckSize=Tamanho do Deck Principal diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index 8e5b4c654f3..326a2e5b0b4 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -2240,6 +2240,7 @@ lblSubtype=副类别 lblGenericCost=无色费用 lblManaCost=法术力费用 lblFirstPrinting=第一次印刷 +lblArtist=Artist lblAverageCMC=平均法术力值 lblMainDeck=主牌 lblMainDeckSize=主牌大小 diff --git a/forge-gui/res/tokenscripts/b_2_2_phyrexian.txt b/forge-gui/res/tokenscripts/b_2_2_phyrexian.txt new file mode 100644 index 00000000000..a179bb0dc23 --- /dev/null +++ b/forge-gui/res/tokenscripts/b_2_2_phyrexian.txt @@ -0,0 +1,6 @@ +Name:Phyrexian Token +ManaCost:no cost +Types:Creature Phyrexian +Colors:black +PT:2/2 +Oracle: diff --git a/forge-gui/res/tokenscripts/ornithopter.txt b/forge-gui/res/tokenscripts/ornithopter.txt new file mode 100644 index 00000000000..4229458063e --- /dev/null +++ b/forge-gui/res/tokenscripts/ornithopter.txt @@ -0,0 +1,6 @@ +Name:Ornithopter +ManaCost:no cost +PT:0/2 +Types:Artifact Creature Thopter +K:Flying +Oracle:Flying diff --git a/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java b/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java index 050db00b4fb..61886e98541 100644 --- a/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java +++ b/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java @@ -299,6 +299,12 @@ public class AdvancedSearch { return cards.get(0) == input; } }), + CARD_ARTIST("lblArtist", PaperCard.class, FilterOperator.STRING_OPS, new StringEvaluator() { + @Override + protected String getItemValue(PaperCard input) { + return input.getArtist(); + } + }), INVITEM_NAME("lblName", InventoryItem.class, FilterOperator.STRING_OPS, new StringEvaluator() { @Override protected String getItemValue(InventoryItem input) {