From 5a9faae08eed250523de904ca390c9c9ba26f8e1 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Wed, 12 Apr 2023 21:19:53 -0400 Subject: [PATCH] MOM: inga_and_esika.txt + support --- .../src/main/java/forge/game/ForgeScript.java | 18 +++++++++++++----- .../cardsfolder/upcoming/inga_and_esika.txt | 9 +++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/inga_and_esika.txt diff --git a/forge-game/src/main/java/forge/game/ForgeScript.java b/forge-game/src/main/java/forge/game/ForgeScript.java index 2ecb44a56e8..b11d9040420 100644 --- a/forge-game/src/main/java/forge/game/ForgeScript.java +++ b/forge-game/src/main/java/forge/game/ForgeScript.java @@ -254,18 +254,26 @@ public class ForgeScript { int y = AbilityUtils.calculateAmount(source, k[1].substring(2), spellAbility); return Expressions.compare(sa.getTotalManaSpent(), comparator, y); } else if (property.startsWith("ManaFrom")) { - final String fromWhat = property.substring(8); - boolean found = false; + String fromWhat = property.substring(8); + String[] parts = null; + if (fromWhat.contains("_")) { + parts = fromWhat.split("_"); + fromWhat = parts[0]; + } + int toFind = parts != null ? AbilityUtils.calculateAmount(source, parts[1], spellAbility) : 1; + int found = 0; for (Mana m : sa.getPayingMana()) { final Card manaSource = m.getSourceCard(); if (manaSource != null) { if (manaSource.isValid(fromWhat, sourceController, source, spellAbility)) { - found = true; - break; + found++; + if (found == toFind) { + break; + } } } } - return found; + return (found == toFind); } else if (property.equals("MayPlaySource")) { StaticAbility m = sa.getMayPlay(); if (m == null) { diff --git a/forge-gui/res/cardsfolder/upcoming/inga_and_esika.txt b/forge-gui/res/cardsfolder/upcoming/inga_and_esika.txt new file mode 100644 index 00000000000..865acf01cc2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/inga_and_esika.txt @@ -0,0 +1,9 @@ +Name:Inga and Esika +ManaCost:2 G U +Types:Legendary Creature Human God +PT:4/4 +S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddAbility$ Mana | AddKeyword$ Vigilance | Description$ Creatures you control have vigilance and "{T}: Add one mana of any color. Spend this mana only to cast a creature spell." +SVar:Mana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | RestrictValid$ Spell.Creature | SpellDescription$ Add one mana of any color. Spend this mana only to cast a creature spell. +T:Mode$ SpellCast | ValidCard$ Creature | ValidSA$ Spell.ManaFromCreature_3 | ValidActivatingPlayer$ You | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a creature spell, if three or more mana from creatures was spent to cast it, draw a card. +SVar:TrigDraw:DB$ Draw +Oracle:Creatures you control have vigilance and "{T}: Add one mana of any color. Spend this mana only to cast a creature spell."\nWhenever you cast a creature spell, if three or more mana from creatures was spent to cast it, draw a card.