From 32f9d20ffde9e4eaefa3a06b1865f6ade0a1baa1 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Mon, 15 Nov 2021 21:30:19 -0500 Subject: [PATCH 1/2] 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 2/2] 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");