From e058792d9e2594c82029fee9c77dcd170ebeb4e5 Mon Sep 17 00:00:00 2001 From: Job Spijker Date: Mon, 15 Nov 2021 21:50:28 +0000 Subject: [PATCH 01/12] VOC: Ethereal Investigator --- .../cardsfolder/upcoming/ethereal_investigator.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/ethereal_investigator.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ethereal_investigator.txt b/forge-gui/res/cardsfolder/upcoming/ethereal_investigator.txt new file mode 100644 index 00000000000..2b805c2775f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ethereal_investigator.txt @@ -0,0 +1,12 @@ +Name:Ethereal Investigator +ManaCost:3 U +Types:Creature Spirit +PT:2/3 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigInvestigate | TriggerDescription$ When CARDNAME enters the battlefield, investigate X times, where X is the number of opponents you have. (To investigate, create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.") +SVar:TrigInvestigate:DB$ Investigate | Num$ X +SVar:X:PlayerCountOpponents$Amount +T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you draw your second card each turn, put a +1/+1 counter on CARDNAME. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_spirit_flying +DeckHas:Ability$Token +Oracle:Flying\nWhen Ethereal Investigator enters the battlefield, investigate X times, where X is the number of opponents you have. (To investigate, create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.")\nWhenever you draw your second card each turn, create a 1/1 white Spirit creature token with flying. \ No newline at end of file From df63dfe02c9ab4ad9331bfda1a38e89839a2868d Mon Sep 17 00:00:00 2001 From: Job Spijker Date: Mon, 15 Nov 2021 21:51:36 +0000 Subject: [PATCH 02/12] VOC: Kamber, the Plunderer --- .../cardsfolder/upcoming/kamber_the_plunderer.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/kamber_the_plunderer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kamber_the_plunderer.txt b/forge-gui/res/cardsfolder/upcoming/kamber_the_plunderer.txt new file mode 100644 index 00000000000..99d21195411 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kamber_the_plunderer.txt @@ -0,0 +1,13 @@ +Name:Kamber, the Plunderer +ManaCost:3 B +Types:Legendary Creature Vampire Rogue +PT:3/4 +K:Partner:Laurine, the Diversion +K:Lifelink +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.OppCtrl | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever a creature an opponent controls dies, you gain 1 life and create a Blood token. +SVar:TrigGainLife:DB$ GainLife | LifeAmount$ 1 | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_blood_draw | TokenOwner$ You +SVar:PlayMain1:TRUE +DeckHints:Name$Laurine, the Diversion +DeckHas:Ability$Token & Ability$Sacrifice & Type$Blood +Oracle:Partner with Laurine, the Diversion (When this creature enters the battlefield, target player may put Laurine into their hand from their library, then shuffle.)\nLifelink\nWhenever a creature an opponent controls dies, you gain 1 life and create a Blood token. (It's an artifact with "{1}, {T}, Discard a card, Sacrifice this artifact: Draw a card.") From d3b9c926143967d3d1930a203164730284e8abc5 Mon Sep 17 00:00:00 2001 From: Job Spijker Date: Mon, 15 Nov 2021 21:51:56 +0000 Subject: [PATCH 03/12] VOC: Laurine, the Diversion --- .../cardsfolder/upcoming/laurine_the_diversion.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/laurine_the_diversion.txt diff --git a/forge-gui/res/cardsfolder/upcoming/laurine_the_diversion.txt b/forge-gui/res/cardsfolder/upcoming/laurine_the_diversion.txt new file mode 100644 index 00000000000..aa1e454bccc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/laurine_the_diversion.txt @@ -0,0 +1,11 @@ +Name:Laurine, the Diversion +ManaCost:2 R +Types:Legendary Creature Human Rogue +PT:3/3 +K:Partner:Kamber, the Plunderer +K:First strike +A:AB$ Goad | Cost$ 2 Sac<1/Artifact;Creature/artifact or creature> | ValidTgts$ Creature | TgtPrompt$ Select target creature SpellDescription$ Goad target creature. +SVar:AIPreference:SacCost$Artifact.token+nonCreature,Creature.token+powerLE1,Creature.cmcLE1+powerLE1 +DeckHints:Name$Kamber, the Plunderer +DeckHas:Ability$Token & Ability$Sacrifice & Type$Blood +Oracle:Partner with Kamber, the Plunderer (When this creature enters the battlefield, target player may put Kamber into their hand from their library, then shuffle.)\nFirst strike\n{2}, Sacrifice an artifact or creature: Goad target creature. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) \ No newline at end of file From ad45e9160e8626ba359d96194f558ed8a2d3a72d Mon Sep 17 00:00:00 2001 From: Job Spijker Date: Mon, 15 Nov 2021 21:52:13 +0000 Subject: [PATCH 04/12] VOC: Olivia's Wrath --- forge-gui/res/cardsfolder/upcoming/olivias_wrath.txt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/olivias_wrath.txt diff --git a/forge-gui/res/cardsfolder/upcoming/olivias_wrath.txt b/forge-gui/res/cardsfolder/upcoming/olivias_wrath.txt new file mode 100644 index 00000000000..23f187d813a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/olivias_wrath.txt @@ -0,0 +1,7 @@ +Name:Olivia's Wrath +ManaCost:4 B +Types:Sorcery +A:SP$ PumpAll | Cost$ 4 B | ValidCards$ Creature.nonVampire | NumAtt$ -X | NumDef$ -X | IsCurse$ True | SpellDescription$ Each non-Vampire creature gets -X/-X until end of turn, where X is the number of Vampires you control. +SVar:X:Count$Valid Vampire.YouCtrl +DeckHints:Type$Vampire +Oracle:Each non-Vampire creature gets -X/-X until end of turn, where X is the number of Vampires you control. From 9ea66eea9c7ba27c77e90ff4f70bec9d61dce7ea Mon Sep 17 00:00:00 2001 From: Job Spijker Date: Mon, 15 Nov 2021 21:52:31 +0000 Subject: [PATCH 05/12] VOC: Scion of Opulence --- .../res/cardsfolder/upcoming/scion_of_opulence.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/scion_of_opulence.txt diff --git a/forge-gui/res/cardsfolder/upcoming/scion_of_opulence.txt b/forge-gui/res/cardsfolder/upcoming/scion_of_opulence.txt new file mode 100644 index 00000000000..40c9e54affb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/scion_of_opulence.txt @@ -0,0 +1,13 @@ +Name:Scion of Opulence +ManaCost:2 R +Types:Creature Vampire Noble +PT:3/1 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self,Vampire.Other+nonToken+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME or another nontoken Vampire you control dies, create a Treasure token. +SVar:TrigToken:DB$ Token | TokenScript$ c_a_treasure_sac +A:AB$ Dig | Cost$ R Sac<2/Artifact> | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | Defined$ You | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top card of your library. You may play that card this turn. +SVar:DBEffect:DB$ Effect | StaticAbilities$ EffSModeContinuous | ExileOnMoved$ Exile | RememberObjects$ Remembered | SubAbility$ DBCleanup +SVar:EffSModeContinuous:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered | MayPlay$ True | AffectedZone$ Exile | Description$ You may play that card this turn. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:AIPreference:SacCost$Artifact.token +DeckHas:Ability$Token & Ability$Sacrifice +Oracle:Whenever Scion of Opulence or another nontoken Vampire you control dies, create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.")\n{R}, Sacrifice two artifacts: Exile the top card of your library. You may play that card this turn. From 32f9d20ffde9e4eaefa3a06b1865f6ade0a1baa1 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Mon, 15 Nov 2021 21:30:19 -0500 Subject: [PATCH 06/12] midnight_arsonist.txt --- .../res/cardsfolder/upcoming/midnight_arsonist.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/midnight_arsonist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/midnight_arsonist.txt b/forge-gui/res/cardsfolder/upcoming/midnight_arsonist.txt new file mode 100644 index 00000000000..2ca1c5869c1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/midnight_arsonist.txt @@ -0,0 +1,11 @@ +Name:Midnight Arsonist +ManaCost:3 R +Types:Creature Vampire +PT:3/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME enters the battlefield, destroy up to X target artifacts without mana abilities, where X is the number of Vampires you control. +SVar:TrigDestroy:DB$ Destroy | TargetMin$ 0 | TargetMax$ X | ValidTgts$ Artifact.withoutManaAbility | TgtPrompt$ Select up to X target artifacts without mana abilities +SVar:X:Count$Valid Vampire.YouCtrl +DeckHints:Type$Vampire +AI:RemoveDeck:Random +SVar:BuffedBy:Vampire +Oracle:When Midnight Arsonist enters the battlefield, destroy up to X target artifacts without mana abilities, where X is the number of Vampires you control. From b1b2ff22996434e581c452816df08e01c66338a7 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Mon, 15 Nov 2021 21:31:06 -0500 Subject: [PATCH 07/12] support "withoutManaAbility" as CardProperty --- .../src/main/java/forge/game/card/CardProperty.java | 11 +++++++++++ .../main/java/forge/gui/card/CardScriptParser.java | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) 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 9158dbea0aa..9063f5291ad 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -20,6 +20,8 @@ import forge.game.mana.Mana; import forge.game.player.Player; import forge.game.spellability.OptionalCost; import forge.game.spellability.SpellAbility; +import forge.game.spellability.SpellAbilityPredicates; +import forge.game.trigger.Trigger; import forge.game.zone.Zone; import forge.game.zone.ZoneType; import forge.item.PaperCard; @@ -380,6 +382,15 @@ public class CardProperty { if (!card.equals(source.getEffectSource())) { return false; } + } else if (property.equals("withoutManaAbility")) { + if (Iterables.any(card.getSpellAbilities(), SpellAbilityPredicates.isManaAbility())) { + return false; + } + for (final Trigger trig : card.getTriggers()) { + if (trig.getOverridingAbility() != null && !trig.getOverridingAbility().isManaAbility()) { + return false; + } + } } else if (property.equals("CanBeSacrificedBy") && spellAbility instanceof SpellAbility) { if (!card.canBeSacrificedBy((SpellAbility) spellAbility)) { return false; diff --git a/forge-gui/src/main/java/forge/gui/card/CardScriptParser.java b/forge-gui/src/main/java/forge/gui/card/CardScriptParser.java index f374adc7930..33e4d8aee94 100644 --- a/forge-gui/src/main/java/forge/gui/card/CardScriptParser.java +++ b/forge-gui/src/main/java/forge/gui/card/CardScriptParser.java @@ -442,7 +442,7 @@ public final class CardScriptParser { "HasDevoured", "HasNotDevoured", "IsMonstrous", "IsNotMonstrous", "CostsPhyrexianMana", "IsRemembered", "IsNotRemembered", "IsImprinted", "IsNotImprinted", "hasActivatedAbilityWithTapCost", - "hasActivatedAbility", "hasManaAbility", + "hasActivatedAbility", "hasManaAbility", "withoutManaAbility", "hasNonManaActivatedAbility", "NoAbilities", "HasCounters", "wasNotCast", "ChosenType", "IsNotChosenType", "IsCommander", "IsNotCommander","IsRenowned", "IsNotRenowned"); From 4b27d719d76168b87a11651c0d90f1506eef2bbe Mon Sep 17 00:00:00 2001 From: Job Spijker Date: Tue, 16 Nov 2021 06:44:50 +0000 Subject: [PATCH 08/12] Fixed DeckHas and newline --- forge-gui/res/cardsfolder/upcoming/ethereal_investigator.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/ethereal_investigator.txt b/forge-gui/res/cardsfolder/upcoming/ethereal_investigator.txt index 2b805c2775f..49245c97345 100644 --- a/forge-gui/res/cardsfolder/upcoming/ethereal_investigator.txt +++ b/forge-gui/res/cardsfolder/upcoming/ethereal_investigator.txt @@ -8,5 +8,5 @@ SVar:TrigInvestigate:DB$ Investigate | Num$ X SVar:X:PlayerCountOpponents$Amount T:Mode$ Drawn | ValidCard$ Card.YouCtrl | Number$ 2 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you draw your second card each turn, put a +1/+1 counter on CARDNAME. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_spirit_flying -DeckHas:Ability$Token -Oracle:Flying\nWhen Ethereal Investigator enters the battlefield, investigate X times, where X is the number of opponents you have. (To investigate, create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.")\nWhenever you draw your second card each turn, create a 1/1 white Spirit creature token with flying. \ No newline at end of file +DeckHas:Ability$Token & Ability$Sacrifice +Oracle:Flying\nWhen Ethereal Investigator enters the battlefield, investigate X times, where X is the number of opponents you have. (To investigate, create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.")\nWhenever you draw your second card each turn, create a 1/1 white Spirit creature token with flying. From dbec0b983b974cc2515311d2ba33e1492043f9f0 Mon Sep 17 00:00:00 2001 From: Job Spijker Date: Tue, 16 Nov 2021 06:45:40 +0000 Subject: [PATCH 09/12] Fixed DeckHas --- forge-gui/res/cardsfolder/upcoming/kamber_the_plunderer.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/kamber_the_plunderer.txt b/forge-gui/res/cardsfolder/upcoming/kamber_the_plunderer.txt index 99d21195411..3c8946aa14b 100644 --- a/forge-gui/res/cardsfolder/upcoming/kamber_the_plunderer.txt +++ b/forge-gui/res/cardsfolder/upcoming/kamber_the_plunderer.txt @@ -9,5 +9,5 @@ SVar:TrigGainLife:DB$ GainLife | LifeAmount$ 1 | SubAbility$ DBToken SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_blood_draw | TokenOwner$ You SVar:PlayMain1:TRUE DeckHints:Name$Laurine, the Diversion -DeckHas:Ability$Token & Ability$Sacrifice & Type$Blood +DeckHas:Ability$Token & Ability$Sacrifice & Type$Blood & Ability$LifeGain Oracle:Partner with Laurine, the Diversion (When this creature enters the battlefield, target player may put Laurine into their hand from their library, then shuffle.)\nLifelink\nWhenever a creature an opponent controls dies, you gain 1 life and create a Blood token. (It's an artifact with "{1}, {T}, Discard a card, Sacrifice this artifact: Draw a card.") From 03e49e92e63104e9e5a56c9cd9fb716f2996d305 Mon Sep 17 00:00:00 2001 From: Job Spijker Date: Tue, 16 Nov 2021 06:46:34 +0000 Subject: [PATCH 10/12] Fixed DeckHas and newline --- forge-gui/res/cardsfolder/upcoming/laurine_the_diversion.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/laurine_the_diversion.txt b/forge-gui/res/cardsfolder/upcoming/laurine_the_diversion.txt index aa1e454bccc..6549a76b709 100644 --- a/forge-gui/res/cardsfolder/upcoming/laurine_the_diversion.txt +++ b/forge-gui/res/cardsfolder/upcoming/laurine_the_diversion.txt @@ -7,5 +7,5 @@ K:First strike A:AB$ Goad | Cost$ 2 Sac<1/Artifact;Creature/artifact or creature> | ValidTgts$ Creature | TgtPrompt$ Select target creature SpellDescription$ Goad target creature. SVar:AIPreference:SacCost$Artifact.token+nonCreature,Creature.token+powerLE1,Creature.cmcLE1+powerLE1 DeckHints:Name$Kamber, the Plunderer -DeckHas:Ability$Token & Ability$Sacrifice & Type$Blood -Oracle:Partner with Kamber, the Plunderer (When this creature enters the battlefield, target player may put Kamber into their hand from their library, then shuffle.)\nFirst strike\n{2}, Sacrifice an artifact or creature: Goad target creature. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) \ No newline at end of file +DeckHas:Ability$Sacrifice +Oracle:Partner with Kamber, the Plunderer (When this creature enters the battlefield, target player may put Kamber into their hand from their library, then shuffle.)\nFirst strike\n{2}, Sacrifice an artifact or creature: Goad target creature. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.) From a9e1b596bd8b790b60ffdcaf69c124d993c9b6f7 Mon Sep 17 00:00:00 2001 From: Bug Hunter Date: Tue, 16 Nov 2021 09:39:54 +0000 Subject: [PATCH 11/12] Update forge-gui/res/cardsfolder/upcoming/reclusive_taxidermist.txt --- forge-gui/res/cardsfolder/upcoming/reclusive_taxidermist.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/reclusive_taxidermist.txt b/forge-gui/res/cardsfolder/upcoming/reclusive_taxidermist.txt index 4d55a7c4807..243f02a179a 100644 --- a/forge-gui/res/cardsfolder/upcoming/reclusive_taxidermist.txt +++ b/forge-gui/res/cardsfolder/upcoming/reclusive_taxidermist.txt @@ -2,7 +2,7 @@ Name:Reclusive Taxidermist ManaCost:1 G Types:Creature Human Druid PT:1/2 -S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 3 | AddToughness$ 2 | IsPresent$ Creature | PresentCompare$ GE4 | PresentZone$ Graveyard | Description$ CARDNAME gets +3/+2 as long as there are four or more creature cards in your graveyard. +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 3 | AddToughness$ 2 | IsPresent$ Creature.YouOwn | PresentCompare$ GE4 | PresentZone$ Graveyard | Description$ CARDNAME gets +3/+2 as long as there are four or more creature cards in your graveyard. A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color. DeckHints:Ability$Graveyard & Ability$Discard Oracle:Reclusive Taxidermist gets +3/+2 as long as there are four or more creature cards in your graveyard.\n{T}: Add one mana of any color. From 67342fd44c73040d30eac87197c3570084b972b5 Mon Sep 17 00:00:00 2001 From: Austere Grim Date: Tue, 16 Nov 2021 18:16:18 +0000 Subject: [PATCH 12/12] Update readme, with discord invite link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 26c3d1e5e0a..985fff0aa88 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Dev instructions here: [Getting Started](https://git.cardforge.org/core-developers/forge/-/wikis/(SM-autoconverted)-how-to-get-started-developing-forge) (Somewhat outdated) -Discord channel [here](https://discordapp.com/channels/267367946135928833/267742313390931968) +Discord channel [here](https://discord.gg/fWfNgCUNRq) ## Requirements / Tools