From f3f9da663d9aa7668607a2ac4024136c46a04ff1 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+MikeS-NZ@users.noreply.github.com> Date: Tue, 4 Apr 2023 10:00:58 -0500 Subject: [PATCH 01/98] MOM: 5 more Legends MOM: Add card scripts for five spoiled MOM cards: - Djeru and Hazoret - Kroxa and Kunoros - Rona, Herald of Invasion // Rona, Tolarian Obliterator - Sheoldred // The True Scriptures - Urabrask // The Great Work --- .../upcoming/djeru_and_hazoret.txt | 14 ++++++++ .../upcoming/kroxa_and_kunoros.txt | 18 ++++++++++ ..._of_invasion_rona_tolarian_obliterator.txt | 29 +++++++++++++++ .../sheoldred_the_true_scriptures.txt | 31 ++++++++++++++++ .../upcoming/urabrask_the_great_work.txt | 36 +++++++++++++++++++ 5 files changed, 128 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt diff --git a/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt b/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt new file mode 100644 index 00000000000..07ad46e5457 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt @@ -0,0 +1,14 @@ +Name:Djeru and Hazoret +ManaCost:2 R R W +Types:Legendary Creature Human God +PT:5/4 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Vigilance & Haste | CheckSVar$ X | SVarCompare$ LE1 | Description$ As long as you have one or fewer cards in hand, CARDNAME has vigilance and haste. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ Whenever CARDNAME attacks, look at the top six cards of your library. You may exile a legendary creature card from among them. Put the rest on the bottom of your library in a random order. Until end of turn, you may cast the exiled card without paying its mana cost. +SVar:TrigDig:DB$ Dig | DigNum$ 6 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature.Legendary | DestinationZone$ Exile | DestinationZone2$ Library | LibraryPosition$ -1 | RestRandomOrder$ True | RememberChanged$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | StaticAbilities$ MayPlay | RememberObjects$ Remembered | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:MayPlay:Mode$ Continuous | MayPlay$ True | MayPlayWithoutManaCost$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until end of turn, you may cast this card without paying its mana cost. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$InYourHand +SVar:PlayMain1:TRUE +DeckNeeds:Type$Legendary +Oracle:As long as you have one or fewer cards in hand, Dieru and Hazoret has vigilance and haste.\nWhenever Djeru and Hazoret attacks, look at the top six cards of your library. You may exile a legendary creature card from among them. Put the rest on the bottom of your library in a random order. Until end of turn, you may cast the exiled card without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt b/forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt new file mode 100644 index 00000000000..18849576079 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt @@ -0,0 +1,18 @@ +Name:Kroxa and Kunoros +ManaCost:3 R W B +Types:Legendary Creature Elder Giant Dog +PT:6/6 +K:Vigilance +K:Menace +K:Lifelink +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigImmediateTrig | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may exile five cards from your graveyard. When you do, return target creature card from your graveyard to the battlefield. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigImmediateTrig | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may exile five cards from your graveyard. When you do, return target creature card from your graveyard to the battlefield. +SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ ExileFromGrave<5/card> | Execute$ TrigReturn | SpellDescription$ When you do, return target creature card from your graveyard to the battlefield. +SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature to return from your graveyard +DeckHas:Ability$Graveyard +DeckHints:Ability$Discard +SVar:NeedsToPlayVar:Z EQ6 +SVar:X:Count$InYourYard/LimitMax.6 +SVar:Y:Count$TypeInYourYard.Creature/LimitMax.1 +SVar:Z:SVar$X/Times.Y +Oracle:Vigilance, menace, lifelink\nWhenever Kroxa and Kunoros enters the battlefield or attacks, you may exile five cards from your graveyard. When you do, return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt b/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt new file mode 100644 index 00000000000..8a5524b5e5a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt @@ -0,0 +1,29 @@ +Name:Rona, Herald of Invasion +ManaCost:1 U +Types:Legendary Creature Human Wizard +PT:1/3 +T:Mode$ SpellCast | ValidCard$ Card.Legendary | ValidActivatingPlayer$ You | Execute$ TrigUntap | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a legendary spell, untap CARDNAME. +SVar:TrigUntap:DB$ Untap | Defined$ Self +A:AB$ Draw | Cost$ T | NumCards$ 1 | SpellDescription$ Draw a card, then discard a card. | SubAbility$ DBDiscard +SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +A:AB$ SetState | Cost$ 5 BP | Defined$ Self | Mode$ Transform | SorcerySpeed$ True | AILogic$ Always | SpellDescription$ Transform NICKNAME. Activate only as a sorcery. +AlternateMode:DoubleFaced +SVar:BuffedBy:Card.Legendary +DeckHas:Ability$Discard|Graveyard +Oracle:Whenever you cast a legendary spell, untap Rona, Herald of Invasion.\n{T}: Draw a card, then discard a card.\n{5}{B/P}: Transform Rona. Activate only as a sorcery. ({B/P} can be paid with either {B} or 2 life.) + +ALTERNATE + +Name:Rona, Tolarian Obliterator +ManaCost:no cost +Colors:blue,black +Types:Legendary Creature Phyrexian Wizard +PT:5/5 +K:Trample +T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigExile | TriggerDescription$ Whenever a source deals damage to CARDNAME, that source's controller exiles a card from their hand at random. If it's a land card, you may put it onto the battlefield under your control. Otherwise, you may cast it without paying its mana cost. +SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ TriggeredSourceController | Mandatory$ True | ChangeType$ Card | Hidden$ True | IsCurse$ True | AtRandom$ True | RememberChanged$ True | SubAbility$ DBRonaLand +SVar:DBRonaLand:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | ChangeType$ Land.IsRemembered | Hidden$ True | Optional$ True | GainControl$ True | SubAbility$ DBRonaPlay +SVar:DBRonaPlay:DB$ Play | ValidZone$ Exile | Controller$ You | Valid$ Card.IsRemembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBRonaCleanup +SVar:DBRonaCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:HasCombatEffect:TRUE +Oracle:Trample\nWhenever a source deals damage to Rona, Tolarian Obliterator, that source's controller exiles a card from their hand at random. If it's a land card, you may put it onto the battlefield under your control. Otherwise, you may cast it without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt b/forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt new file mode 100644 index 00000000000..bbb38a10a75 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt @@ -0,0 +1,31 @@ +Name:Sheoldred +ManaCost:3 B B +Types:Creature Phyrexian Praetor +PT:4/5 +K:Menace +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBSacrifice | TriggerDescription$ When CARDNAME enters the battlefield, each opponent sacrifices a nontoken creature or planeswalker. +SVar:DBSacrifice:DB$ Sacrifice | Defined$ Opponent | SacValid$ Creature.nonToken,Planeswalker.nonToken | SacMessage$ nontoken creature or planeswalker +A:AB$ ChangeZone | Cost$ 4 B | CheckSVar$ X | SVarCompare$ GE8 | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SorcerySpeed$ True | StackDescription$ SpellDescription | SpellDescription$ Exile CARDNAME, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if an opponent has eight or more cards in their graveyard. +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup | StackDescription$ None +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:PlayerCountOpponents$HighestCardsInGraveyard +DeckHints:Ability$Graveyard|Mill +AlternateMode:DoubleFaced +Oracle:Menace\nWhen Sheoldred enters the battlefield, each opponent sacrifices a nontoken creature or planeswalker.\n{4}{B}: Exile Sheoldred, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if an opponent has eight or more cards in their graveyard. + +ALTERNATE + +Name:The True Scriptures +ManaCost:no cost +Colors:black +Types:Enchantment Saga +K:Saga:3:DBDestroy,DBDiscard,DBRiseAll +SVar:DBDestroy:DB$ Destroy | ValidTgts$ Creature.OppCtrl,Planeswalker.OppCtrl | TgtPrompt$ For each opponent, select up to one target creature or planeswalker | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True | SpellDescription$ For each opponent, destroy up to one target creature or planeswalker that player controls. +SVar:DBDiscard:DB$ Discard | Defined$ Opponent | NumCards$ 3 | Mode$ TgtChoose | SubAbility$ DBMill | SpellDescription$ Each opponent discards three cards, then mills three cards. +SVar:DBMill:DB$ Mill | Defined$ Opponent | NumCards$ 3 | StackDescription$ None +SVar:DBRiseAll:DB$ ChangeZoneAll | ChangeType$ Creature | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SubAbility$ DBExileSelf | SpellDescription$ Put all creature cards in all graveyards onto the battlefield under your control. Exile CARDNAME, then return it to the battlefield (front face up). +SVar:DBExileSelf:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBReturnSelf | RememberChanged$ True +SVar:DBReturnSelf:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:OneEach:PlayerCountOpponents$Amount +Oracle:(As this Saga enters and after your draw step, add a lore counter.)\nI — For each opponent, destroy up to one target creature or planeswalker that player controls.\nII — Each opponent discards three cards, then mills three cards.\nIII — Put all creature cards from all graveyards onto the battlefield under your control. Exile The True Scriptures, then return it to the battlefield (front face up). diff --git a/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt b/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt new file mode 100644 index 00000000000..81d30be8a58 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt @@ -0,0 +1,36 @@ +Name:Urabrask +ManaCost:2 R R +Types:Legendary Creature Phyrexian Praetor +PT:4/4 +K:First Strike +T:Mode$ SpellCast | ValidCard$ Card.Instant,Card.Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast an instant or sorcery spell, CARDNAME deals 1 damage to target opponent. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 1 | SubAbility$ DBMana | SpellDescription$ Add {R}. +SVar:DBMana:DB$ Mana | Produced$ R | Amount$ 1 +A:AB$ ChangeZone | Cost$ R | CheckSVar$ X | SVarCompare$ GE3 | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SorcerySpeed$ True | StackDescription$ SpellDescription | SpellDescription$ Exile CARDNAME, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if you've cast three or more instant and/or sorcery spells this turn. +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup | StackDescription$ None +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$ThisTurnCast_Instant.YouCtrl,Sorcery.YouCtrl +DeckNeeds:Type$Instant|Sorcery +AlternateMode:DoubleFaced +DeckHints:Type$Phyrexian +SVar:BuffedBy:Instant,Sorcery +Oracle:First strike\nWhenever you cast an instant or sorcery spell, Urabrask deals 1 damage to target opponent. Add {R}.\n{R}: Exile Urabrask, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if you've cast three or more instant and/or sorcery spells this turn. + + +ALTERNATE + +Name:The Great Work +ManaCost:no cost +Colors:red +Types:Enchantment Saga +K:Saga:3:DBDamage,DBToken,DBCastAll +SVar:DBDamage:DB$ DamageAll | ValidTgts$ Opponent | NumDmg$ 3 | ValidPlayers$ Targeted | ValidCards$ Creature.TargetedPlayerCtrl | ValidDescription$ target opponent and each creature they control. | SpellDescription$ CARDNAME deals 3 damage to target opponent and each creature they control. +SVar:DBToken:DB$ Token | TokenAmount$ 3 | TokenScript$ c_a_treasure_sac | SpellDescription$ Create three Treasure tokens. +SVar:DBCastAll:DB$ Effect | ReplacementEffects$ REExileOnResolve | StaticAbilities$ STPlay | AILogic$ YawgmothsWill | AINoRecursiveCheck$ True | SubAbility$ DBExileSelf | SpellDescription$ Until end of turn, you may cast instant and sorcery spells from any graveyard. If a spell cast this way would be put into a graveyard, exile it instead. Exile CARDNAME, then return it to the battlefield (front face up). +SVar:STPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.Instant,Card.Sorcery | AffectedZone$ Graveyard | MayPlay$ True | Description$ You may play instant and sorcery spells from any graveyard. +SVar:REExileOnResolve:Event$ Moved | ValidLKI$ Card.CastSa Spell.MayPlaySource | Origin$ Stack | Destination$ Graveyard | ReplaceWith$ MoveExile +SVar:MoveExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Stack | Destination$ Exile +SVar:DBExileSelf:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBReturnSelf | RememberChanged$ True +SVar:DBReturnSelf:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:(As this saga enters and after your draw step, add a lore counter.)\nI — The Great Work deals 3 damage to target opponent and each creature they control.\nII — Create three Treasure tokens.\nIII — Until end of turn, you may cast instant and sorcery spells from any graveyard. If a spell cast this way would be put into a graveyard, exile it instead. Exile The Great Work, then return it to the battlefield (front face up). From 0f8a613e1ecdc54e46434c3c97431c286542cf51 Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Tue, 4 Apr 2023 10:21:41 -0500 Subject: [PATCH 02/98] Update sheoldred_the_true_scriptures.txt --- .../res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt b/forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt index bbb38a10a75..4bf90c22dfd 100644 --- a/forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt +++ b/forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt @@ -1,6 +1,6 @@ Name:Sheoldred ManaCost:3 B B -Types:Creature Phyrexian Praetor +Types:Legendary Creature Phyrexian Praetor PT:4/5 K:Menace T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBSacrifice | TriggerDescription$ When CARDNAME enters the battlefield, each opponent sacrifices a nontoken creature or planeswalker. From eba92bb783b27cd634ea4aabf068747c936325e2 Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Tue, 4 Apr 2023 10:36:40 -0500 Subject: [PATCH 03/98] Update djeru_and_hazoret.txt --- forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt b/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt index 07ad46e5457..0f646471a2a 100644 --- a/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt +++ b/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt @@ -6,7 +6,7 @@ S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Vigilance & Haste | Check T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ Whenever CARDNAME attacks, look at the top six cards of your library. You may exile a legendary creature card from among them. Put the rest on the bottom of your library in a random order. Until end of turn, you may cast the exiled card without paying its mana cost. SVar:TrigDig:DB$ Dig | DigNum$ 6 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature.Legendary | DestinationZone$ Exile | DestinationZone2$ Library | LibraryPosition$ -1 | RestRandomOrder$ True | RememberChanged$ True | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ MayPlay | RememberObjects$ Remembered | ForgetOnMoved$ Exile | SubAbility$ DBCleanup -SVar:MayPlay:Mode$ Continuous | MayPlay$ True | MayPlayWithoutManaCost$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until end of turn, you may cast this card without paying its mana cost. +SVar:MayPlay:Mode$ Continuous | MayPlay$ True | MayPlayWithoutManaCost$ True | EffectZone$ Command | Affected$ Card.IsRemembered+nonLand | AffectedZone$ Exile | Description$ Until end of turn, you may cast this card without paying its mana cost. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$InYourHand SVar:PlayMain1:TRUE From feea960989a325f8a2a733fff2cc46f7e2aca758 Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Tue, 4 Apr 2023 11:53:46 -0500 Subject: [PATCH 04/98] Update urabrask_the_great_work.txt --- .../res/cardsfolder/upcoming/urabrask_the_great_work.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt b/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt index 81d30be8a58..01ff6c30d4c 100644 --- a/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt +++ b/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt @@ -3,8 +3,8 @@ ManaCost:2 R R Types:Legendary Creature Phyrexian Praetor PT:4/4 K:First Strike -T:Mode$ SpellCast | ValidCard$ Card.Instant,Card.Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast an instant or sorcery spell, CARDNAME deals 1 damage to target opponent. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 1 | SubAbility$ DBMana | SpellDescription$ Add {R}. +T:Mode$ SpellCast | ValidCard$ Card.Instant,Card.Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast an instant or sorcery spell, CARDNAME deals 1 damage to target opponent. Add {R}. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 1 | SubAbility$ DBMana SVar:DBMana:DB$ Mana | Produced$ R | Amount$ 1 A:AB$ ChangeZone | Cost$ R | CheckSVar$ X | SVarCompare$ GE3 | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SorcerySpeed$ True | StackDescription$ SpellDescription | SpellDescription$ Exile CARDNAME, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if you've cast three or more instant and/or sorcery spells this turn. SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup | StackDescription$ None From 5636eb6c742fac694ecf9c6a433b4e3dd5bc87d8 Mon Sep 17 00:00:00 2001 From: Suthro <81990938+MikeS-NZ@users.noreply.github.com> Date: Sat, 8 Apr 2023 09:26:50 -0500 Subject: [PATCH 05/98] MOC: The Talent Cycle MOC: Added five card scripts for spoiled MOM commander cards: - Elspeth's Talent - Liliana's Talent - Rowan's Talent - Teferi's Talent - Vivien's Talent --- .../res/cardsfolder/upcoming/elspeths_talent.txt | 12 ++++++++++++ .../res/cardsfolder/upcoming/lilianas_talent.txt | 10 ++++++++++ forge-gui/res/cardsfolder/upcoming/rowans_talent.txt | 12 ++++++++++++ .../res/cardsfolder/upcoming/teferis_talent.txt | 12 ++++++++++++ .../res/cardsfolder/upcoming/viviens_talent.txt | 12 ++++++++++++ 5 files changed, 58 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/elspeths_talent.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/rowans_talent.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/teferis_talent.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/viviens_talent.txt diff --git a/forge-gui/res/cardsfolder/upcoming/elspeths_talent.txt b/forge-gui/res/cardsfolder/upcoming/elspeths_talent.txt new file mode 100644 index 00000000000..9254a70e84d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/elspeths_talent.txt @@ -0,0 +1,12 @@ +Name:Elspeth's Talent +ManaCost:2 W W +Types:Enchantment Aura +K:Enchant planeswalker +A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ ElspethPlus | Description$ Enchanted planeswalker has "[+1]: Create three 1/1 white Soldier creature tokens." +SVar:ElspethPlus:AB$ Token | Cost$ AddCounter<1/LOYALTY> | TokenAmount$ 3 | TokenScript$ w_1_1_soldier | TokenOwner$ You | Planeswalker$ True | SpellDescription$ Create three 1/1 white Soldier creature tokens. +T:Mode$ AbilityCast | ValidCard$ Planeswalker.EnchantedBy+inRealZoneBattlefield | ValidSA$ Activated.Loyalty | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPumpAll | TriggerDescription$ Whenever you activate a loyalty ability of enchanted planeswalker, creatures you control get +2/+2 and gain vigilance until end of turn. +SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +2 | NumDef$ +2 | KW$ Vigilance +SVar:BuffedBy:Creature +DeckNeeds:Type$Planeswalker +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[+1]: Create three 1/1 white Soldier creature tokens."\nWhenever you activate a loyalty ability of enchanted planeswalker, creatures you control get +2/+2 and gain vigilance until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt b/forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt new file mode 100644 index 00000000000..ee094ae26ae --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt @@ -0,0 +1,10 @@ +Name:Liliana's Talent +ManaCost:B B +Types:Enchantment Aura +K:Enchant planeswalker +A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ LilianaUlt | Description$ Enchanted planeswalker has "[-8]: Put all creature cards from all graveyards onto the battlefield under your control." +SVar:LilianaUlt:AB$ ChangeZoneAll | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | ChangeType$ Creature | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SpellDescription$ Put all creature cards in all graveyards onto the battlefield under your control. +T:Mode$ DamageDone | ValidSource$ Creature.inZoneBattlefield | ValidTarget$ Planeswalker.EnchantedBy | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature deals damage to enchanted planeswalker, destroy that creature. +SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredSourceLKICopy +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[-8]: Put all creature cards from all graveyards onto the battlefield under your control."\nWhenever a creature deals damage to enchanted planeswalker, destroy that creature. diff --git a/forge-gui/res/cardsfolder/upcoming/rowans_talent.txt b/forge-gui/res/cardsfolder/upcoming/rowans_talent.txt new file mode 100644 index 00000000000..299cd300900 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rowans_talent.txt @@ -0,0 +1,12 @@ +Name:Rowan's Talent +ManaCost:2 R R +Types:Enchantment Aura +K:Enchant planeswalker +A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ RowanPlus | Description$ Enchanted planeswalker has "[+1]: Up to one target creature gets +2/+0 and gains first strike and trample until end of turn." +SVar:RowanPlus:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | TargetMin$ 0 | TargetMax$ 1 | NumAtt$ +2 | KW$ First Strike & Trample | SpellDescription$ Up to one target creature gets +2/+0 and gains first strike and trample until end of turn. +T:Mode$ AbilityCast | ValidCard$ Planeswalker.EnchantedBy+inRealZoneBattlefield | ValidSA$ Activated.Loyalty | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigCopyAbility | TriggerDescription$ Whenever you activate a loyalty ability of enchanted planeswalker, copy that ability. You may choose new targets for the copy. +SVar:TrigCopyAbility:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | MayChooseTarget$ True +SVar:BuffedBy:Creature +DeckNeeds:Type$Planeswalker +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[+1]: Up to one target creature gets +2/+0 and gains first strike and trample until end of turn."\nWhenever you activate a loyalty ability of enchanted planeswalker, copy that ability. You may choose new targets for the copy. diff --git a/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt b/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt new file mode 100644 index 00000000000..5e7cb8a2b4d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt @@ -0,0 +1,12 @@ +Name:Teferi's Talent +ManaCost:3 U U +Types:Enchantment Aura +K:Enchant planeswalker +A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ TeferiUlt | Description$ Enchanted planeswalker has "[-8]: You get an emblem with 'You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant.'" +SVar:TeferiUlt:AB$ Effect | Cost$ SubCounter<12/LOYALTY> | Planeswalker$ True | StaticAbilities$ InstantPlaneswalkers | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant." +SVar:InstantPlaneswalkers:Mode$ CastWithFlash | ValidCard$ Planeswalker.YouCtrl | ValidSA$ Activated.Loyalty | Caster$ You | Description$ You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant. +T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you draw a card, put a loyalty counter on enchanted planeswalker. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Enchanted | CounterType$ LOYALTY | CounterNum$ 1 +DeckNeeds:Type$Planeswalker +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[-8]: You get an emblem with 'You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant.'"\nWhenever you draw a card, put a loyalty counter on enchanted planeswalker. diff --git a/forge-gui/res/cardsfolder/upcoming/viviens_talent.txt b/forge-gui/res/cardsfolder/upcoming/viviens_talent.txt new file mode 100644 index 00000000000..16615fcf976 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/viviens_talent.txt @@ -0,0 +1,12 @@ +Name:Vivien's Talent +ManaCost:1 G G +Types:Enchantment Aura +K:Enchant planeswalker +A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ VivienPlus | Description$ Enchanted planeswalker has "[+1]: Look at the top four cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in a random order." +SVar:VivienPlus:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature,Land | ForceRevealToController$ True | RestRandomOrder$ True | StackDescription$ SpellDescription | SpellDescription$ Look at the top four cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonToken+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever a nontoken creature enters the battlefield under your control, put a loyalty counter on enchanted planeswalker. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Enchanted | CounterType$ LOYALTY | CounterNum$ 1 +SVar:BuffedBy:Creature +DeckNeeds:Type$Planeswalker +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[+1]: Look at the top four cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in a random order."\nWhenever a nontoken creature enters the battlefield under your control, put a loyalty counter on enchanted planeswalker. From 109f7239ab70a8d331307ee5266edaa84f86d84c Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Sat, 8 Apr 2023 10:46:58 -0500 Subject: [PATCH 06/98] Update teferis_talent.txt --- forge-gui/res/cardsfolder/upcoming/teferis_talent.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt b/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt index 5e7cb8a2b4d..2b38ffa70d2 100644 --- a/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt +++ b/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt @@ -3,10 +3,10 @@ ManaCost:3 U U Types:Enchantment Aura K:Enchant planeswalker A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker -S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ TeferiUlt | Description$ Enchanted planeswalker has "[-8]: You get an emblem with 'You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant.'" +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ TeferiUlt | Description$ Enchanted planeswalker has "[-12]: You get an emblem with 'You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant.'" SVar:TeferiUlt:AB$ Effect | Cost$ SubCounter<12/LOYALTY> | Planeswalker$ True | StaticAbilities$ InstantPlaneswalkers | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant." SVar:InstantPlaneswalkers:Mode$ CastWithFlash | ValidCard$ Planeswalker.YouCtrl | ValidSA$ Activated.Loyalty | Caster$ You | Description$ You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant. T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you draw a card, put a loyalty counter on enchanted planeswalker. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Enchanted | CounterType$ LOYALTY | CounterNum$ 1 DeckNeeds:Type$Planeswalker -Oracle:Enchant planeswalker\nEnchanted planeswalker has "[-8]: You get an emblem with 'You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant.'"\nWhenever you draw a card, put a loyalty counter on enchanted planeswalker. +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[-12]: You get an emblem with 'You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant.'"\nWhenever you draw a card, put a loyalty counter on enchanted planeswalker. From 659c5c4e277fc9d9c07e88484b6ca51aa9852753 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 8 Apr 2023 18:06:51 +0200 Subject: [PATCH 07/98] update --- .../res/cardsfolder/upcoming/megaflora_jungle.txt | 8 ++++++++ forge-gui/res/cardsfolder/upcoming/new_argive.txt | 9 +++++++++ forge-gui/res/cardsfolder/upcoming/paliano.txt | 10 ++++++++++ forge-gui/res/cardsfolder/upcoming/riptide_island.txt | 11 +++++++++++ forge-gui/res/cardsfolder/upcoming/strixhaven.txt | 11 +++++++++++ forge-gui/res/cardsfolder/upcoming/the_caldaia.txt | 11 +++++++++++ forge-gui/res/cardsfolder/upcoming/the_wilds.txt | 11 +++++++++++ 7 files changed, 71 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/new_argive.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/paliano.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/riptide_island.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/strixhaven.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/the_caldaia.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/the_wilds.txt diff --git a/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt b/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt new file mode 100644 index 00000000000..a2197694853 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt @@ -0,0 +1,8 @@ +Name:Megaflora Jungle +ManaCost:no cost +Types:Gargantikar +S:Mode$ Continuous | Affected$ Creature.cmcLE2 | AddPower$ 2 | AddToughness$ 2 | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Each creature with mana value 2 or less gets +2/+2. +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 1/1 green Insect creature token with flying named Butterfly. +SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ butterfly | TokenOwner$ You +DeckHas:Ability$Token & Type$Butterfly +Oracle:Each creature with mana value 2 or less gets +2/+2.\nWhenever chaos ensues, create a 1/1 green Insect creature token with flying named Butterfly. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/new_argive.txt b/forge-gui/res/cardsfolder/upcoming/new_argive.txt new file mode 100644 index 00000000000..4ee405c1917 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/new_argive.txt @@ -0,0 +1,9 @@ +Name:New Argive +ManaCost:no cost +Types:Plane Dominaria +T:Mode$ Attacks | ValidCard$ Creature.YouCtrl+Historic | TriggerZones$ Command | Execute$ TrigPump | TriggerDescription$ Whenever a historic creature you control attacks, it gets +2/+2 until end of turn. (Artifacts, legendaries, and Sagas are historic.) +SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ +2 | NumDef$ +2 +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal cards from the top of your library until you reveal a historic card. Put that card into your hand and the rest on the bottom of your library in a random order. +SVar:RolledChaos:DB$ DigUntil | Valid$ Card.Historic | ValidDescription$ historic card | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | FoundDestination$ Hand +DeckHints:Type$Legendary & Type$Artifact|Saga +Oracle:Whenever a historic creature you control attacks, it gets +2/+2 until end of turn. (Artifacts, legendaries, and Sagas are historic.)\nWhenever chaos ensues, reveal cards from the top of your library until you reveal a historic card. Put that card into your hand and the rest on the bottom of your library in a random order. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/paliano.txt b/forge-gui/res/cardsfolder/upcoming/paliano.txt new file mode 100644 index 00000000000..b0ca2e7a6aa --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/paliano.txt @@ -0,0 +1,10 @@ +Name:Paliano +ManaCost:no cost +Types:Plane Fiora +T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CheckSVar$ Monarch | SVarCompare$ EQ0 | CombatDamage$ True | Execute$ TrigMonarch | TriggerZones$ Command | TriggerDescription$ When one or more creatures you control deal combat damage to a player, if there is no monarch, you become the monarch. +SVar:TrigMonarch:DB$ BecomeMonarch | Defined$ You +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 1/1 black Assassin creature token with deathtouch and haste. +SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ b_1_1_assassin_deathtouch_haste | TokenOwner$ You +SVar:Monarch:PlayerCountPlayers$HasPropertyisMonarch +DeckHas:Ability$Token & Type$Assassin +Oracle:When one or more creatures you control deal combat damage to a player, if there is no monarch, you become the monarch.\nWhenever chaos ensues, create a 1/1 black Assassin creature token with deathtouch and haste. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/riptide_island.txt b/forge-gui/res/cardsfolder/upcoming/riptide_island.txt new file mode 100644 index 00000000000..230bc46644c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/riptide_island.txt @@ -0,0 +1,11 @@ +Name:Towashi +ManaCost:no cost +Types:Plane Kamigawa +S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) +SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. +SVar:TrigDraw:DB$ Draw +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 +DeckHas:Ability$Counters +DeckHints:Type$Aura|Equipment & Ability$Counters +Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. diff --git a/forge-gui/res/cardsfolder/upcoming/strixhaven.txt b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt new file mode 100644 index 00000000000..230bc46644c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt @@ -0,0 +1,11 @@ +Name:Towashi +ManaCost:no cost +Types:Plane Kamigawa +S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) +SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. +SVar:TrigDraw:DB$ Draw +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 +DeckHas:Ability$Counters +DeckHints:Type$Aura|Equipment & Ability$Counters +Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. diff --git a/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt b/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt new file mode 100644 index 00000000000..230bc46644c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt @@ -0,0 +1,11 @@ +Name:Towashi +ManaCost:no cost +Types:Plane Kamigawa +S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) +SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. +SVar:TrigDraw:DB$ Draw +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 +DeckHas:Ability$Counters +DeckHints:Type$Aura|Equipment & Ability$Counters +Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. diff --git a/forge-gui/res/cardsfolder/upcoming/the_wilds.txt b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt new file mode 100644 index 00000000000..230bc46644c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt @@ -0,0 +1,11 @@ +Name:Towashi +ManaCost:no cost +Types:Plane Kamigawa +S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) +SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. +SVar:TrigDraw:DB$ Draw +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 +DeckHas:Ability$Counters +DeckHints:Type$Aura|Equipment & Ability$Counters +Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. From fbc1551ee0b7bff67d863339f58d4de13ecbdf1c Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 8 Apr 2023 21:30:56 +0200 Subject: [PATCH 08/98] update --- .../cardsfolder/upcoming/riptide_island.txt | 21 ++++++++++--------- .../res/cardsfolder/upcoming/strixhaven.txt | 18 +++++++--------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/riptide_island.txt b/forge-gui/res/cardsfolder/upcoming/riptide_island.txt index 230bc46644c..541f3b51d47 100644 --- a/forge-gui/res/cardsfolder/upcoming/riptide_island.txt +++ b/forge-gui/res/cardsfolder/upcoming/riptide_island.txt @@ -1,11 +1,12 @@ -Name:Towashi +Name:Riptide Island ManaCost:no cost -Types:Plane Kamigawa -S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) -SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. -SVar:TrigDraw:DB$ Draw -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. -SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 -DeckHas:Ability$Counters -DeckHints:Type$Aura|Equipment & Ability$Counters -Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +Types:Plane Dominaria +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create two 1/1 colorless Sliver creature tokens. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create two 1/1 colorless Sliver creature tokens. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ c_1_1_sliver | TokenOwner$ You +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, Slivers you control gain haste and get +X/+X until end of turn, where X is the number of Slivers you control. +SVar:RolledChaos:DB$ PumpAll | ValidCards$ Sliver.YouCtrl | NumAtt$ +X | NumDef$ +X | KW$ Haste +SVar:X:Count$Valid Sliver.YouCtrl +DeckHas:Ability$Token & Type$Sliver +DeckHints:Type$Sliver +Oracle:When you planeswalk to Riptide Island and at the beginning of your upkeep, create two 1/1 colorless Sliver creature tokens.\nWhenever chaos ensues, Slivers you control gain haste and get +X/+X until end of turn, where X is the number of Slivers you control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/strixhaven.txt b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt index 230bc46644c..ed2653551df 100644 --- a/forge-gui/res/cardsfolder/upcoming/strixhaven.txt +++ b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt @@ -1,11 +1,9 @@ -Name:Towashi +Name:Strixhaven ManaCost:no cost -Types:Plane Kamigawa -S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) -SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. -SVar:TrigDraw:DB$ Draw -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. -SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 -DeckHas:Ability$Counters -DeckHints:Type$Aura|Equipment & Ability$Counters -Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +Types:Plane Arcavios +S:Mode$ Continuous | AddKeyword$ Demonstrate | Affected$ Instant,Sorcery | AffectedZone$ Stack | Description$ Instant and sorcery spells players cast have demonstrate. (Whenever a player casts an instant or sorcery spell, they may copy it. If they do, they choose an opponent to also copy it. Players may choose new targets for their copies.) +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return up to one target instant or sorcery card from a graveyard to its owner's hand +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | TargetMin$ 0 | TargetMax$ 1 | Destination$ Hand | ValidTgts$ Creature | TgtPrompt$ Select up to target instant or sorcery spell from any graveyard +DeckHas:Ability$Graveyard +DeckHints:Type$Instant|Sorcery +Oracle:Instant and sorcery spells players cast have demonstrate. (Whenever a player casts an instant or sorcery spell, they may copy it. If they do, they choose an opponent to also copy it. Players may choose new targets for their copies.)\nWhenever chaos ensues, return up to one target instant or sorcery card from a graveyard to its owner's hand \ No newline at end of file From c8313e4eef07b58de01d5816929b0efede62edbc Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 9 Apr 2023 09:19:50 +0200 Subject: [PATCH 09/98] update --- .../res/cardsfolder/upcoming/inys_haen.txt | 13 +++++++++++ forge-gui/res/cardsfolder/upcoming/ketria.txt | 16 ++++++++++++++ .../res/cardsfolder/upcoming/littjara.txt | 11 ++++++++++ .../res/cardsfolder/upcoming/the_caldaia.txt | 17 ++++++-------- .../res/cardsfolder/upcoming/the_wilds.txt | 22 ++++++++++--------- 5 files changed, 59 insertions(+), 20 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/inys_haen.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/ketria.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/littjara.txt diff --git a/forge-gui/res/cardsfolder/upcoming/inys_haen.txt b/forge-gui/res/cardsfolder/upcoming/inys_haen.txt new file mode 100644 index 00000000000..1527e9eaa41 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/inys_haen.txt @@ -0,0 +1,13 @@ +Name:Inys Haen +ManaCost:no cost +Types:Plane Cridhe +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigMill | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, mill three cards. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigMill | TriggerZones$ Command | Secondary$ True | TriggerDescription$When you planeswalk to CARDNAME and at the beginning of your upkeep, mill three cards. +SVar:TrigMill:DB$ Mill | NumCards$ 3 | Defined$ You +T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigChangeZoneAll | TriggerDescription$ When you planeswalk away from CARDNAME, each player returns all land cards from their graveyard to the battlefield tapped +SVar:TrigChangeZoneAll:DB$ ChangeZoneAll | Origin$ Battlefield | Destination$ Hand | ChangeType$ Creature.Other+YouCtrl +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target nonland card from your graveyard to your hand. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Card.nonLand | TgtPrompt$ Select target nonland card in your graveyard +SVar:DBPutCounterAll:DB$ PutCounterAll | ValidCards$ Creature.ChosenType+YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | Zone$ Battlefield +DeckHas:Ability$Graveyard|Mill +Oracle:When you planeswalk to Ins Haen and at the beginning of your upkeep, mill three cards.\nWhen you planeswalk away from Ins Haen, each player returns all land cards from their graveyard to the battlefield tapped\nWhenever chaos ensues, return target nonland card from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ketria.txt b/forge-gui/res/cardsfolder/upcoming/ketria.txt new file mode 100644 index 00000000000..7b005617e6a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ketria.txt @@ -0,0 +1,16 @@ +Name:Ketria +ManaCost:no cost +Types:Plane Ikoria +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigCounter | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control. +SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ Vigilance,Menace,Trample | CounterNum$ 1 | CounterTypePerDefined$ True + + +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. +SVar:RolledChaos:DB$ DigUntil | ValidPlayer$ You | Valid$ Permanent.nonLand | ValidDescription$ nonland permanent | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBChoose +SVar:DBChoose:DB$ GenericChoice | Choices$ Battlefield,Hand | Defined$ You +SVar:Battlefield:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup | SpellDescription$ Put the nonland permanent onto the battlefield +SVar:Hand:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Hand | SubAbility$ DBCleanup | SpellDescription$ Put the nonland permanent into your hand +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Counters +Oracle:When you planeswalk to Ketria and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control.\nWhenever chaos ensues, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/littjara.txt b/forge-gui/res/cardsfolder/upcoming/littjara.txt new file mode 100644 index 00000000000..a87c43328bf --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/littjara.txt @@ -0,0 +1,11 @@ +Name:Littjara +ManaCost:no cost +Types:Plane Kaldheim +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a 2/2 blue Shapeshifter creature token with changeling. (It is every creature type.) +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a 2/2 blue Shapeshifter creature token with changeling. (It is every creature type.) +SVar:TrigToken:DB$ Token | TokenScript$ u_2_2_shapeshifter_changeling | TokenOwner$ You +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a creature type. Put a +1/+1 counter on each creature you control of that type. +SVar:RolledChaos:DB$ ChooseType | Defined$ You | Type$ Creature | SubAbility$ DBPutCounterAll | AILogic$ MostProminentComputerControls +SVar:DBPutCounterAll:DB$ PutCounterAll | ValidCards$ Creature.ChosenType+YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | Zone$ Battlefield +DeckHas:Ability$Token|Counters & Type$Shapeshifter +Oracle:When you planeswalk to Littjara and at the beginning of your upkeep, create a 2/2 blue Shapeshifter creature token with changeling. (It is every creature type.)\nWhenever chaos ensues, choose a creature type. Put a +1/+1 counter on each creature you control of that type. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt b/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt index 230bc46644c..02792947f3f 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt @@ -1,11 +1,8 @@ -Name:Towashi +Name:The Caldaia ManaCost:no cost -Types:Plane Kamigawa -S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) -SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. -SVar:TrigDraw:DB$ Draw -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. -SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 -DeckHas:Ability$Counters -DeckHints:Type$Aura|Equipment & Ability$Counters -Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +Types:Plane Capenna +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Stack | AddKeyword$ Blitz:CardManaCost:Spell.Creature+wasCastFromYourHand | Description$ Creature spells you cast from your hand have blitz {3}. (If you cast a spell for its blitz cost, it gains haste and "When this creature dies, draw a card." Sacrifice it at the beginning of the next end step.) +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature card from your graveyard to your hand. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouCtrl +DeckHas:Ability$Sacrifice & Keyword$Blitz +Oracle:Creature spells you cast from your hand have blitz {3}. (If you cast a spell for its blitz cost, it gains haste and "When this creature dies, draw a card." Sacrifice it at the beginning of the next end step.)\nWhenever chaos ensues, return target creature card from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_wilds.txt b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt index 230bc46644c..8807522bb64 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_wilds.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt @@ -1,11 +1,13 @@ -Name:Towashi +Name:The Wilds ManaCost:no cost -Types:Plane Kamigawa -S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) -SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. -SVar:TrigDraw:DB$ Draw -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. -SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 -DeckHas:Ability$Counters -DeckHints:Type$Aura|Equipment & Ability$Counters -Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +Types:Plane Eldraine +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a Food token. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a Food token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_food_sac | TokenOwner$ You +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player sacrifices a creature. If they do, you create a Food token. You create two Food tokens instead if the sacrificed creature's toughness was 4 or greater. +SVar:RolledChaos:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature | SacMessage$ Creature | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenScript$ c_a_food_sac | TokenAmount$ Z +SVar:Z:Sacrificed$Valid Creature.powerGE4/Plus.1 +DeckHas:Ability$Token|Sacrifice & Type$Food +DeckHints:Type$Food +Oracle:When you planeswalk to The Wilds and at the beginning of your upkeep, create a Food token.\nWhenever chaos ensues, target player sacrifices a creature. If they do, you create a Food token. You create two Food tokens instead if the sacrificed creature’s toughness was 4 or greater. \ No newline at end of file From 965a7b8ec3e423b287ac724178fd5ead4ad08b19 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 9 Apr 2023 09:38:00 +0200 Subject: [PATCH 10/98] update --- forge-gui/res/cardsfolder/upcoming/inys_haen.txt | 7 +++---- forge-gui/res/cardsfolder/upcoming/ketria.txt | 2 -- forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt | 4 ++-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/inys_haen.txt b/forge-gui/res/cardsfolder/upcoming/inys_haen.txt index 1527e9eaa41..e811a354394 100644 --- a/forge-gui/res/cardsfolder/upcoming/inys_haen.txt +++ b/forge-gui/res/cardsfolder/upcoming/inys_haen.txt @@ -2,12 +2,11 @@ Name:Inys Haen ManaCost:no cost Types:Plane Cridhe T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigMill | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, mill three cards. -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigMill | TriggerZones$ Command | Secondary$ True | TriggerDescription$When you planeswalk to CARDNAME and at the beginning of your upkeep, mill three cards. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigMill | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, mill three cards. SVar:TrigMill:DB$ Mill | NumCards$ 3 | Defined$ You T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigChangeZoneAll | TriggerDescription$ When you planeswalk away from CARDNAME, each player returns all land cards from their graveyard to the battlefield tapped -SVar:TrigChangeZoneAll:DB$ ChangeZoneAll | Origin$ Battlefield | Destination$ Hand | ChangeType$ Creature.Other+YouCtrl +SVar:TrigChangeZoneAll:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Land T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target nonland card from your graveyard to your hand. -SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Card.nonLand | TgtPrompt$ Select target nonland card in your graveyard -SVar:DBPutCounterAll:DB$ PutCounterAll | ValidCards$ Creature.ChosenType+YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | Zone$ Battlefield +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Card.nonLand+YouCtrl | TgtPrompt$ Select target nonland card in your graveyard DeckHas:Ability$Graveyard|Mill Oracle:When you planeswalk to Ins Haen and at the beginning of your upkeep, mill three cards.\nWhen you planeswalk away from Ins Haen, each player returns all land cards from their graveyard to the battlefield tapped\nWhenever chaos ensues, return target nonland card from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ketria.txt b/forge-gui/res/cardsfolder/upcoming/ketria.txt index 7b005617e6a..d7104766e44 100644 --- a/forge-gui/res/cardsfolder/upcoming/ketria.txt +++ b/forge-gui/res/cardsfolder/upcoming/ketria.txt @@ -4,8 +4,6 @@ Types:Plane Ikoria T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigCounter | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control. SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ Vigilance,Menace,Trample | CounterNum$ 1 | CounterTypePerDefined$ True - - T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. SVar:RolledChaos:DB$ DigUntil | ValidPlayer$ You | Valid$ Permanent.nonLand | ValidDescription$ nonland permanent | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBChoose SVar:DBChoose:DB$ GenericChoice | Choices$ Battlefield,Hand | Defined$ You diff --git a/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt b/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt index a2197694853..f91893a26b2 100644 --- a/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt +++ b/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt @@ -1,7 +1,7 @@ Name:Megaflora Jungle ManaCost:no cost -Types:Gargantikar -S:Mode$ Continuous | Affected$ Creature.cmcLE2 | AddPower$ 2 | AddToughness$ 2 | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Each creature with mana value 2 or less gets +2/+2. +Types:Plane Gargantikar +S:Mode$ Continuous | Affected$ Creature.cmcLE2 | AddPower$ 2 | AddToughness$ 2 | EffectZone$ Command | Description$ Each creature with mana value 2 or less gets +2/+2. T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 1/1 green Insect creature token with flying named Butterfly. SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ butterfly | TokenOwner$ You DeckHas:Ability$Token & Type$Butterfly From 033b7a29ec8f78a7c7596ed95132f35fec114d0b Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 9 Apr 2023 09:42:32 +0200 Subject: [PATCH 11/98] update --- forge-gui/res/cardsfolder/upcoming/strixhaven.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/strixhaven.txt b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt index ed2653551df..49127100e6c 100644 --- a/forge-gui/res/cardsfolder/upcoming/strixhaven.txt +++ b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt @@ -1,7 +1,7 @@ Name:Strixhaven ManaCost:no cost Types:Plane Arcavios -S:Mode$ Continuous | AddKeyword$ Demonstrate | Affected$ Instant,Sorcery | AffectedZone$ Stack | Description$ Instant and sorcery spells players cast have demonstrate. (Whenever a player casts an instant or sorcery spell, they may copy it. If they do, they choose an opponent to also copy it. Players may choose new targets for their copies.) +S:Mode$ Continuous | AddKeyword$ Demonstrate | EffectZone$ Command | Affected$ Instant,Sorcery | AffectedZone$ Stack | Description$ Instant and sorcery spells players cast have demonstrate. (Whenever a player casts an instant or sorcery spell, they may copy it. If they do, they choose an opponent to also copy it. Players may choose new targets for their copies.) T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return up to one target instant or sorcery card from a graveyard to its owner's hand SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | TargetMin$ 0 | TargetMax$ 1 | Destination$ Hand | ValidTgts$ Creature | TgtPrompt$ Select up to target instant or sorcery spell from any graveyard DeckHas:Ability$Graveyard From 047e80a3165398b9bc142fda5f6bec155995f001 Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Sun, 9 Apr 2023 09:20:57 -0500 Subject: [PATCH 12/98] Update lilianas_talent.txt --- forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt b/forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt index ee094ae26ae..dd9d58aa9ae 100644 --- a/forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt +++ b/forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt @@ -7,4 +7,5 @@ S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ LilianaUlt SVar:LilianaUlt:AB$ ChangeZoneAll | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | ChangeType$ Creature | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SpellDescription$ Put all creature cards in all graveyards onto the battlefield under your control. T:Mode$ DamageDone | ValidSource$ Creature.inZoneBattlefield | ValidTarget$ Planeswalker.EnchantedBy | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature deals damage to enchanted planeswalker, destroy that creature. SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredSourceLKICopy +DeckNeeds:Type$Planeswalker Oracle:Enchant planeswalker\nEnchanted planeswalker has "[-8]: Put all creature cards from all graveyards onto the battlefield under your control."\nWhenever a creature deals damage to enchanted planeswalker, destroy that creature. From b5a6db9d028d765147b8c55f3b387977c134d308 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 9 Apr 2023 21:50:24 +0200 Subject: [PATCH 13/98] update --- forge-gui/res/cardsfolder/upcoming/inys_haen.txt | 2 +- forge-gui/res/cardsfolder/upcoming/ketria.txt | 4 +--- forge-gui/res/cardsfolder/upcoming/littjara.txt | 2 +- forge-gui/res/cardsfolder/upcoming/paliano.txt | 2 +- forge-gui/res/cardsfolder/upcoming/strixhaven.txt | 2 +- forge-gui/res/cardsfolder/upcoming/the_caldaia.txt | 2 +- forge-gui/res/cardsfolder/upcoming/the_wilds.txt | 7 ++++--- 7 files changed, 10 insertions(+), 11 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/inys_haen.txt b/forge-gui/res/cardsfolder/upcoming/inys_haen.txt index e811a354394..7ba71f6865c 100644 --- a/forge-gui/res/cardsfolder/upcoming/inys_haen.txt +++ b/forge-gui/res/cardsfolder/upcoming/inys_haen.txt @@ -5,7 +5,7 @@ T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigMill | TriggerZones T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigMill | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, mill three cards. SVar:TrigMill:DB$ Mill | NumCards$ 3 | Defined$ You T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigChangeZoneAll | TriggerDescription$ When you planeswalk away from CARDNAME, each player returns all land cards from their graveyard to the battlefield tapped -SVar:TrigChangeZoneAll:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Land +SVar:TrigChangeZoneAll:DB$ ChangeZoneAll | Tapped$ True | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Land T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target nonland card from your graveyard to your hand. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Card.nonLand+YouCtrl | TgtPrompt$ Select target nonland card in your graveyard DeckHas:Ability$Graveyard|Mill diff --git a/forge-gui/res/cardsfolder/upcoming/ketria.txt b/forge-gui/res/cardsfolder/upcoming/ketria.txt index d7104766e44..cfc1bd23d0a 100644 --- a/forge-gui/res/cardsfolder/upcoming/ketria.txt +++ b/forge-gui/res/cardsfolder/upcoming/ketria.txt @@ -6,9 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigCounter | Trigge SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ Vigilance,Menace,Trample | CounterNum$ 1 | CounterTypePerDefined$ True T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. SVar:RolledChaos:DB$ DigUntil | ValidPlayer$ You | Valid$ Permanent.nonLand | ValidDescription$ nonland permanent | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBChoose -SVar:DBChoose:DB$ GenericChoice | Choices$ Battlefield,Hand | Defined$ You -SVar:Battlefield:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup | SpellDescription$ Put the nonland permanent onto the battlefield -SVar:Hand:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Hand | SubAbility$ DBCleanup | SpellDescription$ Put the nonland permanent into your hand +SVar:DBChoose:DB$ ChangeZone | Defined$ Remembered | DestinationAlternative$ Hand | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup | AlternativeDestinationMessage$ Would you like to put the card onto battlefield (and not into your hand)? | SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True DeckHas:Ability$Counters Oracle:When you planeswalk to Ketria and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control.\nWhenever chaos ensues, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/littjara.txt b/forge-gui/res/cardsfolder/upcoming/littjara.txt index a87c43328bf..10d4831c392 100644 --- a/forge-gui/res/cardsfolder/upcoming/littjara.txt +++ b/forge-gui/res/cardsfolder/upcoming/littjara.txt @@ -6,6 +6,6 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZ SVar:TrigToken:DB$ Token | TokenScript$ u_2_2_shapeshifter_changeling | TokenOwner$ You T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a creature type. Put a +1/+1 counter on each creature you control of that type. SVar:RolledChaos:DB$ ChooseType | Defined$ You | Type$ Creature | SubAbility$ DBPutCounterAll | AILogic$ MostProminentComputerControls -SVar:DBPutCounterAll:DB$ PutCounterAll | ValidCards$ Creature.ChosenType+YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | Zone$ Battlefield +SVar:DBPutCounterAll:DB$ PutCounterAll | ValidCards$ Creature.ChosenType+YouCtrl | CounterType$ P1P1 | CounterNum$ 1 DeckHas:Ability$Token|Counters & Type$Shapeshifter Oracle:When you planeswalk to Littjara and at the beginning of your upkeep, create a 2/2 blue Shapeshifter creature token with changeling. (It is every creature type.)\nWhenever chaos ensues, choose a creature type. Put a +1/+1 counter on each creature you control of that type. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/paliano.txt b/forge-gui/res/cardsfolder/upcoming/paliano.txt index b0ca2e7a6aa..07c74b25f40 100644 --- a/forge-gui/res/cardsfolder/upcoming/paliano.txt +++ b/forge-gui/res/cardsfolder/upcoming/paliano.txt @@ -1,7 +1,7 @@ Name:Paliano ManaCost:no cost Types:Plane Fiora -T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CheckSVar$ Monarch | SVarCompare$ EQ0 | CombatDamage$ True | Execute$ TrigMonarch | TriggerZones$ Command | TriggerDescription$ When one or more creatures you control deal combat damage to a player, if there is no monarch, you become the monarch. +T:Mode$ DamageDoneOnce | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CheckSVar$ Monarch | SVarCompare$ EQ0 | CombatDamage$ True | Execute$ TrigMonarch | TriggerZones$ Command | TriggerDescription$ When one or more creatures you control deal combat damage to a player, if there is no monarch, you become the monarch. SVar:TrigMonarch:DB$ BecomeMonarch | Defined$ You T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 1/1 black Assassin creature token with deathtouch and haste. SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ b_1_1_assassin_deathtouch_haste | TokenOwner$ You diff --git a/forge-gui/res/cardsfolder/upcoming/strixhaven.txt b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt index 49127100e6c..f4c95e7e225 100644 --- a/forge-gui/res/cardsfolder/upcoming/strixhaven.txt +++ b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Arcavios S:Mode$ Continuous | AddKeyword$ Demonstrate | EffectZone$ Command | Affected$ Instant,Sorcery | AffectedZone$ Stack | Description$ Instant and sorcery spells players cast have demonstrate. (Whenever a player casts an instant or sorcery spell, they may copy it. If they do, they choose an opponent to also copy it. Players may choose new targets for their copies.) T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return up to one target instant or sorcery card from a graveyard to its owner's hand -SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | TargetMin$ 0 | TargetMax$ 1 | Destination$ Hand | ValidTgts$ Creature | TgtPrompt$ Select up to target instant or sorcery spell from any graveyard +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | TargetMin$ 0 | TargetMax$ 1 | Destination$ Hand | ValidTgts$ Instant,Sorcery | TgtPrompt$ Select up to target instant or sorcery spell from any graveyard DeckHas:Ability$Graveyard DeckHints:Type$Instant|Sorcery Oracle:Instant and sorcery spells players cast have demonstrate. (Whenever a player casts an instant or sorcery spell, they may copy it. If they do, they choose an opponent to also copy it. Players may choose new targets for their copies.)\nWhenever chaos ensues, return up to one target instant or sorcery card from a graveyard to its owner's hand \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt b/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt index 02792947f3f..41322b17bf7 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt @@ -1,7 +1,7 @@ Name:The Caldaia ManaCost:no cost Types:Plane Capenna -S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Stack | AddKeyword$ Blitz:CardManaCost:Spell.Creature+wasCastFromYourHand | Description$ Creature spells you cast from your hand have blitz {3}. (If you cast a spell for its blitz cost, it gains haste and "When this creature dies, draw a card." Sacrifice it at the beginning of the next end step.) +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Stack | AddKeyword$ Blitz:3:Spell.Creature+wasCastFromYourHand | Description$ Creature spells you cast from your hand have blitz {3}. (If you cast a spell for its blitz cost, it gains haste and "When this creature dies, draw a card." Sacrifice it at the beginning of the next end step.) T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature card from your graveyard to your hand. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouCtrl DeckHas:Ability$Sacrifice & Keyword$Blitz diff --git a/forge-gui/res/cardsfolder/upcoming/the_wilds.txt b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt index 8807522bb64..21850853c15 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_wilds.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt @@ -5,9 +5,10 @@ T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDesc T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a Food token. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_food_sac | TokenOwner$ You T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player sacrifices a creature. If they do, you create a Food token. You create two Food tokens instead if the sacrificed creature's toughness was 4 or greater. -SVar:RolledChaos:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature | SacMessage$ Creature | SubAbility$ DBToken -SVar:DBToken:DB$ Token | TokenScript$ c_a_food_sac | TokenAmount$ Z -SVar:Z:Sacrificed$Valid Creature.powerGE4/Plus.1 +SVar:RolledChaos:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature | SacMessage$ Creature | RememberSacrificed$ True | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenScript$ c_a_food_sac | TokenAmount$ Z | ConditionDefined$ Remembered | ConditionPresent$ Card | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Z:Remembered$Valid Creature.powerGE4/Plus.1 DeckHas:Ability$Token|Sacrifice & Type$Food DeckHints:Type$Food Oracle:When you planeswalk to The Wilds and at the beginning of your upkeep, create a Food token.\nWhenever chaos ensues, target player sacrifices a creature. If they do, you create a Food token. You create two Food tokens instead if the sacrificed creature’s toughness was 4 or greater. \ No newline at end of file From e95326028cd959c4144ed31902db4e39596b2f84 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 10 Apr 2023 15:25:46 +0200 Subject: [PATCH 14/98] update --- .../cardsfolder/upcoming/begin_the_invasion.txt | 8 ++++++++ .../cardsfolder/upcoming/dance_with_calamity.txt | 11 +++++++++++ .../res/cardsfolder/upcoming/enigma_ridges.txt | 15 +++++++++++++++ forge-gui/res/cardsfolder/upcoming/ghirapur.txt | 10 ++++++++++ forge-gui/res/cardsfolder/upcoming/naktamun.txt | 8 ++++++++ .../cardsfolder/upcoming/rashmi_and_ragavan.txt | 14 ++++++++++++++ .../upcoming/saint_traft_and_rem_karolus.txt | 14 ++++++++++++++ .../cardsfolder/upcoming/ten_wizards_mountain.txt | 9 +++++++++ .../upcoming/the_golden_city_of_orazca.txt | 11 +++++++++++ forge-gui/res/cardsfolder/upcoming/the_pit.txt | 12 ++++++++++++ .../cardsfolder/upcoming/the_western_cloud.txt | 10 ++++++++++ .../res/cardsfolder/upcoming/valors_reach.txt | 9 +++++++++ 12 files changed, 131 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/ghirapur.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/naktamun.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/saint_traft_and_rem_karolus.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/the_pit.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/valors_reach.txt diff --git a/forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt b/forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt new file mode 100644 index 00000000000..f1d79d6cbc2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt @@ -0,0 +1,8 @@ +Name:Begin the Invasion +ManaCost:X W U B R G +Types:Sorcery +A:SP$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Card.Battle | ChangeNum$ X | SpellDescription$ Search your library for up to X battle cards with different names, put them onto the battlefield, then shuffle. +SVar:X:Count$xPaid +DeckNeeds:Type$Battle +AI:RemoveDeck:Random +Oracle:Search your library for up to X battle cards with different names, put them onto the battlefield, then shuffle. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt b/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt new file mode 100644 index 00000000000..cd95eae1293 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt @@ -0,0 +1,11 @@ +Name:Dance with Calamity +ManaCost:7 R +Types:Sorcery +A:SP$ Shuffle | SubAbility$ DBRepeat | StackDescription$ {p:You} shuffles their library, | SpellDescription$ Shuffle your library. As many times as you choose, you may exile the top card of your library. If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. +SVar:DBRepeat:DB$ Repeat | RepeatSubAbility$ DBDig | RepeatOptional$ True | SubAbility$ DBPlay +SVar:DBDig:DB$ Dig | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card | DestinationZone$ Exile | RememberChanged$ True +SVar:DBPlay:DB$ Play | Defined$ Remembered | Amount$ All | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ LE13 +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$SumCMC +AI:RemoveDeck:Random +Oracle:Shuffle your library. As many times as you choose, you may exile the top card of your library. If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt b/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt new file mode 100644 index 00000000000..e06cf73bf56 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt @@ -0,0 +1,15 @@ +Name:Enigma Ridges +ManaCost:no cost +Types:Plane Echoir +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeatEach | TriggerDescription$ When you planeswalk to CARDNAME, each player who controls fewer lands than the player who controls the most lands searches their library for a number of basic land cards less than or equal to the difference, reveals them, puts them into their hand, then shuffles. +SVar:TrigRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | ConditionCheckSVar$ X | ConditionSVarCompare$ LTY | DefinedPlayer$ Remembered | Chooser$ Remembered | ChangeType$ Land.Basic | ChangeNum$ Z | Origin$ Library | Destination$ Battlefield | Tapped$ True +SVar:X:Count$Valid Land.RememberedPlayerCtrl +SVar:Y:PlayerCountPlayers$HighestValid Land.YouCtrl +SVar:Z:SVar$Y/Minus.X +SVar:Check1:Count$Valid Land.YouCtrl +SVar:Check2:SVar$Y/Minus.Check1 +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, draw a card, then you may put a land card from your hand onto the battlefield. +SVar:RolledChaos:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBChangeZoneBis +SVar:DBChangeZoneBis:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | Optional$ You | ChangeType$ Land | ChangeNum$ 1 +Oracle:When you planeswalk to Enigma Ridges, each player who controls fewer lands than the player who controls the most lands searches their library for a number of basic land cards less than or equal to the difference, reveals them, puts them into their hand, then shuffles.\nWhenever chaos ensues, draw a card, then you may put a land card from your hand onto the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ghirapur.txt b/forge-gui/res/cardsfolder/upcoming/ghirapur.txt new file mode 100644 index 00000000000..3efd5b3228d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ghirapur.txt @@ -0,0 +1,10 @@ +Name:Ghirapur +ManaCost:no cost +Types:Plane Kaladesh +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigAnimateAll | TriggerDescription$ At the beginning of combat on your turn, until end of turn, each noncreature, non-Vehicle artifact you control becomes a 5/3 Vehicle in addition to its other types and gains trample, haste, and crew 2. +SVar:TrigAnimateAll:DB$ AnimateAll | ValidCards$ Artifact.nonCreature+YouCtrl+nonVehicle | Power$ 5 | Toughness$ 3 | Types$ Vehicle | Keywords$ Crew:2 & Trample & Haste +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target noncreature artifact card from your graveyard to your hand. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Artifact.nonCreature+YouCtrl | TgtPrompt$ Select target noncreature artifact spell from your graveyard +DeckHas:Ability$Graveyard +DeckHints:Type$Artifact +Oracle:At the beginning of combat on your turn, until end of turn, each noncreature, non-Vehicle artifact you control becomes a 5/3 Vehicle in addition to its other types and gains trample, haste, and crew 2.\nWhenever chaos ensues, return target noncreature artifact card from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/naktamun.txt b/forge-gui/res/cardsfolder/upcoming/naktamun.txt new file mode 100644 index 00000000000..e2e3afe72d1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/naktamun.txt @@ -0,0 +1,8 @@ +Name:Naktamun +ManaCost:no cost +Types:Plane Amonkhet +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Graveyard | AddKeyword$ Embalm:CardManaCost | Description$ Each creature card in your graveyard has embalm. Its embalm cost is equal to its mana cost. (Exile a creature card from your graveyard and pay its embalm cost: Create a token that's a copy of it, except it's a white Zombie in addition to its other types with no mana cost. Embalm only as a sorcery.) +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may discard a card. If you do, draw a card. +SVar:RolledChaos:AB$ Draw | Cost$ Discard<1/Card> +DeckHas:Ability$Graveyard|Token|Discard & Type$Zombie +Oracle:Each creature card in your graveyard has embalm. Its embalm cost is equal to its mana cost. (Exile a creature card from your graveyard and pay its embalm cost: Create a token that's a copy of it, except it's a white Zombie in addition to its other types with no mana cost. Embalm only as a sorcery.)\nWhenever chaos ensues, you may discard a card. If you do, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt b/forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt new file mode 100644 index 00000000000..186d7612a7c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt @@ -0,0 +1,14 @@ +Name:Rashmi and Ragavan +ManaCost:1 G U R +Types:Legendary Creature — Elf Monkey +PT:2/4 +T:Mode$ SpellCast | ValidActivatingPlayer$ You | ActivatorThisTurnCast$ EQ1 | NoResolvingCheck$ True | ValidCard$ Card | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast your first spell during each of your turns, exile the top card of target opponent's library and create a Treasure token. Then you may cast the exiled card without paying its mana cost if it's a spell with mana value less than the number of artifacts you control. If you don't cast it this way, you may cast it this turn. +SVar:TrigExile:DB$ Dig | DigNum$ 1 | ChangeNum$ All | Defined$ Targeted | ValidTgts$ Opponent | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | SubAbility$ DBPlay +SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidSA$ Spell.cmcLEX | ValidZone$ Exile | ImprintPlayed$ True | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | ForgetOnMoved$ Exile | RememberObjects$ RememberedCard | ConditionDefined$ Imprinted | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBCleanup +SVar:STPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered | MayPlay$ True | AffectedZone$ Exile | Description$ Until the end of turn, you may play the exiled card. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True +SVar:X:Count$Valid Artifact.YouCtrl +DeckHints:Type$Artifact +Oracle:Whenever you cast your first spell during each of your turns, exile the top card of target opponent's library and create a Treasure token. Then you may cast the exiled card without paying its mana cost if it's a spell with mana value less than the number of artifacts you control. If you don't cast it this way, you may cast it this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/saint_traft_and_rem_karolus.txt b/forge-gui/res/cardsfolder/upcoming/saint_traft_and_rem_karolus.txt new file mode 100644 index 00000000000..13460ce8685 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/saint_traft_and_rem_karolus.txt @@ -0,0 +1,14 @@ +Name:Saint Traft and Rem Karolus +ManaCost:U R W +Types:Legendary Creature Spirit Human +PT:3/4 +T:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME becomes tapped, create a 1/1 red Human creature token if this is the first time this ability has resolved this turn. If it’s the second time, create a 1/1 blue Spirit creature token with flying. If it’s the third time, create a 4/4 white Angel creature token with flying. +SVar:TrigToken:DB$ Token | TokenScript$ r_1_1_human | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ EQ1 | SubAbility$ DBTokenBis +SVar:DBTokenBis:DB$ Token | TokenScript$ u_1_1_spirit_flying | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ EQ2 | SubAbility$ DBTokenTrice +SVar:DBTokenTrice:DB$ Token | TokenScript$w_4_4_angel_flying | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ EQ3 +SVar:Resolved:Count$ResolvedThisTurn +T:Mode$ SpellCast | ValidCard$ Card.withConvoke | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigUntap | TriggerDescription$ Whenever you cast a spell that has convoke, untap CARDNAME. +SVar:TrigUntap:DB$ Untap | Defined$ Self +DeckNeeds:Keyword$Convoke +DeckHas:Ability$Token & Type$Human|Angel|Spirit +Oracle:Whenever Saint Traft and Rem Karolus becomes tapped, create a 1/1 red Human creature token if this is the first time this ability has resolved this turn. If it's the second time, create a 1/1 blue Spirit creature token with flying. If it's the third time, create a 4/4 white Angel creature token with flying.\nWhenever you cast a spell that has convoke, untap Saint Traft and Rem Karolus. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt b/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt new file mode 100644 index 00000000000..f41fb45bccd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt @@ -0,0 +1,9 @@ +Name:Ten Wizards Mountain +ManaCost:no cost +Types:Plane Shenmeng +T:Mode$ PlanarDice | TriggerZones$ Command | Execute$ RolledDie | TriggerDescription$ Whenever you roll the planar die, put a +1/+1 counter on up to one target creature. +SVar:RolledDie:DB$ PutCounter | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control gain flying until end of turn. +SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Flying | SpellDescription$ Creatures you control gain flying until end of turn. +DeckHas:Ability$Counters +Oracle:Whenever you roll the planar die, put a +1/+1 counter on up to one target creature.\nWhenever chaos ensues, creatures you control gain flying until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt b/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt new file mode 100644 index 00000000000..2ec1f89694b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt @@ -0,0 +1,11 @@ +Name:The Golden City of Orazca +ManaCost:no cost +Types:Plane Ixalan +K:Ascend +T:Mode$ DamageDoneOnce | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ Whenever one or more creatures you control deal combat damage to a player, create a Treasure token. Then draw a card if you have the city’s blessing. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | Condition$ Blessing +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may put a permanent card from your hand onto the battlefield tapped. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | Optional$ You | Tapped$ True | ChangeType$ Permanent | ChangeNum$ 1 +DeckHas:Ability$Token & Type$Treasure +Oracle:Ascend (If you control ten or more permanents, you get the city's blessing for the rest of the game.)\nWhenever one or more creatures you control deal combat damage to a player, create a Treasure token. Then draw a card if you have the city's blessing.\nWhenever chaos ensues, you may put a permanent card from your hand onto the battlefield tapped. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_pit.txt b/forge-gui/res/cardsfolder/upcoming/the_pit.txt new file mode 100644 index 00000000000..5fd0403f947 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_pit.txt @@ -0,0 +1,12 @@ +Name:The Pit +ManaCost:no cost +Types:Plane The Abyss +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeatEach | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME, each player creates their choice of a 3/3 white Angel creature token with flying or a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you." +SVar:TrigRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | ClearRememberedBeforeLoop$ True | RepeatSubAbility$ DBChoice +SVar:DBChoice:DB$ GenericChoice | Defined$ Player.IsRemembered | Choices$ Angel,Demon +SVar:Angel:DB$ Token | TokenScript$ w_3_3_angel_flying | TokenOwner$ Player.IsRemembered | SpellDescription$ Create a 3/3 white Angel creature token with flying +SVar:Demon:DB$ Token | TokenScript$ b_6_6_demon_flying_trample_aristocrat | TokenOwner$ Player.IsRemembered | SpellDescription$ a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you." +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player sacrifices a nontoken creature. +SVar:RolledChaos:DB$ Sacrifice | SacValid$ Creature.nonToken | Defined$ Player +DeckHas:Ability$Token|Sacrifice & Type$Demon|Angel +Oracle:When you planeswalk to The Pit, each player creates their choice of a 3/3 white Angel creature token with flying or a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you."\nWhenever chaos ensues, each player sacrifices a nontoken creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt b/forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt new file mode 100644 index 00000000000..f279af3e6d1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt @@ -0,0 +1,10 @@ +Name:The Western Cloud +ManaCost:no cost +Types:Plane Gobakhan +R:Event$ DamageDone | ActiveZones$ Command | Prevent$ True | ValidTarget$ Planeswalker.YouCtrl,Creature.YouCtrl | Description$ Prevent all damage that would be dealt to creatures and planeswalkers you control. +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create three tapped Treasure tokens. They each deal 1 damage to each creature and each planeswalker. +SVar:RolledChaos:DB$ Token | TokenAmount$ 3 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | RememberTokens$ True | TokenTapped$ True | SubAbility$ DBDamage +SVar:DBDamage:DB$ EachDamage | DefinedDamagers$ Remembered | Defined$ Valid Creature,Planeswalker | NumDmg$ 1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Token & Type$Treasure +Oracle:Prevent all damage that would be dealt to creatures and planeswalkers you control.\nWhenever chaos ensues, create three tapped Treasure tokens. They each deal 1 damage to each creature and each planeswalker. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/valors_reach.txt b/forge-gui/res/cardsfolder/upcoming/valors_reach.txt new file mode 100644 index 00000000000..5abccc91ef9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/valors_reach.txt @@ -0,0 +1,9 @@ +Name:Valor's Reach +ManaCost:no cost +Types:Plane Kylem +T:Mode$ AttackersDeclared | ValidAttackers$ Creature.YourTeamCtrl | Execute$ TrigPumpAll | IsPresent$ Creature.attacking | PresentCompare$ EQ2 | NoResolvingCheck$ True | TriggerZones$ Command | AttackingPlayer$ You | TriggerDescription$ Whenever your team attacks with exactly two creatures, those creatures gain double strike until end of turn. +SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.YourTeamCtrl+attacking | KW$ Double Strike +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap up to two target creatures your team controls. If it's a main phase, there is an additional combat phase after this phase, followed by an additional main phase. +SVar:RolledChaos:DB$ Untap | ValidTgts$ Creature.YourTeamCtrl | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Select up to two target creatures your team controls | SubAbility$ DBAddCombat +SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ Combat | FollowedBy$ Main2 | ConditionPhases$ Main1,Main2 +Oracle:Whenever you roll the planar die, put a +1/+1 counter on up to one target creature.\nWhenever chaos ensues, creatures you control gain flying until end of turn. \ No newline at end of file From 8c563d30ab77f5884800bf79ace6f000b87e06f6 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 10 Apr 2023 15:28:20 +0200 Subject: [PATCH 15/98] Update ten_wizards_mountain.txt --- forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt b/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt index f41fb45bccd..1c3b08ae609 100644 --- a/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt +++ b/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt @@ -4,6 +4,6 @@ Types:Plane Shenmeng T:Mode$ PlanarDice | TriggerZones$ Command | Execute$ RolledDie | TriggerDescription$ Whenever you roll the planar die, put a +1/+1 counter on up to one target creature. SVar:RolledDie:DB$ PutCounter | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control gain flying until end of turn. -SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Flying | SpellDescription$ Creatures you control gain flying until end of turn. +SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Flying DeckHas:Ability$Counters -Oracle:Whenever you roll the planar die, put a +1/+1 counter on up to one target creature.\nWhenever chaos ensues, creatures you control gain flying until end of turn. \ No newline at end of file +Oracle:Whenever you roll the planar die, put a +1/+1 counter on up to one target creature.\nWhenever chaos ensues, creatures you control gain flying until end of turn. From f84804fd43e7575837e795459da4faa469c0bb38 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 10 Apr 2023 20:59:03 +0200 Subject: [PATCH 16/98] update --- forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt | 2 +- forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt | 4 +--- forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt | 8 ++++---- .../cardsfolder/upcoming/the_golden_city_of_orazca.txt | 2 +- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt b/forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt index f1d79d6cbc2..4307ab24a0c 100644 --- a/forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt +++ b/forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt @@ -1,7 +1,7 @@ Name:Begin the Invasion ManaCost:X W U B R G Types:Sorcery -A:SP$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Card.Battle | ChangeNum$ X | SpellDescription$ Search your library for up to X battle cards with different names, put them onto the battlefield, then shuffle. +A:SP$ ChangeZone | Origin$ Library | DifferentNames$ True | ChangeTypeDesc$ battle cards with different names | Destination$ Battlefield | ChangeType$ Card.Battle | ChangeNum$ X | SpellDescription$ Search your library for up to X battle cards with different names, put them onto the battlefield, then shuffle. SVar:X:Count$xPaid DeckNeeds:Type$Battle AI:RemoveDeck:Random diff --git a/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt b/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt index e06cf73bf56..7c013d669c4 100644 --- a/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt +++ b/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt @@ -3,12 +3,10 @@ ManaCost:no cost Types:Plane Echoir T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeatEach | TriggerDescription$ When you planeswalk to CARDNAME, each player who controls fewer lands than the player who controls the most lands searches their library for a number of basic land cards less than or equal to the difference, reveals them, puts them into their hand, then shuffles. SVar:TrigRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChangeZone -SVar:DBChangeZone:DB$ ChangeZone | ConditionCheckSVar$ X | ConditionSVarCompare$ LTY | DefinedPlayer$ Remembered | Chooser$ Remembered | ChangeType$ Land.Basic | ChangeNum$ Z | Origin$ Library | Destination$ Battlefield | Tapped$ True +SVar:DBChangeZone:DB$ ChangeZone | ConditionCheckSVar$ X | ConditionSVarCompare$ LTY | DefinedPlayer$ Remembered | Chooser$ Remembered | ChangeType$ Land.Basic | ChangeNum$ Z | Origin$ Library | Destination$ Hand | Tapped$ True SVar:X:Count$Valid Land.RememberedPlayerCtrl SVar:Y:PlayerCountPlayers$HighestValid Land.YouCtrl SVar:Z:SVar$Y/Minus.X -SVar:Check1:Count$Valid Land.YouCtrl -SVar:Check2:SVar$Y/Minus.Check1 T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, draw a card, then you may put a land card from your hand onto the battlefield. SVar:RolledChaos:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBChangeZoneBis SVar:DBChangeZoneBis:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | Optional$ You | ChangeType$ Land | ChangeNum$ 1 diff --git a/forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt b/forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt index 186d7612a7c..4519f0b04e2 100644 --- a/forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt +++ b/forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt @@ -1,13 +1,13 @@ Name:Rashmi and Ragavan ManaCost:1 G U R -Types:Legendary Creature — Elf Monkey +Types:Legendary Creature Elf Monkey PT:2/4 -T:Mode$ SpellCast | ValidActivatingPlayer$ You | ActivatorThisTurnCast$ EQ1 | NoResolvingCheck$ True | ValidCard$ Card | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast your first spell during each of your turns, exile the top card of target opponent's library and create a Treasure token. Then you may cast the exiled card without paying its mana cost if it's a spell with mana value less than the number of artifacts you control. If you don't cast it this way, you may cast it this turn. +T:Mode$ SpellCast | ValidActivatingPlayer$ You | ActivatorThisTurnCast$ EQ1 | PlayerTurn$ True | NoResolvingCheck$ True | ValidCard$ Card | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast your first spell during each of your turns, exile the top card of target opponent's library and create a Treasure token. Then you may cast the exiled card without paying its mana cost if it's a spell with mana value less than the number of artifacts you control. If you don't cast it this way, you may cast it this turn. SVar:TrigExile:DB$ Dig | DigNum$ 1 | ChangeNum$ All | Defined$ Targeted | ValidTgts$ Opponent | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBToken SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidSA$ Spell.cmcLEX | ValidZone$ Exile | ImprintPlayed$ True | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBEffect +SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidSA$ Spell.cmcLTX | ValidZone$ Exile | ImprintPlayed$ True | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | ForgetOnMoved$ Exile | RememberObjects$ RememberedCard | ConditionDefined$ Imprinted | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBCleanup -SVar:STPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered | MayPlay$ True | AffectedZone$ Exile | Description$ Until the end of turn, you may play the exiled card. +SVar:STPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered+nonLand | MayPlay$ True | AffectedZone$ Exile | Description$ Until the end of turn, you may play the exiled card. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True SVar:X:Count$Valid Artifact.YouCtrl DeckHints:Type$Artifact diff --git a/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt b/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt index 2ec1f89694b..7de5bac4fde 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt @@ -2,7 +2,7 @@ Name:The Golden City of Orazca ManaCost:no cost Types:Plane Ixalan K:Ascend -T:Mode$ DamageDoneOnce | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ Whenever one or more creatures you control deal combat damage to a player, create a Treasure token. Then draw a card if you have the city’s blessing. +T:Mode$ DamageDoneOnce | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ Whenever one or more creatures you control deal combat damage to a player, create a Treasure token. Then draw a card if you have the city's blessing. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | Condition$ Blessing T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may put a permanent card from your hand onto the battlefield tapped. From 3e76090d4b9250d034a043762c3d8e6b0a16b605 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Tue, 11 Apr 2023 16:17:58 +0200 Subject: [PATCH 17/98] update --- forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt | 6 +++--- forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt | 2 +- forge-gui/res/cardsfolder/upcoming/the_pit.txt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt b/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt index cd95eae1293..02ceb7b7a3d 100644 --- a/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt +++ b/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt @@ -2,9 +2,9 @@ Name:Dance with Calamity ManaCost:7 R Types:Sorcery A:SP$ Shuffle | SubAbility$ DBRepeat | StackDescription$ {p:You} shuffles their library, | SpellDescription$ Shuffle your library. As many times as you choose, you may exile the top card of your library. If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. -SVar:DBRepeat:DB$ Repeat | RepeatSubAbility$ DBDig | RepeatOptional$ True | SubAbility$ DBPlay -SVar:DBDig:DB$ Dig | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card | DestinationZone$ Exile | RememberChanged$ True -SVar:DBPlay:DB$ Play | Defined$ Remembered | Amount$ All | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ LE13 +SVar:DBRepeat:DB$ GenericChoice | Choices$ Exile,Play | Defined$ You | SubAbility$ DBCleanup +SVar:Exile:DB$ Dig | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBRepeat | SpellDescription$ As many times as you choose, you may exile the top card of your library +SVar:Play:DB$ Play | Defined$ Remembered | Amount$ All | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ LE13 | SpellDescription$ If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$SumCMC AI:RemoveDeck:Random diff --git a/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt b/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt index 7c013d669c4..77d5d4c4eed 100644 --- a/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt +++ b/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Echoir T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeatEach | TriggerDescription$ When you planeswalk to CARDNAME, each player who controls fewer lands than the player who controls the most lands searches their library for a number of basic land cards less than or equal to the difference, reveals them, puts them into their hand, then shuffles. SVar:TrigRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChangeZone -SVar:DBChangeZone:DB$ ChangeZone | ConditionCheckSVar$ X | ConditionSVarCompare$ LTY | DefinedPlayer$ Remembered | Chooser$ Remembered | ChangeType$ Land.Basic | ChangeNum$ Z | Origin$ Library | Destination$ Hand | Tapped$ True +SVar:DBChangeZone:DB$ ChangeZone | ConditionCheckSVar$ X | ConditionSVarCompare$ LTY | DefinedPlayer$ Remembered | Chooser$ Remembered | ChangeType$ Land.Basic | ChangeNum$ Z | Origin$ Library | Destination$ Hand SVar:X:Count$Valid Land.RememberedPlayerCtrl SVar:Y:PlayerCountPlayers$HighestValid Land.YouCtrl SVar:Z:SVar$Y/Minus.X diff --git a/forge-gui/res/cardsfolder/upcoming/the_pit.txt b/forge-gui/res/cardsfolder/upcoming/the_pit.txt index 5fd0403f947..efbc58c2ffd 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_pit.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_pit.txt @@ -2,7 +2,7 @@ Name:The Pit ManaCost:no cost Types:Plane The Abyss T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeatEach | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME, each player creates their choice of a 3/3 white Angel creature token with flying or a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you." -SVar:TrigRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | ClearRememberedBeforeLoop$ True | RepeatSubAbility$ DBChoice +SVar:TrigRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | ClearRememberedBeforeLoop$ True | ChangeZoneTable$ True | RepeatSubAbility$ DBChoice SVar:DBChoice:DB$ GenericChoice | Defined$ Player.IsRemembered | Choices$ Angel,Demon SVar:Angel:DB$ Token | TokenScript$ w_3_3_angel_flying | TokenOwner$ Player.IsRemembered | SpellDescription$ Create a 3/3 white Angel creature token with flying SVar:Demon:DB$ Token | TokenScript$ b_6_6_demon_flying_trample_aristocrat | TokenOwner$ Player.IsRemembered | SpellDescription$ a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you." From f2d98c4ec07d3713367072d96cdd11c30e232b86 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Tue, 11 Apr 2023 21:23:17 +0200 Subject: [PATCH 18/98] update --- .../res/cardsfolder/upcoming/dance_with_calamity.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt b/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt index 02ceb7b7a3d..42b5582b20a 100644 --- a/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt +++ b/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt @@ -1,10 +1,11 @@ Name:Dance with Calamity ManaCost:7 R Types:Sorcery -A:SP$ Shuffle | SubAbility$ DBRepeat | StackDescription$ {p:You} shuffles their library, | SpellDescription$ Shuffle your library. As many times as you choose, you may exile the top card of your library. If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. -SVar:DBRepeat:DB$ GenericChoice | Choices$ Exile,Play | Defined$ You | SubAbility$ DBCleanup -SVar:Exile:DB$ Dig | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBRepeat | SpellDescription$ As many times as you choose, you may exile the top card of your library -SVar:Play:DB$ Play | Defined$ Remembered | Amount$ All | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ LE13 | SpellDescription$ If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. +A:SP$ Shuffle | SubAbility$ DBChoose | StackDescription$ {p:You} shuffles their library, | SpellDescription$ Shuffle your library. As many times as you choose, you may exile the top card of your library. If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. +SVar:DBChoose:DB$ GenericChoice | Choices$ DBRepeat,Play | Defined$ You +SVar:DBRepeat:DB$ Repeat | RepeatSubAbility$ DBDig | RepeatOptional$ True | SubAbility$ Play | SpellDescription$ As many times as you choose, you may exile the top card of your library +SVar:DBDig:DB$ Dig | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card | DestinationZone$ Exile | RememberChanged$ True +SVar:Play:DB$ Play | Defined$ Remembered | Amount$ All | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ LE13 | SubAbility$ DBCleanup | SpellDescription$ If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$SumCMC AI:RemoveDeck:Random From ec3b1befdec97f742ec73f918bea29e9bde29ab3 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Tue, 11 Apr 2023 21:46:00 +0200 Subject: [PATCH 19/98] Update CardFactoryUtil.java --- .../main/java/forge/game/card/CardFactoryUtil.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index ec684f4c3a9..79bd7dd7c12 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -819,7 +819,19 @@ public class CardFactoryUtil { inst.addTrigger(trigger); } else if (keyword.equals("Ascend")) { // Ascend trigger only for Permanent - if (card.isPermanent()) { + if (card.isPlane()) { // Ascend trigger for The Golden City of Orazca + final String trig = "Mode$ Always | TriggerZones$ Command | Secondary$ True" + + " | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10 " + + " | TriggerDescription$ Ascend (" + inst.getReminderText() + ")"; + + final String effect = "DB$ Ascend | Defined$ You"; + + final Trigger trigger = TriggerHandler.parseTrigger(trig, card, intrinsic); + trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); + + inst.addTrigger(trigger); + + } else if (card.isPermanent()) { final String trig = "Mode$ Always | TriggerZones$ Battlefield | Secondary$ True" + " | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10 " + " | TriggerDescription$ Ascend (" + inst.getReminderText() + ")"; From 8be93d3be5f0dd12d74a021c9e0c276d4c61c307 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Wed, 12 Apr 2023 10:39:33 +0200 Subject: [PATCH 20/98] Effect cleanup can prevent any LTB trigger --- forge-game/src/main/java/forge/game/GameAction.java | 2 ++ forge-game/src/main/java/forge/game/trigger/TriggerHandler.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index de559263e22..f89eaca73d2 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1439,6 +1439,8 @@ public class GameAction { } setHoldCheckingStaticAbilities(false); + // important to collect first otherwise if a static fires it will mess up registered ones from LKI + game.getTriggerHandler().collectTriggerForWaiting(); if (game.getTriggerHandler().runWaitingTriggers()) { checkAgain = true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index 8a54c840cf0..8098aeab9e3 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -180,7 +180,7 @@ public class TriggerHandler { return FileSection.parseToMap(trigParse, FileSection.DOLLAR_SIGN_KV_SEPARATOR); } - private void collectTriggerForWaiting() { + public void collectTriggerForWaiting() { for (final TriggerWaiting wt : waitingTriggers) { if (wt.getTriggers() != null) continue; From 1158d47e46f72f483ba4bdcf9fee3b085dca7d2b Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 14 Apr 2023 12:02:59 +0200 Subject: [PATCH 21/98] update --- .../invasion_of_shandalar_leyline_surge.txt | 18 ++++++++++++++ .../invasion_of_tarkir_defiant_thundermaw.txt | 24 +++++++++++++++++++ ...on_of_ulgrotha_grandmother_ravi_sengir.txt | 23 ++++++++++++++++++ .../invasion_of_xerex_vertex_paladin.txt | 20 ++++++++++++++++ .../res/cardsfolder/upcoming/kor_halberd.txt | 6 +++++ .../upcoming/lithomantic_barrage.txt | 12 ++++++++++ .../upcoming/marshal_of_zhalfir.txt | 9 +++++++ .../upcoming/mirran_banesplitter.txt | 9 +++++++ .../upcoming/ozolith_the_shattered_spire.txt | 11 +++++++++ .../upcoming/phyrexian_archivist.txt | 8 +++++++ 10 files changed, 140 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/kor_halberd.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/mirran_banesplitter.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt new file mode 100644 index 00000000000..618a20d6cbe --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt @@ -0,0 +1,18 @@ +Name:Invasion of Shandalar +ManaCost:3 G G +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerDescription$ When CARDNAME enters the battlefield, return up to three target permanent cards from your graveyard to your hand. +SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | TargetMin$ 0 | TargetMax$ 3 | TgtPrompt$ Choose up to three target permanent cards in your graveyard | ValidTgts$ Permanent.YouCtrl | SpellDescription$ Return up to three target permanent cards from your graveyard to your hand. +DeckHas:Ability$Graveyard +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Shandalar enters the battlefield, return up to three target permanent cards from your graveyard to your hand. +ALTERNATE + +Name:Leyline Surge +ManaCost:no cost +Colors:green +Types:Enchantment +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChangeZone | TriggerDescription$ At the beginning of your upkeep, you may put a permanent card from your hand onto the battlefield. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Permanent +Oracle:At the beginning of your upkeep, you may put a permanent card from your hand onto the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt new file mode 100644 index 00000000000..2564282f4a5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -0,0 +1,24 @@ +Name:Invasion of Tarkir +ManaCost:1 R +Types:Battle Siege +Defense:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. When you do, Invasion of Tarkir deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouCtrl | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBDamage +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker,Battle | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$Amount/Plus.2 +DeckNeeds:Type$Dragon +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Tarkir enters the battlefield, reveal any number of Dragon cards from your hand. When you do, Invasion of Tarkir deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +ALTERNATE + +Name:Defiant Thundermaw +ManaCost:no cost +Colors:red +Types:Creature Dragon +PT:4/4 +K:Trample +K:Flying +T:Mode$ Attacks | ValidCard$ Dragon.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a Dragon you control attacks, it deals 2 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker,Battle | TgtPrompt$ Select any target | NumDmg$ 2 +Oracle:Flying, trample\nWhenever a Dragon you control attacks, it deals 2 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt new file mode 100644 index 00000000000..795a8f5524d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt @@ -0,0 +1,23 @@ +Name:Invasion of Ulgrotha +ManaCost:4 B +Types:Battle Siege +Defense:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to any other target and you gain 3 life. +SVar:TrigDrain:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker,Battle | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 +DeckHas:Ability$Counters|LifeGain +AlternateMode:DoubleFaced +Oracle:When Invasion of Ulgrotha enters the battlefield, it deals 3 damage to any other target and you gain 3 life. + +ALTERNATE + +Name:Grandmother Ravi Sengir +ManaCost:no cost +Colors:black +Types:Legendary Creature Human Wizard +PT:3/3 +K:Flying +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Creature.OppCtrl | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ DeathGift | TriggerDescription$ Whenever a creature an opponent controls dies, put a +1/+1 counter on Grandmother Ravi Sengir and you gain 1 life. +SVar:DeathGift:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBGainLifeBis +SVar:DBGainLifeBis:DB$ GainLife | Defined$ You | LifeAmount$ 1 +Oracle:Flying\nWhenever a creature an opponent controls dies, put a +1/+1 counter on Grandmother Ravi Sengir and you gain 1 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt new file mode 100644 index 00000000000..c22c9bdaffa --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt @@ -0,0 +1,20 @@ +Name:Invasion of Xerex +ManaCost:2 W U +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerDescription$ When CARDNAME enters the battlefield, return up to one target creature to its owner's hand. +SVar:TrigReturn:DB$ ChangeZone | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | Origin$ Battlefield | Destination$ Hand +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Xerex enters the battlefield, return up to one target creature to its owner's hand. + +ALTERNATE + +Name:Vertex Paladin +ManaCost:no cost +Colors:white,blue +Types:Creature Angel Knight +PT:*/* +S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ CARDNAME's power and toughness are each equal to the number of creatures you control. +SVar:X:Count$Valid Creature.YouCtrl +K:Flying +Oracle:Flying\nVertex Paladin's power and toughness are each equal to the number of creatures you control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/kor_halberd.txt b/forge-gui/res/cardsfolder/upcoming/kor_halberd.txt new file mode 100644 index 00000000000..b51848083e6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kor_halberd.txt @@ -0,0 +1,6 @@ +Name:Kor Halberd +ManaCost:W +Types:Artifact Equipment +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Vigilance | Description$ Equipped creature gets +1/+1 and has vigilance. +K:Equip:1 +Oracle:Equipped creature gets +1/+1 and has vigilance.\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt new file mode 100644 index 00000000000..cc604becc21 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt @@ -0,0 +1,12 @@ +Name:Lithomantic Barrage +ManaCost:R +Types:Sorcery +K:This spell can't be countered. +A:SP$ Pump | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | IsCurse$ True | RememberObjects$ Targeted | SubAbility$ DBDmg | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. +SVar:DBDmg:DB$ DealDamage | Defined$ Remembered | NumDmg$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBDmgWU | StackDescription$ None +SVar:DBDmgWU:DB$ DealDamage | Defined$ Remembered | NumDmg$ 5 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | StackDescription$ None | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$Valid Creature.IsRemembered+White,Creature.IsRemembered+Blue +AI:RemoveDeck:All +AI:RemoveDeck:Random +Oracle:This spell can't be countered.\nLithomantic Barrage deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt b/forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt new file mode 100644 index 00000000000..453712186d3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt @@ -0,0 +1,9 @@ +Name:Marshal of Zhalfir +ManaCost:W U +Types:Creature Human Knight +PT:2/2 +S:Mode$ Continuous | Affected$ Creature.Knight+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Knights you control get +1/+1. +A:AB$ Tap | Cost$ W U T | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature | SpellDescription$ Tap another target creature. +SVar:PlayMain1:TRUE +DeckNeeds:Type$Knight +Oracle:Other Knights you control get +1/+1.\n{W}{U}, {T}: Tap another target creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/mirran_banesplitter.txt b/forge-gui/res/cardsfolder/upcoming/mirran_banesplitter.txt new file mode 100644 index 00000000000..6edbc148917 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mirran_banesplitter.txt @@ -0,0 +1,9 @@ +Name:Mirran Banesplitter +ManaCost:R +Types:Artifact Equipment +K:Flash +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigAttach | TriggerDescription$ When CARDNAME enters the battlefield, attach it to target creature you control. +SVar:TrigAttach:DB$ Attach | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | Description$ Equipped creature gets +2/+0. +K:Equip:3 +Oracle:Flash\nWhen Mirran Banesplitter enters the battlefield, attach it to target creature you control.\nEquipped creature gets +2/+0.\nEquip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt b/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt new file mode 100644 index 00000000000..fe3f0759ed0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt @@ -0,0 +1,11 @@ +Name:Ozolith, the Shattered Spire +ManaCost:1 G +Types:Legendary Artifact +R:Event$ AddCounter | ActiveZones$ Battlefield | ValidCard$ Creature.YouCtrl+inZoneBattlefield,Creature.YouCtrl+inZoneBattlefield | ValidCounterType$ P1P1 | ReplaceWith$ AddOneMoreCounters | Description$ If one or more +1/+1 counters would be put on an artifact or creature you control, that many plus one +1/+1 counters are put on it instead. +SVar:AddOneMoreCounters:DB$ ReplaceCounter | ValidCounterType$ P1P1 | ChooseCounter$ True | Amount$ X +SVar:X:ReplaceCount$CounterNum/Plus.1 +A:AB$ PutCounter | Cost$ 1 G T | ValidTgts$ Creature.YouCtrl,Artifact.YouCtrl | TgtPrompt$ Select target artifact or creature you control | CounterType$ P1P1 | CounterNum$ 1 | SorcerySpeed$ True | SpellDescription$ Put a +1/+1 counter on target artifact or creature you control. Activate only as a sorcery. +K:Cycling:2 +DeckHas:Ability$Counters +DeckHints:Ability$Counters +Oracle:If one or more +1/+1 counters would be put on an artifact or creature you control, that many plus one +1/+1 counters are put on it instead.\n{1}{G}, {T}: Put a +1/+1 counter on target artifact or creature you control. Activate only as a sorcery.\nCycling {2} ({2}, Discard this card: Draw a card.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt b/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt new file mode 100644 index 00000000000..3e2dcc7cbad --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt @@ -0,0 +1,8 @@ +Name:Phyrexian Archivist +ManaCost:6 +Types:Artifact Creature Phyrexian Construct +PT:4/5 +K:Reach +A:AB$ ChangeZone | Cost$ 2 T | ValidTgts$ Card | TgtPrompt$ Select target card | Origin$ Graveyard | Destination$ Library | LibraryPosition$ -1 | SpellDescription$ Put target card from a graveyard on the bottom of its owner's library. +DeckHas:Ability$Graveyard +Oracle:Reach\n{2}, {T}: Put target card from a graveyard on the bottom of its owner's library. \ No newline at end of file From ca3916a4f8a56694b5e0431fb1530098c3084d8d Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 14 Apr 2023 12:05:33 +0200 Subject: [PATCH 22/98] cleanup --- .../upcoming/invasion_of_shandalar_leyline_surge.txt | 1 + .../upcoming/invasion_of_tarkir_defiant_thundermaw.txt | 3 ++- .../res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt index 618a20d6cbe..1fb71b15eb9 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt @@ -7,6 +7,7 @@ SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | TargetM DeckHas:Ability$Graveyard AlternateMode:DoubleFaced Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Shandalar enters the battlefield, return up to three target permanent cards from your graveyard to your hand. + ALTERNATE Name:Leyline Surge diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt index 2564282f4a5..d205bf6eefb 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -2,7 +2,7 @@ Name:Invasion of Tarkir ManaCost:1 R Types:Battle Siege Defense:5 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. When you do, Invasion of Tarkir deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouCtrl | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBDamage SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker,Battle | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True @@ -10,6 +10,7 @@ SVar:X:Remembered$Amount/Plus.2 DeckNeeds:Type$Dragon AlternateMode:DoubleFaced Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Tarkir enters the battlefield, reveal any number of Dragon cards from your hand. When you do, Invasion of Tarkir deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) + ALTERNATE Name:Defiant Thundermaw diff --git a/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt b/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt index fe3f0759ed0..d7b9ea91d0a 100644 --- a/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt +++ b/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt @@ -6,6 +6,6 @@ SVar:AddOneMoreCounters:DB$ ReplaceCounter | ValidCounterType$ P1P1 | ChooseCoun SVar:X:ReplaceCount$CounterNum/Plus.1 A:AB$ PutCounter | Cost$ 1 G T | ValidTgts$ Creature.YouCtrl,Artifact.YouCtrl | TgtPrompt$ Select target artifact or creature you control | CounterType$ P1P1 | CounterNum$ 1 | SorcerySpeed$ True | SpellDescription$ Put a +1/+1 counter on target artifact or creature you control. Activate only as a sorcery. K:Cycling:2 -DeckHas:Ability$Counters +DeckHas:Ability$Counters|Discard DeckHints:Ability$Counters Oracle:If one or more +1/+1 counters would be put on an artifact or creature you control, that many plus one +1/+1 counters are put on it instead.\n{1}{G}, {T}: Put a +1/+1 counter on target artifact or creature you control. Activate only as a sorcery.\nCycling {2} ({2}, Discard this card: Draw a card.) \ No newline at end of file From 43acdf3218f527305a157259db43788ed5a82f8b Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 14 Apr 2023 13:50:31 +0200 Subject: [PATCH 23/98] update --- forge-gui/res/cardsfolder/l/lightning_dart.txt | 10 +++++----- .../upcoming/invasion_of_tarkir_defiant_thundermaw.txt | 7 ++++--- .../invasion_of_ulgrotha_grandmother_ravi_sengir.txt | 4 ++-- .../res/cardsfolder/upcoming/lithomantic_barrage.txt | 10 +++++----- .../upcoming/ozolith_the_shattered_spire.txt | 2 +- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/forge-gui/res/cardsfolder/l/lightning_dart.txt b/forge-gui/res/cardsfolder/l/lightning_dart.txt index 23d2665979a..f400ab6ac2b 100644 --- a/forge-gui/res/cardsfolder/l/lightning_dart.txt +++ b/forge-gui/res/cardsfolder/l/lightning_dart.txt @@ -1,11 +1,11 @@ Name:Lightning Dart ManaCost:1 R Types:Instant -A:SP$ Pump | Cost$ 1 R | ValidTgts$ Creature | IsCurse$ True | RememberObjects$ Targeted | SubAbility$ DBDmg | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals 1 damage to target creature. If that creature is white or blue, CARDNAME deals 4 damage to it instead. -SVar:DBDmg:DB$ DealDamage | Defined$ Remembered | NumDmg$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBDmgWU | StackDescription$ None -SVar:DBDmgWU:DB$ DealDamage | Defined$ Remembered | NumDmg$ 4 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | StackDescription$ None | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Count$Valid Creature.IsRemembered+White,Creature.IsRemembered+Blue +A:SP$ Pump | ValidTgts$ Creature | IsCurse$ True | AIValid$ Creature.White,Creature.Blue | RememberObjects$ Targeted | SubAbility$ DBDmg | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals 1 damage to target creature. If that creature is white or blue, CARDNAME deals 4 damage to it instead. +SVar:DBDmg:DB$ DealDamage | Defined$ Remembered | NumDmg$ X | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Y:Count$Valid Creature.IsRemembered+White,Creature.IsRemembered+Blue +SVar:X:Count$Compare Y GE1.4.1 AI:RemoveDeck:All AI:RemoveDeck:Random Oracle:Lightning Dart deals 1 damage to target creature. If that creature is white or blue, Lightning Dart deals 4 damage to it instead. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt index d205bf6eefb..3090a607e49 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -2,9 +2,10 @@ Name:Invasion of Tarkir ManaCost:1 R Types:Battle Siege Defense:5 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) -SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouCtrl | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBDamage -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker,Battle | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBCleanup +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. +SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouCtrl | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBImmediateTrig +SVar:DBImmediateTrig:DB$ ImmediateTrigger | ConditionDefined$ Remembered | ConditionPresent$ GE1 | Execute$ TrigDamageBis | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +SVar:TrigDamageBis:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount/Plus.2 DeckNeeds:Type$Dragon diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt index 795a8f5524d..a095c25dc24 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt @@ -3,7 +3,7 @@ ManaCost:4 B Types:Battle Siege Defense:5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to any other target and you gain 3 life. -SVar:TrigDrain:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker,Battle | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBGainLife +SVar:TrigDrain:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBGainLife SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 DeckHas:Ability$Counters|LifeGain AlternateMode:DoubleFaced @@ -17,7 +17,7 @@ Colors:black Types:Legendary Creature Human Wizard PT:3/3 K:Flying -T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Creature.OppCtrl | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ DeathGift | TriggerDescription$ Whenever a creature an opponent controls dies, put a +1/+1 counter on Grandmother Ravi Sengir and you gain 1 life. +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Creature.OppCtrl | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ DeathGift | TriggerDescription$ Whenever a creature an opponent controls dies, put a +1/+1 counter on CARDNAME and you gain 1 life. SVar:DeathGift:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBGainLifeBis SVar:DBGainLifeBis:DB$ GainLife | Defined$ You | LifeAmount$ 1 Oracle:Flying\nWhenever a creature an opponent controls dies, put a +1/+1 counter on Grandmother Ravi Sengir and you gain 1 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt index cc604becc21..23b5b5311e3 100644 --- a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt +++ b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt @@ -2,11 +2,11 @@ Name:Lithomantic Barrage ManaCost:R Types:Sorcery K:This spell can't be countered. -A:SP$ Pump | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | IsCurse$ True | RememberObjects$ Targeted | SubAbility$ DBDmg | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. -SVar:DBDmg:DB$ DealDamage | Defined$ Remembered | NumDmg$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBDmgWU | StackDescription$ None -SVar:DBDmgWU:DB$ DealDamage | Defined$ Remembered | NumDmg$ 5 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | StackDescription$ None | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Count$Valid Creature.IsRemembered+White,Creature.IsRemembered+Blue +A:SP$ Pump | ValidTgts$ Creature | IsCurse$ True | AIValid$ Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue | RememberObjects$ Targeted | SubAbility$ DBDmg | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. +SVar:DBDmg:DB$ DealDamage | Defined$ Remembered | NumDmg$ X | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Y:Count$Valid Creature.IsRemembered+White,Creature.IsRemembered+Blue,Planeswalker.IsRemembered+White,Planeswalker.IsRemembered+Blue +SVar:X:Count$Compare Y GE1.5.1 AI:RemoveDeck:All AI:RemoveDeck:Random Oracle:This spell can't be countered.\nLithomantic Barrage deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt b/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt index d7b9ea91d0a..2b1cfb161a1 100644 --- a/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt +++ b/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt @@ -1,7 +1,7 @@ Name:Ozolith, the Shattered Spire ManaCost:1 G Types:Legendary Artifact -R:Event$ AddCounter | ActiveZones$ Battlefield | ValidCard$ Creature.YouCtrl+inZoneBattlefield,Creature.YouCtrl+inZoneBattlefield | ValidCounterType$ P1P1 | ReplaceWith$ AddOneMoreCounters | Description$ If one or more +1/+1 counters would be put on an artifact or creature you control, that many plus one +1/+1 counters are put on it instead. +R:Event$ AddCounter | ActiveZones$ Battlefield | ValidCard$ Creature.YouCtrl+inZoneBattlefield,Artifact.YouCtrl+inZoneBattlefield | ValidCounterType$ P1P1 | ReplaceWith$ AddOneMoreCounters | Description$ If one or more +1/+1 counters would be put on an artifact or creature you control, that many plus one +1/+1 counters are put on it instead. SVar:AddOneMoreCounters:DB$ ReplaceCounter | ValidCounterType$ P1P1 | ChooseCounter$ True | Amount$ X SVar:X:ReplaceCount$CounterNum/Plus.1 A:AB$ PutCounter | Cost$ 1 G T | ValidTgts$ Creature.YouCtrl,Artifact.YouCtrl | TgtPrompt$ Select target artifact or creature you control | CounterType$ P1P1 | CounterNum$ 1 | SorcerySpeed$ True | SpellDescription$ Put a +1/+1 counter on target artifact or creature you control. Activate only as a sorcery. From cdf4d0ec2880b2cdb68bf5f4732c4056f88dea9b Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 14 Apr 2023 13:52:48 +0200 Subject: [PATCH 24/98] Update invasion_of_tarkir_defiant_thundermaw.txt --- .../upcoming/invasion_of_tarkir_defiant_thundermaw.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt index 3090a607e49..9f4ff228453 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -4,7 +4,7 @@ Types:Battle Siege Defense:5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouCtrl | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBImmediateTrig -SVar:DBImmediateTrig:DB$ ImmediateTrigger | ConditionDefined$ Remembered | ConditionPresent$ GE1 | Execute$ TrigDamageBis | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +SVar:DBImmediateTrig:DB$ ImmediateTrigger | CheckSVar$ X | SVarCompare$ GT2 | Execute$ TrigDamageBis | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) SVar:TrigDamageBis:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount/Plus.2 From f8c14edafad092ec7085e659fcaeb8e642e438d4 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 14 Apr 2023 17:13:25 +0200 Subject: [PATCH 25/98] update --- forge-gui/res/cardsfolder/l/lightning_dart.txt | 7 +++---- .../upcoming/invasion_of_shandalar_leyline_surge.txt | 4 ++-- .../upcoming/invasion_of_tarkir_defiant_thundermaw.txt | 10 +++++----- .../invasion_of_ulgrotha_grandmother_ravi_sengir.txt | 2 +- .../upcoming/invasion_of_xerex_vertex_paladin.txt | 2 +- .../res/cardsfolder/upcoming/lithomantic_barrage.txt | 7 +++---- .../res/cardsfolder/upcoming/marshal_of_zhalfir.txt | 2 +- .../res/cardsfolder/upcoming/phyrexian_archivist.txt | 2 +- 8 files changed, 17 insertions(+), 19 deletions(-) diff --git a/forge-gui/res/cardsfolder/l/lightning_dart.txt b/forge-gui/res/cardsfolder/l/lightning_dart.txt index f400ab6ac2b..0c58a6644be 100644 --- a/forge-gui/res/cardsfolder/l/lightning_dart.txt +++ b/forge-gui/res/cardsfolder/l/lightning_dart.txt @@ -1,10 +1,9 @@ Name:Lightning Dart ManaCost:1 R Types:Instant -A:SP$ Pump | ValidTgts$ Creature | IsCurse$ True | AIValid$ Creature.White,Creature.Blue | RememberObjects$ Targeted | SubAbility$ DBDmg | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals 1 damage to target creature. If that creature is white or blue, CARDNAME deals 4 damage to it instead. -SVar:DBDmg:DB$ DealDamage | Defined$ Remembered | NumDmg$ X | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:Y:Count$Valid Creature.IsRemembered+White,Creature.IsRemembered+Blue +A:SP$ Pump | ValidTgts$ Creature | IsCurse$ True | AITgts$ Creature.White,Creature.Blue | SubAbility$ DBDmg | StackDescription$ REP target creature_{c:Targeted} | SpellDescription$ CARDNAME deals 1 damage to target creature. If that creature is white or blue, CARDNAME deals 4 damage to it instead. +SVar:DBDmg:DB$ DealDamage | Defined$ Targeted | StackDescription$ None | NumDmg$ X +SVar:Y:Targeted$Valid Creature.White,Creature.Blue SVar:X:Count$Compare Y GE1.4.1 AI:RemoveDeck:All AI:RemoveDeck:Random diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt index 1fb71b15eb9..81917e07fad 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt @@ -3,7 +3,7 @@ ManaCost:3 G G Types:Battle Siege Defense:4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerDescription$ When CARDNAME enters the battlefield, return up to three target permanent cards from your graveyard to your hand. -SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | TargetMin$ 0 | TargetMax$ 3 | TgtPrompt$ Choose up to three target permanent cards in your graveyard | ValidTgts$ Permanent.YouCtrl | SpellDescription$ Return up to three target permanent cards from your graveyard to your hand. +SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | TargetMin$ 0 | TargetMax$ 3 | TgtPrompt$ Choose up to three target permanent cards in your graveyard | ValidTgts$ Permanent.YouOwn DeckHas:Ability$Graveyard AlternateMode:DoubleFaced Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Shandalar enters the battlefield, return up to three target permanent cards from your graveyard to your hand. @@ -15,5 +15,5 @@ ManaCost:no cost Colors:green Types:Enchantment T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChangeZone | TriggerDescription$ At the beginning of your upkeep, you may put a permanent card from your hand onto the battlefield. -SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Permanent +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Permanent.YouOwn Oracle:At the beginning of your upkeep, you may put a permanent card from your hand onto the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt index 9f4ff228453..e9cc863eb8e 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -2,13 +2,13 @@ Name:Invasion of Tarkir ManaCost:1 R Types:Battle Siege Defense:5 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. -SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouCtrl | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBImmediateTrig -SVar:DBImmediateTrig:DB$ ImmediateTrigger | CheckSVar$ X | SVarCompare$ GT2 | Execute$ TrigDamageBis | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) -SVar:TrigDamageBis:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBCleanup +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouOwn | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBImmediateTrig +SVar:DBImmediateTrig:DB$ ImmediateTrigger | Execute$ TrigDamageBis | SubAbility$ DBCleanup | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +SVar:TrigDamageBis:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any other target | NumDmg$ X SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount/Plus.2 -DeckNeeds:Type$Dragon +DeckHints:Type$Dragon AlternateMode:DoubleFaced Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Tarkir enters the battlefield, reveal any number of Dragon cards from your hand. When you do, Invasion of Tarkir deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt index a095c25dc24..499d2f11dd4 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt @@ -3,7 +3,7 @@ ManaCost:4 B Types:Battle Siege Defense:5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to any other target and you gain 3 life. -SVar:TrigDrain:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBGainLife +SVar:TrigDrain:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any other target | NumDmg$ 3 | SubAbility$ DBGainLife SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 DeckHas:Ability$Counters|LifeGain AlternateMode:DoubleFaced diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt index c22c9bdaffa..b7af3a1ee38 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt @@ -3,7 +3,7 @@ ManaCost:2 W U Types:Battle Siege Defense:4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerDescription$ When CARDNAME enters the battlefield, return up to one target creature to its owner's hand. -SVar:TrigReturn:DB$ ChangeZone | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | Origin$ Battlefield | Destination$ Hand +SVar:TrigReturn:DB$ ChangeZone | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target creature | Origin$ Battlefield | Destination$ Hand AlternateMode:DoubleFaced Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Xerex enters the battlefield, return up to one target creature to its owner's hand. diff --git a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt index 23b5b5311e3..921c9c83594 100644 --- a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt +++ b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt @@ -2,10 +2,9 @@ Name:Lithomantic Barrage ManaCost:R Types:Sorcery K:This spell can't be countered. -A:SP$ Pump | ValidTgts$ Creature | IsCurse$ True | AIValid$ Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue | RememberObjects$ Targeted | SubAbility$ DBDmg | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. -SVar:DBDmg:DB$ DealDamage | Defined$ Remembered | NumDmg$ X | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:Y:Count$Valid Creature.IsRemembered+White,Creature.IsRemembered+Blue,Planeswalker.IsRemembered+White,Planeswalker.IsRemembered+Blue +A:SP$ Pump | ValidTgts$ Creature,Planeswalkers | TgtPrompt$ Select target creature or planeswalker |StackDescription$ REP target creature or planeswalker_{c:Targeted} | IsCurse$ True | AITgts$ Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue | SubAbility$ DBDmg | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. +SVar:DBDmg:DB$ DealDamage | Defined$ Targeted | StackDescription$ None | NumDmg$ X +SVar:Y:Targeted$Valid Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue SVar:X:Count$Compare Y GE1.5.1 AI:RemoveDeck:All AI:RemoveDeck:Random diff --git a/forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt b/forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt index 453712186d3..513a7661e81 100644 --- a/forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt +++ b/forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt @@ -5,5 +5,5 @@ PT:2/2 S:Mode$ Continuous | Affected$ Creature.Knight+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Knights you control get +1/+1. A:AB$ Tap | Cost$ W U T | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature | SpellDescription$ Tap another target creature. SVar:PlayMain1:TRUE -DeckNeeds:Type$Knight +DeckHints:Type$Knight Oracle:Other Knights you control get +1/+1.\n{W}{U}, {T}: Tap another target creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt b/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt index 3e2dcc7cbad..ae7275909dc 100644 --- a/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt +++ b/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt @@ -3,6 +3,6 @@ ManaCost:6 Types:Artifact Creature Phyrexian Construct PT:4/5 K:Reach -A:AB$ ChangeZone | Cost$ 2 T | ValidTgts$ Card | TgtPrompt$ Select target card | Origin$ Graveyard | Destination$ Library | LibraryPosition$ -1 | SpellDescription$ Put target card from a graveyard on the bottom of its owner's library. +A:AB$ ChangeZone | Cost$ 2 T | ValidTgts$ Card | TgtPrompt$ TgtPrompt$ Select target card from a graveyard | Origin$ Graveyard | Destination$ Library | LibraryPosition$ -1 | SpellDescription$ DeckHas:Ability$Graveyard Oracle:Reach\n{2}, {T}: Put target card from a graveyard on the bottom of its owner's library. \ No newline at end of file From e929b5c6046a3c55580e19b27c28a9fa6e9763e5 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 14 Apr 2023 21:00:25 +0200 Subject: [PATCH 26/98] update --- forge-gui/res/cardsfolder/l/lightning_dart.txt | 3 +-- forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/forge-gui/res/cardsfolder/l/lightning_dart.txt b/forge-gui/res/cardsfolder/l/lightning_dart.txt index 0c58a6644be..d0528a93a7a 100644 --- a/forge-gui/res/cardsfolder/l/lightning_dart.txt +++ b/forge-gui/res/cardsfolder/l/lightning_dart.txt @@ -1,8 +1,7 @@ Name:Lightning Dart ManaCost:1 R Types:Instant -A:SP$ Pump | ValidTgts$ Creature | IsCurse$ True | AITgts$ Creature.White,Creature.Blue | SubAbility$ DBDmg | StackDescription$ REP target creature_{c:Targeted} | SpellDescription$ CARDNAME deals 1 damage to target creature. If that creature is white or blue, CARDNAME deals 4 damage to it instead. -SVar:DBDmg:DB$ DealDamage | Defined$ Targeted | StackDescription$ None | NumDmg$ X +A:SP$ DealDamage | ValidTgts$ Creature | IsCurse$ True | AITgts$ Creature.White,Creature.Blue | Defined$ Targeted | NumDmg$ X | StackDescription$ REP target creature_{c:Targeted} | SpellDescription$ CARDNAME deals 1 damage to target creature. If that creature is white or blue, CARDNAME deals 4 damage to it instead. SVar:Y:Targeted$Valid Creature.White,Creature.Blue SVar:X:Count$Compare Y GE1.4.1 AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt index 921c9c83594..2c4825bcc8a 100644 --- a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt +++ b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt @@ -2,8 +2,7 @@ Name:Lithomantic Barrage ManaCost:R Types:Sorcery K:This spell can't be countered. -A:SP$ Pump | ValidTgts$ Creature,Planeswalkers | TgtPrompt$ Select target creature or planeswalker |StackDescription$ REP target creature or planeswalker_{c:Targeted} | IsCurse$ True | AITgts$ Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue | SubAbility$ DBDmg | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. -SVar:DBDmg:DB$ DealDamage | Defined$ Targeted | StackDescription$ None | NumDmg$ X +A:SP$ DealDamage | Defined$ Targeted | NumDmg$ X | ValidTgts$ Creature,Planeswalkers | TgtPrompt$ Select target creature or planeswalker |StackDescription$ REP target creature or planeswalker_{c:Targeted} | IsCurse$ True | AITgts$ Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. SVar:Y:Targeted$Valid Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue SVar:X:Count$Compare Y GE1.5.1 AI:RemoveDeck:All From 06e3bb5445a51498c280f93acf9ec6a3f68ef32f Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 14 Apr 2023 21:14:12 +0200 Subject: [PATCH 27/98] update --- forge-gui/res/cardsfolder/l/lightning_dart.txt | 2 +- forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/l/lightning_dart.txt b/forge-gui/res/cardsfolder/l/lightning_dart.txt index d0528a93a7a..fa9fa4c22b9 100644 --- a/forge-gui/res/cardsfolder/l/lightning_dart.txt +++ b/forge-gui/res/cardsfolder/l/lightning_dart.txt @@ -1,7 +1,7 @@ Name:Lightning Dart ManaCost:1 R Types:Instant -A:SP$ DealDamage | ValidTgts$ Creature | IsCurse$ True | AITgts$ Creature.White,Creature.Blue | Defined$ Targeted | NumDmg$ X | StackDescription$ REP target creature_{c:Targeted} | SpellDescription$ CARDNAME deals 1 damage to target creature. If that creature is white or blue, CARDNAME deals 4 damage to it instead. +A:SP$ DealDamage | ValidTgts$ Creature | IsCurse$ True | AITgts$ Creature.White,Creature.Blue | NumDmg$ X | StackDescription$ REP target creature_{c:Targeted} | SpellDescription$ CARDNAME deals 1 damage to target creature. If that creature is white or blue, CARDNAME deals 4 damage to it instead. SVar:Y:Targeted$Valid Creature.White,Creature.Blue SVar:X:Count$Compare Y GE1.4.1 AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt index 2c4825bcc8a..171060547ad 100644 --- a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt +++ b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt @@ -2,7 +2,7 @@ Name:Lithomantic Barrage ManaCost:R Types:Sorcery K:This spell can't be countered. -A:SP$ DealDamage | Defined$ Targeted | NumDmg$ X | ValidTgts$ Creature,Planeswalkers | TgtPrompt$ Select target creature or planeswalker |StackDescription$ REP target creature or planeswalker_{c:Targeted} | IsCurse$ True | AITgts$ Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. +A:SP$ DealDamage | NumDmg$ X | ValidTgts$ Creature,Planeswalkers | TgtPrompt$ Select target creature or planeswalker | StackDescription$ REP target creature or planeswalker_{c:Targeted} | IsCurse$ True | AITgts$ Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. SVar:Y:Targeted$Valid Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue SVar:X:Count$Compare Y GE1.5.1 AI:RemoveDeck:All From a159932b04dab14077435566a92092718e1a85fd Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 14 Apr 2023 22:23:40 +0200 Subject: [PATCH 28/98] Update invasion_of_tarkir_defiant_thundermaw.txt --- .../upcoming/invasion_of_tarkir_defiant_thundermaw.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt index e9cc863eb8e..15b8108bf85 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -4,8 +4,8 @@ Types:Battle Siege Defense:5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouOwn | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBImmediateTrig -SVar:DBImmediateTrig:DB$ ImmediateTrigger | Execute$ TrigDamageBis | SubAbility$ DBCleanup | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) -SVar:TrigDamageBis:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any other target | NumDmg$ X +SVar:DBImmediateTrig:DB$ ImmediateTrigger | Execute$ TrigDamageBis | RememberObjects$ Remembered | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +SVar:TrigDamageBis:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | SubAbility$ DBCleanup | TgtPrompt$ Select any other target | NumDmg$ X SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount/Plus.2 DeckHints:Type$Dragon From 7ab19408bd6bde41e94e1d8e1fcdb92fc536ac33 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Sat, 15 Apr 2023 08:31:00 +0200 Subject: [PATCH 29/98] Fix trigger when rolling 0 times --- .../main/java/forge/game/ability/effects/RollDiceEffect.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java index 9dc8daa1b08..428c1f1e620 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java @@ -68,6 +68,9 @@ public class RollDiceEffect extends SpellAbilityEffect { return rollDiceForPlayer(sa, player, amount, sides, 0, 0, null); } private static int rollDiceForPlayer(SpellAbility sa, Player player, int amount, int sides, int ignore, int modifier, List rollsResult) { + if (amount == 0) { + return 0; + } int advantage = getRollAdvange(player); amount += advantage; int total = 0; From b9101e76e749f983a1bcf8aad930373641c2f7a3 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 15 Apr 2023 09:16:19 +0200 Subject: [PATCH 30/98] Update invasion_of_tarkir_defiant_thundermaw.txt --- .../upcoming/invasion_of_tarkir_defiant_thundermaw.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt index 15b8108bf85..7c3138206f4 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -7,7 +7,7 @@ SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouOwn | AnyNumber$ True | SVar:DBImmediateTrig:DB$ ImmediateTrigger | Execute$ TrigDamageBis | RememberObjects$ Remembered | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) SVar:TrigDamageBis:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | SubAbility$ DBCleanup | TgtPrompt$ Select any other target | NumDmg$ X SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Remembered$Amount/Plus.2 +SVar:X:TriggerRemembered$Amount/Plus.2 DeckHints:Type$Dragon AlternateMode:DoubleFaced Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Tarkir enters the battlefield, reveal any number of Dragon cards from your hand. When you do, Invasion of Tarkir deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) @@ -23,4 +23,4 @@ K:Trample K:Flying T:Mode$ Attacks | ValidCard$ Dragon.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a Dragon you control attacks, it deals 2 damage to any target. SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker,Battle | TgtPrompt$ Select any target | NumDmg$ 2 -Oracle:Flying, trample\nWhenever a Dragon you control attacks, it deals 2 damage to any target. \ No newline at end of file +Oracle:Flying, trample\nWhenever a Dragon you control attacks, it deals 2 damage to any target. From 859815e2587e2fac677287b2d104a0f3e7c674a6 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 15 Apr 2023 22:39:58 +0200 Subject: [PATCH 31/98] Update phyrexian_archivist.txt --- forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt b/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt index ae7275909dc..3a27d7435c4 100644 --- a/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt +++ b/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt @@ -3,6 +3,6 @@ ManaCost:6 Types:Artifact Creature Phyrexian Construct PT:4/5 K:Reach -A:AB$ ChangeZone | Cost$ 2 T | ValidTgts$ Card | TgtPrompt$ TgtPrompt$ Select target card from a graveyard | Origin$ Graveyard | Destination$ Library | LibraryPosition$ -1 | SpellDescription$ +A:AB$ ChangeZone | Cost$ 2 T | ValidTgts$ Card | TgtPrompt$ TgtPrompt$ Select target card from a graveyard | Origin$ Graveyard | Destination$ Library | LibraryPosition$ -1 | SpellDescription$ Put target card from a graveyard on the bottom of its owner's library. DeckHas:Ability$Graveyard -Oracle:Reach\n{2}, {T}: Put target card from a graveyard on the bottom of its owner's library. \ No newline at end of file +Oracle:Reach\n{2}, {T}: Put target card from a graveyard on the bottom of its owner's library. From fd73092e8583df29b75a22224607387f1652f3f0 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 17 Apr 2023 11:33:48 +0200 Subject: [PATCH 32/98] update --- .../invasion_of_azgol_ashen_reaper.txt | 22 ++++++++++++++++ ...invasion_of_belenon_belenon_war_anthem.txt | 18 +++++++++++++ .../invasion_of_eldraine_prickle_faeries.txt | 23 ++++++++++++++++ ...invasion_of_ergamon_truga_cliffcharger.txt | 23 ++++++++++++++++ ...invasion_of_gobakhan_lightshield_array.txt | 26 +++++++++++++++++++ ...sion_of_ikoria_zilortha_apex_of_ikoria.txt | 20 ++++++++++++++ .../upcoming/invasion_of_kaladesh.txt | 23 ++++++++++++++++ ...invasion_of_muraganda_primordial_plasm.txt | 22 ++++++++++++++++ .../invasion_of_ravnica_guildpact_paragon.txt | 19 ++++++++++++++ .../invasion_of_tolvada_the_broken_sky.txt | 21 +++++++++++++++ 10 files changed, 217 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_belenon_belenon_war_anthem.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_ergamon_truga_cliffcharger.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt new file mode 100644 index 00000000000..93ad1bbff3a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt @@ -0,0 +1,22 @@ +Name:Invasion of Azgol +ManaCost:B R +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSacrifice | TriggerDescription$ When CARDNAME enters the battlefield, target player sacrifices a creature or planeswalker and loses 1 life. +SVar:TrigSacrifice:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature,Planeswalker | SacMessage$ Creature or Planeswalker +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Azgol enters the battlefield, target player sacrifices a creature or planeswalker and loses 1 life. + +ALTERNATE + +Name:Ashen Reaper +ManaCost:no cost +Colors:black,red +Types:Creature Zombie Elemental +PT:2/1 +K:Menace +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a +1/+1 counter on CARDNAME if a permanent was put into a graveyard from the battlefield this turn. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature +DeckHas:Ability$Sacrifice|Counters +Oracle:Menace\nAt the beginning of your end step, put a +1/+1 counter on Ashen Reaper if a permanent was put into a graveyard from the battlefield this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_belenon_belenon_war_anthem.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_belenon_belenon_war_anthem.txt new file mode 100644 index 00000000000..bd4e442a572 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_belenon_belenon_war_anthem.txt @@ -0,0 +1,18 @@ +Name:Invasion of Belenon +ManaCost:2 W +Types:Battle Siege +Defense:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 2/2 white and blue Knight creature token with vigilance. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ wu_2_2_knight_vigilance +DeckHas:Ability$Token|Discard & Type$Knight & Color$Blue +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Belenon enters the battlefield, create a 2/2 white and blue Knight creature token with vigilance. + +ALTERNATE + +Name:Belenon War Anthem +ManaCost:no cost +Colors:white +Types:Enchantment +S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Creatures you control get +1/+1. +Oracle:Creatures you control get +1/+1. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt new file mode 100644 index 00000000000..417af0ee300 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt @@ -0,0 +1,23 @@ +Name:Invasion of Eldraine +ManaCost:4 B +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, target opponent discards two cards. +SVar:TrigDiscard:DB$ Discard | ValidTgts$ Opponent | NumCards$ 2 | Mode$ TgtChoose +DeckHas:Ability$Discard +DeckHints:Ability$Discard +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Eldraine enters the battlefield, target opponent discards two cards. + +ALTERNATE + +Name:Prickle Faeries +ManaCost:no cost +Colors:black +Types:Creature Faerie +PT:2/2 +K:Flying +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Opponent | CheckSVar$ TrigCount | SVarCompare$ LE2 | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ At the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, CARDNAME deals 2 damage to them. +SVar:TrigDmg:DB$ DealDamage | NumDmg$ 2 | Defined$ TriggeredPlayer +SVar:TrigCount:Count$ValidHand Card.ActivePlayerCtrl +Oracle:Flying\nAt the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, Prickle Faeries deals 2 damage to them. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ergamon_truga_cliffcharger.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ergamon_truga_cliffcharger.txt new file mode 100644 index 00000000000..794f6c22cf5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ergamon_truga_cliffcharger.txt @@ -0,0 +1,23 @@ +Name:Invasion of Ergamon +ManaCost:R G +Types:Battle Siege +Defense:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTreasure | TriggerDescription$ When CARDNAME enters the battlefield, create a Treasure token. Then you may discard a card. If you do, draw a card. +SVar:TrigTreasure:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | SubAbility$ DBLoot +SVar:DBLoot:DB$ Draw | UnlessCost$ Discard<1/Card> | UnlessSwitched$ True | UnlessPayer$ You +DeckHas:Ability$Discard|Token & Type$Treasure +DeckHints:Type$Battle +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Ergamon enters the battlefield, create a Treasure token. Then you may discard a card. If you do, draw a card. + +ALTERNATE + +Name:Truga Cliffcharger +ManaCost:no cost +Colors:red,green +Types:Creature Rhino +PT:3/4 +K:Trample +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, you may discard a card. If you do, search your library for a land or battle card, reveal it, put it into your hand, then shuffle. +SVar:TrigChangeZone:AB$ ChangeZone | Cost$ Discard<1/Card> | Origin$ Library | Destination$ Hand | ChangeType$ Land,Battle | ChangeNum$ 1 +Oracle:Trample\nWhen Truga Cliffcharger enters the battlefield, you may discard a card. If you do, search your library for a land or battle card, reveal it, put it into your hand, then shuffle. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt new file mode 100644 index 00000000000..b7d06efd88a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt @@ -0,0 +1,26 @@ +Name:Invasion of Gobakhan +ManaCost:1 W +Types:Battle Siege +Defense:3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigLook | TriggerDescription$ When CARDNAME enters the battlefield, look at target opponent's hand. You may exile a nonland card from it. For as long as that card remains exiled, its owner may play it. A spell cast this way costs {2} more to cast. +SVar:TrigLook:DB$ RevealHand | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Look$ True | RememberRevealed$ True | SubAbility$ DBChooseCard +SVar:DBChooseCard:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.nonLand+IsRemembered | ChoiceTitle$ You may exile a nonland card from it | MinAmount$ 0 | Amount$ 1 | SubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Hand | Destination$ Exile | Imprint$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | Duration$ Permanent | StaticAbilities$ MayPlay,CostsMore | RememberObjects$ Imprinted | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | AffectedZone$ Exile | MayPlay$ True | MayPlayPlayer$ CardOwner +SVar:CostsMore:Mode$ RaiseCost | ValidCard$ Card.IsRemembered | AffectedZone$ Exile | Type$ Spell | Amount$ 2 +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True | ClearImprinted$ True +AlternateMode:DoubleFaced +DeckHas:Ability$Counters|Sacrifice +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Gobakhan enters the battlefield, look at target opponent's hand. You may exile a nonland card from it. For as long as that card remains exiled, its owner may play it. A spell cast this way costs {2} more to cast. + +ALTERNATE + +Name:Lightshield Array +ManaCost:no cost +Colors:white +Types:Enchantment +A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.YouCtrl | KW$ Indestructible & Hexproof | SpellDescription$ At the beginning of your end step, put a +1/+1 counter on each creature that attacked this turn. +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a +1/+1 counter on each creature that attacked this turn. +SVar:TrigPutCounter:DB$ PutCounterAll | ValidCards$ Creature.attackedThisTurn | CounterType$ P1P1 | CounterNum$ 1 +Oracle:At the beginning of your end step, put a +1/+1 counter on each creature that attacked this turn.\nSacrifice Lightshield Array: Creatures you control gain hexproof and indestructible until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt new file mode 100644 index 00000000000..4b270504641 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt @@ -0,0 +1,20 @@ +Name:Invasion of Ikoria +ManaCost:X G G +Types:Battle Siege +Defense:6 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSearch | TriggerDescription$ When CARDNAME enters the battlefield, search your library and/or graveyard for a non-Human creature card with mana value X or less and put it onto the battlefield. If you search your library this way, shuffle. +SVar:TrigSearch:DB$ ChangeZone | ChangeType$ Creature.YouCtrl+nonHuman+cmcLEX | Hidden$ True | Origin$ Library | OriginChoice$ True | OriginAlternative$ Graveyard | AlternativeMessage$ Would you like to search your library with this ability? If you do, your library will be shuffled. | Destination$ Battlefield | ShuffleNonMandatory$ True +SVar:X:Count$xPaid +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Ikoria enters the battlefield, search your library and/or graveyard for a non-Human creature card with mana value X or less and put it onto the battlefield. If you search your library this way, shuffle. + +ALTERNATE + +Name:Zilortha, Apex of Ikoria +ManaCost:no cost +Colors:green +Types:Legendary Creature Dinosaur +PT:8/8 +K:Reach +S:Mode$ AssignCombatDamageAsUnblocked | ValidCard$ Creature.YouCtrl+nonHuman | Optional$ True | Description$ For each non-Human creature you control, you may have that creature assign its combat damage as though it weren't blocked. +Oracle:Reach\nFor each non-Human creature you control, you may have that creature assign its combat damage as though it weren't blocked. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh.txt new file mode 100644 index 00000000000..0793c6c086f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh.txt @@ -0,0 +1,23 @@ +Name:Invasion of Kaladesh +ManaCost:U R +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenOwner$ You | TokenScript$ c_1_1_a_thopter_flying +DeckHas:Ability$Token & Type$Thopter +DeckHints:Type$Artifact +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Kaladesh enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying. + +ALTERNATE + +Name:Aetherwing, Golden-Scale Flagship +ManaCost:no cost +Colors:blue,red +Types:Legendary Artifact Vehicle +PT:*/4 +K:Flying +K:Crew:1 +S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | Description$ CARDNAME's power is equal to the number of artifacts you control. +SVar:X:Count$Valid Artifact.YouCtrl +Oracle:Flying\nAetherwing, Golden-Scale Flagship's power is equal to the number of artifacts you control.\nCrew 1 (Tap any number of creatures you control with total power 1 or more: This Vehicle becomes an artifact creature until end of turn.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt new file mode 100644 index 00000000000..583c6557399 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt @@ -0,0 +1,22 @@ +Name:Invasion of Muraganda +ManaCost:4 G +Types:Battle Siege +Defense:6 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerDescription$ When CARDNAME enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control. +SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature you control | CounterType$ P1P1 | CounterNum$ 1 | AILogic$ Fight | SubAbility$ DBFight +SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.OppCtrl | AILogic$ Always | TgtPrompt$ Choose target creature an opponent controls +DeckHas:Ability$Counters +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Muraganda enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control. + +ALTERNATE + +Name:Primordial Plasm +ManaCost:no cost +Colors:green +Types:Creature Ooze +PT:4/4 +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of combat on your turn, another target creature gets +2/+2 and loses all abilities until end of turn. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | NumAtt$ 2 | NumDef$ 2 | SubAbility$ DBAnimate +SVar:DBAnimate:DB$ Animate | Defined$ Targeted | RemoveAllAbilities$ True +Oracle:At the beginning of combat on your turn, another target creature gets +2/+2 and loses all abilities until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt new file mode 100644 index 00000000000..acfd8442779 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt @@ -0,0 +1,19 @@ +Name:Invasion of Ravnica +ManaCost:5 +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile target nonland permanent an opponent controls that isn't exactly two colors. +SVar:TrigExile:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Permanent.nonLand+OppCtrl+!numColorsEQ2 | TgtPrompt$ Select target nonland, permanent an opponent controls that isn't exactly two colors.. | Origin$ Battlefield | Destination$ Exile +SVar:TrigSacrifice:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature,Planeswalker | SacMessage$ Creature or Planeswalker +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Ravnica enters the battlefield, exile target nonland permanent an opponent controls that isn't exactly two colors. + +ALTERNATE + +Name:Guildpact Paragon +ManaCost:no cost +Types:Artifact Creature Construct +PT:5/5 +T:Mode$ SpellCast | ValidCard$ Card.numColorsEQ2 | ValidActivatingPlayer$ You | Execute$ TrigDig | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a spell that's exactly two colors, look at the top six cards of your library. You may reveal a card that's exactly two colors from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +SVar:TrigDig:DB$ Dig | DigNum$ 6 | ChangeNum$ 1 | ChangeValid$ Card.numColorsEQ2 | Optional$ True | DestinationZone$ Hand | RestRandomOrder$ True +Oracle:Whenever you cast a spell that's exactly two colors, look at the top six cards of your library. You may reveal a card that's exactly two colors from among them and put it into your hand. Put the rest on the bottom of your library in a random order. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt new file mode 100644 index 00000000000..c83c3db1eef --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt @@ -0,0 +1,21 @@ +Name:Invasion of Tolvada +ManaCost:3 W B +Types:Battle Siege +Defense:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, return target nonbattle permanent card from your graveyard to the battlefield. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Permanent.nonBattle | TgtPrompt$ Select target nonbattle card in your graveyard +AlternateMode:DoubleFaced +DeckHas:Ability$Graveyard|Token & Type$Spirit +DeckHints:Ability$Graveyard|Mill|Tokens|LifeGain +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Tolvada enters the battlefield, return target nonbattle permanent card from your graveyard to the battlefield + +ALTERNATE + +Name:The Broken Sky +ManaCost:no cost +Colors:white,black +Types:Enchantment +S:Mode$ Continuous | Affected$ Creature.token+YouCtrl | AddPower$ 1 | AddKeyword$ Lifelink | Description$ Creature tokens you control get +1/+0 and have lifelink. +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ At the beginning of your end step, create a 1/1 white and black Spirit creature token with flying. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenOwner$ You | TokenScript$ wb_1_1_spirit_flying +Oracle:Creature tokens you control get +1/+0 and have lifelink.\nAt the beginning of your end step, create a 1/1 white and black Spirit creature token with flying. \ No newline at end of file From 19bd5932fb3c43f7706f0e487c4fe4f244c4a61c Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 17 Apr 2023 11:35:57 +0200 Subject: [PATCH 33/98] Update invasion_of_azgol_ashen_reaper.txt --- .../upcoming/invasion_of_azgol_ashen_reaper.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt index 93ad1bbff3a..15ce6441917 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt @@ -3,8 +3,10 @@ ManaCost:B R Types:Battle Siege Defense:4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSacrifice | TriggerDescription$ When CARDNAME enters the battlefield, target player sacrifices a creature or planeswalker and loses 1 life. -SVar:TrigSacrifice:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature,Planeswalker | SacMessage$ Creature or Planeswalker +SVar:TrigSacrifice:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature,Planeswalker | SacMessage$ Creature or Planeswalker | SubAbility$ DBLoseLife +SVar:DBLoseLife:DB$ LoseLife | Defined$ TriggeredPlayer | LifeAmount$ 1 AlternateMode:DoubleFaced +DeckHas:Ability$Sacrifice|Counters Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Azgol enters the battlefield, target player sacrifices a creature or planeswalker and loses 1 life. ALTERNATE @@ -18,5 +20,4 @@ K:Menace T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a +1/+1 counter on CARDNAME if a permanent was put into a graveyard from the battlefield this turn. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature -DeckHas:Ability$Sacrifice|Counters -Oracle:Menace\nAt the beginning of your end step, put a +1/+1 counter on Ashen Reaper if a permanent was put into a graveyard from the battlefield this turn. \ No newline at end of file +Oracle:Menace\nAt the beginning of your end step, put a +1/+1 counter on Ashen Reaper if a permanent was put into a graveyard from the battlefield this turn. From 8c96607e2cdeb282b11f006020c0c495118ae725 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 17 Apr 2023 11:37:25 +0200 Subject: [PATCH 34/98] Update invasion_of_gobakhan_lightshield_array.txt --- .../upcoming/invasion_of_gobakhan_lightshield_array.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt index b7d06efd88a..c43611ba3b2 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt @@ -20,7 +20,7 @@ Name:Lightshield Array ManaCost:no cost Colors:white Types:Enchantment -A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.YouCtrl | KW$ Indestructible & Hexproof | SpellDescription$ At the beginning of your end step, put a +1/+1 counter on each creature that attacked this turn. +A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.YouCtrl | KW$ Indestructible & Hexproof | SpellDescription$ Creatures you control gain hexproof and indestructible until end of turn. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a +1/+1 counter on each creature that attacked this turn. SVar:TrigPutCounter:DB$ PutCounterAll | ValidCards$ Creature.attackedThisTurn | CounterType$ P1P1 | CounterNum$ 1 Oracle:At the beginning of your end step, put a +1/+1 counter on each creature that attacked this turn.\nSacrifice Lightshield Array: Creatures you control gain hexproof and indestructible until end of turn. From bddd565cb2d462cb54d385d25265f18ea50b3f0a Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 17 Apr 2023 11:38:45 +0200 Subject: [PATCH 35/98] Update invasion_of_muraganda_primordial_plasm.txt --- .../upcoming/invasion_of_muraganda_primordial_plasm.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt index 583c6557399..0242eb57391 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt @@ -4,7 +4,7 @@ Types:Battle Siege Defense:6 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerDescription$ When CARDNAME enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control. SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature you control | CounterType$ P1P1 | CounterNum$ 1 | AILogic$ Fight | SubAbility$ DBFight -SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.OppCtrl | AILogic$ Always | TgtPrompt$ Choose target creature an opponent controls +SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.YouDontCtrl | AILogic$ Always | TgtPrompt$ Choose target creature you don't control DeckHas:Ability$Counters AlternateMode:DoubleFaced Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Muraganda enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control. @@ -19,4 +19,4 @@ PT:4/4 T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of combat on your turn, another target creature gets +2/+2 and loses all abilities until end of turn. SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | NumAtt$ 2 | NumDef$ 2 | SubAbility$ DBAnimate SVar:DBAnimate:DB$ Animate | Defined$ Targeted | RemoveAllAbilities$ True -Oracle:At the beginning of combat on your turn, another target creature gets +2/+2 and loses all abilities until end of turn. \ No newline at end of file +Oracle:At the beginning of combat on your turn, another target creature gets +2/+2 and loses all abilities until end of turn. From 3fca8ee0c1ddab1821a8a9cb7c96eadf1ea92386 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 17 Apr 2023 15:20:53 +0200 Subject: [PATCH 36/98] update --- .../cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt | 6 +++--- .../upcoming/invasion_of_muraganda_primordial_plasm.txt | 4 ++-- .../upcoming/invasion_of_ravnica_guildpact_paragon.txt | 3 +-- .../upcoming/invasion_of_tolvada_the_broken_sky.txt | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt index 15ce6441917..44c561d8940 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt @@ -4,7 +4,7 @@ Types:Battle Siege Defense:4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSacrifice | TriggerDescription$ When CARDNAME enters the battlefield, target player sacrifices a creature or planeswalker and loses 1 life. SVar:TrigSacrifice:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature,Planeswalker | SacMessage$ Creature or Planeswalker | SubAbility$ DBLoseLife -SVar:DBLoseLife:DB$ LoseLife | Defined$ TriggeredPlayer | LifeAmount$ 1 +SVar:DBLoseLife:DB$ LoseLife | Defined$ TargetedPlayer | LifeAmount$ 1 AlternateMode:DoubleFaced DeckHas:Ability$Sacrifice|Counters Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Azgol enters the battlefield, target player sacrifices a creature or planeswalker and loses 1 life. @@ -17,7 +17,7 @@ Colors:black,red Types:Creature Zombie Elemental PT:2/1 K:Menace -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a +1/+1 counter on CARDNAME if a permanent was put into a graveyard from the battlefield this turn. -SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a +1/+1 counter on CARDNAME if a permanent was put into a graveyard from the battlefield this turn. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | ConditionCheckSVar$ Morbid | ConditionSVarCompare$ GE1 SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature Oracle:Menace\nAt the beginning of your end step, put a +1/+1 counter on Ashen Reaper if a permanent was put into a graveyard from the battlefield this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt index 0242eb57391..51f5c2521d2 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt @@ -4,7 +4,7 @@ Types:Battle Siege Defense:6 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerDescription$ When CARDNAME enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control. SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature you control | CounterType$ P1P1 | CounterNum$ 1 | AILogic$ Fight | SubAbility$ DBFight -SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.YouDontCtrl | AILogic$ Always | TgtPrompt$ Choose target creature you don't control +SVar:DBFight:DB$ Fight | Defined$ ParentTarget | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.YouDontCtrl | AILogic$ Always | TgtPrompt$ Choose up to one target creature you don't control DeckHas:Ability$Counters AlternateMode:DoubleFaced Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Muraganda enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control. @@ -17,6 +17,6 @@ Colors:green Types:Creature Ooze PT:4/4 T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of combat on your turn, another target creature gets +2/+2 and loses all abilities until end of turn. -SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | NumAtt$ 2 | NumDef$ 2 | SubAbility$ DBAnimate +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature | NumAtt$ 2 | NumDef$ 2 | SubAbility$ DBAnimate SVar:DBAnimate:DB$ Animate | Defined$ Targeted | RemoveAllAbilities$ True Oracle:At the beginning of combat on your turn, another target creature gets +2/+2 and loses all abilities until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt index acfd8442779..92aaf6e509d 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt @@ -3,8 +3,7 @@ ManaCost:5 Types:Battle Siege Defense:4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile target nonland permanent an opponent controls that isn't exactly two colors. -SVar:TrigExile:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Permanent.nonLand+OppCtrl+!numColorsEQ2 | TgtPrompt$ Select target nonland, permanent an opponent controls that isn't exactly two colors.. | Origin$ Battlefield | Destination$ Exile -SVar:TrigSacrifice:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature,Planeswalker | SacMessage$ Creature or Planeswalker +SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Permanent.nonLand+OppCtrl+!numColorsEQ2 | TgtPrompt$ Select target nonland, permanent an opponent controls that isn't exactly two colors.. | Origin$ Battlefield | Destination$ Exile AlternateMode:DoubleFaced Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Ravnica enters the battlefield, exile target nonland permanent an opponent controls that isn't exactly two colors. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt index c83c3db1eef..a90ee9caec1 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt @@ -3,7 +3,7 @@ ManaCost:3 W B Types:Battle Siege Defense:5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, return target nonbattle permanent card from your graveyard to the battlefield. -SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Permanent.nonBattle | TgtPrompt$ Select target nonbattle card in your graveyard +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Permanent.nonBattle+YouCtrl | TgtPrompt$ Select target nonbattle permanent card in your graveyard AlternateMode:DoubleFaced DeckHas:Ability$Graveyard|Token & Type$Spirit DeckHints:Ability$Graveyard|Mill|Tokens|LifeGain From 0bcb0b3cc674abb4a6d7f2ba8f403ed635c775d5 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Tue, 18 Apr 2023 19:07:05 +0200 Subject: [PATCH 37/98] Update invasion_of_tarkir_defiant_thundermaw.txt --- .../upcoming/invasion_of_tarkir_defiant_thundermaw.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt index 7c3138206f4..67057958a3c 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -22,5 +22,5 @@ PT:4/4 K:Trample K:Flying T:Mode$ Attacks | ValidCard$ Dragon.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a Dragon you control attacks, it deals 2 damage to any target. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker,Battle | TgtPrompt$ Select any target | NumDmg$ 2 +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | TgtPrompt$ Select any target | NumDmg$ 2 Oracle:Flying, trample\nWhenever a Dragon you control attacks, it deals 2 damage to any target. From 83258a12c62401400e5104a0f1bca6799cc2bd24 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Tue, 18 Apr 2023 19:17:01 +0200 Subject: [PATCH 38/98] Update the_wilds.txt --- forge-gui/res/cardsfolder/upcoming/the_wilds.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/the_wilds.txt b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt index 21850853c15..fd6b4bf92cb 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_wilds.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt @@ -11,4 +11,4 @@ SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Z:Remembered$Valid Creature.powerGE4/Plus.1 DeckHas:Ability$Token|Sacrifice & Type$Food DeckHints:Type$Food -Oracle:When you planeswalk to The Wilds and at the beginning of your upkeep, create a Food token.\nWhenever chaos ensues, target player sacrifices a creature. If they do, you create a Food token. You create two Food tokens instead if the sacrificed creature’s toughness was 4 or greater. \ No newline at end of file +Oracle:When you planeswalk to The Wilds and at the beginning of your upkeep, create a Food token.\nWhenever chaos ensues, target player sacrifices a creature. If they do, you create a Food token. You create two Food tokens instead if the sacrificed creature's toughness was 4 or greater. From 18d010c0002d1ea9065935a97c066259d9afcc69 Mon Sep 17 00:00:00 2001 From: Alwayssnarky <126915043+EldritchBimbo@users.noreply.github.com> Date: Tue, 18 Apr 2023 17:23:26 -0400 Subject: [PATCH 39/98] Playable Leonin Update Adds: .Playable Leonin race at parity with other options. (2 animation sets, 20 portraits.) Changes: .Adds new portraits to avatar .png. .Edits avatar.atlas and heroes.json to accommodate new options. --- .../Shandalar/sprites/heroes/avatar.atlas | 62 ++- .../Shandalar/sprites/heroes/avatar.png | Bin 48157 -> 54963 bytes .../Shandalar/sprites/heroes/leonin_f.atlas | 485 ++++++++++++++++++ .../Shandalar/sprites/heroes/leonin_f.png | Bin 0 -> 11004 bytes .../Shandalar/sprites/heroes/leonin_m.atlas | 485 ++++++++++++++++++ .../Shandalar/sprites/heroes/leonin_m.png | Bin 0 -> 12120 bytes .../res/adventure/Shandalar/world/heroes.json | 9 +- 7 files changed, 1039 insertions(+), 2 deletions(-) create mode 100644 forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_f.atlas create mode 100644 forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_f.png create mode 100644 forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas create mode 100644 forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.png diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas b/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas index 98a0d34f9e0..31dbe1d4fa9 100644 --- a/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas +++ b/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas @@ -602,4 +602,64 @@ Werewolf_f size: 16, 16 Werewolf_f size: 16, 16 - xy: 144, 304 \ No newline at end of file + xy: 144, 304 +Leonin_m + xy: 0, 320 + size: 16, 16 +Leonin_m + xy: 16, 320 + size: 16, 16 +Leonin_m + xy: 32, 320 + size: 16, 16 +Leonin_m + xy: 48, 320 + size: 16, 16 +Leonin_m + xy: 64, 320 + size: 16, 16 +Leonin_m + xy: 80, 320 + size: 16, 16 +Leonin_m + xy: 96, 320 + size: 16, 16 +Leonin_m + xy: 112, 320 + size: 16, 16 +Leonin_m + xy: 128, 320 + size: 16, 16 +Leonin_m + xy: 144, 320 + size: 16, 16 +Leonin_f + xy: 0, 336 + size: 16, 16 +Leonin_f + xy: 16, 336 + size: 16, 16 +Leonin_f + xy: 32, 336 + size: 16, 16 +Leonin_f + xy: 48, 336 + size: 16, 16 +Leonin_f + xy: 64, 336 + size: 16, 16 +Leonin_f + xy: 80, 336 + size: 16, 16 +Leonin_f + xy: 96, 336 + size: 16, 16 +Leonin_f + xy: 112, 336 + size: 16, 16 +Leonin_f + xy: 128, 336 + size: 16, 16 +Leonin_f + size: 16, 16 + xy: 144, 336 \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.png b/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.png index 0af59e078d241d1d47f244cac9702a22d7b67cb8..224d0baa5b5081cc1bb47b19530fa34a95c34467 100644 GIT binary patch delta 54760 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%0Af9c8V#(1=RJZd)ysGEgxJGm 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

<-ew0(l5{=Ez_u~8>o zutf{+OcCs%4p`0lbX;hEp=#DI1%X-A0Fmgly;g7kUl%fXHD1to_+xqLTudfHwE*Og69P1Yai;0y(Y&1}CvVdDA6QF0}BPzt@L5RlENpv_E z{Ebrr)whcr3Ldf~dG*YF;HwK(7sKT5^NA2Ixb z!Up|Ma1Z_WR4>BYhh#@LYeGzDJbyAmI!}B>DvDvdRKH-P{wFfUu(f)5;=ALHI|{Ud z&)#x*Zvg=j{=oy8x+9w@!am=tc1J*H-G-ja+{MgA5cdx zB2R=R(ODF~@Z`hixXrdrUKt_8$L=UK{Y%U$TI@TMw;z_=^p{$?8Maz9X}pw(#RVV# znWu*Njn)e%Baf&4_`TbB)6Cz$rtypQzXB~`36SEr?~L&e0h4dPd`ki z1N-FDPyOC8HR4H7Kjr19h3;>Ff6%N0Jj%3H+^ zZqAH{gu>9f`noG`ZJH4vMKRm*H=?Xaf6;!rYldFrHxS>bQKNjZ%lcW#8!*?zHFaOP ziZ>cwgsm4&#((a$NBOV9G-E8Y!`^b+&Bc89ITfFN3ggFo<3)w|tneTvzK94jMemJA zH;-C>K#5PqaY=-}Zx4a3zfJsqJ|s%8LR2ew{WaEb7ac#^O`LPMTVk{dW5uq=7)v&OQ3_7GGL`1p5GRs9Vp9~KQ* zK#JUtS31=F_R@`Rf%OKt`CtD}+AwL=?*K1j2htzd}_AtE#@NcOQU zajFsGH;Pbn_~IjnTKoSl^3L;rasI*@-Pg-KfB)Xw)SHHA{L-=(dEx$Qe5ktbr4w_1 zudmv^kZAnUGMB>8>yGq}^~5Vft^I!&g?(0R=^g8dmnYBPGPnLQ3Tv;hK}=|ct=8Vj zJJu7gTnbMPTuk9oXZ-T;`xjljc`RI>e@Nl2cD@x8J;w9xTjU+%Zxi3yEt-a53+K0N zRyBU3qOjcHyWjJU^&*PkUC#a(HeQT>YWoqGU%BbS%uDakKQ-Bg!pOnC$g#)wF7U5O zNi$qgY~D|f?G_7WXL^W$_}njzlUDxM$EE{-y(2v>f6smkZCPTerCm{fXso7j zO3q{U<$?HID!5-~72K@&tN-Ti?cq^=h@0z+XU;5X1(d$QGOKrTcn^Js68a+RM$@QK*+kLeE z63%_++~hZZ@!~_AEZJAY9tSJuIKiqw` z`0-wNh*3hU2Q1(pfBuo{B6tBTd&6B`d>yyg+KX*cqsD&u^03Ff2)}8_?<7ZD5+5MG zKmMHKmh9Nk{rN|OYtc5}dI7>hd~J({=FfhMdkZ|~-TBoLK+ZPOnjjTtKlu% z(;v8HS|+{iw?2_{=lnmFoeyvn)g8xwcbDW6laNb@K#ULq6d@%QK?4>Bn}LDUGI6Y^ zMQUXR!C@S_P&> zF1g(HeSdF%dvEtHq5aOhd4G1_W^eP^-|zSK&)XIEE4TydMMrb`kxFRw0Kh!rNoAlKQQDjGgz>EVgb7fZI^wMzLbT3e$=uYOXw9oViW0) zQBTWcinWz+^0${dbu6cW!EZf^9LRR;q76Ukpqif#{#i7UbJtE_oAby|>7|Xk6Y8G# zM7;9BtqOd9!Sr+uo~^BWl-n9mKSDw1alZ+gUUPufcD?Q@d)=}rv2GJDZD#l~JIR^R zwXk?9O+2N6Ji7gEI=Zuhj_=~@jo#m2P5X-e4%&adyi70ne@NfyTg32LR?Mj<6JooE zTRJ$_E3yU{x_|B4OA{8}N11n76x+U=PHilsXzo~lyN6pw+{f_kS{HxC5@kRL8L^>P zKDc&)aCBoUjZY6NOXOG9Cq{QPoTZ{rFT;U#M%J54HqpB?Gw7<=Vb&|;eP%NH2 zzn83k4hTQ^-Sb#I`PP(R`5t=mW$Lavq^+I;uc4uVx}W=i%df2C_fO6KKE!tt|Mm9v zQlwjhEM>UjZ3_o~F$eJ-K#b0Qn|h+^OjO1S3HyyYG|+K^{IP2k>+7Ts-(r{&wi8t@ z6S_Wdow5V*f0VawYUxG&{EFfY(xZgK_SL#Qwdb+#$8YrctQ|;69&@||=GvN#P zwN*tM+%RH6Tgm!65Sjvnrm)Ue_qOTy(AbXo?nyEMNKxAk_9o^&_z>Go%GUSTN7o;5 zEFau2>c8GbG$lQa_T=+1bnU-bB7W;lp!4R1MHBcF@M*!Ili&7@gohC<#C=fZEy;p#6SmAi;?~l@V-}nofxNq&MRO^A) z`q>p{k4iMGu!Mk7%EA0;sv(E`X*pE3*frIxHD&Bnj`PIwiM;i*Ev~s$tonjXs%Y!t z*bD9#E;m6VZ(|4}zEpbP)dsYfJIkYgUBrB_cz_N7nietY|AJjHU~D{=Fio*_=Dq@I zy);Cq)a{pw(6SWN_7SFJ7&4|CRWFGQk3xd0zg=r0^k6Cb(W$zymwiYuJ>HYjq`CK>>z7p!AMK@})t}T70zOE9LmVh&z=&87@BzZo z8GJ0IzXgj1%Lc*iN-kwnaD_;JpB;$L*J4^f)7n8Md=TKnN6WqPXY1J}I+rY>)oWGk z3D{KXe6Z35pMQ8h?Yoe>(SQUa-au9{LnamvLR&CLr$FvBiutqH`ptTjzn+=!8)UG5VOl(CLmZea z7L3^Oja+Vt_C*{Bk)!^<2%t$)sBuDB1|@?HMly%#TVAH%ejOLAte?bShy`U(VoF{K zfCNH;&w(;j!0;6;twGIo>;gFV?Co6+39^NN^HFLnXd_B*;ZdVmdeb0my<@Ro^`Ra8O`Z#jY{?kmj#dF1daJx2te3@g$sZ`7BuviN!PXrf_6X_@Ds=7$D>X$ntO23DBuFr>?Z{c>HN4?}j)Q^txReIuZJq zr%%E*5DVt#sWZawQwP&>a*-E4TTUDZ$PnwLrs}g&$~JhA(^mm#0YJFo6Tj6r)cazI zmpo=J`^YY_Tz?yXAU(FZ5>E$M1$nnpD9b&G4+J2;xO#=!!up9B)n~c%!3Y>5VF=}% zS!r&ocLVrrSuH&)(z?b`J{9%mu?NDx29?@%htcGoI3dx_hZ=Q+&EHCGU@bxG&;60WJx6rg$3|gcx@^cv=ZObuv3=7aeZ@Hka40 zU(d@t;{F1Ep9x`JcKn0Oroz{B@Nf39-hOnOjD#6JWd*w`_3Q}2fc}}00d<0G8T5HZ z5&wQb=+)7`Y5>2fLMz;u$W%ryL*;MiS5!#g6ETEJK}Au-KJhE+c}7@~`L`KBsPxHZ zI`{+q1<+L0w_o)|US9Jqw;6K!<4aQjNr2ihJezud?AS9yS!0w}cDSzx%DTv9LsrA8 zDHQNoG+-(BGei#P<}Ke#$4>s6u6+x403zbPx+#x4?Vb@Z z#MUo%q?6j!4v(4}pPKg4;V_M`-HN|Fo0pl`E z$(}=WenlDOOdd&H!}P0=!7Jye?cA4i`}SkJta$5jDl6j$Z=GXz=Zq;dYvx?~@Mz+z zrSs=j())*Mxhyf^$&dNYgwr1bk=BnQ>~8sgf^ea6-SJ{GXR@rKkxi%5S1jQ78!yw2 zi4XFZmGGjNXj#)AR9I%w^{{f!>d^fCJqFC_Zvyq$Fnw30@O(PM7ap%UC~4MSX-!^% zvo3OM#JXwfCKdYy)gOt_owrX=1C}(t`fcU_4$Eb|?oZcYd(KXX)x!m7K-kh@pPov8 zV{$`OdHOdFj2N8Q7LorxU*kK(K(PSfhy?}IexS{PPb3gR%lEZ7G2qFZH4GgD@XTlL zq;9t7U#_N=ztmUvCy!CCPeBL3%-mG6Wle2*x(+;q(Dkv8O5Xc3UpGCqYzD*DzIi?m zLh@GsiNPy*tC5aA@-<$D>2OO+wY3v<_#n)ojF0TlVd!;AwPU@ zTAz?f2N(>blC&p-@WiXP@<8ON#?NW{xJ3?x0$*pFjtA{SPbdDE2;tND8b0^O>DAap og|KKVx}Yz(Z_FLZ@DY*kzj3W^dd6cHZU6uP07*qoM6N<$f;er*sQ>@~ delta 47985 zcmV)?K!U%stplC-0+1I9KnMl^002AucN?)Gr2&7sK}keGRCr$9{Rj9IMf!#d*AGz; z5m6Bp1OWpgiUBhQP)r!txTu&|bHJQ)*2Ps+jB8G7PKaWJT`^<82xg)n3L+wi?tF7s z&(rgEP4&!x?*Dw}+}Bmp-PKjy)m2Zw6}q~o!38X`NYg@THOjBQ&Z&q4#QSjUxYAaZ zF=Kxw`(@|O%lqXTtG2H=4)HfxbBEGaoL4`1I(mNM_TG6PzrIq(u6~)vO@q$#%e?D= zygaBD2WsV=sCAqLfpf3fedE$rbv_vN+5%la%um{5#|h(SHi+=iZTq@*>n>jM$uj<( zpIq02@2xlp@g8~VjnY#)`eex3a>0dlMn4_@fk+jUye zFU9yTzwyg0_BuNnuU_$qm85G@A6Cf<-L=q`=uo&K#o(7A=!PW4J+bW zIL;cYbSP~lv~1D5w3Zd2{~?0Jhq!-4Ek6!ITq{732b40z$L` zOwMRPU~(enXZh@#@4OQ`Zqv;>1UI&4Pj}OXTczRy`HOX0e4AM!giFuf$UD}xU5lY_ z&+?Wo=ED7d7FK+Kz(Qhv^?=olxjZi0v5$8Wngu`YuNTCprFD74#0P^f?q6C6Y57;7O83g{Y!=Mp<2@-!Hg(&}vue{$cEt|IcytGzk+M?U|WvgGF^Ghs=uof?` z4F>xi^gx9L++({<{XRJ6;B8B5`NS+(X*Gi^qD`lTV-UCfj)?`f%w8=kx|{Et=7o5F z|HQg9`}B7=Zb;JP5MkkUUv*74YU~Go-JBf!w(sle|q~9;TTB(O$%AajIb2blweei;_rhzFBpUV&PuX26OOKU)=p#J6Ip zy#skwR}3AlEQG^9A)E91YYvI{`Yj;{{q(FZ>^3=J0xqHd~;w$_4 zWggeu`>H#3-%V2CA;gPM-P^AVIw-}exZtZ`swSXuKJ&f9-3zB|=i5tyb^O?;2EO8m ze-FLd3$Nu8ElNHKY9Er3WG*gjGa`U{Zr|HmHo_q^!l-R0*jAg+V#No&O+dRw$4zSIIuA3w(XBc$g~Im(MK z1V8r4Dk=`gAU%i`x7wXq!%%Dx2-F>;yM5>9$obAjTOpXJy)ftg9W^h#&Pn z=`rG{j$=;yfjG(lL>DU%5=5be8G7fX{VV(w-&!w(kH3GMy(t9ZJL;%Cy|W-zGRwx7 zpM`5c02HVo6Jt&gmN>e8z`C{Vk+cO_${MY|WV^I*vt|sH?{Bz51n9EuurL+%&}d?56X*8@ujm-aiEKl~yy?fcQpz_=)@Qv#-5H zlmTK}RCIqr7LST%Dn@i$UoqHkLnz{tj^5QT0rAl< zpua#FB07QSVg?8cPI%(_1}L7kBLcQF0=5UN4hVmDA@LdWnepSywE9)AMwaBU3_-r`=J@rETvKlWRakla`cSbASc)%H?UM#;Ni4KIX|Kv+ zuh4&bDZgB@U1wjd-q<%02Lh6{vg?Q6|9Bb}CQSXoFVzWIYuxj0t)8_9wcGvW5WiGM zl_nXrq8C~?*9yO-9A*15QDZwMh!V9i_`{YJ^fB0*DSqtJ0 zz3j+n(?}q`umghMT1}gH(WX`K9WVUoMJAzXJ?2MP3)at~1}9Y>!owjtIr)XChbw>a zApk^Yg~yE{hlsu@jq+m!L1IC85}(eebJ7+(Y{11nKHD0nJL!ri{8FgxXi=Eh*q*H5 zf^zLsUzOJ4;sdJX&^pSB0TvEywJGswAJ{msP4C|B^0WWu_PHf%tsrc}5{98SEGC2< zQlViO(u?SDVcLBaDl;l!9oTz`3TuC7g~xuN8nzP<7+@aIfBV!LBDQM$w%%^8@!OBO zcV{l=2ccPlwT7W}R9cn3b07T1E!}y0H*)ALejC&T(2Zczfe3r_NvaRn_Muz7m=MpH zxk;f6JY^TZ43YRcH(APCJU#UwF56n#D%iFSt>0-whWho;0#2FumD{FUtI~f~mgh!K zbIZ2vSlUX!0;;DO$$EVe>ef(CzcLldryQZ$;`IEQJ z48n#Y6M6n~dS8)wMC$PS1N`mBY^Uod^iU zBk|AeeVFgj3gTGKJMTER$)-EH`)|3VGXgdgIAP=KKH(5S@%VjWoz#Rpe? z)wZ;j@a-q%URa(8B|zx%pSS!{BB~`q#0L@}!!P3eyPhwt6)kj|__@1xY?F$Cp&C1o zydX$`R$$c#1&T$qU

pxT2WJSjndf8FO;zdh;EfvNaFRxl5Spd>!xMaPoVHmZhg zzzfA|bKN)x=V2!wScs3MuZ10Z6*{+#ubWlP6h<_(pMC0JT7Q4A`(W=&N2WJ1`+)u7 zM2qCx9fam67h9h zE5evxcueBf5}qX#A@S=Gp9n?x***Pzep#_l%RF#;kF@g`3Q6MBP#fo02MsRoll1<> zxJUM1%`fxvR%L&em+!ItX)l8CU`KTPL|op--`mYG?95cz1GM1W4PJ zDP&u1vVLmuK!UV>))EfsuzE#iuRr+o(wcKu9DGH^+(2su!|M*QRt?y;RuBs)VW`Rl z1V|a>Jw1PFHS1Gv$!wL&oJpO>K1}%J?qoEfOTYf^m(jy2EFjlVTAeRAh8GWa6@_I9 z3ob-)B*5lvmUB;EeU#hbxWR6zb=y{m5b^!+&crm#tV!QiEre=a_)vtQ0NX9OtZ$Tu zBl--m((vcJoKs8oSrP8LOS}hbkqBb~+-B%MN^5`4P5V#3z&y#3Q__b-3~VpDtPYR5&|N;bJP^;ewSWkaB_afg>4-0qn>4RB0@~u% z0xGVoW<3IY?&Kr=`K5`N_=FXqw3W#K1So&;*@A`9!|!q3dhS=+N($QwkPgV#Gv4<5 zG^IPF;kD$cMTeH_WjZ1fpcS8n6@-Qj5F*I>aUt4A9M;3QA!Lv;0|BafrMhLk?@?D~ zhASjO#K*Dk7&A5%VE2uC70#bL#qSr^0>ZB6JeVuO(DK`vB6c=R^R<&_yo9&au)TkI ztqAKCAjU_X3m~ops3%adXY(q%f9$rK*AMwZep;gyLt#{A(b+JFkGoKA=Jerii-V5O z_z8)RDi*7TTfG1GZt!CpmO>QU6UBA>w4boVA#N#1Dn15j?Le*I0=>YB1!M~ehK&Bk zJ6%*Q5Z`5wCC@++aoEnY1GQGnc3pq;{Bl}_;1G)(+~=Gs|53xWa;PDUXv4vz3}tmDT%B~o#$2!Z|FAu`n#dxs$$?n3-d`%8Z!c0>sH z$yww_1~6i;yBH9mgcx#Q=T*JSgLa<4s&SnyZcf67d1awTjCiaQOs=3TIJS?c4G(?vo);7@miN|A z;fMpd^8qCooRD807rpb2n>v5=9`|mKLo%kAb^O>z7z_JwSQmtfvxyJUJ{5pOh@fy_ z??l8V2b_y@D8Ap`w0Ogm94HO3bl^wzYoU`NG$y!p$0mMBHA;NBkNi3@&o!rTPFwkBo7_6vUmg^T6AV4uQ? z+$tE_o|z2I*t-zFaHg(>>J1l?=Wh#Ii6_$#JN~)|*6{;-_XFFZAHuSk0pT`q+{<1` zp3qp4V!@OKp)`aA7`E*Y%bm+q&S;LIF*Z4Ry2@*t?}9LPERZVG_Flu;CV*%VWK2YQ z?1^P#@`l7ncqWq~YHNQz*$x@^xAH7$3`v;xtm9{!Fp86F0l(hw4DYa70xO1Jy>P-< zyU8NqsGvzKlP6F5v{l7L+%d1*W330B-#U9oS`guo$;r$f!rb@Krv7|noNfZv@niC< zrC!T6zsUNDP>f*PZj9}`d?nEqunJDtbs#QxGL7r7fgN6eE~47g2*gbFnFr^$ z)i1EFAsyKA%F09A^K*jPn>p0dy`xKVA(P0=>!S?PGWCWcQ z4MeNE4~+4_S?jKw7MP&m)c&($g&X`$rzhiec0fIR!KnXd8@i*{eYdogWu2dX^-IFsy2=|q{VM!MAD0KL z?G!Bt1+>*y&HXuUegvX`IZUAC=gu;*2GZ~d#?k+b{CLYG4Tl=$q9*1NQA@g z`j1}<(t`yIk@$cx%fB%t6`(AS@`9>1h90F|@N>E46ACakxmDOnu)=<6L4;piu-GOO zLR{_T*?!#)lXVqHe>Q|2+vC#>c?ql*Rws_l@U_oI^#!NAgme77Pk`8c)zVm6&AcuN z%yynR`{%SeQx(R05zO@c;;W>cXuldIIIiB`U@AW|hR-~)Zzi12pLaKQP1cFORi=Hh zW7~WSpC!Z9121#Oopf3>ZGz*RxZY`geXExF&*bR@LMv5 zKK~VC;iES61*ouLCUP96d<(rOBoN>MP1<-r_8~yT_wtCOEhAw8;iZKBIG#rh)={s$T3*z?L_hN+Yh^5>+Mn6D!(*l1xQ@P zCqfY-K4C?eHb(3x);KT+vrYmFKgH%Vy|hof{c6(aj)@O;*t5Sso-Ww)@s|EPeEy4q z3c-(kgduDQ#|p(K?0X&(q?QPZ!p2d^Y~y%slcyRuf7azs7=>pW>~+*izsOvB3Gxfa z%SN2XI?l&T9hM;+OX7nUXH3jE`Dv+j3&&``!Ws@|L3|+yG%WKF1gB^JR(v5|fC!3@ zMRI|BT=MD2MdHUk!VuPqP_SPgr_}3xc_^Gv;Y_-vsb442*5SuKumuTZ9&-Z27mBR) z170X1e@yt&3@_PG$P_&5ysC*4+Gd}`!Mecekp{%7G=}L1_7R4#ii5uu9*%X1T#j?{ z;ur7l(iBkKkk{sZ;2l;_&I+y`>o{S0GG-VPAAT|a5Ud>6h+{pEMz*?bIIORCUE9xf zAB}60arkM!P+WlJWOiE&9x>e+q-yGD@fl(GvRE0<<77E5uNgv;i#$ ziSOj8ZOS^=iWAyq9}t%HP=w;^BPu`EZvAXnu)?cm0fk++AiRy6tm)2LcDvNl;d)GZ z&^v91A|xL}%Xjl5H>5^J2I-{lKgra9ls|E8IZ%c;ZZw)3IM(Ga6fdp6y>AI$%|);W ze*g)Hbw1O;Y+@3{32UJVnRZ4og{*TZ4HAENZk>bU*cs74I}gHVw1PNP*P$iUIXPE& z4aBkgg}sTM-XR(4vEsFGEwIDW%cgBX;;M6l@PK!2`BVnh4q~4=w%=*y7*vah&w}Vc z>EZk%+wA3qN;}TR4+VJjf0N-EApSu=f3NLsU+lf~8dQE?ZN5@Le)hU;9@@ME8$J~f z5CKmjha!|8kvX7+#E+Zsp%)<;!*Pyl)U32O;rSJkv9+xyB;!_uR{_u~MJzfug{eCS zIG_BK2FB0Si;W3T`@mj{#3KRPYqsb-P;EbHV>bA6Lp%6zps+e`xJ|rm`h4x%e@CEB z2=C(}I%Z_+i9;UYlL#w71ctRzdMun95nlQBWoiE7pC`cBF@S3d%P-W0Ek6tXDnGAa zJV{uX(P0LHGTvsk!T|y!@d)sqZSq9+l2WtTk*GXGWb4Pcc?T=jz&U@XMW^Uk1 zt^6@U@c{zlSVC!J$;Fc))&fd|f1KN<&tAW(O|C^@m9aKY!mtn?(}o2)IS7v?3|0Gy z2kn$TWdMCO%YMTUtN_&ssU|*g^Kbo90jm6gbWv^?2aALRR!sK%ES0yqe##UmE8zMS z28izkpiHrmt!Thzq6&-*l!$Z;F2LSB_=SXVeUGZxvklu$DyWbSH?((dfAyE5)%}4p zrnoy=E}O|H2?_HF%*|Ha7Rn@v1VM7b3d{p^aEm+}LKb;>qj`FV>w(Qxi zP%r_iWgz=>aW(_IM-fbUe=YM3837hA%Jym;?9W!id2np1UyTWdkgm;lUE6hDvHaN5 ze%KR#SwfxP-e9(TBo?k8|M13A{A%q#;F^^G${Wr>e7{kI<4_gbf0~CI4MIPvUd4?H zup0IPbr8kZh0L!2+5YL)WRj#r*kMHWEBjw>v9ezxKA_hOu__n=);c%X^ivHo2rUuj zf%q8z(^uk&s~hO~vy%@uaU%@;c66F%uH~fVx}}|>tuOpBy@5ik01@85A1}`y2KL$N zS!tjRh~*2hq7h*me~@zf=={p37k1=90@OMhpv;=|o0t({H4Q1A@*NrxNxd)$3kYnT zP?&Hmii-%_4kA2`mc-XxilBIFPWvc4>p=S?KH`SMDlrh8oUr2a9z_tA&Jlxs8hi$& zAMufPgr};QYEtK99Y5_SEOB)07OXO&llTr9uvx~1g0u`=f4cllK`R2*warrEW1Aaq z``!DxzdW&R#tG#|o~S|yM;t7jb@;`O;TxfQ%xmu+UU;0(EY;&-VEHMGjUxeTER8RA zUeh?4F`+nuJLK5kX86yDXaRwnGG+yJUTgipf1;OH3teZ; zIV)$LPGk#EVH8K=1J*T`b?o>tMf2Lmxe3jR*0DUKe{k%tlTz^k;zLM3-I`btpb%Xk z0Q~q8AYuGpN?}D@@jWQ$%icg;eN4Rd5~GhmG}U`skiP*ub8mCZnByw8~7*~1Gm?% zG}$<9f4Y@lDLu(0H-pkaT;iw(667BO%>$u5>av|fD|$;KPBOext2CkejcMdA{bgRp zQm~F6`yh;Ck+2Zie~V(Xux-UBXe4vD*~eBCrgdN+ZQ&53y#XXddctAa@-o1pj7Mn1 zw@zO_u;LR+qaOW{S78-|9}vb~6L3tNZeEb+e^T)U@D#=h1;=?fF6#mT$$|DOjIDMD zmc+;n!8R7!9t)0YUH*oUt*R{;De~L8#Bf!TnnSgPLK7L17tXe&@{UnY7_i|&{>ZUw zg{k+vgqz>^ke9BI*m3HO3wi1IGmc>i^MvL6oCADdB5QVo#+dT3;dC+^AM8F+Zy1*0 ze{>*=eS{>4XDwmgbfs!x*v}J*SC1SUy|WdbaI}4Bhbn$O>4sR^E!B>rDNvAi48zz!vo&js24`qc%4 zju8r3;HiBa79ThU%TRn8;11!@A3bUtULu6Nb69`hsKY~3 ztZ)b|=Cohp^G7HmKRZo}%pgN?R(xSN$ScIWX+IoKnFSIRkFm6l;K&%96`y9be<&Qs zu@geo5u%Z;Fhb%}m<56Bv}w;nQ=(W}7lY#|k1YsK2Eh{MAF$0(njMrzcoH8sj&)## zsdZ-Ckmqw}ZxlU8=$}qV1^(9;hd5$R`z;bLkhzEMeuNJjf*<=NG~y7K#KgoG8&rin ze+kQq&}N_&pOyk^D9gF=yBnqgf5RFgL^)s|lL&MJ=A~UOPc)WT9(?x2TRzVi)R&VV zVZ*`&n8ZGDY&q{y z@)zkA0rGk(A@)%Uqz5lSb00t zko3@=D~xb_GR>Z!UaZ}Z2z7pI0c)XnrA^nf`|cG&puhy@=K1OhOJ=_?V5{OV54cY9 z%jO}>yX!S~(1tzS!Yg#Eh>tLoU;O15erO3y z66EO1lb5OG$Gf$%prXfY8&C_p{Ze+=^wlxJKo@fC)1022;)Iuy%)9{p*SlkygSD?swz8j0{)n3xI@ zDrwMDsqol&*mC!6K#7P#;BMm63S_jtDZ)B_>>~_eiQ|t@M2X_g<05gKgiOKd;&Frl z#Q~cEDwMp7z+YiNX(yww9GnYhEgMuOt{}(ls&(M9nM<> zj;8|9U8?lQe=MN=+kVvqh>x!z*bf7NCUjCbh)d_uOc&B`ugTtQKpgxibZ&rAE38^^ z9OZ$glF9m!4z6AQc&Yb!AeR4tf8nO&`8TuIZT`jt6U%?y0J4Cj)y^N)bThE&CoW-` zsH&RQUw{gV3^@Mz?AMP%uG;#-w6Ii&F#*O1#ih7pe<*jB_LE>g>9k1f0#vw)uQuRA z-wyFsq}mNYRk-JJJ92nY*pgy+|F$X_=S z=T8Mle*ye=^%nj+Cr{>lRf&%n@^KyYbR?$mu0~8TtT_jJ7wZ`Kg(40wKzFJw0L8cM zz!2LR(7CMzq^C@0V}9Cz2(Yx89y@mZTtloKSWSR2^iGWmU-^dsAsl@GyG`c~tN_`@ zs!{z*Y~e8k{$UyrAd^aLC!`uyfQ|S;NIWF(f3se5FEF7tpwJhw2umDW5EdnxrCqNE z7lMny1>rbGSWS?DSU^VQ^-@mkT=G*m;t-b%!*K(K;g6SrVY)TdWo1q_UQldgDXv7-4*C1+5h!uC+eOIN}pmo7NNfm%xKzJW7F(j?IuH{UP1P{i_qRdfQ}wGjAOXfKAlPfM z*P!#u0zx$_NL&)K+7ES9wzHh!K6hwoqhPZ#KU*F6>DQ~p~4LQI4ZijVk(k9rj(J_erYe|+@X zKlw{rL5*|%+T{!+Hw9!8tOTJt!ohBvFeFe?fic))-w;u6{JQ34J6&_uJu1jrZp@natXOs8X6@v)4FkL7Nc z4)rH1Mf+1x4-TQl94JhP{=&5$5Nmi1Z0ij<&SB4Ew+R!weuJ7lg(yPVx@0l3`kuPQK{>+xR)TE=1Qrx|B8q7DIy6G8G`=+N}Kn>GGg; zH*@Q+ysTgDd-oRZ(kBi{x9dUHEN^My0;qcVx>laRfPI7^tTK;f_|HY+{<8+8&Ju20 zHu!C{`*iG=-br}ce`a4uwey1&?HrDz{!vo{{KYqA1Hiw z!+xSy+wA+lfG15VtUn6EYk%Y3-nIGcc;}`Rg<5nm5ds#Rla(nLe|y33pK*8k>UYp; zr7pA`1t|Rm{o1qt<(JjKO4x$3jd}Tp4SYe{4#Kve1Q+hFMkq42pS|^>(pElLS3U@I z|DfYs@{b$N|8Y;>0ayDE0}Z?`|Nq}?dv8Ip|2Ja)`aeURH-f}xX*2U_H>pK3lw!d` z>(6xf)9luL_Dkjqf0{qc)}LiVtSxK7`XM&`^ONY-(|LhQgcWT-Kq%J9ifB6q4R_mk z*Yqs}Da$9n7+6KxR}?lvBfP8~>-e#cFfj{i;i8q9^9z48`0SGx`|DNJ>&092V_%F| z6&w3o+iHK^YO((_qP(}R9%ACFhVo1QWx}=6W<`AS-u%itf7bOcTGg#vNB)-!&Uq5wV z*FzAV#Fqymf2?)`$Wj97$C8HO!|kXAL_pjDBU>kbfG60_vjSk-Z8{N4Ic>*=IS>{@ z926X%rm(_i9Y6LFhOi-pQI-FtyW{fh-HWfjmA3ylmizz#@e~DTNB)6=MgTDp5LWSE zqdkxF)k?^(tIkNT0mpU>3XZ}OgyUpkc==lp0c}F88cPKJ=xvq%%8eiUY*<+!E=mu$ z1)`J1<-FXz&A*#fVTJjO+F@_Jm_CjpeX?NI;it3{mN>+u)Dy_1Q-l!UA#W5PkUBf7j_9kI=YQmRL6H@blqIPS-DiT2u>7 z+Te;zdfA3rodB?Tj`d4fwzvE8!QNGmL0pMV ze-TgT74o-`Zf1{Ar6MpoI)vdoIM(rFA7Kcqju1<%@xPw_x3?Y?lEg$j90kdeeT0|O z^~Z>%JM^<6fN*Gq@E8L*iw2^@V}Q~x(Q#dJY^x`%xV-o;7YdQ<)(xh70G+$xuUEcQ z(31{{kfE6HVg*&vIfFk>AIp*X;)YuWf4L(LN!nX{a61NnL14qt9(>}dk*Tl-Y_+IQ zB%MFJQnO-Y1uf^Eu(zA><4o6biKHU|Dl|C%9}oDYg*I(Cj)t|&gS6WMfA$>^ z#`cOqt7A!^K%U?mQUTk=Pcrv>?4eglZQ>aMdBmfnNCwte0Fe|!rkKjj+u5V ztbSIh{Z{n1JYA`JI)48;$>$s!Oi*tmA$B_d>=8MAUh-|GuOe0&^|&ct$OCGWqS zbo8!1Q?bS%(FqAN3}@lyz@n>q7V7oK;&i#PJW#8DPmld;I{#~|`HPm5HodvDRs>5Z z5GBO?3{PHE?z}18)Lw;|f0Lt@aLd!K&x~U5=ZQd>{dnlD-l__WM`!`Lfe`DePbUur zGL6t!dmu)&#%rx({E@gK?->6V@vEiZ5*}+o<5_Cuot+wA4f|;f%YvReB=0z}W27EL zQd^|Ydd)KrjKTU*hv!`YGiI5wYiIphG?TWpnL^xfI!_+4Aqe8zfA(l>tWnTzjK!y; zp(@^5Gc9Y)2?UPAQf(xm&tTMwYukh5xg~bpKs>z~DQXEZ_I*PvQy#Kx^<4X&UCVDj z-g@swr8VbTtbJoe{4@bHLS=Gw;SyZ9O&ftWgFP6>koYVyA%-F(ZoT3YwlIiaulR%& zA@M1|Arr37h;Nk@fA(^pO?WUP!X397;F>ghy&@yQrXw#6G4TU&tBFtK-F*5yMvN|( zUYNGIK7MPB%uC}?O?V-BLL?0_;f;T%{2wRn)?K_pgy}fo<$YH47mc_=>j(I;k1&Ld z5sGi*wFBI9cOT;Yaay;8883QY@oZ@=yDo@B+|uTs!j3B(f0tT7#0M;``0^kv_9g($ z;;|0P7^XYSgFNv8H>!=#y1rY8)squee6afZANmglDGVK!*vuIGVvg_{!YKvy>sEZ{ zo!He2&x#KwAO4j8$bgOO=jU_r_M(|SgEf?&#Ak(vpQ>VxVPDQcc+k4TZT>7f$iv8(ulx z6*j#zcNw#Q89L`{JG6kr&$Ga!JBEF=z~%wivWO8{fBrRqH_bw>nQ@)Jp<-+^wU4ic zW&IEr41DEKzYJk!&Ra)a>euP`*nw=)uxb0QZu!L*fA->ICJgfyEqYl>|D>*OEc(Jz z^{WeKHUncwdcKN)=+2KGo{W7-kgA3`h6Yu!6kMF(RXt^n*2DIP6(Ax~0dg#`+XyUA zfFf@;u7&B~HVp_!)o)%KP|I*yzTyj|w;JIM5DJi+C_J}r$d~{v82?rzZ^|j}CBDf&&2y*!rIi<7wYT%E2-CvD z>OHdbymV)HN9kjOd}MI;&Pra4eEe2dEq7>t{OWIDq8kZe_SBG6%g+|v{u*t-ESd9^ZVLQ5Os}-iN;^xYpgC8W#%nav zXVYclQgF1lSmqH9idt0dV%?Mun->TNCqID&nEBq}ZnJ~B_^O{J)jM&xc3r>Xf3wYg zUQHyf-&v#{>kYZrSG0UfK7CkeBe`jqk;C=c$8xO4@&Mt<@{x9>-x6-e(6@WYzuli- zGmX>s#=(9Y2!q3d`o;qVtSV&dj>-EU_O92u_7RpiKqjjCm7ieh5OF0U`Gp`PL@i=r ztRG=R@gqJuE-Y;Z+Ds$kB?7Ple~<+nGT`8nPc|=f4f3X82(>cOHs%f@A@iQ>k>TFgYjbKH~Pr z;%&fy={ww1H81I4(iv16aEIrQNQFhdt#Zd#zGpo8j9IA`dQ9!%+mEH{*QbH=vrhu# z)rD%%7L@g4yCUT}8Hu+Jf3&X}J&qaVU5rqCA=NTW9#kVQzAPXp-H4CyIM(q~nE6G=(RvJ?jUz6qZszSFK9C0RW9E^KW<9 z6~+yzB0%5zfbGwDf8Sko!>yUB3>ZRK?YnC-RS&2N*7@~vkuF*+b@bMLDUs^2A!*PI z5&Z`SvzRrE5ekWnxZ>bsRx#}vRecCR7O>T72l}N&PZMSgzQn!y@FhOHo(sICz!c|p|=OfS%2_%LD*te!6 zKxIC6HJSR=`$;2xZtrrBOl_N)(}(+TbRr}|1gLYrcG^!qQ!>-X4Or4Gx;^1GzHD*7 zO&a)CVF*awKC*S>(oA&7)exC(V;*a>4Rwcn4 zHX`|7v^(dO{~J&FU~j-KN1g4KTDPs6z1l)<#OkYf@qzv@nm@qS1Y2Q;FsMO*wl3$_ z{~Vvyv$bD>?FA3pCH{KF8W-U{UN5)#B|M1`Bt-nM zl3EACcmal=mbk3XmK6!0N;z%lOQo#@o`fJkL}j4>Vkn&Mez4+4fI!B?KztArAff{@ zN9)W795eR^zYYiwBtAf>5}y@e4Cc;J_=M3s#3y=`XFvb&PWHQaAqdbiZpf(2KbG?! zz?$=DfB#wxnB=K>lACN=eqs?5V4F9~9~ZUOoEwPkYnCtnks|_xmf&8-7+B+&jm-VJm1&FxotbD8dPV0X1@I| z;ksxpfE_jp$#@be6kZ5Ij2(=)5?J?(4{<+^pXv%vzwH`!SkL>x=Qk!*Xf*+HoYJbN ze^!PQK71+3qUttJgv7UhRwx1HVP6+Oge{sa=GS|l{g8iUVSYup?>ZZ$*Gn(57F1o~ z@xwe5^`;{he}1k(*yBii!nSSgvC|bI*AkzIi7*!5ig1Z`<+e&S5w|;N8^5mbvb+$B zqyPC3e^h{wCqgSeK!6heopUEGkO(C}f5bPgTe)pYX9aiyw8+?&e%bA!q+xGGNczKG zxKKM==>iYyd`QmtpF#Uk_><&f@jX^Zx@lik&-q{0^u}C<5Sn-;x zi17K7w=K}AvmL>_PM{T}(l+enc|QN%`h1H2{$m~zWL_S&-!XZVE0J*>me8LL7{|&y z3EB1W#BJYsPXA0osWf5y-SG<;Vc3bG)+T1b4r8+?eb9>@fQg!sM~*4e!> zv2FS<02ch%M;OAY4Jh%!0ZrPt7cSh>pP$!Pxh}t>3W!fb782i6UwxIjOSkCvdo(FZN;=Z(jE(!ihvmvU4Bmrsa6~ClZ9UJlNnib7Dog5ke8FI+g%=vEF+GJa_HEZkuDukH5%JszwOE^iLXW zTdo=kqc){I|NYxt==3g0-$CUsd{q{2V(o_A;&VX9wb7}Z!KFr0u)$5dwwrK zs3JnJR#*c3bg#wI2D;iz7VQJX2cZC`HD9f?RxI3+$uuk5AqlHwE5K@^WBK1{<_ilY z5D@$!0seYqf3pJOgSWc1biKQDtty5WKKaP4KRTHlDiP{GI=&u1$y>OXpomM=%>Z?W zcFBW%{;xxp=i6PoR6Q^I5S$(Ai3t$P2iE%Kfe3YeA?p?+7S>k(@4dT-`{eZURIk3z z=6_^JH$YegAL*8L*Sm7#Ur2No;;R=72#`Nn8I zD6Hb@c`ZVd#j{A5dE=B49n036-s2tXp%Zr93TpFR*LG_TSij z&V0o?w%MosR(!;_f_nPuqulWG@?S_}A7KP>y#*|7dzKs8+AX;P=Ym~WCn+kZcv%<`ZEB0<+4LR@%p>bQ?sqRj3*sBqexdZWO`z&--?lv8u4RknsR-%q(w-Dn ze6oPhYuduzlGs@*R)`RaQQ~9Wb^@pZV=!Yw&|X0(x`XM(;*S8onLORCxcrj2B1C)& zV+9D-szSX@03PLaYn9AKLWEd8IP#14fBjO}cAL`a!YsYmDU99HiZtO%{;Q*Rl3kGa^Zm8c{z zD>M5kFeskBN+cSx!* znh_GxNWpZ{5@$EGmFvq*& zd+lq~(5>@Z(NlSzk{!m0gI=ad2F=a5Z|)XM?hrVBh*W2=1?hjLt+KgCQ$_ z`O*g~>OH4wY3t`l$`R#u+xl@T$MV&@J~mVL-|MHBORI1HdYe7>#+2Dt@h1-L&@myl(G(({CN7%}T8Ua%X{9W=Co0k7Dw#%s17nKj+ zG-j$?5-oFX-C8GV6i8u4mA5?dJ*iCYN|WgnD-rNPJNRcydg)ruH-od(+RR3;c7I8r z31rXsUU?yv{to+b(y19O()pZHHAQMZ@fng_Iou&;l(>x~}z zjWZsED6M3~0)vVBb@`1yBZ&L>iZ+z+RgJ`s&Kwx+44tVK@4L0Luigap#GaF*CYj#U zUSQL;;h)PtmCMi2X_%;@VXGyIH=e6vLZPAF;e$FUvKby>=*9ko8T`)4lySPRJq zuu|dd-pVK}__C(T@Sao>vP0$YeWim8loJ-d<^w?y&f(Nk98cMym2Q z(F(CiXvjsX$;m$uWMI>vCrfAmZ)hk~p--;ELZsNSE6alhFK`N6mX+62WFFC!q6_ad-zY#n&I@DkbL0Pgkokz03 zlE2GxcQ!{hU!YVxE8NlS_WvT-+bBHS8dmrk3)wGM2NsR!)pke1wj=^C8=zHGj|5>n z`$P9%MN_7VYpd*0_@d*Q0m~D6=Lg`;vNhA$R0&axZ==_?r&G?FVP*1ODC$c?#O3Yh z-xHVB6?Vb-vQPZ6vYUrSz3&VK1>>Wz99~RQC5R7JN7SMB=Kh$oNJkTTIbt#)_JV9R zYt(r{${@IBvw?vMUp75-9eCebzfh9qlOntM(`Wi!tYGoT;z6B&_fx_IqQ;Knpj82X zvr(jmPaV@R*(W6XU1Fcu@1jlQc}u}+CdVkVPaI@|n=jW+=psH>tzB zeI=|HnJ;!rC#L`idZ|^dOq@;JAMO;?52LwAn&m|I1V`orUu%v>m#d-!USgGX4h2%?l@?aIX$h+$C~eOR_$mFaErIPu^uw?yNqox#Vges;sRSD zvgtxQ4&)htvBD=_dwIw!vt&I%Wt*6f3oZh@4MmdoWv-Sq(aps*;)18L0;;Sg39-11 zSigTU>HRe-f=wG@_tZQ5$S@(rkxoXmtj)09$g)3_Edi;wOyv%y1xN@) zzzG4wHbBsK4oYe`aUcG)0yrIp>Yd||uEF;|8{F`iY7d+Wtr_~Dpni=H}Ei+{fT|DSQailMD#-93|>SfdH=ZZ#0^4)?v?HDL!y-qs{4I&ob7 zxloC9IUsPsHQI=H`_AXXLZrHbHn{$}R!d#LEc>Xi&Lb z0U>DZbO&PIZBeroK%W`VrSKqMaj$hNPZQ8AdkFqi|H(m064aJHa=~I?#xn$+Ku$ueDI1Eik6bVwawD zlrD#@Z&<_Uo$`FUf&E?Iw;Q&X|NU9gmC2OUm4U&-g zA$Q3wmZN^ku@BvK0sCaG%?|Folm*RMRjGn0i^)cj5tru*+{&kX{5H@$$v11fgKVGM zB`&bL8u?ieO{hpSEF82FhvP^oAA>_5#>}M;RSD)n?f@t6zV8WA+%sUUFWB5<*T1^& zgMD$43Q0eCJW{~dS)JcL+|laI362x}ML-#Tsmia6;IrlA?nKa0u{uF?V2DwwWsS9Z zfQ*VZG=C%g@IxAh2|Vla8G?gjj)Po4uQc+R2`2p3LBJ+DQFWzKZcAduY6k@5vvse`p^gdTCEjWleBI%Mws$M>LpI zDZD;1+YT`!-ar!rMHq1cM=zIK0uStGik1~G&KCKu?#v1r{X~{uld5UnW?h1;R?BYg zN?>(z4ZwXlyoCYO;3HPW4&0&ACd^EsQ-Xy6jblE>RRi4lP&Y&LK^gNWk?kF~w1B#R zqUu!0w?X&cksDosV-J|bH;&Up2?V`4uQ}5}Dil~Y-0=1s2r?WENcrq|K*QS_fnX%S zPI5IL{uP7C`$((yO6AB^y`t_<0MahLdW~k$IO-`>-E~Le#ce!DomPw-hJ*;G+5-e0 zB%FfoF`SL;@=tJ%-MQVF^}Q$>;+ydNIUH!Bs#t+ZgKEYaT-4;l#r|!v_truhwA6VE z8~LNZuas^pa%m_%*3C<#>PbR5TZq2=zx=z%9B#dHF9vqnR|L+np{mBE*0;zYvAJ!wIgTS4;XAIdwu<__lV+eBW+Se1YeFNqnkVM>34mDDI}7;t zglm05^9jG~Rv%50lP~ViWX_!w#!GG(QYq~^P@6odvJn(io_NTO?J?(Bjti_YeFAIz zwJQSsVRJ<1XnZ?UKPpQzZEPuV{8apzoyt9R{;i4ME%%kaaa@LHRl_>{?dYHDQO5_D zwd!hepND{L8a8woU*X)71pu*V2K-2U>E^GEtBI)@K>Z<^kTSO;Q0iN9B&bb)0BjV7 zK~VtL!oX4jS4OZg$%-a1aZSSrabqvxCs;@|m<^MGF7r=~ho_E1DW_=iTjrdq~SpLCz*_9jW@v)Lqd~JyoH-ppm^`_>l>rMr1r)8q0?g9+^Hn>d`(Wv z&nwS$E3Hv6w5jkW{-->waPu7%U+;+<{i~3(C!W=L(54cr+A7v*QZb2+62W&yQ6O-5 zRXW~r@(x#0iLoSh6zi)YtcgFh?H%xx(C9e)2<90s%5#^mBBOyuFK8`b?J4)N<`hq(7|#n^#7y&9=(!-W$~3+DU;eGdxEah`;Oa@4q~XBWKjG9quz+5=Mzq3m4>IVmDih&zdOvzC89HV!b;W~}?r7o~#wya1I6vJS^< z<)x11-!E!r8rRD(H`4mdL4^NOBS*B281b6#TNd)6BFX)Y`>f&-dy5_~=T-bcwCTi~ zcO<496=3utVq@HP!}19&XeUzb^SGt{_1h0zihz5fC$p&QLmxZq7tn4J41+@C=y_&S zNw@q)c#^)XQAgkm#%@9r=2yl#D@7~Bn63tCNi#ET>bup}i`%nTEz4c?zzmx<_O|g{ zU6|n4P>PlQoo3$~p{q8!l@|g$RP3FXoZA?6zpl&VBsBZxHIp1W%Mjtd%9L+dYEwk7 zkAe57pT!)H?S+j}e7oi01GYr47`wlHaO;4-oA^2BvP*j(Sl0U~qYYNxd7_kLzRNYw z|0dQz*(nQ>*|19=$MY1|lPN?QK}j$k*8FzWGjG-^N&ad@qhs3l$^{qFEo!>N?&>>- zLsXl3EnWYtWbOusx$!3oeSSw)6)3`Dbph1mc}9oCXi1I@&*;nn--FFO4MoO2K>`9j z@gO6gY_)a;&J|_7TXjz1F?X$YdiLb*Rj5vF zMvm{5v>f`Ie0gD6Ap5ra0W(z{B{$<5r$aN`w5ESiox--cy`O(wwvcdUZ^-CQIFvGI z9-Auq*vFT@f`S$Ky2>klV@It7*jrzg$DJkz<#l^3L~H*j>PV*>zHawS1lazxVCu7c z;#TEU73Kc@!vGqO9jmPwtH{g@tT>9y_A3QQ!JLo_VI(UfDGsU>{p4(>(%G01U#e=q zymK`l-RC3o+Rk1Do4>^sk&h-+mTF;!-dG;T*>;xnQ9mX|VW|@Q#5Prr{pC#IyfiQ; z=EsYFOs)iD+{Gse^F_-A_;Hn>hpz(5#4`*$JBrBGV`E(8pD^rZfFQwuW3hiBI$HVX zK52VfQPQgpW)*h3_f`is9fg`?Q%}#<7HkV}zVq>_cyF|Ubz_1C*$hGVUt_+8);&2r z4R~ZJr;y>g+_(x3orhzb<0?oV`v+JVMHZY>NkBVYSAz!M^hm#bUyx@&9BVKVugyvA zXTBQMQRL!lD5w+jv#kzLQC3m1keiCNIq8lNjpGyJP|j5~A?{OykzRK)A0~Yty7_RB zOb>=09y}kEJo*yUs;H_iKJ-JdXxd1wL0DT!wnK>5ORnRLH1sXu!zefpbQ2;IG@dwa z6sZ@(qS5}%e50{ErXZxW5gZqSkC*VL(d}Hjp7XXvSE>Bh#MKRO{15@VQYiP|*df$~ zXl|-kFz<(6OvVQWBuQ%B`^vAk7&kyZD2ByU<(ugC-}5sC^#%?EfrH;YsYIgQ`s&1R zuWzR}h~yicqJFob_g|!Ism@zpXu81Hu?3Po?DXz+-v45IReWzSw%fKs*P^BfYJJIO=nt*{0 zc0!PJhQqtR;XguJ$qd!%yg_U(0|7IS1*##(x|h2NEl?Wf&|D2rraiy>4Wb`zKx`y5 z%fJGt!b+5;EL>^hYRT8a1H_Jc7zNIJMwjxSnjvkWYrtX*gk%)TL310JfK|L37V?wa z=8hU1>N;QliH#K0m47=#RjjX=;C@pI>~$7${`Tr-t+b+`WIHFfv~rUBu6bG#HOqP| z^GGO2W%hkV;7`f^a8l{*5Ttr({%yJB+ty)aeFlSlO2s%q82`QYly-;CpY1(X{Ttll zI?NoBqK`PI(m%t_BT0VeRm25N)M8rLBBOs$|G~Uy%OrXDQDsphN%CZ9@!(*)z`FJg zkn`0{npNA^8V98kAVo+)pfc_KKB?4Q}pLFw=3_Yz16+ETu4Mc0gG8LTE{dKVdkXY|8JC_%U7cjJ{^; z+zgRCIpJI23Q6#HdBYI8`T}Jaw~~dcl0t%%4wXpkz7B7K4s$w;Nkii)<=4rTtO>|g z%^dsqD{bQ9^h296IH;#j4sIv+B>ZaqQ)+@fh)6N-IFmCd zSCXIkOmw#Td54u{m>iWYPAzVC5`p{_tiE>VqjXQP46$MlH7IKf$9Q|h-i{Mt#1x!w ziIvaZbKS|x5wPK+c3($1i{6)FTFB6r>1hjr=p?nO?OCa5ZF_sn0l8l?sSpwYsZD(0 zi$SBM?J0t`F50@=-YD2KIY8{#$H%Wyvx62nJ!#TZ56hSx^x}vWbA5>Oq-KS?aoE_r zeVab}KQ~S-XM5rD!BX0H#%C#cbcdh!Oo@|=PE5!97fuvmhja}B3ZW8eUX!Cs9^*^97~BFS!=goSoOWpnMnks^`fsu<0lannqI!DygS z7&?sdjhC}FVn{`Wh=a0-hULp6n>%q$@)@1r#g?0}lXSoP!|YNb()CRIZ}KZXqzEJE zZR2tT!S_dl0GGQh!m+$)n=sWvN={cNq~7tdAmM1dNJ=6u;{Bz))?J`KMwCf4BN*?C zrGtoKXuT?P%-cnhhOyOJ$%tQy*65(HHZy9XZK{ncj6nRxECT0hCc;yyG~N3#%kgIl zx3ohT4j&)fO{w$rZobxMj3Lz0H`*n5lQz3O9pcjs{Fwb(+MBiX)&MllR#e2^@eA|`YfO{X~euhL?>M-Aj0QblX|4^fM8roZR zHza37BuX)Iko`w+MQ!N-8xT~D6~FOu4H*Tg#0DQPDwIMd$?H&g5GU=Whv2I;meh0X zp$A|ilM-CsG-7_ww1eY58|g7WbMbCa#y#KVJh-G7l;h!<-u9*oyg$1mux)PY#s zEX`qFCU^~9{JqOHOfSG7S6O0(X;^ z!WGaDC;Wn*4c(RG$Sx;FY;EwUbz9B+4^aOkyqs0SqA5U1si(FC#;(#jiaQ*e2tV)*fB49KY! zvGi{BuX3q)X|m|MEjgi3JpU%;QZi44Vg^o|)v<48Lh<+x#M(QeKGIv3E{UUUg%yP&?2}N`RIiE6fMA7|5Cd^HOE?1= zz85YZGSO^EiFtFXTA^(rU@Hzg55Ss#L>Q$(Utt|IcFTi3bvWtIU7-B=1@Zg~Kh}9N z{QWJkc~kmBP-nio6E|dwWKw_bt#!=wL6m$;fIwjpW>Cx<>#XtarpfyT8#fMTbuIB$ zJUK!RS$%OuIrA!U~1RcO=I3;9kOc9WyHO!86I%oNhJ z)mVHAEal(kU=EFr%W67S6Ewk05D0G>4O794paGKz$WyqCspNxHcIc?ASrfM(wX;rf zaF+I%w-8^%`}uUwa5^ev0pMQB!e`dF0oIkeFI)&^7qN8xU*B^mW>Bt*rH_s*D8?rH z3dq9?%MHUSTEhLTrL4a$u{o7k_($M4{pq~R``%G*0E6KYYEFw%qt$K?Bz36BF;p}= z!VC*$VBJK38++(%RL2q2OdO=s&-IKLMFnd~rxC21Q-RTfYK!Xta%^_R9OS2zuirle z`GUO(K55PT$1#Kyr28UDxHj8^~qKq zQ*0&j9W4US57I<7z^1G6wkg8-NDwV78|Jrd1|j-M7__TDX0$)M9e0WC)0c}yxUQN# zn7Ka)LqL+eow9%});j&FBdhWV+TnA`8OuZkVMRmAQuTP`7Dmlw!E8X~vcuQx*;30# z@}xa5BH|2Q+R;}#^r`;LD6^xUOpoP_Ot%?9z?QBe&Hx#gCQ0`ilvyf-1Qz|1Zg%96 z*Sd3U=2B&l)r(vb&G*&LmD2Z7{Cyv zizN=qO`DPDU+;RPk4zm0A7(8lTT5?_qbe=SmylPbxC*rg+%61yJXBzvDOGw_yHGVv zDD31eSSuaRAt|wi&u*C?C%LFx$Ip{3tAKD78HM9jO~yZzsUf=&-I3|gODVv`s_P&Oq@V-Pug`7UG~>U)yh(Z4MT!1jNLd z_&0`0o8jGtlctq?M^SGC3vuw;@;`=f?HncigjDe5HifmXmd#L5e7cLIA-+GJWC5s& zKu%nnO)A~ZYO&w)>Diz4mChMNbIMoHG^M#hCz|d*4bGxzeHg=u3e-XyJqour2{EAg&8}-E`$1Bm3>tHH|{6yf7bBlp|&v9C`$snYPN9A{vCr&X~!tRb=2#0kOvfUMzh7jwf$GTz9uwmg;$>u z9pgBQpyz2mf`qP(j{2E|mV6A+mlc1qNT*$XiykVWU=g?idPW`aeJZPtbK;jndA>?z z)qQb-3yb(}vs})YXAf=7|B{UC3M2UB{o^TLVEg4P*$ebvX+~xM-K4f_Ls-XF#B^Fx zi%mZbn@uyjlJs-C_G`b(9LBla%CmP!?12OPci&a*1dVgtm;G?adD?y{RlWovth6qj zH&YM3ue}aA%+|hp6%oAitAsa=AI(5XWz_iRZKTsJQ7kvAr9X^fm-h7Yuxj^3c}BnA z%S9X;fOR=lO5*K+lSpqz!9p5HmABHH9h{>No;Ug*k!~&JB7&v{b1$5$kX12?0e%C# zvTTT3j8#(t74=yXdl_2ehz&>%D5Lf*X`hD4nD6+c8dP>uI`q{>f{MiAf}qq!UQ=ig zG^Po=0wU0ffA4Ff_L2EruTbRe@#3IXj@Nb*x#nmJdg}(vH5aSMP7_8Erf~Q)P#~=& zoeE0Rf|{i6jQ`w;s4x-G!dFR)d;82--`f6iFxWq?#a!=4m3yir(W4}Kn27b+#q_Al&o)`zZT zP<^AQ+61@{S5=lt^<$gagPf0MOMYD&`)**-d6Zb%TSvD08Xu9*BxXC#Zw&X&6MX({ zL`cEqE;gqb^8`^IIbfQVJ%s615pAR?=oYS(rF?_~Cq`n3txfkF-dzltKoGFk;=^hY zPppK8p?z(KizRn|jt}L(+NZAw9;5li*PL*!27n@WF8bZl3r1zkL9EcLjq<__6L z?Vr_c9-R(n*$o7yQ2xYk!ZvkYjCRxtMRm5?*T0p~YWbEWSn-L$Lf0*@Mp_Mc!b1O$|k z8o6u@qiz!IC5^qU)l34g`%xNA*J8z2F931+* zS~)DUAg^5|=muNlibpd*8Oyb4X&E~5vhdT(bUx+(KGmYopnc6Zbq}O@F#l5nH2Ky( zH@v@aX%gNkuNAB$6or+uuaa8#RuJ94O=DYdlgwS2F}jPW4&_nA;dw^YM?_%--0;kN zG5T(oncv2*8bU#fd4G2K-F?2gOCQ%M4I@UbtMO*WNVgp$yuKmgJ%Jqz#Z^Ve&O~X` z!H!l8^$-a})0DwYFe50P@H?Y`{NIZFinZ`~o2aj%d)nl9ASx3Iv#Lu)z*FvK^4*-8 z6zwC|9~Fck5Qk=L?T!0Z=JZdjM9WIm%jLKBUS^nPSzC^M7uUJmDyJmIhZb}a&es9z zu;yJDUcSmRQ8z8z)q7m0^e+0@j>-KG+2Q-gH?KOPZFWhWa5FXd5&rrCiwXK@{96->MPYTcuY|T> zqQ7JSqp^HTWJqcuzuN7uwoCo4yWm255TiM+SEl7$-%Qy_VZ8ZOEs?ryOKY{Ll*X`%$v{DoCSST zfVzppw7P=C0_$)u(YH zwIUM4$vsecisn^iSH@T-Gg1M?1Zlgv6C}caKdgEGR%t`oI%h`2?g)*vArN+x9*((a z0V90PlLU~Ht)134=|VqtRr9vv_kVoABRzL7fX1>4{3VBDa?8W;D;3&)pgmoKH9Oxo zR_VjLa0uQkZ0Z7MJIb7h0$(BGr+miLp+ZCW1Y+pDCiao(_?4at3p%#dSc+hE)OB%n7yjkSf&Q=t=M`ybPP06%o`L)ZK0&6H3xT=EoDDM<<;(5tpd zj!L)2Jjf0ZSZ>~U#w}t=Az$z$Wj^4fZqSUm& z);X)u$~WfwOid_dHNt-+ZN5~m_I`V3@ZrIXTRwP?U__dt%@1a*3l;r4?fAmQ^cCid zfUryO!NP3YB>w%7jLnP+H+*k|Az#|)m*Agf$ZP=w9J=N`bGfYFYI8 zfsL?`kYs_eyA^Ygm0u?-GQfHEM*e|ETDJ|=K_`Pbbsbr=Gj+mtqK!Vt z>z#M!!e3^@Kfc^BUOI+j15W}<$r6I-uz@&oR$!gy;NI8-&HbEB1orj4#;4?&HgM~f zH6+&IpH}oE1Y^AU;#NEs`pTi<&HOb5uPXMTAO#w1is>r*zSXlFgE`GOZZfW=dLI4y z6No8Ufv^SbJwvbW;Fw;L&o4xl-o_?}5RjMKVeeeNjn)4!A7&Q{cz3YAz*8t-JWub! zz~YiPAFN9P0@%+nr-k&pU5%LpNUrMll4`ay9(-Q6d|F|A*zsC{)`a`W9P)vogj4QHverb+E< zX=LITP!Mg`j+i|K&@`LmYPnsP&stggW;I)Kh!m4XL}N7ZD@@iYU~RaT*k5K(4&h{T zvtQ0C?8dYE<0fN2@#%Z56z3BT>-^VqSa$PdGqG7&U#uz#O(C8IqT+#XXx{VHkMK}X z>N7aKq*1@ts+5!5vAO=Lm)&Q}VrvJQAJH-lU(ujP*~r}iBb)@<(@CP7)E>iF(Nn_3 zGHZt&3$c66n$-%)Zl(kDXYHpn(MA5jy&Hp$k@gIAjZ!rXUMLf!$TC(&G(^x)(j!Ek zr#gP!nPdF8Hpkag|0cO6_0q(4&$H@jDGLZ|5h?&Pk?1Lcb&niQ(S^}gQCH^ zheVtu6<}YXb+-3JqAA#ZPCHA>B`*IIr`*JA3q?HU#kdxFSWu9F7SG+OWc_F&Zn(HK z^ivJ?d=P#HR;;O#uO7S^q}>!%5l*n}IaWkjdW?q)6p)% zRX>0PJ$VW9x0+klmGSx9C^_(c&zXcV7m7EvB>PU0BmJt02!mhtJH52J6DE(D>8oia z8=p|-?Vc!35*Cyl2BY>@mqUDk;v$;!9X#|V@LWj>=OcbbIuj8xXgESW#s(2y&IhF8 z`&)d<Ne-x&!($K(tKkuk% zw!#7aV*U`4)fN4pN?!;VBJ<&bkCaLj;0k;>Ve>xzcz?SpNJg|>=7KVswn3ijvrWmJ zXxcZyA>+qng4W+vP41phM}lyWzb&L`Br@=h9_Nx`uYQ(9jVF$EHzwP~IQ_PH2?We< zs_t4>>W>}1pa;82OLKT4zDC}mCBKSL=)<^~!Yvbb*jR<>ktw$-&g{*hlKb7q%wMq} z%>I=IE8^w*(8rJC47Tv&JWt%&esqmKx+uiis#jJk@iBDm^~(2K1U|TELUM z`-|Cwj?1Ua=IGH3ED=9i5)<_q7!$AN=S4r4a46^v`uznJ?sXhfu*q*miq^1Z-Kld- ziEK65C`M2f4WJcHQq8{1$srGSEJdUzIzEX$vQ86WfJtZopJNW|i?S!7q) zPu_J%U96|QOaCKz_GAzgOh=S+FMB+pZ*d0gX}%LQ^a?x*RJTZ)eI`tdtaWRo58P_u zXS4e){V+-Qap;>$&YSazne_KX%|&dZ?;;PFKI$pjRLxX+0T){W3OQo7CKE2{p3ZTp zYX$+7OL-^t9i7;;dOxn2MZmF$<;LI%hT>|xkQV@x^SE&VeCZjwK_kB}-eCJ%jOZPr zbi5|oKOdcq!a}{~pSmY~y^fXx{l&{#J~5XXxkSFttg~&r8RGc9g+30@Bo!u>Z2g7v zQcB2I3_Auuq=y4x#<@;kpC8(;381CVK&P;`2&6)VRTP7YJ|>p%69Dq-%ss&kID+@q3DtheZEf7{`InS+ z9kR*fJ6$Kzn8>k~A(GI}s;P1rfM4q_#dveu@cQrRVeVz~w#^AvT2u||>80SPsZ>`U z)${wjlJbQCx2?q#$VaxjIyr^Irr%i!O48@MKbmD$t4g@i_~f(DWl$gO6`;lb!4QRh z7T_r8mG9ut`d~Sh_%XMu`k|hf`?02iJrsDLk z8@#G9Y$lKoUQ7qZ_Xe*9TrQY*np@wv0*nfcp@(;0lxj}?{b{)rY%gIo6T{(m?~=UI zj*@+Y8;7K?vPZXf{BZQst}u%`icb28`plx~n}q8+tQ4P}_x9F*Cp*NqcE=wWHBsnh zwjMQM7R}`m6rHIU5PX|v(ZSo~I668&)oLyq0lDUX z?JsuZ1PpKIOIjcLC$(KhX};@_0_Gu9fkGeV0$Xy*?uKBnZz$J_mE zW6pM5EFrD&WE1kP53WAC4rSrv2X_5~nNd$!h$a8^>MyjkHJ;B~;3WUAWuZAv#R6xz zPcC>zZGSCcSMdRNUo~q3^UnF9+mH%jz^|tFr2YN-V zAm!Q7ofZi+8>p5YAfrpMh@>#+ci)=r)W(0(i^Z!4L4~!Atalk%5CR6WpN)Zb`X_qx z@J*I!bcxL`e1~6SssI|5VCkyG*AK;-(cpvefIa_>1ur0(lF#OIGxyS}(-{`UK=gu( zAz_ftdxWBhsvLfdCsQlgCmIuZB~}BgpTtUxRZUg>U;RVZniY6tCS?}fFVEH-pJH)8 z1u@bs{um8)|0vV>)50g^tK5PkzTYV!Cd_s|ER$S#+2*HI0zkw)jYoYN@kq6ALkdd) zr$nOA?SaLA^M$2y4?A;Aws~nSt#NcIhoi>5671VAqc1x6>$uq~hjpHQ>lpt{`*tPvP0PFO;2r0I$eslSj2DyY&qZ(qG8DF!>ZVXKQ~3n&ZM>|;uUf0Xw@3&g z5)ll$8GTV9`Xu#IdTZt;FO9+@@vyop=-Z#<2QT>%CbN+!$-jT~4t(n$a_7(u3n##P zl_>_h^bj856R<%hf(H%%9 z?SdCs?t^Kk6Q2;fCz`nV3Dd1!c0839MR8xW@$&&=bk?dVptx5qvqUmAC~9#=bI!az z%*4xRaQZQ)vN|?GYsl9-29mvARJB5s!wqq}`@6Jj@{a~TQ-kf)xAvnyu(RqBR!P>j zbQ5D+sa`;Jk2-k;K8*2ypE)!|izXq7v7n#rP#XDB;H)*M%rgPyx@*%7#_(3s5REEG ztsPXTz(Q7+fD^}@o!Pp7WNxF2FTz#_WmWTCO)$Zc z;gjy#{%9=ue58*E6AR$3hG~QigUZZgE?^yZp#+t-LliB12NO?*{t%(tzp8`mmsulc zx3;+zCti)dAwY+fg(#x2+D|Iu-Uh<>rD)HoWm-CV1bdYbHP!JhaHtaU5_WlChGVHTt*3mTN^(m$VHQiJeVOb z8zw==8mNb~#u;y`FTQuhb4Rq#?hHn+de=Z2>0-MEpucO!b7XuLH4eDHFCNG-9A0b$?-*v6%j_2 zEw$jhbtE#SD8tt(2*!K8T9iTHJ5Fog4R$kYrQ<_)plA~-H`2Y-4#<$Dc*lGb{vsst z3o8ZX|N6(q%jEO}oXyR}*5ks~45=Ul#ROdwvfIi>ndspsuv!GYS4rhx;QM7_YPbWy5N?FhSYi_KE0hl3yPLT z(X$|=jyxUIG^K>1YjPHQ(d*YYt!jXyw&tG{we<<>hKS14&9~(eF6zQsqdLn>9&UI3 z?%H0e>mi~i@!ictS%gf=EJXd6W`chvg~rhd+N#4%?d(6Qlx&R_kGJ325mpjX)P{i= zF^Zmi75{3&xYFTy^KxR0Q9$mJYl8QVSK{_=4oP&rP5fmJ_xum*6|YNXdF&Aoe)CuH zS#kPn{ZyWLjs;z@qqw`RJmx*!cmrrio8CF_JbwOd|008!SrrZ1L%CI_1L_XBUU1u% zhS9!cuV(@~@3V|HXUitoS>6ZIzDM70V)gXWwM_ZQXYWV%3IZy#kcn*XZ3==AF#(>j zf6Qc*p08BsKBkQw3C&kSy_N<{LS@%E4+>YCw%^{*U=8v6|BHG!4K-88ojs13Y)|it zj3Ukq?xO!;@Vxt)LteW|h+di3{qWmPyIshIWcsKQ^O0I0t(!QARfV0giCihMt?Io= zb}DuY(CxcDv)qPm?u@OW>bL!7%KpqjWT!tJRJj>*Wfw*gB;la7~5{2bv z{<^tPB47L&{)a9zb_y%Mf6N|6g7pC=UFBxyCp)0Z__JtcYs@;=Z;KyFQciciH{y2j z$>01m?)B@=eSA5PJjgu)kUR43t%Rd5G$=l~<)0!mPHBd|GeDF692fYkyn@aJDZ`|! z52IJWap(l$QICLo&bKvE?C=7||I`;gLab>X=ezwBx$X5j`s=nK^8WbrvFc~)^C5al zwus5kU5B@>9+L;O%M361RHj6y4({`glW?C_WzDt?gi_rmmJIs(s+mvxfTgL}Y+*Oh@Q1#EUU;!Y$?Y<|vtTXVK4 zIG8=0ios;C^S|30J(IJL#RI?XF~h9dbD22%LbH#B0n!tt%bFL1i*gf##EZgj_gl`A z=&gFHcobt9uxdB}-fl8CN|ocYk`fX~==WP1u{bSF#57jLT*yj<-eV0D|UR4(sJKz2At(Nn%5> zU@kZCmZRIv-J5G^591lJEm6}^!M`xlmWrJQ9&m{tZCGB@jOnv zw;t0g^SifDR}EuQ#R6kq?bY;{+*RT0tb+&_L*1dP5WY7PIe)s&hPnI<=0amf_8T0s zD`)|VIhmgGPFCjAfU*$DqsW+r!+no7I=$=<=h0sNB3GJ^RB7*P4AE11uJ+3}q~XNP zBV|v|H2}(dIY~0*m(#>sG@m@aifq^=fh?*bkz<5LPu})V1v&nSCm%TRd?ozW#_F@d znRf7NgHS2dKNfaN?48|8ai{8AGD}UaACuOA$o`V~5cv=;L+$$Hp#MoNeFYYdKb}87 z3kA+s;zGXRA@vtwO&Lvv-5X*42`aT8-rZ`Ks5(XQ9)8Y?J!5M5TehtLHrv&fIbTS< zP$oAL&Ct&y4&HA+139x+7%TedL>u)C)v+{FR4OqGZ74fkeBConFu8U1?3k)yn6RM- zDy)Zm9T#__m+wpb_kS$DI_g1$&{cqJ7y+Hg(J!)^pgd42Pa+|4)mhK0{*?p0vu#L* zP>OVK0!ZM?>Cmc(+5KUDO69*9&T*rLP;>#Ht4<20qkTJ3lAFR#J5JcgE!SxgNu}#rez}?8fhauTn6vCCe*pn$L<$*I{`-|H#V3Sn9tD*SlKG z!v|*kJk$NF#hJ?616>Ow?S;S3ucf;jng1-AfXIaknLvgk=F`&HZ@h|2Z9wBNPvh&> ztWORFp%@v5%PpBPdD1l>S@_;`;b;cOOKc=&%Ad{Gdy2W(osc^oZ^CfO z;@K2zZ*j$yxhhKXg^w97RoIlZYA56Tdo{t{CBtzkblGxgV{rmp%+-YX8q?3|yVV>a zCXQy&c7(#U_JsA!z0t`1R01$SWB@jxRg;4-c1-`AMVeBwvkMD!KXpJ?XwFSK_Z4C5%eRP^R@<5P9QV06&a?-c)auXoYDHZv%b z^pUeW!@Op5)MIO$@K-tUC`1>Ae`+-&(w7|R?tOiY$wF;|Hn)>t0z~ujr;={l(OYkI z)c8vHyI(7qmN$M>;~XX!yZMl6N{*a|1?Bz=@B3mTZkQl&oQ#fq#0Q~Yuei49R>hn* zu5PW2t#TFK1H_b)XYB9zWt)Co<4mzC4{P66b*UBXmmU(7Ppi#ZHAdBaHS@~OuyT_Q z+O0Imz#UX2K0>+zADUhjpX^Y%^y4Q}F!`kP@d)$3Meb+pYV` zvrbl)GvKYETK1ETyU9nnH>7;pOYl0ociZyk`>f3IvomcrOj7!KQs?bsqfwO zFGh}Cxup4r-h!5!Z#*`q*`Pt!U49wQmle##_t1*^{QnDZIgiG~2YKh#-zMnIylN;{w4mt5AYu?Hg2jKgvG0b3>9$a;pj2pw9P)k#6$=a zKV05B4`RzfqvgUTh{02OS|Rw^!R%NDXdc>+U6a>H^S}yPV#lgQEDquWdXIfRxZbV! z^sN;_%o8Dgd2MeCVQhS?2^JkeReKRi5Qea^T7a_VCYKY|kAEcz&Jdge^BsGm}i?Yg0;>4Qr19!^SV~+kaR&-n+HO zVJZ;YVdllIpKIb8fa@T=vFlexa-0PbpiMjPAU8YU@PDfLKl{!b)Ay6{1H_{FkM@%# zI)=i5s#@|ylM)o4e6ety5MB#nRea^46`-947DMq^Ppe>!(v!jA#RGoq13RK0^43w8 z`hsKGVZ`UY;MnG3aPm`IfP~l#A~SdlWix|y{Onz63(=x#n6@72wZ{p!Aw0jX-&#P{ z?e#<6`G0{g7(CbK1n)xdqpirbm%KcP4`J#2^3#j)I=>HNUY57Wf&qD@JXgN4FZ`ws z*MK0@;S>@d*mWRmp7?%gm9+m5Ejq!mE*EMi({l(P zy{QQsiciO+dWEq3LHok<$6&++W5YBr@}*OMG3-2bv`cL!3~A5|}u3X!6MI@;>EfzhM{)A7hd@IS=_M@d|x^Tz}`! zRKXMskpLl3h&a}PeQN9qEDx6N+~v#v8KvLDV`;L z08kQ|%`f?dLtq?7*Fjjs$MbLmV1FHcsu2{PxHx?x4*HZHHXuI4gp&}p4`S_DAsrz; zjb+N=M_k2EzY(nqlVUl560c0qK800W70w>>^8aa(88voFm*ArOpEZ}>aTQoG9(v#XM1A3ehlq*_bHI)3aUObCS;LVun~Y~+s| z(8JCXfE6M6jf;s-1sFRw!%v9Ky4d4M;@WdtY&Dx#^`tmE2ivsizd27w3{o%VZ0Z`#(FVeJWxxU;zs+lbYPbO(Y>6k&-&T>d=y9~&O& z|47-2Pz4ub<99do@$|>bjo*GWt%ijaP$(wC5+?*d8S>ub%WJg`(-Rm_}MVTk-w0oiiuEu)|%P42q-435W>VP9)u!P z)ols=8ctkx&9olpqPW0ngbDa$vt%Be{U>k!Pxs-4$GPs~es>+0@917zC;Lx6yG~91 z;}^dDGxh z6<}Wct-dN-_E311YZfYh{IQ-wuSQs2Lg!=KlAhqS{CG0)@8PrNcJ?E_FI{p`F7k}3I|9?nc{IBz|R(u;*VPk&6 zk7Vb~U&|wJT2ZZw7hzoD#oAI9J9ZRzFM^r5+2B2ynScDVyAK|F7Y&+ z(#P~_V^quddVl94LMTGw+f2%%+Kp%D!&%gMvB!=bNBI!uL99Ip;b1cHYl%?|(TTgmKtj(0s6Q>w&O}pRs_z zLqW2FvCNxa3&1h#19`C4&<^2%eGabti=kOOx(@y8s2caOf*ga679WAMR&eM` z$%{;Vwtp6*H9sI&G9%1< zWjZM15g=k@NT`+oc~nL`J=Tk%r!7iIgRZJSJfEL-aXYQ0T4Xy+E0E+v`iOEn}_#GM~|+Y4ow-Cj_O>;Ku&I8Z=06t)$@EK{I+{WdKY~v$LN5D83CC zK7S%%-WVU<(cCf-^RqD1!8(!WUk_M6o*`C)Ows&3ZXiS!-YoVS5g)?j&M$eTSn*K^ zp{piNnh$aii;oMD_!z(2^0e#ScAKtUAwH4!byq-G7z`%l;)J%@7mANOz+b|fU$B1U z367^z%tq&(oS0)DVHBRYjY9E}7-r;#Uw_gh9Da7TE{P8>2m#>8XsS)Mf zwsj3$yFMK}p#S#X!AkAg`YB!3As}uZ#42(0ws}qW_GX;(xJ@zdo=YgEk%Ki+%MAKlTwOhW(-#)`k>!yjgiX(>~`}Evjal9!&e1Arru7c-|=A?pk{MZ)?IGkTb;VG=WgJdPF za0F@B1uY25B(N4#Vi9&*X<*s);CtQI?@ve_aGcR+%&NE!{45BIFLr^dL4U>5=Z1mx zFs=x16h1|wYmy7U1ZLyNDA;P4^B;ZDp=rJV6HM`oA?rpw<)H;X_Q^^LFF*<~Z|uir zp0J7HlVTbsvHmt*EG}{MIWmb*ZKoK-d-kqLrL9V;-9TX)LhRjd;cHu*S59ByvZxBC z>QxmyKjeKd9c=zpOFu|Z6o2xFzLoEc;Kx3&;-l8V@d2UOOqnnZDnC$-C1l;gIC7vc zqS5v1ZIoI--HG-jA?%~d?!EIqep~-*0pTZQW7se@F5+Y0b+>~rDEXA(obuUL z$8DOe6AEXCUV!6Dgt0usuUbtLw(nwuVH&z`+{ z&oDXm_ix>28*ZCBhJOX2wbj#x?blnYq9+(T2G^x|Z5oFI`y5y=s9W@|2rncFgm`?f z9tC>A>fPF}{98D$#9_w)DGSfgrO$EsGDSu5S{a{qQN)inGD(sI_ zvUmLTyKmqd^D(e6M?O;icXiMJwnP|C53&sJ)GD2GD30$qF%^*nn8!Z1Jm9BNNqnHV z5E}%ySn&xv1xuf#K!Bl`WABV0993g_#0IwQr&j5_mX$b{r z$0Mx>xgKr+34ai5T*V_!wem;Aple74XhDE7(;?hBYj!VZZcKpH2nD$8&p*2J_V1Kh z!1L}(+6du;{h0Wm^Y`TsSVA}-FvQN~ljtp2!VrWTqT^TrfO02Q(?SVU-rFRvz|$RDh9)m;kM4A%A8)LE;nkT0~*vwzQVs2#33$? zVIr$h?0*kb6rH=aQ@LSW6s3D@egC{Q(|8UjoNz+^Af@FW|L~9h!eb#gx6|8i`;Dj8 zThA};_W6D-8*lnfuF&tj4sOVJf45dkUoMDhj}C1cw)xw!h3EcxjXwtKEn6?|9=zoA z^q6~{acO~V_8ofGsg5{BZ<~LXuuyWt?7z((?tiZ5{6DYTFoiB#9P4J!oaCCdXyevz zGAR}&q|kMfc5bm2NwemNv!=NBM{n+?PnqRkR`tY*b*$zLPH< zc{gN<#XC+>I@4WL)>Lxt; zsC)dazj?>H-B%K-Jr-8Ziw&Vke4uUi5vE8*8tz{8Yb+tF{yJ*73Ld<<{BKDhAtE+J zho8j9I>Ic8&+WgZf7v}eZsD{&dis4h)_?Kyd&(3_abtM#S=zQLH~4eF%9U1~7ugLL z6+4wh@h!P*^HhAI6qYnKATGp*&`P57qGTJ`FG^yq$VV$amWc0@i_UX6*6ltC6dGaa zB)SlU2csJ=?p-NdMMg?|qV?BbyQv+@PeWM8PXr?L;wn6;)Y2h7M5t{z_M%cxb`w8?$6GqY zh6qa*&Wlc>l!a87JS40shxPTs6MwAZ2UdJQN*btMOBT+H?(Oe?N=3)ISY+8Yc_K`) z;%mRqk={WlLSe;+r3(cI_*tuHMc8j_@m%GCo-L?^MG zu*Mo*a4gwg?3Y=7AAZaJHrM;*fpufK>`nK(E@zbm$U1(YFe2^JAhc^bF79qPc&vNN zd_W4(4KLm(uNJR+ySu{LGXvX0Qcyb{@wskeYs#k2z@BxBLM=&T5>5D}=t=2=0Q_2Wb@IxVfA z1>s@Qux#+dt&5~$vrL#aC*yzEmftj}N`_QyMUFfvd2Wp0+J7#yloum@6Ti!UKq1kw zRQpe;9caV&9YsbkA>}_4>+$Pr~+Y%c7J#H?#yOOqmg!yOl_T|Y(i)J;g%s`m+ z@WbxO6Zv#d7KsmW-Mw>Bc*)=UI@he&HeCB_-${YHS17LIitR<(ghjlF{8|Z#4zWFU z_Ym*L_Fji3|9^}bF7JBj9q%rCc(}K465bg1jO*-@sZ}fyp&+c{g!F8g+NZl z|DmY}S;sF1LON*EpBhx!xj1{tuU?f0^Tc+w<#;2obNC(zuCx;?5_%;Mz|e z;x;b4TH53MI)3$1tqKl7fDNOzFSoB^)-4oVo&{WQe1D&`%?CFga-esDeT2zlRLc!q zLqmgG@6*b`Wba?Bt|zaWJXVU~#YcOvD7>^?Sn8xyEQ^#xn1a=NacDA7e$QEldNKCe zHhJ_XF=}aq%Q6))mJYEYIz$L8`?py>6=#V|ydn(@vsf!w4~XxhSI4Kvk-%nr+tRgM zE)gKskAHRiEYEuGMLpe^;P4BFXFyiX3d@QRVFKc0ov_3ylBQWu6(hoauO{bUfZ98H z%71K6D6Zp*9hQ>#{4ua*wCPxJg_j81117zJA~x-pWa6Z+-fu zcTh`wAn{3v3_#^;dVIV@2p14-4a?lYZ*f- zJc~Wz%-w`AORHHBA)-w1gVBd}?^fDOkodOlo*nVOdDQ6eaa`faC!cg}#=q*8UvddI zs(Dw}eOCG394Alz(M@W%iQ9Q+-+xPsr>A&~Ra<1+IAdqd$P1f6!zu`I_D^%%60IxS zxCnCmC-1o-*PdVPn1$YJuj1BQxou`F5U_momg#&Hsd|i}=-kYYUQNaK`!BN`VqC0K zw?c7=S1i7N3`cwLm_F?bZI*13wg*AtGnOxUj9X4T#I;$vW!m0DkcjV)D}Vhw$ci{T ziYu);9?6~e^EfZQP;m0I?LSBY_1~nh@!=0;s$MK1+ge(`5$E?P-rlc#vslqh`okpC<2P^tI&!hx;yQ*%rPPOcN$HBg$MfCCY z99ZjjTzRu=*JbUrDi%LZoqtqQd;^c_>+Tsk!nImrF)u>P+n-N#(|-Kf?bl}uchX?r zCaQKUR}z~KqjdyX6eeDIaZ?d)zr~7$l@}|xX$v)RGiLtko*D5?E%6C2LQ9_bzzPr$ zVKuDypaJo@6&T!H!fnz2-n0tN6XR<`PEI^06sxg_2>Fo^Ew}#XRev{pcslG*5syyB zs8Qu-jxoA-PlkcOR>j?yUZ&thwn9;4#Wo()T1S}0symvgJ05dxCR1w&4+=M(e2`!H zY4)5{gcihi#2)3jiiiFEb{5g&BDjSXZSE}}XkCH~xpd!E3ZrKhd%i`XwQRA7U+%MZ z3pe!3Ij&oar0vJL{C}yE34i}npZViGeaXp%YaV~4X!VvUTDgC)IQ=D5Wd4DRf?qTIO|1IxaTKe-9 z!kO^yr3W42LwJifYnm=^csTn;A>v~nC>)lM>J}t62*oEtL9*PT(|4(`?t5>h+kA!O zPr4CUpH5A^pG3(LLH>I}IsDPv?v)Dd)LR$_OhkC>uA6#4_TitbFXMJEb)wW+x$^zW zIgX+}0cOcnbALcBivWc~4^7^ny7^{5d{9pu*KM`#Rnsu~(@~k@tg(roUHHd2$GBx%E#;<6`@x-XLHVEN^B_DB=a^fQUOqxY zV2Ds+(|V&Dhxv1l+h>ac0-gHi-E4Y4o2XQP=igU;Vf@^E;(roTLxl4!Kx_G8A`JbE z2)(#0p}=bGM}S~N==yIR|J(UnpZ9+|AG;1OzJF2gmV56p+O}!!Zo2J3R@3ua@vXXQ zWe2WVvu1Ag?Bo&7;)^d{O@M``o_Hd8reCB@n{qpTr(Jeo5skyojy*SVeRoS9Iv~V( z&pwx||1#GtyJ!AAITE1qbh(y8k5zOdvG79g5HHE7E|Vux_Ab5w6K!7k=`OSxJNkQ@;Jy zA;v8?-pGA5i(!lw6|N-AG`~s|4m)_SRD69pt(3a%OSVeaVdA8z4xtvw90TF4y>>EK zjo{=gh>s^UC6QL70r3IC!y!b8v9vFY<9|6}%?_?b^Jeaet8exWfi1kKEaO6_#z4IxE6b z_}B#%V$)koe$fnoP;_i}>(br3P<(bfgen$`clDFYxJz#C>CPBfyt9v;>;8IB$A7#k zx&f;v5duQotV8@o{Rm!s2n!I}l<7Zu2g@$GgkOS0h){`BB+ZX&FD%zISUWjwTQLU0 ztliUpeGvzRL={9b;Z$9_yD=gN;TQ@}b@0Z_kk3alxzhwLA=SKSdaNm#@ zywyZdhz_weZqmX#xUAa&?wr5h=YLL}II(ca_4gI7T6rg5B`?0~ncfxgY48^CkV|iM zR~@sr7nsC%@TIqTCs;q{wkPYdgy)w!AC{P3NGQUPJn`+a&xY>Hk0v*))L}Wd&w(A? z&bzgB-%T#}&X!qzA=kXv1Kenf+{a)U5nge?f$lGx?CxDXsC_4aO@8-b?|&r1_g=cy zJGK=@af&pk`n~-0@;fyW*=a`};vM@gIc0!fKlZ@nixP0t4L6k5%9hWfZR;Pih7*3C z>&5l$iYvPZ?z_-+E?PxIrz)52TW&txi?u`pRd5JmJnq2l-FM$ka*Pu+U#^W`U#7Uk zD*p8N#qP+#N4f(iCUZ(v1%G=H3dDBX=?8l!w2cUBac-&YXNmb)Bs_@_%O_a3;MD@xl@fn&~2nm)3GSUtpc+4Z-$Yk%&z*PVK4@*T&v z<}cCUup^G}OIbeJdU6))$5JBPXUE=dv)RcMFvNw(J{dF4b?MyRi|(+)cXhk&vAN&I zA8`_gxJBpl9jiw*jPMTFrTkL<5>Je93*B_T7at7T%l_WlEWdpDx$or3 zlf57NY?W-m;z@)8;f)zH#=ZC6d)|pagkh5+gRPP+@~0}LqkjRk>mGV;y!+engIu@G z4oyXeV|%B4&hYzH{T4~f63d6k;6ICYb>FX6o;G*D^ucc5Ipue&?`vpqm$&s#in4!J z_-C;o77!4YwR|CAdk|#RB*Y6ZKGA3H#0iO|u@tM|)LI(6^`nCU&zy0(7tGw>3a)A6 zBxt==F<{{k8-K?Th>`h>APZ=!V2|2)5}~TydQla-Qpb*|vovYa#QHU0Ic@blyM0Hu z*3|KC&u!ZIj*i-&fDq{bkv{f=Iw3_G7*@dwV(DO+Vl#2EWy)3lNMopjQ!-iEb*g_Ypt+JBq zymBY+>Y+pX_NfC2bJLABO8qRCZ_wGd`>2MogjlT!-V`?QJjg0;LVO(_dZ_U^y~{UcY(prR9^&PE=pqT3a9 zpg%sVS_NCdu|8qSw7NPWhwWINO)Fx4F`oa=kW_@Lb?)LF;Kx3{5uob#$RiI-g$AtK z?SGsq*mM5o#)>AEE$fF2-_~bly|_syn*NuuO(xERA0ij_pJYzFQ;ZKAeK+o zFSLTk{Ov%ua#4INMXA@UH2BT{9gDY1&(L?-JsGpJH$40Pc~|-b!VlXJ2N7WfAN(?D zGOV!dlJ29I9`xd)x>XyH^$)+Pxa^F_b$|a(<^f1(EVT|2C+)vGN^L-&7(MJCH7c<# z=Uku625C`Blz8f`@*KC|Nl1DOQ1!FZkmUV|r%K|p?V?)GG`HSt$4ph3CqAKeAQlcG z+D-=|+;&snTdX)nvHe#FL{+%u*kj%LtCYVo0Eq99Yy8_c~7a`CqE?PZS^Wu98lB}k95n5v6E0KBr%YZZj#NzF^YR6Q3Y%jme z;;#ETU42-pV4e%}R72G-)~_T$&Qln4aq>=x7;t9AY-q>`ifu$_vEq~ED}QafGY{Rb zFmdWMhmeZmD@c5H30nXAT|<35#MicUD|hkD_b5Gu#vAo@4K0gSt|UT4ry&?`9h)xh z<~{41Ns5ys3IR!c&6_vR6nx06S+ml}P>fqOd@VRH&w+1SKAA=(u5P(`X)WQn8UHS= zB^*3?v9vun?3Eh|*5Vy{;D6cf<~x!PQPM7yMZ^-?aNRoYm0rusmtIbk7Gk>5|aVs&lv!RJBg=|(ETy;e^Kon`&#d`NgD8j1q+aT))c zIC)Ci_IvGSG0cF#1=)Ep(wt>j7eUgMG>ZX*HCQRRS0OUJ>qlX-hVjF zxRkxlEWJd$fXp+x3q_a*;uC-W=igFs!MSH%opv*{n!SS-iQi06eBAj@Ss zu9_<})}fjx$Gtn!3keVvB7~UrgYRbkHx(bt%SZq2MTNLP>vjpDpO*G6{xd+#98*h6 z%rB(kW(cS!ek@Eq=N5Tsn4kDz*!emCf>P}qway>A=GZla%zy7SRiqZDkG85F@{Dr{-{_5uaUT_O9)ZmwkE!)l=a`r&>DSY9U3r})C zPZ^(vVR_V`f3dIPd_@;M&u+Wz<{o|YQP$J_;V_IB5dvaeOMY0g&3@LsPrz@#6-%lJ z;#1sp)``!n3y6vj(aFIv&3w9}=MEr@Ts;)tdE<#(@qe+@e!}_~l@v<*eK>_jd{e&r z&Myh$1LR}Vo#&z~Qfw9=!Xg!67H!(pA;Kcj_*Q%@5gLLk;?EfqAIk_{WGq96{|`U> z;LLuHRjL=?Vv8*%>*d9!Z3Ol6&p&$$SE3>=0&Lv4v5zBKv`8Lt0X^YT{7hVlPeQZ& zY=SOUN`H665_&7wvSmv*W5x`({`%!F=_@U~dy-=Xz4&6H%UiD5z1)i|;l+3JZO?hJ zExXJz?$Cp`iN-Hk(l8BB`26$F-4aX0pB0N`ipMTeaScPCe%j6W@kjS-v29wigefn- z_@et|&K&P@EMej5qxY^57?u!X;ydm-|7T~}c@?@R}3wZ(rrRT~k zvqJzS3Y)E#eTA|X|M}EEMoQ0(_z>6aca;Tr(Ei&*#hW8SFFx^Sh;WCTf&ZMiP$9xa zT7RwJclQ!5z>-xJ zAV`GsBS0%YArbzG0))bp*RyZ2<+1EW{?*D%`v0hat@y;!!GERvwnTOsRzyezS-NT> ztR}#|efzrQzIokETWM2YmaL0!SKP>#Er0&^-yeOiIU_&`7V&`uIB3uy7HQl}8&Kjy zWVl5aS=c+f&Hk9cKzA+~+Go}BGgr1ZU9Rd=zY1dFs|Q~3oHyo`(w1{K+;D@N@lJi> zg4P>u<95FGucfWZ?FbDB3b*!FySnAO_3+DG{&sxE_3nG9cY*jSKzO*8Ef&wX#(zIf z@vauM_gWUqA4XooQA?DD~Ypbo? z8r{0N^^0j>)ZyLI(!ztC!l`dO=Z2m3P-&}jyIx`M~r191*6R(0`+oYcV%#WMY0HSUox&xPA87$IV`DP492lLlN4GD182; z@5a|;<((_Wn>1uo7eRZ_**0KU^~&l=e5Y@@eY6dD_~BLlBHthp1nt4X3wK`U*6f^E z(7RtLS3l5i(n)4;K6bz(#yyq1U6&VFR26e z5vGV$zwZH4E#v3~frJ=y@bSkVv+&2k`Ym3p+AXmvH_!SpK>hH;4|@^j2@%UD7wHW* zVAUpEATjC1AV^@)5hTh|+fmr#coAU%n=RVZt=qM8MtoDJ z|LCsT{jV|c34cG7bIFWf-5z_CKZIi*|9OELqSsKX3O%VZG%wJ6u%_ zAi7BW%rMN#E3fPdC2MCzxYQCY>Jnd(^mwwe2+)X5q~}LaW_ZONx#5bg$wJvti@Cr5 z*IoZck}j%R#CZ4JV4_f%u?m{MZt48e-}92hS5B;?saL1In?d zA*H1|qhxW!C71Z`Ay$j;MT7W+L?}w)gIL-vJ{`6#h~=}#E>e+yrKOvE-%h2qILq(z zRB6oh(R1=wrhL_{ke^fZe!{dpabEqi4@cooJ^4`9Uu)dU2Ai2iW=zCDt6KVmdn zr1C#_jfhh5Nx(6}W7zoNlZ?_}af-EE5fQn(Cn4A0dwoT`Y9iz&grAEVlL*DJt9Nya z6@PcL@3vo}B22}ncBa~bR(uf=rs5N`=BD>UhUQJOr!0v`1Jf0px<$4vniv1iCZ76y z|Nkqhou7SwG<~&>|G(t_$#Yxs&Xt>nY)dlz;D_UU&opxky^}FNm=}kH7a6_3z4!Lt zrm1(In4dI+@e7-**3K=r^pft;k^T$%8G?P$bN>kwQoYD%cT(L?OkO(oMEo;pNPkZt z@zKV}gEk1{h|r5~`9&6SlZ##cO@1$b^LUX)Nzma9i&Yb0q2K1KyG4rK|6hw;{@60o zd5Gby-G(cbyZ_CbCi4wn{Afaj2>&br-g@~KZcg*Ptk6;(c;Ep)9F!-}u>D+(SO*S~ z0YZbHe=g_!PjiyCcoh-m&IK%q(0@-(tuZICu;C8Nx;a1p=9(_n*iHR7dCQMU5n^hw zeHs%WRd7apzx|%?s)@52zy3Fg*t3xP6r!g1SoZI=h7apw#EBN>tU1XL%vN2K`E3@x zhx-Tc;_H9v2rn>%hTxuk_Sw`mYLraMWEnC);>)4o)lcJ3r(p4>3%g(D&VO@XmA+pX zp#dRTVX;JT2(J$Dc_zHq*nRWf?|wNyc=aMciBHTl#oWSZc8TKg=hp&)tl*Wi{A7cQ zxQGjpoqNSqC9g6Y?O6UEUTI)Cj1S)OwOy*YoA|@5j0FU&;4@#$idwHy`!D4`cUAvR zaxf>*=O1}uEuDSTX5WI_bAQi0S)}JL3NUj+4ZgAb!Jv?%4nHDy2uxNG5S?Y}kIB~- z-uZ`Br4&8FijL_y|LTaI7@G&GIEBJ2mb+3wZSKg9E5Z`Vu4ojUCa1<1uG>C&KN3hSCk`L4SOE?X{P?`^w~L z67Y29@tZ4etPsS9$Z*1LR}-fg`N=rfZoMr_Th2ZE?ia56R<-8_{_@K&?&g<1a08!w z!)?CfU);vq@9Mg*zn*uj%a3IqUw-+e+qtWs;NW3fe;ct*^7-Kk5mX3J;%mF{Hg3l$ zN4f2r9^wvsri1Chd>^O#C(DHfx(?#DMMn--hL04MKbK%{SeuEfXseZs)+A-9Yir*J6Hei2_S?oBfcC`%S%L>LsNINfP z;rv|0VjHF&RPFxSH2VcCiBE08msa&7W`J_#n=u7_d6hPflpDo;q&wq90` ziSV9_@Ae|J0)N8dX&dnorW#9p-`wr6R~Pr=*zzC$?6cMSZru07-P|u5xpg|`ztJf1 zv4ohAYSF1vC->6V<#xW^&J$s-0Dt;mq#N1#UN>@y1*`UsU96Gox$`*JbK7wxpM*RS z(*6U9P|FGLjc~W$QT|qSEoAK^IxR&^goy9*Tg%_BVSf_pEd!J1w-9ds5o(DL0bO!J z^3U-w{j;~dfNF_PAVP#JSjVsR5=qUFCqioh-yQaVJL=SOlOx<-P+}siY5^_vRKqi> zTlth&dk_mK7PPHrt6B)fCnQ3#)W!AxC-9#EpT@AC%K%lc2yO9}$t)rv@l~mUJrW** z6LwwIaDPmMi+B9qwO)O;yXPO-4;%g2Ai{aS{Z`tlLx3~q%=1oE8HjGUdrrZNFi(i| zgyn+Xa06p}u`h%Q_N`p`Mw+F89`2lZzk3&hp0M1YXUcz@$~DD?V-{`JEOjFCR$K-w zTrCGZdh}qC9_RHJr=|k?X~qv;gjR^`BTSLpbAPY$+p-z!XOSgbqx~}8h5Yo@(&_k} zShz`3?=0(X=U>nY)6nqMS6}(TW?YE;W*A1DkQU7=57eTYf7c>614pOyI{FA=H2wtr~Z(zTzH)cNC@F5yPZNWN56A{IZ5iwG?x z@r8uPNaG_wga?Q(5T2--hA}TZ>ROg=!WpxEcAb0sPfCcI*Uy-sC3rfL#z%mqvAvYf zgBze^`9pHAf5TNPXXm^zHao+oh>h>Z0ZX&gJ&4d!5?@F(4KV=*r17-k1-SFb@_&mb zfbih*i_UOA{yf($u~-wo%y}f{rxQ`Vs*N{#kz`1s`=%?^ieI>`P4fNXtIjQ2s#P+x zX5GG@4RFV2{?O66gD3gUO`3iNvU`k~>EmzkuNJA*Lx^wwb!I01$j&XIX_zo!f?Kqx z+h2-NSx)=tO~0d6*9}rXmMg5_2Y+ZQu0M?b!oL$s*n9IH)#Cfi;)%#Qic!kG9( zNrZYt=LHB7A%x-s1PDfi72?qnLcf@Z{y_Z9M2u3DT`HBNvSk~S6r~WMD0?9^LY53;i^{%d9c8QRd%}z@OO_#F zEMXW+8D9)`NNnfK z??OtdMzIbz5~RA?8wER+!{oW>c~JNC#A$j!^w{5&dyLwR>FIjB-|=lbmnOEMiVC5cfMul{_?oIl#V5F|x?w2E*e)zNm* z+iNv6^)wM4iND0z1~j~Ey9}NaR6yZ=Z*96MUfeQ=l7e=PRZ?!&+mJP*rJl{IAV%op z$`$y?NaPouX)9Z0uKx7T3(GO-^~>+&;{ABxYec)5r9q>mD4+G(|FlKb$T&qsvhNHF z*}CiKF8^%a3m`V>+yT{oYti2v8;l?{C(p z7f?ns-qAs1bH>an7EwN2l^@@?Tk_7hl61IBP9!ELnCuIV-DtsTbw@_}y?1^=Jb<JQnvQ{jDcia zv-csM=A&Q3Xapl&^c`zky3NOu_lg(u<PQ^*I7Ptkmkjs2mw4 z{!awu)Lkh6&Eo0ZA#k#=QgAzBds*#gqE18=U&H%ytolcShjb2!sl4|^68dx!RivZc z%uUoe0GdWep&3kLH-cO650soYws{~SjiHH9r53JqyABffp^a?n|^5n2e~#orP(if#e1wN$epL40|20n10bENt|F`AnI0=PcjRsCaK&5x6D! zOx1X-x43`cP}AE63|(Okuf44BX8A+0!o)+5d?n5IV7WBUxy~f*NAXX-jT%-b&HsTz zA23s!J#r@Q&*58qE;a>Yr?c%ul4O?Fyn(KVGbDcCey&c>KT+4I2{1KnE}0uv53EhU zL6B~fWZ?1E{#&_b%~foZ@4mq-zPT>_mHs#f$2$HUl9o#V$R)OHrW^Oh+V#a4mNpN{ zzB0vHYRGQl#fp&_iXdwkM}b&mscQhJvcbiTFw)UCY9^rMyZvB+iBJ3k+Zp?q#{K<= zw}bBwbgC|C-o3Ow@V13%^YLbnr--*@VcgS=S&izURVBrzZ{F>Yi_-U1>$T>BJ>V!y zg0wst5y_oV_xCr}^1abD#ra+P)wK3!l1>D$Q$Bona$ftuxq#L5f#Jhg7b{8Wz|SX@ zKrJ036s)E~8(OKi>$xTsB7b245>JfVT}UvPX|_xQzCF2Y`^T+-4kKe@Zx5H9+zQ6v z>4jvz7SfZZ(1*1MY-E&kTz*=EYWZrElP+%bFai%%~W04Ub=}`nB%F3A|`fi+s)hLe9B+22|3>b+?L5b>lgWY z-kV&6cUPRx-3?w~+E5r4{D?tXrhjIW0to2s{f4YDXv-@jgK-5hb}KHO5PTZG_Tj{f z>{&6hj@@>*J;ix%HkUtj>we&{$W%P}2UYg|^4=VWCtqHs8su=`+FrxygWtUNud%e2 z;Jw#}zRnA6BKSb)@2h7@2XuZ+GR+XL(rfNoo(tlQ4*I0#z0#>np>C76VONh7nK*eoi)BIHUC6*mZfnz+>#sXDmqjB3@>Oy z2$b?KV<#<eW38``rc5c2^d2lnM^TV zXl)eN_;pl38M}>I|I*7X=*onZZHfTvGDW};LlT^+E%1IiBYbt!znC0?JS$zKwNcCh{WKj!~L_wBT4{>_OV zObtkj4c@U0PpjFOYV7L7#ylB8p0^E`^e-Q7r2V8z280c0rt>cR+Jxn2663Nf-i1SF z_iVlweOcBW(xsaqHNrXj-TmO#9bmMnpfSHbl!LclRf~w zv|4coZLe-u3<82;$oNl=^lhn48OxA2Xt#i}Y`8u9uDXMDh-_9G@F;4RRyAB=X zZF@BEa76-TU|V7sIk+^ody2KEhT#A)@#E-cXI^oHG>2WP{<7qHn7@ZZ?%;yH?Hg)x z!LS7)K)xW^tLw11j!F{F<%>vvX;`>xIP zsXh(MC65i}-mKfn+ke_y%-X;wc+~Br&7@_iCj7SV#4qQ7jo6I@wSzvyb_M<0v3S_= zX2<1C8Zx>CvwOE-F7g{Vq6lQ!1};btQ=e^V&@uAxtXJ@=jk=gIPQ>6 zgGuy;A5z+^eMCa~vE)4G<3n(V*+9lZZi+WyntPYDCZYGs(gar5yil{9^^;F_AoSft z>Q%AV=rGRGxzM}(tsQ}?w3C4r57-k8AXD|W)bagTOa1+FxiN%dPOd*s2q_b<%44TA zs@sdijs7|dKfjg8-H-dxOSc%txB@{+42ap{*Q%Us8zy5|0aVkK`Z)a+wd+?fQ5b4M&s2O4bULG%utIjc&q7E$DOVwzlk}Cm+i` zQHM4r_zX(k)2PY6z3jeA-_RSYChs|(f!IkCLPFOc`aaVSTs`NYphq_Ep-)~J+L@h` z%uA)b+KunMz7K(gj>U7pc&qj_)$e$Z?+7N;jc%&?=G|AfbM7ZXMH6X>THnXJesWk2 zBe5nCX;o=z;~G+ny%$4fSdO(R{7rS}hiZ@nT*H`%2a$LqWFBN6w0+EEnGW6P!VdI# z11zWuFl~anO>Pas;O>oH&6n50Ls*o`93k^4DOXknf;wVcP|aobT|CJkwHS z&HySBsK>10=E=-zkoIlT1RQUj0>@ydYmgCMm*QtVfIUK@pF>)$#JT=yG? z_M-^zc~4t)*MKr{&-?7VQtmpDYmYP1n>okHR_b%@ETtfZyHk)Ma8#4`mu_iM9rfYX z`s*`rL<7RitJSBx+R*^_sc7*F{JHu(j#blK)t7K;Y%>mJr9S_GW!P0di@4+)3+!|x z{8AbLevVd%Q1t~3^l~uvgXWk0uYJT8m-@-;=>y`Nsrs0x8*>eoB0LA2eea?aK@ zJ4UZ_w5$8<&RW^V!~qdJ(VH{{?w_t9AnNwi9)w7U@%J8zqMCScC@y$=p^v-<{S!4I zz{(IyV?U1X)QDJ z?xUVr3kuK-SrUF+?vFK#g>*+tL=^6TQ5bp)}MYG5eKdNYlsdW-3 z!R^#NI*@!+qq>eOp?=jRP-Yjnqp<`C4Z_2(<2To7YLt8f=Rgh3W)s3)aHZJvby~u) zlGqlz^+%?qk$*d;YYLp$tG!C%)(_hzM)Vywk^94XkFUXEpFC`O^OjksjLHRC`}-z}I!l;#mU0_6%HT(_ zGezg!_GZAliR>iNhfnzv)@O~9XEsYR;geA!8>_^_nzl|QFVL>DS=5hzcl@3c?=9Po zG)I=aCpAHC!a1DkA{=MfBjkIGp>M)I9njxp+)$V1x)Es|LA1QP%g$MbuRHN~qtqs| z>=fHikALURk&GacQT|Qw4z;x#V5=eUVz?f*iSeguV6Nq{9($%}F?2}Zcxd?t{)@fFNR5c9AWtFd^`8@o);--`lWlQfg=mulja~-M$wXBtCdoe+&w*S(ATV zHOz0Rb_vZ#FO3DED5$=XI-!Y%FWIWj_@fzYmR{sF_UpK`{Qj*N0@P9YPHt zJ=o9LUlg9_OULi_8oEc=fNBsuu2u2Im$tSd-laTm+in~LYn{l#jB%+&Mlh#GYPlY- z`GgAlgcO%Owrpzc0@6|c?RZmHePgDn)K7;yARJQaD%(i+RlRoRW-sv6f-mnaI~lnX z@Ol8PRG8F$WY4nKTFl~3a-8#(EJK5{a7ZnN^+Q23G7R0)ls)8!B;K0(v(hVK_)7!z zRFPorPHRdY*PV@C;4ZD-?H_peAoJnXV0);g;F}iOhh-Ajbz4%w!bm)y8% zJcq$6d`9!Q$iJrZ7d|$Ug5fvGZx+rvIqn)QtS#{FiQ}y{@Ohkk4 z3hOo{>JeBSL2W%-*A~bjPL?@+$?~1>x2hvDy{ovMo(wOKYg*g+1j>i9h{DnPaYG^4 zE^TdXg=8<{*3wd%Org;>~pq7OTAz_2LJ%63b_?h)d&TZQ?ShsRR~kt&b_MDnduj!OB8m~<5%O>tTJ zXouNsVd-DXj=-RmxO_XQt!I@B z2dp5l%gy}XZmS#^3;*$?ZmF!35+gcb$5I98)NRJGGwc3pvEt)3rTBp zyxU*iNp565`d>=L?P|!b|81eoi|n?3q|?&%hu{__z(sU8(l4k`^}wsz1k{Hoy)8kx z47FAujkS_ps;NCFL|QyphSFlhBhT$C7R10yF;{vvOxXi|`Gv5pW2ae$^l7P7#H(?` zeMtl$shxk9oHP8{|8%DA_`h5YE?1lKd&54Iv+72|EN0!H%7=!jv})*OVu$6}-SX!h zL}y+Uot({?p0DMiTbxEkYkxu(lTM)R)~_Mt!_o;5dEn&u3XxNnFcrZ(&+TO3yO-i8 z@s7_yQHpi=Q6W{XGge)axg(i`GOrY4!wht{aEBX%q=ahe!t)VM8+M1ac{6*1Un0hL zNd0xjW;vgu4?3REg%-O?eQ|~}q)tIanm)1Z=lLkz2K3jPau2yV5ku@4%ze7l$}B_E zc2DqktDsa&ll_d!(T{J$=j--pS&Ae3^z-G%v@(3n#3r8`8qu8NR#vntxM@^AvMoyt zJP`mV-ca^S-P|JQ^-Y5)l7U5~61wXMnv(AK%r+M16=K4GWg^*N05g zuGu-_0w@Rrp1%UcrTSZGX$z>2(}Fk+kaAf-scfs} z;<3^?dr4(M%}UA=v;oUQvFuwW^21mV1pge4=Vc>=lk+z8tGq;stCTAk1_uqKN4#MQ z=&g$`Xx6|LNXnv3@h!lq+CN=ye%J=?7Epxq^LkGVa4Vpe{xEVgGS z2OY7Yc~ENs+2hB*iZkgd{~kEpc$JjZ@ZH}nzo=0$Wn__>PiT4EK_}JvDPGcF!&^Zg zfH`B$!7Cgg|9Y2w3T2ho@;ywV+%#Y&7$Fo%29?^3FW`RLZtQD%N%CTjj`MbH`XI_X zXxi`W=d$ueF(~ZVUl%#kC%XpdVeo+g%YQoEe*AogyEr~c`!y<_u0^bIza7B(eH>vO z0}|KV2xU7;1C}W*A)T#$p$8wlIWvX@>#e6Q0O_5v;fJ2j!jDOAqGA?5J>9p_qu#}_ zl&bor(Ax!4%_9tOPr0fO%eQejh3oMifC9CV#V^4A&aF8k zUb7{0$zgOrzfX}}T@{xOCJ&0|ARiHLS^shQ8TCs2f&2YI!v!v{s;n-SfydXv7mhoK zbpQ1?2>i5?W5NQMWk>7zYD0o_Jv(4O_$GX~+t5;Tr&n!Mcx! z1PwchIkFA=(GG4R85kJTocx9V*Qw_rjwMcz$})dlG{x+Tu$Q@NrUvYq#!m}lu{oD+ zH~RH!u!q(_0{@_+#VvY};}4FH=o*km2OqFgRcS4^k1T&(*c^NEGXs>kYwWYwU7kCC z41MQeUKKcE9BGF8M+mio2pZu(20Y{41vCxdVosro^}0c%C&3XwPJ{=Pc`J-E6DA?; zP}f>gjbAw-q#fXkiQHHj=4Pk_^VQat%$Z@DSfaUKZsx>|Pvpl5)Jwl`>o%~>yi%~B zuTse9v=)1CBWv=q>J8Nprd*pk>$39LU(uMPV)M;stS`{-(&?|SIFBDNvoTM`{M_s4 z4L$M5?z_>|%&lftY^27pc|~e*V2IcH_3k_zL{9&2=9RsxPA?q;zAJuPO(no&rX(C+ zYyYxr9h3{Z+BHz+T!6?3^gP~d29DUqj!8OKq>O{c?IQNqE&HCH%Z*nddBN~9#XCNg zeg5^c`~WoZi^&iFDzf?=TD3Be93|3kUtKlni{`QH;TQ8U!8t{XS3ulv zV@OFw&&0G~52a4M!pY;suEB<;eZ3o|)EuRJY(P!{w^6009a7_eZ2r~F|r9jisNcW`iOP0Gqs>0j@~fL@y%Pu+ndwT(zptKT}pByXIsK< zodei&F2aB4O@Qo2ofk&$eXE+RSHBE+PZ}?bh$kg{Ee=~rhUCxyC*s%kh3vpU`MrN% zw#rgA8;cuf|94&EBqMJCDW%wptg%^}l3XmiiRrpD{jVjbk}U|BWOsIr`d{tK9bZD9 zY8BU!SF~dQs|uj$dI8TzX5jv8aHU(@xEGsiWkg9>7*@ewbNPdUU&vdRE8IL&6&s96 z20Zk6XFlR^bMtR_9u=%-WTt6qtl3$kcKLP4<@hrSo1ny@Ml_XWJ%LT;K9Kb-5>5u$ zM_(_<)js>o^3$UcQ4JWuA^zR$nZ%??NT0svA98uXy6J#QWy`Tc?t@)m0UQt-e!Io z6Cv-hMvHi8(!tFD#gl5SC|a9%Pgi-YZAaizt~Qs?%t^<&0gnrXtG%-cQZmrrqJ2o) zwWIsEK%BK?L~JZSN0B{NYy^*3^@xkP*N1}jGSaG7$Y!lI%u7}Xae$y^x!UK-B>rJ; z#cQVRuSmDy$1gUADgZ^tL%L8*ttGB}_M!GJkFd)U2p_BMuzmrbr3I5#Vr4Sp7lHGU zvW9VglCe*1W8DFYP9!#aLfFp*(g@vVKg}u*X zzlGZcMLBP{kYJY?4fQKsN4z=5H~FQcL2OY2lS|!yW9ri4&z%yeXaOhgDZUROnOA|{ z{UKZ#aqb)WChMLu@Whk#bXeznNB$Sjw{eQqQmSd;OK}RN7yZin7uc+D3T93`cpcaNb5kyT(tmAq z3(jq`i$x}G!3jb&v0}(LH3w}%OT8`?XyQd>t6^wre%BDI?UQAloqNR8aMc&r+3DNYmvQ{{`av?;G(om;Hv|u$IlmVx@5S$J2PXNpS~W0Nf_8TOTyrSoe;v? z@FiBAr9QdOR%dQ8Nb@Ntl zuZDvKbT)R%b{^Nx3v9LwrZWX=qy84dTs_VtS4{3iM@wZeA&ac|ri~wCA*Q+g#-_h? z5Gr#3_6W>s)K|`zaopUCQf)n<{h}fk$PbSQR%~qe3LZqn9VhSoawxiYtfBbL&XDul zYE@*?n9jHK(G{x9m86oO{n3qHs=yC-HyFFT)=)|s5>Kgms#SNS z4=`_+a^o}?m9?&7M#xLFUpqDNHPD?dZ85(`{O1<2xzO(jdxbq|@$>B7Le&?{1!o>| z_La|ohO(^p026^2p7!>iDrmUNc$)vEXuBm2*Vqv0;K7g_{{b--i>w>M7HuHqx@`{5 zJ_t-?Yuc>`p}-(mX~DRf*pa)(J2E3^rVH z$7m$Nue>-we#^GQN^I#mxC*QZU-xFjTt?O*24_G7cI!AOE><_u@DgvQRSv7qTnH$BQy{*drGE!(S^JIgTxgwFGk+ibt8Lr4MSrnW$^i9DjIC_1 zrl1$Ppkk%bvS(xL(z3M^xOoR?7=C)$ZOz=1yS@IQx{X3bijVUs=rt%Wld68ttz6RU zxa#K)6$$Cjv+uC91niv|&tG6YeDUOY5lGq~s^;~~zU~8E*A)8g`=4X^zP4GYsJtZ& zz6H8YN!`V6Jn7&Je;IPF=gB(XAq86o$9_G?e^qnT7DEr=m}^Qp2HZT(alBsNP|Xe7 z6i{N|;^zclmXWsx$0sjC?w&gN#68bM#7d!C6Xb>7vPgU&H0@?6+g-Al>V@t_-9tM$ zB5CtiS*$^&*9yz^Rt`a21zycoHuB5XMF%fMYwIRic3fCQcysd{ZE~H)hR3HajBZ}> zLJKJN2bGD#C!PIJaM++4aJl9!@V25|s$;9zu8aQMcLqfk14BH12yNz|?$jleR1g2= zXdm{fx0-<&Xch4W3knF1jRDmLqc2I5pS)peRL(#vNf#D~GW%YPXPs{C*wc$qN}!G8<|rj*HrQkOX+zpkYaAacdt) zcSqo_-9kL~KhVe2h2N7Vy>yMt9zEVP`y2c7R`Ejr^{3a)K5ZBkS2unh4YhPI?z0xN zQn!_6yZXfG-~;aWZKx_N^9gzT-Xk+j7UAJu=*Cy=DJicQ<3BgX6qi@Y(%ujat{=hI z)c++fJnfn6+Vrta_zBoGMdM(4eE74NEJsD%ILp51MMTY>MxA0g*EcTNT3`|I?x(6U ze*%H@UjxiUuCr$E#T>}q1NZPyrwt<_rpDn)bXMT<&9H#VcR}6McrvxCF|< zp^-3EtCf(FLsBllW=ULl0@PA4cw*j+f@vE`>M<#lI_SQ{2Dos5^98(XXqW@|f)~AK z*L7XCdnzxx!oz1hR_g*ySUI(z5VO41R5kem*bfGLu>+w%70R!dhP7VJDt+|btj1KM zT6`btStKEtkKDI$m3lpk4Fx8mt3E5dC)(s$Li25B-2h1L{9ny0;{gQ!M>oGkEGx%m zSCnx)8|1*%&ABxq!CQY%^6}-3M?N~ypQZ`ZtNj3uSR3C7+7~dKSG>3Kg8my+gqmSk zF_?)^bBr_GZVPlIpIb5@#9-yIZ6Ld>v`AAL*QtUC=jO3K?66G)gu?$%Rw*=X{-2}* znA2_@2$9c6o{w(ndZABY91F$yQNy7EUAc{s`9+o*!u&t!oNvd$++WQ`MmCQC$I18= zzA@<6tMdEFZm_{|y!K0OZ)ve6RaOxJ@wZv2t2JwiL!~7_>K^d9_e=;N>OY^8?x8RJ zpVSd?>wRJefEVJe9Z;8#nLF|e?zkr-xLL&X`Tn&uMbUmF}YR?QkQ(oY>K)<^s(x!W`5B`nM)FmDhR1o_dR9V=n9@ zH9BvYi%a)!SJ5l*Vj8dybim1wfjTXFq)18Q03GvYL5GMdM?c5I!DhdczjT*yc{%AV zQp$er_D>rDqwb%BA3G|s11n+u@R4d}59ssRtI_(|!ag#_DwBM*?Fy?SVXT?iX*{`% z&#j@^YAB2)q3tV@T=I11{4cKmizrz|FWrnuOlOeI8 zPW(>BD^^f9!wxaAB$c}ig;h;u?x*f2je&xy$6}d{#S6KkA@Pfe^qfdFOnMh8D0{n2 zZGGZf-*eb`Bz0?ek& Tc{}eHx8A;Kq*tzM7xq5@p%T}Z literal 0 HcmV?d00001 diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas new file mode 100644 index 00000000000..9b20c089895 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas @@ -0,0 +1,485 @@ +leonin_m.png +size: 64,96 +format: RGBA8888 +filter: Nearest,Nearest +repeat: none +IdleRight + xy: 0, 0 + size: 16, 16 +IdleRight + xy: 16, 0 + size: 16, 16 +IdleRight + xy: 32, 0 + size: 16, 16 +IdleRight + xy: 48, 0 + size: 16, 16 +IdleRightDown + xy: 64, 0 + size: 16, 16 +IdleRightDown + xy: 80, 0 + size: 16, 16 +IdleRightDown + xy: 96, 0 + size: 16, 16 +IdleRightDown + xy: 112, 0 + size: 16, 16 +IdleDown + xy: 128, 0 + size: 16, 16 +IdleDown + xy: 144, 0 + size: 16, 16 +IdleDown + xy: 160, 0 + size: 16, 16 +IdleDown + xy: 176, 0 + size: 16, 16 +IdleLeftDown + xy: 192, 0 + size: 16, 16 +IdleLeftDown + xy: 208, 0 + size: 16, 16 +IdleLeftDown + xy: 224, 0 + size: 16, 16 +IdleLeftDown + xy: 240, 0 + size: 16, 16 +IdleLeft + xy: 256, 0 + size: 16, 16 +IdleLeft + xy: 272, 0 + size: 16, 16 +IdleLeft + xy: 288, 0 + size: 16, 16 +IdleLeft + xy: 304, 0 + size: 16, 16 +IdleLeftUp + xy: 320, 0 + size: 16, 16 +IdleLeftUp + xy: 336, 0 + size: 16, 16 +IdleLeftUp + xy: 352, 0 + size: 16, 16 +IdleLeftUp + xy: 368, 0 + size: 16, 16 +IdleUp + xy: 384, 0 + size: 16, 16 +IdleUp + xy: 400, 0 + size: 16, 16 +IdleUp + xy: 416, 0 + size: 16, 16 +IdleUp + xy: 432, 0 + size: 16, 16 +IdleRightUp + xy: 448, 0 + size: 16, 16 +IdleRightUp + xy: 464, 0 + size: 16, 16 +IdleRightUp + xy: 480, 0 + size: 16, 16 +IdleRightUp + xy: 496, 0 + size: 16, 16 +WalkRight + xy: 0, 16 + size: 16, 16 +WalkRight + xy: 16, 16 + size: 16, 16 +WalkRight + xy: 32, 16 + size: 16, 16 +WalkRight + xy: 48, 16 + size: 16, 16 +WalkRightDown + xy: 64, 16 + size: 16, 16 +WalkRightDown + xy: 80, 16 + size: 16, 16 +WalkRightDown + xy: 96, 16 + size: 16, 16 +WalkRightDown + xy: 112, 16 + size: 16, 16 +WalkDown + xy: 128, 16 + size: 16, 16 +WalkDown + xy: 144, 16 + size: 16, 16 +WalkDown + xy: 160, 16 + size: 16, 16 +WalkDown + xy: 176, 16 + size: 16, 16 +WalkLeftDown + xy: 192, 16 + size: 16, 16 +WalkLeftDown + xy: 208, 16 + size: 16, 16 +WalkLeftDown + xy: 224, 16 + size: 16, 16 +WalkLeftDown + xy: 240, 16 + size: 16, 16 +WalkLeft + xy: 256, 16 + size: 16, 16 +WalkLeft + xy: 272, 16 + size: 16, 16 +WalkLeft + xy: 288, 16 + size: 16, 16 +WalkLeft + xy: 304, 16 + size: 16, 16 +WalkLeftUp + xy: 320, 16 + size: 16, 16 +WalkLeftUp + xy: 336, 16 + size: 16, 16 +WalkLeftUp + xy: 352, 16 + size: 16, 16 +WalkLeftUp + xy: 368, 16 + size: 16, 16 +WalkUp + xy: 384, 16 + size: 16, 16 +WalkUp + xy: 400, 16 + size: 16, 16 +WalkUp + xy: 416, 16 + size: 16, 16 +WalkUp + xy: 432, 16 + size: 16, 16 +WalkRightUp + xy: 448, 16 + size: 16, 16 +WalkRightUp + xy: 464, 16 + size: 16, 16 +WalkRightUp + xy: 480, 16 + size: 16, 16 +WalkRightUp + xy: 496, 16 + size: 16, 16 +AttackRight + xy: 0, 32 + size: 16, 16 +AttackRight + xy: 16, 32 + size: 16, 16 +AttackRight + xy: 32, 32 + size: 16, 16 +AttackRight + xy: 48, 32 + size: 16, 16 +AttackRightDown + xy: 64, 32 + size: 16, 16 +AttackRightDown + xy: 80, 32 + size: 16, 16 +AttackRightDown + xy: 96, 32 + size: 16, 16 +AttackRightDown + xy: 112, 32 + size: 16, 16 +AttackDown + xy: 128, 32 + size: 16, 16 +AttackDown + xy: 144, 32 + size: 16, 16 +AttackDown + xy: 160, 32 + size: 16, 16 +AttackDown + xy: 176, 32 + size: 16, 16 +AttackLeftDown + xy: 192, 32 + size: 16, 16 +AttackLeftDown + xy: 208, 32 + size: 16, 16 +AttackLeftDown + xy: 224, 32 + size: 16, 16 +AttackLeftDown + xy: 240, 32 + size: 16, 16 +AttackLeft + xy: 256, 32 + size: 16, 16 +AttackLeft + xy: 272, 32 + size: 16, 16 +AttackLeft + xy: 288, 32 + size: 16, 16 +AttackLeft + xy: 304, 32 + size: 16, 16 +AttackLeftUp + xy: 320, 32 + size: 16, 16 +AttackLeftUp + xy: 336, 32 + size: 16, 16 +AttackLeftUp + xy: 352, 32 + size: 16, 16 +AttackLeftUp + xy: 368, 32 + size: 16, 16 +AttackUp + xy: 384, 32 + size: 16, 16 +AttackUp + xy: 400, 32 + size: 16, 16 +AttackUp + xy: 416, 32 + size: 16, 16 +AttackUp + xy: 432, 32 + size: 16, 16 +AttackRightUp + xy: 448, 32 + size: 16, 16 +AttackRightUp + xy: 464, 32 + size: 16, 16 +AttackRightUp + xy: 480, 32 + size: 16, 16 +AttackRightUp + xy: 496, 32 + size: 16, 16 +HitRight + xy: 0, 48 + size: 16, 16 +HitRight + xy: 16, 48 + size: 16, 16 +HitRight + xy: 32, 48 + size: 16, 16 +HitRight + xy: 48, 48 + size: 16, 16 +HitRightDown + xy: 64, 48 + size: 16, 16 +HitRightDown + xy: 80, 48 + size: 16, 16 +HitRightDown + xy: 96, 48 + size: 16, 16 +HitRightDown + xy: 112, 48 + size: 16, 16 +HitDown + xy: 128, 48 + size: 16, 16 +HitDown + xy: 144, 48 + size: 16, 16 +HitDown + xy: 160, 48 + size: 16, 16 +HitDown + xy: 176, 48 + size: 16, 16 +HitLeftDown + xy: 192, 48 + size: 16, 16 +HitLeftDown + xy: 208, 48 + size: 16, 16 +HitLeftDown + xy: 224, 48 + size: 16, 16 +HitLeftDown + xy: 240, 48 + size: 16, 16 +HitLeft + xy: 256, 48 + size: 16, 16 +HitLeft + xy: 272, 48 + size: 16, 16 +HitLeft + xy: 288, 48 + size: 16, 16 +HitLeft + xy: 304, 48 + size: 16, 16 +HitLeftUp + xy: 320, 48 + size: 16, 16 +HitLeftUp + xy: 336, 48 + size: 16, 16 +HitLeftUp + xy: 352, 48 + size: 16, 16 +HitLeftUp + xy: 368, 48 + size: 16, 16 +HitUp + xy: 384, 48 + size: 16, 16 +HitUp + xy: 400, 48 + size: 16, 16 +HitUp + xy: 416, 48 + size: 16, 16 +HitUp + xy: 432, 48 + size: 16, 16 +HitRightUp + xy: 448, 48 + size: 16, 16 +HitRightUp + xy: 464, 48 + size: 16, 16 +HitRightUp + xy: 480, 48 + size: 16, 16 +HitRightUp + xy: 496, 48 + size: 16, 16 +DeathRight + xy: 0, 64 + size: 16, 16 +DeathRight + xy: 16, 64 + size: 16, 16 +DeathRight + xy: 32, 64 + size: 16, 16 +DeathRight + xy: 48, 64 + size: 16, 16 +DeathRightDown + xy: 64, 64 + size: 16, 16 +DeathRightDown + xy: 80, 64 + size: 16, 16 +DeathRightDown + xy: 96, 64 + size: 16, 16 +DeathRightDown + xy: 112, 64 + size: 16, 16 +DeathDown + xy: 128, 64 + size: 16, 16 +DeathDown + xy: 144, 64 + size: 16, 16 +DeathDown + xy: 160, 64 + size: 16, 16 +DeathDown + xy: 176, 64 + size: 16, 16 +DeathLeftDown + xy: 192, 64 + size: 16, 16 +DeathLeftDown + xy: 208, 64 + size: 16, 16 +DeathLeftDown + xy: 224, 64 + size: 16, 16 +DeathLeftDown + xy: 240, 64 + size: 16, 16 +DeathLeft + xy: 256, 64 + size: 16, 16 +DeathLeft + xy: 272, 64 + size: 16, 16 +DeathLeft + xy: 288, 64 + size: 16, 16 +DeathLeft + xy: 304, 64 + size: 16, 16 +DeathLeftUp + xy: 320, 64 + size: 16, 16 +DeathLeftUp + xy: 336, 64 + size: 16, 16 +DeathLeftUp + xy: 352, 64 + size: 16, 16 +DeathLeftUp + xy: 368, 64 + size: 16, 16 +DeathUp + xy: 384, 64 + size: 16, 16 +DeathUp + xy: 400, 64 + size: 16, 16 +DeathUp + xy: 416, 64 + size: 16, 16 +DeathUp + xy: 432, 64 + size: 16, 16 +DeathRightUp + xy: 448, 64 + size: 16, 16 +DeathRightUp + xy: 464, 64 + size: 16, 16 +DeathRightUp + xy: 480, 64 + size: 16, 16 +DeathRightUp + xy: 496, 64 + size: 16, 16 \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.png b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f40a85e8befd54a38c5a070b4336f0418a8db3 GIT binary patch literal 12120 zcmbW7by!qg*zSjrkWx^(ltvoqRuIXN5|I)CX=xa81|+4Wy95O3j*(EL1r+J-ju~oT z2Ig$u@BOaxU8k?}56tYn_Fikviu?E6&x(AZtx9&A{x%2%B2#;=tP29+0v|yyhzNkc z&UU}pfqyvex~fk=mBWnNAP_4^O<74FlC_@=wKZ04J@2sJeP!p&cw0cp%RHsFh~)04 z{+Q;L;o0Ij{8pd*_nGhNobtQ9^DC%NsGmglw_lf(@HI=&76qvs@dj8RG@3QGi|2c+ z4=HUA-g_=cyOgyI>)PjX{azU0@pXeBlG`(PzAerHL!52v$yijB)A452d4_1PF2 z5PSP@XVISLKZcsqHrM*%HB1Y4Dtz6!4W`EKN_0eZ zV>#FDjy{K_#1Alem_5~?rT4$H8AbU0zrXF5&u2HnhH2X4oS*L2rvz6`>X@HNCF|9z zT*)%rLEVWo9H7dc+3YLa(m5p)Q(l};A4ZdGXs}%E*wh?!37JHF$ULFB{sAlv>E+}V z-N+EeIRmB3$g?KU}?!|BS?t&xw=ykqVReF#J)V zviB%2g68Rhb!DS54{rsF>q;mwXcm%6!}4Qt@iF35Ld$5eN7e|_aWvdgme31Mt*xSXwz`ZWC@Il;58Pk47WvB$0XM~JWObiJP!E=N2S?3oF|n9v56N0 zRiW0D#IE1=wMCmh)#n$0|D}T^8`O<}J$$^lmU06xoo`+}k@tX8?^zRM>@qwsuu;go zcV^|@>^s(3d(ERMdF#_)idJ$x<~OxgzebiceO^CHlI=)tokmIe2hQGF5PJ_gfAS|a zyQi;G^Mw(oY&z9m1O)6Oy#JKLtQij^X-p(@mZNO$_4*N>*m~6>hMXc6!x%7a=Qw+* zIC7PED}gVEdLKjD?laWSKbK+;%=l$IzvATe zJ_1IQGMSn^5yPU#4D$U>xIk?1NQ^!4irwM1ANJXbsbh;tj~h>1xLN&kq3{K@-uNb( zja}L~H{u`LxYQfFw&KnY()W6oQZzs?@bw9ZK88TI^d9m;)?9neC+~jqVxa9Z;tAb_ ze@;rB&10_d1K~|ODUioB*$?+)RVxe>vuP8!+MowF6-c#nltr(3gJ9#cXj{^ly@912 zUE;4z=aH4b+NsuRMzH1E^QH6Q zk7)#H_6rGaXTwKgaBP_9iv#CxtL+mbRt|Wa!tWj=t4Gd=9KgTwKmUHRI zY@9Nt4YtOTIP}}-(^O9#_lkBp*nE7YA&&<_ZLPX{7^)Uz#U2llX*NM--o-q_JIe~K zp|jb{J6slioY{1=>rd|e+K*N+yA+{jFy~`v3>uEz&flbvv3@MLgoO(S>3J@m?MhNe z5<50sbdKo0<|1^xOvYsvl$@2JjCx^+N>^FD^!ild*r5C4Nlm?S??IcBTpSGlqHZSE<=507!03&?%xJm zrQ0mR?alJ88CQ>4PY&pfFImr`wG%AhdS+t%yumURGA*L%qc|FNJJDs%2aNf087m_g z!IDh-k!_?WEa2_uY)Lo7EdPQ*PvqT_k+S61f?~bV_4q5}0`?#8OO;;mpocbI&G>kQUM*M)5XA>?(vT%rp!5@iF z90cdEEUz>f!@tHlcxPAasuGrcTa#P29nP;=zG^2(1HpoRP!o_FuXzjBoBg@Jg)8XL ziXq{XseSYVDMIa?L%)0;y-`09Av2QFbwtb^{UZ(eSi1$4U<%Xp(S4TW-@C#!jB#m& zHT>k+M~SWobyanugHmwd<20_k{gv$B%hFa@Z_MWO(;@I%CF|~F8Z!En)xo8~NSTq>Cg^HC zSz`hg1rf(NACVv|X=jI!LS(=8QnoGH4CzlA`jf)^<(!X>RDrm@8c5mlIS0-tqN+PQ zfC;?uk4B=IBonR$JcocHuDd_{{5RjSz6VsTFt+2%KbM~J$RD9YbQF5iY;npbH@Tf( zKJbygs`=iuU-y5rm=!z>A2%MZ}XaX@s--6I^hjd-x**RwhkY= z^`G_KZLIm^rNv%LZIe^onsJi7qJZ6{FmYF^!r%$LwH#<$2?sOluL_322T@|m<161a zvTvdsWx?3=;e0D>72rHOI2cD(r^BS`s@7MT>hcSnnuZ=jdXpD^i;BqV54tK zA1Z$&5vK7?E9=d}O01RpkBv*eZD6mUSc=J&MF*@a3e!jecbEemgnky3Vd5;e`kpA& z6&rD$L^CF@zjDQlACf%Y7+b4NU_Wp}In0a~QkS)3>eJ8?%)g@dq+zS=U%`vovC9=? z?z~vRnTajmXf!vPU&9G$%zxkvY&2zaJx%!`=}5)4fPxhqn06YVr_mvcji)##)+LCg zz7c~)tjtDkJ(JA)!WB==4<%2uKmT9E&((Lr;&AafJco7X8pONk0{cRm->cr)AHI%r~ftuJq+qbGkL%TEXsXtRL4zmAB;#$hpYRc{EzY>;;_|CyZ&!*tA)%}&5v=f zn^E2t^g9eOB~kr5`vHh@dWOYRatkuG5(xJ zqr%@XIU5Vdo@uEqKM3is4StMt?vLyV<{k|jdw<>g-V5W@usTcMt&1PpbiYV+bz8I7 zaJYi@#aU2Bw}0Q0zf#AEqsiK5id6aX$X{d3?983dG^bV>eEqL}{o1y~b2(r>=wH&~Hfh9h!A-8I8a|BZWGaQ|cY{TcmolSoR4dC+NQ3zU~~!~kiY^Z1FU3UaVDai3C6}-PX>)Q z3RxZY6I=h9oB=RJk=S3$A-`7zMFPtb2eMdZKZ|zl*|^_h@5Gw$d|pOnju(nA`}{(X zBfpDV%)S6daTpFr+zpJ(@?6HsQ9v608Wbg2_WbXq32v-s_B2j<7#=k~`ZgAzaw*|I zX3A1>PNiOZl!C@#JQPGTqxyRC&){5v`haTCbjPWa{!Fm3{2?#=N1L$)wNHJ>yV@Nw zW;3o{kt%B(+s{bPV0OX}N-dT}`>Aa*EvJtR`S!Q%RObI=^v;=?F%5SXcSiWm=w6Mg zU9aJ;6EVCFi-X$b(9VVxXCQ@F=W1HoB?I|qbu=EFRVG8&=ew8N!$YIM zYdIRiWqkzyn2ywOXo8Gc*_bnyUCvro--KNXfOr3pMH zK^)iud{*21l;oAqiz@H0^plU}x)Hn^D`I@l!NzKF^R;|um&ra_Sn*ZEaEe-*JhR~k z%~j^%n*oDI-GUAx{-cZ5=(t#=N)~;H9`lX@xXV6jl zylxGQ*-3kzSf_PCdGI6^!C#sqIhV)rMlVBct}>C1OqvZzKL&`9^BVHcNn|wfGEZ4P zmoR<)x!-&8iQ>^C+x%6jd11u?MP;}-%Ro<1nRACUD3;mRAaU}vN)Ia1A5}kx<0u|hR zy1Zg%;PJj(P??Iu7c@l2n0XdwMHGyf|5 zLDlhToX*JXe9Lru+UlPhk zwKJR^vI^>jMMCLiOY=E^SToyDL-(ahoD87KgTHJVE+(;P>@5&Ha4q4cZe>Y=y@)Hl zoCapp4fz9+1*n-?kvJ#LZtRjRS?0^USBmvEvYw0-llgb?f7I==ftn~tsHo%AgDDZ(m#oq?z!ouOUp&ME?za}V2=j17BvroJu7^0DmhnuS)yCoc{v)! z@Y?P1_93ic+GHoyXu@TTaCuJ=I7pf&JA+%=U?7}?CWnchWko_ha`+aiC>aTB!;je9*( zDLMsrcK~Iqg(Xvu&(#9lQj;KsN6(OhB?6ipT_NvR9C zh_4;vFV`%&NX^@8KD}%|1Ca6JKqOK>0;(`kR3eup@WM;dG|zfq$2F1ai^BD?IDd}p zh~gyHkHw$3Q%#ZGCpE#rx%{&!Rb;u{QKPldD}i+#fmF|{v39Xi1q-pq>!#iaXvcnB znSXG7R~)oiYeoT~nnX*s1J+8^s^_$0Tg-qvgunRU{gWbB_DhdB07?jlh_XmX@+~;S zwebc$*LOmk^`1?WTYS(n<2}ag_zHN`&3J+O7Qdk{422diq3C?kmiRVOy6c|J4z5Y^ zK5J(sxZ4#m_%9}yGW8DjBz;#>64z>0MInF!Kl7bgytG)v@WA#dU12~)*I4^Q&(t-i z!P>q4a`fN&cUL$zGUH<8`aT6pd0k@=t}AZ$t2Z+--BGxQJaIyM&6Dc}(~pu1Zi9RI z&{O7QSdTr_&yJ<^%kOT=aQ5B7NdavJ#O>>#m$C_sW3&qO%-JjVClwU1XNYJ&e!osa zZCMFKscD5I_BSLiIBK%G+np+RhU9qIlGOVkqtohTZig<9^m^an+c&)niLcVUJwErJ z`K_vGwBkN&KXoB6E+)UROd4S4rkom^|ymkhj9wzU+cgf7`Fs^3yXS^F)_`9=-McN4Iejz)a zMCg{!*X-m^mSeU!^w4oA@S}av#HE%HFbPI&_nGgY7p}*?ynL^QfCKZhTIi6wj3+1O zER7dCh{1nHJ?mCX3I94@ss9m03~QK>94*DVQ|&hz$_DH&-yf3Caos3=l>D$PIZ^kH zPFLMdCxX%+e4NBC%#Inva~YfbRnlg@N%9gNQbiK zW}i@O7ILFUkHd8;{+g%60T^i zZ%reZgH>yZplfh)vA06}Zs_7qb@BCo;&YdSWbwN{lTEKE1peaXB`G0jqTP*>D|Fv4 z6#to%Ib#2Sd+sCvLIm78C{vo zyZ2P-8t2?3;Z7h~JjT*xki(JX`P-HxL#gh~WoWwLYm6y8tOYezbx)rfIv}3eG}?S7 zHXLgsRL30v`+x*qsw>l2=;cZ;8Z`|2#QkHuu{Y2_*9nhC0f-}jTTL|3UI`zajbD#l z&crs;uS#}?{h<1l%YAKQlE{O{J@1MUXV#;{57`scfO)$dyHPNSBYK+Kw|SgqJVXAgCI%qxE@1 z*L9g^2|vjSnx30)a79DjX86B-cUSUCT`9RF3hOBw156L0=JikRWh`#y9PHjld|>T2 z8b^^6?u)?W)LouV)80baSfcj__ZJhbeBa&m2$V#>CU-8rJ44M^<%`#O+*-Vq8yIkM z$`&_z))rfWm`Q&aD|42U=6o%?X_{w+fFn0IeMxGndF;b=H%Tq5ub>yno1%HPIzHWc*Lg_+N78%gkR|hp z$aK}?NGkaTOBwBsl{qn(NGajRlX{)F;L)KUPx4QhB= z!V)cVtP248gs$4r^%TL|Tdstt)D1EWUa&oD`vtgBq2_p2V(Zh38q()SA9Fj<7pY=Y3qN-l znIB-7W}_uetNQhf+jftDC1VCQJ`f#h8)mA9Nt_D)%0zMXH0DQ6v060^4>h#eedaGR%@PWowArGkW-vpsvg(3LN-7?% z(i>jiN*Nz@1LCEBLy9HWjcE}{Ek8T8nH%q``NsQN8U9eMrfRkjc%IA0>$> zSRx+7qZnI>rTR~ID=e1T=f>RnSigjGK`i-RmgT7h0uR6U%^c+I9xku_)8t!_`Quu1 zwXuu6UrBK@;>V|i0psN~7~h&-vIMYS0axdh^A6`L9Zmj|zp8YZe&b3k1=%tP+Vk78 zw(gdE$|$cWFWYr>Kz3fHDT*J{g2c}mtJBd7Y^5YyKRY-n=Axjl362jdP1?S^h)WUA zyVqF^FNtQB$Wa|Msln6o0n^FB1L@(V`9+PN57ZON214;`cn*0#G%$l%Gkr*3EW(|N zrEWa+n3=6RTD8M4A*FWdvRiQ)~aHa=$9m*|v>)A)kqz@TKnaE_uK8VlU6 z3@0OMpdrr?&YkCcK}53A0GE8BuJ1rpdk|&&|PO>GOt>yDa=c}ye_Io}@omIqfvizjY zTC3&P0MWH1^{$52?yVdy=TE(diEaVO6=^04 z#fyV6psF;v3?;-mE@xfry@POtU(4oLsSl#6B$Dp+OMggd5LO7nv`q+9EF4gN;Vc1G zz*39VZbIGp4g5~$i*OjQKLV+{o5|7Mgni7+^kwCDko_HvUoM0XEsTa&I!xTCv4FaJ z1)l_*O?G6;DteU=7`E)%8e}{qV-!dz14abd=da>@U(k-bMJ>MN33i#tX zgmj#)#oUaTR+xd7Ct+~RKF}~*6Er-re^l;&LSsxsrS2E>oH>$)CGyY+n2W}TV}M7yES*~4t8l{Ulcs@9L*&FHbT zdAVlv2#!z1tiga$1a4vDmy_P*W}Y4-=aG1geh(p7pRhi)%W|2 zz4{q(6>j&4@v9EAS!I9!ZLd3}18GyP z)m=J z#LkoNdL4BMet&p*Ix_L$H%=;YWWw}mlvD)8H}|EgY>a-X!i7=A-#s93HONVEf7{Jt zY0*BsYo{^(wA(mk{gSSmDg~3YWa`O22{!w9jibcEYdb*F3*#M$#rgh8_~A`3S|^Op zJz-vWz_hBi_{dCVy#+;h59847tm+fE_cb~jh-6JG{%)OWG_uS-JBv&>L#?iu_W{0( zp-d)n@6>&Dvg+XRaDPXCl=0KgtE%o~LhE)=gr#Db_2eC7*-QJgWObcwdS#O4k2=g1 z!^v45IL$OVDhqWHJ1DMpU||nr18K#I4xGb5UQ~&7!mc4>XOJiBRp%|V?@FjsUPiZw z)BgF#jMP^0c?M8pjLgrkd@#PMOhwzCj(Edpxq-x~vE}KXKWh2b@%JFba^Ye1LEM!X zh{e!HNG|@vc$fU`>#%l-(^ns)g~8jG{wMnoQ=9iRuBN&d7pT%ks=)1Fa zuH;q@_$24473`g1Z2i1HDHt1%fPM(MOa*(=4#+O4u|B6$l2BkCj2Y>w^&)KcU|}6< zBER$6@_kM>XXLm!Ujq%BLJs>K81qedN#C#-ip;t=Rk+BEW;`58bEN?J<5J#(3gkrN z2n5}};uT$D2U(GFqk2h(q8ypxv4d$5hST4VEDa#@PT=-~J#f1C(dx8U((=`g;15D4 zGy#VMX7KEy=?fFeb)^^W)ZrbqS!MbT-9cs9xjG5k9Nd|pT^hXevty5O$#>xV+?MNzK97DTAj^3 zBrz~6qKH(B%k9*Bf()2nDQx`Ze-#K2E`wg8xnN^@FQ~eu3cJwYw{M0yPdRM8kk_%J zatOkkVthRs7)Z7bnf#FD%;hK=hx5jL1ShlQQ0qT0=|$rp&V?mfs8O5~!9ZqCM=3k` zVL&mwoVl6v|3b<+MS=|240tsu>kJCKPF^M-wU~6C^t(cs)&HK**SwWccClia#mDE_@29$p)?D~2CdM7-jo+N39R|&D-fm)Af9n-?v{P9 z!#I4|uAq@Jr^oKe=Fwv-+x1dc#ny|~{effx1KxN1PJOMB8?F`78QaBY(ZRJSD{f+5 z^Os3b1PK|AMZFlN5z=JU96x!Oa(qi#h%k+tm>#Laai`eccUNh+i3$*ob_;vo`4vB4 zbD#w2NiFoP`;$=-DM*>=nfanQ2k@Wh#!fadJxn^@SH@Msz5|-ul2xUIYr)&g(2!MS z_s@sqEJ5Ky{O^iD2hAyfR|+`NeKbbNB_5xOPUC+!By+JI*VGz;#mNHrZIhf7@r3@K zJi&GdwMP|I1aOkVVC?Pq$t%+nR_o_a#oD>4h(N<1toqJv$u38efM;mw|Gpd(T`$yT z1vQVKcqF|rGW%Vi&bsw9N!i|4IYX-aAP`F8+WRWK`!d{8cCJLn8g z0#0$i7TBuw<5jx>#N5A&S>EmBO+)xDQMMwrnf?L5i?}$GXh|&znm=;y$p6oO+ts4 zhJFVZ-eo@GUO0WY>ClXqzzR+<7LbbS2x4@;=hiMTHWyUg|2{Q{Q4scg&A*gx?*?(+ zi^;t^NQ_-I8@xakx8im6oTV4uipyBAqULTl>D>FR8J}VH*R8!r=1xWJ_Si{8Mo!2* zp+UXf#w_Rf{=J*2=8K~o>)o=}*Qx$K$PZ!~#Tu07$>jzItiv>;kUdKeIRM-KE2`Z^ z>9mBg9cr%v4j64_de3a?eB9ic=F4G;I8Mb8nauO-?iSLv|fH!3d`Yp;i@+b8beki;^B^ikO zasWdKNOD6wQ{>;sdmuJ106(hCAogL<(&;y<5Uz{`??!pNPPJhFMyx5Ha1duR8REec zV3~+^#k@w&;1HXarw+yqGj zZ*myme$`(Crw}RylC7NCDZ~8PiSd7{KlndW7%!vBM3q%73y`pg$WeTOy@h;GK1Q(1 z8syTC*y;13KVp_LC*x5?%9~M`3@8|TQ}Nr7$+?U))P3ryJ>^okNujq%Rt$`}0shnJ zl$4xvsc!_NOSCP(=jA}6$y1`kGPagLr0xj?(d7%3Pe8syhTtBD6VJ$YKHkUE$uEAr zkU!_rZtdM%n}#zT&oEv|o4xG=Q!TnYGXUck5yu^!SV<#uMN@^^I(0vz|NEd2o z=9Pqxt3!kb#SL0+X4Wx<$6>NiK@#qaz~W)X}wx_g+Yh>sld!%z~f%a1bRd1(w!rcG+G@(q4c zXH|CVRCLHp8N*9WI6gsoMlly8{w)Lpr?Y@v3bm27Y90h$>)G4`yg2xIS1M}5B|IeNuR?Tt-)?Mb!I2^@$(KBnulp$v=L);j}-vQ$VTU_xNeU5_mjlB3*p@LlRy% zKX32gN&e_mv+vg;#w=R*Amn=W?Hh$Lg^^^SL>92|on;-j$H~iwKOJG| z0d7JLR|S2fOiCMtXz_>#YaIuXN4oBU%W*cH&}g{e6As7EWMQ-%!Mc`9N zgphqsQyzkalWX@+A>r1t&Io#fheGm-w^cix0hEgE*UgdFQ%cP>!Y}_(DQ%0e(vBBW z=r=^7S>+&TNDq4OCFL7D6pc~fQngCMQpJxK8#rKGr2(SW3&bnHoK0zv=`2EnEZRL` zqx9~_?BZ(W*KbR|(Ow|fgFq)JAXFaxawU+o$@d(2&V=8j;4|`n;3yjVvahzTgm$%G zkECZ)LMG?W_Cl!P5jL|rVdr0=P4!DEuNNCfI#l*M1g>vdlfczk$%MYjCTp?iykWF~||rP>nP5y4H(<{z)mQ6H}61 zq)~!@!OHwXH{>qT5{b57U9`VgH@J*XJ3(DwPyZ@8(?O2lz)^XSnu@k^<&!tT{|%$C Bl@kB} literal 0 HcmV?d00001 diff --git a/forge-gui/res/adventure/Shandalar/world/heroes.json b/forge-gui/res/adventure/Shandalar/world/heroes.json index 28747eba3e3..36d01af3b11 100644 --- a/forge-gui/res/adventure/Shandalar/world/heroes.json +++ b/forge-gui/res/adventure/Shandalar/world/heroes.json @@ -70,7 +70,14 @@ "male":"sprites/heroes/werewolf_m.atlas", "femaleAvatar":"Werewolf_f", "maleAvatar":"Werewolf_m" - } + }, + { + "name":"Leonin", + "female":"sprites/heroes/leonin_f.atlas", + "male":"sprites/heroes/leonin_m.atlas", + "femaleAvatar":"Leonin_f", + "maleAvatar":"Leonin_m" + } ] From 9509d978e6c150664cb4483f71aee6b9dec9a2de Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Wed, 19 Apr 2023 18:43:42 +0200 Subject: [PATCH 40/98] Update invasion_of_azgol_ashen_reaper.txt --- .../res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt index 44c561d8940..7a7d5c8fda3 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt @@ -19,5 +19,5 @@ PT:2/1 K:Menace T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a +1/+1 counter on CARDNAME if a permanent was put into a graveyard from the battlefield this turn. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | ConditionCheckSVar$ Morbid | ConditionSVarCompare$ GE1 -SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature +SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Permanent Oracle:Menace\nAt the beginning of your end step, put a +1/+1 counter on Ashen Reaper if a permanent was put into a graveyard from the battlefield this turn. From a0cc3d7c4ce5361e20a688e0457239a99205ecea Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 21 Apr 2023 15:35:02 +0200 Subject: [PATCH 41/98] Update invasion_of_tarkir_defiant_thundermaw.txt --- .../upcoming/invasion_of_tarkir_defiant_thundermaw.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt index 67057958a3c..10b14a39ba9 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -22,5 +22,5 @@ PT:4/4 K:Trample K:Flying T:Mode$ Attacks | ValidCard$ Dragon.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a Dragon you control attacks, it deals 2 damage to any target. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | TgtPrompt$ Select any target | NumDmg$ 2 +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 2 Oracle:Flying, trample\nWhenever a Dragon you control attacks, it deals 2 damage to any target. From 28c5a18e56679d8086d3a06a8d283638d40bc5d5 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 21 Apr 2023 15:35:19 +0200 Subject: [PATCH 42/98] Update lithomantic_barrage.txt --- forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt index 171060547ad..2ebf405e8d0 100644 --- a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt +++ b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt @@ -2,9 +2,9 @@ Name:Lithomantic Barrage ManaCost:R Types:Sorcery K:This spell can't be countered. -A:SP$ DealDamage | NumDmg$ X | ValidTgts$ Creature,Planeswalkers | TgtPrompt$ Select target creature or planeswalker | StackDescription$ REP target creature or planeswalker_{c:Targeted} | IsCurse$ True | AITgts$ Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. +A:SP$ DealDamage | NumDmg$ X | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | StackDescription$ REP target creature or planeswalker_{c:Targeted} | IsCurse$ True | AITgts$ Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. SVar:Y:Targeted$Valid Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue SVar:X:Count$Compare Y GE1.5.1 AI:RemoveDeck:All AI:RemoveDeck:Random -Oracle:This spell can't be countered.\nLithomantic Barrage deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. \ No newline at end of file +Oracle:This spell can't be countered.\nLithomantic Barrage deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. From 71248e841313917eef58a1da28bebf97ecb580c2 Mon Sep 17 00:00:00 2001 From: Alwayssnarky <126915043+EldritchBimbo@users.noreply.github.com> Date: Fri, 21 Apr 2023 11:14:38 -0400 Subject: [PATCH 43/98] Invasion Update Additions: .The invasion of Shandalar has begun! All minor Phyrexian enemies can now spawn in their corresponding biome. .Added custom decks for each of the Phyrexian dungeon minibosses. Changes: .Edited Gitaxiantileset to correct some tiling visual errors. .Edited Enemies.json to give minibosses their corresponding decks. .Phyrexian duelist is now monocolour (white) in parity with the other world enemy Phyrexians. .Tweaked PhyrexianDuelist to more fit current enemy artstyle. .Edited Gitaxian dungeon to fit new tile arrangement. .Added second treasure chest to WUG Phyrexian dungeons, for parity with later ones. .All Phyrexian dungeon booster loot pools now pull from the NPH, ONE, and MOM cards of that colour, instead of just ONE. --- .../Shandalar/decks/copperhostbrutalizer.dck | 43 ++++++++++++++++ .../Shandalar/decks/drossgrimnarch.dck | 47 ++++++++++++++++++ .../Shandalar/decks/furnacetormentor.dck | 45 +++++++++++++++++ .../Shandalar/decks/gitaxianscientist.dck | 43 ++++++++++++++++ .../Shandalar/decks/phyrexianangel.dck | 45 +++++++++++++++++ .../Shandalar/decks/phyrexianduelist.json | 2 +- .../Shandalar/maps/map/phyrexian_b1.tmx | 15 +++--- .../Shandalar/maps/map/phyrexian_black1.tmx | 6 +-- .../Shandalar/maps/map/phyrexian_g1.tmx | 9 ++-- .../Shandalar/maps/map/phyrexian_r1.tmx | 7 ++- .../Shandalar/maps/map/phyrexian_w1.tmx | 9 ++-- .../maps/tileset/GitaxianTilesheet.png | Bin 5176 -> 5536 bytes .../Shandalar/sprites/phyrexianduelist.png | Bin 2146 -> 2075 bytes .../res/adventure/Shandalar/world/black.json | 1 + .../res/adventure/Shandalar/world/blue.json | 1 + .../adventure/Shandalar/world/enemies.json | 10 ++-- .../res/adventure/Shandalar/world/green.json | 1 + .../res/adventure/Shandalar/world/red.json | 1 + .../res/adventure/Shandalar/world/white.json | 1 + 19 files changed, 258 insertions(+), 28 deletions(-) create mode 100644 forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck create mode 100644 forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck create mode 100644 forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck create mode 100644 forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck create mode 100644 forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck diff --git a/forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck b/forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck new file mode 100644 index 00000000000..5a4ac2f544b --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck @@ -0,0 +1,43 @@ +[metadata] +Name=copperhostbrutalizer +[Avatar] + +[Main] +2 Blighted Burgeoning|MOM|1 +1 Bloated Contaminator|ONE|1 +1 Bloated Contaminator|ONE|2 +1 Bloated Processor|MOM|1 +1 Bloated Processor|MOM|2 +2 Converter Beast|MOM|1 +2 Drown in Ichor|ONE|1 +4 Elvish Vatkeeper|MOM|1 +2 Expand the Sphere|ONE|1 +1 Forest|ONE|1 +5 Forest|ONE|2 +6 Forest|ONE|3 +2 Gift of Compleation|MOM|1 +2 Glistening Dawn|MOM|2 +1 Grafted Butcher|MOM|1 +1 Grafted Butcher|MOM|2 +2 Gulping Scraptrap|ONE|1 +2 Ichor Drinker|MOM|1 +4 Jungle Hollow|MOM|1 +3 Swamp|ONE|1 +1 Swamp|ONE|2 +3 Swamp|ONE|3 +1 Swamp|ONE|4 +2 Tangled Skyline|MOM|1 +2 Traumatic Revelation|MOM|1 +2 Vat Emergence|ONE|1 +2 Vat of Rebirth|ONE|1 +2 Venomous Brutalizer|ONE|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck b/forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck new file mode 100644 index 00000000000..41b2062b94f --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck @@ -0,0 +1,47 @@ +[metadata] +Name=drossgrimnarch +[Avatar] + +[Main] +2 Annihilating Glare|ONE|1 +2 Bilious Skulldweller|ONE|1 +2 Blightwing Whelp|YONE|1 +2 Chittering Skitterling|ONE|1 +2 Darkslick Shores|ONE|1 +4 Dismal Backwater|MOM|1 +2 Distorted Curiosity|ONE|1 +2 Drown in Ichor|ONE|1 +1 Experimental Augury|ONE|1 +1 Experimental Augury|ONE|2 +1 Grafted Butcher|MOM|1 +1 Grafted Butcher|MOM|2 +2 Grim Affliction|NPH|1 +2 Gulping Scraptrap|ONE|1 +2 Infectious Inquiry|ONE|1 +2 Island|MOM|1 +3 Island|MOM|2 +1 Island|MOM|3 +1 Mercurial Spelldancer|ONE|1 +1 Mercurial Spelldancer|ONE|2 +1 Myr Convert|ONE|1 +1 Myr Convert|ONE|2 +2 Necrogen Communion|ONE|1 +2 Pestilent Syphoner|ONE|1 +2 Quicksilver Servitor|YONE|1 +2 Sheoldred's Headcleaver|ONE|1 +5 Swamp|MOM|1 +1 Swamp|MOM|2 +4 Swamp|MOM|3 +1 Thrummingbird|ONE|1 +1 Thrummingbird|ONE|2 +2 Viral Drake|NPH|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck b/forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck new file mode 100644 index 00000000000..e003da28e43 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck @@ -0,0 +1,45 @@ +[metadata] +Name=furnacetormentor +[Avatar] + +[Main] +1 All Will Be One|ONE|1 +1 All Will Be One|ONE|2 +2 Armored Scrapgorger|ONE|1 +2 Axiom Engraver|ONE|1 +2 Blighted Burgeoning|MOM|1 +2 Churning Reservoir|ONE|1 +2 Cinderslash Ravager|ONE|1 +2 Converter Beast|MOM|1 +2 Copperline Gorge|ONE|1 +2 Copperline Gorge|ONE|2 +2 Evolving Adaptive|ONE|1 +2 Expand the Sphere|ONE|1 +2 Exuberant Fuseling|ONE|1 +1 Forest|ONE|1 +1 Forest|ONE|2 +1 Forest|ONE|3 +4 Forest|ONE|4 +4 Magmatic Sprinter|ONE|1 +3 Mountain|ONE|1 +3 Mountain|ONE|2 +2 Mountain|ONE|3 +5 Mountain|ONE|4 +2 Nahiri's Warcrafting|MOM|1 +2 Thrill of Possibility|ONE|1 +1 Urabrask's Anointer|ONE|1 +1 Urabrask's Anointer|ONE|2 +2 Urabrask's Forge|ONE|1 +2 Urabrask's Forge|ONE|2 +1 Vindictive Flamestoker|ONE|1 +1 Vindictive Flamestoker|ONE|2 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck b/forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck new file mode 100644 index 00000000000..781ccb8ce02 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck @@ -0,0 +1,43 @@ +[metadata] +Name=gitaxianscientist +[Avatar] + +[Main] +2 Blighted Agent|NPH|1 +2 Bloated Contaminator|ONE|2 +2 Contagious Vorrac|ONE|1 +4 Distorted Curiosity|ONE|1 +1 Experimental Augury|ONE|1 +1 Experimental Augury|ONE|2 +2 Forest|ONE|1 +2 Forest|ONE|2 +3 Forest|ONE|3 +1 Forest|ONE|4 +2 Glistener Seer|ONE|1 +2 Ichorspit Basilisk|ONE|1 +2 Infectious Bite|ONE|1 +6 Island|ONE|1 +3 Island|ONE|2 +2 Island|ONE|3 +3 Island|ONE|4 +1 Mindsplice Apparatus|ONE|1 +1 Mindsplice Apparatus|ONE|2 +1 Myr Convert|ONE|1 +1 Myr Convert|ONE|2 +2 Serum Snare|ONE|1 +2 Tainted Observer|ONE|1 +2 The Seedcore|ONE|2 +2 Thrummingbird|ONE|1 +2 Thrummingbird|ONE|2 +4 Viral Drake|NPH|1 +2 Vivisurgeon's Insight|ONE|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck b/forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck new file mode 100644 index 00000000000..fefbfe3fb6f --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck @@ -0,0 +1,45 @@ +[metadata] +Name=phyrexianangel +[Avatar] + +[Main] +2 Apostle of Invasion|ONE|1 +2 Bloated Contaminator|ONE|1 +2 Blossoming Sands|MOM|1 +2 Charge of the Mites|ONE|1 +4 Crawling Chorus|ONE|1 +2 Duelist of Deep Faith|ONE|1 +2 Flensing Raptor|ONE|1 +3 Forest|ONE|3 +3 Forest|ONE|4 +2 Infectious Bite|ONE|1 +2 Infested Fleshcutter|ONE|1 +2 Mite Overseer|ONE|2 +1 Myr Convert|ONE|1 +1 Myr Convert|ONE|2 +2 Norn's Wellspring|ONE|1 +1 Ossification|ONE|1 +1 Ossification|ONE|2 +2 Phyrexia's Core|NPH|1 +2 Plague Nurse|ONE|1 +3 Plains|ONE|1 +2 Plains|ONE|2 +1 Plains|ONE|3 +4 Plains|ONE|4 +2 Razorverge Thicket|ONE|2 +1 Sinew Dancer|ONE|1 +1 Sinew Dancer|ONE|2 +2 Slaughter Singer|ONE|1 +2 Slaughter Singer|ONE|2 +2 The Seedcore|ONE|1 +2 Venerated Rotpriest|ONE|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json b/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json index eca588ea0ae..222826c04f0 100644 --- a/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json +++ b/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json @@ -3,7 +3,7 @@ "template": { "count":60, - "colors":["White", "Black"], + "colors":["White"], "tribe":"Phyrexian", "tribeCards":1.0, "tribeSynergyCards":0.5, diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx index b7f548e6be7..71cb5a5d5a8 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx @@ -1,5 +1,5 @@ - + @@ -13,7 +13,7 @@ - eJy1lVEOhCAMRP01epYeYw9mun94H4+3IbFhtrYKFkgaIAiPMgNuyzRtFfGZ/aiZ/zYSldjpvz+KeayFx2eN7Tw+istnbkzXPfTm4nqoZ+Za+vbiW1zR2vJa/j7iM2vfieriS4Xf6nmPy6BvUnrfRYQrdwf99MTnDtyavEZwUT+dLz/kHeXqs9Uh49pXLX7GIncW3ym9D2xH7nEuUgvX83RSeUaYwpX3wdJO96Nc69y9f9EInsX1zrd1zR/ubyqt + eJy1lVEOhCAMRP3duGfhGB7MdP/Y++zxDIkTx24rCJVkAgTD67SA6zxNa0XLq021fXqU06FvOs85tkjm733wZO95XNbBjubK7k3SfwzR+WYfrGywisr3EWyLi1pb8YxywfPO1ZU+6cy/E4fHFapvVvW+0ggXd4fPU40vAdwWX09wuX7ar1R8j3J1brWwPnKuuOHO8jul4+CxFXerSkMPrnems+Gzlwku3gerdnoObq9XK+/evyjCZwvXy+/dPTf2kSWe @@ -26,7 +26,7 @@ - eJzbwcPAsIMI3K6HGxOjXwYNE6OnD2g2PjCBCLtH7SUOT9eD4GlQN8zQQ4jRKn6R01Ub1N4OEtMZLcIZHaC7iV72TtDD5NPDXmzuGGr2TkfCIIDMxxau9PAvuj3z0NxJy3IDnU+v8goEZujhLkdoaS++8pIW9uLzJ6X2wsoeZAATI6deAABIX/aO + eJzbwcPAsIMAbtNjYGjHgzv0CJshg4YJqQfhPqC5+MCEUXupYu80oLnToXgd1A0bkMRm0Mhe5HQ1D2rvAhLTGS3CGR3cxOIOetg7QQ+TTw97sbljKNl7CCntToe6AZm/DEu40sO/6PZcRHPnDDrZi60coaW9G/RwlyO0tBdfeUkLe88RUV6SY+8dpLIHGcDEbpNRPgMAC9v4YQ== @@ -79,25 +79,25 @@ ] - + [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "blue" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "blue" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] @@ -107,6 +107,7 @@ + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx index 94a51babcd4..1b6b1ec61ec 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx @@ -58,21 +58,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "black" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "black" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx index 86ca6abef7d..887d5326a30 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx @@ -1,5 +1,5 @@ - + @@ -49,21 +49,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "green" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "green" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] @@ -101,6 +101,7 @@ + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx index e6f1ad70970..17bb536325f 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx @@ -46,7 +46,6 @@ - @@ -99,21 +98,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "red" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "red" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx index 6a124f83a5c..f98f3b40ed4 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx @@ -1,5 +1,5 @@ - + @@ -64,21 +64,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "white" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "white" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] @@ -88,6 +88,7 @@ + diff --git a/forge-gui/res/adventure/Shandalar/maps/tileset/GitaxianTilesheet.png b/forge-gui/res/adventure/Shandalar/maps/tileset/GitaxianTilesheet.png index c761bcdc52c085b359e17215e560beb80b26e8ce..dd29c9526e9bfa59adc7ec84b66bb43dc87ce48c 100644 GIT binary patch literal 5536 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 WW62b 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 diff --git a/forge-gui/res/adventure/Shandalar/sprites/phyrexianduelist.png b/forge-gui/res/adventure/Shandalar/sprites/phyrexianduelist.png index a2d8e985c16c5a5a3f61c5746b4c975222fc4837..e29d02e0e1b45c5cc15c64aa3b46e4a04f9e3a17 100644 GIT binary patch delta 2049 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 diff --git a/forge-gui/res/adventure/Shandalar/world/black.json b/forge-gui/res/adventure/Shandalar/world/black.json index 17b9fe383e3..6d907a7044e 100644 --- a/forge-gui/res/adventure/Shandalar/world/black.json +++ b/forge-gui/res/adventure/Shandalar/world/black.json @@ -47,6 +47,7 @@ "Dark Knight", "Death Knight", "Demon", + "Dross Gladiator", "Eye", "Fungus", "Frog", diff --git a/forge-gui/res/adventure/Shandalar/world/blue.json b/forge-gui/res/adventure/Shandalar/world/blue.json index c5aa793b397..1af44d47e32 100644 --- a/forge-gui/res/adventure/Shandalar/world/blue.json +++ b/forge-gui/res/adventure/Shandalar/world/blue.json @@ -43,6 +43,7 @@ "Frog", "Frost Titan", "Geist", + "Gitaxian Underling", "Horror", "Illusionist", "Jellyfish", diff --git a/forge-gui/res/adventure/Shandalar/world/enemies.json b/forge-gui/res/adventure/Shandalar/world/enemies.json index 83ff0e1bc3e..8d45a5c0fc9 100644 --- a/forge-gui/res/adventure/Shandalar/world/enemies.json +++ b/forge-gui/res/adventure/Shandalar/world/enemies.json @@ -3366,7 +3366,7 @@ "name": "Copper Host Brutalizer", "sprite": "sprites/copperhostbrutalizer.atlas", "deck": [ - "deckscopperhostbrutalizer.json" + "decks/copperhostbrutalizer.dck" ], "ai": "", "spawnRate": 1, @@ -4680,7 +4680,7 @@ "name": "Dross Grimnarch", "sprite": "sprites/drossgrimnarch.atlas", "deck": [ - "decks/drossgrimnarch.json" + "decks/drossgrimnarch.dck" ], "spawnRate": 1, "difficulty": 0.1, @@ -6197,7 +6197,7 @@ "name": "Furnace Tormentor", "sprite": "sprites/furnacetormentor.atlas", "deck": [ - "decks/furnacetormentor.json" + "decks/furnacetormentor.dck" ], "ai": "", "spawnRate": 1, @@ -6814,7 +6814,7 @@ "name": "Gitaxian Scientist", "sprite": "sprites/gitaxianscientist.atlas", "deck": [ - "decks/gitaxianscientist.json" + "decks/gitaxianscientist.dck" ], "ai": "", "spawnRate": 1, @@ -11471,7 +11471,7 @@ "name": "Orthodoxy Angel", "sprite": "sprites/phyrexianangel.atlas", "deck": [ - "decks/phyrexianangel.json" + "decks/phyrexianangel.dck" ], "spawnRate": 1, "difficulty": 0.1, diff --git a/forge-gui/res/adventure/Shandalar/world/green.json b/forge-gui/res/adventure/Shandalar/world/green.json index 049692f29b5..1dd2f7f1acb 100644 --- a/forge-gui/res/adventure/Shandalar/world/green.json +++ b/forge-gui/res/adventure/Shandalar/world/green.json @@ -42,6 +42,7 @@ "Challenger 20", "Challenger 21", "Challenger 22", + "Copper Host Infector", "Dino", "Eldraine Faerie", "Elf", diff --git a/forge-gui/res/adventure/Shandalar/world/red.json b/forge-gui/res/adventure/Shandalar/world/red.json index d872bef2dcf..02eb218b8c8 100644 --- a/forge-gui/res/adventure/Shandalar/world/red.json +++ b/forge-gui/res/adventure/Shandalar/world/red.json @@ -47,6 +47,7 @@ "Efreet", "Fire Elemental", "Flame Elemental", + "Furnace Goblin", "Goblin", "Goblin Chief", "Goblin Warrior", diff --git a/forge-gui/res/adventure/Shandalar/world/white.json b/forge-gui/res/adventure/Shandalar/world/white.json index 1872c4db27b..932a59fcaf4 100644 --- a/forge-gui/res/adventure/Shandalar/world/white.json +++ b/forge-gui/res/adventure/Shandalar/world/white.json @@ -54,6 +54,7 @@ "Knight", "Kor Warrior", "Monk", + "Orthodoxy Duelist", "Owl", "Raven", "Scorpion", From 4e042d7ed0ab12e89cfbefa8b36eff61574ab4e0 Mon Sep 17 00:00:00 2001 From: Alwayssnarky <126915043+EldritchBimbo@users.noreply.github.com> Date: Fri, 21 Apr 2023 12:39:19 -0400 Subject: [PATCH 44/98] Adds Phyrexians to Town Arenas --- .../adventure/Shandalar/maps/map/main_story/forest_capital.tmx | 1 + .../adventure/Shandalar/maps/map/main_story/island_capital.tmx | 1 + .../Shandalar/maps/map/main_story/mountain_capital.tmx | 1 + .../adventure/Shandalar/maps/map/main_story/plains_capital.tmx | 1 + .../adventure/Shandalar/maps/map/main_story/swamp_capital.tmx | 1 + forge-gui/res/adventure/Shandalar/world/enemies.json | 2 +- 6 files changed, 6 insertions(+), 1 deletion(-) diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx index ecbbff4557c..7b8b0ec26f8 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx @@ -151,6 +151,7 @@ "Challenger 20", "Challenger 21", "Challenger 22", + "Copper Host Infector", "Dino", "Eldraine Faerie", "Elf", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx index 938ac91d906..2d41597ecab 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx @@ -137,6 +137,7 @@ "Challenger 22", "Djinn", "Elemental", + "Gitaxian Underling", "Merfolk", "Merfolk Avatar", "Merfolk Fighter", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx index 7484d64f9f2..b8b51a39da2 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx @@ -136,6 +136,7 @@ "Efreet", "Fire Elemental", "Flame Elemental", + "Furnace Goblin", "Goblin", "Goblin Chief", "Goblin Warrior", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx index 32c421d6046..34ffc2a88ef 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx @@ -145,6 +145,7 @@ "Human guard", "Knight", "Monk", + "Orthodoxy Duelist", "White Dwarf", "White Wiz1", "White Wiz2", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx index cf3faf42af4..f3594ff88b4 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx @@ -67,6 +67,7 @@ "Dark Knight", "Death Knight", "Demon", + "Dross Gladiator", "Ghoul", "Ghost", "Harpy", diff --git a/forge-gui/res/adventure/Shandalar/world/enemies.json b/forge-gui/res/adventure/Shandalar/world/enemies.json index 8d45a5c0fc9..3f650a73a88 100644 --- a/forge-gui/res/adventure/Shandalar/world/enemies.json +++ b/forge-gui/res/adventure/Shandalar/world/enemies.json @@ -3366,7 +3366,7 @@ "name": "Copper Host Brutalizer", "sprite": "sprites/copperhostbrutalizer.atlas", "deck": [ - "decks/copperhostbrutalizer.dck" + "decks/copperhostbrutalizer.dck" ], "ai": "", "spawnRate": 1, From b4f724ebe868107b1389f6dd57e3561a365420b6 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 21 Apr 2023 18:55:33 +0200 Subject: [PATCH 45/98] Update invasion_of_ikoria_zilortha_apex_of_ikoria.txt --- .../upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt index 4b270504641..6ba4215041d 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt @@ -3,7 +3,7 @@ ManaCost:X G G Types:Battle Siege Defense:6 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSearch | TriggerDescription$ When CARDNAME enters the battlefield, search your library and/or graveyard for a non-Human creature card with mana value X or less and put it onto the battlefield. If you search your library this way, shuffle. -SVar:TrigSearch:DB$ ChangeZone | ChangeType$ Creature.YouCtrl+nonHuman+cmcLEX | Hidden$ True | Origin$ Library | OriginChoice$ True | OriginAlternative$ Graveyard | AlternativeMessage$ Would you like to search your library with this ability? If you do, your library will be shuffled. | Destination$ Battlefield | ShuffleNonMandatory$ True +SVar:TrigSearch:DB$ ChangeZone | ChangeType$ Creature.YouCtrl+nonHuman+cmcLEX | Hidden$ True | Origin$ Library | OriginAlternative$ Graveyard | AlternativeMessage$ Would you like to search your library with this ability? If you do, your library will be shuffled. | Destination$ Battlefield | ShuffleNonMandatory$ True SVar:X:Count$xPaid AlternateMode:DoubleFaced Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Ikoria enters the battlefield, search your library and/or graveyard for a non-Human creature card with mana value X or less and put it onto the battlefield. If you search your library this way, shuffle. @@ -17,4 +17,4 @@ Types:Legendary Creature Dinosaur PT:8/8 K:Reach S:Mode$ AssignCombatDamageAsUnblocked | ValidCard$ Creature.YouCtrl+nonHuman | Optional$ True | Description$ For each non-Human creature you control, you may have that creature assign its combat damage as though it weren't blocked. -Oracle:Reach\nFor each non-Human creature you control, you may have that creature assign its combat damage as though it weren't blocked. \ No newline at end of file +Oracle:Reach\nFor each non-Human creature you control, you may have that creature assign its combat damage as though it weren't blocked. From d4863dc35c615842b4b3dd6686e57438d452df17 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 21 Apr 2023 19:22:35 +0200 Subject: [PATCH 46/98] Update invasion_of_tarkir_defiant_thundermaw.txt --- .../upcoming/invasion_of_tarkir_defiant_thundermaw.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt index 10b14a39ba9..a26d964ba99 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -4,8 +4,8 @@ Types:Battle Siege Defense:5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouOwn | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBImmediateTrig -SVar:DBImmediateTrig:DB$ ImmediateTrigger | Execute$ TrigDamageBis | RememberObjects$ Remembered | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) -SVar:TrigDamageBis:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | SubAbility$ DBCleanup | TgtPrompt$ Select any other target | NumDmg$ X +SVar:DBImmediateTrig:DB$ ImmediateTrigger | Execute$ TrigDamageBis | RememberObjects$ Remembered | SubAbility$ DBCleanup | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +SVar:TrigDamageBis:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any other target | NumDmg$ X SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:TriggerRemembered$Amount/Plus.2 DeckHints:Type$Dragon From 71ee8d6b12abe376ef359ea0dfa6bd01bc618190 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 21 Apr 2023 19:44:29 +0200 Subject: [PATCH 47/98] update --- forge-gui/res/cardsfolder/upcoming/blot_out.txt | 10 ++++++++++ .../cardsfolder/upcoming/calix_guided_by_fate.txt | 11 +++++++++++ .../res/cardsfolder/upcoming/campus_renovation.txt | 11 +++++++++++ .../upcoming/danitha_new_benalias_light.txt | 11 +++++++++++ .../upcoming/kiora_sovereign_of_the_deep.txt | 14 ++++++++++++++ 5 files changed, 57 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/blot_out.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/campus_renovation.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/danitha_new_benalias_light.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt diff --git a/forge-gui/res/cardsfolder/upcoming/blot_out.txt b/forge-gui/res/cardsfolder/upcoming/blot_out.txt new file mode 100644 index 00000000000..1b4e990a130 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/blot_out.txt @@ -0,0 +1,10 @@ +Name:Blot Out +ManaCost:2 B +Types:Instant +A:SP$ ChooseCard | ValidTgts$ Opponent | Defined$ TargetedPlayer | Choices$ Creature.TargetedPlayerCtrl+cmcEQX,Planeswalker.TargetedPlayerCtrl+cmcEQX | ChoiceTitle$ Choose a creature or planeswalker with the highest mana value to sacrifice | Mandatory$ True | RememberChosen$ True | SubAbility$ DBExile | SpellDescription$ Target opponent exiles a creature or planeswalker they control with the greatest mana value among creatures and planeswalkers they control +SVar:DBExile:DB$ ChangeZone | DefinedPlayer$ Player.IsRemembered | Defined$ Card.IsRemembered | Destination$ Exile | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:SVar$Y/LimitMin.Z +SVar:Y:Count$Valid Creature.TargetedPlayerCtrl$GreatestCMC +SVar:Z:Count$Valid Planeswalker.TargetedPlayerCtrl$GreatestCMC +Oracle:Target opponent exiles a creature or planeswalker they control with the greatest mana value among creatures and planeswalkers they control \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt b/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt new file mode 100644 index 00000000000..3b63b8caca1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt @@ -0,0 +1,11 @@ +Name:Calix, Guided By Fate +ManaCost:1 G W +Types:Legendary Enchantment Creature Human Druid +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Enchantment.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Constellation — Whenever CARDNAME or another enchantment enters the battlefield under your control, put a +1/+1 counter on target creature. +SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ DamageDone | ValidSource$ Card.Self,Creature.enchanted+YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | ActivationLimit$ 1 | TriggerDescription$ Whenever CARDNAME or an enchantment creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn +SVar:TrigToken:DB$ CopyPermanent | Optional$ True | Choices$ Enchantment.nonLegendary+YouCtrl | NumCopies$ 1 | ChoiceTitle$ Choose a nonlegendary enchantment you control +DeckHas:Ability$Token +DeckNeeds:Type$Enchantment +Oracle:Constellation - Whenever Calix, Guided By Fate or another enchantment enters the battlefield under your control, put a +1/+1 counter on target creature.\nWhenever Calix, Guided By Fate or an enchantment creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/campus_renovation.txt b/forge-gui/res/cardsfolder/upcoming/campus_renovation.txt new file mode 100644 index 00000000000..dfc0d68e37e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/campus_renovation.txt @@ -0,0 +1,11 @@ +Name:Campus Renovation +ManaCost:3 R W +Types:Sorcery +A:SP$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Card.Artifact+YouOwn,Card.Enchantment+YouOwn | TgtPrompt$ Select up to one target artifact or enchantment card in your graveyard | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ ExileTwo | SpellDescription$ Return up to one target artifact or enchantment card from your graveyard to the battlefield. +SVar:ExileTwo:DB$ Dig | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top two cards of your library. Until the end of your next turn, you may play those cards. +SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ STPlay | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | Duration$ UntilTheEndOfYourNextTurn +SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until the end of your next turn, you may play the exiled cards. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHints:Type$Artifact|Enchantment +DeckHas:Ability$Graveyard +Oracle:Return up to one target artifact or enchantment card from your graveyard to the battlefield. Exile the top two cards of your library. Until the end of your next turn, you may play those cards. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/danitha_new_benalias_light.txt b/forge-gui/res/cardsfolder/upcoming/danitha_new_benalias_light.txt new file mode 100644 index 00000000000..b87db46eb66 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/danitha_new_benalias_light.txt @@ -0,0 +1,11 @@ +Name:Danitha, New Benalia's Light +ManaCost:1 G W +Types:Legendary Creature Human Knight +PT:2/3 +K:Vigilance +K:Trample +K:Lifelink +S:Mode$ Continuous | Affected$ Aura.YouOwn,Equipment.YouOwn | Condition$ PlayerTurn | MayPlay$ True | MayPlayLimit$ 1 | EffectZone$ Battlefield | AffectedZone$ Graveyard | Description$ Once during each of your turns, you may cast an Aura or Equipment spell from your graveyard. +DeckHints:Type$Aura|Equipment +DeckHas:Ability$Graveyard|LifeGain +Oracle:Vigilance, trample, lifelink\nOnce during each of your turns, you may cast an Aura or Equipment spell from your graveyard. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt b/forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt new file mode 100644 index 00000000000..555360cc015 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt @@ -0,0 +1,14 @@ +Name:Kiora, Sovereign of the Deep +ManaCost:3 G U +Types:Legendary Creature Merfolk Noble +PT:4/5 +K:Vigilance +K:Ward:3 +T:Mode$ SpellCast | ValidCard$ Card.Kraken+wasCastFromYourHandByYou,Card.Leviathan+wasCastFromYourHandByYou,Card.Octopus+wasCastFromYourHandByYou,Card.Serpent+wasCastFromYourHandByYou | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ Whenever you cast a Kraken, Leviathan, Octopus, or Serpent spell from your hand, look at the top X cards of your library, where X is that spell's mana value. You may cast a spell with mana value less than X from among them without paying its mana cost. Put the rest on the bottom of your library in a random order. +SVar:TrigDig:DB$ PeekAndReveal | Defined$ You | PeekAmount$ X | NoReveal$ True | RememberPeeked$ True | SubAbility$ DBPlay +SVar:DBPlay:DB$ Play | ValidZone$ Library | Valid$ Card.IsRemembered | ValidSA$ Spell.cmcLEX | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | ForgetPlayed$ True | SubAbility$ DBRestRandomOrder +SVar:DBRestRandomOrder:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | RandomOrder$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:TriggeredCard$CardManaCost +DeckNeeds:Type$Kraken|Leviathan|Octopus|Serpent +Oracle:Vigilance, ward {3}\nWhenever you cast a Kraken, Leviathan, Octopus, or Serpent spell from your hand, look at the top X cards of your library, where X is that spell's mana value. You may cast a spell with mana value less than X from among them without paying its mana cost. Put the rest on the bottom of your library in a random order. \ No newline at end of file From 27d343c78b5e0e679fe52ece0de2c068a73cdf07 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 21 Apr 2023 20:32:35 +0200 Subject: [PATCH 48/98] UPDATE --- forge-gui/res/cardsfolder/upcoming/blot_out.txt | 10 ---------- .../res/cardsfolder/upcoming/urborg_scavengers.txt | 12 ++++++++++++ 2 files changed, 12 insertions(+), 10 deletions(-) delete mode 100644 forge-gui/res/cardsfolder/upcoming/blot_out.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt diff --git a/forge-gui/res/cardsfolder/upcoming/blot_out.txt b/forge-gui/res/cardsfolder/upcoming/blot_out.txt deleted file mode 100644 index 1b4e990a130..00000000000 --- a/forge-gui/res/cardsfolder/upcoming/blot_out.txt +++ /dev/null @@ -1,10 +0,0 @@ -Name:Blot Out -ManaCost:2 B -Types:Instant -A:SP$ ChooseCard | ValidTgts$ Opponent | Defined$ TargetedPlayer | Choices$ Creature.TargetedPlayerCtrl+cmcEQX,Planeswalker.TargetedPlayerCtrl+cmcEQX | ChoiceTitle$ Choose a creature or planeswalker with the highest mana value to sacrifice | Mandatory$ True | RememberChosen$ True | SubAbility$ DBExile | SpellDescription$ Target opponent exiles a creature or planeswalker they control with the greatest mana value among creatures and planeswalkers they control -SVar:DBExile:DB$ ChangeZone | DefinedPlayer$ Player.IsRemembered | Defined$ Card.IsRemembered | Destination$ Exile | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:SVar$Y/LimitMin.Z -SVar:Y:Count$Valid Creature.TargetedPlayerCtrl$GreatestCMC -SVar:Z:Count$Valid Planeswalker.TargetedPlayerCtrl$GreatestCMC -Oracle:Target opponent exiles a creature or planeswalker they control with the greatest mana value among creatures and planeswalkers they control \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt b/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt new file mode 100644 index 00000000000..bdf6c930285 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt @@ -0,0 +1,12 @@ +Name:Urborg Scavengers +ManaCost:2 B +Types:Creature Spirit +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield or attacks, exile a card from a graveyard. Put a +1/+1 counter on CARDNAME. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, exile a card from a graveyard. +SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | SelectPrompt$ Select a card from a graveyard | Mandatory$ True | Hidden$ True | SubAbility$ DBCounter +SVar:DBCounter:DB$ PutCounter | Defined$ Self | CounterNum$ 1 | CounterType$ P1P1 +S:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self | CharacteristicDefining$ True | SharedKeywordsZone$ Exile | SharedRestrictions$ Creature.ExiledWithSource | AddKeyword$ Flying & First Strike & Double Strike & Deathtouch & Haste & Hexproof & Indestructible & Lifelink & Menace & Protection & Reach & Trample & Vigilance | Description$ CARDNAME has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. +DeckHas:AbilityGraveyard|Counters +SVar:HasAttackEffect:TRUE +Oracle:Whenever Urborg Scavengers enters the battlefield or attacks, exile target card from a graveyard. Put a +1/+1 counter on Urborg Scavengers.\nWhenever Urborg Scavengers enters the battlefield or attacks, exile target card from a graveyard. Put a +1/+1 counter on Urborg Scavengers.\nUrborg Scavengers has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. \ No newline at end of file From 5dd2f81d0f71266805b6a56f560231f82ba75437 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Fri, 21 Apr 2023 22:22:25 +0200 Subject: [PATCH 49/98] Update calix_guided_by_fate.txt --- forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt b/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt index 3b63b8caca1..6209db9858d 100644 --- a/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt +++ b/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt @@ -4,8 +4,8 @@ Types:Legendary Enchantment Creature Human Druid PT:2/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Enchantment.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Constellation — Whenever CARDNAME or another enchantment enters the battlefield under your control, put a +1/+1 counter on target creature. SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 -T:Mode$ DamageDone | ValidSource$ Card.Self,Creature.enchanted+YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | ActivationLimit$ 1 | TriggerDescription$ Whenever CARDNAME or an enchantment creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn +T:Mode$ DamageDone | ValidSource$ Card.Self,Creature.enchanted+YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | ResolvedLimit$ 1 | TriggerDescription$ Whenever NICKNAME or an enchanted creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn. SVar:TrigToken:DB$ CopyPermanent | Optional$ True | Choices$ Enchantment.nonLegendary+YouCtrl | NumCopies$ 1 | ChoiceTitle$ Choose a nonlegendary enchantment you control DeckHas:Ability$Token DeckNeeds:Type$Enchantment -Oracle:Constellation - Whenever Calix, Guided By Fate or another enchantment enters the battlefield under your control, put a +1/+1 counter on target creature.\nWhenever Calix, Guided By Fate or an enchantment creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn \ No newline at end of file +Oracle:Constellation — Whenever Calix, Guided by Fate or another enchantment enters the battlefield under your control, put a +1/+1 counter on target creature.\nWhenever Calix or an enchanted creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn. From b930e2be973778fc440b55b0f4cbc8332d297e9b Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 21 Apr 2023 17:01:30 -0400 Subject: [PATCH 50/98] MOC: Chaos Ensues!! --- .../src/main/java/forge/ai/SpellApiToAi.java | 2 + .../java/forge/game/ability/AbilityUtils.java | 12 +++ .../main/java/forge/game/ability/ApiType.java | 2 + .../game/ability/effects/BlankLineEffect.java | 16 ++++ .../ability/effects/ChaosEnsuesEffect.java | 74 +++++++++++++++++++ .../ability/effects/PlaneswalkEffect.java | 10 ++- .../game/ability/effects/RunChaosEffect.java | 5 +- .../game/ability/effects/VoteEffect.java | 7 +- .../java/forge/game/card/CardFactory.java | 10 ++- .../main/java/forge/game/player/Player.java | 13 +++- .../game/trigger/TriggerChaosEnsues.java | 63 ++++++++++++++++ .../java/forge/game/trigger/TriggerType.java | 1 + .../cardsfolder/a/academy_at_tolaria_west.txt | 9 ++- forge-gui/res/cardsfolder/a/agyrem.txt | 4 +- forge-gui/res/cardsfolder/a/akoum.txt | 4 +- forge-gui/res/cardsfolder/a/aretopolis.txt | 8 +- forge-gui/res/cardsfolder/a/astral_arena.txt | 6 +- forge-gui/res/cardsfolder/b/bant.txt | 4 +- .../res/cardsfolder/b/bloodhill_bastion.txt | 4 +- .../res/cardsfolder/b/breaking_entering.txt | 5 +- .../res/cardsfolder/c/celestine_reef.txt | 8 +- .../res/cardsfolder/c/cliffside_market.txt | 4 +- .../res/cardsfolder/e/edge_of_malacol.txt | 4 +- forge-gui/res/cardsfolder/e/eloren_wilds.txt | 6 +- .../cardsfolder/e/extract_from_darkness.txt | 7 +- .../res/cardsfolder/f/feeding_grounds.txt | 4 +- .../res/cardsfolder/f/fields_of_summer.txt | 4 +- forge-gui/res/cardsfolder/f/furnace_layer.txt | 4 +- forge-gui/res/cardsfolder/g/gavony.txt | 4 +- forge-gui/res/cardsfolder/g/glen_elendra.txt | 4 +- .../res/cardsfolder/g/glimmervoid_basin.txt | 4 +- forge-gui/res/cardsfolder/g/goldmeadow.txt | 4 +- forge-gui/res/cardsfolder/g/grand_ossuary.txt | 4 +- forge-gui/res/cardsfolder/g/grixis.txt | 4 +- .../cardsfolder/g/grove_of_the_dreampods.txt | 4 +- .../res/cardsfolder/g/guardian_of_faith.txt | 2 +- .../h/hedron_fields_of_agadeem.txt | 6 +- .../res/cardsfolder/h/horizon_boughs.txt | 4 +- forge-gui/res/cardsfolder/i/immersturm.txt | 4 +- .../res/cardsfolder/i/incremental_growth.txt | 2 +- .../res/cardsfolder/i/interplanar_tunnel.txt | 7 +- .../res/cardsfolder/i/isle_of_vesuva.txt | 4 +- .../res/cardsfolder/i/izzet_steam_maze.txt | 4 +- forge-gui/res/cardsfolder/j/jund.txt | 4 +- forge-gui/res/cardsfolder/k/kessig.txt | 4 +- .../res/cardsfolder/k/kharasha_foothills.txt | 4 +- .../res/cardsfolder/k/kilnspire_district.txt | 4 +- forge-gui/res/cardsfolder/k/krosa.txt | 4 +- .../cardsfolder/l/lair_of_the_ashen_idol.txt | 4 +- forge-gui/res/cardsfolder/l/lethe_lake.txt | 8 +- forge-gui/res/cardsfolder/l/llanowar.txt | 4 +- forge-gui/res/cardsfolder/m/minamo.txt | 4 +- .../res/cardsfolder/m/mirrored_depths.txt | 4 +- forge-gui/res/cardsfolder/m/mount_keralia.txt | 4 +- forge-gui/res/cardsfolder/m/murasa.txt | 4 +- forge-gui/res/cardsfolder/n/naar_isle.txt | 6 +- forge-gui/res/cardsfolder/n/naya.txt | 4 +- forge-gui/res/cardsfolder/n/nephalia.txt | 4 +- .../res/cardsfolder/n/norns_dominion.txt | 4 +- .../res/cardsfolder/o/onakke_catacomb.txt | 4 +- forge-gui/res/cardsfolder/o/orochi_colony.txt | 4 +- forge-gui/res/cardsfolder/o/orzhova.txt | 4 +- forge-gui/res/cardsfolder/o/otaria.txt | 4 +- forge-gui/res/cardsfolder/p/panopticon.txt | 6 +- .../res/cardsfolder/p/pools_of_becoming.txt | 6 +- forge-gui/res/cardsfolder/p/prahv.txt | 4 +- .../res/cardsfolder/q/quicksilver_sea.txt | 4 +- forge-gui/res/cardsfolder/r/ravens_run.txt | 11 ++- .../res/cardsfolder/s/sanctum_of_serra.txt | 4 +- forge-gui/res/cardsfolder/s/sea_of_sand.txt | 6 +- .../cardsfolder/s/selesnya_loft_gardens.txt | 4 +- forge-gui/res/cardsfolder/s/shiv.txt | 6 +- forge-gui/res/cardsfolder/s/skybreen.txt | 4 +- forge-gui/res/cardsfolder/s/sokenzan.txt | 4 +- .../res/cardsfolder/s/soul_of_windgrace.txt | 8 +- .../res/cardsfolder/s/stairs_to_infinity.txt | 4 +- forge-gui/res/cardsfolder/s/stensia.txt | 6 +- .../res/cardsfolder/s/stronghold_furnace.txt | 4 +- forge-gui/res/cardsfolder/t/takenuma.txt | 4 +- forge-gui/res/cardsfolder/t/talon_gates.txt | 4 +- forge-gui/res/cardsfolder/t/tazeem.txt | 4 +- forge-gui/res/cardsfolder/t/tember_city.txt | 4 +- .../res/cardsfolder/t/the_aether_flues.txt | 4 +- .../res/cardsfolder/t/the_dark_barony.txt | 6 +- forge-gui/res/cardsfolder/t/the_eon_fog.txt | 4 +- .../res/cardsfolder/t/the_fourth_sphere.txt | 6 +- .../res/cardsfolder/t/the_great_forest.txt | 4 +- .../res/cardsfolder/t/the_hippodrome.txt | 4 +- forge-gui/res/cardsfolder/t/the_maelstrom.txt | 6 +- .../res/cardsfolder/t/the_zephyr_maze.txt | 6 +- .../cardsfolder/t/trail_of_the_mage_rings.txt | 4 +- forge-gui/res/cardsfolder/t/truga_jungle.txt | 4 +- forge-gui/res/cardsfolder/t/turri_island.txt | 4 +- .../res/cardsfolder/u/undercity_reaches.txt | 6 +- forge-gui/res/cardsfolder/upcoming/esper.txt | 4 +- .../upcoming/firemane_commando.txt | 11 +++ .../cardsfolder/upcoming/norns_seedcore.txt | 9 +++ forge-gui/res/cardsfolder/upcoming/nyx.txt | 2 +- .../upcoming/path_of_the_animist.txt | 9 +++ .../upcoming/path_of_the_enigma.txt | 9 +++ .../upcoming/path_of_the_ghosthunter.txt | 11 +++ .../upcoming/path_of_the_pyromancer.txt | 13 ++++ .../upcoming/path_of_the_schemer.txt | 12 +++ .../the_fertile_lands_of_saulvinia.txt | 9 +++ .../cardsfolder/upcoming/the_great_aerie.txt | 2 +- .../res/cardsfolder/upcoming/towashi.txt | 4 +- forge-gui/res/cardsfolder/upcoming/unyaro.txt | 14 ++++ forge-gui/res/cardsfolder/v/velis_vel.txt | 6 +- .../res/cardsfolder/w/windriddle_palaces.txt | 4 +- 109 files changed, 504 insertions(+), 217 deletions(-) create mode 100644 forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java create mode 100644 forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java create mode 100644 forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java create mode 100644 forge-gui/res/cardsfolder/upcoming/firemane_commando.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/unyaro.txt diff --git a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java index 19657159607..b0ec07b06e0 100644 --- a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java @@ -32,6 +32,7 @@ public enum SpellApiToAi { .put(ApiType.BecomeMonarch, AlwaysPlayAi.class) .put(ApiType.BecomesBlocked, BecomesBlockedAi.class) .put(ApiType.BidLife, BidLifeAi.class) + .put(ApiType.BlankLine, AlwaysPlayAi.class) .put(ApiType.Bond, BondAi.class) .put(ApiType.Branch, AlwaysPlayAi.class) .put(ApiType.Camouflage, ChooseCardAi.class) @@ -40,6 +41,7 @@ public enum SpellApiToAi { .put(ApiType.ChangeX, AlwaysPlayAi.class) .put(ApiType.ChangeZone, ChangeZoneAi.class) .put(ApiType.ChangeZoneAll, ChangeZoneAllAi.class) + .put(ApiType.ChaosEnsues, AlwaysPlayAi.class) .put(ApiType.Charm, CharmAi.class) .put(ApiType.ChooseCard, ChooseCardAi.class) .put(ApiType.ChooseColor, ChooseColorAi.class) 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 a4b39e47d1f..bcc36751067 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -3580,6 +3580,18 @@ public class AbilityUtils { } return doXMath(amount, m, source, ctb); } + if (value.startsWith("PlaneswalkedToThisTurn")) { + int found = 0; + String name = value.split(" ")[1]; + List pwTo = player.getPlaneswalkedToThisTurn(); + for (Card c : pwTo) { + if (c.getName().equals(name)) { + found++; + break; + } + } + return doXMath(found, m, source, ctb); + } return doXMath(0, m, source, ctb); } diff --git a/forge-game/src/main/java/forge/game/ability/ApiType.java b/forge-game/src/main/java/forge/game/ability/ApiType.java index 06760ca1109..3d6a15de6f2 100644 --- a/forge-game/src/main/java/forge/game/ability/ApiType.java +++ b/forge-game/src/main/java/forge/game/ability/ApiType.java @@ -27,6 +27,7 @@ public enum ApiType { BecomeMonarch (BecomeMonarchEffect.class), BecomesBlocked (BecomesBlockedEffect.class), BidLife (BidLifeEffect.class), + BlankLine (BlankLineEffect.class), Block (BlockEffect.class), Bond (BondEffect.class), Branch (BranchEffect.class), @@ -37,6 +38,7 @@ public enum ApiType { ChangeX (ChangeXEffect.class), ChangeZone (ChangeZoneEffect.class), ChangeZoneAll (ChangeZoneAllEffect.class), + ChaosEnsues (ChaosEnsuesEffect.class), Charm (CharmEffect.class), ChooseCard (ChooseCardEffect.class), ChooseColor (ChooseColorEffect.class), diff --git a/forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java b/forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java new file mode 100644 index 00000000000..7eb821c2412 --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java @@ -0,0 +1,16 @@ +package forge.game.ability.effects; + +import forge.game.ability.SpellAbilityEffect; +import forge.game.spellability.SpellAbility; + +public class BlankLineEffect extends SpellAbilityEffect { + @Override + protected String getStackDescription(SpellAbility sa) { + return "\r\n"; + } + + @Override + public void resolve(SpellAbility sa) { + // this "effect" just allows spacing to look better for certain card displays + } +} diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java new file mode 100644 index 00000000000..cd9e3cc397a --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java @@ -0,0 +1,74 @@ +package forge.game.ability.effects; + +import com.google.common.collect.Lists; +import forge.game.Game; +import forge.game.ability.AbilityKey; +import forge.game.ability.AbilityUtils; +import forge.game.ability.SpellAbilityEffect; +import forge.game.card.Card; +import forge.game.player.Player; +import forge.game.spellability.SpellAbility; +import forge.game.trigger.Trigger; +import forge.game.trigger.TriggerType; +import forge.game.zone.ZoneType; + +import java.util.*; + +public class ChaosEnsuesEffect extends SpellAbilityEffect { + /** 311.7. Each plane card has a triggered ability that triggers “Whenever chaos ensues.” These are called + chaos abilities. Each one is indicated by a chaos symbol to the left of the ability, though the symbol + itself has no special rules meaning. This ability triggers if the chaos symbol is rolled on the planar + die (see rule 901.9b), if a resolving spell or ability says that chaos ensues, or if a resolving spell or + ability states that chaos ensues for a particular object. In the last case, the chaos ability can trigger + even if that plane card is still in the planar deck but revealed. A chaos ability is controlled by the + current planar controller. **/ + + @Override + public void resolve(SpellAbility sa) { + final Card host = sa.getHostCard(); + final Player activator = sa.getActivatingPlayer(); + final Game game = activator.getGame(); + + if (game.getActivePlanes() == null) { // not a planechase game, nothing happens + return; + } + + Map runParams = AbilityKey.mapFromPlayer(activator); + Map> tweakedTrigs = new HashMap<>(); + + List affected = Lists.newArrayList(); + if (sa.hasParam("Defined")) { + for (final Card c : AbilityUtils.getDefinedCards(host, sa.getParam("Defined"), sa)) { + for (Trigger t : c.getTriggers()) { + if (t.getMode() == TriggerType.ChaosEnsues) { // also allow current zone for any Defined + //String zones = t.getParam("TriggerZones"); + //t.putParam("TriggerZones", zones + "," + c.getZone().getZoneType().toString()); + EnumSet zones = (EnumSet) t.getActiveZone(); + tweakedTrigs.put(t.getId(), zones); + zones.add(c.getZone().getZoneType()); + t.setActiveZone(zones); + affected.add(c); + game.getTriggerHandler().registerOneTrigger(t); + } + } + } + runParams.put(AbilityKey.Affected, affected); + if (affected.isEmpty()) { // if no Defined has chaos ability, don't trigger non Defined + return; + } + } + + game.getTriggerHandler().runTrigger(TriggerType.ChaosEnsues, runParams,false); + + for (Map.Entry> e : tweakedTrigs.entrySet()) { + for (Card c : affected) { + for (Trigger t : c.getTriggers()) { + if (t.getId() == e.getKey()) { + EnumSet zones = e.getValue(); + t.setActiveZone(zones); + } + } + } + } + } +} diff --git a/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java index caac7f2b2c3..84d8827c0b4 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java @@ -13,8 +13,14 @@ public class PlaneswalkEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { Game game = sa.getActivatingPlayer().getGame(); - for (Player p : game.getPlayers()) { - p.leaveCurrentPlane(); + if (game.getActivePlanes() == null) { // not a planechase game, nothing happens + return; + } + + if (!sa.hasParam("DontPlaneswalkAway")) { + for (Player p : game.getPlayers()) { + p.leaveCurrentPlane(); + } } if (sa.hasParam("Defined")) { CardCollectionView destinations = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java index de2784f0418..a9de663737f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java @@ -20,13 +20,11 @@ public class RunChaosEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - Map map = AbilityKey.mapFromPlayer(sa.getActivatingPlayer()); - map.put(AbilityKey.Result, PlanarDice.Chaos); List validSA = Lists.newArrayList(); for (final Card c : getTargetCards(sa)) { for (Trigger t : c.getTriggers()) { - if (TriggerType.PlanarDice.equals(t.getMode()) && t.performTest(map)) { + if (t.getMode() == TriggerType.ChaosEnsues) { SpellAbility triggerSA = t.ensureAbility().copy(sa.getActivatingPlayer()); Player decider = sa.getActivatingPlayer(); @@ -44,5 +42,4 @@ public class RunChaosEffect extends SpellAbilityEffect { } sa.getActivatingPlayer().getController().orderAndPlaySimultaneousSa(validSA); } - } diff --git a/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java b/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java index 2305418b22a..71256adcc8a 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java @@ -6,6 +6,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import forge.util.Lang; import org.apache.commons.lang3.StringUtils; import com.google.common.collect.ArrayListMultimap; @@ -35,13 +36,13 @@ public class VoteEffect extends SpellAbilityEffect { @Override protected String getStackDescription(final SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - sb.append(StringUtils.join(getDefinedPlayersOrTargeted(sa), ", ")); - sb.append(" vote "); + sb.append(Lang.joinHomogenous(getDefinedPlayersOrTargeted(sa))).append(" vote "); if (sa.hasParam("VoteType")) { - sb.append(StringUtils.join(sa.getParam("VoteType").split(","), " or ")); + sb.append("for ").append(StringUtils.join(sa.getParam("VoteType").split(","), " or ")); } else if (sa.hasParam("VoteMessage")) { sb.append(sa.getParam("VoteMessage")); } + sb.append("."); return sb.toString(); } 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 4e1cc6a80ee..e4c43590940 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -350,9 +350,17 @@ public class CardFactory { planesWalkTrigger.setOverridingAbility(AbilityFactory.getAbility(rolledWalk, card)); card.addTrigger(planesWalkTrigger); + String chaosTrig = "Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Static$ True"; + + String rolledChaos = "DB$ ChaosEnsues"; + + Trigger chaosTrigger = TriggerHandler.parseTrigger(chaosTrig, card, true); + chaosTrigger.setOverridingAbility(AbilityFactory.getAbility(rolledChaos, card)); + card.addTrigger(chaosTrigger); + String specialA = "ST$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | Activator$ Player | SpecialAction$ True" + " | ActivationZone$ Command | SpellDescription$ Roll the planar dice. X is equal to the number of " + - "times you have previously taken this action this turn."; + "times you have previously taken this action this turn. | CostDesc$ {X}: "; SpellAbility planarRoll = AbilityFactory.getAbility(specialA, card); planarRoll.setSVar("X", "Count$PlanarDiceSpecialActionThisTurn"); diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index b02ad738922..77dc2a7a033 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -209,6 +209,7 @@ public class Player extends GameEntity implements Comparable { private Map maingameCardsMap = Maps.newHashMap(); private CardCollection currentPlanes = new CardCollection(); + private CardCollection planeswalkedToThisTurn = new CardCollection(); private PlayerStatistics stats = new PlayerStatistics(); private PlayerController controller; @@ -1918,6 +1919,10 @@ public class Player extends GameEntity implements Comparable { completedDungeons.clear(); } + public final List getPlaneswalkedToThisTurn() { + return planeswalkedToThisTurn; + } + public final void altWinBySpellEffect(final String sourceName) { if (cantWin()) { System.out.println("Tried to win, but currently can't."); @@ -2458,6 +2463,7 @@ public class Player extends GameEntity implements Comparable { setNumManaConversion(0); damageReceivedThisTurn.clear(); + planeswalkedToThisTurn.clear(); // set last turn nr if (game.getPhaseHandler().isPlayerTurn(this)) { @@ -2617,7 +2623,7 @@ public class Player extends GameEntity implements Comparable { * Then runs triggers. */ public void planeswalkTo(SpellAbility sa, final CardCollectionView destinations) { - System.out.println(getName() + ": planeswalk to " + destinations.toString()); + System.out.println(getName() + " planeswalks to " + destinations.toString()); currentPlanes.addAll(destinations); game.getView().updatePlanarPlayer(getView()); @@ -2625,8 +2631,9 @@ public class Player extends GameEntity implements Comparable { moveParams.put(AbilityKey.LastStateBattlefield, sa.getLastStateBattlefield()); moveParams.put(AbilityKey.LastStateGraveyard, sa.getLastStateGraveyard()); - for (Card c : currentPlanes) { + for (Card c : destinations) { game.getAction().moveTo(ZoneType.Command, c, sa, moveParams); + planeswalkedToThisTurn.add(c); //getZone(ZoneType.PlanarDeck).remove(c); //getZone(ZoneType.Command).add(c); } @@ -2634,7 +2641,7 @@ public class Player extends GameEntity implements Comparable { game.setActivePlanes(currentPlanes); //Run PlaneswalkedTo triggers here. final Map runParams = AbilityKey.newMap(); - runParams.put(AbilityKey.Cards, currentPlanes); + runParams.put(AbilityKey.Cards, destinations); game.getTriggerHandler().runTrigger(TriggerType.PlaneswalkedTo, runParams, false); view.updateCurrentPlaneName(currentPlanes.toString().replaceAll(" \\(.*","").replace("[","")); } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java b/forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java new file mode 100644 index 00000000000..787acf1650f --- /dev/null +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java @@ -0,0 +1,63 @@ +package forge.game.trigger; + +import forge.game.GameObject; +import forge.game.ability.AbilityKey; +import forge.game.card.Card; +import forge.game.spellability.SpellAbility; + +import java.util.Map; + +public class TriggerChaosEnsues extends Trigger { + + /** + *

+ * Constructor for Trigger_ChaosEnsues + *

+ * + * @param params + * a {@link java.util.HashMap} object. + * @param host + * a {@link forge.game.card.Card} object. + * @param intrinsic + * the intrinsic + */ + public TriggerChaosEnsues(final Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + /* (non-Javadoc) + * @see forge.card.trigger.Trigger#performTest(java.util.Map) + */ + @Override + public boolean performTest(Map runParams) { + if (!matchesValidParam("ValidPlayer", runParams.get(AbilityKey.Player))) { + return false; + } + if (runParams.containsKey(AbilityKey.Affected)) { + final Object o = runParams.get(AbilityKey.Affected); + if (o instanceof GameObject) { + final GameObject c = (GameObject) o; + if (!c.equals(this.getHostCard())) { + return false; + } + } else if (o instanceof Iterable) { + for (Object o2 : (Iterable) o) { + if (!o2.equals(this.getHostCard())) { + return false; + } + } + } + } + return true; + } + + @Override + public void setTriggeringObjects(SpellAbility sa, Map runParams) { + sa.setTriggeringObjectsFrom(runParams, AbilityKey.Player); + } + + @Override + public String getImportantStackObjects(SpellAbility sa) { + return ""; + } +} diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerType.java b/forge-game/src/main/java/forge/game/trigger/TriggerType.java index c0ef1b69bff..990af336a5b 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerType.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerType.java @@ -39,6 +39,7 @@ public enum TriggerType { ChangesController(TriggerChangesController.class), ChangesZone(TriggerChangesZone.class), ChangesZoneAll(TriggerChangesZoneAll.class), + ChaosEnsues(TriggerChaosEnsues.class), Clashed(TriggerClashed.class), ClassLevelGained(TriggerClassLevelGained.class), ConjureAll(TriggerConjureAll.class), diff --git a/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt b/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt index 72be95b3659..18c29be0598 100644 --- a/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt +++ b/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt @@ -1,9 +1,10 @@ Name:Academy at Tolaria West ManaCost:no cost Types:Plane Dominaria -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ AcademicDraw | TriggerDescription$ At the beginning of your end step, if you have no cards in hand, draw seven cards. +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | IsPresent$ Card.YouOwn | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ AcademicDraw | TriggerDescription$ At the beginning of your end step, if you have no cards in hand, draw seven cards. SVar:AcademicDraw:DB$ Draw | Defined$ You | NumCards$ 7 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, discard your hand. -SVar:RolledChaos:DB$ Discard | Mode$ Hand | Defined$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDiscard | TriggerDescription$ Whenever chaos ensues, discard your hand. +SVar:TrigDiscard:DB$ Discard | Mode$ Hand | Defined$ You SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | CardsInHandLE$ 2 -Oracle:At the beginning of your end step, if you have no cards in hand, draw seven cards.\nWhenever you roll {CHAOS}, discard your hand. +Deckhas:Ability$Discard +Oracle:At the beginning of your end step, if you have no cards in hand, draw seven cards.\nWhenever chaos ensues, discard your hand. diff --git a/forge-gui/res/cardsfolder/a/agyrem.txt b/forge-gui/res/cardsfolder/a/agyrem.txt index 0a6067f2cd5..2b9275191e8 100644 --- a/forge-gui/res/cardsfolder/a/agyrem.txt +++ b/forge-gui/res/cardsfolder/a/agyrem.txt @@ -10,9 +10,9 @@ T:Mode$ ChangesZone | ValidCard$ Creature.nonWhite | Origin$ Battlefield | Desti SVar:TrigDelay2:DB$ Effect | Name$ Agyrem Effect For non-White Creatures | Triggers$ TrigEOT2 | RememberObjects$ TriggeredCard | Duration$ Permanent SVar:TrigEOT2:Mode$ Phase | Phase$ End of Turn | Execute$ AgyremReturn2 | TriggerDescription$ Return creature to its owner's hand at the beginning of the next end step. SVar:AgyremReturn2:DB$ ChangeZone | Defined$ Remembered | Origin$ Graveyard | Destination$ Hand | SubAbility$ AgyremCleanup -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures can't attack you until a player planeswalks. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures can't attack you until a player planeswalks. SVar:RolledChaos:DB$ Effect | Name$ Agyrem Effect - Can't Attack | StaticAbilities$ STCantAttack | Triggers$ TrigPlaneswalk | Duration$ Permanent SVar:STCantAttack:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature | Target$ You | Description$ Creatures can't attack you until a player planeswalks. SVar:TrigPlaneswalk:Mode$ PlaneswalkedFrom | Execute$ AgyremCleanup | Static$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a white creature dies, return it to the battlefield under its owner's control at the beginning of the next end step.\nWhenever a nonwhite creature dies, return it to its owner's hand at the beginning of the next end step.\nWhenever you roll {CHAOS}, creatures can't attack you until a player planeswalks. +Oracle:Whenever a white creature dies, return it to the battlefield under its owner's control at the beginning of the next end step.\nWhenever a nonwhite creature dies, return it to its owner's hand at the beginning of the next end step.\nWhenever chaos ensues, creatures can't attack you until a player planeswalks. diff --git a/forge-gui/res/cardsfolder/a/akoum.txt b/forge-gui/res/cardsfolder/a/akoum.txt index 7ec5af49c89..0068edb6057 100644 --- a/forge-gui/res/cardsfolder/a/akoum.txt +++ b/forge-gui/res/cardsfolder/a/akoum.txt @@ -2,7 +2,7 @@ Name:Akoum ManaCost:no cost Types:Plane Zendikar S:Mode$ CastWithFlash | ValidCard$ Enchantment | ValidSA$ Spell | EffectZone$ Command | Caster$ Player | Description$ Players may cast enchantment spells as though they had flash. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, destroy target creature that isn't enchanted. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, destroy target creature that isn't enchanted. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Creature.unenchanted | TgtPrompt$ Select target creature that isn't enchanted SVar:AIRollPlanarDieParams:Mode$ Always | OppHasCreatureInPlay$ True | RollInMain1$ True -Oracle:Players may cast enchantment spells as though they had flash.\nWhenever you roll {CHAOS}, destroy target creature that isn't enchanted. +Oracle:Players may cast enchantment spells as though they had flash.\nWhenever chaos ensues, destroy target creature that isn't enchanted. diff --git a/forge-gui/res/cardsfolder/a/aretopolis.txt b/forge-gui/res/cardsfolder/a/aretopolis.txt index 1f15bf5f42e..a6a4a50bb4d 100644 --- a/forge-gui/res/cardsfolder/a/aretopolis.txt +++ b/forge-gui/res/cardsfolder/a/aretopolis.txt @@ -8,8 +8,8 @@ SVar:ScrollsOfLife:DB$ GainLife | Defined$ You | LifeAmount$ NumScrolls SVar:NumScrolls:Count$CardCounters.SCROLL T:Mode$ Always | TriggerZones$ Command | CheckSVar$ NumScrolls | SVarCompare$ GE10 | Execute$ RolledWalk | TriggerDescription$ When CARDNAME has ten or more scroll counters on it, planeswalk. SVar:RolledWalk:DB$ Planeswalk -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put a scroll counter on CARDNAME, then draw cards equal to the number of scroll counters on it. -SVar:RolledChaos:DB$ PutCounter | Defined$ Self | CounterType$ SCROLL | CounterNum$ 1 | SubAbility$ ScrollsOfKnowledge -SVar:ScrollsOfKnowledge:DB$ Draw | Defined$ You | NumCards$ NumScrolls +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigPutCounter | TriggerDescription$ Whenever chaos ensues, put a scroll counter on CARDNAME, then draw cards equal to the number of scroll counters on it. +SVar:TrigPutCounter:DB$ PutCounter | CounterType$ SCROLL | SubAbility$ ScrollsOfKnowledge +SVar:ScrollsOfKnowledge:DB$ Draw | NumCards$ NumScrolls SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:When you planeswalk to Aretopolis or at the beginning of your upkeep, put a scroll counter on Aretopolis, then you gain life equal to the number of scroll counters on it.\nWhen Aretopolis has ten or more scroll counters on it, planeswalk.\nWhenever you roll {CHAOS}, put a scroll counter on Aretopolis, then draw cards equal to the number of scroll counters on it. +Oracle:When you planeswalk to Aretopolis or at the beginning of your upkeep, put a scroll counter on Aretopolis, then you gain life equal to the number of scroll counters on it.\nWhen Aretopolis has ten or more scroll counters on it, planeswalk.\nWhenever chaos ensues, put a scroll counter on Aretopolis, then draw cards equal to the number of scroll counters on it. diff --git a/forge-gui/res/cardsfolder/a/astral_arena.txt b/forge-gui/res/cardsfolder/a/astral_arena.txt index 0bf2f017133..4fd4a2a5cd6 100644 --- a/forge-gui/res/cardsfolder/a/astral_arena.txt +++ b/forge-gui/res/cardsfolder/a/astral_arena.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kolbahan S:Mode$ AttackRestrict | EffectZone$ Command | MaxAttackers$ 1 | Description$ No more than one creature can attack each combat. S:Mode$ Continuous | EffectZone$ Command | GlobalRule$ No more than one creature can block each combat. | Description$ No more than one creature can block each combat. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 2 damage to each creature. -SVar:RolledChaos:DB$ DamageAll | NumDmg$ 2 | ValidCards$ Creature | ValidDescription$ each creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, CARDNAME deals 2 damage to each creature. +SVar:RolledChaos:DB$ DamageAll | NumDmg$ 2 | ValidCards$ Creature SVar:AIRollPlanarDieParams:Mode$ Random | MinTurn$ 5 -Oracle:No more than one creature can attack each combat.\nNo more than one creature can block each combat.\nWhenever you roll {CHAOS}, Astral Arena deals 2 damage to each creature. +Oracle:No more than one creature can attack each combat.\nNo more than one creature can block each combat.\nWhenever chaos ensues, Astral Arena deals 2 damage to each creature. diff --git a/forge-gui/res/cardsfolder/b/bant.txt b/forge-gui/res/cardsfolder/b/bant.txt index 124c7ff5036..7a6e65a1329 100644 --- a/forge-gui/res/cardsfolder/b/bant.txt +++ b/forge-gui/res/cardsfolder/b/bant.txt @@ -2,9 +2,9 @@ Name:Bant ManaCost:no cost Types:Plane Alara S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddKeyword$ Exalted | Description$ All creatures have exalted. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.Green,Creature.White,Creature.Blue | CounterType$ DIVINITY | CounterNum$ 1 | SubAbility$ DivineCharacter SVar:DivineCharacter:DB$ Animate | Defined$ Targeted | staticAbilities$ IndestructibleAspect | Duration$ Permanent SVar:IndestructibleAspect:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self+counters_GE1_DIVINITY | AddKeyword$ Indestructible SVar:AIRollPlanarDieParams:Mode$ Always | HasColorCreatureInPlay$ GWU -Oracle:All creatures have exalted. (Whenever a creature attacks alone, it gets +1/+1 until end of turn for each instance of exalted among permanents its controller controls.)\nWhenever you roll {CHAOS}, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. +Oracle:All creatures have exalted. (Whenever a creature attacks alone, it gets +1/+1 until end of turn for each instance of exalted among permanents its controller controls.)\nWhenever chaos ensues, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. diff --git a/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt b/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt index 640d5e437c9..23b23f1c97e 100644 --- a/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt +++ b/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Equilor T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Command | ValidCard$ Creature | Execute$ TrigPump | TriggerDescription$ Whenever a creature enters the battlefield, it gains double strike and haste until end of turn. SVar:TrigPump:DB$ Pump | Defined$ TriggeredCard | KW$ Double Strike & Haste -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, exile target nontoken creature you control, then return it to the battlefield under your control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile target nontoken creature you control, then return it to the battlefield under your control. SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature.nonToken+YouCtrl | TgtPrompt$ Select target non-Token creature you control | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ RestorationReturn SVar:RestorationReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | GainControl$ True SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | RollInMain1$ True -Oracle:Whenever a creature enters the battlefield, it gains double strike and haste until end of turn.\nWhenever you roll {CHAOS}, exile target nontoken creature you control, then return it to the battlefield under your control. +Oracle:Whenever a creature enters the battlefield, it gains double strike and haste until end of turn.\nWhenever chaos ensues, exile target nontoken creature you control, then return it to the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/b/breaking_entering.txt b/forge-gui/res/cardsfolder/b/breaking_entering.txt index 40578757c58..246d88cac07 100644 --- a/forge-gui/res/cardsfolder/b/breaking_entering.txt +++ b/forge-gui/res/cardsfolder/b/breaking_entering.txt @@ -11,8 +11,7 @@ ALTERNATE Name:Entering ManaCost:4 B R Types:Sorcery -A:SP$ ChooseCard | Cost$ 4 B R | Choices$ Creature | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBChangeZone | SpellDescription$ Put a creature card from a graveyard onto the battlefield under your control. It gains haste until end of turn. -SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ ChosenCard | GainControl$ True | RememberChanged$ True | SubAbility$ DBPump -SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | SubAbility$ DBCleanup +A:SP$ ChangeZone | ChangeType$ Creature | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | Hidden$ True | RememberChanged$ True | SubAbility$ DBPump | SpellDescription$ Put a creature card from a graveyard onto the battlefield under your control. It gains haste until end of turn. +SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | SubAbility$ DBCleanup | StackDescription$ None SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Put a creature card from a graveyard onto the battlefield under your control. It gains haste until end of turn.\nFuse (You may cast one or both halves of this card from your hand.) diff --git a/forge-gui/res/cardsfolder/c/celestine_reef.txt b/forge-gui/res/cardsfolder/c/celestine_reef.txt index fe5ed254da0..34a5685b47e 100644 --- a/forge-gui/res/cardsfolder/c/celestine_reef.txt +++ b/forge-gui/res/cardsfolder/c/celestine_reef.txt @@ -2,11 +2,11 @@ Name:Celestine Reef ManaCost:no cost Types:Plane Luvion S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withoutFlying+withoutIslandwalk | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Creatures without flying or islandwalk can't attack. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, until a player planeswalks, you can't lose the game and your opponents can't win the game. -SVar:RolledChaos:DB$ Effect | Name$ Celestine Reef Effect | StaticAbilities$ STCantlose,STCantWin | Triggers$ TrigPlaneswalk | Duration$ Permanent +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, until a player planeswalks, you can't lose the game and your opponents can't win the game. +SVar:RolledChaos:DB$ Effect | StaticAbilities$ STCantlose,STCantWin | Triggers$ TrigPlaneswalk | Duration$ Permanent SVar:STCantlose:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You can't lose the game. | Description$ Until a player planeswalks, you can't lose the game and your opponents can't win the game. -SVar:STCantWin:Mode$ Continuous | EffectZone$ Command | Affected$ Player.Opponent | AddKeyword$ You can't win the game. +SVar:STCantWin:Mode$ Continuous | EffectZone$ Command | Affected$ Opponent | AddKeyword$ You can't win the game. SVar:TrigPlaneswalk:Mode$ PlaneswalkedFrom | Execute$ DBCleanup | Static$ True SVar:DBCleanup:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Creatures without flying or islandwalk can't attack.\nWhenever you roll {CHAOS}, until a player planeswalks, you can't lose the game and your opponents can't win the game. +Oracle:Creatures without flying or islandwalk can't attack.\nWhenever chaos ensues, until a player planeswalks, you can't lose the game and your opponents can't win the game. diff --git a/forge-gui/res/cardsfolder/c/cliffside_market.txt b/forge-gui/res/cardsfolder/c/cliffside_market.txt index 3a9bb257acd..04e5c42a145 100644 --- a/forge-gui/res/cardsfolder/c/cliffside_market.txt +++ b/forge-gui/res/cardsfolder/c/cliffside_market.txt @@ -4,8 +4,8 @@ Types:Plane Mercadia T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigLife | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may exchange life totals with target player. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigLife | TriggerZones$ Command | Secondary$ True | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may exchange life totals with target player. SVar:TrigLife:DB$ ExchangeLife | Optional$ True | ValidTgts$ Player | TgtPrompt$ Select target player to exchange life totals with -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, exchange control of two target permanents that share a card type. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exchange control of two target permanents that share a card type. SVar:RolledChaos:DB$ ExchangeControl | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Permanent | TgtPrompt$ Select target permanents that share a permanent type | TargetsWithSameCardType$ True AI:RemoveDeck:All AI:RemoveDeck:Random -Oracle:When you planeswalk to Cliffside Market or at the beginning of your upkeep, you may exchange life totals with target player.\nWhenever you roll {CHAOS}, exchange control of two target permanents that share a card type. +Oracle:When you planeswalk to Cliffside Market or at the beginning of your upkeep, you may exchange life totals with target player.\nWhenever chaos ensues, exchange control of two target permanents that share a card type. diff --git a/forge-gui/res/cardsfolder/e/edge_of_malacol.txt b/forge-gui/res/cardsfolder/e/edge_of_malacol.txt index 74b0cccf0ff..b35267a3cf5 100644 --- a/forge-gui/res/cardsfolder/e/edge_of_malacol.txt +++ b/forge-gui/res/cardsfolder/e/edge_of_malacol.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Belenon R:Event$ Untap | ActiveZones$ Command | ValidCard$ Creature.YouCtrl | ReplaceWith$ RepPutCounter | UntapStep$ True | Description$ If a creature you control would untap during your untap step, put two +1/+1 counters on it instead. SVar:RepPutCounter:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | CounterNum$ 2 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap each creature you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap each creature you control. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Creature.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:If a creature you control would untap during your untap step, put two +1/+1 counters on it instead.\nWhenever you roll {CHAOS}, untap each creature you control. +Oracle:If a creature you control would untap during your untap step, put two +1/+1 counters on it instead.\nWhenever chaos ensues, untap each creature you control. diff --git a/forge-gui/res/cardsfolder/e/eloren_wilds.txt b/forge-gui/res/cardsfolder/e/eloren_wilds.txt index ac7eb180887..f17a3ab34eb 100644 --- a/forge-gui/res/cardsfolder/e/eloren_wilds.txt +++ b/forge-gui/res/cardsfolder/e/eloren_wilds.txt @@ -3,10 +3,10 @@ ManaCost:no cost Types:Plane Shandalar T:Mode$ TapsForMana | ValidCard$ Permanent | Execute$ TrigMana | TriggerZones$ Command | Static$ True | TriggerDescription$ Whenever a player taps a permanent for mana, that player adds one mana of any type that permanent produced. SVar:TrigMana:DB$ ManaReflected | ColorOrType$ Type | ReflectProperty$ Produced | Defined$ TriggeredActivator -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player can't cast spells until a player planeswalks. -SVar:RolledChaos:DB$ Effect | ValidTgts$ Player | IsCurse$ True | Name$ Eloren Wilds Effect | StaticAbilities$ STCantCast | Triggers$ TrigPlaneswalk | RememberObjects$ Targeted | Duration$ Permanent +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player can't cast spells until a player planeswalks. +SVar:RolledChaos:DB$ Effect | ValidTgts$ Player | IsCurse$ True | StaticAbilities$ STCantCast | Triggers$ TrigPlaneswalk | RememberObjects$ Targeted | Duration$ Permanent SVar:STCantCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Target player can't cast spells until a player planeswalks. SVar:TrigPlaneswalk:Mode$ PlaneswalkedFrom | Execute$ ExileSelf | Static$ True SVar:ExileSelf:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a player taps a permanent for mana, that player adds one mana of any type that permanent produced.\nWhenever you roll {CHAOS}, target player can't cast spells until a player planeswalks. +Oracle:Whenever a player taps a permanent for mana, that player adds one mana of any type that permanent produced.\nWhenever chaos ensues, target player can't cast spells until a player planeswalks. diff --git a/forge-gui/res/cardsfolder/e/extract_from_darkness.txt b/forge-gui/res/cardsfolder/e/extract_from_darkness.txt index 25e96fb7a2d..e7ae2c7ae97 100644 --- a/forge-gui/res/cardsfolder/e/extract_from_darkness.txt +++ b/forge-gui/res/cardsfolder/e/extract_from_darkness.txt @@ -1,9 +1,8 @@ Name:Extract from Darkness ManaCost:3 U B Types:Sorcery -A:SP$ Mill | Cost$ 3 U B | NumCards$ 2 | Defined$ Player | SubAbility$ DBChoose | SpellDescription$ Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. -SVar:DBChoose:DB$ ChooseCard | Defined$ You | Choices$ Creature | ChoiceZone$ Graveyard | Mandatory$ True | SubAbility$ DBReturn -SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ ChosenCard | GainControl$ True +A:SP$ Mill | NumCards$ 2 | Defined$ Player | SubAbility$ DBChoose | SpellDescription$ Each player mills two cards. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature | ChangeNum$ 1 | Mandatory$ True | GainControl$ True | SelectPrompt$ Select a creature card to return to the battlefield | Hidden$ True | StackDescription$ SpellDescription | SpellDescription$ Then you put a creature card from a graveyard onto the battlefield under your control. AI:RemoveDeck:Random -DeckHas:Ability$Graveyard +DeckHas:Ability$Mill|Graveyard Oracle:Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/f/feeding_grounds.txt b/forge-gui/res/cardsfolder/f/feeding_grounds.txt index a4d558d56c7..80ad0ed8aed 100644 --- a/forge-gui/res/cardsfolder/f/feeding_grounds.txt +++ b/forge-gui/res/cardsfolder/f/feeding_grounds.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Muraganda S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.Green | Type$ Spell | Amount$ 1 | Description$ Green spells cost {1} less to cast. S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.Red | Type$ Spell | Amount$ 1 | Description$ Red spells cost {1} less to cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBPutCounter | TriggerDescription$ Whenever you roll {CHAOS}, put X +1/+1 counters on target creature, where X is that creature's mana value. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ DBPutCounter | TriggerDescription$ Whenever chaos ensues, put X +1/+1 counters on target creature, where X is that creature's mana value. SVar:DBPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ Y SVar:Y:Targeted$CardManaCost SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Red spells cost {1} less to cast.\nGreen spells cost {1} less to cast.\nWhenever you roll {CHAOS}, put X +1/+1 counters on target creature, where X is that creature's mana value. +Oracle:Red spells cost {1} less to cast.\nGreen spells cost {1} less to cast.\nWhenever chaos ensues, put X +1/+1 counters on target creature, where X is that creature's mana value. diff --git a/forge-gui/res/cardsfolder/f/fields_of_summer.txt b/forge-gui/res/cardsfolder/f/fields_of_summer.txt index 69aa7773071..37c7b90f7db 100644 --- a/forge-gui/res/cardsfolder/f/fields_of_summer.txt +++ b/forge-gui/res/cardsfolder/f/fields_of_summer.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Moag T:Mode$ SpellCast | OptionalDecider$ TriggeredPlayer | TriggerZones$ Command | Execute$ LifeSummer | TriggerDescription$ Whenever a player casts a spell, that player may gain 2 life. SVar:LifeSummer:DB$ GainLife | Defined$ TriggeredPlayer | LifeAmount$ 2 -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may gain 10 life. +T:Mode$ ChaosEnsues | TriggerZones$ Command | OptionalDecider$ You | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may gain 10 life. SVar:RolledChaos:DB$ GainLife | LifeAmount$ 10 | Defined$ You SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a player casts a spell, that player may gain 2 life.\nWhenever you roll {CHAOS}, you may gain 10 life. +Oracle:Whenever a player casts a spell, that player may gain 2 life.\nWhenever chaos ensues, you may gain 10 life. diff --git a/forge-gui/res/cardsfolder/f/furnace_layer.txt b/forge-gui/res/cardsfolder/f/furnace_layer.txt index c07007cf2c1..93fccc2e662 100644 --- a/forge-gui/res/cardsfolder/f/furnace_layer.txt +++ b/forge-gui/res/cardsfolder/f/furnace_layer.txt @@ -6,7 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ FurnaceDiscard | Tri SVar:FurnaceDiscard:DB$ Discard | ValidTgts$ Player | TargetsAtRandom$ True | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBLoseLife SVar:DBLoseLife:DB$ LoseLife | Defined$ Targeted | LifeAmount$ 3 | ConditionDefined$ Remembered | ConditionPresent$ Land | ConditionCompare$ GE1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever you roll {CHAOS}, you may destroy target nonland permanent. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever chaos ensues, you may destroy target nonland permanent. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent to destroy SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:When you planeswalk to Furnace Layer or at the beginning of your upkeep, select target player at random. That player discards a card. If that player discards a land card this way, they lose 3 life.\nWhenever you roll {CHAOS}, you may destroy target nonland permanent. +Oracle:When you planeswalk to Furnace Layer or at the beginning of your upkeep, select target player at random. That player discards a card. If that player discards a land card this way, they lose 3 life.\nWhenever chaos ensues, you may destroy target nonland permanent. diff --git a/forge-gui/res/cardsfolder/g/gavony.txt b/forge-gui/res/cardsfolder/g/gavony.txt index 9386453d0fa..8746a233101 100644 --- a/forge-gui/res/cardsfolder/g/gavony.txt +++ b/forge-gui/res/cardsfolder/g/gavony.txt @@ -2,7 +2,7 @@ Name:Gavony ManaCost:no cost Types:Plane Innistrad S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddKeyword$ Vigilance | Description$ All creatures have vigilance. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures you control gain indestructible until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control gain indestructible until end of turn. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Indestructible SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:All creatures have vigilance.\nWhenever you roll {CHAOS}, creatures you control gain indestructible until end of turn. +Oracle:All creatures have vigilance.\nWhenever chaos ensues, creatures you control gain indestructible until end of turn. diff --git a/forge-gui/res/cardsfolder/g/glen_elendra.txt b/forge-gui/res/cardsfolder/g/glen_elendra.txt index f4c0254ef80..4ed1763304f 100644 --- a/forge-gui/res/cardsfolder/g/glen_elendra.txt +++ b/forge-gui/res/cardsfolder/g/glen_elendra.txt @@ -4,7 +4,7 @@ Types:Plane Lorwyn T:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ You | TriggerZones$ Command | OptionalDecider$ You | Execute$ TrigExchange | TriggerDescription$ At end of combat, you may exchange control of target creature you control that dealt combat damage to a player this combat and target creature that player controls. SVar:TrigExchange:DB$ Pump | ValidTgts$ Creature.YouCtrl+dealtCombatDamageThisCombat | TgtPrompt$ Select target creature you control that dealt combat damage to a player | SubAbility$ DBExchange SVar:DBExchange:DB$ ExchangeControl | Defined$ ParentTarget | ValidTgts$ Creature.ControlledBy Player.wasDealtCombatDamageThisCombatBy ParentTarget | TgtPrompt$ Select target creature that player controls. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, gain control of target creature you own. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, gain control of target creature you own. SVar:RolledChaos:DB$ GainControl | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature you own to gain control of AI:RemoveDeck:All -Oracle:At end of combat, you may exchange control of target creature you control that dealt combat damage to a player this combat and target creature that player controls.\nWhenever you roll {CHAOS}, gain control of target creature you own. +Oracle:At end of combat, you may exchange control of target creature you control that dealt combat damage to a player this combat and target creature that player controls.\nWhenever chaos ensues, gain control of target creature you own. diff --git a/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt b/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt index d500b16b03b..54163fcbb34 100644 --- a/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt +++ b/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Mirrodin T:Mode$ SpellCast | ValidSA$ Instant.singleTarget,Sorcery.singleTarget | Execute$ TrigCopy | TriggerZones$ Command | TriggerDescription$ Whenever a player casts an instant or sorcery spell with a single target, that player copies that spell for each other spell, permanent, card not on the battlefield, and/or player the spell could target. Each copy targets a different one of them. SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | Controller$ TriggeredActivator | CopyForEachCanTarget$ Spell,Permanent,Card,Player -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. SVar:RolledChaos:DB$ RepeatEach | RepeatPlayers$ NonTargetedController | RepeatSubAbility$ DBCopy | ValidTgts$ Creature | TgtPrompt$ Select target creature | ChangeZoneTable$ True SVar:DBCopy:DB$ CopyPermanent | Defined$ ParentTarget | Controller$ Remembered AI:RemoveDeck:All -Oracle:Whenever a player casts an instant or sorcery spell with a single target, that player copies that spell for each other spell, permanent, card not on the battlefield, and/or player the spell could target. Each copy targets a different one of them.\nWhenever you roll {CHAOS}, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. +Oracle:Whenever a player casts an instant or sorcery spell with a single target, that player copies that spell for each other spell, permanent, card not on the battlefield, and/or player the spell could target. Each copy targets a different one of them.\nWhenever chaos ensues, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. diff --git a/forge-gui/res/cardsfolder/g/goldmeadow.txt b/forge-gui/res/cardsfolder/g/goldmeadow.txt index ad1bfa832f9..b1dca3f9091 100644 --- a/forge-gui/res/cardsfolder/g/goldmeadow.txt +++ b/forge-gui/res/cardsfolder/g/goldmeadow.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Lorwyn T:Mode$ ChangesZone | ValidCard$ Land | Destination$ Battlefield | Execute$ TripleGoat | TriggerZones$ Command | TriggerDescription$ Whenever a land enters the battlefield, that land's controller creates three 0/1 white Goat creature tokens. SVar:TripleGoat:DB$ Token | TokenScript$ w_0_1_goat | TokenOwner$ TriggeredCardController | TokenAmount$ 3 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create a 0/1 white Goat creature token. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 0/1 white Goat creature token. SVar:RolledChaos:DB$ Token | TokenScript$ w_0_1_goat | TokenOwner$ You | TokenAmount$ 1 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a land enters the battlefield, that land's controller creates three 0/1 white Goat creature tokens.\nWhenever you roll {CHAOS}, create a 0/1 white Goat creature token. +Oracle:Whenever a land enters the battlefield, that land's controller creates three 0/1 white Goat creature tokens.\nWhenever chaos ensues, create a 0/1 white Goat creature token. diff --git a/forge-gui/res/cardsfolder/g/grand_ossuary.txt b/forge-gui/res/cardsfolder/g/grand_ossuary.txt index 9ea1d1844d8..28154d3bab0 100644 --- a/forge-gui/res/cardsfolder/g/grand_ossuary.txt +++ b/forge-gui/res/cardsfolder/g/grand_ossuary.txt @@ -5,7 +5,7 @@ T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ SVar:OssuaryCounters:DB$ PutCounter | ValidTgts$ Creature | TargetsWithDefinedController$ TriggeredCardController | TargetingPlayer$ TriggeredCardController | TgtPrompt$ Select target creature you control to distribute counters to | CounterType$ P1P1 | CounterNum$ OssuaryX | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ OssuaryX SVar:OssuaryX:TriggeredCard$CardPower SVar:MaxTgts:TriggeredCardController$Valid Creature.YouCtrl -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. SVar:RolledChaos:DB$ ChangeZoneAll | ChangeType$ Creature | Imprint$ True | Origin$ Battlefield | Destination$ Exile | SubAbility$ OssuaryRepeat SVar:OssuaryRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ OssuaryTokens | SubAbility$ WalkAway | ChangeZoneTable$ True SVar:OssuaryTokens:DB$ Token | TokenAmount$ OsX | TokenScript$ g_1_1_saproling | TokenOwner$ Player.IsRemembered @@ -13,4 +13,4 @@ SVar:WalkAway:DB$ Planeswalk | SubAbility$ ClearImprinted SVar:ClearImprinted:DB$ Cleanup | ClearImprinted$ True SVar:OsX:ImprintedLKI$FilterControlledByRemembered_CardPower SVar:AIRollPlanarDieParams:Mode$ Random | MinTurn$ 5 -Oracle:Whenever a creature dies, its controller distributes a number of +1/+1 counters equal to its power among any number of target creatures they control.\nWhenever you roll {CHAOS}, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. +Oracle:Whenever a creature dies, its controller distributes a number of +1/+1 counters equal to its power among any number of target creatures they control.\nWhenever chaos ensues, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. diff --git a/forge-gui/res/cardsfolder/g/grixis.txt b/forge-gui/res/cardsfolder/g/grixis.txt index b41573bb3fa..8c213eafeb7 100644 --- a/forge-gui/res/cardsfolder/g/grixis.txt +++ b/forge-gui/res/cardsfolder/g/grixis.txt @@ -2,7 +2,7 @@ Name:Grixis ManaCost:no cost Types:Plane Alara S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Graveyard | Affected$ Creature.YouOwn+Blue,Creature.YouOwn+Red,Creature.YouOwn+Black | AddKeyword$ Unearth:CardManaCost | Description$ Blue, black, and/or red creature cards in your graveyard have unearth. The unearth cost is equal to the card's mana cost. (Pay the card's mana cost: Return it to the battlefield. The creature gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.) -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put target creature card from a graveyard onto the battlefield under your control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put target creature card from a graveyard onto the battlefield under your control. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | TgtPrompt$ Choose target creature card in a graveyard | ValidTgts$ Creature SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Blue, black, and/or red creature cards in your graveyard have unearth. The unearth cost is equal to the card's mana cost. (Pay the card's mana cost: Return it to the battlefield. The creature gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)\nWhenever you roll {CHAOS}, put target creature card from a graveyard onto the battlefield under your control. +Oracle:Blue, black, and/or red creature cards in your graveyard have unearth. The unearth cost is equal to the card's mana cost. (Pay the card's mana cost: Return it to the battlefield. The creature gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)\nWhenever chaos ensues, put target creature card from a graveyard onto the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt b/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt index 2b194426e3c..987afd9de8c 100644 --- a/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt +++ b/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt @@ -4,7 +4,7 @@ Types:Plane Fabacin T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ DreampodsDig | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ DreampodsDig | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order. SVar:DreampodsDig:DB$ DigUntil | Valid$ Creature | ValidDescription$ creature | FoundDestination$ Battlefield | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target creature card from your graveyard to the battlefield. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature card from your graveyard to the battlefield. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 -Oracle:When you planeswalk to Grove of the Dreampods or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order.\nWhenever you roll {CHAOS}, return target creature card from your graveyard to the battlefield. +Oracle:When you planeswalk to Grove of the Dreampods or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order.\nWhenever chaos ensues, return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/g/guardian_of_faith.txt b/forge-gui/res/cardsfolder/g/guardian_of_faith.txt index 243dc3fa146..38fa19187c5 100644 --- a/forge-gui/res/cardsfolder/g/guardian_of_faith.txt +++ b/forge-gui/res/cardsfolder/g/guardian_of_faith.txt @@ -5,6 +5,6 @@ PT:3/2 K:Flash K:Vigilance T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPhaseOut | TriggerDescription$ When CARDNAME enters the battlefield, any number of other target creatures you control phase out. (Treat them and anything attached to them as though they don't exist until their controller's next turn.) -SVar:TrigPhaseOut:DB$ Phases | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select other creature | TargetMin$ 0 | TargetMax$ MaxTgts | SelectPrompt$ Choose any number of creatures you control | Duration$ UntilHostLeavesPlay +SVar:TrigPhaseOut:DB$ Phases | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select any number of other target creatures you control | TargetMin$ 0 | TargetMax$ MaxTgts SVar:MaxTgts:Count$Valid Creature.Other+YouCtrl Oracle:Flash\nVigilance\nWhen Guardian of Faith enters the battlefield, any number of other target creatures you control phase out. (Treat them and anything attached to them as though they don't exist until their controller's next turn.) diff --git a/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt b/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt index 581b7282b6c..30fd2e83ce7 100644 --- a/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt +++ b/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt @@ -2,7 +2,7 @@ Name:Hedron Fields of Agadeem ManaCost:no cost Types:Plane Zendikar S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.powerGE7 | AddHiddenKeyword$ CARDNAME can't attack or block. | Description$ Creatures with power 7 or greater can't attack or block. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) -SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ c_7_7_eldrazi_annihilator | TokenOwner$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) +SVar:RolledChaos:DB$ Token | TokenScript$ c_7_7_eldrazi_annihilator SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Creatures with power 7 or greater can't attack or block.\nWhenever you roll {CHAOS}, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) +Oracle:Creatures with power 7 or greater can't attack or block.\nWhenever chaos ensues, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) diff --git a/forge-gui/res/cardsfolder/h/horizon_boughs.txt b/forge-gui/res/cardsfolder/h/horizon_boughs.txt index cabe1ece4ff..06fad108964 100644 --- a/forge-gui/res/cardsfolder/h/horizon_boughs.txt +++ b/forge-gui/res/cardsfolder/h/horizon_boughs.txt @@ -2,7 +2,7 @@ Name:Horizon Boughs ManaCost:no cost Types:Plane Pyrulea S:Mode$ Continuous | EffectZone$ Command | Affected$ Permanent | AddHiddenKeyword$ CARDNAME untaps during each other player's untap step. | Description$ All permanents untap during each player's untap step. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBFetch | TriggerDescription$ Whenever you roll {CHAOS}, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ DBFetch | TriggerDescription$ Whenever chaos ensues, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. SVar:DBFetch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 3 | ShuffleNonMandatory$ True SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:All permanents untap during each player's untap step.\nWhenever you roll {CHAOS}, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. +Oracle:All permanents untap during each player's untap step.\nWhenever chaos ensues, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. diff --git a/forge-gui/res/cardsfolder/i/immersturm.txt b/forge-gui/res/cardsfolder/i/immersturm.txt index ab5044d5467..52038fe830c 100644 --- a/forge-gui/res/cardsfolder/i/immersturm.txt +++ b/forge-gui/res/cardsfolder/i/immersturm.txt @@ -4,9 +4,9 @@ Types:Plane Valla T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Command | Execute$ TrigDamage | OptionalDecider$ TriggeredCardController | TriggerDescription$ Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice. SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ Y | DamageSource$ TriggeredCard | TargetingPlayer$ TriggeredCardController SVar:Y:TriggeredCard$CardPower -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, exile target creature, then return it to the battlefield under its owner's control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile target creature, then return it to the battlefield under its owner's control. SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | SubAbility$ RestorationReturn SVar:RestorationReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice.\nWhenever you roll {CHAOS}, exile target creature, then return it to the battlefield under its owner's control. +Oracle:Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice.\nWhenever chaos ensues, exile target creature, then return it to the battlefield under its owner's control. diff --git a/forge-gui/res/cardsfolder/i/incremental_growth.txt b/forge-gui/res/cardsfolder/i/incremental_growth.txt index e9090bc7128..f6644860a8f 100644 --- a/forge-gui/res/cardsfolder/i/incremental_growth.txt +++ b/forge-gui/res/cardsfolder/i/incremental_growth.txt @@ -1,7 +1,7 @@ Name:Incremental Growth ManaCost:3 G G Types:Sorcery -A:SP$ PutCounter | Cost$ 3 G G | ValidTgts$ Creature | TgtPrompt$ Select target creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPutTwo | SpellDescription$ Put a +1/+1 counter on target creature, two +1/+1 counters on another target creature, and three +1/+1 counters on a third target creature. +A:SP$ PutCounter | ValidTgts$ Creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPutTwo | SpellDescription$ Put a +1/+1 counter on target creature, two +1/+1 counters on another target creature, and three +1/+1 counters on a third target creature. SVar:DBPutTwo:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select another target creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ DBPutThree SVar:DBPutThree:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select a third target creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 3 DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt b/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt index b51e88b5131..5bde7091ffc 100644 --- a/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt +++ b/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt @@ -2,6 +2,9 @@ Name:Interplanar Tunnel ManaCost:no cost Types:Phenomenon T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ When you encounter CARDNAME, reveal cards from the top of your planar deck until you reveal five plane cards. Put a plane card from among them on top of your planar deck, then put the rest of the revealed cards on the bottom in a random order. (Then planeswalk away from this phenomenon.) -SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | SourceZone$ PlanarDeck | DestinationZone$ PlanarDeck | DestinationZone2$ PlanarDeck | LibraryPosition$ 0 | ChangeValid$ Plane | RestRandomOrder$ True | SubAbility$ Replaneswalk -SVar:Replaneswalk:DB$ Planeswalk | Cost$ 0 +SVar:TrigDig:DB$ DigUntil | Amount$ 5 | Valid$ Plane | DigZone$ PlanarDeck | ImprintFound$ True | RememberRevealed$ True | FoundDestination$ PlanarDeck | RevealedDestination$ PlanarDeck | SubAbility$ DBPutOnTop +SVar:PutOnTop:DB$ ChangeZone | ChangeType$ Card.IsImprinted | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ 0 | ForgetChanged$ True | SubAbility$ DBRestOnBottom +SVar:RestOnBottom:DB$ ChangeZone | Defined$ Remembered | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ -1 | RandomOrder$ True | SubAbility$ Replaneswalk +SVar:Replaneswalk:DB$ Planeswalk | Cost$ 0 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True Oracle:When you encounter Interplanar Tunnel, reveal cards from the top of your planar deck until you reveal five plane cards. Put a plane card from among them on top of your planar deck, then put the rest of the revealed cards on the bottom in a random order. (Then planeswalk away from this phenomenon.) diff --git a/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt b/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt index 73343704809..2406a4040b3 100644 --- a/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt +++ b/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Dominaria T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonToken | TriggerZones$ Command | Execute$ TrigVesuvaCopy | TriggerDescription$ Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature. SVar:TrigVesuvaCopy:DB$ CopyPermanent | Defined$ TriggeredCardLKICopy | Controller$ TriggeredCardController -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, destroy target creature and all other creatures with the same name as that creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, destroy target creature and all other creatures with the same name as that creature. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Creature | SubAbility$ DestroyOtherAll SVar:DestroyOtherAll:DB$ DestroyAll | ValidCards$ Targeted.sameName+Other SVar:AIRollPlanarDieParams:Mode$ Always | OppHasCreatureInPlay$ True -Oracle:Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature.\nWhenever you roll {CHAOS}, destroy target creature and all other creatures with the same name as that creature. +Oracle:Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature.\nWhenever chaos ensues, destroy target creature and all other creatures with the same name as that creature. diff --git a/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt b/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt index 85e00e4bbef..fb5553eca90 100644 --- a/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt +++ b/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ Player | Execute$ TrigCopy | TriggerZones$ Command | TriggerDescription$ Whenever a player casts an instant or sorcery spell, that player copies it. The player may choose new targets for the copy. SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | Controller$ TriggeredActivator | MayChooseTarget$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, instant and sorcery spells you cast this turn cost {3} less to cast. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, instant and sorcery spells you cast this turn cost {3} less to cast. SVar:RolledChaos:DB$ Effect | StaticAbilities$ ReduceSPcost SVar:ReduceSPcost:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Instant,Sorcery | Type$ Spell | Activator$ You | Amount$ 3 | Description$ Instant and sorcery spells you cast this turn cost 3 less to cast. SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True -Oracle:Whenever a player casts an instant or sorcery spell, that player copies it. The player may choose new targets for the copy.\nWhenever you roll {CHAOS}, instant and sorcery spells you cast this turn cost {3} less to cast. +Oracle:Whenever a player casts an instant or sorcery spell, that player copies it. The player may choose new targets for the copy.\nWhenever chaos ensues, instant and sorcery spells you cast this turn cost {3} less to cast. diff --git a/forge-gui/res/cardsfolder/j/jund.txt b/forge-gui/res/cardsfolder/j/jund.txt index b7f201d24a8..cf49426e987 100644 --- a/forge-gui/res/cardsfolder/j/jund.txt +++ b/forge-gui/res/cardsfolder/j/jund.txt @@ -3,6 +3,6 @@ ManaCost:no cost Types:Plane Alara T:Mode$ SpellCast | ValidCard$ Creature.Black,Creature.Red,Creature.Green | ValidActivatingPlayer$ Player | TriggerZones$ Command | Execute$ DevourPump | TriggerDescription$ Whenever a player casts a black, red, or green creature spell, it gains devour 5. (As the creature enters the battlefield, its controller may sacrifice any number of creatures. The creature enters the battlefield with five times that many +1/+1 counters on it.) SVar:DevourPump:DB$ Animate | Defined$ TriggeredCard | Keywords$ Devour:5 | Duration$ Permanent -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create two 1/1 red Goblin creature tokens. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create two 1/1 red Goblin creature tokens. SVar:RolledChaos:DB$ Token | TokenAmount$ 2 | TokenScript$ r_1_1_goblin | TokenOwner$ You -Oracle:Whenever a player casts a black, red, or green creature spell, it gains devour 5. (As the creature enters the battlefield, its controller may sacrifice any number of creatures. The creature enters the battlefield with five times that many +1/+1 counters on it.)\nWhenever you roll {CHAOS}, create two 1/1 red Goblin creature tokens. +Oracle:Whenever a player casts a black, red, or green creature spell, it gains devour 5. (As the creature enters the battlefield, its controller may sacrifice any number of creatures. The creature enters the battlefield with five times that many +1/+1 counters on it.)\nWhenever chaos ensues, create two 1/1 red Goblin creature tokens. diff --git a/forge-gui/res/cardsfolder/k/kessig.txt b/forge-gui/res/cardsfolder/k/kessig.txt index 84df9c6738a..e25bc15a0d7 100644 --- a/forge-gui/res/cardsfolder/k/kessig.txt +++ b/forge-gui/res/cardsfolder/k/kessig.txt @@ -2,8 +2,8 @@ Name:Kessig ManaCost:no cost Types:Plane Innistrad R:Event$ DamageDone | Prevent$ True | IsCombat$ True | ValidSource$ Creature.nonWerewolf | Description$ Prevent all combat damage that would be dealt by non-Werewolf creatures. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. SVar:RolledChaos:DB$ AnimateAll | ValidCards$ Creature.YouCtrl | Types$ Werewolf | SubAbility$ DBPump SVar:DBPump:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Trample | NumAtt$ 2 | NumDef$ 2 SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True | HasCreatureInPlay$ True -Oracle:Prevent all combat damage that would be dealt by non-Werewolf creatures.\nWhenever you roll {CHAOS}, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. +Oracle:Prevent all combat damage that would be dealt by non-Werewolf creatures.\nWhenever chaos ensues, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. diff --git a/forge-gui/res/cardsfolder/k/kharasha_foothills.txt b/forge-gui/res/cardsfolder/k/kharasha_foothills.txt index 7e0d3d1f088..a33d458eb97 100644 --- a/forge-gui/res/cardsfolder/k/kharasha_foothills.txt +++ b/forge-gui/res/cardsfolder/k/kharasha_foothills.txt @@ -7,10 +7,10 @@ SVar:DBCopy:DB$ CopyPermanent | Defined$ TriggeredAttacker | NumCopies$ 1 | Toke # The DelayedTrigger is for all player, not just for each attacking, so can't use AtEOT there SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End Of Turn | Execute$ TrigExile | RememberObjects$ ImprintedLKI | TriggerDescription$ At the beginning of the next end step, exile those tokens. | SubAbility$ DBCleanup SVar:TrigExile:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Battlefield | Destination$ Exile -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may sacrifice any number of creatures. If you do, CARDNAME deals that much damage to target creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may sacrifice any number of creatures. If you do, CARDNAME deals that much damage to target creature. SVar:RolledChaos:DB$ Sacrifice | Defined$ You | Amount$ SacX | SacValid$ Creature | RememberSacrificed$ True | Optional$ True | SubAbility$ DBDmg SVar:SacX:Count$Valid Creature.YouCtrl SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature | NumDmg$ DmgX | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True SVar:DmgX:Remembered$Amount -Oracle:Whenever a creature you control attacks a player, for each other opponent, you may create a token that's a copy of that creature, tapped and attacking that opponent. Exile those tokens at the beginning of the next end step.\nWhenever you roll {CHAOS}, you may sacrifice any number of creatures. If you do, Kharasha Foothills deals that much damage to target creature. +Oracle:Whenever a creature you control attacks a player, for each other opponent, you may create a token that's a copy of that creature, tapped and attacking that opponent. Exile those tokens at the beginning of the next end step.\nWhenever chaos ensues, you may sacrifice any number of creatures. If you do, Kharasha Foothills deals that much damage to target creature. diff --git a/forge-gui/res/cardsfolder/k/kilnspire_district.txt b/forge-gui/res/cardsfolder/k/kilnspire_district.txt index c7fdbd02d14..5064f909446 100644 --- a/forge-gui/res/cardsfolder/k/kilnspire_district.txt +++ b/forge-gui/res/cardsfolder/k/kilnspire_district.txt @@ -5,9 +5,9 @@ T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ PutCounter | TriggerDes T:Mode$ Phase | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Command | Execute$ PutCounter | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your precombat main phase, put a charge counter on CARDNAME, then add {R} for each charge counter on it. SVar:PutCounter:DB$ PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBMana SVar:DBMana:DB$ Mana | Produced$ R | Amount$ Y -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may pay {X}. If you do, CARDNAME deals X damage to any target. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may pay {X}. If you do, CARDNAME deals X damage to any target. SVar:RolledChaos:AB$ DealDamage | Cost$ X | ValidTgts$ Any | NumDmg$ X SVar:X:Count$xPaid SVar:Y:Count$CardCounters.CHARGE SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to Kilnspire District or at the beginning of your precombat main phase, put a charge counter on Kilnspire District, then add {R} for each charge counter on it.\nWhenever you roll {CHAOS}, you may pay {X}. If you do, Kilnspire District deals X damage to any target. +Oracle:When you planeswalk to Kilnspire District or at the beginning of your precombat main phase, put a charge counter on Kilnspire District, then add {R} for each charge counter on it.\nWhenever chaos ensues, you may pay {X}. If you do, Kilnspire District deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/k/krosa.txt b/forge-gui/res/cardsfolder/k/krosa.txt index 4db4f3f0550..dc8909f0c61 100644 --- a/forge-gui/res/cardsfolder/k/krosa.txt +++ b/forge-gui/res/cardsfolder/k/krosa.txt @@ -2,7 +2,7 @@ Name:Krosa ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ 2 | AddToughness$ 2 | Description$ All creatures get +2/+2. -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may add {W}{U}{B}{R}{G}. +T:Mode$ ChaosEnsues | TriggerZones$ Command | OptionalDecider$ You | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may add {W}{U}{B}{R}{G}. SVar:RolledChaos:DB$ Mana | Produced$ W U B R G SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True -Oracle:All creatures get +2/+2.\nWhenever you roll {CHAOS}, you may add {W}{U}{B}{R}{G}. +Oracle:All creatures get +2/+2.\nWhenever chaos ensues, you may add {W}{U}{B}{R}{G}. diff --git a/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt b/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt index ca9dfeded64..0f58bfad40e 100644 --- a/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt +++ b/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt @@ -6,7 +6,7 @@ SVar:SacToIdol:DB$ Sacrifice | Defined$ You | SacValid$ Creature | SubAbility$ I SVar:IdolWalk:DB$ Planeswalk | ConditionCheckSVar$ IdolX | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:IdolX:Remembered$Amount -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, any number of target players each create a 2/2 black Zombie creature token. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, any number of target players each create a 2/2 black Zombie creature token. SVar:RolledChaos:DB$ Token | ValidTgts$ Player | TgtPrompt$ Select target player to receive zombie token | TargetMin$ 0 | TargetMax$ MaxTgt | TokenScript$ b_2_2_zombie | TokenOwner$ Targeted | TokenAmount$ 1 SVar:MaxTgt:PlayerCountPlayers$Amount -Oracle:At the beginning of your upkeep, sacrifice a creature. If you can't, planeswalk.\nWhenever you roll {CHAOS}, any number of target players each create a 2/2 black Zombie creature token. +Oracle:At the beginning of your upkeep, sacrifice a creature. If you can't, planeswalk.\nWhenever chaos ensues, any number of target players each create a 2/2 black Zombie creature token. diff --git a/forge-gui/res/cardsfolder/l/lethe_lake.txt b/forge-gui/res/cardsfolder/l/lethe_lake.txt index 8534c58b2ca..f25edc23efc 100644 --- a/forge-gui/res/cardsfolder/l/lethe_lake.txt +++ b/forge-gui/res/cardsfolder/l/lethe_lake.txt @@ -2,8 +2,8 @@ Name:Lethe Lake ManaCost:no cost Types:Plane Arkhos T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ LetheMill | TriggerDescription$ At the beginning of your upkeep, mill ten cards. -SVar:LetheMill:DB$ Mill | Defined$ You | NumCards$ 10 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player puts the top 10 cards of their library into their graveyard. -SVar:RolledChaos:DB$ Mill | ValidTgts$ Player | TgtPrompt$ Choose target player to mill. | NumCards$ 10 +SVar:LetheMill:DB$ Mill | NumCards$ 10 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player mills ten cards. +SVar:RolledChaos:DB$ Mill | ValidTgts$ Player | NumCards$ 10 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:At the beginning of your upkeep, mill ten cards.\nWhenever you roll {CHAOS}, target player mills ten cards. +Oracle:At the beginning of your upkeep, mill ten cards.\nWhenever chaos ensues, target player mills ten cards. diff --git a/forge-gui/res/cardsfolder/l/llanowar.txt b/forge-gui/res/cardsfolder/l/llanowar.txt index efa854740ca..ff01ae39099 100644 --- a/forge-gui/res/cardsfolder/l/llanowar.txt +++ b/forge-gui/res/cardsfolder/l/llanowar.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | Affected$ Creature | EffectZone$ Command | AddAbility$ LlanowarAb | Description$ All creatures have "{T}: Add {G}{G}.". SVar:LlanowarAb:AB$ Mana | Cost$ T | Amount$ 2 | Produced$ G | SpellDescription$ Add {G}{G}. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all creatures you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap all creatures you control. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Creature.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:All creatures have "{T}: Add {G}{G}."\nWhenever you roll {CHAOS}, untap all creatures you control. +Oracle:All creatures have "{T}: Add {G}{G}."\nWhenever chaos ensues, untap all creatures you control. diff --git a/forge-gui/res/cardsfolder/m/minamo.txt b/forge-gui/res/cardsfolder/m/minamo.txt index 31d2340a08c..db4af559772 100644 --- a/forge-gui/res/cardsfolder/m/minamo.txt +++ b/forge-gui/res/cardsfolder/m/minamo.txt @@ -3,10 +3,10 @@ ManaCost:no cost Types:Plane Kamigawa T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever a player casts a spell, that player may draw a card. SVar:TrigDraw:DB$ Draw | Defined$ TriggeredActivator | OptionalDecider$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each player may return a blue card from their graveyard to their hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player may return a blue card from their graveyard to their hand. SVar:RolledChaos:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChoose | SubAbility$ DBChangeZoneAll SVar:DBChoose:DB$ ChooseCard | Choices$ Card.RememberedPlayerCtrl+Blue | ChoiceZone$ Graveyard | Defined$ Player.IsRemembered | Amount$ 1 | RememberChosen$ True SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Graveyard | Destination$ Hand | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always | HasColorInGraveyard$ U -Oracle:Whenever a player casts a spell, that player may draw a card.\nWhenever you roll {CHAOS}, each player may return a blue card from their graveyard to their hand. +Oracle:Whenever a player casts a spell, that player may draw a card.\nWhenever chaos ensues, each player may return a blue card from their graveyard to their hand. diff --git a/forge-gui/res/cardsfolder/m/mirrored_depths.txt b/forge-gui/res/cardsfolder/m/mirrored_depths.txt index 0f57e8fd101..7869b0c9a67 100644 --- a/forge-gui/res/cardsfolder/m/mirrored_depths.txt +++ b/forge-gui/res/cardsfolder/m/mirrored_depths.txt @@ -4,9 +4,9 @@ Types:Plane Karsus T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player | TriggerZones$ Command | Execute$ TrigFlip | TriggerDescription$ Whenever a player casts a spell, that player flips a coin. If the player loses the flip, counter that spell. SVar:TrigFlip:DB$ FlipACoin | Caller$ TriggeredActivator | LoseSubAbility$ DBCounter SVar:DBCounter:DB$ Counter | Defined$ TriggeredSpellAbility -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. SVar:RolledChaos:DB$ PeekAndReveal | ValidTgts$ Player | NoPeek$ True | RememberRevealed$ True | SubAbility$ DBPlay SVar:DBPlay:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a player casts a spell, that player flips a coin. If the player loses the flip, counter that spell.\nWhenever you roll {CHAOS}, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. +Oracle:Whenever a player casts a spell, that player flips a coin. If the player loses the flip, counter that spell.\nWhenever chaos ensues, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/m/mount_keralia.txt b/forge-gui/res/cardsfolder/m/mount_keralia.txt index 063c3d31244..2a53f50c562 100644 --- a/forge-gui/res/cardsfolder/m/mount_keralia.txt +++ b/forge-gui/res/cardsfolder/m/mount_keralia.txt @@ -5,9 +5,9 @@ T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | SVar:BuildPressure:DB$ PutCounter | Defined$ Self | CounterType$ PRESSURE | CounterNum$ 1 T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ Eruption | TriggerDescription$ When you planeswalk away from CARDNAME, it deals damage equal to the number of pressure counters on it to each creature and each planeswalker. SVar:Eruption:DB$ DamageAll | ValidCards$ Creature,Planeswalker | ValidDescription$ each creature and each planeswalker. | NumDmg$ KeraliaX -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, prevent all damage that planes named CARDNAME would deal this game to permanents you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, prevent all damage that planes named CARDNAME would deal this game to permanents you control. SVar:RolledChaos:DB$ Effect | Name$ Mount Keralia Effect | ReplacementEffects$ RPrevent | EffectOwner$ You | Duration$ Permanent | SpellDescription$ Prevent all damage that planes named CARDNAME would deal this game to permanents you control. SVar:RPrevent:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidTarget$ Permanent.YouCtrl | ValidSource$ Plane.namedMount Keralia | Description$ Prevent all damage that planes named Mount Keralia would deal this game to permanents you control. SVar:KeraliaX:TriggeredCard$CardCounters.PRESSURE SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True -Oracle:At the beginning of your end step, put a pressure counter on Mount Keralia.\nWhen you planeswalk away from Mount Keralia, it deals damage equal to the number of pressure counters on it to each creature and each planeswalker.\nWhenever you roll {CHAOS}, prevent all damage that planes named Mount Keralia would deal this game to permanents you control. +Oracle:At the beginning of your end step, put a pressure counter on Mount Keralia.\nWhen you planeswalk away from Mount Keralia, it deals damage equal to the number of pressure counters on it to each creature and each planeswalker.\nWhenever chaos ensues, prevent all damage that planes named Mount Keralia would deal this game to permanents you control. diff --git a/forge-gui/res/cardsfolder/m/murasa.txt b/forge-gui/res/cardsfolder/m/murasa.txt index 61ba3b28145..a3d80a86cf5 100644 --- a/forge-gui/res/cardsfolder/m/murasa.txt +++ b/forge-gui/res/cardsfolder/m/murasa.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Zendikar T:Mode$ ChangesZone | ValidCard$ Creature.nonToken | Origin$ Any | Destination$ Battlefield | TriggerZones$ Command | Execute$ TrigRamp | OptionalDecider$ TriggeredCardController | TriggerDescription$ Whenever a nontoken creature enters the battlefield, its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle. SVar:TrigRamp:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 1 | DefinedPlayer$ TriggeredCardController | ShuffleNonMandatory$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target land becomes a 4/4 creature that's still a land. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target land becomes a 4/4 creature that's still a land. SVar:RolledChaos:DB$ Animate | ValidTgts$ Land | Power$ 4 | Toughness$ 4 | Types$ Creature | Duration$ Permanent SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a nontoken creature enters the battlefield, its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever you roll {CHAOS}, target land becomes a 4/4 creature that's still a land. +Oracle:Whenever a nontoken creature enters the battlefield, its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever chaos ensues, target land becomes a 4/4 creature that's still a land. diff --git a/forge-gui/res/cardsfolder/n/naar_isle.txt b/forge-gui/res/cardsfolder/n/naar_isle.txt index 2313f683e53..2d599c28770 100644 --- a/forge-gui/res/cardsfolder/n/naar_isle.txt +++ b/forge-gui/res/cardsfolder/n/naar_isle.txt @@ -5,7 +5,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execu SVar:TrigPutCounter:DB$ PutCounter | CounterType$ FLAME | CounterNum$ 1 | SubAbility$ DBDmg SVar:DBDmg:DB$ DealDamage | Defined$ You | NumDmg$ Y SVar:Y:Count$CardCounters.FLAME -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 3 damage to target player or planeswalker. -SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Player,Planeswalker | NumDmg$ 3 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, CARDNAME deals 3 damage to target player or planeswalker. +SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:At the beginning of your upkeep, put a flame counter on Naar Isle, then Naar Isle deals damage to you equal to the number of flame counters on it.\nWhenever you roll {CHAOS}, Naar Isle deals 3 damage to target player or planeswalker. +Oracle:At the beginning of your upkeep, put a flame counter on Naar Isle, then Naar Isle deals damage to you equal to the number of flame counters on it.\nWhenever chaos ensues, Naar Isle deals 3 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/n/naya.txt b/forge-gui/res/cardsfolder/n/naya.txt index 293dda39a18..c70183c4b96 100644 --- a/forge-gui/res/cardsfolder/n/naya.txt +++ b/forge-gui/res/cardsfolder/n/naya.txt @@ -2,8 +2,8 @@ Name:Naya ManaCost:no cost Types:Plane Alara S:Mode$ Continuous | Affected$ You | EffectZone$ Command | AdjustLandPlays$ Unlimited | Description$ You may play any number of lands on each of your turns. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature.Red+YouCtrl,Creature.Green+YouCtrl,Creature.White+YouCtrl | TgtPrompt$ Select target red, green, or white creature you control | NumAtt$ Y | NumDef$ Y SVar:Y:Count$Valid Land.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | HasColorCreatureInPlay$ RGW -Oracle:You may play any number of lands on each of your turns.\nWhenever you roll {CHAOS}, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. +Oracle:You may play any number of lands on each of your turns.\nWhenever chaos ensues, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. diff --git a/forge-gui/res/cardsfolder/n/nephalia.txt b/forge-gui/res/cardsfolder/n/nephalia.txt index aa3e3afd3f9..43652d4d40c 100644 --- a/forge-gui/res/cardsfolder/n/nephalia.txt +++ b/forge-gui/res/cardsfolder/n/nephalia.txt @@ -5,7 +5,7 @@ T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | SVar:TrigMill:DB$ Mill | NumCards$ 7 | SubAbility$ DBRandom SVar:DBRandom:DB$ ChooseCard | Choices$ Card.YouOwn | ChoiceZone$ Graveyard | AtRandom$ True | Amount$ 1 | SubAbility$ DBReturn SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ ChosenCard -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target card from your graveyard to your hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target card from your graveyard to your hand. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target card in your graveyard | ValidTgts$ Card.YouOwn SVar:AIRollPlanarDieParams:Mode$ Always | CardsInGraveyardGE$ 1 -Oracle:At the beginning of your end step, mill seven cards. Then return a card at random from your graveyard to your hand.\nWhenever you roll {CHAOS}, return target card from your graveyard to your hand. +Oracle:At the beginning of your end step, mill seven cards. Then return a card at random from your graveyard to your hand.\nWhenever chaos ensues, return target card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/n/norns_dominion.txt b/forge-gui/res/cardsfolder/n/norns_dominion.txt index 1406178483d..67b519b2ed9 100644 --- a/forge-gui/res/cardsfolder/n/norns_dominion.txt +++ b/forge-gui/res/cardsfolder/n/norns_dominion.txt @@ -4,7 +4,7 @@ Types:Plane New Phyrexia T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigDestroy | TriggerDescription$ When you planeswalk away from CARDNAME, destroy each nonland permanent without a fate counter on it, then remove all fate counters from all permanents. SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Permanent.nonLand+counters_LT1_FATE | SubAbility$ DBRemove SVar:DBRemove:DB$ RemoveCounterAll | ValidCards$ Permanent | CounterType$ FATE | AllCounters$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever you roll {CHAOS}, you may put a fate counter on target permanent. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever chaos ensues, you may put a fate counter on target permanent. SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Permanent | CounterType$ FATE | CounterNum$ 1 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk away from Norn's Dominion, destroy each nonland permanent without a fate counter on it, then remove all fate counters from all permanents.\nWhenever you roll {CHAOS}, you may put a fate counter on target permanent. +Oracle:When you planeswalk away from Norn's Dominion, destroy each nonland permanent without a fate counter on it, then remove all fate counters from all permanents.\nWhenever chaos ensues, you may put a fate counter on target permanent. diff --git a/forge-gui/res/cardsfolder/o/onakke_catacomb.txt b/forge-gui/res/cardsfolder/o/onakke_catacomb.txt index 802980f65c7..17c3220f26a 100644 --- a/forge-gui/res/cardsfolder/o/onakke_catacomb.txt +++ b/forge-gui/res/cardsfolder/o/onakke_catacomb.txt @@ -2,7 +2,7 @@ Name:Onakke Catacomb ManaCost:no cost Types:Plane Shandalar S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | SetColor$ Black | AddKeyword$ Deathtouch | Description$ All creatures are black and have deathtouch. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures you control get +1/+0 and gain first strike until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control get +1/+0 and gain first strike until end of turn. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | KW$ First Strike SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True | RollInMain1$ True -Oracle:All creatures are black and have deathtouch.\nWhenever you roll {CHAOS}, creatures you control get +1/+0 and gain first strike until end of turn. +Oracle:All creatures are black and have deathtouch.\nWhenever chaos ensues, creatures you control get +1/+0 and gain first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/o/orochi_colony.txt b/forge-gui/res/cardsfolder/o/orochi_colony.txt index 522d4c3cf28..65da5a78198 100644 --- a/forge-gui/res/cardsfolder/o/orochi_colony.txt +++ b/forge-gui/res/cardsfolder/o/orochi_colony.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Kamigawa T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigRamp | TriggerZones$ Command | TriggerDescription$ Whenever a creature you control deals combat damage to a player, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle. SVar:TrigRamp:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 1 | ShuffleNonMandatory$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target creature can't be blocked this turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target creature can't be blocked this turn. SVar:RolledChaos:DB$ Effect | ValidTgts$ Creature | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable | AILogic$ Pump SVar:Unblockable:Mode$ CantBlockBy | ValidAttacker$ Card.IsRemembered | Description$ This creature can't be blocked this turn. SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True | RollInMain1$ True -Oracle:Whenever a creature you control deals combat damage to a player, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever you roll {CHAOS}, target creature can't be blocked this turn. +Oracle:Whenever a creature you control deals combat damage to a player, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever chaos ensues, target creature can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/o/orzhova.txt b/forge-gui/res/cardsfolder/o/orzhova.txt index e7e9747bf32..f81475cc2b3 100644 --- a/forge-gui/res/cardsfolder/o/orzhova.txt +++ b/forge-gui/res/cardsfolder/o/orzhova.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ OrzhovaDeal | TriggerDescription$ When you planeswalk away from CARDNAME, each player returns all creature cards from their graveyard to the battlefield. SVar:OrzhovaDeal:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, for each opponent, exile up to one target creature card from that player's graveyard. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, for each opponent, exile up to one target creature card from that player's graveyard. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature each opponent controls. | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True SVar:OneEach:PlayerCountOpponents$Amount SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk away from Orzhova, each player returns all creature cards from their graveyard to the battlefield.\nWhenever you roll {CHAOS}, for each opponent, exile up to one target creature card from that player's graveyard. +Oracle:When you planeswalk away from Orzhova, each player returns all creature cards from their graveyard to the battlefield.\nWhenever chaos ensues, for each opponent, exile up to one target creature card from that player's graveyard. diff --git a/forge-gui/res/cardsfolder/o/otaria.txt b/forge-gui/res/cardsfolder/o/otaria.txt index 01d4c4e14e3..2c4a0228ef7 100644 --- a/forge-gui/res/cardsfolder/o/otaria.txt +++ b/forge-gui/res/cardsfolder/o/otaria.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | Affected$ Instant,Sorcery | EffectZone$ Command | AffectedZone$ Graveyard | AddKeyword$ Flashback | Description$ Instant and sorcery cards in graveyards have flashback. The flashback cost is equal to the card's mana cost. (Its owner may cast the card from their graveyard for its mana cost. Then they exile it.) S:Mode$ Continuous | Affected$ Instant.wasCastFromGraveyard,Sorcery.wasCastFromGraveyard | EffectZone$ Command | AffectedZone$ Stack | AddKeyword$ Flashback | Secondary$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, take an extra turn after this one. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, take an extra turn after this one. SVar:RolledChaos:DB$ AddTurn | NumTurns$ 1 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Instant and sorcery cards in graveyards have flashback. The flashback cost is equal to the card's mana cost. (Its owner may cast the card from their graveyard for its mana cost. Then they exile it.)\nWhenever you roll {CHAOS}, take an extra turn after this one. +Oracle:Instant and sorcery cards in graveyards have flashback. The flashback cost is equal to the card's mana cost. (Its owner may cast the card from their graveyard for its mana cost. Then they exile it.)\nWhenever chaos ensues, take an extra turn after this one. diff --git a/forge-gui/res/cardsfolder/p/panopticon.txt b/forge-gui/res/cardsfolder/p/panopticon.txt index 48e309abf59..b4806384752 100644 --- a/forge-gui/res/cardsfolder/p/panopticon.txt +++ b/forge-gui/res/cardsfolder/p/panopticon.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Mirrodin T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ PanopticonDraw | TriggerDescription$ When you planeswalk to CARDNAME, draw a card. T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | Execute$ PanopticonDraw | TriggerZones$ Command | TriggerDescription$ At the beginning of your draw step, draw an additional card. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ PanopticonDraw | TriggerDescription$ Whenever you roll {CHAOS}, draw a card. -SVar:PanopticonDraw:DB$ Draw | Defined$ You | NumCards$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ PanopticonDraw | TriggerDescription$ Whenever chaos ensues, draw a card. +SVar:PanopticonDraw:DB$ Draw SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to Panopticon, draw a card.\nAt the beginning of your draw step, draw an additional card.\nWhenever you roll {CHAOS}, draw a card. +Oracle:When you planeswalk to Panopticon, draw a card.\nAt the beginning of your draw step, draw an additional card.\nWhenever chaos ensues, draw a card. diff --git a/forge-gui/res/cardsfolder/p/pools_of_becoming.txt b/forge-gui/res/cardsfolder/p/pools_of_becoming.txt index a0beff6259b..37c36b075b7 100644 --- a/forge-gui/res/cardsfolder/p/pools_of_becoming.txt +++ b/forge-gui/res/cardsfolder/p/pools_of_becoming.txt @@ -6,9 +6,9 @@ SVar:TrigChangeZone:DB$ ChangeZoneAll | ChangeType$ Card.YouOwn | Origin$ Hand | SVar:DBDraw:DB$ Draw | NumCards$ Y | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Y:Remembered$Amount -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. SVar:RolledChaos:DB$ PeekAndReveal | PeekAmount$ 3 | NoPeek$ True | SourceZone$ PlanarDeck | RememberRevealed$ True | SubAbility$ DBRunChaos SVar:DBRunChaos:DB$ RunChaos | Defined$ Remembered | SubAbility$ DBChangeZone -SVar:DBChangeZone:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ -1 | SubAbility$ DBCleanup +SVar:DBChangeZone:DB$ ChangeZone | Defined$ Remembered | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ -1 | SubAbility$ DBCleanup SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:At the beginning of your end step, put the cards in your hand on the bottom of your library in any order, then draw that many cards.\nWhenever you roll {CHAOS}, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. +Oracle:At the beginning of your end step, put the cards in your hand on the bottom of your library in any order, then draw that many cards.\nWhenever chaos ensues, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. diff --git a/forge-gui/res/cardsfolder/p/prahv.txt b/forge-gui/res/cardsfolder/p/prahv.txt index 91c184cc6a1..15eccb3e179 100644 --- a/forge-gui/res/cardsfolder/p/prahv.txt +++ b/forge-gui/res/cardsfolder/p/prahv.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica S:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature.ControlledBy You.castSpellThisTurn | Description$ If you cast a spell this turn, you can't attack with creatures. S:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ You.attackedWithCreaturesThisTurn | Description$ If you attacked with creatures this turn, you can't cast spells. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you gain life equal to the number of cards in your hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you gain life equal to the number of cards in your hand. SVar:RolledChaos:DB$ GainLife | LifeAmount$ PrahvX | Defined$ You SVar:PrahvX:Count$InYourHand SVar:AIRollPlanarDieParams:Mode$ Always | CardsInHandGE$ 2 -Oracle:If you cast a spell this turn, you can't attack with creatures.\nIf you attacked with creatures this turn, you can't cast spells.\nWhenever you roll {CHAOS}, you gain life equal to the number of cards in your hand. +Oracle:If you cast a spell this turn, you can't attack with creatures.\nIf you attacked with creatures this turn, you can't cast spells.\nWhenever chaos ensues, you gain life equal to the number of cards in your hand. diff --git a/forge-gui/res/cardsfolder/q/quicksilver_sea.txt b/forge-gui/res/cardsfolder/q/quicksilver_sea.txt index 1280af31b79..80d7b86c734 100644 --- a/forge-gui/res/cardsfolder/q/quicksilver_sea.txt +++ b/forge-gui/res/cardsfolder/q/quicksilver_sea.txt @@ -4,9 +4,9 @@ Types:Plane Mirrodin T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ QuicksilverScry | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ QuicksilverScry | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) SVar:QuicksilverScry:DB$ Scry | ScryNum$ 4 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top card of your library. You may play it without paying its mana cost. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top card of your library. You may play it without paying its mana cost. SVar:RolledChaos:DB$ PeekAndReveal | RememberRevealed$ True | SubAbility$ DBPlay SVar:DBPlay:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to Quicksilver Sea or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\nWhenever you roll {CHAOS}, reveal the top card of your library. You may play it without paying its mana cost. +Oracle:When you planeswalk to Quicksilver Sea or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\nWhenever chaos ensues, reveal the top card of your library. You may play it without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/r/ravens_run.txt b/forge-gui/res/cardsfolder/r/ravens_run.txt index 2ca1031aa9e..1d1b83ed5c0 100644 --- a/forge-gui/res/cardsfolder/r/ravens_run.txt +++ b/forge-gui/res/cardsfolder/r/ravens_run.txt @@ -2,10 +2,9 @@ Name:Raven's Run ManaCost:no cost Types:Plane Shadowmoor S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddKeyword$ Wither | Description$ All Creatures have Wither (They deal damage to creatures in the form of -1/-1 counters.) -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos1 | TriggerDescription$ Whenever you roll {CHAOS}, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. -SVar:RolledChaos1:DB$ PutCounter | ValidTgts$ Creature | CounterType$ M1M1 | CounterNum$ 1 | RememberTargets$ True | SubAbility$ RolledChaos2 -SVar:RolledChaos2:DB$ PutCounter | ValidTgts$ Creature.IsNotRemembered | CounterType$ M1M1 | CounterNum$ 2 | RememberTargets$ True | SubAbility$ RolledChaos3 -SVar:RolledChaos3:DB$ PutCounter | ValidTgts$ Creature.IsNotRemembered | CounterType$ M1M1 | CounterNum$ 3 | SubAbility$ RolledChaosCleanup -SVar:RolledChaosCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ ChaosEnsues | OptionalDecider$ You | TriggerZones$ Command | Execute$ TrigPutCounter | TriggerDescription$ Whenever chaos ensues, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. +SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | TargetUnique$ True | CounterType$ M1M1 | SubAbility$ DBPutTwo +SVar:DBPutTwo:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select another target creature | TargetUnique$ True | CounterType$ M1M1 | CounterNum$ 2 | SubAbility$ DBPutThree +SVar:DBPutThree:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select a third target creature | TargetUnique$ True | CounterType$ M1M1 | CounterNum$ 3 SVar:AIRollPlanarDieParams:Mode$ Always | OppHasCreatureInPlay$ True -Oracle:All creatures have wither. (They deal damage to creatures in the form of -1/-1 counters.)\nWhenever you roll {CHAOS}, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. +Oracle:All creatures have wither. (They deal damage to creatures in the form of -1/-1 counters.)\nWhenever chaos ensues, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. diff --git a/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt b/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt index 249478cd395..30069aa0287 100644 --- a/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt +++ b/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Serra's Realm T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigDestroy | TriggerDescription$ When you planeswalk away from CARDNAME, destroy all nonland permanents. SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Permanent.nonLand | ValidDesc$ all nonland permanents -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever you roll {CHAOS}, you may have your life total become 20. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever chaos ensues, you may have your life total become 20. SVar:RolledChaos:DB$ SetLife | Defined$ You | LifeAmount$ 20 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk away from Sanctum of Serra, destroy all nonland permanents.\nWhenever you roll {CHAOS}, you may have your life total become 20. +Oracle:When you planeswalk away from Sanctum of Serra, destroy all nonland permanents.\nWhenever chaos ensues, you may have your life total become 20. diff --git a/forge-gui/res/cardsfolder/s/sea_of_sand.txt b/forge-gui/res/cardsfolder/s/sea_of_sand.txt index d7c51e148c5..c23e91a82f5 100644 --- a/forge-gui/res/cardsfolder/s/sea_of_sand.txt +++ b/forge-gui/res/cardsfolder/s/sea_of_sand.txt @@ -9,7 +9,7 @@ T:Mode$ Drawn | ValidCard$ Card.Land | TriggerZones$ Command | Execute$ TrigGain SVar:TrigGain:DB$ GainLife | Defined$ TriggeredCardController | LifeAmount$ 3 T:Mode$ Drawn | ValidCard$ Card.nonLand | TriggerZones$ Command | Execute$ TrigLose | TriggerDescription$ Whenever a player draws a nonland card, that player loses 3 life. SVar:TrigLose:DB$ LoseLife | Defined$ TriggeredCardController | LifeAmount$ 3 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put target permanent on top of its owner's library. -SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put target permanent on top of its owner's library. +SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Permanent | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Players reveal each card they draw.\nWhenever a player draws a land card, that player gains 3 life.\nWhenever a player draws a nonland card, that player loses 3 life.\nWhenever you roll {CHAOS}, put target permanent on top of its owner's library. +Oracle:Players reveal each card they draw.\nWhenever a player draws a land card, that player gains 3 life.\nWhenever a player draws a nonland card, that player loses 3 life.\nWhenever chaos ensues, put target permanent on top of its owner's library. diff --git a/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt b/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt index f6e03eaf53b..6556b62c590 100644 --- a/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt +++ b/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt @@ -6,9 +6,9 @@ SVar:DoubleToken:DB$ ReplaceToken | Type$ Amount R:Event$ AddCounter | ActiveZones$ Command | ValidCard$ Permanent.inZoneBattlefield | EffectOnly$ True | ReplaceWith$ DoubleCounters | Description$ If an effect would put one or more counters on a permanent, it puts twice that many of those counters on that permanent instead. SVar:DoubleCounters:DB$ ReplaceCounter | Amount$ Z SVar:Z:ReplaceCount$CounterNum/Twice -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. SVar:RolledChaos:DB$ Effect | AILogic$ Always | Triggers$ TrigTapForMana SVar:TrigTapForMana:Mode$ TapsForMana | TriggerZones$ Command | ValidCard$ Land | Activator$ You | Execute$ TrigMana | Static$ True | TriggerDescription$ Whenever you tap a land for mana, add one mana of any type that land produced. SVar:TrigMana:DB$ ManaReflected | ColorOrType$ Type | ReflectProperty$ Produced | Defined$ You SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 1 | RollInMain1$ True -Oracle:If an effect would create one or more tokens, it creates twice that many of those tokens instead.\nIf an effect would put one or more counters on a permanent, it puts twice that many of those counters on that permanent instead.\nWhenever you roll {CHAOS}, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. +Oracle:If an effect would create one or more tokens, it creates twice that many of those tokens instead.\nIf an effect would put one or more counters on a permanent, it puts twice that many of those counters on that permanent instead.\nWhenever chaos ensues, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. diff --git a/forge-gui/res/cardsfolder/s/shiv.txt b/forge-gui/res/cardsfolder/s/shiv.txt index 139dfe0b408..639bb4d8ded 100644 --- a/forge-gui/res/cardsfolder/s/shiv.txt +++ b/forge-gui/res/cardsfolder/s/shiv.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | Affected$ Creature | EffectZone$ Command | AddAbility$ Pump | Description$ All creatures have "{R}: This creature gets +1/+0 until end of turn." SVar:Pump:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create a 5/5 red Dragon creature token with flying. -SVar:RolledChaos:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenScript$ r_5_5_dragon_flying +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 5/5 red Dragon creature token with flying. +SVar:RolledChaos:DB$ Token | TokenScript$ r_5_5_dragon_flying SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:All creatures have "{R}: This creature gets +1/+0 until end of turn."\nWhenever you roll {CHAOS}, create a 5/5 red Dragon creature token with flying. +Oracle:All creatures have "{R}: This creature gets +1/+0 until end of turn."\nWhenever chaos ensues, create a 5/5 red Dragon creature token with flying. diff --git a/forge-gui/res/cardsfolder/s/skybreen.txt b/forge-gui/res/cardsfolder/s/skybreen.txt index c1c754d8363..5e003b6053d 100644 --- a/forge-gui/res/cardsfolder/s/skybreen.txt +++ b/forge-gui/res/cardsfolder/s/skybreen.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Kaldheim S:Mode$ Continuous | EffectZone$ Command | Affected$ Card.TopLibrary | AffectedZone$ Library | MayLookAt$ Player | Description$ Players play with the top card of their libraries revealed. S:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card.sharesCardTypeWith EachTopLibrary | Description$ Spells that share a card type with the top card of a library can't be cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player loses life equal to the number of cards in their hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player loses life equal to the number of cards in their hand. SVar:RolledChaos:DB$ LoseLife | ValidTgts$ Player | LifeAmount$ Y SVar:Y:TargetedPlayer$CardsInHand SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Players play with the top card of their libraries revealed.\nSpells that share a card type with the top card of a library can't be cast.\nWhenever you roll {CHAOS}, target player loses life equal to the number of cards in their hand. +Oracle:Players play with the top card of their libraries revealed.\nSpells that share a card type with the top card of a library can't be cast.\nWhenever chaos ensues, target player loses life equal to the number of cards in their hand. diff --git a/forge-gui/res/cardsfolder/s/sokenzan.txt b/forge-gui/res/cardsfolder/s/sokenzan.txt index dbb77825cd1..4645a6e1e33 100644 --- a/forge-gui/res/cardsfolder/s/sokenzan.txt +++ b/forge-gui/res/cardsfolder/s/sokenzan.txt @@ -2,8 +2,8 @@ Name:Sokenzan ManaCost:no cost Types:Plane Kamigawa S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Haste | Description$ All creatures get +1/+1 and have haste. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Creature.attackedThisTurn | SubAbility$ DBAddCombat SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ Combat | FollowedBy$ Main2 | ConditionPhases$ Main1,Main2 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:All creatures get +1/+1 and have haste.\nWhenever you roll {CHAOS}, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. +Oracle:All creatures get +1/+1 and have haste.\nWhenever chaos ensues, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. diff --git a/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt b/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt index 6070fd82c4b..797d684e68d 100644 --- a/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt +++ b/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt @@ -4,11 +4,11 @@ Types:Legendary Creature Cat Avatar PT:5/4 T:Mode$ ChangesZone | Origin$ Any | OptionalDecider$ You | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may put a land card from a graveyard onto the battlefield tapped under your control. T:Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigChangeZone | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may put a land card from a graveyard onto the battlefield tapped under your control. -SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | Tapped$ True | TgtPrompt$ Select target land card in a graveyard | ValidTgts$ Land -A:AB$ GainLife | Cost$ G Discard<1/Land> | LifeAmount$ 3 | SpellDescription$ You gain 3 Life +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | Tapped$ True | Hidden$ True | ChangeType$ Land +A:AB$ GainLife | Cost$ G Discard<1/Land> | LifeAmount$ 3 | SpellDescription$ You gain 3 life. A:AB$ Draw | Cost$ 1 R Discard<1/Land> | SpellDescription$ Draw a card. -A:AB$ Pump | Cost$ 2 B Discard<1/Land> | KW$ Indestructible | SubAbility$ DBTap | SpellDescription$ CARDNAME gains indestructible until end of turn. Tap it. -SVar:DBTap:DB$ Tap | Defined$ Self +A:AB$ Pump | Cost$ 2 B Discard<1/Land> | KW$ Indestructible | SubAbility$ DBTap | StackDescription$ SpellDescription | SpellDescription$ CARDNAME gains indestructible until end of turn. +SVar:DBTap:DB$ Tap | Defined$ Self | StackDescription$ SpellDescription | SpellDescription$ Tap it. DeckHas:Ability$LifeGain|Discard & Keyword$Indestructible SVar:HasAttackEffect:TRUE Oracle:Whenever Soul of Windgrace enters the battlefield or attacks, you may put a land card from a graveyard onto the battlefield tapped under your control.\n{G}, Discard a land card: You gain 3 life.\n{1}{R}, Discard a land card: Draw a card.\n{2}{B}, Discard a land card: Soul of Windgrace gains indestructible until end of turn. Tap it. diff --git a/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt b/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt index bf5aa5aa460..c234324faa8 100644 --- a/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt +++ b/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt @@ -4,7 +4,7 @@ Types:Plane Xerex S:Mode$ Continuous | EffectZone$ Command | Affected$ Player | SetMaxHandSize$ Unlimited | Description$ Players have no maximum hand size. T:Mode$ PlanarDice | TriggerZones$ Command | Execute$ RolledDie | TriggerDescription$ Whenever you roll the planar die, draw a card. SVar:RolledDie:DB$ Draw | NumCards$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. SVar:RolledChaos:DB$ Dig | DigNum$ 1 | ChangeNum$ 1 | Reveal$ True | SourceZone$ PlanarDeck | DestinationZone$ PlanarDeck | DestinationZone2$ PlanarDeck | LibraryPosition$ -1 | LibraryPosition2$ 0 | ChangeValid$ Plane | Optional$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Players have no maximum hand size.\nWhenever you roll the planar die, draw a card.\nWhenever you roll {CHAOS}, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. +Oracle:Players have no maximum hand size.\nWhenever you roll the planar die, draw a card.\nWhenever chaos ensues, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. diff --git a/forge-gui/res/cardsfolder/s/stensia.txt b/forge-gui/res/cardsfolder/s/stensia.txt index 3c0774abf0e..8c14034cb20 100644 --- a/forge-gui/res/cardsfolder/s/stensia.txt +++ b/forge-gui/res/cardsfolder/s/stensia.txt @@ -5,7 +5,7 @@ T:Mode$ DamageDone | ValidSource$ Creature.IsNotRemembered | ValidTarget$ Player SVar:TrigPutCounter:DB$ PutCounter | Defined$ TriggeredSourceLKICopy | CounterType$ P1P1 | CounterNum$ 1 | RememberCards$ True T:Mode$ Phase | Phase$ End of Turn | Execute$ DBCleanup | TriggerZones$ Command | Static$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. SVar:RolledChaos:DB$ AnimateAll | ValidCards$ Creature.YouCtrl | Abilities$ LVAbs | SpellDescription$ Until end of turn, creatures you control gain "{T}: This creature deals 1 damage to target player or planeswalker." -SVar:LVAbs:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. -Oracle:Whenever a creature deals damage to one or more players for the first time each turn, put a +1/+1 counter on it.\nWhenever you roll {CHAOS}, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. +SVar:LVAbs:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ This creature deals 1 damage to target player or planeswalker. +Oracle:Whenever a creature deals damage to one or more players for the first time each turn, put a +1/+1 counter on it.\nWhenever chaos ensues, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. diff --git a/forge-gui/res/cardsfolder/s/stronghold_furnace.txt b/forge-gui/res/cardsfolder/s/stronghold_furnace.txt index 220fa5cdc1f..9c13db02ee3 100644 --- a/forge-gui/res/cardsfolder/s/stronghold_furnace.txt +++ b/forge-gui/res/cardsfolder/s/stronghold_furnace.txt @@ -4,7 +4,7 @@ Types:Plane Rath R:Event$ DamageDone | ActiveZones$ Command | ValidSource$ Card,Emblem | ValidTarget$ Permanent,Player | ReplaceWith$ DmgTwice | Description$ If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ Y SVar:Y:ReplaceCount$DamageAmount/Twice -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 1 damage to any target. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, CARDNAME deals 1 damage to any target. SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 1 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead.\nWhenever you roll {CHAOS}, Stronghold Furnace deals 1 damage to any target. +Oracle:If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead.\nWhenever chaos ensues, Stronghold Furnace deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/takenuma.txt b/forge-gui/res/cardsfolder/t/takenuma.txt index 86517289095..3cd6e733a50 100644 --- a/forge-gui/res/cardsfolder/t/takenuma.txt +++ b/forge-gui/res/cardsfolder/t/takenuma.txt @@ -3,6 +3,6 @@ ManaCost:no cost Types:Plane Kamigawa T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature | Execute$ TakenumaDraw | TriggerZones$ Command | TriggerDescription$ Whenever a creature leaves the battlefield, its controller draws a card. SVar:TakenumaDraw:DB$ Draw | Defined$ TriggeredCardController | NumCards$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target creature you control to its owner's hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature you control to its owner's hand. SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature to return to your hand | Origin$ Battlefield | Destination$ Hand -Oracle:Whenever a creature leaves the battlefield, its controller draws a card.\nWhenever you roll {CHAOS}, return target creature you control to its owner's hand. +Oracle:Whenever a creature leaves the battlefield, its controller draws a card.\nWhenever chaos ensues, return target creature you control to its owner's hand. diff --git a/forge-gui/res/cardsfolder/t/talon_gates.txt b/forge-gui/res/cardsfolder/t/talon_gates.txt index bac81a60258..b3bae55d382 100644 --- a/forge-gui/res/cardsfolder/t/talon_gates.txt +++ b/forge-gui/res/cardsfolder/t/talon_gates.txt @@ -7,7 +7,7 @@ SVar:TimeInGates:DB$ PutCounter | Defined$ Remembered | CounterType$ TIME | Coun SVar:GiveSuspend:DB$ PumpAll | ValidCards$ Card.IsRemembered+withoutSuspend | KW$ Suspend | PumpZone$ Exile | Duration$ Permanent | SubAbility$ DBCleanup | StackDescription$ If it doesn't have suspend, it gains suspend. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:GateX:Remembered$CardManaCost -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, remove two time counters from each suspended card you own. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, remove two time counters from each suspended card you own. SVar:RolledChaos:DB$ RemoveCounterAll | ValidCards$ Card.suspended+YouOwn | CounterType$ TIME | CounterNum$ 2 | ValidZone$ Exile SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True | MaxRollsPerTurn$ 9 -Oracle:Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its mana value. If the exiled card doesn't have suspend, it gains suspend. (At the beginning of its owner's upkeep, they remove a time counter. When the last is removed, the player casts it without paying its mana cost. If it's a creature, it has haste.)\nWhenever you roll {CHAOS}, remove two time counters from each suspended card you own. +Oracle:Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its mana value. If the exiled card doesn't have suspend, it gains suspend. (At the beginning of its owner's upkeep, they remove a time counter. When the last is removed, the player casts it without paying its mana cost. If it's a creature, it has haste.)\nWhenever chaos ensues, remove two time counters from each suspended card you own. diff --git a/forge-gui/res/cardsfolder/t/tazeem.txt b/forge-gui/res/cardsfolder/t/tazeem.txt index 0d6a2301ebb..2dea5e91ae6 100644 --- a/forge-gui/res/cardsfolder/t/tazeem.txt +++ b/forge-gui/res/cardsfolder/t/tazeem.txt @@ -2,8 +2,8 @@ Name:Tazeem ManaCost:no cost Types:Plane Zendikar S:Mode$ Continuous | Affected$ Creature | EffectZone$ Command | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures can't block. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, draw a card for each land you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, draw a card for each land you control. SVar:RolledChaos:DB$ Draw | NumCards$ Y | Defined$ You SVar:Y:Count$Valid Land.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Creatures can't block.\nWhenever you roll {CHAOS}, draw a card for each land you control. +Oracle:Creatures can't block.\nWhenever chaos ensues, draw a card for each land you control. diff --git a/forge-gui/res/cardsfolder/t/tember_city.txt b/forge-gui/res/cardsfolder/t/tember_city.txt index 9e426cd5994..5de37dcd8a0 100644 --- a/forge-gui/res/cardsfolder/t/tember_city.txt +++ b/forge-gui/res/cardsfolder/t/tember_city.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kinshala T:Mode$ TapsForMana | ValidCard$ Land | Execute$ TrigDmg | TriggerZones$ Command | TriggerDescription$ Whenever a player taps a land for mana, CARDNAME deals 1 damage to that player. SVar:TrigDmg:DB$ DealDamage | Defined$ TriggeredCardController | NumDmg$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each other player sacrifices a nonland permanent. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each other player sacrifices a nonland permanent. SVar:RolledChaos:DB$ Sacrifice | Defined$ Player.Other | SacValid$ Permanent.nonLand SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a player taps a land for mana, Tember City deals 1 damage to that player.\nWhenever you roll {CHAOS}, each other player sacrifices a nonland permanent. +Oracle:Whenever a player taps a land for mana, Tember City deals 1 damage to that player.\nWhenever chaos ensues, each other player sacrifices a nonland permanent. diff --git a/forge-gui/res/cardsfolder/t/the_aether_flues.txt b/forge-gui/res/cardsfolder/t/the_aether_flues.txt index 780e44f762d..a2068b0cd54 100644 --- a/forge-gui/res/cardsfolder/t/the_aether_flues.txt +++ b/forge-gui/res/cardsfolder/t/the_aether_flues.txt @@ -6,7 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ FluesSacrifice | Tri SVar:FluesSacrifice:DB$ Sacrifice | Optional$ True | SacValid$ Creature | Amount$ 1 | RememberSacrificed$ True | SubAbility$ FluesDig SVar:FluesDig:DB$ DigUntil | Valid$ Creature | ValidDescription$ creature | FoundDestination$ Battlefield | RevealedDestination$ Library | Shuffle$ True | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may put a creature card from your hand onto the battlefield. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may put a creature card from your hand onto the battlefield. SVar:RolledChaos:DB$ ChangeZone | ChangeType$ Creature | ChangeNum$ 1 | Origin$ Hand | Destination$ Battlefield SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to The Aether Flues or at the beginning of your upkeep, you may sacrifice a creature. If you do, reveal cards from the top of your library until you reveal a creature card, put that card onto the battlefield, then shuffle all other cards revealed this way into your library.\nWhenever you roll {CHAOS}, you may put a creature card from your hand onto the battlefield. +Oracle:When you planeswalk to The Aether Flues or at the beginning of your upkeep, you may sacrifice a creature. If you do, reveal cards from the top of your library until you reveal a creature card, put that card onto the battlefield, then shuffle all other cards revealed this way into your library.\nWhenever chaos ensues, you may put a creature card from your hand onto the battlefield. diff --git a/forge-gui/res/cardsfolder/t/the_dark_barony.txt b/forge-gui/res/cardsfolder/t/the_dark_barony.txt index b0ba0c73e7c..ccda8048462 100644 --- a/forge-gui/res/cardsfolder/t/the_dark_barony.txt +++ b/forge-gui/res/cardsfolder/t/the_dark_barony.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Ulgrotha T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Card.nonToken+nonBlack | TriggerZones$ Command | Execute$ TrigLoseLife | TriggerDescription$ Whenever a nonblack card is put into a player's graveyard from anywhere, that player loses 1 life. SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredCardOwner | LifeAmount$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each opponent discards a card. -SVar:RolledChaos:DB$ Discard | Mode$ TgtChoose | Defined$ Player.Opponent | NumCards$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each opponent discards a card. +SVar:RolledChaos:DB$ Discard | Mode$ TgtChoose | Defined$ Opponent SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a nonblack card is put into a player's graveyard from anywhere, that player loses 1 life.\nWhenever you roll {CHAOS}, each opponent discards a card. +Oracle:Whenever a nonblack card is put into a player's graveyard from anywhere, that player loses 1 life.\nWhenever chaos ensues, each opponent discards a card. diff --git a/forge-gui/res/cardsfolder/t/the_eon_fog.txt b/forge-gui/res/cardsfolder/t/the_eon_fog.txt index 19937db26d5..99321af1928 100644 --- a/forge-gui/res/cardsfolder/t/the_eon_fog.txt +++ b/forge-gui/res/cardsfolder/t/the_eon_fog.txt @@ -2,7 +2,7 @@ Name:The Eon Fog ManaCost:no cost Types:Plane Equilor R:Event$ BeginPhase | ActiveZones$ Command | Phase$ Untap | Skip$ True | Description$ Players skip their untap steps. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all permanents you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap all permanents you control. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Permanent.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Players skip their untap steps.\nWhenever you roll {CHAOS}, untap all permanents you control. +Oracle:Players skip their untap steps.\nWhenever chaos ensues, untap all permanents you control. diff --git a/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt b/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt index 58da2d2aa1b..00027653958 100644 --- a/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt +++ b/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Phyrexia T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ FourthSac | TriggerDescription$ At the beginning of your upkeep, sacrifice a nonblack creature. SVar:FourthSac:DB$ Sacrifice | Defined$ You | SacValid$ Creature.nonBlack -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put a 2/2 black zombie token onto the battlefield. -SVar:RolledChaos:DB$ Token | TokenScript$ b_2_2_zombie | TokenOwner$ You | TokenAmount$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put a 2/2 black zombie token onto the battlefield. +SVar:RolledChaos:DB$ Token | TokenScript$ b_2_2_zombie SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:At the beginning of your upkeep, sacrifice a nonblack creature.\nWhenever you roll {CHAOS}, create a 2/2 black Zombie creature token. +Oracle:At the beginning of your upkeep, sacrifice a nonblack creature.\nWhenever chaos ensues, create a 2/2 black Zombie creature token. diff --git a/forge-gui/res/cardsfolder/t/the_great_forest.txt b/forge-gui/res/cardsfolder/t/the_great_forest.txt index d0c0e26cfb4..9c523fe03a9 100644 --- a/forge-gui/res/cardsfolder/t/the_great_forest.txt +++ b/forge-gui/res/cardsfolder/t/the_great_forest.txt @@ -2,7 +2,7 @@ Name:The Great Forest ManaCost:no cost Types:Plane Lorwyn S:Mode$ CombatDamageToughness | ValidCard$ Creature | Description$ Each creature assigns combat damage equal to its toughness rather than its power. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures you control get +0/+2 and gain trample until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control get +0/+2 and gain trample until end of turn. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.ActivePlayerCtrl | NumDef$ 2 | KW$ Trample SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | RollInMain1$ True -Oracle:Each creature assigns combat damage equal to its toughness rather than its power.\nWhenever you roll {CHAOS}, creatures you control get +0/+2 and gain trample until end of turn. +Oracle:Each creature assigns combat damage equal to its toughness rather than its power.\nWhenever chaos ensues, creatures you control get +0/+2 and gain trample until end of turn. diff --git a/forge-gui/res/cardsfolder/t/the_hippodrome.txt b/forge-gui/res/cardsfolder/t/the_hippodrome.txt index 0170900bf88..aaa8a231726 100644 --- a/forge-gui/res/cardsfolder/t/the_hippodrome.txt +++ b/forge-gui/res/cardsfolder/t/the_hippodrome.txt @@ -2,8 +2,8 @@ Name:The Hippodrome ManaCost:no cost Types:Plane Segovia S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ -5 | Description$ All Creatures get -5/-0. -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may destroy target creature if it's power is 0 or less. +T:Mode$ ChaosEnsues | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may destroy target creature if it's power is 0 or less. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Creature | ConditionCheckSVar$ TgtPow | ConditionSVarCompare$ EQ1 | AITgts$ Creature.OppCtrl+powerLE0 SVar:TgtPow:Targeted$Valid Creature.powerLE0 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:All creatures get -5/-0.\nWhenever you roll {CHAOS}, you may destroy target creature if its power is 0 or less. +Oracle:All creatures get -5/-0.\nWhenever chaos ensues, you may destroy target creature if its power is 0 or less. diff --git a/forge-gui/res/cardsfolder/t/the_maelstrom.txt b/forge-gui/res/cardsfolder/t/the_maelstrom.txt index f66a9a57fcb..dbdff8d28fb 100644 --- a/forge-gui/res/cardsfolder/t/the_maelstrom.txt +++ b/forge-gui/res/cardsfolder/t/the_maelstrom.txt @@ -4,7 +4,7 @@ Types:Plane Alara T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigDig | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigDig | TriggerZones$ Command | Secondary$ True | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library. SVar:TrigDig:DB$ Dig | DigNum$ 1 | Reveal$ True | Optional$ True | ChangeNum$ 1 | ChangeValid$ Permanent | DestinationZone$ Battlefield | DestinationZone2$ Library | LibraryPosition2$ -1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target permanent card from your graveyard to the battlefield. -SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target permanent card in your graveyard | ValidTgts$ Permanent.YouCtrl +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target permanent card from your graveyard to the battlefield. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target permanent card in your graveyard | ValidTgts$ Permanent.YouOwn SVar:AIRollPlanarDieParams:Mode$ Always | CardsInGraveyardGE$ 1 -Oracle:When you planeswalk to The Maelstrom or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library.\nWhenever you roll {CHAOS}, return target permanent card from your graveyard to the battlefield. +Oracle:When you planeswalk to The Maelstrom or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library.\nWhenever chaos ensues, return target permanent card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt b/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt index 5b9da69d664..a085fd5c480 100644 --- a/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt +++ b/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kyneth S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withFlying | AddPower$ 2 | Description$ Creatures with flying get +2/+0. S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withoutFlying | AddPower$ -2 | Description$ Creatures without flying get -2/-0. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target creature gains flying until end of turn. -SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Flying +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target creature gains flying until end of turn. +SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature | KW$ Flying SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Creatures with flying get +2/+0.\nCreatures without flying get -2/-0.\nWhenever you roll {CHAOS}, target creature gains flying until end of turn. +Oracle:Creatures with flying get +2/+0.\nCreatures without flying get -2/-0.\nWhenever chaos ensues, target creature gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt b/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt index a1b9f01b541..a7706c648ef 100644 --- a/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt +++ b/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt @@ -2,7 +2,7 @@ Name:Trail of the Mage-Rings ManaCost:no cost Types:Plane Vryn S:Mode$ Continuous | AddKeyword$ Rebound | Affected$ Instant,Sorcery | AffectedZone$ Stack | EffectZone$ Command | Description$ Instant and sorcery spells have rebound. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. SVar:RolledChaos:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Instant,Sorcery | ChangeNum$ 1 | ShuffleNonMandatory$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Instant and sorcery spells have rebound. (The spell's controller exiles the spell as it resolves if they cast it from their hand. At the beginning of that player's next upkeep, they may cast that card from exile without paying its mana cost.)\nWhenever you roll {CHAOS}, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. +Oracle:Instant and sorcery spells have rebound. (The spell's controller exiles the spell as it resolves if they cast it from their hand. At the beginning of that player's next upkeep, they may cast that card from exile without paying its mana cost.)\nWhenever chaos ensues, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. diff --git a/forge-gui/res/cardsfolder/t/truga_jungle.txt b/forge-gui/res/cardsfolder/t/truga_jungle.txt index 9d05151baa5..98f262c8da0 100644 --- a/forge-gui/res/cardsfolder/t/truga_jungle.txt +++ b/forge-gui/res/cardsfolder/t/truga_jungle.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Ergamon S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Land | AddAbility$ AnyMana | Description$ All lands have "{T}: Add one mana of any color." SVar:AnyMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. SVar:RolledChaos:DB$ Dig | DigNum$ 3 | Reveal$ True | ChangeNum$ All | ChangeValid$ Land SVar:AIRollPlanarDieParams:Mode$ Random | Chance$ 20 -Oracle:All lands have "{T}: Add one mana of any color."\nWhenever you roll {CHAOS}, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. +Oracle:All lands have "{T}: Add one mana of any color."\nWhenever chaos ensues, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/t/turri_island.txt b/forge-gui/res/cardsfolder/t/turri_island.txt index d658a1504b5..90a72ef0b87 100644 --- a/forge-gui/res/cardsfolder/t/turri_island.txt +++ b/forge-gui/res/cardsfolder/t/turri_island.txt @@ -2,7 +2,7 @@ Name:Turri Island ManaCost:no cost Types:Plane Ir S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Creature | Type$ Spell | Amount$ 2 | Description$ Creature spells cost {2} less to cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. SVar:RolledChaos:DB$ Dig | DigNum$ 3 | Reveal$ True | ChangeNum$ All | ChangeValid$ Creature | DestinationZone2$ Graveyard SVar:AIRollPlanarDieParams:Mode$ Random -Oracle:Creature spells cost {2} less to cast.\nWhenever you roll {CHAOS}, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. +Oracle:Creature spells cost {2} less to cast.\nWhenever chaos ensues, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. diff --git a/forge-gui/res/cardsfolder/u/undercity_reaches.txt b/forge-gui/res/cardsfolder/u/undercity_reaches.txt index 3a113cc53e6..7e6619fb45e 100644 --- a/forge-gui/res/cardsfolder/u/undercity_reaches.txt +++ b/forge-gui/res/cardsfolder/u/undercity_reaches.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ Player | OptionalDecider$ TriggeredSourceController | CombatDamage$ True | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever a creature deals combat damage to a player, its controller may draw a card. SVar:TrigDraw:DB$ Draw | Defined$ TriggeredSourceController | NumCards$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you have no maximum hand size for the rest of the game. -SVar:RolledChaos:DB$ Effect | Name$ Undercity Reaches Effect | StaticAbilities$ STHandSize | Duration$ Permanent +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you have no maximum hand size for the rest of the game. +SVar:RolledChaos:DB$ Effect | StaticAbilities$ STHandSize | Duration$ Permanent SVar:STHandSize:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ Unlimited | Description$ You have no maximum hand size. SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a creature deals combat damage to a player, its controller may draw a card.\nWhenever you roll {CHAOS}, you have no maximum hand size for the rest of the game. +Oracle:Whenever a creature deals combat damage to a player, its controller may draw a card.\nWhenever chaos ensues, you have no maximum hand size for the rest of the game. diff --git a/forge-gui/res/cardsfolder/upcoming/esper.txt b/forge-gui/res/cardsfolder/upcoming/esper.txt index 67e70691b47..f330c3eb04f 100644 --- a/forge-gui/res/cardsfolder/upcoming/esper.txt +++ b/forge-gui/res/cardsfolder/upcoming/esper.txt @@ -2,8 +2,8 @@ Name:Esper ManaCost:no cost Types:Plane Alara S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Artifact | Type$ Spell | Amount$ 1 | Description$ Artifact spells cost {1} less to cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control that are white, blue, and/or black become artifacts in addition to other types until end of turn. Then each artifact creature you control gains vigilance, menace, and lifelink until end of turn. -SVar:RolledChaos:DB$ AnimateAll | Cost$ 2 G | ValidCards$ Creature.YouCtrl+Black,Creature.YouCtrl+Blue,Creature.YouCtrl+White | Types$ Artifact | SubAbility$ DBPumpAll +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control that are white, blue, and/or black become artifacts in addition to other types until end of turn. Then each artifact creature you control gains vigilance, menace, and lifelink until end of turn. +SVar:RolledChaos:DB$ AnimateAll | ValidCards$ Creature.YouCtrl+Black,Creature.YouCtrl+Blue,Creature.YouCtrl+White | Types$ Artifact | SubAbility$ DBPumpAll SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.Artifact+YouCtrl | KW$ Vigilance & Menace & Lifelink DeckHas:Ability$LifeGain DeckHints:Type$Artifact diff --git a/forge-gui/res/cardsfolder/upcoming/firemane_commando.txt b/forge-gui/res/cardsfolder/upcoming/firemane_commando.txt new file mode 100644 index 00000000000..7776b65f240 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/firemane_commando.txt @@ -0,0 +1,11 @@ +Name:Firemane Commando +ManaCost:3 W +Types:Creature Angel Soldier +PT:4/3 +K:Flying +T:Mode$ AttackersDeclared | Execute$ TrigDraw | IsPresent$ Creature.attacking+YouCtrl | PresentCompare$ GE2 | NoResolvingCheck$ True | TriggerZones$ Battlefield | AttackingPlayer$ You | TriggerDescription$ Whenever you attack with two or more creatures, draw a card. +SVar:TrigDraw:DB$ Draw +T:Mode$ AttackersDeclared | Execute$ TrigTheyDraw | IsPresent$ Creature.attacking | PresentCompare$ GE2 | NoResolvingCheck$ True | TriggerZones$ Battlefield | AttackingPlayer$ Player.Other | TriggerDescription$ Whenever another player attacks with two or more creatures, they draw a card if none of those creatures attacked you. +SVar:TrigTheyDraw:DB$ Draw | Defined$ TriggeredAttackingPlayer | ConditionPresent$ Creature.attackingYou | ConditionCompare$ EQ0 +SVar:PlayMain1:TRUE +Oracle:Flying\nWhenever you attack with two or more creatures, draw a card.\nWhenever another player attacks with two or more creatures, they draw a card if none of those creatures attacked you. diff --git a/forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt b/forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt new file mode 100644 index 00000000000..f673f9d45b7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt @@ -0,0 +1,9 @@ +Name:Norn's Seedcore +ManaCost:no cost +Types:Plane New Phyrexia +T:Mode$ PlaneswalkedTo | ValidCard$ Plane.Self | Execute$ TrigChaos | TriggerDescription$ When you planeswalk to CARDNAME, chaos ensues. +SVar:TrigChaos:DB$ ChaosEnsues +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDigUntil | TriggerDescription$ Whenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Planeswalk to it, except don't planeswalk away from any plane. Put the rest of the revealed cards on the bottom of your planar deck in any order. +SVar:TrigDigUntil:DB$ DigUntil | Valid$ Plane | DigZone$ PlanarDeck | RememberFound$ True | FoundDestination$ PlanarDeck | RevealedDestination$ PlanarDeck | RevealedLibraryPosition$ -1 | SubAbility$ DBPlaneswalk +SVar:DBPlaneswalk:DB$ Planeswalk | Defined$ Remembered | DontPlaneswalkAway$ True +Oracle:When you planeswalk to Norn's Seedcore, chaos ensues.\nWhenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Planeswalk to it, except don't planeswalk away from any plane. Put the rest of the revealed cards on the bottom of your planar deck in any order. diff --git a/forge-gui/res/cardsfolder/upcoming/nyx.txt b/forge-gui/res/cardsfolder/upcoming/nyx.txt index bf9ee5912d0..024360a410a 100644 --- a/forge-gui/res/cardsfolder/upcoming/nyx.txt +++ b/forge-gui/res/cardsfolder/upcoming/nyx.txt @@ -4,7 +4,7 @@ Types:Plane Theros S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.nonToken | AddType$ Enchantment | Description$ Nontoken creatures are enchantments in addition to their other types. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.YouCtrl | TriggerZones$ Command | Execute$ TrigGainLife | TriggerDescription$ Constellation — Whenever an enchantment enters the battlefield under your control, you gain 1 life. SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a color. Add an amount of mana of that color equal to your devotion to that color. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a color. Add an amount of mana of that color equal to your devotion to that color. SVar:RolledChaos:DB$ ChooseColor | SubAbility$ DBMana | AILogic$ MostProminentComputerControls | AINoRecursiveCheck$ True SVar:DBMana:DB$ Mana | Produced$ Chosen | Amount$ X SVar:X:Count$Devotion.Chosen diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt new file mode 100644 index 00000000000..1891c75f0fb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt @@ -0,0 +1,9 @@ +Name:Path of the Animist +ManaCost:3 G +Types:Sorcery +A:SP$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ 2 | Tapped$ True | SubAbility$ DBSpace | ChangeTypeDesc$ basic land | SpellDescription$ Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle. +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +Oracle:Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt new file mode 100644 index 00000000000..9915fccc077 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt @@ -0,0 +1,9 @@ +Name:Path of the Enigma +ManaCost:4 U +Types:Sorcery +A:SP$ Draw | ValidTgts$ Player | NumCards$ 4 | SubAbility$ DBSpace | SpellDescription$ Target player draws four cards. +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +Oracle:Target player draws four cards.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt new file mode 100644 index 00000000000..cc2e0e2ed7e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt @@ -0,0 +1,11 @@ +Name:Path of the Ghosthunter +ManaCost:X 1 W +Types:Sorcery +A:SP$ Token | TokenAmount$ X | TokenScript$ w_1_1_spirit_flying | SubAbility DBSpace | SpellDescription$ Create X 1/1 white Spirit creature tokens with flying. +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +DeckHas:Ability$Token & Type$Spirit +SVar:X:Count$xPaid +Oracle:Create X 1/1 white Spirit creature tokens with flying.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt new file mode 100644 index 00000000000..886fc138480 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt @@ -0,0 +1,13 @@ +Name:Path of the Pyromancer +ManaCost:4 R +Types:Sorcery +A:SP$ Discard | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBMana +SVar:DBMana:DB$ Mana | Produced$ R | Amount$ X | StackDescription$ SpellDescription | SpellDescription$ Add {R} for each card discarded this way, +SVar:DBDraw:DB$ Draw | NumCards$ X/Plus.1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ then draw that many cards plus one. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBSpace +SVar:X:Remembered$Amount +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +Oracle:Discard all the cards in your hand. Add {R} for each card discarded this way, then draw that many cards plus one.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt new file mode 100644 index 00000000000..4964fa3dafd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt @@ -0,0 +1,12 @@ +Name:Path of the Schemer +ManaCost:4 B +Types:Sorcery +A:SP$ Mill | NumCards$ 2 | Defined$ Player | SubAbility$ DBChangeZone | SpellDescription$ Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature | ChangeNum$ 1 | Mandatory$ True | GainControl$ True | AnimateSubAbility$ Animate | SubAbility$ DBSpace | SelectPrompt$ Select a creature card to return to the battlefield | Hidden$ True | StackDescription$ SpellDescription | SpellDescription$ Then you put a creature card from a graveyard onto the battlefield under your control. +SVar:Animate:DB$ Animate | Defined$ Remembered | Types$ Phyrexian | Duration$ Permanent +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +DeckHas:Ability$Mill|Graveyard +Oracle:Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. It's an artifact in addition to its other types.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt b/forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt new file mode 100644 index 00000000000..20998c80be8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt @@ -0,0 +1,9 @@ +Name:The Fertile Lands of Saulvinia +Types:Plane Antausia +T:Mode$ TapsForMana | ValidCard$ Land | Execute$ AddMana | TriggerZones$ Command | Static$ True | TriggerDescription$ Whenever a player taps a land for mana, that player adds one mana of any type that land produced. +SVar:AddMana:DB$ ManaReflected | ColorOrType$ Type | ReflectProperty$ Produced | Defined$ TriggeredActivator +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDigUntil | TriggerDescription$ Whenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Chaos ensues on that plane. Then put all cards revealed this way on the bottom of your planar deck in any order. +SVar:TrigDigUntil:DB$ DigUntil | Valid$ Plane | DigZone$ PlanarDeck | RememberFound$ True | FoundDestination$ PlanarDeck | FoundLibraryPosition$ -1 | RevealedDestination$ PlanarDeck | RevealedLibraryPosition$ -1 | SubAbility$ DBChaosEnsues +SVar:DBChaosEnsues:DB$ ChaosEnsues | Defined$ Remembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Whenever a player taps a land for mana, that player adds one mana of any type that land produced.\nWhenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Chaos ensues on that plane. Then put all cards revealed this way on the bottom of your planar deck in any order. diff --git a/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt b/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt index fe758b5b931..8c94dd58d45 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt @@ -4,7 +4,7 @@ Types:Plane Tarkir T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigBolster | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, bolster 3. (Choose a creature with the least toughness among creatures you control and put three +1/+1 counters on it.) T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigBolster | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, bolster 3. (Choose a creature with the least toughness among creatures you control and put three +1/+1 counters on it.) SVar:TrigBolster:DB$ PutCounter | Bolster$ True | CounterNum$ 3 | CounterType$ P1P1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose up to one target creature you control and up to one target creature an opponent controls. Each of those creatures deals damage equal to its toughness to the other. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose up to one target creature you control and up to one target creature an opponent controls. Each of those creatures deals damage equal to its toughness to the other. SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose up to one target creature you control | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBEachDamage SVar:DBEachDamage:DB$ EachDamage | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose up to one target creature an opponent controls | TargetMin$ 0 | TargetMax$ 1 | ToEachOther$ Targeted | NumDmg$ Count$CardToughness DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/upcoming/towashi.txt b/forge-gui/res/cardsfolder/upcoming/towashi.txt index 6cd9e46ab6d..05611d11fdc 100644 --- a/forge-gui/res/cardsfolder/upcoming/towashi.txt +++ b/forge-gui/res/cardsfolder/upcoming/towashi.txt @@ -4,8 +4,8 @@ Types:Plane Kamigawa S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. SVar:TrigDraw:DB$ Draw -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 DeckHas:Ability$Counters DeckHints:Type$Aura|Equipment & Ability$Counters -Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. diff --git a/forge-gui/res/cardsfolder/upcoming/unyaro.txt b/forge-gui/res/cardsfolder/upcoming/unyaro.txt new file mode 100644 index 00000000000..b16df986653 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/unyaro.txt @@ -0,0 +1,14 @@ +Name:Unyaro +Types:Plane Zhalfir +T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Command | ValidPlayer$ You | CheckSVar$ X | TriggerZones$ Command | Execute$ TrigUntapAll | TriggerDescription$ At the beginning of your end step, if you planeswalked to Unyaro this turn, untap all creatures. They phase out until a player planeswalks. (Treat them and anything attached to them as though they didn't exist.) +SVar:TrigUntapAll:DB$ UntapAll | ValidCards$ Creature | SubAbility$ DBPhaseOut +SVar:DBPhaseOut:DB$ Phases | AllValid$ Creature | WontPhaseInNormal$ True | RememberAffected$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | Triggers$ PlaneswalkTrig | OneOff$ True | RememberObjects$ Remembered | Duration$ Permanent | ForgetOnPhasedIn$ True | SubAbility$ DBCleanup +SVar:PlaneswalkTrig:Mode$ PlaneswalkedTo | Execute$ TrigPhaseIn | TriggerZones$ Command | Static$ True | TriggerDescription$ They phase out until a player planeswalks. +SVar:TrigPhaseIn:DB$ Phases | Defined$ Remembered | PhaseInOrOut$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$PlaneswalkedToThisTurn Unyaro +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ Whenever chaos ensues, create two 2/2 white and blue Knight creature tokens with vigilance. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ wu_2_2_knight_vigilance +DeckHas:Ability$Token & Colors$White|Blue & Type$Knight +Oracle:At the beginning of your end step, if you planeswalked to Unyaro this turn, untap all creatures. They phase out until a player planeswalks. (Treat them and anything attached to them as though they didn't exist.)\nWhenever chaos ensues, create two 2/2 white and blue Knight creature tokens with vigilance. diff --git a/forge-gui/res/cardsfolder/v/velis_vel.txt b/forge-gui/res/cardsfolder/v/velis_vel.txt index 0f6b549f3e8..a198c3ee575 100644 --- a/forge-gui/res/cardsfolder/v/velis_vel.txt +++ b/forge-gui/res/cardsfolder/v/velis_vel.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Lorwyn S:Mode$ Continuous | Affected$ Creature | AddPower$ AffectedX | AddToughness$ AffectedX | EffectZone$ Command | Description$ Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.) SVar:AffectedX:Count$Valid Creature.sharesCreatureTypeWith+Other -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target creature gains all creature types until end of turn. -SVar:RolledChaos:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | AddAllCreatureTypes$ True +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target creature gains all creature types until end of turn. +SVar:RolledChaos:DB$ Animate | ValidTgts$ Creature | AddAllCreatureTypes$ True SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.)\nWhenever you roll {CHAOS}, target creature gains all creature types until end of turn. +Oracle:Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.)\nWhenever chaos ensues, target creature gains all creature types until end of turn. diff --git a/forge-gui/res/cardsfolder/w/windriddle_palaces.txt b/forge-gui/res/cardsfolder/w/windriddle_palaces.txt index 9a49b637d25..36f22b98302 100644 --- a/forge-gui/res/cardsfolder/w/windriddle_palaces.txt +++ b/forge-gui/res/cardsfolder/w/windriddle_palaces.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Belenon S:Mode$ Continuous | EffectZone$ Command | Affected$ Card.TopLibrary | AffectedZone$ Library | MayLookAt$ Player | Description$ Players play with the top card of their libraries revealed. S:Mode$ Continuous | EffectZone$ Command | Affected$ Card.TopLibrary | AffectedZone$ Library | MayPlay$ You | Description$ You may play lands and cast spells from the top of any player's library. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each player mills a card. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player mills a card. SVar:RolledChaos:DB$ Mill | NumCards$ 1 | Defined$ Player SVar:AIRollPlanarDieParams:Mode$ Random | Chance$ 30 -Oracle:Players play with the top card of their libraries revealed.\nYou may play lands and cast spells from the top of any player's library.\nWhenever you roll {CHAOS}, each player mills a card. +Oracle:Players play with the top card of their libraries revealed.\nYou may play lands and cast spells from the top of any player's library.\nWhenever chaos ensues, each player mills a card. From d15ac2096cdeb2bebd715857adb75b0797f144f1 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 21 Apr 2023 17:23:58 -0400 Subject: [PATCH 51/98] fixes --- .../java/forge/game/ability/effects/RunChaosEffect.java | 8 ++------ forge-gui/res/cardsfolder/upcoming/unyaro.txt | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java index a9de663737f..7bd737e9623 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java @@ -1,12 +1,6 @@ package forge.game.ability.effects; -import java.util.List; -import java.util.Map; - import com.google.common.collect.Lists; - -import forge.game.PlanarDice; -import forge.game.ability.AbilityKey; import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; @@ -16,6 +10,8 @@ import forge.game.trigger.Trigger; import forge.game.trigger.TriggerType; import forge.game.trigger.WrappedAbility; +import java.util.List; + public class RunChaosEffect extends SpellAbilityEffect { @Override diff --git a/forge-gui/res/cardsfolder/upcoming/unyaro.txt b/forge-gui/res/cardsfolder/upcoming/unyaro.txt index b16df986653..a6cfec36d2a 100644 --- a/forge-gui/res/cardsfolder/upcoming/unyaro.txt +++ b/forge-gui/res/cardsfolder/upcoming/unyaro.txt @@ -1,13 +1,13 @@ Name:Unyaro Types:Plane Zhalfir -T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Command | ValidPlayer$ You | CheckSVar$ X | TriggerZones$ Command | Execute$ TrigUntapAll | TriggerDescription$ At the beginning of your end step, if you planeswalked to Unyaro this turn, untap all creatures. They phase out until a player planeswalks. (Treat them and anything attached to them as though they didn't exist.) +T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Command | ValidPlayer$ You | CheckSVar$ X | Execute$ TrigUntapAll | TriggerDescription$ At the beginning of your end step, if you planeswalked to Unyaro this turn, untap all creatures. They phase out until a player planeswalks. (Treat them and anything attached to them as though they didn't exist.) SVar:TrigUntapAll:DB$ UntapAll | ValidCards$ Creature | SubAbility$ DBPhaseOut SVar:DBPhaseOut:DB$ Phases | AllValid$ Creature | WontPhaseInNormal$ True | RememberAffected$ True | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | Triggers$ PlaneswalkTrig | OneOff$ True | RememberObjects$ Remembered | Duration$ Permanent | ForgetOnPhasedIn$ True | SubAbility$ DBCleanup SVar:PlaneswalkTrig:Mode$ PlaneswalkedTo | Execute$ TrigPhaseIn | TriggerZones$ Command | Static$ True | TriggerDescription$ They phase out until a player planeswalks. SVar:TrigPhaseIn:DB$ Phases | Defined$ Remembered | PhaseInOrOut$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Count$PlaneswalkedToThisTurn Unyaro +SVar:X:PlayerCountPropertyYou$PlaneswalkedToThisTurn Unyaro T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ Whenever chaos ensues, create two 2/2 white and blue Knight creature tokens with vigilance. SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ wu_2_2_knight_vigilance DeckHas:Ability$Token & Colors$White|Blue & Type$Knight From 2a53ea4dcdcf7705a0b4dc541d23e532c84ebd5d Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 22 Apr 2023 07:57:49 +0800 Subject: [PATCH 52/98] Update themberchaud.txt --- forge-gui/res/cardsfolder/upcoming/themberchaud.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/themberchaud.txt b/forge-gui/res/cardsfolder/upcoming/themberchaud.txt index f4b6ad5d7b6..3816e360c2c 100644 --- a/forge-gui/res/cardsfolder/upcoming/themberchaud.txt +++ b/forge-gui/res/cardsfolder/upcoming/themberchaud.txt @@ -3,10 +3,10 @@ ManaCost:4 R R R Types:Legendary Creature Dragon PT:5/5 K:Trample -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamageAllNonFlyers | TriggerDescription$ When CARDNAME enters the battlefield, he deals X damage to each creature without flying and each player, where X is the number of Mountains you control. -SVar:TrigDamageAllNonFlyers:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.withoutFlying | ValidPlayers$ Player | ValidDescription$ each creature without flying and each player +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamageAllNonFlyers | TriggerDescription$ When CARDNAME enters the battlefield, he deals X damage to each other creature without flying and each player, where X is the number of Mountains you control. +SVar:TrigDamageAllNonFlyers:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.Other+withoutFlying | ValidPlayers$ Player | ValidDescription$ each other creature without flying and each player S:Mode$ OptionalAttackCost | ValidCard$ Card.Self | Trigger$ TrigPump | Cost$ Exert<1/CARDNAME> | Description$ You may exert CARDNAME as it attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ Flying | SpellDescription$ When you do, he gains flying until end of turn. SVar:X:Count$TypeYouCtrl.Mountain DeckHints:Type$Dragon & Keyword$Flying -Oracle:When Themberchaud enters the battlefield, he deals X damage to each creature without flying and each player, where X is the number of Mountains you control.\nYou may exert Themberchaud as it attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) \ No newline at end of file +Oracle:When Themberchaud enters the battlefield, he deals X damage to each other creature without flying and each player, where X is the number of Mountains you control.\nYou may exert Themberchaud as it attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) From ea3130e0448cd027c354011bea1a2d5973da3578 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 22 Apr 2023 07:19:50 +0200 Subject: [PATCH 53/98] update --- forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt | 4 ++-- .../cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt | 2 +- forge-gui/res/cardsfolder/upcoming/themberchaud.txt | 6 +++--- forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt b/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt index 6209db9858d..f191356c04e 100644 --- a/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt +++ b/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt @@ -4,8 +4,8 @@ Types:Legendary Enchantment Creature Human Druid PT:2/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Enchantment.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Constellation — Whenever CARDNAME or another enchantment enters the battlefield under your control, put a +1/+1 counter on target creature. SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 -T:Mode$ DamageDone | ValidSource$ Card.Self,Creature.enchanted+YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | ResolvedLimit$ 1 | TriggerDescription$ Whenever NICKNAME or an enchanted creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn. -SVar:TrigToken:DB$ CopyPermanent | Optional$ True | Choices$ Enchantment.nonLegendary+YouCtrl | NumCopies$ 1 | ChoiceTitle$ Choose a nonlegendary enchantment you control +T:Mode$ DamageDone | ValidSource$ Card.Self,Creature.enchanted+YouCtrl | OptionalDecider You | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | ResolvedLimit$ 1 | TriggerDescription$ Whenever NICKNAME or an enchanted creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn. +SVar:TrigToken:DB$ CopyPermanent | Choices$ Enchantment.nonLegendary+YouCtrl | NumCopies$ 1 | ChoiceTitle$ Choose a nonlegendary enchantment you control DeckHas:Ability$Token DeckNeeds:Type$Enchantment Oracle:Constellation — Whenever Calix, Guided by Fate or another enchantment enters the battlefield under your control, put a +1/+1 counter on target creature.\nWhenever Calix or an enchanted creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn. diff --git a/forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt b/forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt index 555360cc015..32933be7daf 100644 --- a/forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt +++ b/forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt @@ -6,7 +6,7 @@ K:Vigilance K:Ward:3 T:Mode$ SpellCast | ValidCard$ Card.Kraken+wasCastFromYourHandByYou,Card.Leviathan+wasCastFromYourHandByYou,Card.Octopus+wasCastFromYourHandByYou,Card.Serpent+wasCastFromYourHandByYou | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ Whenever you cast a Kraken, Leviathan, Octopus, or Serpent spell from your hand, look at the top X cards of your library, where X is that spell's mana value. You may cast a spell with mana value less than X from among them without paying its mana cost. Put the rest on the bottom of your library in a random order. SVar:TrigDig:DB$ PeekAndReveal | Defined$ You | PeekAmount$ X | NoReveal$ True | RememberPeeked$ True | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | ValidZone$ Library | Valid$ Card.IsRemembered | ValidSA$ Spell.cmcLEX | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | ForgetPlayed$ True | SubAbility$ DBRestRandomOrder +SVar:DBPlay:DB$ Play | ValidZone$ Library | Valid$ Card.IsRemembered | ValidSA$ Spell.cmcLTX | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | ForgetPlayed$ True | SubAbility$ DBRestRandomOrder SVar:DBRestRandomOrder:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | RandomOrder$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:TriggeredCard$CardManaCost diff --git a/forge-gui/res/cardsfolder/upcoming/themberchaud.txt b/forge-gui/res/cardsfolder/upcoming/themberchaud.txt index f4b6ad5d7b6..60070106119 100644 --- a/forge-gui/res/cardsfolder/upcoming/themberchaud.txt +++ b/forge-gui/res/cardsfolder/upcoming/themberchaud.txt @@ -3,10 +3,10 @@ ManaCost:4 R R R Types:Legendary Creature Dragon PT:5/5 K:Trample -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamageAllNonFlyers | TriggerDescription$ When CARDNAME enters the battlefield, he deals X damage to each creature without flying and each player, where X is the number of Mountains you control. -SVar:TrigDamageAllNonFlyers:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.withoutFlying | ValidPlayers$ Player | ValidDescription$ each creature without flying and each player +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamageAllNonFlyers | TriggerDescription$ When CARDNAME enters the battlefield, he deals X damage to each other creature without flying and each player, where X is the number of Mountains you control. +SVar:TrigDamageAllNonFlyers:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.withoutFlying+Other | ValidPlayers$ Player | ValidDescription$ each other creature without flying and each player S:Mode$ OptionalAttackCost | ValidCard$ Card.Self | Trigger$ TrigPump | Cost$ Exert<1/CARDNAME> | Description$ You may exert CARDNAME as it attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ Flying | SpellDescription$ When you do, he gains flying until end of turn. SVar:X:Count$TypeYouCtrl.Mountain DeckHints:Type$Dragon & Keyword$Flying -Oracle:When Themberchaud enters the battlefield, he deals X damage to each creature without flying and each player, where X is the number of Mountains you control.\nYou may exert Themberchaud as it attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) \ No newline at end of file +Oracle:Trample\nWhen Themberchaud enters the battlefield, he deals X damage to each other creature without flying and each player, where X is the number of Mountains you control.\nYou may exert Themberchaud as he attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt b/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt index bdf6c930285..e86bf14ac1c 100644 --- a/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt +++ b/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt @@ -6,7 +6,7 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, exile a card from a graveyard. SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | SelectPrompt$ Select a card from a graveyard | Mandatory$ True | Hidden$ True | SubAbility$ DBCounter SVar:DBCounter:DB$ PutCounter | Defined$ Self | CounterNum$ 1 | CounterType$ P1P1 -S:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self | CharacteristicDefining$ True | SharedKeywordsZone$ Exile | SharedRestrictions$ Creature.ExiledWithSource | AddKeyword$ Flying & First Strike & Double Strike & Deathtouch & Haste & Hexproof & Indestructible & Lifelink & Menace & Protection & Reach & Trample & Vigilance | Description$ CARDNAME has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. +S:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self | SharedKeywordsZone$ Exile | SharedRestrictions$ Card.ExiledWithSource | AddKeyword$ Flying & First Strike & Double Strike & Deathtouch & Haste & Hexproof & Indestructible & Lifelink & Menace & Protection & Reach & Trample & Vigilance | Description$ CARDNAME has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. DeckHas:AbilityGraveyard|Counters SVar:HasAttackEffect:TRUE -Oracle:Whenever Urborg Scavengers enters the battlefield or attacks, exile target card from a graveyard. Put a +1/+1 counter on Urborg Scavengers.\nWhenever Urborg Scavengers enters the battlefield or attacks, exile target card from a graveyard. Put a +1/+1 counter on Urborg Scavengers.\nUrborg Scavengers has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. \ No newline at end of file +Oracle:Whenever Urborg Scavengers enters the battlefield or attacks, exile target card from a graveyard. Put a +1/+1 counter on Urborg Scavengers.\nUrborg Scavengers has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. \ No newline at end of file From 094a949e2e40f8168f15e986813651bae6cef1ae Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 22 Apr 2023 07:25:25 +0200 Subject: [PATCH 54/98] update --- forge-gui/res/cardsfolder/upcoming/inys_haen.txt | 2 +- forge-gui/res/cardsfolder/upcoming/ketria.txt | 2 +- forge-gui/res/cardsfolder/upcoming/littjara.txt | 2 +- forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt | 2 +- forge-gui/res/cardsfolder/upcoming/new_argive.txt | 2 +- forge-gui/res/cardsfolder/upcoming/paliano.txt | 2 +- forge-gui/res/cardsfolder/upcoming/riptide_island.txt | 2 +- forge-gui/res/cardsfolder/upcoming/strixhaven.txt | 2 +- forge-gui/res/cardsfolder/upcoming/the_caldaia.txt | 2 +- forge-gui/res/cardsfolder/upcoming/the_wilds.txt | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/inys_haen.txt b/forge-gui/res/cardsfolder/upcoming/inys_haen.txt index 7ba71f6865c..a07e067daf9 100644 --- a/forge-gui/res/cardsfolder/upcoming/inys_haen.txt +++ b/forge-gui/res/cardsfolder/upcoming/inys_haen.txt @@ -6,7 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigMill | TriggerZo SVar:TrigMill:DB$ Mill | NumCards$ 3 | Defined$ You T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigChangeZoneAll | TriggerDescription$ When you planeswalk away from CARDNAME, each player returns all land cards from their graveyard to the battlefield tapped SVar:TrigChangeZoneAll:DB$ ChangeZoneAll | Tapped$ True | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Land -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target nonland card from your graveyard to your hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target nonland card from your graveyard to your hand. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Card.nonLand+YouCtrl | TgtPrompt$ Select target nonland card in your graveyard DeckHas:Ability$Graveyard|Mill Oracle:When you planeswalk to Ins Haen and at the beginning of your upkeep, mill three cards.\nWhen you planeswalk away from Ins Haen, each player returns all land cards from their graveyard to the battlefield tapped\nWhenever chaos ensues, return target nonland card from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ketria.txt b/forge-gui/res/cardsfolder/upcoming/ketria.txt index cfc1bd23d0a..ad2f68ac4ca 100644 --- a/forge-gui/res/cardsfolder/upcoming/ketria.txt +++ b/forge-gui/res/cardsfolder/upcoming/ketria.txt @@ -4,7 +4,7 @@ Types:Plane Ikoria T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigCounter | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control. SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ Vigilance,Menace,Trample | CounterNum$ 1 | CounterTypePerDefined$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. SVar:RolledChaos:DB$ DigUntil | ValidPlayer$ You | Valid$ Permanent.nonLand | ValidDescription$ nonland permanent | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBChoose SVar:DBChoose:DB$ ChangeZone | Defined$ Remembered | DestinationAlternative$ Hand | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup | AlternativeDestinationMessage$ Would you like to put the card onto battlefield (and not into your hand)? | SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/upcoming/littjara.txt b/forge-gui/res/cardsfolder/upcoming/littjara.txt index 10d4831c392..a7aab107708 100644 --- a/forge-gui/res/cardsfolder/upcoming/littjara.txt +++ b/forge-gui/res/cardsfolder/upcoming/littjara.txt @@ -4,7 +4,7 @@ Types:Plane Kaldheim T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a 2/2 blue Shapeshifter creature token with changeling. (It is every creature type.) T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a 2/2 blue Shapeshifter creature token with changeling. (It is every creature type.) SVar:TrigToken:DB$ Token | TokenScript$ u_2_2_shapeshifter_changeling | TokenOwner$ You -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a creature type. Put a +1/+1 counter on each creature you control of that type. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a creature type. Put a +1/+1 counter on each creature you control of that type. SVar:RolledChaos:DB$ ChooseType | Defined$ You | Type$ Creature | SubAbility$ DBPutCounterAll | AILogic$ MostProminentComputerControls SVar:DBPutCounterAll:DB$ PutCounterAll | ValidCards$ Creature.ChosenType+YouCtrl | CounterType$ P1P1 | CounterNum$ 1 DeckHas:Ability$Token|Counters & Type$Shapeshifter diff --git a/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt b/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt index f91893a26b2..d6c554e719a 100644 --- a/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt +++ b/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt @@ -2,7 +2,7 @@ Name:Megaflora Jungle ManaCost:no cost Types:Plane Gargantikar S:Mode$ Continuous | Affected$ Creature.cmcLE2 | AddPower$ 2 | AddToughness$ 2 | EffectZone$ Command | Description$ Each creature with mana value 2 or less gets +2/+2. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 1/1 green Insect creature token with flying named Butterfly. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 1/1 green Insect creature token with flying named Butterfly. SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ butterfly | TokenOwner$ You DeckHas:Ability$Token & Type$Butterfly Oracle:Each creature with mana value 2 or less gets +2/+2.\nWhenever chaos ensues, create a 1/1 green Insect creature token with flying named Butterfly. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/new_argive.txt b/forge-gui/res/cardsfolder/upcoming/new_argive.txt index 4ee405c1917..b18cc29ecb6 100644 --- a/forge-gui/res/cardsfolder/upcoming/new_argive.txt +++ b/forge-gui/res/cardsfolder/upcoming/new_argive.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Dominaria T:Mode$ Attacks | ValidCard$ Creature.YouCtrl+Historic | TriggerZones$ Command | Execute$ TrigPump | TriggerDescription$ Whenever a historic creature you control attacks, it gets +2/+2 until end of turn. (Artifacts, legendaries, and Sagas are historic.) SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ +2 | NumDef$ +2 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal cards from the top of your library until you reveal a historic card. Put that card into your hand and the rest on the bottom of your library in a random order. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal cards from the top of your library until you reveal a historic card. Put that card into your hand and the rest on the bottom of your library in a random order. SVar:RolledChaos:DB$ DigUntil | Valid$ Card.Historic | ValidDescription$ historic card | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | FoundDestination$ Hand DeckHints:Type$Legendary & Type$Artifact|Saga Oracle:Whenever a historic creature you control attacks, it gets +2/+2 until end of turn. (Artifacts, legendaries, and Sagas are historic.)\nWhenever chaos ensues, reveal cards from the top of your library until you reveal a historic card. Put that card into your hand and the rest on the bottom of your library in a random order. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/paliano.txt b/forge-gui/res/cardsfolder/upcoming/paliano.txt index 07c74b25f40..ea67ab734f2 100644 --- a/forge-gui/res/cardsfolder/upcoming/paliano.txt +++ b/forge-gui/res/cardsfolder/upcoming/paliano.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Fiora T:Mode$ DamageDoneOnce | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CheckSVar$ Monarch | SVarCompare$ EQ0 | CombatDamage$ True | Execute$ TrigMonarch | TriggerZones$ Command | TriggerDescription$ When one or more creatures you control deal combat damage to a player, if there is no monarch, you become the monarch. SVar:TrigMonarch:DB$ BecomeMonarch | Defined$ You -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 1/1 black Assassin creature token with deathtouch and haste. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 1/1 black Assassin creature token with deathtouch and haste. SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ b_1_1_assassin_deathtouch_haste | TokenOwner$ You SVar:Monarch:PlayerCountPlayers$HasPropertyisMonarch DeckHas:Ability$Token & Type$Assassin diff --git a/forge-gui/res/cardsfolder/upcoming/riptide_island.txt b/forge-gui/res/cardsfolder/upcoming/riptide_island.txt index 541f3b51d47..2d1a1dee89f 100644 --- a/forge-gui/res/cardsfolder/upcoming/riptide_island.txt +++ b/forge-gui/res/cardsfolder/upcoming/riptide_island.txt @@ -4,7 +4,7 @@ Types:Plane Dominaria T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create two 1/1 colorless Sliver creature tokens. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create two 1/1 colorless Sliver creature tokens. SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ c_1_1_sliver | TokenOwner$ You -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, Slivers you control gain haste and get +X/+X until end of turn, where X is the number of Slivers you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, Slivers you control gain haste and get +X/+X until end of turn, where X is the number of Slivers you control. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Sliver.YouCtrl | NumAtt$ +X | NumDef$ +X | KW$ Haste SVar:X:Count$Valid Sliver.YouCtrl DeckHas:Ability$Token & Type$Sliver diff --git a/forge-gui/res/cardsfolder/upcoming/strixhaven.txt b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt index f4c95e7e225..9e83cebbc3f 100644 --- a/forge-gui/res/cardsfolder/upcoming/strixhaven.txt +++ b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt @@ -2,7 +2,7 @@ Name:Strixhaven ManaCost:no cost Types:Plane Arcavios S:Mode$ Continuous | AddKeyword$ Demonstrate | EffectZone$ Command | Affected$ Instant,Sorcery | AffectedZone$ Stack | Description$ Instant and sorcery spells players cast have demonstrate. (Whenever a player casts an instant or sorcery spell, they may copy it. If they do, they choose an opponent to also copy it. Players may choose new targets for their copies.) -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return up to one target instant or sorcery card from a graveyard to its owner's hand +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return up to one target instant or sorcery card from a graveyard to its owner's hand SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | TargetMin$ 0 | TargetMax$ 1 | Destination$ Hand | ValidTgts$ Instant,Sorcery | TgtPrompt$ Select up to target instant or sorcery spell from any graveyard DeckHas:Ability$Graveyard DeckHints:Type$Instant|Sorcery diff --git a/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt b/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt index 41322b17bf7..1c8d0636425 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt @@ -2,7 +2,7 @@ Name:The Caldaia ManaCost:no cost Types:Plane Capenna S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Stack | AddKeyword$ Blitz:3:Spell.Creature+wasCastFromYourHand | Description$ Creature spells you cast from your hand have blitz {3}. (If you cast a spell for its blitz cost, it gains haste and "When this creature dies, draw a card." Sacrifice it at the beginning of the next end step.) -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature card from your graveyard to your hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature card from your graveyard to your hand. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouCtrl DeckHas:Ability$Sacrifice & Keyword$Blitz Oracle:Creature spells you cast from your hand have blitz {3}. (If you cast a spell for its blitz cost, it gains haste and "When this creature dies, draw a card." Sacrifice it at the beginning of the next end step.)\nWhenever chaos ensues, return target creature card from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_wilds.txt b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt index fd6b4bf92cb..64a66d54cc6 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_wilds.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt @@ -4,7 +4,7 @@ Types:Plane Eldraine T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a Food token. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a Food token. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_food_sac | TokenOwner$ You -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player sacrifices a creature. If they do, you create a Food token. You create two Food tokens instead if the sacrificed creature's toughness was 4 or greater. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player sacrifices a creature. If they do, you create a Food token. You create two Food tokens instead if the sacrificed creature's toughness was 4 or greater. SVar:RolledChaos:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature | SacMessage$ Creature | RememberSacrificed$ True | SubAbility$ DBToken SVar:DBToken:DB$ Token | TokenScript$ c_a_food_sac | TokenAmount$ Z | ConditionDefined$ Remembered | ConditionPresent$ Card | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True From 705acb013e3afe454979de82de27f87ce05bad22 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 22 Apr 2023 07:29:13 +0200 Subject: [PATCH 55/98] update --- .../java/forge/game/card/CardFactoryUtil.java | 28 ++++++++----------- .../cardsfolder/upcoming/enigma_ridges.txt | 2 +- .../res/cardsfolder/upcoming/ghirapur.txt | 2 +- .../res/cardsfolder/upcoming/naktamun.txt | 2 +- .../upcoming/ten_wizards_mountain.txt | 2 +- .../upcoming/the_golden_city_of_orazca.txt | 2 +- .../res/cardsfolder/upcoming/the_pit.txt | 2 +- .../upcoming/the_western_cloud.txt | 2 +- .../res/cardsfolder/upcoming/valors_reach.txt | 2 +- 9 files changed, 20 insertions(+), 24 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 79bd7dd7c12..a3349029889 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -818,31 +818,27 @@ public class CardFactoryUtil { inst.addTrigger(trigger); } else if (keyword.equals("Ascend")) { - // Ascend trigger only for Permanent - if (card.isPlane()) { // Ascend trigger for The Golden City of Orazca - final String trig = "Mode$ Always | TriggerZones$ Command | Secondary$ True" - + " | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10 " - + " | TriggerDescription$ Ascend (" + inst.getReminderText() + ")"; - - final String effect = "DB$ Ascend | Defined$ You"; - - final Trigger trigger = TriggerHandler.parseTrigger(trig, card, intrinsic); - trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); - - inst.addTrigger(trigger); - - } else if (card.isPermanent()) { + final String trig = "Mode$ Always | TriggerZones$ Battlefield | Secondary$ True" + " | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10 " + " | TriggerDescription$ Ascend (" + inst.getReminderText() + ")"; + final String trigbis = "Mode$ Always | TriggerZones$ Command | Secondary$ True" + + " | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10 " + + " | TriggerDescription$ Ascend (" + inst.getReminderText() + ")"; + final String effect = "DB$ Ascend | Defined$ You"; final Trigger trigger = TriggerHandler.parseTrigger(trig, card, intrinsic); trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); - + + final Trigger triggerbis = TriggerHandler.parseTrigger(trigbis, card, intrinsic); + triggerbis.setOverridingAbility(AbilityFactory.getAbility(effect, card)); + inst.addTrigger(trigger); - } else { + inst.addTrigger(triggerbis); + } + else { SpellAbility sa = card.getFirstSpellAbility(); if (sa != null && sa.isSpell()) { sa.setBlessing(true); diff --git a/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt b/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt index 77d5d4c4eed..af3971aa3dd 100644 --- a/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt +++ b/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt @@ -7,7 +7,7 @@ SVar:DBChangeZone:DB$ ChangeZone | ConditionCheckSVar$ X | ConditionSVarCompare$ SVar:X:Count$Valid Land.RememberedPlayerCtrl SVar:Y:PlayerCountPlayers$HighestValid Land.YouCtrl SVar:Z:SVar$Y/Minus.X -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, draw a card, then you may put a land card from your hand onto the battlefield. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, draw a card, then you may put a land card from your hand onto the battlefield. SVar:RolledChaos:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBChangeZoneBis SVar:DBChangeZoneBis:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | Optional$ You | ChangeType$ Land | ChangeNum$ 1 Oracle:When you planeswalk to Enigma Ridges, each player who controls fewer lands than the player who controls the most lands searches their library for a number of basic land cards less than or equal to the difference, reveals them, puts them into their hand, then shuffles.\nWhenever chaos ensues, draw a card, then you may put a land card from your hand onto the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ghirapur.txt b/forge-gui/res/cardsfolder/upcoming/ghirapur.txt index 3efd5b3228d..098aefa91d6 100644 --- a/forge-gui/res/cardsfolder/upcoming/ghirapur.txt +++ b/forge-gui/res/cardsfolder/upcoming/ghirapur.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kaladesh T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigAnimateAll | TriggerDescription$ At the beginning of combat on your turn, until end of turn, each noncreature, non-Vehicle artifact you control becomes a 5/3 Vehicle in addition to its other types and gains trample, haste, and crew 2. SVar:TrigAnimateAll:DB$ AnimateAll | ValidCards$ Artifact.nonCreature+YouCtrl+nonVehicle | Power$ 5 | Toughness$ 3 | Types$ Vehicle | Keywords$ Crew:2 & Trample & Haste -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target noncreature artifact card from your graveyard to your hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target noncreature artifact card from your graveyard to your hand. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Artifact.nonCreature+YouCtrl | TgtPrompt$ Select target noncreature artifact spell from your graveyard DeckHas:Ability$Graveyard DeckHints:Type$Artifact diff --git a/forge-gui/res/cardsfolder/upcoming/naktamun.txt b/forge-gui/res/cardsfolder/upcoming/naktamun.txt index e2e3afe72d1..1379ce0e303 100644 --- a/forge-gui/res/cardsfolder/upcoming/naktamun.txt +++ b/forge-gui/res/cardsfolder/upcoming/naktamun.txt @@ -2,7 +2,7 @@ Name:Naktamun ManaCost:no cost Types:Plane Amonkhet S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Graveyard | AddKeyword$ Embalm:CardManaCost | Description$ Each creature card in your graveyard has embalm. Its embalm cost is equal to its mana cost. (Exile a creature card from your graveyard and pay its embalm cost: Create a token that's a copy of it, except it's a white Zombie in addition to its other types with no mana cost. Embalm only as a sorcery.) -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may discard a card. If you do, draw a card. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may discard a card. If you do, draw a card. SVar:RolledChaos:AB$ Draw | Cost$ Discard<1/Card> DeckHas:Ability$Graveyard|Token|Discard & Type$Zombie Oracle:Each creature card in your graveyard has embalm. Its embalm cost is equal to its mana cost. (Exile a creature card from your graveyard and pay its embalm cost: Create a token that's a copy of it, except it's a white Zombie in addition to its other types with no mana cost. Embalm only as a sorcery.)\nWhenever chaos ensues, you may discard a card. If you do, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt b/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt index 1c3b08ae609..7d0cebd644e 100644 --- a/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt +++ b/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Shenmeng T:Mode$ PlanarDice | TriggerZones$ Command | Execute$ RolledDie | TriggerDescription$ Whenever you roll the planar die, put a +1/+1 counter on up to one target creature. SVar:RolledDie:DB$ PutCounter | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control gain flying until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control gain flying until end of turn. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Flying DeckHas:Ability$Counters Oracle:Whenever you roll the planar die, put a +1/+1 counter on up to one target creature.\nWhenever chaos ensues, creatures you control gain flying until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt b/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt index 7de5bac4fde..0fb52cd5b57 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt @@ -5,7 +5,7 @@ K:Ascend T:Mode$ DamageDoneOnce | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ Whenever one or more creatures you control deal combat damage to a player, create a Treasure token. Then draw a card if you have the city's blessing. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | Condition$ Blessing -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may put a permanent card from your hand onto the battlefield tapped. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may put a permanent card from your hand onto the battlefield tapped. SVar:RolledChaos:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | Optional$ You | Tapped$ True | ChangeType$ Permanent | ChangeNum$ 1 DeckHas:Ability$Token & Type$Treasure Oracle:Ascend (If you control ten or more permanents, you get the city's blessing for the rest of the game.)\nWhenever one or more creatures you control deal combat damage to a player, create a Treasure token. Then draw a card if you have the city's blessing.\nWhenever chaos ensues, you may put a permanent card from your hand onto the battlefield tapped. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_pit.txt b/forge-gui/res/cardsfolder/upcoming/the_pit.txt index efbc58c2ffd..288aee6fd0c 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_pit.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_pit.txt @@ -6,7 +6,7 @@ SVar:TrigRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | ClearRememberedBefo SVar:DBChoice:DB$ GenericChoice | Defined$ Player.IsRemembered | Choices$ Angel,Demon SVar:Angel:DB$ Token | TokenScript$ w_3_3_angel_flying | TokenOwner$ Player.IsRemembered | SpellDescription$ Create a 3/3 white Angel creature token with flying SVar:Demon:DB$ Token | TokenScript$ b_6_6_demon_flying_trample_aristocrat | TokenOwner$ Player.IsRemembered | SpellDescription$ a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you." -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player sacrifices a nontoken creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player sacrifices a nontoken creature. SVar:RolledChaos:DB$ Sacrifice | SacValid$ Creature.nonToken | Defined$ Player DeckHas:Ability$Token|Sacrifice & Type$Demon|Angel Oracle:When you planeswalk to The Pit, each player creates their choice of a 3/3 white Angel creature token with flying or a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you."\nWhenever chaos ensues, each player sacrifices a nontoken creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt b/forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt index f279af3e6d1..3f0c4eed868 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt @@ -2,7 +2,7 @@ Name:The Western Cloud ManaCost:no cost Types:Plane Gobakhan R:Event$ DamageDone | ActiveZones$ Command | Prevent$ True | ValidTarget$ Planeswalker.YouCtrl,Creature.YouCtrl | Description$ Prevent all damage that would be dealt to creatures and planeswalkers you control. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create three tapped Treasure tokens. They each deal 1 damage to each creature and each planeswalker. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create three tapped Treasure tokens. They each deal 1 damage to each creature and each planeswalker. SVar:RolledChaos:DB$ Token | TokenAmount$ 3 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | RememberTokens$ True | TokenTapped$ True | SubAbility$ DBDamage SVar:DBDamage:DB$ EachDamage | DefinedDamagers$ Remembered | Defined$ Valid Creature,Planeswalker | NumDmg$ 1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/upcoming/valors_reach.txt b/forge-gui/res/cardsfolder/upcoming/valors_reach.txt index 5abccc91ef9..ac164d031c3 100644 --- a/forge-gui/res/cardsfolder/upcoming/valors_reach.txt +++ b/forge-gui/res/cardsfolder/upcoming/valors_reach.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kylem T:Mode$ AttackersDeclared | ValidAttackers$ Creature.YourTeamCtrl | Execute$ TrigPumpAll | IsPresent$ Creature.attacking | PresentCompare$ EQ2 | NoResolvingCheck$ True | TriggerZones$ Command | AttackingPlayer$ You | TriggerDescription$ Whenever your team attacks with exactly two creatures, those creatures gain double strike until end of turn. SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.YourTeamCtrl+attacking | KW$ Double Strike -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap up to two target creatures your team controls. If it's a main phase, there is an additional combat phase after this phase, followed by an additional main phase. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap up to two target creatures your team controls. If it's a main phase, there is an additional combat phase after this phase, followed by an additional main phase. SVar:RolledChaos:DB$ Untap | ValidTgts$ Creature.YourTeamCtrl | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Select up to two target creatures your team controls | SubAbility$ DBAddCombat SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ Combat | FollowedBy$ Main2 | ConditionPhases$ Main1,Main2 Oracle:Whenever you roll the planar die, put a +1/+1 counter on up to one target creature.\nWhenever chaos ensues, creatures you control gain flying until end of turn. \ No newline at end of file From fdc28e7c19b138930a7d28f1b95ca65950c4fdc5 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 22 Apr 2023 07:32:12 +0200 Subject: [PATCH 56/98] update --- forge-game/src/main/java/forge/game/card/CardFactoryUtil.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index c2e61676ed6..3dd961825c8 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -814,7 +814,8 @@ public class CardFactoryUtil { inst.addTrigger(trigger); } else if (keyword.equals("Ascend")) { - + // Ascend trigger only for Permanent + if (card.isPermanent()) { final String trig = "Mode$ Always | TriggerZones$ Battlefield | Secondary$ True" + " | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10 " + " | TriggerDescription$ Ascend (" + inst.getReminderText() + ")"; From d1eefaa856d4f16e5770d027a0a1472585ef9a43 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 22 Apr 2023 07:43:25 +0200 Subject: [PATCH 57/98] update --- forge-game/src/main/java/forge/game/card/CardFactoryUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 3dd961825c8..5298e529565 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -815,7 +815,7 @@ public class CardFactoryUtil { inst.addTrigger(trigger); } else if (keyword.equals("Ascend")) { // Ascend trigger only for Permanent - if (card.isPermanent()) { + if (card.isPermanent() || card.isPlane()) { final String trig = "Mode$ Always | TriggerZones$ Battlefield | Secondary$ True" + " | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10 " + " | TriggerDescription$ Ascend (" + inst.getReminderText() + ")"; From 1dedceec83e20e2089aa230ce0d7eddd4f7796b1 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 22 Apr 2023 08:36:36 +0200 Subject: [PATCH 58/98] update --- forge-gui/res/cardsfolder/upcoming/preening_champion.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/preening_champion.txt b/forge-gui/res/cardsfolder/upcoming/preening_champion.txt index 32ad52d2e8a..04abda534b2 100644 --- a/forge-gui/res/cardsfolder/upcoming/preening_champion.txt +++ b/forge-gui/res/cardsfolder/upcoming/preening_champion.txt @@ -4,6 +4,6 @@ Types:Creature Bird Knight PT:2/2 K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create two 1/1 blue and red Elemental creature tokens. -SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ ur_1_1_elemental +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ ur_1_1_elemental DeckHas:Ability$Token & Type$Elemental Oracle:Flying\nWhen Preening Champion enters the battlefield, create a 1/1 blue and red Elemental creature token. \ No newline at end of file From f45ecf26d3d58d2c97422df5809908d4ec5144b0 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 22 Apr 2023 08:45:21 +0200 Subject: [PATCH 59/98] Update aetherblade_agent_gitaxian_minsdstinger.txt --- .../upcoming/aetherblade_agent_gitaxian_minsdstinger.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt b/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt index 84f5adc521d..3425d06605d 100644 --- a/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt +++ b/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt @@ -2,10 +2,11 @@ Name:Aetherblade Agent ManaCost:1 B Types:Creature Human Rogue PT:1/1 +K:Deathtouch A:AB$ SetState | Cost$ 4 UP | Mode$ Transform | SorcerySpeed$ True | SpellDescription$ Transform CARDNAME. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) AlternateMode:DoubleFaced DeckHints:Color$Blue -Oracle:{4}{U/P}: Transform Aetherblade Agent. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) +Oracle:Deathtouch\n{4}{U/P}: Transform Aetherblade Agent. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) ALTERNATE From 47e124fa2bf69ebbf5820a7a708e61caa1d037f7 Mon Sep 17 00:00:00 2001 From: tool4ever Date: Sat, 22 Apr 2023 11:04:43 +0200 Subject: [PATCH 60/98] Update aetherblade_agent_gitaxian_minsdstinger.txt --- .../upcoming/aetherblade_agent_gitaxian_minsdstinger.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt b/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt index 84f5adc521d..3425d06605d 100644 --- a/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt +++ b/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt @@ -2,10 +2,11 @@ Name:Aetherblade Agent ManaCost:1 B Types:Creature Human Rogue PT:1/1 +K:Deathtouch A:AB$ SetState | Cost$ 4 UP | Mode$ Transform | SorcerySpeed$ True | SpellDescription$ Transform CARDNAME. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) AlternateMode:DoubleFaced DeckHints:Color$Blue -Oracle:{4}{U/P}: Transform Aetherblade Agent. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) +Oracle:Deathtouch\n{4}{U/P}: Transform Aetherblade Agent. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) ALTERNATE From d142be485df2453df4725847bf3df880e4971fe0 Mon Sep 17 00:00:00 2001 From: TRT <> Date: Sat, 22 Apr 2023 11:18:34 +0200 Subject: [PATCH 61/98] Clean up --- .../java/forge/game/card/CardFactoryUtil.java | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 5298e529565..10b77d3ee63 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -816,26 +816,17 @@ public class CardFactoryUtil { } else if (keyword.equals("Ascend")) { // Ascend trigger only for Permanent if (card.isPermanent() || card.isPlane()) { - final String trig = "Mode$ Always | TriggerZones$ Battlefield | Secondary$ True" - + " | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10 " + final String trig = "Mode$ Always | TriggerZones$ " + (card.isPlane() ? "Command" : "Battlefield") + + " | Secondary$ True | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10" + " | TriggerDescription$ Ascend (" + inst.getReminderText() + ")"; - final String trigbis = "Mode$ Always | TriggerZones$ Command | Secondary$ True" - + " | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10 " - + " | TriggerDescription$ Ascend (" + inst.getReminderText() + ")"; - final String effect = "DB$ Ascend | Defined$ You"; final Trigger trigger = TriggerHandler.parseTrigger(trig, card, intrinsic); trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); - - final Trigger triggerbis = TriggerHandler.parseTrigger(trigbis, card, intrinsic); - triggerbis.setOverridingAbility(AbilityFactory.getAbility(effect, card)); - + inst.addTrigger(trigger); - inst.addTrigger(triggerbis); - } - else { + } else { SpellAbility sa = card.getFirstSpellAbility(); if (sa != null && sa.isSpell()) { sa.setBlessing(true); From 5342fe9ff5dbc30c78551924f9a5f46f14309576 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 22 Apr 2023 11:51:37 +0200 Subject: [PATCH 62/98] Update valors_reach.txt --- forge-gui/res/cardsfolder/upcoming/valors_reach.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/valors_reach.txt b/forge-gui/res/cardsfolder/upcoming/valors_reach.txt index ac164d031c3..c2f73ebef04 100644 --- a/forge-gui/res/cardsfolder/upcoming/valors_reach.txt +++ b/forge-gui/res/cardsfolder/upcoming/valors_reach.txt @@ -6,4 +6,4 @@ SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.YourTeamCtrl+attacking | KW$ T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap up to two target creatures your team controls. If it's a main phase, there is an additional combat phase after this phase, followed by an additional main phase. SVar:RolledChaos:DB$ Untap | ValidTgts$ Creature.YourTeamCtrl | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Select up to two target creatures your team controls | SubAbility$ DBAddCombat SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ Combat | FollowedBy$ Main2 | ConditionPhases$ Main1,Main2 -Oracle:Whenever you roll the planar die, put a +1/+1 counter on up to one target creature.\nWhenever chaos ensues, creatures you control gain flying until end of turn. \ No newline at end of file +Oracle:Whenever your team attacks with exactly two creatures, those creatures gain double strike until end of turn.\nWhenever chaos ensues, untap up to two target creatures your team controls. If it's a main phase, there is an additional combat phase after this phase, followed by an additional main phase. From d8bda83ab360e6d259899813b6a352265aa60139 Mon Sep 17 00:00:00 2001 From: tool4ever Date: Sat, 22 Apr 2023 12:16:54 +0200 Subject: [PATCH 63/98] Update ApiType.java --- forge-game/src/main/java/forge/game/ability/ApiType.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/ApiType.java b/forge-game/src/main/java/forge/game/ability/ApiType.java index 3d6a15de6f2..17c12ada344 100644 --- a/forge-game/src/main/java/forge/game/ability/ApiType.java +++ b/forge-game/src/main/java/forge/game/ability/ApiType.java @@ -27,7 +27,6 @@ public enum ApiType { BecomeMonarch (BecomeMonarchEffect.class), BecomesBlocked (BecomesBlockedEffect.class), BidLife (BidLifeEffect.class), - BlankLine (BlankLineEffect.class), Block (BlockEffect.class), Bond (BondEffect.class), Branch (BranchEffect.class), @@ -191,7 +190,7 @@ public enum ApiType { Vote (VoteEffect.class), WinsGame (GameWinEffect.class), - + BlankLine (BlankLineEffect.class), DamageResolve (DamageResolveEffect.class), ChangeZoneResolve (ChangeZoneResolveEffect.class), InternalLegendaryRule (CharmEffect.class), From c1d092cd0e71bd80c5290358c77b15609b88c83b Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 22 Apr 2023 12:22:35 +0200 Subject: [PATCH 64/98] update --- .../res/cardsfolder/upcoming/cosmic_rebirth.txt | 8 ++++++++ .../upcoming/gold_forged_thopteryx.txt | 10 ++++++++++ .../cardsfolder/upcoming/harnessed_snubhorn.txt | 10 ++++++++++ .../upcoming/narset_enlightened_exile.txt | 15 +++++++++++++++ .../res/cardsfolder/upcoming/rebuild_the_city.txt | 6 ++++++ 5 files changed, 49 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/rebuild_the_city.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt b/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt new file mode 100644 index 00000000000..550866b775e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt @@ -0,0 +1,8 @@ +Name:Cosmic Rebirth +ManaCost:1 G W +Types:Instant +A:SP$ ChangeZone | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target permanent card in your graveyard | Origin$ Graveyard | Destination$ Battlefield | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcLE3 | SubAbility$ DBChangeZone | SpellDescription$ Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand. +SVar:DBChangeZone:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Hand | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcGT3 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 | SpellDescription$ You gain 3 life. +DeckHas:Ability$LifeGain|Graveyard +Oracle:Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand.\nYou gain 3 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt b/forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt new file mode 100644 index 00000000000..4742a26f523 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt @@ -0,0 +1,10 @@ +Name:Gold-Forged Thopteryx +ManaCost:W U +Types:Artifact Creature Dinosaur Thopter +PT:1/3 +K:Flying +K:Lifelink +S:Mode$ Continuous | Affected$ Permanent.YouCtrl+Legendary | AddKeyword$ Ward:2 | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Each legendary permanent you control has ward {2}. +DeckHas:Ability$LifeGain +DeckHints:Type$Legendary +Oracle:Flying, lifelink\nEach legendary permanent you control has ward {2}. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt b/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt new file mode 100644 index 00000000000..c118c028dbd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt @@ -0,0 +1,10 @@ +Name:Harnessed Snubhorn +ManaCost:3 W +Types:Creature Dinosaur +PT:2/5 +K:Vigilance +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Battle | Execute$ TrigReturn | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, return target artifact or enchantment card from your graveyard to the battlefield. +SVar:TrigReturn:DB$ ChangeZone | ValidTgts$ Artifact.YouOwn,Enchantment.YouOwn | TgtPrompt$ Select target artifact or enchantment card from your graveyard | Origin$ Graveyard | Destination$ Battlefield +DeckHas:Ability$Graveyard +DeckHints:Type$Artifact|Enchantment +Oracle:Whenever Harnessed Snubhorn deals combat damage to a player, return target artifact or enchantment card from your graveyard to the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt b/forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt new file mode 100644 index 00000000000..355129330fb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt @@ -0,0 +1,15 @@ +Name:Narset, Enlightened Exile +ManaCost:1 U R W +Types:Legendary Creature Human Monk +PT:3/4 +S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddKeyword$ Prowess | Description$ Creatures you control have prowess. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$Whenever CARDNAME attacks, exile target noncreature, nonland card with mana value less than NICKNAME's power from a graveyard and copy it. You may cast the copy without paying its mana cost. +SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Card.nonCreature+nonLand+cmcLTX | TgtPrompt$ Select target noncreature nonland card from a graveyard with mana value less then Narset's power | RememberChanged$ True | SubAbility$ DBPlay +SVar:DBPlay:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | Optional$ True +SVar:X:Count$CardPower +DeckHints:Type$Instant|Sorcery|Artifact|Enchantment|Battle|Planeswalker +DeckHas:Ability$Graveyard +SVar:HasAttackEffect:TRUE +SVar:EquipMe:Multiple +SVar:EnchantMe:Multiple +Oracle:Creatures you control have prowess.\nWhenever Narset, Enlightened Exile attacks, exile target noncreature, nonland card with mana value less than Narset's power from a graveyard and copy it. You may cast the copy without paying its mana cost. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/rebuild_the_city.txt b/forge-gui/res/cardsfolder/upcoming/rebuild_the_city.txt new file mode 100644 index 00000000000..fcb3c2041e9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rebuild_the_city.txt @@ -0,0 +1,6 @@ +Name:Rebuild the City +ManaCost:3 B R G +Types:Sorcery +A:SP$ CopyPermanent | ValidTgts$ Land | TgtPrompt$ Select target land | NumCopies$ 3 | SetPower$ 3 | SetToughness$ 3 | AddKeywords$ Vigilance & Menace | AddTypes$ Creature | SpellDescription$ Choose target land. Create three tokens that are copies of it, except they're 3/3 creatures in addition to their other types and they have vigilance and menace. (They're affected by summoning sickness.) +DeckHas:Ability$Token +Oracle:Choose target land. Create three tokens that are copies of it, except they're 3/3 creatures in addition to their other types and they have vigilance and menace. (They're affected by summoning sickness.) \ No newline at end of file From a20dff568140ce4939270f1bbf0936fecc168602 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sat, 22 Apr 2023 13:02:59 +0200 Subject: [PATCH 65/98] Update urborg_scavengers.txt --- forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt b/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt index e86bf14ac1c..62a712c6994 100644 --- a/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt +++ b/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt @@ -6,7 +6,7 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, exile a card from a graveyard. SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | SelectPrompt$ Select a card from a graveyard | Mandatory$ True | Hidden$ True | SubAbility$ DBCounter SVar:DBCounter:DB$ PutCounter | Defined$ Self | CounterNum$ 1 | CounterType$ P1P1 -S:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self | SharedKeywordsZone$ Exile | SharedRestrictions$ Card.ExiledWithSource | AddKeyword$ Flying & First Strike & Double Strike & Deathtouch & Haste & Hexproof & Indestructible & Lifelink & Menace & Protection & Reach & Trample & Vigilance | Description$ CARDNAME has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. +S:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self | SharedKeywordsZone$ Exile | SharedRestrictions$ Card.ExiledWithSource | AddKeyword$ Flying & First Strike & Double Strike & Deathtouch & Haste & Hexproof & Indestructible & Lifelink & Menace & Reach & Trample & Vigilance | Description$ CARDNAME has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. DeckHas:AbilityGraveyard|Counters SVar:HasAttackEffect:TRUE -Oracle:Whenever Urborg Scavengers enters the battlefield or attacks, exile target card from a graveyard. Put a +1/+1 counter on Urborg Scavengers.\nUrborg Scavengers has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. \ No newline at end of file +Oracle:Whenever Urborg Scavengers enters the battlefield or attacks, exile target card from a graveyard. Put a +1/+1 counter on Urborg Scavengers.\nUrborg Scavengers has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. From 6f8309c31a77f223d1423899e831c082d7e2a383 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sun, 23 Apr 2023 08:01:43 +0800 Subject: [PATCH 66/98] update equipped abilities --- forge-gui-mobile/src/forge/adventure/stage/GameHUD.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index e9f4e7cb127..730e18d2bc3 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -335,6 +335,8 @@ public class GameHUD extends Stage { unloadAudio(); SoundSystem.instance.resume(); // resume World BGM } + //unequip and reequip abilities + updateAbility(); } void updateAbility() { From e3b087ea37edca2b1d24977f4021310ea3985846 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 23 Apr 2023 08:30:03 +0200 Subject: [PATCH 67/98] update --- forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt | 2 +- .../res/cardsfolder/upcoming/gold_forged_thopteryx.txt | 2 +- .../res/cardsfolder/upcoming/narset_enlightened_exile.txt | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt b/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt index 550866b775e..5241bc6ccbd 100644 --- a/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt +++ b/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt @@ -1,7 +1,7 @@ Name:Cosmic Rebirth ManaCost:1 G W Types:Instant -A:SP$ ChangeZone | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target permanent card in your graveyard | Origin$ Graveyard | Destination$ Battlefield | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcLE3 | SubAbility$ DBChangeZone | SpellDescription$ Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand. +A:SP$ ChangeZone | ValidTgts$ Permanent.YouOwn | TgtPrompt$ Select target permanent card in your graveyard | Origin$ Graveyard | Destination$ Battlefield | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcLE3 | SubAbility$ DBChangeZone | SpellDescription$ Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand. SVar:DBChangeZone:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Hand | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcGT3 | SubAbility$ DBGainLife SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 | SpellDescription$ You gain 3 life. DeckHas:Ability$LifeGain|Graveyard diff --git a/forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt b/forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt index 4742a26f523..51833b58952 100644 --- a/forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt +++ b/forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt @@ -4,7 +4,7 @@ Types:Artifact Creature Dinosaur Thopter PT:1/3 K:Flying K:Lifelink -S:Mode$ Continuous | Affected$ Permanent.YouCtrl+Legendary | AddKeyword$ Ward:2 | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Each legendary permanent you control has ward {2}. +S:Mode$ Continuous | Affected$ Permanent.YouCtrl+Legendary | AddKeyword$ Ward:2 | Description$ Each legendary permanent you control has ward {2}. DeckHas:Ability$LifeGain DeckHints:Type$Legendary Oracle:Flying, lifelink\nEach legendary permanent you control has ward {2}. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt b/forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt index 355129330fb..bf16eeea6d9 100644 --- a/forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt +++ b/forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt @@ -3,9 +3,10 @@ ManaCost:1 U R W Types:Legendary Creature Human Monk PT:3/4 S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddKeyword$ Prowess | Description$ Creatures you control have prowess. -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$Whenever CARDNAME attacks, exile target noncreature, nonland card with mana value less than NICKNAME's power from a graveyard and copy it. You may cast the copy without paying its mana cost. -SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Card.nonCreature+nonLand+cmcLTX | TgtPrompt$ Select target noncreature nonland card from a graveyard with mana value less then Narset's power | RememberChanged$ True | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | Optional$ True +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ Whenever CARDNAME attacks, exile target noncreature, nonland card with mana value less than NICKNAME's power from a graveyard and copy it. You may cast the copy without paying its mana cost. +SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Card.nonCreature+nonLand+cmcLTX | TgtPrompt$ Select target noncreature nonland card from a graveyard with mana value less then Narset's power | RememberChanged$ True | SubAbility$ DBCopy +SVar:DBPlay:DB$ Play | Defined$ Remembered | CopyCard$ True | Controller$ You | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$CardPower DeckHints:Type$Instant|Sorcery|Artifact|Enchantment|Battle|Planeswalker DeckHas:Ability$Graveyard From c826f50951964837a5c6fafc6badf35f3f6c25ab Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 23 Apr 2023 08:32:57 +0200 Subject: [PATCH 68/98] Rename invasion_of_kaladesh.txt to invasion_of_kaladesh_aetherwing_golden_scale_flagship.txt --- ...> invasion_of_kaladesh_aetherwing_golden_scale_flagship.txt} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename forge-gui/res/cardsfolder/upcoming/{invasion_of_kaladesh.txt => invasion_of_kaladesh_aetherwing_golden_scale_flagship.txt} (96%) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh_aetherwing_golden_scale_flagship.txt similarity index 96% rename from forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh.txt rename to forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh_aetherwing_golden_scale_flagship.txt index 0793c6c086f..cfaac44d14e 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh_aetherwing_golden_scale_flagship.txt @@ -20,4 +20,4 @@ K:Flying K:Crew:1 S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | Description$ CARDNAME's power is equal to the number of artifacts you control. SVar:X:Count$Valid Artifact.YouCtrl -Oracle:Flying\nAetherwing, Golden-Scale Flagship's power is equal to the number of artifacts you control.\nCrew 1 (Tap any number of creatures you control with total power 1 or more: This Vehicle becomes an artifact creature until end of turn.) \ No newline at end of file +Oracle:Flying\nAetherwing, Golden-Scale Flagship's power is equal to the number of artifacts you control.\nCrew 1 (Tap any number of creatures you control with total power 1 or more: This Vehicle becomes an artifact creature until end of turn.) From 0acf43654d48de8a98ee224f7bda0e41594da090 Mon Sep 17 00:00:00 2001 From: tool4ever Date: Sun, 23 Apr 2023 07:59:17 +0000 Subject: [PATCH 69/98] Update vogar_necropolis_tyrant.txt --- forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt b/forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt index 4501e7231a8..8fc48d195de 100644 --- a/forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt +++ b/forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt @@ -3,10 +3,10 @@ ManaCost:3 B B Types:Legendary Creature Zombie Giant PT:4/4 K:Menace -T:Mode$ ChangesZone | ValidCard$ Creature.Other+YouCtrl | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ TrigPutCounter | PlayerTurn$ True | TriggerDescription$ Whenever another creature you control dies during your turn, put a +1/+1 counter on CARDNAME. +T:Mode$ ChangesZone | ValidCard$ Creature.Other | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ TrigPutCounter | PlayerTurn$ True | TriggerDescription$ Whenever another creature dies during your turn, put a +1/+1 counter on CARDNAME. SVar:TrigPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When NICKNAME dies, draw a card for each +1+1 counter on it. SVar:TrigDraw:DB$ Draw | NumCards$ XLKI SVar:XLKI:TriggeredCard$CardCounters.P1P1 DeckHas:Ability$Counters -Oracle:Menace\nWhenever another creature you control dies during your turn, put a +1/+1 counter on Vogar Necropolis Tyrant.\nWhen Vogar dies, draw a card for each +1+1 counter on it. +Oracle:Menace\nWhenever another creature dies during your turn, put a +1/+1 counter on Vogar Necropolis Tyrant.\nWhen Vogar dies, draw a card for each +1+1 counter on it. From 60d4af0e10bf69f8b8a999888e0b566a5fd07063 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 23 Apr 2023 12:07:08 +0200 Subject: [PATCH 70/98] Invasion of Theros (#2986) * update * Update invasion_of_theros_ephara_ever_sheltering.txt * Update invasion_of_theros_ephara_ever_sheltering.txt --- ...asion_of_theros_ephara_ever_sheltering.txt | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/invasion_of_theros_ephara_ever_sheltering.txt diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_theros_ephara_ever_sheltering.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_theros_ephara_ever_sheltering.txt new file mode 100644 index 00000000000..8c2130f707d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_theros_ephara_ever_sheltering.txt @@ -0,0 +1,22 @@ +Name:Invasion of Theros +ManaCost:2 W +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSearch | TriggerDescription$ When CARDNAME enters the battlefield, search your library for an Aura, God, or Demigod card, reveal it, put it into your hand, then shuffle. +SVar:TrigSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Aura,Demigod,God | ChangeNum$ 1 | Shuffle$ True +DeckHints:Type$God|Demigod|Aura|Enchantment +DeckHas:Ability$LifeGain +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Theros enters the battlefield, search your library for an Aura, God, or Demigod card, reveal it, put it into your hand, then shuffle. + +ALTERNATE + +Name:Ephara, Ever-Sheltering +ManaCost:no cost +Colors:white,blue +Types:Legendary Enchantment Creature God +PT:4/4 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Lifelink & Indestructible | IsPresent$ Enchantment.Other+YouCtrl | PresentCompare$ GE3 | Description$ CARDNAME has lifelink and indestructible as long as you control at least three other enchantments. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.Other+YouCtrl | Execute$ TrigDraw | TriggerDescription$ Whenever another enchantment enters the battlefield under your control, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Ephara, Ever-Sheltering has lifelink and indestructible as long as you control at least three other enchantments.\nWhenever another enchantment enters the battlefield under your control, draw a card. From 07484058111fbeb70baa7882e0609b4a77774736 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 23 Apr 2023 12:33:48 +0200 Subject: [PATCH 71/98] update --- forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt | 4 ++-- forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt b/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt index 5241bc6ccbd..c28abad719e 100644 --- a/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt +++ b/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt @@ -1,8 +1,8 @@ Name:Cosmic Rebirth ManaCost:1 G W Types:Instant -A:SP$ ChangeZone | ValidTgts$ Permanent.YouOwn | TgtPrompt$ Select target permanent card in your graveyard | Origin$ Graveyard | Destination$ Battlefield | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcLE3 | SubAbility$ DBChangeZone | SpellDescription$ Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand. -SVar:DBChangeZone:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Hand | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcGT3 | SubAbility$ DBGainLife +A:SP$ ChangeZone | Optional$ True | ValidTgts$ Permanent.YouOwn | TgtPrompt$ Select target permanent card in your graveyard | Origin$ Graveyard | Destination$ Battlefield | RememberChanged$ True | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcLE3 | SubAbility$ DBChangeZone | SpellDescription$ Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand. +SVar:DBChangeZone:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Hand | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBGainLife SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 | SpellDescription$ You gain 3 life. DeckHas:Ability$LifeGain|Graveyard Oracle:Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand.\nYou gain 3 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt b/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt index c118c028dbd..38ffb3832b2 100644 --- a/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt +++ b/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt @@ -3,7 +3,7 @@ ManaCost:3 W Types:Creature Dinosaur PT:2/5 K:Vigilance -T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Battle | Execute$ TrigReturn | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, return target artifact or enchantment card from your graveyard to the battlefield. +T:Mode$ DamageDone | ValidSource$ Card.Self | Optional$ True | ValidTarget$ Player | Execute$ TrigReturn | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, return target artifact or enchantment card from your graveyard to the battlefield. SVar:TrigReturn:DB$ ChangeZone | ValidTgts$ Artifact.YouOwn,Enchantment.YouOwn | TgtPrompt$ Select target artifact or enchantment card from your graveyard | Origin$ Graveyard | Destination$ Battlefield DeckHas:Ability$Graveyard DeckHints:Type$Artifact|Enchantment From 441721efb873ad3f852f67c84799b09fd00f969b Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 23 Apr 2023 12:34:24 +0200 Subject: [PATCH 72/98] Update cosmic_rebirth.txt --- forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt b/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt index c28abad719e..42d9bef69f8 100644 --- a/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt +++ b/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt @@ -3,6 +3,7 @@ ManaCost:1 G W Types:Instant A:SP$ ChangeZone | Optional$ True | ValidTgts$ Permanent.YouOwn | TgtPrompt$ Select target permanent card in your graveyard | Origin$ Graveyard | Destination$ Battlefield | RememberChanged$ True | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcLE3 | SubAbility$ DBChangeZone | SpellDescription$ Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand. SVar:DBChangeZone:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Hand | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBGainLife -SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 | SpellDescription$ You gain 3 life. +SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 | SubAbility$ DBCleanup | SpellDescription$ You gain 3 life. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True DeckHas:Ability$LifeGain|Graveyard Oracle:Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand.\nYou gain 3 life. \ No newline at end of file From f18f77cce5c7c87d47e3542e68ab5f33c23ee85a Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Sun, 23 Apr 2023 12:53:31 +0200 Subject: [PATCH 73/98] Update harnessed_snubhorn.txt --- forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt b/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt index 38ffb3832b2..72c601a6758 100644 --- a/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt +++ b/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt @@ -3,7 +3,7 @@ ManaCost:3 W Types:Creature Dinosaur PT:2/5 K:Vigilance -T:Mode$ DamageDone | ValidSource$ Card.Self | Optional$ True | ValidTarget$ Player | Execute$ TrigReturn | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, return target artifact or enchantment card from your graveyard to the battlefield. +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigReturn | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, return target artifact or enchantment card from your graveyard to the battlefield. SVar:TrigReturn:DB$ ChangeZone | ValidTgts$ Artifact.YouOwn,Enchantment.YouOwn | TgtPrompt$ Select target artifact or enchantment card from your graveyard | Origin$ Graveyard | Destination$ Battlefield DeckHas:Ability$Graveyard DeckHints:Type$Artifact|Enchantment From 442a859ec175d0c80671b8ecfac6a2e2a74bb3e9 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 24 Apr 2023 00:38:57 +0800 Subject: [PATCH 74/98] Add AdventureWinLose Overlay - show Match results after Duels on Adventure Mode - update SettingsScene options to disable AdventureWinLose Overlay - update console toggle --- .../src/forge/adventure/data/SettingData.java | 1 + .../src/forge/adventure/scene/DuelScene.java | 20 ++++---- .../forge/adventure/scene/SettingsScene.java | 10 +++- .../src/forge/adventure/stage/GameHUD.java | 20 ++++++-- .../forge/screens/match/MatchController.java | 14 +++--- .../match/winlose/AdventureWinLose.java | 46 +++++++++++++++++++ .../screens/match/winlose/ViewWinLose.java | 27 ++++++++--- forge-gui/res/languages/de-DE.properties | 2 + forge-gui/res/languages/en-US.properties | 2 + forge-gui/res/languages/es-ES.properties | 2 + forge-gui/res/languages/fr-FR.properties | 2 + forge-gui/res/languages/it-IT.properties | 2 + forge-gui/res/languages/ja-JP.properties | 2 + forge-gui/res/languages/pt-BR.properties | 2 + forge-gui/res/languages/zh-CN.properties | 2 + 15 files changed, 122 insertions(+), 32 deletions(-) create mode 100644 forge-gui-mobile/src/forge/screens/match/winlose/AdventureWinLose.java diff --git a/forge-gui-mobile/src/forge/adventure/data/SettingData.java b/forge-gui-mobile/src/forge/adventure/data/SettingData.java index 048e608b8a6..fddfb1b705a 100644 --- a/forge-gui-mobile/src/forge/adventure/data/SettingData.java +++ b/forge-gui-mobile/src/forge/adventure/data/SettingData.java @@ -19,4 +19,5 @@ public class SettingData { public Float rewardCardAdjLandscape; public Float cardTooltipAdjLandscape; public boolean dayNightBG; + public boolean disableWinLose; } diff --git a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java index 0b8b3d49a38..93372af902c 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java @@ -34,6 +34,7 @@ import forge.player.GamePlayerUtil; import forge.player.PlayerControllerHuman; import forge.screens.FScreen; import forge.screens.LoadingOverlay; +import forge.screens.TransitionScreen; import forge.screens.match.MatchController; import forge.sound.MusicPlaylist; import forge.sound.SoundSystem; @@ -131,6 +132,8 @@ public class DuelScene extends ForgeScene { public void run(Integer result) { if (result == 0) { afterGameEnd(enemyName, finalWinner, true, true); + if (Config.instance().getSettingData().disableWinLose) + exitDuelScene(); } fb.dispose(); } @@ -139,9 +142,9 @@ public class DuelScene extends ForgeScene { afterGameEnd(enemyName, winner, false, false); } } - - void afterGameEnd(String enemyName, boolean winner, boolean showOverlay, boolean alternate) { - Runnable runnable = () -> Gdx.app.postRunnable(()-> { + Runnable endRunnable = null; + void afterGameEnd(String enemyName, boolean winner, boolean overlay, boolean alt) { + endRunnable = () -> Gdx.app.postRunnable(()-> { if (GameScene.instance().isNotInWorldMap()) { SoundSystem.instance.pause(); GameHUD.getInstance().playAudio(); @@ -160,14 +163,9 @@ public class DuelScene extends ForgeScene { ((IAfterMatch) last).setWinner(winner); } }); - if (showOverlay) { - FThreads.invokeInEdtNowOrLater(() -> { - matchOverlay = new LoadingOverlay(runnable, true, alternate); - matchOverlay.show(); - }); - } else { - runnable.run(); - } + } + public void exitDuelScene() { + Forge.setTransitionScreen(new TransitionScreen(endRunnable, Forge.takeScreenshot(), false, false)); } void addEffects(RegisteredPlayer player, Array effects) { diff --git a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java index 02c404b73c4..555992547a7 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java @@ -17,7 +17,6 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.time.LocalTime; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Stream; @@ -203,7 +202,6 @@ public class SettingsScene extends UIScene { boolean value = ((CheckBox) actor).isChecked(); Config.instance().getSettingData().fullScreen = value; Config.instance().saveSettings(); - setTargetTime(LocalTime.now().getHour()); //update if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_FULLSCREEN_MODE) != value) { FModel.getPreferences().setPref(ForgePreferences.FPref.UI_LANDSCAPE_MODE, value); @@ -223,6 +221,14 @@ public class SettingsScene extends UIScene { } } }); + addSettingField(Forge.getLocalizer().getMessage("lblDisableWinLose"), Config.instance().getSettingData().disableWinLose, new ChangeListener() { + @Override + public void changed(ChangeEvent event, Actor actor) { + boolean value = ((CheckBox) actor).isChecked(); + Config.instance().getSettingData().disableWinLose = value; + Config.instance().saveSettings(); + } + }); addCheckBox(Forge.getLocalizer().getMessage("lblCardName"), ForgePreferences.FPref.UI_OVERLAY_CARD_NAME); addSettingSlider(Forge.getLocalizer().getMessage("cbAdjustMusicVolume"), ForgePreferences.FPref.UI_VOL_MUSIC, 0, 100); addSettingSlider(Forge.getLocalizer().getMessage("cbAdjustSoundsVolume"), ForgePreferences.FPref.UI_VOL_SOUNDS, 0, 100); diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index 730e18d2bc3..2fc837eac90 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -338,12 +338,14 @@ public class GameHUD extends Stage { //unequip and reequip abilities updateAbility(); } - - void updateAbility() { + void clearAbility() { for (TextraButton button : abilityButtonMap) { button.remove(); } abilityButtonMap.clear(); + } + void updateAbility() { + clearAbility(); setAbilityButton(AdventurePlayer.current().getEquippedAbility1()); setAbilityButton(AdventurePlayer.current().getEquippedAbility2()); float x = Forge.isLandscapeMode() ? 426f : 216f; @@ -570,6 +572,14 @@ public class GameHUD extends Stage { } opacity = visible ? 1f : 0.4f; } + void toggleConsole() { + console.toggle(); + if (console.isVisible()) { + clearAbility(); + } else { + updateAbility(); + } + } @Override public boolean keyUp(int keycode) { @@ -584,12 +594,12 @@ public class GameHUD extends Stage { } ui.pressDown(keycode); if (keycode == Input.Keys.F9 || keycode == Input.Keys.F10) { - console.toggle(); + toggleConsole(); return true; } if (keycode == Input.Keys.BACK) { if (console.isVisible()) { - console.toggle(); + toggleConsole(); } } if (console.isVisible()) @@ -701,7 +711,7 @@ public class GameHUD extends Stage { @Override public boolean longPress(Actor actor, float x, float y) { - console.toggle(); + toggleConsole(); return super.longPress(actor, x, y); } } diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java index 1352dd98dfe..acb8c490e6b 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchController.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java @@ -6,11 +6,11 @@ import java.util.List; import java.util.Map; import forge.adventure.scene.DuelScene; +import forge.adventure.util.Config; import forge.ai.GameState; import forge.deck.Deck; import forge.game.player.Player; import forge.item.IPaperCard; -import forge.screens.TransitionScreen; import forge.util.collect.FCollection; import org.apache.commons.lang3.StringUtils; @@ -312,14 +312,12 @@ public class MatchController extends AbstractGuiGame { @Override public void finishGame() { if (Forge.isMobileAdventureMode) { - Forge.setCursor(null, "0"); - if (DuelScene.instance().hasCallbackExit()) + if (Config.instance().getSettingData().disableWinLose) { + Forge.setCursor(null, "0"); + if (!DuelScene.instance().hasCallbackExit()) + DuelScene.instance().exitDuelScene(); return; - Forge.setTransitionScreen(new TransitionScreen(() -> { - Forge.clearTransitionScreen(); - Forge.clearCurrentScreen(); - }, Forge.takeScreenshot(), false, false)); - return; + } } if (hasLocalPlayers() || getGameView().isMatchOver()) { view.setViewWinLose(new ViewWinLose(getGameView())); diff --git a/forge-gui-mobile/src/forge/screens/match/winlose/AdventureWinLose.java b/forge-gui-mobile/src/forge/screens/match/winlose/AdventureWinLose.java new file mode 100644 index 00000000000..2a3bcaee978 --- /dev/null +++ b/forge-gui-mobile/src/forge/screens/match/winlose/AdventureWinLose.java @@ -0,0 +1,46 @@ +package forge.screens.match.winlose; + +import forge.Forge; +import forge.adventure.scene.DuelScene; +import forge.game.GameView; + +public class AdventureWinLose extends ControlWinLose { + /** + * @param v   ViewWinLose + * @param game + */ + public AdventureWinLose(ViewWinLose v, GameView game) { + super(v, game); + v.getBtnContinue().setVisible(false); + v.getBtnRestart().setVisible(false); + v.getLabelShowBattlefield().setVisible(false); + v.getBtnQuit().setText(Forge.getLocalizer().getMessage("lblBackToAdventure")); + Forge.setCursor(null, "0"); + } + + @Override + public void actionOnContinue() { + //Do Nothing + } + + @Override + public void actionOnRestart() { + //Do Nothing + } + + @Override + public void actionOnQuit() { + getView().hide(); + DuelScene.instance().exitDuelScene(); + } + + @Override + public void saveOptions() { + //Do Nothing + } + + @Override + public void showRewards() { + //Do Nothing + } +} diff --git a/forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java b/forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java index 5d7cc6b1fa8..afd79206f4c 100644 --- a/forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java +++ b/forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java @@ -123,6 +123,9 @@ public class ViewWinLose extends FOverlay implements IWinLoseView { }).build()); lblTitle.setText(composeTitle(game0)); + if (Forge.isMobileAdventureMode) + control = new AdventureWinLose(this, game0); + showGameOutcomeSummary(); showPlayerScores(); control.showRewards(); @@ -152,6 +155,10 @@ public class ViewWinLose extends FOverlay implements IWinLoseView { return this.btnQuit; } + public FLabel getLabelShowBattlefield() { + return this.btnShowBattlefield; + } + private void showGameOutcomeSummary() { for (GameLogEntry o : game.getGameLog().getLogEntriesExact(GameLogEntryType.GAME_OUTCOME)) { pnlOutcomes.add(new FLabel.Builder().text(o.message).font(FSkinFont.get(14)).build()); @@ -191,12 +198,20 @@ public class ViewWinLose extends FOverlay implements IWinLoseView { y += h + dy; h = height / 12; - btnContinue.setBounds(x, y, w, h); - y += h + dy; - btnRestart.setBounds(x, y, w, h); - y += h + dy; - btnQuit.setBounds(x, y, w, h); - y += h + dy; + if (Forge.isMobileAdventureMode) { + btnQuit.setBounds(x, y, w, h); + y += h + dy; + btnContinue.setVisible(false); + btnRestart.setVisible(false); + } else { + btnContinue.setBounds(x, y, w, h); + y += h + dy; + btnRestart.setBounds(x, y, w, h); + y += h + dy; + btnQuit.setBounds(x, y, w, h); + y += h + dy; + } + h = lblLog.getAutoSizeBounds().height + dy; lblLog.setBounds(x, y, w, h); diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index a1a87f77eda..4e6f9f4f787 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -2962,6 +2962,8 @@ lblZoom=Zoomen lblEffect=Wirkung lblEmblem=Emblem lblBoon=Vorteil +lblBackToAdventure=Zurück zum Abenteuer +lblDisableWinLose=Deaktivieren Sie Winslose Overlay lblExitToWoldMap=Zurück zur Weltkarte? lblStartArena=Willst du in die Arena gehen? lblWouldYouLikeDestroy=Möchten Sie {0} zerstören? diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index 7981bf21a17..593c59ccfcf 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -2972,6 +2972,8 @@ lblZoom=Zoom lblEffect=Effect lblEmblem=Emblem lblBoon=Boon +lblBackToAdventure=Back to Adventure +lblDisableWinLose=Disable WinLose Overlay lblExitToWoldMap=Exit to the World Map? lblStartArena=Do you want to go into the Arena? lblWouldYouLikeDestroy=Would you like to destroy {0}? diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index df8348733f2..d9fb30e91a5 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -2965,6 +2965,8 @@ lblZoom=Zoom lblEffect=Efecto lblEmblem=Emblem lblBoon=Boon +lblBackToAdventure=Volver a la aventura +lblDisableWinLose=Desactivar WinLose Overlay lblExitToWoldMap=Salir al mapa del mundo? lblStartArena=¿Quieres ir a la arena? lblWouldYouLikeDestroy=¿Le gustaría destruir {0}? diff --git a/forge-gui/res/languages/fr-FR.properties b/forge-gui/res/languages/fr-FR.properties index c5de9a17174..8f6ce2b14f0 100644 --- a/forge-gui/res/languages/fr-FR.properties +++ b/forge-gui/res/languages/fr-FR.properties @@ -2968,6 +2968,8 @@ lblZoom=Zoom lblEffect=Effet lblEmblem=Emblème lblBoon=Aubaine +lblBackToAdventure=Retour à l'aventure +lblDisableWinLose=Désactiver la superposition Winlose lblExitToWoldMap=Sortir sur la carte du monde? lblStartArena=Voulez-vous entrer dans l'arène? lblWouldYouLikeDestroy=Souhaitez-vous détruire {0}? diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index aa848adf02f..23087813441 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -2968,6 +2968,8 @@ lblZoom=Ingrandisci lblEffect=Effetto lblEmblem=Emblema lblBoon=Boon +lblBackToAdventure=Torna all'avventura +lblDisableWinLose=Disabilita overlay winlose lblExitToWoldMap=Esci alla mappa del mondo? lblStartArena=Vuoi andare nell'arena? lblWouldYouLikeDestroy=Vorresti distruggere {0}? diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index 661db100946..627cd6f4726 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -2964,6 +2964,8 @@ lblZoom=ズーム lblEffect=効果 lblEmblem=エンブレム lblBoon=ブーン +lblBackToAdventure=冒険に戻ります +lblDisableWinLose=Winloseオーバーレイを無効にします lblExitToWoldMap=世界地図に終了しますか? lblStartArena=アリーナに行きたいですか? lblWouldYouLikeDestroy={0}を破壊しますか? diff --git a/forge-gui/res/languages/pt-BR.properties b/forge-gui/res/languages/pt-BR.properties index c6d36de1dca..82a68753269 100644 --- a/forge-gui/res/languages/pt-BR.properties +++ b/forge-gui/res/languages/pt-BR.properties @@ -3054,6 +3054,8 @@ lblZoom=Ampliação lblEffect=Efeito lblEmblem=Emblem lblBoon=Boon +lblBackToAdventure=De volta à aventura +lblDisableWinLose=Desative a sobreposição de Winlose lblExitToWoldMap=Sair para o mapa do mundo? lblStartArena=Você quer entrar na arena? lblWouldYouLikeDestroy=Você gostaria de destruir {0}? diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index ea3a0dd2b05..c6933ad26df 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -2947,6 +2947,8 @@ lblZoom=飞涨 lblEffect=影响 lblEmblem=象征 lblBoon=恩赐 +lblBackToAdventure=回到冒险 +lblDisableWinLose=禁用Winlose覆盖 lblExitToWoldMap=退出世界地图? lblStartArena=您想进入竞技场吗? lblWouldYouLikeDestroy=您想销毁{0}吗? From b3e80cfe42b064f1601c5d40493a58a61f68238d Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 24 Apr 2023 00:42:41 +0800 Subject: [PATCH 75/98] cleanup --- forge-gui-mobile/src/forge/adventure/scene/DuelScene.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java index 93372af902c..2d31b59a7ac 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java @@ -131,7 +131,7 @@ public class DuelScene extends ForgeScene { @Override public void run(Integer result) { if (result == 0) { - afterGameEnd(enemyName, finalWinner, true, true); + afterGameEnd(enemyName, finalWinner); if (Config.instance().getSettingData().disableWinLose) exitDuelScene(); } @@ -139,11 +139,11 @@ public class DuelScene extends ForgeScene { } })); } else { - afterGameEnd(enemyName, winner, false, false); + afterGameEnd(enemyName, winner); } } Runnable endRunnable = null; - void afterGameEnd(String enemyName, boolean winner, boolean overlay, boolean alt) { + void afterGameEnd(String enemyName, boolean winner) { endRunnable = () -> Gdx.app.postRunnable(()-> { if (GameScene.instance().isNotInWorldMap()) { SoundSystem.instance.pause(); From 6d65476b9d78b9a4d5ab78e2da6bece4fec0624c Mon Sep 17 00:00:00 2001 From: Michael Kuenzli Date: Sun, 23 Apr 2023 21:25:54 +0200 Subject: [PATCH 76/98] Fix: Preening Champion only creates one token (#2990) --- forge-gui/res/cardsfolder/upcoming/preening_champion.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/preening_champion.txt b/forge-gui/res/cardsfolder/upcoming/preening_champion.txt index 32ad52d2e8a..5c26594d4c0 100644 --- a/forge-gui/res/cardsfolder/upcoming/preening_champion.txt +++ b/forge-gui/res/cardsfolder/upcoming/preening_champion.txt @@ -3,7 +3,7 @@ ManaCost:2 U Types:Creature Bird Knight PT:2/2 K:Flying -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create two 1/1 blue and red Elemental creature tokens. -SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ ur_1_1_elemental +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 blue and red Elemental creature token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ ur_1_1_elemental DeckHas:Ability$Token & Type$Elemental Oracle:Flying\nWhen Preening Champion enters the battlefield, create a 1/1 blue and red Elemental creature token. \ No newline at end of file From e12fddc73de7ae8371d43b730fe56e975c7a3125 Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Sun, 23 Apr 2023 20:39:15 +0100 Subject: [PATCH 77/98] Quick fix for token in MOM edition --- forge-gui/res/editions/March of the Machine.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/editions/March of the Machine.txt b/forge-gui/res/editions/March of the Machine.txt index 932b6d706f2..900bd002f68 100644 --- a/forge-gui/res/editions/March of the Machine.txt +++ b/forge-gui/res/editions/March of the Machine.txt @@ -482,7 +482,7 @@ c_a_treasure_sac c_a_treasure_sac first_mate_ragavan g_1_1_phyrexian_saproling -g_x_x_dinosaur +g_x_x_dinosaur_trample gw_3_3_phyrexian_hydra_lifelink gw_3_3_phyrexian_hydra_reach rw_3_2_spirit From 413ea08f0f64dbfc6f082a01e974650bcac02c86 Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Sun, 23 Apr 2023 16:24:45 -0500 Subject: [PATCH 78/98] Update teferis_talent.txt --- forge-gui/res/cardsfolder/upcoming/teferis_talent.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt b/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt index 2b38ffa70d2..0b4a05fceae 100644 --- a/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt +++ b/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt @@ -4,7 +4,7 @@ Types:Enchantment Aura K:Enchant planeswalker A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ TeferiUlt | Description$ Enchanted planeswalker has "[-12]: You get an emblem with 'You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant.'" -SVar:TeferiUlt:AB$ Effect | Cost$ SubCounter<12/LOYALTY> | Planeswalker$ True | StaticAbilities$ InstantPlaneswalkers | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant." +SVar:TeferiUlt:AB$ Effect | Cost$ SubCounter<12/LOYALTY> | Planeswalker$ True | Name$ Emblem - Teferi, Temporal Archmage | StaticAbilities$ InstantPlaneswalkers | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant." SVar:InstantPlaneswalkers:Mode$ CastWithFlash | ValidCard$ Planeswalker.YouCtrl | ValidSA$ Activated.Loyalty | Caster$ You | Description$ You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant. T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you draw a card, put a loyalty counter on enchanted planeswalker. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Enchanted | CounterType$ LOYALTY | CounterNum$ 1 From b8072d941ae3df1dbe83e2f7d8b8762bed6ea5e4 Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Sun, 23 Apr 2023 16:25:27 -0500 Subject: [PATCH 79/98] Update djeru_and_hazoret.txt --- forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt b/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt index 0f646471a2a..1f51828e02c 100644 --- a/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt +++ b/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt @@ -10,5 +10,6 @@ SVar:MayPlay:Mode$ Continuous | MayPlay$ True | MayPlayWithoutManaCost$ True | E SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$InYourHand SVar:PlayMain1:TRUE +SVar:HasAttackEffect:TRUE DeckNeeds:Type$Legendary Oracle:As long as you have one or fewer cards in hand, Dieru and Hazoret has vigilance and haste.\nWhenever Djeru and Hazoret attacks, look at the top six cards of your library. You may exile a legendary creature card from among them. Put the rest on the bottom of your library in a random order. Until end of turn, you may cast the exiled card without paying its mana cost. From b6e96ac28a0b1cb1fad86eea879b5ae570f97f7e Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Sun, 23 Apr 2023 16:25:55 -0500 Subject: [PATCH 80/98] Update kroxa_and_kunoros.txt --- forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt b/forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt index 18849576079..440cf4b9bf2 100644 --- a/forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt +++ b/forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt @@ -7,7 +7,7 @@ K:Menace K:Lifelink T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigImmediateTrig | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may exile five cards from your graveyard. When you do, return target creature card from your graveyard to the battlefield. T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigImmediateTrig | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may exile five cards from your graveyard. When you do, return target creature card from your graveyard to the battlefield. -SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ ExileFromGrave<5/card> | Execute$ TrigReturn | SpellDescription$ When you do, return target creature card from your graveyard to the battlefield. +SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ ExileFromGrave<5/Card> | Execute$ TrigReturn | SpellDescription$ When you do, return target creature card from your graveyard to the battlefield. SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature to return from your graveyard DeckHas:Ability$Graveyard DeckHints:Ability$Discard @@ -15,4 +15,5 @@ SVar:NeedsToPlayVar:Z EQ6 SVar:X:Count$InYourYard/LimitMax.6 SVar:Y:Count$TypeInYourYard.Creature/LimitMax.1 SVar:Z:SVar$X/Times.Y +DeckHas:Ability$Graveyard|LifeGain Oracle:Vigilance, menace, lifelink\nWhenever Kroxa and Kunoros enters the battlefield or attacks, you may exile five cards from your graveyard. When you do, return target creature card from your graveyard to the battlefield. From 24f379659eae6812ae8326ad56f211ee61242b1b Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Sun, 23 Apr 2023 16:26:48 -0500 Subject: [PATCH 81/98] Update rona_herald_of_invasion_rona_tolarian_obliterator.txt --- .../rona_herald_of_invasion_rona_tolarian_obliterator.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt b/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt index 8a5524b5e5a..0dd5918dba4 100644 --- a/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt +++ b/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt @@ -6,7 +6,7 @@ T:Mode$ SpellCast | ValidCard$ Card.Legendary | ValidActivatingPlayer$ You | Exe SVar:TrigUntap:DB$ Untap | Defined$ Self A:AB$ Draw | Cost$ T | NumCards$ 1 | SpellDescription$ Draw a card, then discard a card. | SubAbility$ DBDiscard SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 -A:AB$ SetState | Cost$ 5 BP | Defined$ Self | Mode$ Transform | SorcerySpeed$ True | AILogic$ Always | SpellDescription$ Transform NICKNAME. Activate only as a sorcery. +A:AB$ SetState | Cost$ 5 BP | Defined$ Self | Mode$ Transform | SorcerySpeed$ True | AILogic$ Always | SpellDescription$ Transform NICKNAME. Activate only as a sorcery. ({B/P} can be paid with either {B} or 2 life.) AlternateMode:DoubleFaced SVar:BuffedBy:Card.Legendary DeckHas:Ability$Discard|Graveyard From 3985f99bc427f5854fb8de88664b84f7ea248f2c Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Sun, 23 Apr 2023 16:27:17 -0500 Subject: [PATCH 82/98] Update rona_herald_of_invasion_rona_tolarian_obliterator.txt --- .../rona_herald_of_invasion_rona_tolarian_obliterator.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt b/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt index 0dd5918dba4..a90e37b16df 100644 --- a/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt +++ b/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt @@ -21,7 +21,7 @@ Types:Legendary Creature Phyrexian Wizard PT:5/5 K:Trample T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigExile | TriggerDescription$ Whenever a source deals damage to CARDNAME, that source's controller exiles a card from their hand at random. If it's a land card, you may put it onto the battlefield under your control. Otherwise, you may cast it without paying its mana cost. -SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ TriggeredSourceController | Mandatory$ True | ChangeType$ Card | Hidden$ True | IsCurse$ True | AtRandom$ True | RememberChanged$ True | SubAbility$ DBRonaLand +SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ TriggeredSourceController | Mandatory$ True | ChangeType$ Card | Hidden$ True | AtRandom$ True | RememberChanged$ True | SubAbility$ DBRonaLand SVar:DBRonaLand:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | ChangeType$ Land.IsRemembered | Hidden$ True | Optional$ True | GainControl$ True | SubAbility$ DBRonaPlay SVar:DBRonaPlay:DB$ Play | ValidZone$ Exile | Controller$ You | Valid$ Card.IsRemembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBRonaCleanup SVar:DBRonaCleanup:DB$ Cleanup | ClearRemembered$ True From 8dd00dde026f670e5d505a31806fb5aa84ec962e Mon Sep 17 00:00:00 2001 From: Mike S <81990938+MikeS-NZ@users.noreply.github.com> Date: Sun, 23 Apr 2023 16:28:30 -0500 Subject: [PATCH 83/98] Update urabrask_the_great_work.txt --- forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt b/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt index 01ff6c30d4c..b707c9a7cc0 100644 --- a/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt +++ b/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt @@ -14,6 +14,7 @@ DeckNeeds:Type$Instant|Sorcery AlternateMode:DoubleFaced DeckHints:Type$Phyrexian SVar:BuffedBy:Instant,Sorcery +DeckHas:Type$Treasure|Artifact Oracle:First strike\nWhenever you cast an instant or sorcery spell, Urabrask deals 1 damage to target opponent. Add {R}.\n{R}: Exile Urabrask, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if you've cast three or more instant and/or sorcery spells this turn. From df58e199593505eb4a11b1c90b0522bd06a1ff16 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Sun, 23 Apr 2023 20:00:03 -0400 Subject: [PATCH 84/98] path_of_the_pyromancer.txt fix --- .../res/cardsfolder/upcoming/path_of_the_pyromancer.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt index 886fc138480..f2f1a83208e 100644 --- a/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt @@ -1,13 +1,14 @@ Name:Path of the Pyromancer ManaCost:4 R Types:Sorcery -A:SP$ Discard | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBMana -SVar:DBMana:DB$ Mana | Produced$ R | Amount$ X | StackDescription$ SpellDescription | SpellDescription$ Add {R} for each card discarded this way, -SVar:DBDraw:DB$ Draw | NumCards$ X/Plus.1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ then draw that many cards plus one. +A:SP$ Discard | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBMana | SpellDescription$ Discard all the cards in your hand. +SVar:DBMana:DB$ Mana | Produced$ R | Amount$ X | SubAbility$ DBDraw | StackDescription$ SpellDescription | SpellDescription$ Add {R} for each card discarded this way, +SVar:DBDraw:DB$ Draw | NumCards$ SVar$X/Plus.1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ then draw that many cards plus one. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBSpace SVar:X:Remembered$Amount SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. SVar:DBPlaneswalk:DB$ Planeswalk SVar:DBChaos:DB$ ChaosEnsues +DeckHas:Ability$Discard Oracle:Discard all the cards in your hand. Add {R} for each card discarded this way, then draw that many cards plus one.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. From 9886d067907724c7229a2b4fc3b73d7d11110f86 Mon Sep 17 00:00:00 2001 From: jjayers99 <56438137+jjayers99@users.noreply.github.com> Date: Sun, 23 Apr 2023 22:41:11 -0400 Subject: [PATCH 85/98] Addition of MOM Jumpstart packs, integration into Adventure Mode start options --- .../src/forge/adventure/util/CardUtil.java | 2 +- forge-gui/res/adventure/Shandalar/config.json | 4 +- forge-gui/res/blockdata/boosters-special.txt | 14 +- forge-gui/res/blockdata/printsheets.txt | 226 ++++++++++++++++++ 4 files changed, 243 insertions(+), 3 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/util/CardUtil.java b/forge-gui-mobile/src/forge/adventure/util/CardUtil.java index 2324f18ac70..6fcc0655bd0 100644 --- a/forge-gui-mobile/src/forge/adventure/util/CardUtil.java +++ b/forge-gui-mobile/src/forge/adventure/util/CardUtil.java @@ -350,7 +350,7 @@ public class CardUtil { public static Deck generateDeck(GeneratedDeckData data, CardEdition starterEdition, boolean discourageDuplicates) { - List editionCodes = (starterEdition != null)?Arrays.asList(starterEdition.getCode(), starterEdition.getCode2()):Arrays.asList("JMP", "J22", "DMU","BRO"); + List editionCodes = (starterEdition != null)?Arrays.asList(starterEdition.getCode(), starterEdition.getCode2()):Arrays.asList("JMP", "J22", "DMU","BRO","ONE","MOM"); Deck deck= new Deck(data.name); if(data.mainDeck!=null) { diff --git a/forge-gui/res/adventure/Shandalar/config.json b/forge-gui/res/adventure/Shandalar/config.json index d0bf57d7681..2e25dd89bcc 100644 --- a/forge-gui/res/adventure/Shandalar/config.json +++ b/forge-gui/res/adventure/Shandalar/config.json @@ -203,6 +203,7 @@ "BRO", "J22", "ONE", + "MOM", "(All)" ], "starterEditionNames": [ @@ -211,7 +212,8 @@ "Brother's War", "Jumpstart 22", "Phyrexia: ONE", - "(All)" + "MOM", + "(All)" ] } diff --git a/forge-gui/res/blockdata/boosters-special.txt b/forge-gui/res/blockdata/boosters-special.txt index 6e62aac7a58..8338a28cf11 100644 --- a/forge-gui/res/blockdata/boosters-special.txt +++ b/forge-gui/res/blockdata/boosters-special.txt @@ -309,4 +309,16 @@ ONE Corruption 2: 1 wholeSheet("ONE Corruption 2"), 1 RareMythic:fromSheet("ONE ONE Rebellious 1: 1 wholeSheet("ONE Rebellious 1"), 1 RareMythic:fromSheet("ONE Red Inserts") ONE Rebellious 2: 1 wholeSheet("ONE Rebellious 2"), 1 RareMythic:fromSheet("ONE Red Inserts") ONE Toxic 1: 1 wholeSheet("ONE Toxic 1"), 1 RareMythic:fromSheet("ONE Green Inserts") -ONE Toxic 2: 1 wholeSheet("ONE Toxic 2"), 1 RareMythic:fromSheet("ONE Green Inserts") \ No newline at end of file +ONE Toxic 2: 1 wholeSheet("ONE Toxic 2"), 1 RareMythic:fromSheet("ONE Green Inserts") + +# MOM Jumpstart +MOM Brood 1: 1 wholeSheet("MOM Brood 1"), 1 RareMythic:fromSheet("MOM White Inserts") +MOM Brood 2: 1 wholeSheet("MOM Brood 2"), 1 RareMythic:fromSheet("MOM White Inserts") +MOM Overachiever 1: 1 wholeSheet("MOM Overachiever 1"), 1 RareMythic:fromSheet("MOM Blue Inserts") +MOM Overachiever 2: 1 wholeSheet("MOM Overachiever 2"), 1 RareMythic:fromSheet("MOM Blue Inserts") +MOM Expendable 1: 1 wholeSheet("MOM Expendable 1"), 1 RareMythic:fromSheet("MOM Black Inserts") +MOM Expendable 2: 1 wholeSheet("MOM Expendable 2"), 1 RareMythic:fromSheet("MOM Black Inserts") +MOM Reinforcement 1: 1 wholeSheet("MOM Reinforcement 1"), 1 RareMythic:fromSheet("MOM Red Inserts") +MOM Reinforcement 2: 1 wholeSheet("MOM Reinforcement 2"), 1 RareMythic:fromSheet("MOM Red Inserts") +MOM Buff 1: 1 wholeSheet("MOM Buff 1"), 1 RareMythic:fromSheet("MOM Green Inserts") +MOM Buff 2: 1 wholeSheet("MOM Buff 2"), 1 RareMythic:fromSheet("MOM Green Inserts") \ No newline at end of file diff --git a/forge-gui/res/blockdata/printsheets.txt b/forge-gui/res/blockdata/printsheets.txt index a53d15e85ac..968d15cf895 100644 --- a/forge-gui/res/blockdata/printsheets.txt +++ b/forge-gui/res/blockdata/printsheets.txt @@ -5995,3 +5995,229 @@ Kaya, Ghost Assassin|CN2|2 1 Elesh Norn, Mother of Machines|ONE 1 Mondrak, Glory Dominus|ONE 1 Phyrexian Vindicator|ONE + + +[MOM Brood 1] +1 Essence of Orthodoxy +1 Norn's Inquisitor +1 Phyrexian Pegasus +1 Alabaster Host Sanctifier +1 Infected Defector +1 Alabaster Host Intercessor +1 Seedpod Caretaker +1 Tiller of Flesh +1 Sunder the Gateway +1 Angelic Intervention +1 Cut Short +8 Plains + +[MOM Brood 2] +1 Essence of Orthodoxy +1 Phyrexian Pegasus +1 Seedpod Caretaker +1 Norn's Inquisitor +1 Alabaster Host Sanctifier +1 Infected Defector +1 Alabaster Host Intercessor +1 Tiller of Flesh +1 Aerial Boost +1 Inspired Charge +1 Seal from Existence +8 Plains + +[MOM Overachiever 1] +1 Zephyr Winder +1 Expedition Lookout +1 Preening Champion +1 Thunderhead Squadron +1 Tidal Terror +1 Referee Squad +1 Oracle of Tragedy +1 Interdisciplinary Mascot +1 Temporal Cleansing +1 Ephara's Dispersal +1 Meeting of Minds +8 Island + +[MOM Overachiever 2] +1 Zephyr Winder +1 Expedition Lookout +1 Xerex Strobe-Knight +1 Thunderhead Squadron +1 Tidal Terror +1 Referee Squad +1 Oracle of Tragedy +1 Interdisciplinary Mascot +1 Ephara's Dispersal +1 Wicked Slumber +1 Astral Wingspan +8 Island + +[MOM Expendable 1] +1 Terror of Towashi|MOM +1 Seer of Stolen Sight|MOM +1 Injector Crocodile|MOM +1 Dreg Recycler|MOM +1 Etched Familiar|MOM +1 Ichor Shade|MOM +1 Scorn-Blade Berserker|MOM +1 Final Flourish|MOM +1 Unseal the Necropolis|MOM +1 Deadly Derision|MOM +1 Gift of Compleation|MOM +8 Swamp|MOM + +[MOM Expendable 2] +1 Terror of Towashi|MOM +1 Injector Crocodile|MOM +1 Seer of Stolen Sight|MOM +1 Dreg Recycler|MOM +1 Etched Familiar|MOM +1 Scorn-Blade Berserker|MOM +1 Compleated Huntmaster|MOM +1 Corrupted Conviction|MOM +1 Deadly Derision|MOM +1 Failed Conversion|MOM +1 Gift of Compleation|MOM +8 Swamp|MOM + +[MOM Reinforcement 1] +1 Orthion, Hero of Lavabrink|MOM +1 Axgard Artisan|MOM +1 Cragsmasher Yeti|MOM +1 Fearless Skald|MOM +1 Karsus Depthguard|MOM +1 Hangar Scrounger|MOM +1 Redcap Heelslasher|MOM +1 Ral's Reinforcements|MOM +1 Coming In Hot|MOM +1 Volcanic Spite|MOM +8 Mountain|MOM + +[MOM Reinforcement 2] +1 Orthion, Hero of Lavabrink|MOM +1 Axgard Artisan|MOM +1 Cragsmasher Yeti|MOM +1 Trailblazing Historian|MOM +1 Karsus Depthguard|MOM +1 Hangar Scrounger|MOM +1 Redcap Heelslasher|MOM +1 Fearless Skald|MOM +1 Mirran Banesplitter|MOM +1 Volcanic Spite|MOM +1 Shatter the Source|MOM +8 Mountain|MOM + +[MOM Buff 1] +1 Surrak and Goreclaw|MOM +1 Fairgrounds Trumpeter|MOM +1 Ruins Recluse|MOM +1 Placid Rottentail|MOM +1 Wary Thespian|MOM +1 Converter Beast|MOM +1 Timberland Ancient|MOM +1 Kami of Whispered Hopes|MOM +1 Arachnoid Adaptation|MOM +1 Cosmic Hunger|MOM +1 Fertilid's Favor|MOM +8 Forest + +[MOM Buff 2] +1 Surrak and Goreclaw|MOM +1 Fairgrounds Trumpeter|MOM +1 Placid Rottentail|MOM +1 Wary Thespian|MOM +1 Converter Beast|MOM +1 Timberland Ancient|MOM +1 Ruins Recluse|MOM +1 Kami of Whispered Hopes|MOM +1 Arachnoid Adaptation|MOM +1 Tandem Takedown|MOM +1 Blighted Burgeoning|MOM +8 Forest|MOM + +[MOM Black Inserts] +1 Archpriest of Shadows|MOM +1 Ayara, Widow of the Realm|MOM +1 Bloated Processor|MOM +1 Breach the Multiverse|MOM +1 Grafted Butcher|MOM +1 Hoarding Broodlord|MOM +1 Invasion of Fiora|MOM +1 Pile On|MOM +1 Realmbreaker, the Invasion Tree|MOM +1 Terror of Towashi|MOM +1 Invasion of Innistrad|MOM +1 Invasion of Ravnica|MOM +1 Sheoldred|MOM +1 Sword of Once and Future|MOM + +[MOM Blue Inserts] +1 Chrome Host Seedshark|MOM +1 Complete the Circuit|MOM +1 Faerie Mastermind|MOM +1 Interdisciplinary Mascot|MOM +1 Invasion of Arcavios|MOM +1 Invasion of Segovia|MOM +1 Realmbreaker, the Invasion Tree|MOM +1 Rona, Herald of Invasion|MOM +1 See Double|MOM +1 Transcendent Message|MOM +1 Zephyr Singer|MOM +1 Invasion of Ravnica|MOM +1 Jin-Gitaxias|MOM +1 Sword of Once and Future|MOM + +[MOM Green Inserts] +1 Ancient Imperiosaur|MOM +1 Deeproot Wayfinder|MOM +1 Doomskar Warrior|MOM +1 Glistening Dawn|MOM +1 Invasion of Ikoria|MOM +1 Invasion of Ixalan|MOM +1 Ozolith, the Shattered Spire|MOM +1 Polukranos Reborn|MOM +1 Realmbreaker, the Invasion Tree|MOM +1 Surrak and Goreclaw|MOM +1 Tribute to the World Tree|MOM +1 Invasion of Ravnica|MOM +1 Invasion of Shandalar|MOM +1 Sword of Once and Future|MOM +1 Vorinclex|MOM +1 Wrenn and Realmbreaker|MOM + +[MOM Red Inserts] +1 Bloodfeather Phoenix|MOM +1 City on Fire|MOM +1 Etali, Primal Conquerer|MOM +1 Into the Fire|MOM +1 Invasion of Kaladheim|MOM +1 Invasion of Karsus|MOM +1 Nahiri's Warcrafting|MOM +1 Orthion, Hero of Lavabrink|MOM +1 Rampaging Raptor|MOM +1 Realmbreaker, the Invasion Tree|MOM +1 Voldaren Thrillseeker|MOM +1 Chandra, Hope's Beacon|MOM +1 Invasion of Ravnica|MOM +1 Invasion of Tarkir|MOM +1 Sword of Once and Future|MOM +1 Urabrask|MOM + +[MOM White Inserts] +1 Boon-Bringer Valkyrie|MOM +1 Dusk Legion Duelist|MOM +1 Essence of Orthodoxy|MOM +1 Guardian of Ghirapur|MOM +1 Heliod, the Radiant Dawn|MOM +1 Invasion of Gobakhan|MOM +1 Invasion of Theros|MOM +1 Knight-Errant of Eos|MOM +1 Realmbreaker, the Invasion Tree|MOM +1 Progenitor Exarch|MOM +1 Sunfall|MOM +1 Archangel Elspeth|MOM +1 Elesh Norn|MOM +1 Invasion of Ravnica|MOM +1 Monastery Mentor|MOM +1 Sword of Once and Future|MOM \ No newline at end of file From f1e455de2aed9cb483d49d94a12c49b9bf9e9868 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Mon, 24 Apr 2023 09:47:32 +0200 Subject: [PATCH 86/98] Haunt fix --- .../main/java/forge/ai/ComputerUtilCard.java | 2 +- .../java/forge/ai/PlayerControllerAi.java | 2 +- .../java/forge/ai/ability/ChangeZoneAi.java | 4 +- .../forge/ai/ability/ChangeZoneAllAi.java | 65 +++++++------------ .../main/java/forge/ai/ability/ClashAi.java | 2 +- .../main/java/forge/ai/ability/CounterAi.java | 3 +- .../java/forge/ai/ability/RegenerateAi.java | 6 +- .../forge/ai/ability/RegenerateAllAi.java | 2 +- .../ability/effects/ChangeZoneEffect.java | 3 +- .../java/forge/game/card/CardFactoryUtil.java | 6 +- .../game/trigger/TriggerChangesZone.java | 6 +- 11 files changed, 43 insertions(+), 58 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 02f19fc12f2..a1f0ffd1fcc 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -432,7 +432,7 @@ public class ComputerUtilCard { * @param list * @return a {@link forge.game.card.Card} object. */ - public static Card getBestCreatureToBounceAI(final CardCollectionView list) { + public static Card getBestCreatureToBounceAI(final Iterable list) { if (Iterables.size(list) == 1) { return Iterables.get(list, 0); } diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index f420cecf3e8..2458dcf3613 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -86,7 +86,7 @@ public class PlayerControllerAi extends PlayerController { @Override public SpellAbility getAbilityToPlay(Card hostCard, List abilities, ITriggerEvent triggerEvent) { - if (abilities.size() == 0) { + if (abilities.isEmpty()) { return null; } return abilities.get(0); diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java index fd02a6cb98e..bf263a06eed 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -1216,7 +1216,7 @@ public class ChangeZoneAi extends SpellAbilityAi { } } if (choice == null) { // can't find anything left - if (sa.getTargets().size() == 0 || !sa.isTargetNumberValid()) { + if (sa.getTargets().isEmpty() || !sa.isTargetNumberValid()) { if (!mandatory) { sa.resetTargets(); } @@ -1432,7 +1432,7 @@ public class ChangeZoneAi extends SpellAbilityAi { final ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); final TargetRestrictions tgt = sa.getTargetRestrictions(); - CardCollection list = new CardCollection(CardUtil.getValidCardsToTarget(tgt, sa)); + List list = CardUtil.getValidCardsToTarget(tgt, sa); if (list.isEmpty()) { return false; diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java index 07fc3bbaf96..010b8f0fd9c 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java @@ -5,7 +5,6 @@ import java.util.Map; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import forge.ai.AiController; import forge.ai.AiPlayerPredicates; @@ -197,8 +196,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { // mass zone change for creatures: if in dire danger, do it; otherwise, only do it if the opponent's // creatures are better in value - if ((CardLists.getNotType(oppType, "Creature").size() == 0) - && (CardLists.getNotType(computerType, "Creature").size() == 0)) { + if (CardLists.getNotType(oppType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { if (game.getCombat() != null && ComputerUtilCombat.lifeInSeriousDanger(ai, game.getCombat())) { if (game.getPhaseHandler().is(PhaseType.COMBAT_DECLARE_BLOCKERS) && game.getPhaseHandler().getPlayerTurn().isOpponentOf(ai)) { @@ -225,17 +223,15 @@ public class ChangeZoneAllAi extends SpellAbilityAi { } else if (origin.equals(ZoneType.Graveyard)) { if (sa.usesTargeting()) { // search targetable Opponents - final Iterable oppList = Iterables.filter(ai.getOpponents(), - PlayerPredicates.isTargetableBy(sa)); + final PlayerCollection oppList = ai.getOpponents().filter(PlayerPredicates.isTargetableBy(sa)); - if (Iterables.isEmpty(oppList)) { + if (oppList.isEmpty()) { return false; } // get the one with the most in graveyard // zone is visible so evaluate which would be hurt the most - Player oppTarget = Collections.max(Lists.newArrayList(oppList), - AiPlayerPredicates.compareByZoneValue(sa.getParam("ChangeType"), origin, sa)); + Player oppTarget = Collections.max(oppList, AiPlayerPredicates.compareByZoneValue(sa.getParam("ChangeType"), origin, sa)); // set the target if (!oppTarget.getCardsIn(ZoneType.Graveyard).isEmpty()) { @@ -270,18 +266,14 @@ public class ChangeZoneAllAi extends SpellAbilityAi { return (curHandSize + minAdv - 1 < numExiledWithSrc) || (!noDiscard && numExiledWithSrc >= ai.getMaxHandSize()); } } else if (origin.equals(ZoneType.Stack)) { - // time stop can do something like this: - // Origin$ Stack | Destination$ Exile | SubAbility$ DBSkip - // DBSKipToPhase | DB$SkipToPhase | Phase$ Cleanup - // otherwise, this situation doesn't exist + // TODO return false; } if (destination.equals(ZoneType.Battlefield)) { if (sa.hasParam("GainControl")) { // Check if the cards are valuable enough - if (CardLists.getNotType(oppType, "Creature").size() == 0 - && CardLists.getNotType(computerType, "Creature").size() == 0) { + if (CardLists.getNotType(oppType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { if ((ComputerUtilCard.evaluateCreatureList(computerType) + ComputerUtilCard .evaluateCreatureList(oppType)) < 400) { return false; @@ -294,8 +286,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { } } else { // don't activate if human gets more back than AI does - if ((CardLists.getNotType(oppType, "Creature").size() == 0) - && (CardLists.getNotType(computerType, "Creature").size() == 0)) { + if (CardLists.getNotType(oppType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { if (ComputerUtilCard.evaluateCreatureList(computerType) <= (ComputerUtilCard .evaluateCreatureList(oppType) + 100)) { return false; @@ -354,8 +345,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { return true; // if AI creature is better than Human Creature - return ComputerUtilCard.evaluateCreatureList(aiCards) >= ComputerUtilCard - .evaluateCreatureList(humanCards); + return ComputerUtilCard.evaluateCreatureList(aiCards) >= ComputerUtilCard.evaluateCreatureList(humanCards); } return true; } @@ -416,15 +406,13 @@ public class ChangeZoneAllAi extends SpellAbilityAi { // if the AI is using it defensively, then something else needs to occur // if only creatures are affected evaluate both lists and pass only // if human creatures are more valuable - if ((CardLists.getNotType(humanType, "Creature").isEmpty()) && (CardLists.getNotType(computerType, "Creature").isEmpty())) { - if (ComputerUtilCard.evaluateCreatureList(computerType) >= ComputerUtilCard - .evaluateCreatureList(humanType)) { + if (CardLists.getNotType(humanType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { + if (ComputerUtilCard.evaluateCreatureList(computerType) >= ComputerUtilCard.evaluateCreatureList(humanType)) { return false; } } // otherwise evaluate both lists by CMC and pass only if human // permanents are more valuable - else if (ComputerUtilCard.evaluatePermanentList(computerType) >= ComputerUtilCard - .evaluatePermanentList(humanType)) { + else if (ComputerUtilCard.evaluatePermanentList(computerType) >= ComputerUtilCard.evaluatePermanentList(humanType)) { return false; } } else if (origin.equals(ZoneType.Graveyard)) { @@ -457,11 +445,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { } else if (origin.equals(ZoneType.Exile)) { } else if (origin.equals(ZoneType.Stack)) { - // time stop can do something like this: - // Origin$ Stack | Destination$ Exile | SubAbility$ DBSkip - // DBSKipToPhase | DB$SkipToPhase | Phase$ Cleanup - // otherwise, this situation doesn't exist - return false; + // currently only exists indirectly (e.g. Summary Dismissal via PlayAi) } if (destination.equals(ZoneType.Battlefield)) { @@ -469,25 +453,22 @@ public class ChangeZoneAllAi extends SpellAbilityAi { if (mandatory) { return true; } - if (sa.getParam("GainControl") != null) { + if (sa.hasParam("GainControl")) { // Check if the cards are valuable enough - if ((CardLists.getNotType(humanType, "Creature").size() == 0) && (CardLists.getNotType(computerType, "Creature").size() == 0)) { - return (ComputerUtilCard.evaluateCreatureList(computerType) + ComputerUtilCard - .evaluateCreatureList(humanType)) >= 1; + if (CardLists.getNotType(humanType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { + return (ComputerUtilCard.evaluateCreatureList(computerType) + ComputerUtilCard.evaluateCreatureList(humanType)) >= 1; } // otherwise evaluate both lists by CMC and pass only if human // permanents are less valuable - else return (ComputerUtilCard.evaluatePermanentList(computerType) + ComputerUtilCard + return (ComputerUtilCard.evaluatePermanentList(computerType) + ComputerUtilCard .evaluatePermanentList(humanType)) >= 1; - } else { - // don't activate if human gets more back than AI does - if ((CardLists.getNotType(humanType, "Creature").isEmpty()) && (CardLists.getNotType(computerType, "Creature").isEmpty())) { - return ComputerUtilCard.evaluateCreatureList(computerType) > ComputerUtilCard - .evaluateCreatureList(humanType); - } // otherwise evaluate both lists by CMC and pass only if human - // permanents are less valuable - else return ComputerUtilCard.evaluatePermanentList(computerType) > ComputerUtilCard - .evaluatePermanentList(humanType); } + + // don't activate if human gets more back than AI does + if (CardLists.getNotType(humanType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { + return ComputerUtilCard.evaluateCreatureList(computerType) > ComputerUtilCard.evaluateCreatureList(humanType); + } // otherwise evaluate both lists by CMC and pass only if human + // permanents are less valuable + return ComputerUtilCard.evaluatePermanentList(computerType) > ComputerUtilCard.evaluatePermanentList(humanType); } return true; diff --git a/forge-ai/src/main/java/forge/ai/ability/ClashAi.java b/forge-ai/src/main/java/forge/ai/ability/ClashAi.java index 8541efdb2f7..e360b6863da 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ClashAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ClashAi.java @@ -59,7 +59,7 @@ public class ClashAi extends SpellAbilityAi { @Override protected Player chooseSinglePlayer(Player ai, SpellAbility sa, Iterable options, Map params) { for (Player p : options) { - if (p.getCardsIn(ZoneType.Library).size() == 0) + if (p.getCardsIn(ZoneType.Library).isEmpty()) return p; } diff --git a/forge-ai/src/main/java/forge/ai/ability/CounterAi.java b/forge-ai/src/main/java/forge/ai/ability/CounterAi.java index a13b1dbfe96..1c175905e1f 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CounterAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CounterAi.java @@ -64,8 +64,7 @@ public class CounterAi extends SpellAbilityAi { if (sa.usesTargeting()) { final SpellAbility topSA = ComputerUtilAbility.getTopSpellAbilityOnStack(game, sa); - if ((topSA.isSpell() && !CardFactoryUtil.isCounterableBy(topSA.getHostCard(), sa)) || topSA.getActivatingPlayer() == ai - || ai.getAllies().contains(topSA.getActivatingPlayer())) { + if ((topSA.isSpell() && !CardFactoryUtil.isCounterableBy(topSA.getHostCard(), sa)) || ai.getYourTeam().contains(topSA.getActivatingPlayer())) { // might as well check for player's friendliness return false; } else if (sa.hasParam("ConditionWouldDestroy") && !CounterEffect.checkForConditionWouldDestroy(sa, topSA)) { diff --git a/forge-ai/src/main/java/forge/ai/ability/RegenerateAi.java b/forge-ai/src/main/java/forge/ai/ability/RegenerateAi.java index 2cffe2688bd..b9b8108471f 100644 --- a/forge-ai/src/main/java/forge/ai/ability/RegenerateAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/RegenerateAi.java @@ -89,7 +89,7 @@ public class RegenerateAi extends SpellAbilityAi { // filter AIs battlefield by what I can target List targetables = CardLists.getTargetableCards(ai.getCardsIn(ZoneType.Battlefield), sa); - if (targetables.size() == 0) { + if (targetables.isEmpty()) { return false; } @@ -153,11 +153,11 @@ public class RegenerateAi extends SpellAbilityAi { CardCollectionView targetables = CardLists.getTargetableCards(game.getCardsIn(ZoneType.Battlefield), sa); final List compTargetables = CardLists.filterControlledBy(targetables, ai); - if (targetables.size() == 0) { + if (targetables.isEmpty()) { return false; } - if (!mandatory && compTargetables.size() == 0) { + if (!mandatory && compTargetables.isEmpty()) { return false; } diff --git a/forge-ai/src/main/java/forge/ai/ability/RegenerateAllAi.java b/forge-ai/src/main/java/forge/ai/ability/RegenerateAllAi.java index 909fe257786..3508b96ed1e 100644 --- a/forge-ai/src/main/java/forge/ai/ability/RegenerateAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/RegenerateAllAi.java @@ -32,7 +32,7 @@ public class RegenerateAllAi extends SpellAbilityAi { list = CardLists.getValidCards(list, valid, hostCard.getController(), hostCard, sa); list = CardLists.filter(list, CardPredicates.isController(ai)); - if (list.size() == 0) { + if (list.isEmpty()) { return false; } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 6068a34149a..20e245d35dc 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -339,7 +339,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { final String fromGraveyard = " from the graveyard"; if (destination.equals(ZoneType.Battlefield)) { - final boolean attacking = (sa.hasParam("Attacking")); + final boolean attacking = sa.hasParam("Attacking"); if (ZoneType.Graveyard.equals(origin)) { sb.append("Return").append(targetname).append(fromGraveyard).append(" to the battlefield"); } else { @@ -565,6 +565,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { // If a card is moved to library from the stack, remove its spells from the stack if (sa.hasParam("Fizzle")) { + // TODO only AI still targets as card, try to remove it if (gameCard.isInZone(ZoneType.Exile) || gameCard.isInZone(ZoneType.Hand) || gameCard.isInZone(ZoneType.Stack)) { // This only fizzles spells, not anything else. game.getStack().remove(gameCard); diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 10b77d3ee63..2c6744f7231 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -1318,8 +1318,8 @@ public class CardFactoryUtil { // Second, create the trigger that runs when the haunted creature dies final StringBuilder sbDies = new StringBuilder(); - sbDies.append("Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Exile |"); - sbDies.append("ValidCard$ Creature.HauntedBy | Execute$ ").append(hauntSVarName); + sbDies.append("Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Exile"); + sbDies.append(" | ValidCard$ Creature.HauntedBy | Execute$ ").append(hauntSVarName); sbDies.append(" | TriggerDescription$ ").append(hauntDescription); final Trigger hauntedDies = TriggerHandler.parseTrigger(sbDies.toString(), card, intrinsic); @@ -1369,7 +1369,7 @@ public class CardFactoryUtil { // First, create trigger that runs when the haunter goes to the graveyard final StringBuilder sbHaunter = new StringBuilder(); sbHaunter.append("Mode$ ChangesZone | Origin$ "); - sbHaunter.append(card.isCreature() ? "Battlefield" : "Stack | ResolvedCard$ True"); + sbHaunter.append(card.isCreature() ? "Battlefield" : "Stack | Fizzle$ False"); sbHaunter.append(" | Destination$ Graveyard | ValidCard$ Card.Self"); sbHaunter.append(" | Secondary$ True | TriggerDescription$ Haunt (").append(inst.getReminderText()).append(")"); diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java index 11a27e60e2e..413d2eca648 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java @@ -135,10 +135,14 @@ public class TriggerChangesZone extends Trigger { } } - if (hasParam("ResolvedCard")) { + if (hasParam("Fizzle")) { if (!runParams.containsKey(AbilityKey.Fizzle)) { return false; } + Boolean val = (Boolean) runParams.get(AbilityKey.Fizzle); + if ("True".equals(getParam("Fizzle")) != val) { + return false; + } } // Check number of lands ETB this turn on triggered card's controller From e8ba6737997fe91f9ca6d2304431fa5218cd167f Mon Sep 17 00:00:00 2001 From: pfirpfel Date: Mon, 24 Apr 2023 10:59:15 +0200 Subject: [PATCH 87/98] MOM booster collation: Ensure rare/mythic --- forge-gui/res/editions/March of the Machine.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/editions/March of the Machine.txt b/forge-gui/res/editions/March of the Machine.txt index 900bd002f68..e95ea761a48 100644 --- a/forge-gui/res/editions/March of the Machine.txt +++ b/forge-gui/res/editions/March of the Machine.txt @@ -4,7 +4,7 @@ Date=2023-04-21 Name=March of the Machine Type=Expansion BoosterCovers=3 -Booster=8 Common:!fromSheet("MOM lands"):fromsheet("MOM cards"), 2 Uncommon:fromSheet("MOM cards"), 1 dfc:!fromSheet("MOM battles"):fromSheet("MOM cards"), 1 UncommonRareMythic:!dfc:fromSheet("MOM cards"), 1 fromSheet("MOM battles"), 1 fromSheet("MUL cards"), 1 fromSheet("MOM lands") +Booster=8 Common:!fromSheet("MOM lands"):fromsheet("MOM cards"), 2 Uncommon:fromSheet("MOM cards"), 1 dfc:!fromSheet("MOM battles"):fromSheet("MOM cards"), 1 RareMythic:!dfc:fromSheet("MOM cards"), 1 fromSheet("MOM battles"), 1 fromSheet("MUL cards"), 1 fromSheet("MOM lands") Prerelease=6 Boosters, 1 RareMythic+ BoosterBox=36 ScryfallCode=MOM From f0da094c8e821aaa7a3490f33264215bf298d455 Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Mon, 24 Apr 2023 10:44:41 +0100 Subject: [PATCH 88/98] Fix STX draft booster --- forge-gui/res/editions/Strixhaven School of Mages.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/editions/Strixhaven School of Mages.txt b/forge-gui/res/editions/Strixhaven School of Mages.txt index 39f4e7ccce7..a0b9d9b8ef3 100644 --- a/forge-gui/res/editions/Strixhaven School of Mages.txt +++ b/forge-gui/res/editions/Strixhaven School of Mages.txt @@ -5,7 +5,7 @@ Name=Strixhaven: School of Mages Code2=STX Type=Expansion BoosterCovers=5 -DraftBooster=1 fromSheet("STX lesson"), 9 Common, 3 Uncommon, 1 RareMythic, 1 Any STA +DraftBooster=1 fromSheet("STX lesson"), 9 Common:fromSheet("STX cards"), 3 Uncommon:fromSheet("STX cards"), 1 RareMythic:fromSheet("STX cards"), 1 Any STA CollectorBooster=2 Uncommon:fromSheet("STA")+, 2 RareMythic:fromSheet("STA")+, 1 RareMythic:fromSheet("STX extended art"), 1 RareMythic C21, 1 fromSheet("STX lesson")+, 1 RareMythic+, 2 Uncommon+, 5 Common+ Prerelease=6 Boosters, 1 RareMythic+ FatPackExtraSlots=20 BasicLands, 20 BasicLands+ From 9d3125566f4eb69954a36394b4f10e8a9b833cc7 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 24 Apr 2023 13:16:21 +0200 Subject: [PATCH 89/98] Update enemies.json --- forge-gui/res/adventure/Shandalar/world/enemies.json | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/forge-gui/res/adventure/Shandalar/world/enemies.json b/forge-gui/res/adventure/Shandalar/world/enemies.json index 3f650a73a88..0c4b90abdc0 100644 --- a/forge-gui/res/adventure/Shandalar/world/enemies.json +++ b/forge-gui/res/adventure/Shandalar/world/enemies.json @@ -12441,16 +12441,6 @@ "scale": 0.4, "life": 40, "rewards": [ - { - "type": "deckCard", - "probability": 1, - "count": 2, - "addMaxCount": 4, - "rarity": [ - "common", - "uncommon" - ] - }, { "type": "deckCard", "probability": 1, From bcf24a23e793095bed7c841815ef5735223226d3 Mon Sep 17 00:00:00 2001 From: paulsnoops Date: Mon, 24 Apr 2023 12:23:49 +0100 Subject: [PATCH 90/98] Update edition: MAT --- .../March of the Machine The Aftermath.txt | 221 ++++++++++++++++++ 1 file changed, 221 insertions(+) diff --git a/forge-gui/res/editions/March of the Machine The Aftermath.txt b/forge-gui/res/editions/March of the Machine The Aftermath.txt index 3a965d2c84e..013f405e107 100644 --- a/forge-gui/res/editions/March of the Machine The Aftermath.txt +++ b/forge-gui/res/editions/March of the Machine The Aftermath.txt @@ -6,9 +6,230 @@ Type=Expansion ScryfallCode=MAT [cards] +1 U Coppercoat Vanguard @ +2 R Deification @ +3 U Harnessed Snubhorn @ +4 R Metropolis Reformer @ +5 R Spark Rupture @ +6 R Tazri, Stalward Survivor @ +7 U Filter Out @ +8 U Tolarian Contempt @ +9 R Training Grounds @ +10 R Vesuvan Drifter @ +11 R Ayara's Oathsworn @ +12 U Blot Out @ +13 U Death-Rattle Oni @ +14 U Markov Baron @ +15 R Urborg Scavengers @ +16 R Arni Metalbrow @ +17 U Kolaghan Warmonger @ +18 R Plargg and Nassari @ +19 U Reckless Handling @ +20 U Animist's Might @ +21 R Leyline Immersion @ +22 M Nissa, Resurgent Animist @ +23 R Open the Way @ +24 R Tranquil Frillback @ +25 U Undercity Upheaval @ +26 M Calix, Guided by Fate @ +27 U Campus Renovation @ +28 U Cosmic Rebirth @ +29 R Danitha, New Benalia's Light @ +30 U Feast of the Victorious Dead @ +31 U Gold-Forged Thopteryx @ +32 R Jirina, Dauntless General @ 33 R Jolrael, Voice of Zhalfir @Lorenzo Mastroianni 34 R The Kenriths' Royal Funeral @Manuel Castañón +35 M Kiora, Sovereign of the Deep @ +36 M Nahiri, Forged in Fury @ +37 R Nahiri's Resolve @ +38 M Narset, Enlightened Exile @ +39 R Nashi, Moon's Legacy @ +40 R Niv-Mizzet, Supreme @ +41 M Ob Nixilis, Captive Kingping @ +42 R Pia Nalaar, Consul of Revival @ +43 R Rebuild the City @ +44 R Rocco, Street Chef @ +45 M Samut, Vizier of Naktamun @ +46 M Sarkhan, Soul Aflame @ +47 R Sigarda, Font of Blessings @ +48 M Tyvar the Bellicose @ +49 M Karn, Legacy Reforged @ +50 R Drannith Ruins @ +51 U Coppercoat Vanguard @ +52 R Deification @ +53 U Harnessed Snubhorn @ +54 R Metropolis Reformer @ +55 R Spark Rupture @ +56 R Tazri, Stalward Survivor @ +57 U Filter Out @ +58 U Tolarian Contempt @ +59 R Training Grounds @ +60 R Vesuvan Drifter @ +61 R Ayara's Oathsworn @ +62 U Blot Out @ +63 U Death-Rattle Oni @ +64 U Markov Baron @ +65 R Urborg Scavengers @ +66 R Arni Metalbrow @ +67 U Kolaghan Warmonger @ +68 R Plargg and Nassari @ +69 U Reckless Handling @ +70 U Animist's Might @ +71 R Leyline Immersion @ +72 M Nissa, Resurgent Animist @ +73 R Open the Way @ +74 R Tranquil Frillback @ +75 U Undercity Upheaval @ +76 M Calix, Guided by Fate @ +77 U Campus Renovation @ +78 U Cosmic Rebirth @ +79 R Danitha, New Benalia's Light @ +80 U Feast of the Victorious Dead @ +81 U Gold-Forged Thopteryx @ +82 R Jirina, Dauntless General @ 83 R Jolrael, Voice of Zhalfir @Scott M. Fischer +84 R The Kenriths' Royal Funeral @ +85 M Kiora, Sovereign of the Deep @ +86 M Nahiri, Forged in Fury @ +87 R Nahiri's Resolve @ +88 M Narset, Enlightened Exile @ +89 R Nashi, Moon's Legacy @ +90 R Niv-Mizzet, Supreme @ +91 M Ob Nixilis, Captive Kingping @ +92 R Pia Nalaar, Consul of Revival @ +93 R Rebuild the City @ +94 R Rocco, Street Chef @ +95 M Samut, Vizier of Naktamun @ +96 M Sarkhan, Soul Aflame @ +97 R Sigarda, Font of Blessings @ +98 M Tyvar the Bellicose @ +99 M Karn, Legacy Reforged @ +100 R Drannith Ruins @ +101 U Coppercoat Vanguard @ +102 R Deification @ +103 U Harnessed Snubhorn @ +104 R Metropolis Reformer @ +105 R Spark Rupture @ +106 R Tazri, Stalward Survivor @ +107 U Filter Out @ +108 U Tolarian Contempt @ +109 R Training Grounds @ +110 R Vesuvan Drifter @ +111 R Ayara's Oathsworn @ +112 U Blot Out @ +113 U Death-Rattle Oni @ +114 U Markov Baron @ +115 R Urborg Scavengers @ +116 R Arni Metalbrow @ +117 U Kolaghan Warmonger @ +118 R Plargg and Nassari @ +119 U Reckless Handling @ +120 U Animist's Might @ +121 R Leyline Immersion @ +122 M Nissa, Resurgent Animist @ +123 R Open the Way @ +124 R Tranquil Frillback @ +125 U Undercity Upheaval @ +126 M Calix, Guided by Fate @ +127 U Campus Renovation @ +128 U Cosmic Rebirth @ +129 R Danitha, New Benalia's Light @ +130 U Feast of the Victorious Dead @ +131 U Gold-Forged Thopteryx @ +132 R Jirina, Dauntless General @ 133 R Jolrael, Voice of Zhalfir @Lorenzo Mastroianni +134 R The Kenriths' Royal Funeral @ +135 M Kiora, Sovereign of the Deep @ +136 M Nahiri, Forged in Fury @ +137 R Nahiri's Resolve @ +138 M Narset, Enlightened Exile @ +139 R Nashi, Moon's Legacy @ +140 R Niv-Mizzet, Supreme @ +141 M Ob Nixilis, Captive Kingping @ +142 R Pia Nalaar, Consul of Revival @ +143 R Rebuild the City @ +144 R Rocco, Street Chef @ +145 M Samut, Vizier of Naktamun @ +146 M Sarkhan, Soul Aflame @ +147 R Sigarda, Font of Blessings @ +148 M Tyvar the Bellicose @ +149 M Karn, Legacy Reforged @ +150 R Drannith Ruins @ +151 R Deification @ +152 R Metropolis Reformer @ +153 R Spark Rupture @ +154 R Tazri, Stalward Survivor @ +155 R Training Grounds @ +156 R Vesuvan Drifter @ +157 R Ayara's Oathsworn @ +158 R Urborg Scavengers @ +159 R Arni Metalbrow @ +160 R Plargg and Nassari @ +161 R Leyline Immersion @ +162 M Nissa, Resurgent Animist @ +163 R Open the Way @ +164 R Tranquil Frillback @ +165 M Calix, Guided by Fate @ +166 R Danitha, New Benalia's Light @ +167 R Jirina, Dauntless General @ 168 R Jolrael, Voice of Zhalfir @Lorenzo Mastroianni +169 R The Kenriths' Royal Funeral @ +170 M Kiora, Sovereign of the Deep @ +171 M Nahiri, Forged in Fury @ +172 R Nahiri's Resolve @ +173 M Narset, Enlightened Exile @ +174 R Nashi, Moon's Legacy @ +175 R Niv-Mizzet, Supreme @ +176 M Ob Nixilis, Captive Kingping @ +177 R Pia Nalaar, Consul of Revival @ +178 R Rebuild the City @ +179 R Rocco, Street Chef @ +180 M Samut, Vizier of Naktamun @ +181 M Sarkhan, Soul Aflame @ +182 R Sigarda, Font of Blessings @ +183 M Tyvar the Bellicose @ +184 M Karn, Legacy Reforged @ +185 R Drannith Ruins @ +186 U Coppercoat Vanguard @ +187 R Deification @ +188 U Harnessed Snubhorn @ +189 R Metropolis Reformer @ +191 U Filter Out @ +192 U Tolarian Contempt @ +193 R Training Grounds @ +194 R Vesuvan Drifter @ +195 R Ayara's Oathsworn @ +196 U Blot Out @ +197 U Death-Rattle Oni @ +198 U Markov Baron @ +199 R Urborg Scavengers @ +200 R Arni Metalbrow @ +201 U Kolaghan Warmonger @ +202 R Plargg and Nassari @ +203 U Reckless Handling @ +205 U Undercity Upheaval @ +206 M Calix, Guided by Fate @ +207 U Campus Renovation @ +208 U Cosmic Rebirth @ +209 R Danitha, New Benalia's Light @ +210 U Feast of the Victorious Dead @ +211 U Gold-Forged Thopteryx @ +212 R Jirina, Dauntless General @ +213 R The Kenriths' Royal Funeral @ +214 M Kiora, Sovereign of the Deep @ +215 M Nahiri, Forged in Fury @ +216 R Nahiri's Resolve @ +217 M Narset, Enlightened Exile @ +218 R Nashi, Moon's Legacy @ +219 R Niv-Mizzet, Supreme @ +220 M Ob Nixilis, Captive Kingping @ +221 R Pia Nalaar, Consul of Revival @ +222 R Rebuild the City @ +223 R Rocco, Street Chef @ +224 M Samut, Vizier of Naktamun @ +225 M Sarkhan, Soul Aflame @ +226 R Sigarda, Font of Blessings @ +227 M Tyvar the Bellicose @ +228 R Drannith Ruins @ 230 R Jolrael, Voice of Zhalfir @Ernanda Souza From f11329c103aa3b193e2c35874e04860a1c978604 Mon Sep 17 00:00:00 2001 From: TabletopGeneral <56438137+jjayers99@users.noreply.github.com> Date: Mon, 24 Apr 2023 08:08:56 -0400 Subject: [PATCH 91/98] Clean up config file layout --- forge-gui/res/adventure/Shandalar/config.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/forge-gui/res/adventure/Shandalar/config.json b/forge-gui/res/adventure/Shandalar/config.json index 2e25dd89bcc..aa5fac61fdf 100644 --- a/forge-gui/res/adventure/Shandalar/config.json +++ b/forge-gui/res/adventure/Shandalar/config.json @@ -84,8 +84,8 @@ "pileDecks": { "W":"decks/starter/pile_white_e.json", "B":"decks/starter/pile_black_e.json", - "U":"decks/starter/pile_blue_e.json", - "R":"decks/starter/pile_red_e.json", + "U":"decks/starter/pile_blue_e.json", + "R":"decks/starter/pile_red_e.json", "G":"decks/starter/pile_green_e.json" }, "startItems": [ @@ -122,8 +122,8 @@ "pileDecks": { "W":"decks/starter/pile_white_n.json", "B":"decks/starter/pile_black_n.json", - "U":"decks/starter/pile_blue_n.json", - "R":"decks/starter/pile_red_n.json", + "U":"decks/starter/pile_blue_n.json", + "R":"decks/starter/pile_red_n.json", "G":"decks/starter/pile_green_n.json" }, "startItems": [ @@ -191,8 +191,8 @@ "pileDecks": { "W":"decks/starter/pile_white_h.json", "B":"decks/starter/pile_black_h.json", - "U":"decks/starter/pile_blue_h.json", - "R":"decks/starter/pile_red_h.json", + "U":"decks/starter/pile_blue_h.json", + "R":"decks/starter/pile_red_h.json", "G":"decks/starter/pile_green_h.json" } } @@ -203,7 +203,7 @@ "BRO", "J22", "ONE", - "MOM", + "MOM", "(All)" ], "starterEditionNames": [ @@ -213,7 +213,7 @@ "Jumpstart 22", "Phyrexia: ONE", "MOM", - "(All)" + "(All)" ] } From 68b06f5225d23539838426a2afa38e4977106254 Mon Sep 17 00:00:00 2001 From: TabletopGeneral <56438137+jjayers99@users.noreply.github.com> Date: Mon, 24 Apr 2023 08:09:50 -0400 Subject: [PATCH 92/98] Spacing update --- forge-gui/res/blockdata/printsheets.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/forge-gui/res/blockdata/printsheets.txt b/forge-gui/res/blockdata/printsheets.txt index 968d15cf895..471c19d3397 100644 --- a/forge-gui/res/blockdata/printsheets.txt +++ b/forge-gui/res/blockdata/printsheets.txt @@ -5996,7 +5996,6 @@ Kaya, Ghost Assassin|CN2|2 1 Mondrak, Glory Dominus|ONE 1 Phyrexian Vindicator|ONE - [MOM Brood 1] 1 Essence of Orthodoxy 1 Norn's Inquisitor @@ -6220,4 +6219,4 @@ Kaya, Ghost Assassin|CN2|2 1 Elesh Norn|MOM 1 Invasion of Ravnica|MOM 1 Monastery Mentor|MOM -1 Sword of Once and Future|MOM \ No newline at end of file +1 Sword of Once and Future|MOM From 6cdd7f8dba1fdc63fde64583bb1a31ad59cb09fa Mon Sep 17 00:00:00 2001 From: TabletopGeneral <56438137+jjayers99@users.noreply.github.com> Date: Mon, 24 Apr 2023 08:11:02 -0400 Subject: [PATCH 93/98] Style updates --- forge-gui-mobile/src/forge/adventure/util/CardUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui-mobile/src/forge/adventure/util/CardUtil.java b/forge-gui-mobile/src/forge/adventure/util/CardUtil.java index 6fcc0655bd0..a86a2df61d6 100644 --- a/forge-gui-mobile/src/forge/adventure/util/CardUtil.java +++ b/forge-gui-mobile/src/forge/adventure/util/CardUtil.java @@ -350,7 +350,7 @@ public class CardUtil { public static Deck generateDeck(GeneratedDeckData data, CardEdition starterEdition, boolean discourageDuplicates) { - List editionCodes = (starterEdition != null)?Arrays.asList(starterEdition.getCode(), starterEdition.getCode2()):Arrays.asList("JMP", "J22", "DMU","BRO","ONE","MOM"); + List editionCodes = (starterEdition != null)?Arrays.asList(starterEdition.getCode(), starterEdition.getCode2()):Arrays.asList("JMP", "J22", "DMU", "BRO", "ONE", "MOM"); Deck deck= new Deck(data.name); if(data.mainDeck!=null) { From 4041140083cd9d83a567b170c33772b70f2425f8 Mon Sep 17 00:00:00 2001 From: CCTV-1 Date: Mon, 24 Apr 2023 20:12:05 +0800 Subject: [PATCH 94/98] add missing label,then translate new texts. --- forge-gui/res/languages/zh-CN.properties | 36 ++++++++++++++---------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index c6933ad26df..61c4c5fadc4 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -720,15 +720,15 @@ lblInvalidDeck=错误的套牌 lblInvalidDeckDesc=你的套牌%n请编辑或者选择其他套牌 #VSubmenuQuestPrefs.java lblQuestPreferences=冒险偏好 -lblQuestGameSettingsError=Game Settings Error +lblQuestGameSettingsError=游戏设置错误 lblRewardsError=奖励错误 lblDifficultyError=难度错误 lblBoosterError=补充包错误 lblShopError=商店错误 lblDraftTournamentsError=轮抓锦标赛错误 -lblQuestGameSettings=Game Settings -lblWorldRulesConformance=World Rules Conformance -ttWorldRulesConformance=Enforce player deck legality in each world (allowed sets, restricted cards etc). +lblQuestGameSettings=游戏设置 +lblWorldRulesConformance=世界一致性规则 +ttWorldRulesConformance=强制玩家的套牌符合当前世界的套牌合法性要求(例如:可以使用什么系列,什么牌被禁用了)。 lblRewards=奖励 lblBoosterPackRatios=补充包比例 lblDifficultyAdjustments=挑战难度 @@ -824,6 +824,7 @@ lblEnchantments=结界 lblPlaneswalkers=鹏洛客 lblInstants=瞬间 lblSorceries=法术 +lblBattles=战役 lblCCMC0=法术力值为0的牌 lblCCMC1=法术力值为1的牌 lblCCMC2=法术力值为2的牌 @@ -1090,6 +1091,7 @@ lblAutoCacheSize=启用自动缓存大小 nlAutoCacheSize=启用后,Forge将于启动时自动确定缓存大小。(如果不清楚此选项的作用,请关闭此选项) lblUseLaserArrows=使用镭射箭头 nlUseLaserArrows=启用后,Forge使用新的镭射箭头样式。 +lblExpandedShops=扩展牌张商店 #MatchScreen.java lblPlayers=玩家列表 lblLog=日志 @@ -1346,15 +1348,16 @@ lblSelectNumTargetToAction=选择%d个{0}用于{1}。 lblHighestBidder=最高出价者 lblUseTriggeredAbilityOf=使用触发异能 lblExertAttackersConfirm=进攻者耗竭? -lblEnlistAttackersConfirm=Enlist Attackers? -lblEnlisted=Enlisted +lblEnlistAttackersConfirm=进攻者征列? +lblEnlisted=已征列 +lblSelectACostToEnlist=选择一个{0}进行征列(被{1}征列) lblThereNoCardInPlayerZone={0}的{1}中没有牌 lblPutCardsOnTheTopLibraryOrGraveyard=将{0}放到牌库顶还是坟场? lblLibrary=牌库 lblGraveyard=坟场 lblAssignSectorCreature=将{0}分配给一部分 lblChooseSectorEffect=选择一部分 -lblChooseRollIgnore=Choose a roll to ignore +lblChooseRollIgnore=选择要忽略的骰子 lblTop=顶 lblBottom=底 lblNColorManaFromCard={2}产{0}个{1}法术力 @@ -1576,7 +1579,6 @@ lblDestroyed=被消灭 lblDestroyer=破坏者 #TriggerDevoured.java lblDevoured=已吞噬 -#TriggerDiscarded.java #TriggerEvolved.java lblEvolved=已进化 #TriggerExerted.java @@ -1908,10 +1910,10 @@ lblReveals=展示 lblWinsClash=比点赢了 lblLosesClash=比点输了 #CleanUpEffect.java -lblChosenCard={0}''s chosen card: {1} -lblChosenMultiCard={0}''s chosen cards: {1} -lblChosenPlayer={0}''s chosen player: {1} -lblNoValidChoice={0} found no valid choices. +lblChosenCard={0}选择的牌张为:{1} +lblChosenMultiCard={0}选择的牌张为:{1} +lblChosenPlayer={0}选择的牌手为:{1} +lblNoValidChoice={0}没找到可用的选项。 #CloneEffect.java lblDoYouWantCopy=你想要复制{0}吗? #ConniveEffect.java @@ -1977,7 +1979,7 @@ lblNoValidCards=没有有效的牌 lblDoYouWantDigYourLibrary=你想要挖掘你的牌库吗? lblDoYouWantPutCardToZone=你想把这张牌放到{0}吗? #DigMultipleEffect.java -lblMustChoose=You must choose at least one card. +lblMustChoose=你必须至少选择一张牌。 #DiscardEffect.java lblWouldYouLikeRandomDiscardTargetCard=你想随机弃掉%d张牌吗? lblPlayerHasChosenCardsFrom={0}选择了牌自 @@ -2050,7 +2052,7 @@ lblDoYouWantRevealYourHand=你想展示你的手牌吗? #RollDiceEffect.java lblPlayerRolledResult={0}掷骰结果为{1} #RollPlanarDiceEffect.java -lblPlanarDiceResult=Planar dice result: {0} +lblPlanarDiceResult=时空骰子点数: {0} #SacrificeEffect.java lblDoYouWantPayEcho=你想支付返响费用 lblPayEcho=支付返响费用 @@ -2112,6 +2114,7 @@ lblRemoveFromGame=从游戏中删除牌 lblRiggedRoll=触发时空骰 lblWalkTo=时空换入 lblAskAI=获取AI的建议 +lblAskSimulationAI=获取模拟AI的建议 #PhaseType.java lblUntapStep=重置步骤 lblUpkeepStep=维持步骤 @@ -2200,7 +2203,7 @@ lblTotalWins=胜场总计 lblTotalLosses=败场总计 lblConqueredEvents=征服事件 lblUnlockedCards=已解锁卡牌 -lblCommandersCardCannotBeExiledByCard={0} is in use by the following commanders and cannot be exiled:\n{1}. +lblCommandersCardCannotBeExiledByCard={0}被以下指挥官使用并不能被放逐:\n{1}. #QuestWinLoseController.java lblQuitByPayCredits=退出(-15积分) lblSpoilsWonAnteCard=胜利!获得赌注牌 @@ -2423,6 +2426,7 @@ lblCardChooseAnOpponentToGainNLife={0} - 选择一个目标获得{1}点生命值 lblMillNCardsFromYourLibraryConfirm=从你的牌库磨{0}张牌? lblPayNLifeConfirm=支付{0}点生命值? lblPayEnergyConfirm={0}?\n(你拥有{1}点{2}) +lblPayShardsConfirm={0}?\n(你拥有{1}点{2}) lblPutCardToLibraryConfirm=将{0}放入牌库? lblPutNCardsFromYourZone=将{0}张牌放入你的{1} lblFromZonePutToLibrary=从{0}放入牌库 @@ -2474,6 +2478,7 @@ lblCardNameAndCost=卡牌名称和费用 lblCardType=卡牌类别 lblCardID=卡牌ID lblCardPTOrLoyalty=卡牌攻防或忠诚 +lblPrimaryCharacteristic=卡牌攻防或忠诚或防卫指示物 #ArcaneMaster.java lblArcaneMaster=奥术大师 lblWinGameWithOutCasting=赢得一局游戏游戏中未释放过 @@ -2924,6 +2929,7 @@ lblTempHitPoints=临时生命值 #CardDetailUtil.java lblChosenColors=选择的颜色: lblLoyalty=忠诚指示物 +lblDefense=防卫指示物 #Achievement.java lblStandard=标准 lblChaos=混乱 From 3cf2f277561a0c35f1677876749f16a326792698 Mon Sep 17 00:00:00 2001 From: tool4ever Date: Mon, 24 Apr 2023 12:39:26 +0000 Subject: [PATCH 95/98] Update calix_guided_by_fate.txt --- forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt b/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt index f191356c04e..c2f91bb20c1 100644 --- a/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt +++ b/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt @@ -4,7 +4,7 @@ Types:Legendary Enchantment Creature Human Druid PT:2/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Enchantment.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Constellation — Whenever CARDNAME or another enchantment enters the battlefield under your control, put a +1/+1 counter on target creature. SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 -T:Mode$ DamageDone | ValidSource$ Card.Self,Creature.enchanted+YouCtrl | OptionalDecider You | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | ResolvedLimit$ 1 | TriggerDescription$ Whenever NICKNAME or an enchanted creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn. +T:Mode$ DamageDone | ValidSource$ Card.Self,Creature.enchanted+YouCtrl | OptionalDecider$ You | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | ResolvedLimit$ 1 | TriggerDescription$ Whenever NICKNAME or an enchanted creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn. SVar:TrigToken:DB$ CopyPermanent | Choices$ Enchantment.nonLegendary+YouCtrl | NumCopies$ 1 | ChoiceTitle$ Choose a nonlegendary enchantment you control DeckHas:Ability$Token DeckNeeds:Type$Enchantment From 1c96f26809d321cd807278d2ca8debb4e2e3b8c7 Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:45:08 +0200 Subject: [PATCH 96/98] Update invasion_of_eldraine_prickle_faeries.txt (#3003) --- .../upcoming/invasion_of_eldraine_prickle_faeries.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt index 417af0ee300..e46418407f9 100644 --- a/forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt @@ -1,5 +1,5 @@ Name:Invasion of Eldraine -ManaCost:4 B +ManaCost:3 B Types:Battle Siege Defense:4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, target opponent discards two cards. @@ -20,4 +20,4 @@ K:Flying T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Opponent | CheckSVar$ TrigCount | SVarCompare$ LE2 | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ At the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, CARDNAME deals 2 damage to them. SVar:TrigDmg:DB$ DealDamage | NumDmg$ 2 | Defined$ TriggeredPlayer SVar:TrigCount:Count$ValidHand Card.ActivePlayerCtrl -Oracle:Flying\nAt the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, Prickle Faeries deals 2 damage to them. \ No newline at end of file +Oracle:Flying\nAt the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, Prickle Faeries deals 2 damage to them. From b8c6086cc045476a5287defbd71dbfeecea3e575 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 24 Apr 2023 16:26:41 +0000 Subject: [PATCH 97/98] [maven-release-plugin] prepare release forge-1.6.56 --- forge-adventure/pom.xml | 2 +- forge-ai/pom.xml | 2 +- forge-core/pom.xml | 2 +- forge-game/pom.xml | 2 +- forge-gui-android/pom.xml | 2 +- forge-gui-desktop/pom.xml | 2 +- forge-gui-ios/pom.xml | 2 +- forge-gui-mobile-dev/pom.xml | 2 +- forge-gui-mobile/pom.xml | 2 +- forge-gui/pom.xml | 2 +- forge-lda/pom.xml | 2 +- pom.xml | 4 ++-- 12 files changed, 13 insertions(+), 13 deletions(-) diff --git a/forge-adventure/pom.xml b/forge-adventure/pom.xml index 4db33e516e6..b35356ea764 100644 --- a/forge-adventure/pom.xml +++ b/forge-adventure/pom.xml @@ -3,7 +3,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 4.0.0 diff --git a/forge-ai/pom.xml b/forge-ai/pom.xml index dae7710103d..8c336217272 100644 --- a/forge-ai/pom.xml +++ b/forge-ai/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 forge-ai diff --git a/forge-core/pom.xml b/forge-core/pom.xml index 1bce1d8a50c..448ea1c62e8 100644 --- a/forge-core/pom.xml +++ b/forge-core/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 forge-core diff --git a/forge-game/pom.xml b/forge-game/pom.xml index 828f9c5a97c..aabdcf6e072 100644 --- a/forge-game/pom.xml +++ b/forge-game/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 forge-game diff --git a/forge-gui-android/pom.xml b/forge-gui-android/pom.xml index ae03902f122..7f4a72922a3 100644 --- a/forge-gui-android/pom.xml +++ b/forge-gui-android/pom.xml @@ -19,7 +19,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 forge-gui-android diff --git a/forge-gui-desktop/pom.xml b/forge-gui-desktop/pom.xml index ff795ea3f71..3b74663b04f 100644 --- a/forge-gui-desktop/pom.xml +++ b/forge-gui-desktop/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 forge-gui-desktop diff --git a/forge-gui-ios/pom.xml b/forge-gui-ios/pom.xml index d4af0a8609d..4f860018144 100644 --- a/forge-gui-ios/pom.xml +++ b/forge-gui-ios/pom.xml @@ -12,7 +12,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 forge-gui-ios diff --git a/forge-gui-mobile-dev/pom.xml b/forge-gui-mobile-dev/pom.xml index 3a9338620ed..e7439c1e3aa 100644 --- a/forge-gui-mobile-dev/pom.xml +++ b/forge-gui-mobile-dev/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 forge-gui-mobile-dev diff --git a/forge-gui-mobile/pom.xml b/forge-gui-mobile/pom.xml index 4e506c14ca6..e6f11a7958e 100644 --- a/forge-gui-mobile/pom.xml +++ b/forge-gui-mobile/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 forge-gui-mobile diff --git a/forge-gui/pom.xml b/forge-gui/pom.xml index b39765363a8..a298e7f89ee 100644 --- a/forge-gui/pom.xml +++ b/forge-gui/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 forge-gui diff --git a/forge-lda/pom.xml b/forge-lda/pom.xml index ad382ad3076..f159d820a7e 100644 --- a/forge-lda/pom.xml +++ b/forge-lda/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.56 forge-lda diff --git a/pom.xml b/pom.xml index 571d83397e5..075e558e047 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ forge pom Forge Parent - 1.6.56-SNAPSHOT + 1.6.56 Forge lets you play the card game Magic: The Gathering against a computer opponent using all of the rules. @@ -36,7 +36,7 @@ scm:git:https://github.com/Card-Forge/forge.git scm:git:https://github.com/Card-Forge/forge.git - HEAD + forge-1.6.56 From 53bed72fe556454032761155e7fa9618d096bbcc Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 24 Apr 2023 16:26:43 +0000 Subject: [PATCH 98/98] [maven-release-plugin] prepare for next development iteration --- forge-adventure/pom.xml | 2 +- forge-ai/pom.xml | 2 +- forge-core/pom.xml | 2 +- forge-game/pom.xml | 2 +- forge-gui-android/pom.xml | 2 +- forge-gui-desktop/pom.xml | 2 +- forge-gui-ios/pom.xml | 2 +- forge-gui-mobile-dev/pom.xml | 2 +- forge-gui-mobile/pom.xml | 2 +- forge-gui/pom.xml | 2 +- forge-lda/pom.xml | 2 +- pom.xml | 4 ++-- 12 files changed, 13 insertions(+), 13 deletions(-) diff --git a/forge-adventure/pom.xml b/forge-adventure/pom.xml index b35356ea764..1ff441e8800 100644 --- a/forge-adventure/pom.xml +++ b/forge-adventure/pom.xml @@ -3,7 +3,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT 4.0.0 diff --git a/forge-ai/pom.xml b/forge-ai/pom.xml index 8c336217272..5e8f803fd2a 100644 --- a/forge-ai/pom.xml +++ b/forge-ai/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT forge-ai diff --git a/forge-core/pom.xml b/forge-core/pom.xml index 448ea1c62e8..373b090f3c3 100644 --- a/forge-core/pom.xml +++ b/forge-core/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT forge-core diff --git a/forge-game/pom.xml b/forge-game/pom.xml index aabdcf6e072..ec54950674a 100644 --- a/forge-game/pom.xml +++ b/forge-game/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT forge-game diff --git a/forge-gui-android/pom.xml b/forge-gui-android/pom.xml index 7f4a72922a3..130b595baae 100644 --- a/forge-gui-android/pom.xml +++ b/forge-gui-android/pom.xml @@ -19,7 +19,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT forge-gui-android diff --git a/forge-gui-desktop/pom.xml b/forge-gui-desktop/pom.xml index 3b74663b04f..f9845274792 100644 --- a/forge-gui-desktop/pom.xml +++ b/forge-gui-desktop/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT forge-gui-desktop diff --git a/forge-gui-ios/pom.xml b/forge-gui-ios/pom.xml index 4f860018144..4afbdde3251 100644 --- a/forge-gui-ios/pom.xml +++ b/forge-gui-ios/pom.xml @@ -12,7 +12,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT forge-gui-ios diff --git a/forge-gui-mobile-dev/pom.xml b/forge-gui-mobile-dev/pom.xml index e7439c1e3aa..3141a39cad7 100644 --- a/forge-gui-mobile-dev/pom.xml +++ b/forge-gui-mobile-dev/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT forge-gui-mobile-dev diff --git a/forge-gui-mobile/pom.xml b/forge-gui-mobile/pom.xml index e6f11a7958e..1d1dadf1671 100644 --- a/forge-gui-mobile/pom.xml +++ b/forge-gui-mobile/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT forge-gui-mobile diff --git a/forge-gui/pom.xml b/forge-gui/pom.xml index a298e7f89ee..46fd77e56d2 100644 --- a/forge-gui/pom.xml +++ b/forge-gui/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT forge-gui diff --git a/forge-lda/pom.xml b/forge-lda/pom.xml index f159d820a7e..cbfffc465bf 100644 --- a/forge-lda/pom.xml +++ b/forge-lda/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56 + 1.6.57-SNAPSHOT forge-lda diff --git a/pom.xml b/pom.xml index 075e558e047..9905ef60df6 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ forge pom Forge Parent - 1.6.56 + 1.6.57-SNAPSHOT Forge lets you play the card game Magic: The Gathering against a computer opponent using all of the rules. @@ -36,7 +36,7 @@ scm:git:https://github.com/Card-Forge/forge.git scm:git:https://github.com/Card-Forge/forge.git - forge-1.6.56 + HEAD