From 0c9eef4f64bdb8ae896093bd6591fd3da94d23a9 Mon Sep 17 00:00:00 2001 From: Sloth Date: Sat, 14 Jul 2012 21:07:56 +0000 Subject: [PATCH] - Added first functionality to ReduceCostAbility. - Converted Helm of Awakening. --- res/cardsfolder/h/helm_of_awakening.txt | 2 +- src/main/java/forge/GameAction.java | 4 ++-- .../StaticAbilityCostChange.java | 19 +++++++++++++++---- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/res/cardsfolder/h/helm_of_awakening.txt b/res/cardsfolder/h/helm_of_awakening.txt index b64a3b2936b..39acc3c5520 100644 --- a/res/cardsfolder/h/helm_of_awakening.txt +++ b/res/cardsfolder/h/helm_of_awakening.txt @@ -2,7 +2,7 @@ Name:Helm of Awakening ManaCost:2 Types:Artifact Text:no text -K:CostChange:All:Less:1:Spell:All:All:NoSpecial:Spells cost 1 less to cast. +S:Mode$ ReduceCost | ValidCard$ Card | Type$ Spell | Amount$ 1 | Description$ Spells cost 1 less to cast. SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/helm_of_awakening.jpg SetInfo:VIS|Uncommon|http://magiccards.info/scans/en/vi/145.jpg diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index a6963f5012f..62f38c4702a 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -2470,12 +2470,12 @@ public class GameAction { } // Khalni Hydra // Reduce cost - /*for (Card c : cardsInPlay) { + for (Card c : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { final ArrayList staticAbilities = c.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { manaCost = stAb.applyAbility("ReduceCost", spell, manaCost); } - }*/ + } return manaCost; } // GetSpellCostChange diff --git a/src/main/java/forge/card/staticability/StaticAbilityCostChange.java b/src/main/java/forge/card/staticability/StaticAbilityCostChange.java index 12ba8f0bca8..1dd8ef468fa 100644 --- a/src/main/java/forge/card/staticability/StaticAbilityCostChange.java +++ b/src/main/java/forge/card/staticability/StaticAbilityCostChange.java @@ -20,6 +20,7 @@ package forge.card.staticability; import java.util.HashMap; import forge.Card; +import forge.card.cardfactory.CardFactoryUtil; import forge.card.mana.ManaCost; import forge.card.spellability.SpellAbility; import forge.game.player.Player; @@ -83,17 +84,17 @@ public class StaticAbilityCostChange { final Card hostCard = staticAbility.getHostCard(); final Player activator = sa.getActivatingPlayer(); final Card card = sa.getSourceCard(); + final String amount = params.get("Amount"); + final ManaCost manaCost = new ManaCost(originalCost.toString()); if (params.containsKey("ValidCard") && !card.isValid(params.get("ValidCard").split(","), hostCard.getController(), hostCard)) { return originalCost; } - if (params.containsKey("Activator") && ((activator == null) || !activator.isValid(params.get("Activator"), hostCard.getController(), hostCard))) { return originalCost; } - if (params.containsKey("Type") && params.get("Type").equals("Spell") && !sa.isSpell()) { return originalCost; } @@ -101,7 +102,17 @@ public class StaticAbilityCostChange { return originalCost; } - //modify the cost here - return originalCost; + if (!"WUGRB".contains(amount)) { + int value = 0; + if ("X".equals(amount)) { + value = CardFactoryUtil.xCount(card, card.getSVar("X")); + } else { + value = Integer.valueOf(amount); + } + + manaCost.decreaseColorlessMana(value); + } + + return manaCost; } }