From a8545035c7945832ecc819e6a29eb12e10050256 Mon Sep 17 00:00:00 2001 From: swordshine Date: Sun, 11 May 2014 14:22:35 +0000 Subject: [PATCH] - Fixed Battlefield Thaumaturge not reducing cost of Polymorphous Rush --- .../main/java/forge/game/card/CardFactoryUtil.java | 12 ++++++++++++ .../java/forge/game/mana/ManaCostAdjustment.java | 13 +++++++++++-- .../res/cardsfolder/b/battlefield_thaumaturge.txt | 4 ++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 50b8aa0b102..04456858665 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -19,6 +19,7 @@ package forge.game.card; import com.google.common.base.Predicate; import com.google.common.collect.Lists; + import forge.GameCommand; import forge.card.CardCharacteristicName; import forge.card.CardType; @@ -56,6 +57,7 @@ import forge.game.zone.Zone; import forge.game.zone.ZoneType; import forge.util.Aggregates; import forge.util.Lang; + import org.apache.commons.lang3.StringUtils; import java.util.*; @@ -557,6 +559,16 @@ public class CardFactoryUtil { return 0; } + if (s.startsWith("Valid")) { + final List cards = new ArrayList(); + for (Object o : objects) { + if (o instanceof Card) { + cards.add((Card) o); + } + } + return CardFactoryUtil.handlePaid(cards, s, source); + } + int n = s.startsWith("Amount") ? objects.size() : 0; return doXMath(n, extractOperators(s), source); } diff --git a/forge-game/src/main/java/forge/game/mana/ManaCostAdjustment.java b/forge-game/src/main/java/forge/game/mana/ManaCostAdjustment.java index 0ec0b08d36c..b9561d36907 100644 --- a/forge-game/src/main/java/forge/game/mana/ManaCostAdjustment.java +++ b/forge-game/src/main/java/forge/game/mana/ManaCostAdjustment.java @@ -13,6 +13,7 @@ import forge.card.mana.ManaCostShard; import forge.game.Game; import forge.game.ability.AbilityUtils; import forge.game.card.Card; +import forge.game.card.CardFactoryUtil; import forge.game.card.CardLists; import forge.game.card.CardPredicates; import forge.game.player.Player; @@ -410,8 +411,16 @@ public class ManaCostAdjustment { if (params.containsKey("AffectedZone") && !card.isInZone(ZoneType.smartValueOf(params.get("AffectedZone")))) { return; } - // CardFactory.xCout() cannot calculate cards like Battlefield Thaumaturge - int value = AbilityUtils.calculateAmount(hostCard, amount, sa); + + int value; + if ("AffectedX".equals(amount)) { + value = CardFactoryUtil.xCount(card, hostCard.getSVar(amount)); + } else if ("X".equals(amount)){ + value = CardFactoryUtil.xCount(hostCard, hostCard.getSVar(amount)); + } else { + value = AbilityUtils.calculateAmount(hostCard, amount, sa); + } + if (!params.containsKey("Color")) { manaCost.decreaseColorlessMana(value); diff --git a/forge-gui/res/cardsfolder/b/battlefield_thaumaturge.txt b/forge-gui/res/cardsfolder/b/battlefield_thaumaturge.txt index c04aa52179a..1dcb5881dd2 100644 --- a/forge-gui/res/cardsfolder/b/battlefield_thaumaturge.txt +++ b/forge-gui/res/cardsfolder/b/battlefield_thaumaturge.txt @@ -3,8 +3,8 @@ ManaCost:1 U Types:Creature Human Wizard PT:2/1 S:Mode$ ReduceCost | ValidCard$ Instant.YouCtrl,Sorcery.YouCtrl | Type$ Spell | Amount$ ReduceCost | References$ ReduceCost | EffectZone$ All | Description$ Each instant and sorcery spell you cast costs {1} less to cast for each creature it targets. -SVar:ReduceCost:Targeted$Valid Creature -T:Mode$ SpellCast | ValidActivatingPlayer$ You | TargetsValid$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Heroic - Whenever you cast a spell that targets CARDNAME, CARDNAME gains hexproof until end of turn.. +SVar:ReduceCost:TargetedObjects$Valid Creature +T:Mode$ SpellCast | ValidActivatingPlayer$ You | TargetsValid$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Heroic - Whenever you cast a spell that targets CARDNAME, CARDNAME gains hexproof until end of turn. SVar:TrigPump:AB$ Pump | Cost$ 0 | KW$ Hexproof SVar:Picture:http://www.wizards.com/global/images/magic/general/battlefield_thaumaturge.jpg Oracle:Each instant and sorcery spell you cast costs {1} less to cast for each creature it targets.\nHeroic - Whenever you cast a spell that targets Battlefield Thaumaturge, Battlefield Thaumaturge gains hexproof until end of turn. \ No newline at end of file