From f2a4303098370d5f247bca9e638edefbf5abb4a1 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 14:17:34 -0500 Subject: [PATCH 01/31] cosmetic changes to Jumpstart digital cards --- forge-gui/res/cardsfolder/l/leonin_sanctifier.txt | 2 +- forge-gui/res/cardsfolder/l/longtusk_stalker.txt | 4 ++-- forge-gui/res/cardsfolder/m/mentor_of_evos_isle.txt | 2 +- forge-gui/res/cardsfolder/p/plaguecrafters_familiar.txt | 2 +- forge-gui/res/cardsfolder/r/reckless_ringleader.txt | 2 +- forge-gui/res/cardsfolder/v/veteran_charger.txt | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/forge-gui/res/cardsfolder/l/leonin_sanctifier.txt b/forge-gui/res/cardsfolder/l/leonin_sanctifier.txt index 9d88a1a17e4..02181d8b91c 100644 --- a/forge-gui/res/cardsfolder/l/leonin_sanctifier.txt +++ b/forge-gui/res/cardsfolder/l/leonin_sanctifier.txt @@ -6,7 +6,7 @@ K:Lifelink T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChoose | TriggerDescription$ When CARDNAME enters the battlefield, choose a creature card in your hand. It perpetually gains lifelink. SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.Creature+YouOwn | ChoiceTitle$ Choose a creature card in your hand | Amount$ 1 | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualLifelink | Name$ Leonin Sanctifier's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup -SVar:PerpetualLifelink:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Lifelink | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This card perpetually gains lifelink. +SVar:PerpetualLifelink:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Lifelink | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains lifelink. SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True DeckHas:Ability$LifeGain Oracle:Lifelink\nWhen Leonin Sanctifier enters the battlefield, choose a creature card in your hand. It perpetually gains lifelink. diff --git a/forge-gui/res/cardsfolder/l/longtusk_stalker.txt b/forge-gui/res/cardsfolder/l/longtusk_stalker.txt index 31b04e3e598..6c83240b25b 100644 --- a/forge-gui/res/cardsfolder/l/longtusk_stalker.txt +++ b/forge-gui/res/cardsfolder/l/longtusk_stalker.txt @@ -8,7 +8,7 @@ SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum A:AB$ Effect | Cost$ PayEnergy<2> | StaticAbilities$ SelfPerpetualP1P0 | Name$ Longtusk Stalker's Perpetual Effect | Duration$ Permanent | SubAbility$ DBChooseCard | SpellDescription$ CARDNAME perpetually gets +1/+0. You may choose a creature card in your hand. If you do, that card perpetually gets +1/+0. SVar:SelfPerpetualP1P0:Mode$ Continuous | Affected$ Card.EffectSource | AddPower$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ EFFECTSOURCE perpetually gets +1/+0. SVar:DBChooseCard:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.Creature+YouOwn | ChoiceTitle$ Choose up to one creature card in your hand | MinAmount$ 0 | Amount$ 1 | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | ConditionDefined$ ChosenCard | ConditionPresent$ Card | StaticAbilities$ PerpetualP1P0 | Duration$ Permanent | SubAbility$ DBCleanup -SVar:PerpetualP1P0:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This card perpetually gets +1/+0. +SVar:DBEffect:DB$ Effect | ConditionDefined$ ChosenCard | ConditionPresent$ Card | StaticAbilities$ PerpetualP1P0 | Name$ Longtusk Stalker's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup +SVar:PerpetualP1P0:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gets +1/+0. SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True Oracle:Whenever Longtusk Stalker enters the battlefield or attacks, you get {E}.\nPay {E}{E}: Longtusk Stalker perpetually gets +1/+0. You may choose a creature card in your hand. If you do, that card perpetually gets +1/+0. diff --git a/forge-gui/res/cardsfolder/m/mentor_of_evos_isle.txt b/forge-gui/res/cardsfolder/m/mentor_of_evos_isle.txt index cdf6e7a9837..d75a2ef55de 100644 --- a/forge-gui/res/cardsfolder/m/mentor_of_evos_isle.txt +++ b/forge-gui/res/cardsfolder/m/mentor_of_evos_isle.txt @@ -6,6 +6,6 @@ K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChoose | TriggerDescription$ When CARDNAME enters the battlefield, choose a creature card in your hand. It perpetually gains flying. SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.Creature+YouOwn | ChoiceTitle$ Choose a creature card in your hand | Amount$ 1 | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualFlying | Name$ Mentor of Evos Isle's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup -SVar:PerpetualFlying:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Flying | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This card perpetually gains flying. +SVar:PerpetualFlying:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Flying | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains flying. SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True Oracle:Flying\nWhen Mentor of Evos Isle enters the battlefield, choose a creature card in your hand. It perpetually gains flying. diff --git a/forge-gui/res/cardsfolder/p/plaguecrafters_familiar.txt b/forge-gui/res/cardsfolder/p/plaguecrafters_familiar.txt index dc23d41e976..68f7075fcf5 100644 --- a/forge-gui/res/cardsfolder/p/plaguecrafters_familiar.txt +++ b/forge-gui/res/cardsfolder/p/plaguecrafters_familiar.txt @@ -6,6 +6,6 @@ K:Deathtouch T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChoose | TriggerDescription$ When CARDNAME enters the battlefield, choose a creature card in your hand. It perpetually gains deathtouch. SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.Creature+YouOwn | ChoiceTitle$ Choose a creature card in your hand | Amount$ 1 | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualDeathtouch | Name$ Plaguecrafter's Familiar's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup -SVar:PerpetualDeathtouch:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Deathtouch | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This card perpetually gains deathtouch. +SVar:PerpetualDeathtouch:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Deathtouch | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains deathtouch. SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True Oracle:Deathtouch\nWhen Plaguecrafter's Familiar enters the battlefield, choose a creature card in your hand. It perpetually gains deathtouch. diff --git a/forge-gui/res/cardsfolder/r/reckless_ringleader.txt b/forge-gui/res/cardsfolder/r/reckless_ringleader.txt index a09655ae3d0..515331db821 100644 --- a/forge-gui/res/cardsfolder/r/reckless_ringleader.txt +++ b/forge-gui/res/cardsfolder/r/reckless_ringleader.txt @@ -6,6 +6,6 @@ K:Haste T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChoose | TriggerDescription$ When CARDNAME enters the battlefield, choose a creature card in your hand. It perpetually gains haste. SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.Creature+YouOwn | ChoiceTitle$ Choose a creature card in your hand | Amount$ 1 | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualHaste | Name$ Reckless Ringleader's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup -SVar:PerpetualHaste:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Haste | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This card perpetually gains haste. +SVar:PerpetualHaste:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Haste | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains haste. SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True Oracle:Haste\nWhen Reckless Ringleader enters the battlefield, choose a creature card in your hand. It perpetually gains haste. diff --git a/forge-gui/res/cardsfolder/v/veteran_charger.txt b/forge-gui/res/cardsfolder/v/veteran_charger.txt index 0077b0928df..936be263aec 100644 --- a/forge-gui/res/cardsfolder/v/veteran_charger.txt +++ b/forge-gui/res/cardsfolder/v/veteran_charger.txt @@ -5,6 +5,6 @@ PT:2/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChoose | TriggerDescription$ When CARDNAME enters the battlefield, choose a creature card in your hand. It perpetually gets +2/+2. SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.Creature+YouOwn | ChoiceTitle$ Choose a creature card in your hand | Amount$ 1 | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualP2P2 | Name$ Veteran Charger's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup -SVar:PerpetualP2P2:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 2 | AddToughness$ 2 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This card perpetually gets +2/+2. +SVar:PerpetualP2P2:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 2 | AddToughness$ 2 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gets +2/+2. SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True Oracle:When Veteran Charger enters the battlefield, choose a creature card in your hand. It perpetually gets +2/+2. From bac287e2ae6c7d00f8f34ae11ec253d803a9f95d Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 14:20:56 -0500 Subject: [PATCH 02/31] geistchanneler.txt fix --- forge-gui/res/cardsfolder/upcoming/geistchanneler.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/geistchanneler.txt b/forge-gui/res/cardsfolder/upcoming/geistchanneler.txt index c0c75bed617..e01c87a9251 100644 --- a/forge-gui/res/cardsfolder/upcoming/geistchanneler.txt +++ b/forge-gui/res/cardsfolder/upcoming/geistchanneler.txt @@ -4,8 +4,9 @@ Types:Creature Human Wizard PT:1/3 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChoose | TriggerDescription$ When CARDNAME enters the battlefield, choose an instant or sorcery card in your hand with mana value 3 or greater. It perpetually gains "This spell costs {2} less to cast." SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Instant.YouOwn+cmcGE3,Sorcery.YouOwn+cmcGE3 | ChoiceTitle$ Choose an instant or sorcery card in your hand with mana value 3 or greater | Amount$ 1 | AILogic$ BestCard | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualReduce | Name$ Geistchanneler's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup -SVar:PerpetualReduce:Mode$ ReduceCost | ValidCard$ Card.ChosenCard | Amount$ 2 | AddKeyword$ Haste | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This spell perpetually costs {2} less to cast. +SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualAbility | Name$ Geistchanneler's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup +SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.ChosenCard | AddStaticAbility$ PerpetualReduce | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains "This spell costs {2} less to cast." +SVar:PerpetualReduce:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | EffectZone$ All | Description$ This spell costs {2} less to cast. SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True DeckHints:Type$Instant|Sorcery SVar:NeedsToPlayVar:X GE1 From 796b5da05e60dd7f928080a03a14efed720087df Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 15:15:42 -0500 Subject: [PATCH 03/31] sarkhan_wanderer_to_shiv.txt fix --- .../res/cardsfolder/s/sarkhan_wanderer_to_shiv.txt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/forge-gui/res/cardsfolder/s/sarkhan_wanderer_to_shiv.txt b/forge-gui/res/cardsfolder/s/sarkhan_wanderer_to_shiv.txt index aa3fb1b50ee..d7ac8131a14 100644 --- a/forge-gui/res/cardsfolder/s/sarkhan_wanderer_to_shiv.txt +++ b/forge-gui/res/cardsfolder/s/sarkhan_wanderer_to_shiv.txt @@ -2,11 +2,12 @@ Name:Sarkhan, Wanderer to Shiv ManaCost:3 R Types:Legendary Planeswalker Sarkhan Loyalty:4 -A:AB$ PumpAll | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidCards$ Dragon.YouOwn | RememberAllPumped$ True | PumpZone$ Hand | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ DragonReduceCost,DragonAltCost | Duration$ Permanent | Name$ Sarkhan, Wanderer to Shiv's Perpetual Effect | SubAbility$ DBCleanup | SpellDescription$ Dragon cards in your hand perpetually gain "This spell costs {1} less to cast," and "You may pay {X} rather than pay this spell's mana cost, where X is its mana value." -SVar:DragonReduceCost:Mode$ ReduceCost | ValidCard$ Card.IsRemembered | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. -SVar:DragonAltCost:Mode$ Continuous | Affected$ Card.IsRemembered | AddKeyword$ Alternative Cost:ConvertedManaCost | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ You may pay {X} rather than pay this spell's mana cost, where X is its mana value. -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +A:AB$ Effect | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | RememberObjects$ ValidHand Dragon.YouOwn | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Sarkhan, Wanderer to Shiv's Perpetual Effect | SpellDescription$ Dragon cards in your hand perpetually gain "This spell costs {1} less to cast," and "You may pay {X} rather than pay this spell's mana cost, where X is its mana value." +SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ DragonReduceCost & DragonAltCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Dragon cards in your hand perpetually gain "This spell costs {1} less to cast," and "You may pay {X} rather than pay this spell's mana cost, where X is its mana value." +SVar:DragonReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. +SVar:DragonAltCost:Mode$ Continuous | CharacteristicDefining$ True | AddKeyword$ Alternative Cost:ConvertedManaCost | Description$ You may pay {X} rather than pay this spell's mana cost, where X is its mana value. +SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:DBUpdate:DB$ UpdateRemember A:AB$ MakeCard | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Name$ Shivan Dragon | Zone$ Hand | SpellDescription$ Conjure a Shivan Dragon card into your hand. A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature. DeckHints:Type$Dragon From ba6d1a61fb2f31ce4814efb756cd9a15d57ad3f6 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 15:16:05 -0500 Subject: [PATCH 04/31] freyalise_skyshroud_partisan.txt fix --- .../res/cardsfolder/f/freyalise_skyshroud_partisan.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/f/freyalise_skyshroud_partisan.txt b/forge-gui/res/cardsfolder/f/freyalise_skyshroud_partisan.txt index 272a8373f80..56acd8667d7 100644 --- a/forge-gui/res/cardsfolder/f/freyalise_skyshroud_partisan.txt +++ b/forge-gui/res/cardsfolder/f/freyalise_skyshroud_partisan.txt @@ -2,10 +2,10 @@ Name:Freyalise, Skyshroud Partisan ManaCost:1 G G Types:Legendary Planeswalker Freyalise Loyalty:4 -A:AB$ Untap | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Elf | TgtPrompt$ Select up to one target creature | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBRandom | StackDescription$ SpellDescription | SpellDescription$ Choose up to one target Elf. Untap it. It and a random Elf creature card in your hand each perpetually gets +1/+1. +A:AB$ Untap | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Elf | TgtPrompt$ Select up to one target Elf | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBRandom | StackDescription$ SpellDescription | SpellDescription$ Choose up to one target Elf. Untap it. It and a random Elf creature card in your hand each perpetually gets +1/+1. SVar:DBRandom:DB$ ChooseCard | Defined$ You | Choices$ Elf.YouOwn | ChoiceZone$ Hand | AtRandom$ True | Amount$ 1 | SubAbility$ DBEffect | StackDescription$ None -SVar:DBEffect:DB$ Effect | RememberObjects$ Targeted,ChosenCard | StaticAbilities$ PerpetualP1P1 | Name$ Freyalise, Skyshroud Partisan's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup -SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.IsRemembered | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ These cards perpetually get +1/+1. +SVar:DBEffect:DB$ Effect | RememberObjects$ Targeted | StaticAbilities$ PerpetualP1P1 | Name$ Freyalise, Skyshroud Partisan's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup +SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.IsRemembered,Card.ChosenCard | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The target Elf and randomly chosen card perpetually get +1/+1. SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True A:AB$ ChangeZone | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Origin$ Library | Destination$ Hand | AtRandom$ True | NoShuffle$ True | Mandatory$ True | NoLooking$ True | NoReveal$ True | ChangeType$ Card.Elf | ChangeNum$ 1 | StackDescription$ SpellDescription | SpellDescription$ Seek an Elf card. A:AB$ MakeCard | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Regal Force | Zone$ Battlefield | SpellDescription$ Conjure a Regal Force card onto the battlefield. From ae5637edbacbbd98262f5b897b686bd790cb4839 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 15:17:16 -0500 Subject: [PATCH 05/31] hide cards chosen from hand for Perpetual Effect until after they leave the hand --- .../main/java/forge/gui/card/CardDetailUtil.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/forge-gui/src/main/java/forge/gui/card/CardDetailUtil.java b/forge-gui/src/main/java/forge/gui/card/CardDetailUtil.java index 81d954e5f8c..b7acea8dc74 100644 --- a/forge-gui/src/main/java/forge/gui/card/CardDetailUtil.java +++ b/forge-gui/src/main/java/forge/gui/card/CardDetailUtil.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import forge.game.card.*; +import forge.util.collect.FCollectionView; import org.apache.commons.lang3.StringUtils; import com.google.common.collect.Sets; @@ -16,7 +18,6 @@ import forge.card.ColorSet; import forge.card.MagicColor; import forge.card.mana.ManaCostShard; import forge.game.GameView; -import forge.game.card.Card; import forge.game.card.CardView; import forge.game.card.CardView.CardStateView; import forge.game.zone.ZoneType; @@ -429,7 +430,18 @@ public class CardDetailUtil { area.append("\n"); } area.append("(chosen cards: "); - area.append(Lang.joinHomogenous(card.getChosenCards())); + if (card.isImmutable() && card.getName().contains("Perpetual Effect")) { + FCollectionView chosenCards = card.getChosenCards(); + StringBuilder chosenToShow = new StringBuilder(); + for (CardView cc : chosenCards) { + if (cc.getZone() != ZoneType.Hand) { + chosenToShow.append(cc); + } + } + area.append(chosenToShow.toString()); + } else { + area.append(Lang.joinHomogenous(card.getChosenCards())); + } area.append(")"); } From 0f3a48b488ec740f195934ea12ed6b8a45985ae1 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 15:17:42 -0500 Subject: [PATCH 06/31] hide cards remembered from hand for Perpetual Effect until after they leave the hand --- .../src/main/java/forge/game/card/CardView.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index 5cced7cc806..a8aeb47a6df 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -442,8 +442,16 @@ public class CardView extends GameEntityView { sb.append("\r\nRemembered: \r\n"); for (final Object o : c.getRemembered()) { if (o != null) { - sb.append(o.toString()); - sb.append("\r\n"); + if (o instanceof Card && c.isImmutable() && c.getName().contains("Perpetual Effect")) { + Card rc = (Card) o; + if (rc.getZone().getZoneType() != ZoneType.Hand) { + sb.append(o.toString()); + sb.append("\r\n"); + } + } else { + sb.append(o.toString()); + sb.append("\r\n"); + } } } set(TrackableProperty.Remembered, sb.toString()); From bd8ab17c3f1b23339dccf2b37d0a590a8aa21e5b Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 15:18:27 -0500 Subject: [PATCH 07/31] support updating remembered cards hidden by Perpetual Effect after they leave the hand --- .../src/main/java/forge/game/ability/ApiType.java | 3 ++- .../game/ability/effects/UpdateRememberEffect.java | 13 +++++++++++++ forge-game/src/main/java/forge/game/card/Card.java | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 forge-game/src/main/java/forge/game/ability/effects/UpdateRememberEffect.java 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 af91ff5d542..5db6e18ac9d 100644 --- a/forge-game/src/main/java/forge/game/ability/ApiType.java +++ b/forge-game/src/main/java/forge/game/ability/ApiType.java @@ -188,7 +188,8 @@ public enum ApiType { ChangeZoneResolve (ChangeZoneResolveEffect.class), InternalEtbReplacement (ETBReplacementEffect.class), InternalLegendaryRule (CharmEffect.class), - InternalIgnoreEffect (CharmEffect.class); + InternalIgnoreEffect (CharmEffect.class), + UpdateRemember (UpdateRememberEffect.class); private final SpellAbilityEffect instanceEffect; diff --git a/forge-game/src/main/java/forge/game/ability/effects/UpdateRememberEffect.java b/forge-game/src/main/java/forge/game/ability/effects/UpdateRememberEffect.java new file mode 100644 index 00000000000..0401bd71405 --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/UpdateRememberEffect.java @@ -0,0 +1,13 @@ +package forge.game.ability.effects; + +import forge.game.ability.SpellAbilityEffect; +import forge.game.card.Card; +import forge.game.spellability.SpellAbility; + +public class UpdateRememberEffect extends SpellAbilityEffect { + @Override + public void resolve(SpellAbility sa) { + final Card host = sa.getHostCard(); + host.updateRemembered(); + } +} diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 9ee9bb5ea5c..fe3e795cffc 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -1038,6 +1038,9 @@ public class Card extends GameEntity implements Comparable, IHasSVars { rememberedObjects.clear(); view.updateRemembered(this); } + public final void updateRemembered() { + view.updateRemembered(this); + } public final CardCollectionView getImprintedCards() { return CardCollection.getView(imprintedCards); From bf061f9ffe181d3d62fb0c79b5a9e11a74910318 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 18:24:31 -0500 Subject: [PATCH 08/31] begin_anew.txt --- forge-gui/res/cardsfolder/upcoming/begin_anew.txt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/begin_anew.txt diff --git a/forge-gui/res/cardsfolder/upcoming/begin_anew.txt b/forge-gui/res/cardsfolder/upcoming/begin_anew.txt new file mode 100644 index 00000000000..5d13988c49f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/begin_anew.txt @@ -0,0 +1,9 @@ +Name:Begin Anew +ManaCost:G G W W +Types:Sorcery +A:SP$ DestroyAll | ValidCards$ Creature | SubAbility$ DBEffect | SpellDescription$ Destroy all creatures. +SVar:DBEffect:DB$ Effect | RememberObjects$ ValidHand Creature.YouOwn | StaticAbilities$ PerpetualP1P1 | Duration$ Permanent | Triggers$ Update | Name$ Begin Anew's Perpetual Effect | SpellDescription$ Creature cards in your hand perpetually get +1/+1. +SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.IsRemembered | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Creature cards in your hand perpetually get +1/+1. +SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:DBUpdate:DB$ UpdateRemember +Oracle:Destroy all creatures. Creature cards in your hand perpetually get +1/+1. From fdca59d33ed983b1d5d9dd7ebd3659c7167ebab2 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 19:26:33 -0500 Subject: [PATCH 09/31] absorb_energy.txt --- forge-gui/res/cardsfolder/upcoming/absorb_energy.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/absorb_energy.txt diff --git a/forge-gui/res/cardsfolder/upcoming/absorb_energy.txt b/forge-gui/res/cardsfolder/upcoming/absorb_energy.txt new file mode 100644 index 00000000000..9fa9e3a9c11 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/absorb_energy.txt @@ -0,0 +1,11 @@ +Name:Absorb Energy +ManaCost:1 U U +Types:Instant +A:SP$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | RememberCountered$ True | SubAbility$ DBEffect | SpellDescription$ Counter target spell. +SVar:DBEffect:DB$ Effect | ImprintCards$ Remembered | RememberObjects$ ValidHand Card.YouOwn+sharesCardTypeWith Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Absorb Energy's Perpetual Effect | SubAbility$ DBCleanup | SpellDescription$ Cards in your hand that share a card type with that spell perpetually gain "This spell costs {1} less to cast." +SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ PerpetualReduceCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Cards in your hand that share a card type with that [imprinted] spell perpetually gain "This spell costs {1} less to cast." +SVar:PerpetualReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. +SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:DBUpdate:DB$ UpdateRemember +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Counter target spell. Cards in your hand that share a card type with that spell perpetually gain "This spell costs {1} less to cast." From c3755a111fe54b3e2c89345f08e55016926e1d97 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 19:27:26 -0500 Subject: [PATCH 10/31] assemble_from_parts.txt --- .../res/cardsfolder/upcoming/assemble_from_parts.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/assemble_from_parts.txt diff --git a/forge-gui/res/cardsfolder/upcoming/assemble_from_parts.txt b/forge-gui/res/cardsfolder/upcoming/assemble_from_parts.txt new file mode 100644 index 00000000000..16da409faff --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/assemble_from_parts.txt @@ -0,0 +1,10 @@ +Name:Assemble from Parts +ManaCost:B +Types:Instant +A:SP$ Effect | TgtZone$ Graveyard | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature card in your graveyard | StaticAbilities$ Assembly | RememberObjects$ Targeted | Name$ Assemble from Part's Perpetual Effect | Duration$ Permanent | StackDescription$ {c:Targeted} perpetually gains "{3} {B}, Exile this card from your graveyard: Shuffle it into your library. Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. Activate only as a sorcery." | SpellDescription$ Target creature card in your graveyard perpetually gains "{3} {B}, Exile this card from your graveyard: Shuffle it into your library. Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. Activate only as a sorcery." +SVar:Assembly:Mode$ Continuous | Affected$ Card.IsRemembered | AddAbility$ ABShuffle | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Target creature card in your graveyard perpetually gains "{3} {B}, Exile this card from your graveyard: Shuffle it into your library. Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. Activate only as a sorcery." +SVar:ABShuffle:AB$ ChangeZone | Cost$ 3 B ExileFromGrave<1/CARDNAME> | ActivationZone$ Graveyard | Origin$ All | Destination$ Library | Shuffle$ True | Defined$ Self | SubAbility$ DBCopy | SorcerySpeed$ True | StackDescription$ Shuffle CARDNAME into your library. | SpellDescription$ Shuffle it into your library. Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. Activate only as a sorcery. +SVar:DBCopy:DB$ CopyPermanent | Defined$ Self | SetPower$ 4 | SetToughness$ 4 | AddTypes$ Zombie | SetColor$ Black | SubAbility$ DBChangeZone | StackDescription$ Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. +SVar:AIPreference:ExileFromGraveCost$Creature.YouOwn+inZoneGraveyard +DeckHas:Ability$Token & Ability$Graveyard +Oracle:Target creature card in your graveyard perpetually gains "{3} {B}, Exile this card from your graveyard: Shuffle it into your library. Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. Activate only as a sorcery." From 83f72222f6bb1a033cd0d9da117a923e353a1f09 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 19:43:52 -0500 Subject: [PATCH 11/31] fearsome_whelp.txt --- .../res/cardsfolder/upcoming/fearsome_whelp.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/fearsome_whelp.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fearsome_whelp.txt b/forge-gui/res/cardsfolder/upcoming/fearsome_whelp.txt new file mode 100644 index 00000000000..03eb4e2c715 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/fearsome_whelp.txt @@ -0,0 +1,13 @@ +Name:Fearsome Whelp +ManaCost:1 R +Types:Creature Dragon +PT:1/1 +K:Flying +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigEffect | TriggerDescription$ At the beginning of your end step, each Dragon card in your hand perpetually gains "This spell costs {1} less to cast." +SVar:TrigEffect:DB$ Effect | RememberObjects$ ValidHand Dragon.YouOwn | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Fearsome Whelp's Perpetual Effect +SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ DragonReduceCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Each Dragon card in your hand perpetually gains "This spell costs {1} less to cast." +SVar:DragonReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. +SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:DBUpdate:DB$ UpdateRemember +DeckHints:Type$Dragon +Oracle:Flying\nAt the beginning of your end step, each Dragon card in your hand perpetually gains "This spell costs {1} less to cast. From 70d30e43f22cb12eba3b8fdb8ee5238aa78a1b9a Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 20:20:14 -0500 Subject: [PATCH 12/31] angel_of_unity.txt --- .../res/cardsfolder/upcoming/angel_of_unity.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/angel_of_unity.txt diff --git a/forge-gui/res/cardsfolder/upcoming/angel_of_unity.txt b/forge-gui/res/cardsfolder/upcoming/angel_of_unity.txt new file mode 100644 index 00000000000..d44d0585ecc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/angel_of_unity.txt @@ -0,0 +1,16 @@ +Name:Angel of Unity +ManaCost:1 W +Types:Creature Angel Cleric +PT:1/3 +K:Flying +K:Lifelink +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME enters the battlefield or you cast a party spell, choose a party creature card in your hand. It perpetually gets +1/+1. (A party card or spell is a Cleric, Rogue, Warrior, or Wizard.) +T:Mode$ SpellCast | ValidCard$ Cleric,Rogue,Warrior,Wizard | ValidActivatingPlayer$ You | Execute$ TrigChoose | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or you cast a party spell, choose a party creature card in your hand. It perpetually gets +1/+1. (A party card or spell is a Cleric, Rogue, Warrior, or Wizard.) +SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Creature.Cleric+YouOwn,Creature.Rogue+YouOwn,Creature.Warrior+YouOwn,Creature.Wizard+YouOwn | ChoiceTitle$ Choose a party creature card in your hand | Amount$ 1 | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualP1P1 | Name$ Angel of Unity's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup +SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gets +1/+1. +SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True +DeckHas:Ability$Party & Ability$LifeGain +SVar:BuffedBy:Cleric,Rogue,Warrior,Wizard +DeckHints:Type$Rogue|Warrior|Wizard +Oracle:Flying, lifelink\nWhenever Angel of Unity enters the battlefield or you cast a party spell, choose a party creature card in your hand. It perpetually gets +1/+1. (A party card or spell is a Cleric, Rogue, Warrior, or Wizard.) From 95b2dadd6622fbcab6155e12699cb664c92bd467 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 22:27:29 -0500 Subject: [PATCH 13/31] antique_collector.txt --- .../cardsfolder/upcoming/antique_collector.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/antique_collector.txt diff --git a/forge-gui/res/cardsfolder/upcoming/antique_collector.txt b/forge-gui/res/cardsfolder/upcoming/antique_collector.txt new file mode 100644 index 00000000000..a7cbd71d72d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/antique_collector.txt @@ -0,0 +1,16 @@ +Name:Antique Collector +ManaCost:1 G +Types:Creature Human Rogue +PT:2/2 +S:Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.powerLE2 | Description$ CARDNAME can't be blocked by creatures with power 2 or less. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When CARDNAME enters the battlefield, creatures you control perpetually gain "When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate." +SVar:TrigEffect:DB$ Effect | RememberObjects$ Valid Creature.YouCtrl | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Antique Collector's Perpetual Effect +SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddTrigger$ DiesTrigger | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Creatures you control perpetually gain "When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate." +SVar:DiesTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigShuffle | OptionalDecider$ You | TriggerDescription$ When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate. +SVar:TrigShuffle:DB$ ChangeZone | Origin$ Graveyard | Destination$ Library | Shuffle$ True | Defined$ TriggeredNewCardLKICopy | RememberChanged$ True | SubAbility$ DBInvestigate +SVar:DBInvestigate:DB$ Investigate | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:DBUpdate:DB$ UpdateRemember +DeckHas:Ability$Investigate & Ability$Token +Oracle:Antique Collector can't be blocked by creatures with power 2 or less.\nWhen Antique Collector enters the battlefield, creatures you control perpetually gain "When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate." From d50308e929e1f1f0501f63a44296e318fef7d04e Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 23:25:33 -0500 Subject: [PATCH 14/31] clone_crafter.txt --- .../res/cardsfolder/upcoming/clone_crafter.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/clone_crafter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/clone_crafter.txt b/forge-gui/res/cardsfolder/upcoming/clone_crafter.txt new file mode 100644 index 00000000000..951bab1a25d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/clone_crafter.txt @@ -0,0 +1,15 @@ +Name:Clone Crafter +ManaCost:1 U +Types:Creature Human Wizard +PT:1/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME enters the battlefield, conjure a duplicate of a random creature card from your opponent's library into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." +SVar:TrigChoose:DB$ ChooseCard | Choices$ Creature.OppCtrl | ChoiceZone$ Library | AtRandom$ True | SubAbility$ DBConjure +SVar:DBConjure:DB$ MakeCard | DefinedName$ ChosenCard | Zone$ Hand | RememberMade$ True | SubAbility$ DBClearChosen +SVar:DBClearChosen:DB$ Cleanup | ClearChosenCard$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Clone Crafter's Perpetual Effect | SubAbility$ DBCleanup +SVar:PerpetualAbility:Mode$ Continuous | AddStaticAbility$ SpendAnyMana | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The conjured card perpetually gains "You may spend mana as though it were mana of any color to cast this spell." +SVar:SpendAnyMana:Mode$ Continuous | Affected$ Card.Self | EffectZone$ All | AffectedZone$ Stack | AddHiddenKeyword$ May spend mana as though it were mana of any color to cast CARDNAME | Description$ You may spend mana as though it were mana of any color to cast this spell. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:DBUpdate:DB$ UpdateRemember +Oracle:When Clone Crafter enters the battlefield, conjure a duplicate of a random creature card from your opponent's library into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." From 4cdc7ea3c8ad78b337417c5bf0da9cf3d155ba91 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 9 Dec 2021 23:26:09 -0500 Subject: [PATCH 15/31] MakeCardEffect: support "DefinedName" for Clone Crafter --- .../java/forge/game/ability/effects/MakeCardEffect.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/MakeCardEffect.java b/forge-game/src/main/java/forge/game/ability/effects/MakeCardEffect.java index a29fe2bb548..7301ce9f0d6 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/MakeCardEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/MakeCardEffect.java @@ -2,6 +2,7 @@ package forge.game.ability.effects; import forge.StaticData; import forge.game.Game; +import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.card.CardCollection; @@ -13,6 +14,7 @@ public class MakeCardEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { for (final Player player : getTargetPlayers(sa)) { + final Card source = sa.getHostCard(); final Game game = player.getGame(); String name = sa.getParamOrDefault("Name", ""); @@ -22,7 +24,9 @@ public class MakeCardEffect extends SpellAbilityEffect { } else { continue; } - + } + if (sa.hasParam("DefinedName")) { + name = AbilityUtils.getDefinedCards(source, sa.getParam("DefinedName"), sa).getFirst().getName(); } final ZoneType zone = ZoneType.smartValueOf(sa.getParamOrDefault("Zone", "Library")); int amount = sa.hasParam("Amount") ? Integer.parseInt(sa.getParam("Amount")) : 1; From 0055e661c3fe2fe8201e223fa63ea41a6e882d05 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 08:14:03 -0500 Subject: [PATCH 16/31] assemble_from_parts.txt remove unneeded --- forge-gui/res/cardsfolder/upcoming/assemble_from_parts.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/assemble_from_parts.txt b/forge-gui/res/cardsfolder/upcoming/assemble_from_parts.txt index 16da409faff..9700321209f 100644 --- a/forge-gui/res/cardsfolder/upcoming/assemble_from_parts.txt +++ b/forge-gui/res/cardsfolder/upcoming/assemble_from_parts.txt @@ -4,7 +4,7 @@ Types:Instant A:SP$ Effect | TgtZone$ Graveyard | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature card in your graveyard | StaticAbilities$ Assembly | RememberObjects$ Targeted | Name$ Assemble from Part's Perpetual Effect | Duration$ Permanent | StackDescription$ {c:Targeted} perpetually gains "{3} {B}, Exile this card from your graveyard: Shuffle it into your library. Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. Activate only as a sorcery." | SpellDescription$ Target creature card in your graveyard perpetually gains "{3} {B}, Exile this card from your graveyard: Shuffle it into your library. Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. Activate only as a sorcery." SVar:Assembly:Mode$ Continuous | Affected$ Card.IsRemembered | AddAbility$ ABShuffle | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Target creature card in your graveyard perpetually gains "{3} {B}, Exile this card from your graveyard: Shuffle it into your library. Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. Activate only as a sorcery." SVar:ABShuffle:AB$ ChangeZone | Cost$ 3 B ExileFromGrave<1/CARDNAME> | ActivationZone$ Graveyard | Origin$ All | Destination$ Library | Shuffle$ True | Defined$ Self | SubAbility$ DBCopy | SorcerySpeed$ True | StackDescription$ Shuffle CARDNAME into your library. | SpellDescription$ Shuffle it into your library. Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. Activate only as a sorcery. -SVar:DBCopy:DB$ CopyPermanent | Defined$ Self | SetPower$ 4 | SetToughness$ 4 | AddTypes$ Zombie | SetColor$ Black | SubAbility$ DBChangeZone | StackDescription$ Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. +SVar:DBCopy:DB$ CopyPermanent | Defined$ Self | SetPower$ 4 | SetToughness$ 4 | AddTypes$ Zombie | SetColor$ Black | StackDescription$ Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. SVar:AIPreference:ExileFromGraveCost$Creature.YouOwn+inZoneGraveyard DeckHas:Ability$Token & Ability$Graveyard Oracle:Target creature card in your graveyard perpetually gains "{3} {B}, Exile this card from your graveyard: Shuffle it into your library. Create a token that's a copy of it, except it's a 4/4 black Zombie in addition to its other types. Activate only as a sorcery." From 1051bea70016588aab1f463eec38c13fd80e760f Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 10:00:31 -0500 Subject: [PATCH 17/31] conductive_current.txt --- .../res/cardsfolder/upcoming/conductive_current.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/conductive_current.txt diff --git a/forge-gui/res/cardsfolder/upcoming/conductive_current.txt b/forge-gui/res/cardsfolder/upcoming/conductive_current.txt new file mode 100644 index 00000000000..b8dc2e6fbae --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/conductive_current.txt @@ -0,0 +1,12 @@ +Name:Conductive Current +ManaCost:R R R +Types:Sorcery +A:SP$ DamageAll | NumDmg$ 3 | ValidCards$ Creature | ValidDescription$ each creature. | SubAbility$ DBChoose | SpellDescription$ CARDNAME deals 3 damage to each creature. +SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Instant.YouOwn,Sorcery.YouOwn | ChoiceTitle$ Choose an instant or sorcery card in your hand | Amount$ 1 | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Name$ Conductive Current's Perpetual Effect | SubAbility$ DBCleanup +SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddReplacementEffects$ PerpDamageRep | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains "If this spell would deal noncombat damage to a permanent or player, it deals that much damage plus 2 instead." +SVar:PerpDamageRep:Event$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Permanent,Player | ReplaceWith$ DmgPlus2 | Description$ If this spell would deal noncombat damage to a permanent or player, it deals that much damage plus 2 instead. +SVar:DmgPlus2:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X +SVar:X:ReplaceCount$DamageAmount/Plus.2 +SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True +Oracle:Conductive Current deals 3 damage to each creature. Choose an instant or sorcery card in your hand. It perpetually gains "If this spell would deal noncombat damage to a permanent or player, it deals that much damage plus 2 instead." From 5afdac8f5d59cfe17c205543def99f4065512d5a Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 10:12:31 -0500 Subject: [PATCH 18/31] CardDetailUtil improve --- .../src/main/java/forge/gui/card/CardDetailUtil.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/forge-gui/src/main/java/forge/gui/card/CardDetailUtil.java b/forge-gui/src/main/java/forge/gui/card/CardDetailUtil.java index b7acea8dc74..b0b890aa802 100644 --- a/forge-gui/src/main/java/forge/gui/card/CardDetailUtil.java +++ b/forge-gui/src/main/java/forge/gui/card/CardDetailUtil.java @@ -431,14 +431,13 @@ public class CardDetailUtil { } area.append("(chosen cards: "); if (card.isImmutable() && card.getName().contains("Perpetual Effect")) { - FCollectionView chosenCards = card.getChosenCards(); - StringBuilder chosenToShow = new StringBuilder(); - for (CardView cc : chosenCards) { - if (cc.getZone() != ZoneType.Hand) { - chosenToShow.append(cc); + List chosenToShow = new ArrayList<>(); + for (CardView cc : card.getChosenCards()) { + if (!cc.getZone().isHidden()) { + chosenToShow.add(cc); } } - area.append(chosenToShow.toString()); + area.append(Lang.joinHomogenous(chosenToShow)); } else { area.append(Lang.joinHomogenous(card.getChosenCards())); } From 6421348302283cfa61bf0969d5caf69a0640fa4e Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 10:33:11 -0500 Subject: [PATCH 19/31] CardView improve --- forge-game/src/main/java/forge/game/card/CardView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index a8aeb47a6df..fb256500cdf 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -444,7 +444,7 @@ public class CardView extends GameEntityView { if (o != null) { if (o instanceof Card && c.isImmutable() && c.getName().contains("Perpetual Effect")) { Card rc = (Card) o; - if (rc.getZone().getZoneType() != ZoneType.Hand) { + if (!rc.getZone().getZoneType().isHidden()) { sb.append(o.toString()); sb.append("\r\n"); } From 6db3e69b49e4c18f7afc4f93161f1a09891d8777 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 11:31:52 -0500 Subject: [PATCH 20/31] CardProperty - add "Party" --- .../src/main/java/forge/game/card/CardProperty.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index ba3ab337c9f..6954966b7d7 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -2,6 +2,7 @@ package forge.game.card; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import forge.StaticData; import forge.card.CardDb; import forge.card.ColorSet; @@ -33,6 +34,7 @@ import org.apache.commons.lang3.StringUtils; import java.util.Collections; import java.util.List; +import java.util.Set; public class CardProperty { @@ -760,6 +762,17 @@ public class CardProperty { return false; } } + } else if (property.equals("Party")) { + boolean isParty = false; + Set partyTypes = Sets.newHashSet("Cleric", "Rogue", "Warrior", "Wizard"); + Set cTypes = card.getType().getCreatureTypes(); + for (String t : partyTypes) { + if (cTypes.contains(t)) { + isParty = true; + break; + } + } + return isParty; } else if (property.startsWith("sharesCreatureTypeWith")) { if (property.equals("sharesCreatureTypeWith")) { if (!card.sharesCreatureTypeWith(source)) { From d9ad90c1a641e3dd9c85ee42fdcb42ad53ce21f2 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 11:32:21 -0500 Subject: [PATCH 21/31] angel_of_unity.txt - update against text changes --- forge-gui/res/cardsfolder/upcoming/angel_of_unity.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/angel_of_unity.txt b/forge-gui/res/cardsfolder/upcoming/angel_of_unity.txt index d44d0585ecc..f001839b588 100644 --- a/forge-gui/res/cardsfolder/upcoming/angel_of_unity.txt +++ b/forge-gui/res/cardsfolder/upcoming/angel_of_unity.txt @@ -5,8 +5,8 @@ PT:1/3 K:Flying K:Lifelink T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME enters the battlefield or you cast a party spell, choose a party creature card in your hand. It perpetually gets +1/+1. (A party card or spell is a Cleric, Rogue, Warrior, or Wizard.) -T:Mode$ SpellCast | ValidCard$ Cleric,Rogue,Warrior,Wizard | ValidActivatingPlayer$ You | Execute$ TrigChoose | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or you cast a party spell, choose a party creature card in your hand. It perpetually gets +1/+1. (A party card or spell is a Cleric, Rogue, Warrior, or Wizard.) -SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Creature.Cleric+YouOwn,Creature.Rogue+YouOwn,Creature.Warrior+YouOwn,Creature.Wizard+YouOwn | ChoiceTitle$ Choose a party creature card in your hand | Amount$ 1 | SubAbility$ DBEffect +T:Mode$ SpellCast | ValidCard$ Card.Party | ValidActivatingPlayer$ You | Execute$ TrigChoose | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or you cast a party spell, choose a party creature card in your hand. It perpetually gets +1/+1. (A party card or spell is a Cleric, Rogue, Warrior, or Wizard.) +SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Creature.Party+YouOwn | ChoiceTitle$ Choose a party creature card in your hand | Amount$ 1 | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualP1P1 | Name$ Angel of Unity's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gets +1/+1. SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True From 33086e8565698838886cebcc5633781bb33e5965 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 13:18:55 -0500 Subject: [PATCH 22/31] discover_the_formula.txt --- .../res/cardsfolder/upcoming/discover_the_formula.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/discover_the_formula.txt diff --git a/forge-gui/res/cardsfolder/upcoming/discover_the_formula.txt b/forge-gui/res/cardsfolder/upcoming/discover_the_formula.txt new file mode 100644 index 00000000000..81c3ad361a1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/discover_the_formula.txt @@ -0,0 +1,10 @@ +Name:Discover the Formula +ManaCost:4 U U +Types:Instant +A:SP$ ChangeZone | Origin$ Library | Destination$ Hand | AtRandom$ True | NoShuffle$ True | Mandatory$ True | NoLooking$ True | NoReveal$ True | ChangeNum$ 3 | ChangeType$ Card.nonLand | SubAbility$ DBEffect | StackDescription$ SpellDescription | SpellDescription$ Seek three nonland cards, then nonland cards in your hand perpetually gain "This spell costs {1} less to cast." +SVar:DBEffect:DB$ Effect | RememberObjects$ ValidHand Card.nonLand+YouOwn | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Discover the Formula's Perpetual Effect +SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ ReduceCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Each nonland card in your hand perpetually gains "This spell costs {1} less to cast." +SVar:ReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. +SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:DBUpdate:DB$ UpdateRemember +Oracle:Seek three nonland cards, then nonland cards in your hand perpetually gain "This spell costs {1} less to cast." From 1166e9feddf02ffc95535e228f9240bef08614e4 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 14:18:11 -0500 Subject: [PATCH 23/31] CardView: look at game state of remembered card to get accurate zone --- forge-game/src/main/java/forge/game/card/CardView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index fb256500cdf..da699e64b8c 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -444,7 +444,7 @@ public class CardView extends GameEntityView { if (o != null) { if (o instanceof Card && c.isImmutable() && c.getName().contains("Perpetual Effect")) { Card rc = (Card) o; - if (!rc.getZone().getZoneType().isHidden()) { + if (!rc.getGame().getCardState(rc).getZone().getZoneType().isHidden()) { sb.append(o.toString()); sb.append("\r\n"); } From 7a65f86ec53af0971938e66fe1b5fc180e667859 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 14:19:05 -0500 Subject: [PATCH 24/31] ominous_traveler.txt fix --- .../res/cardsfolder/upcoming/ominous_traveler.txt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/ominous_traveler.txt b/forge-gui/res/cardsfolder/upcoming/ominous_traveler.txt index b551d1e5d7f..ebafd8d2a9e 100644 --- a/forge-gui/res/cardsfolder/upcoming/ominous_traveler.txt +++ b/forge-gui/res/cardsfolder/upcoming/ominous_traveler.txt @@ -4,10 +4,14 @@ Types:Creature Human PT:1/1 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraft | TriggerDescription$ When CARDNAME enters the battlefield, draft a card from CARDNAME's spellbook. That card perpetually gains "You may spend mana as though it were mana of any color to cast this spell" and "When you cast this spell, return a card named Ominous Traveler you control to its owner's hand." SVar:TrigDraft:DB$ NameCard | Draft$ True | Defined$ You | ChooseFromList$ Dominating Vampire,Vampire Socialite,Stromkirk Bloodthief,Falkenrath Pit Fighter,Wolfkin Outcast,Howlpack Piper,Tovolar; Dire Overlord,Patrician Geist,Shipwreck Sifters,Steelclad Spirit,Heron-Blessed Geist,Archghoul of Thraben,Champion of the Perished,Headless Rider,Bladestitched Skaab | SubAbility$ DBMakeCard -SVar:DBMakeCard:DB$ MakeCard | Name$ ChosenName | Zone$ Hand | RememberMade$ True | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | Triggers$ CastTrigger | StaticAbilities$ SpendAnyMana | Duration$ Permanent | Name$ Ominous Traveler's Perpetual Effect | SubAbility$ DBCleanup -SVar:SpendAnyMana:Mode$ Continuous | Affected$ Card.IsRemembered | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | AddHiddenKeyword$ May spend mana as though it were mana of any color to cast CARDNAME | Description$ You may spend mana as though it were mana of any color to cast this spell. -SVar:CastTrigger:Mode$ SpellCast | ValidCard$ Card.IsRemembered | Execute$ TrigReturn | TriggerDescription$ When you cast this spell, return a card named Ominous Traveler you control to its owner's hand. +SVar:DBMakeCard:DB$ MakeCard | Name$ ChosenName | Zone$ Hand | RememberMade$ True | SubAbility$ DBClearName +SVar:DBClearName:DB$ Cleanup | ClearNamedCard$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | Triggers$ CastTrigger | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Ominous Traveler's Perpetual Effect | SubAbility$ DBCleanup +SVar:PerpetualAbility:Mode$ Continuous | AddStaticAbility$ SpendAnyMana | AddTrigger$ CastTrigger | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The conjured card perpetually gains "You may spend mana as though it were mana of any color to cast this spell" and "When you cast this spell, return a card named Ominous Traveler you control to its owner's hand." +SVar:SpendAnyMana:Mode$ Continuous | Affected$ Card.Self | EffectZone$ All | AffectedZone$ Stack | AddHiddenKeyword$ May spend mana as though it were mana of any color to cast CARDNAME | Description$ You may spend mana as though it were mana of any color to cast this spell. +SVar:CastTrigger:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerDescription$ When you cast this spell, return a card named Ominous Traveler you control to its owner's hand. SVar:TrigReturn:DB$ ChangeZone | ChangeType$ Card.namedOminous Traveler+YouCtrl | ChangeNum$ 1 | Origin$ Battlefield | Destination$ Hand | Hidden$ True | Mandatory$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True +SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:DBUpdate:DB$ UpdateRemember Oracle:When Ominous Traveler enters the battlefield, draft a card from Ominous Traveler's spellbook. That card perpetually gains "You may spend mana as though it were mana of any color to cast this spell" and "When you cast this spell, return a card named Ominous Traveler you control to its owner's hand." From 85c09f32e40fab38584ff8305004658a76d5d501 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 14:19:44 -0500 Subject: [PATCH 25/31] tome_of_the_infinite.txt fix --- forge-gui/res/cardsfolder/t/tome_of_the_infinite.txt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/forge-gui/res/cardsfolder/t/tome_of_the_infinite.txt b/forge-gui/res/cardsfolder/t/tome_of_the_infinite.txt index 9fd7194ce02..53b4d0c8107 100644 --- a/forge-gui/res/cardsfolder/t/tome_of_the_infinite.txt +++ b/forge-gui/res/cardsfolder/t/tome_of_the_infinite.txt @@ -2,8 +2,12 @@ Name:Tome of the Infinite ManaCost:2 U Types:Legendary Artifact A:AB$ NameCard | Cost$ U T | Defined$ You | AtRandom$ True | ChooseFromList$ Light of Hope,Swords to Plowshares,Force Spike,Ponder,Dark Ritual,Duress,Assault Strobe,Lightning Bolt,Fog,Giant Growth | SubAbility$ DBConjure | StackDescription$ SpellDescription | SpellDescription$ Conjure a random card from CARDNAME's spellbook into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." -SVar:DBConjure:DB$ MakeCard | Name$ ChosenName | Zone$ Hand | RememberMade$ True | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ SpendAnyMana | Duration$ Permanent | Name$ Tome of the Infinite's Perpetual Effect | SubAbility$ DBCleanup -SVar:SpendAnyMana:Mode$ Continuous | Affected$ Card.IsRemembered | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | AddHiddenKeyword$ May spend mana as though it were mana of any color to cast CARDNAME | Description$ You may spend mana as though it were mana of any color to cast this spell. -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True +SVar:DBConjure:DB$ MakeCard | Name$ ChosenName | Zone$ Hand | RememberMade$ True | SubAbility$ DBClearName +SVar:DBClearName:DB$ Cleanup | ClearNamedCard$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Tome of the Infinite's Perpetual Effect | SubAbility$ DBCleanup +SVar:PerpetualAbility:Mode$ Continuous | AddStaticAbility$ SpendAnyMana | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The conjured card perpetually gains "You may spend mana as though it were mana of any color to cast this spell." +SVar:SpendAnyMana:Mode$ Continuous | Affected$ Card.Self | EffectZone$ All | AffectedZone$ Stack | AddHiddenKeyword$ May spend mana as though it were mana of any color to cast CARDNAME | Description$ You may spend mana as though it were mana of any color to cast this spell. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:DBUpdate:DB$ UpdateRemember Oracle:{U}, {T}: Conjure a random card from Tome of the Infinite's spellbook into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." From 7121b494a2bb6f7984ed4190165310ed38c2ac20 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 14:21:49 -0500 Subject: [PATCH 26/31] make updating Perpetual Effect Remembered better reflect if remembered card is hidden --- forge-gui/res/cardsfolder/s/sarkhan_wanderer_to_shiv.txt | 2 +- forge-gui/res/cardsfolder/upcoming/absorb_energy.txt | 2 +- forge-gui/res/cardsfolder/upcoming/antique_collector.txt | 2 +- forge-gui/res/cardsfolder/upcoming/begin_anew.txt | 2 +- forge-gui/res/cardsfolder/upcoming/clone_crafter.txt | 2 +- forge-gui/res/cardsfolder/upcoming/fearsome_whelp.txt | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/forge-gui/res/cardsfolder/s/sarkhan_wanderer_to_shiv.txt b/forge-gui/res/cardsfolder/s/sarkhan_wanderer_to_shiv.txt index d7ac8131a14..455e7a4dc0a 100644 --- a/forge-gui/res/cardsfolder/s/sarkhan_wanderer_to_shiv.txt +++ b/forge-gui/res/cardsfolder/s/sarkhan_wanderer_to_shiv.txt @@ -6,7 +6,7 @@ A:AB$ Effect | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | RememberObject SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ DragonReduceCost & DragonAltCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Dragon cards in your hand perpetually gain "This spell costs {1} less to cast," and "You may pay {X} rather than pay this spell's mana cost, where X is its mana value." SVar:DragonReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. SVar:DragonAltCost:Mode$ Continuous | CharacteristicDefining$ True | AddKeyword$ Alternative Cost:ConvertedManaCost | Description$ You may pay {X} rather than pay this spell's mana cost, where X is its mana value. -SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate SVar:DBUpdate:DB$ UpdateRemember A:AB$ MakeCard | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Name$ Shivan Dragon | Zone$ Hand | SpellDescription$ Conjure a Shivan Dragon card into your hand. A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/absorb_energy.txt b/forge-gui/res/cardsfolder/upcoming/absorb_energy.txt index 9fa9e3a9c11..5394ec2fda4 100644 --- a/forge-gui/res/cardsfolder/upcoming/absorb_energy.txt +++ b/forge-gui/res/cardsfolder/upcoming/absorb_energy.txt @@ -5,7 +5,7 @@ A:SP$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ SVar:DBEffect:DB$ Effect | ImprintCards$ Remembered | RememberObjects$ ValidHand Card.YouOwn+sharesCardTypeWith Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Absorb Energy's Perpetual Effect | SubAbility$ DBCleanup | SpellDescription$ Cards in your hand that share a card type with that spell perpetually gain "This spell costs {1} less to cast." SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ PerpetualReduceCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Cards in your hand that share a card type with that [imprinted] spell perpetually gain "This spell costs {1} less to cast." SVar:PerpetualReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. -SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate SVar:DBUpdate:DB$ UpdateRemember SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Counter target spell. Cards in your hand that share a card type with that spell perpetually gain "This spell costs {1} less to cast." diff --git a/forge-gui/res/cardsfolder/upcoming/antique_collector.txt b/forge-gui/res/cardsfolder/upcoming/antique_collector.txt index a7cbd71d72d..da1111ba074 100644 --- a/forge-gui/res/cardsfolder/upcoming/antique_collector.txt +++ b/forge-gui/res/cardsfolder/upcoming/antique_collector.txt @@ -10,7 +10,7 @@ SVar:DiesTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyar SVar:TrigShuffle:DB$ ChangeZone | Origin$ Graveyard | Destination$ Library | Shuffle$ True | Defined$ TriggeredNewCardLKICopy | RememberChanged$ True | SubAbility$ DBInvestigate SVar:DBInvestigate:DB$ Investigate | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate SVar:DBUpdate:DB$ UpdateRemember DeckHas:Ability$Investigate & Ability$Token Oracle:Antique Collector can't be blocked by creatures with power 2 or less.\nWhen Antique Collector enters the battlefield, creatures you control perpetually gain "When this creature dies, you may shuffle it into its owner's library if it's in your graveyard. If you do, investigate." diff --git a/forge-gui/res/cardsfolder/upcoming/begin_anew.txt b/forge-gui/res/cardsfolder/upcoming/begin_anew.txt index 5d13988c49f..ca8c9228eef 100644 --- a/forge-gui/res/cardsfolder/upcoming/begin_anew.txt +++ b/forge-gui/res/cardsfolder/upcoming/begin_anew.txt @@ -4,6 +4,6 @@ Types:Sorcery A:SP$ DestroyAll | ValidCards$ Creature | SubAbility$ DBEffect | SpellDescription$ Destroy all creatures. SVar:DBEffect:DB$ Effect | RememberObjects$ ValidHand Creature.YouOwn | StaticAbilities$ PerpetualP1P1 | Duration$ Permanent | Triggers$ Update | Name$ Begin Anew's Perpetual Effect | SpellDescription$ Creature cards in your hand perpetually get +1/+1. SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.IsRemembered | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Creature cards in your hand perpetually get +1/+1. -SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate SVar:DBUpdate:DB$ UpdateRemember Oracle:Destroy all creatures. Creature cards in your hand perpetually get +1/+1. diff --git a/forge-gui/res/cardsfolder/upcoming/clone_crafter.txt b/forge-gui/res/cardsfolder/upcoming/clone_crafter.txt index 951bab1a25d..862e76e58f9 100644 --- a/forge-gui/res/cardsfolder/upcoming/clone_crafter.txt +++ b/forge-gui/res/cardsfolder/upcoming/clone_crafter.txt @@ -10,6 +10,6 @@ SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ Perpet SVar:PerpetualAbility:Mode$ Continuous | AddStaticAbility$ SpendAnyMana | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The conjured card perpetually gains "You may spend mana as though it were mana of any color to cast this spell." SVar:SpendAnyMana:Mode$ Continuous | Affected$ Card.Self | EffectZone$ All | AffectedZone$ Stack | AddHiddenKeyword$ May spend mana as though it were mana of any color to cast CARDNAME | Description$ You may spend mana as though it were mana of any color to cast this spell. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate SVar:DBUpdate:DB$ UpdateRemember Oracle:When Clone Crafter enters the battlefield, conjure a duplicate of a random creature card from your opponent's library into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." diff --git a/forge-gui/res/cardsfolder/upcoming/fearsome_whelp.txt b/forge-gui/res/cardsfolder/upcoming/fearsome_whelp.txt index 03eb4e2c715..28c35e72d31 100644 --- a/forge-gui/res/cardsfolder/upcoming/fearsome_whelp.txt +++ b/forge-gui/res/cardsfolder/upcoming/fearsome_whelp.txt @@ -7,7 +7,7 @@ T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefiel SVar:TrigEffect:DB$ Effect | RememberObjects$ ValidHand Dragon.YouOwn | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Fearsome Whelp's Perpetual Effect SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ DragonReduceCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Each Dragon card in your hand perpetually gains "This spell costs {1} less to cast." SVar:DragonReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. -SVar:Update:Mode$ ChangesZone | Origin$ Hand | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate SVar:DBUpdate:DB$ UpdateRemember DeckHints:Type$Dragon Oracle:Flying\nAt the beginning of your end step, each Dragon card in your hand perpetually gains "This spell costs {1} less to cast. From e49b0fa66fd84b487110a2d405ab60d94dc7088c Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 16:47:21 -0500 Subject: [PATCH 27/31] ethereal_escort.txt --- .../res/cardsfolder/upcoming/ethereal_escort.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/ethereal_escort.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ethereal_escort.txt b/forge-gui/res/cardsfolder/upcoming/ethereal_escort.txt new file mode 100644 index 00000000000..acd2fcf188c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ethereal_escort.txt @@ -0,0 +1,14 @@ +Name:Ethereal Escort +ManaCost:2 W +Types:Creature Spirit +PT:3/3 +K:Lifelink +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, choose a card in your hand. It perpetually gains lifelink. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChoose | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, choose a card in your hand. It perpetually gains lifelink. +SVar:TrigChoose:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.YouOwn | ChoiceTitle$ Choose a card in your hand | Amount$ 1 | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualLifelink | Name$ Ethereal Escort's Perpetual Effect | Duration$ Permanent | SubAbility$ DBCleanup +SVar:PerpetualLifelink:Mode$ Continuous | Affected$ Card.ChosenCard | AddKeyword$ Lifelink | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gains lifelink. +SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True +SVar:HasAttackEffect:TRUE +DeckHas:Ability$LifeGain +Oracle:Lifelink\nWhenever Ethereal Escort enters the battlefield or attacks, choose a card in your hand. It perpetually gains lifelink. From fc5cff41e12dddc8369bc9ebc466c89dec4edac3 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 16:49:14 -0500 Subject: [PATCH 28/31] divine_purge.txt --- forge-gui/res/cardsfolder/upcoming/divine_purge.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/divine_purge.txt diff --git a/forge-gui/res/cardsfolder/upcoming/divine_purge.txt b/forge-gui/res/cardsfolder/upcoming/divine_purge.txt new file mode 100644 index 00000000000..874b96335ef --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/divine_purge.txt @@ -0,0 +1,12 @@ +Name:Divine Purge +ManaCost:1 W W +Types:Sorcery +A:SP$ ChangeZoneAll | Origin$ Battlefield | Destination$ Exile | ChangeType$ Artifact.powerLE3,Creature.powerLE3 | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile all artifacts and creatures with mana value 3 or less. They perpetually gain "This spell costs {2} more to cast" and "This permanent enters the battlefield tapped." For as long as each of them remain exiled, its owner may play it. +SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Name$ Divine Purge's Perpetual Effect | SubAbility$ DBMayPlayEffect +SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.IsRemembered | AddStaticAbility$ RaiseCost & ETBTappedDesc | EffectZone$ Command | AddKeyword$ CARDNAME enters the battlefield tapped. | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | SubAbility$ DBMayPlayEffect | Description$ The exiled cards perpetually gain "This spell costs {2} more to cast" and "This permanent enters the battlefield tapped." +SVar:RaiseCost:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | EffectZone$ All | Description$ This spell costs {2} more to cast. +SVar:ETBTappedDesc:Mode$ Continuous | Affected$ Card.Self | Description$ This permanent enters the battlefield tapped. +SVar:DBMayPlayEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ OwnerMayPlay | Duration$ Permanent | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | SpellDescription$ For as long as each of them remain exiled, its owner may play it. +SVar:OwnerMayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | AffectedZone$ Exile | MayPlay$ True | EffectZone$ Command | MayPlayPlayer$ CardOwner | Description$ For as long as each of these remain exiled, its owner may play it. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Exile all artifacts and creatures with mana value 3 or less. They perpetually gain "This spell costs {2} more to cast" and "This permanent enters the battlefield tapped." For as long as each of them remain exiled, its owner may play it. From 262903a8559469d87c531329ac87174b721a772d Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 10 Dec 2021 18:59:52 -0500 Subject: [PATCH 29/31] garruk_wrath_of_the_wilds.txt --- .../upcoming/garruk_wrath_of_the_wilds.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/garruk_wrath_of_the_wilds.txt diff --git a/forge-gui/res/cardsfolder/upcoming/garruk_wrath_of_the_wilds.txt b/forge-gui/res/cardsfolder/upcoming/garruk_wrath_of_the_wilds.txt new file mode 100644 index 00000000000..f8554b1ae2c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/garruk_wrath_of_the_wilds.txt @@ -0,0 +1,15 @@ +Name:Garruk, Wrath of the Wilds +ManaCost:2 G G +Types:Legendary Planeswalker Garruk +Loyalty:3 +A:AB$ ChooseCard | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ChoiceZone$ Hand | Choices$ Card.Creature+YouOwn | ChoiceTitle$ Choose up to one creature card in your hand | Amount$ 1 | SubAbility$ DBEffect | StackDescription$ SpellDescription | SpellDescription$ Choose a creature card in your hand. It perpetually gets +1/+1 and perpetually gains "This spell costs {1} less to cast." +SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualAbility,PerpetualP1P1 | Duration$ Permanent | Name$ Garruk, Wrath of the Wilds's Perpetual Effect | SubAbility$ DBCleanup +SVar:PerpetualAbility:Mode$ Continuous | Affected$ Card.ChosenCard | AddStaticAbility$ ReduceCost | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The chosen card perpetually gets +1/+1 and perpetually gains "This spell costs {1} less to cast." +SVar:PerpetualP1P1:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ 1 | AddToughness$ 1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Secondary$ True +SVar:ReduceCost:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | Description$ This spell costs {1} less to cast. +A:AB$ NameCard | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Draft$ True | Defined$ You | ChooseFromList$ Mosscoat Goriak,Sylvan Brushstrider,Murasa Rootgrazer,Dire Wolf Prowler,Ferocious Pup,Pestilent Wolf,Garruk’s Uprising,Dawntreader Elk,Nessian Hornbeetle,Territorial Scythecat,Trufflesnout,Wary Okapi,Scurrid Colony,Barkhide Troll,Underdark Basilisk | SubAbility$ DBMakeCard | StackDescription$ SpellDescription | SpellDescription$ Draft a card from CARDNAME's spellbook and put it onto the battlefield. +SVar:DBMakeCard:DB$ MakeCard | Name$ ChosenName | Zone$ Battlefield | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearNamedCard$ True | ClearChosenCard$ True +A:AB$ PumpAll | Cost$ SubCounter<5/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidCards$ Creature.YouCtrl | NumAtt$ +3 | NumDef$ +3 | KW$ Trample | SpellDescription$ Until end of turn, creatures you control get +3/+3 and gain trample. +Oracle:[+1]: Choose a creature card in your hand. It perpetually gets +1/+1 and perpetually gains "This spell costs {1} less to cast."\n[−1]: Draft a card from Garruk, Wrath of the Wild's spellbook and put it onto the battlefield.\n[−5]: Until end of turn, creatures you control get +3/+3 and gain trample. + From cdba64ec94a0bf137a270337d71fc241e63eb031 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Sat, 11 Dec 2021 19:04:38 -0500 Subject: [PATCH 30/31] gutmorn_pactbound_servant.txt --- .../upcoming/gutmorn_pactbound_servant.txt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/gutmorn_pactbound_servant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gutmorn_pactbound_servant.txt b/forge-gui/res/cardsfolder/upcoming/gutmorn_pactbound_servant.txt new file mode 100644 index 00000000000..41d2436f4bb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gutmorn_pactbound_servant.txt @@ -0,0 +1,20 @@ +Name:Gutmorn, Pactbound Servant +ManaCost:2 B +Types:Legendary Creature Demon +PT:1/3 +K:Flying +K:Deathtouch +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBDiscard | TriggerDescription$ Whenever CARDNAME enters the battlefield, each player discards a nonland card. +SVar:DBDiscard:DB$ Discard | Defined$ Player | DiscardValid$ Card.nonLand | Mode$ TgtChoose | AILogic$ DiscardUncastableAndExcess +T:Mode$ Discarded | TriggerZones$ Battlefield | Execute$ TrigChoosePlayer | PlayerTurn$ True | TriggerController$ TriggeredCardController | TriggerDescription$ Whenever a player discards a card during your turn, they choose another player. That player conjures a duplicate of that card into their hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." +SVar:TrigChoosePlayer:DB$ ChoosePlayer | Defined$ TriggeredCardOwner | Choices$ Player.Other | ChoiceTitle$ Choose another player | SubAbility$ DBConjure +SVar:DBConjure:DB$ MakeCard | Defined$ ChosenPlayer | DefinedName$ TriggeredCard | Zone$ Hand | RememberMade$ True | SubAbility$ DBClearChosen +SVar:DBClearChosen:DB$ Cleanup | ClearChosenPlayer$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | Triggers$ Update | Name$ Gutmorn, Pactbound Servant's Perpetual Effect | SubAbility$ DBCleanup +SVar:PerpetualAbility:Mode$ Continuous | AddStaticAbility$ SpendAnyMana | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The conjured card perpetually gains "You may spend mana as though it were mana of any color to cast this spell." +SVar:SpendAnyMana:Mode$ Continuous | Affected$ Card.Self | EffectZone$ All | AffectedZone$ Stack | AddHiddenKeyword$ May spend mana as though it were mana of any color to cast CARDNAME | Description$ You may spend mana as though it were mana of any color to cast this spell. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Update:Mode$ ChangesZone | Origin$ Any | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBUpdate +SVar:DBUpdate:DB$ UpdateRemember +DeckHas:Ability$Discard +Oracle:Flying, deathtouch\nWhenever Gutmorn, Pactbound Servant enters the battlefield, each player discards a nonland card.\nWhenever a player discards a card during your turn, they choose another player. That player conjures a duplicate of that card into their hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell." From 68caf773763b7ecfcefc8ca5c9771e09c92daa2c Mon Sep 17 00:00:00 2001 From: Northmoc Date: Sat, 11 Dec 2021 19:09:40 -0500 Subject: [PATCH 31/31] brittle_blast.txt (squee1968) --- forge-gui/res/cardsfolder/upcoming/brittle_blast.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/brittle_blast.txt diff --git a/forge-gui/res/cardsfolder/upcoming/brittle_blast.txt b/forge-gui/res/cardsfolder/upcoming/brittle_blast.txt new file mode 100644 index 00000000000..6d7be329746 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/brittle_blast.txt @@ -0,0 +1,10 @@ +Name:Brittle Blast +ManaCost:2 R +Types:Instant +A:SP$ Effect | RememberObjects$ Valid Creature.OppCtrl,Valid Planeswalker.OppCtrl | StaticAbilities$ MakeBrittle | Duration$ Permanent | Name$ Brittle Blast's Perpetual Effect | SubAbility$ DBDamage | SpellDescription$ Creatures and planeswalkers your opponents control perpetually gain "If this permanent would die, exile it instead." +SVar:MakeBrittle:Mode$ Continuous | Affected$ Card.IsRemembered | AddReplacementEffects$ BrittleExile | AddSVar$ BrittleRep | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Creatures and planeswalkers your opponents control perpetually gain "If this permanent would die, exile it instead." +SVar:BrittleExile:Event$ Moved | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | ReplaceWith$ BrittleRep | Description$ If this permanent would die, exile it instead. +SVar:BrittleRep:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature or planeswalker. +SVar:PlayMain1:TRUE +Oracle:Creatures and planeswalkers your opponents control perpetually gain "If this permanent would die, exile it instead." Brittle Blast deals 5 damage to target creature or planeswalker.