From 2738b2f79baeba207d25f15af5d0b5e08060f782 Mon Sep 17 00:00:00 2001 From: swordshine Date: Mon, 2 Jun 2014 13:58:46 +0000 Subject: [PATCH] - Added Ice Cave --- .gitattributes | 1 + .../main/java/forge/game/ability/AbilityUtils.java | 14 ++++++++++++++ .../game/ability/effects/DelayedTriggerEffect.java | 1 + .../java/forge/game/trigger/TriggerHandler.java | 5 +++-- forge-gui/res/cardsfolder/i/ice_cave.txt | 7 +++++++ 5 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 forge-gui/res/cardsfolder/i/ice_cave.txt diff --git a/.gitattributes b/.gitattributes index 5218777a91e..11347a7303b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6876,6 +6876,7 @@ forge-gui/res/cardsfolder/i/icatian_skirmishers.txt -text forge-gui/res/cardsfolder/i/icatian_store.txt svneol=native#text/plain forge-gui/res/cardsfolder/i/icatian_town.txt svneol=native#text/plain forge-gui/res/cardsfolder/i/ice_cage.txt svneol=native#text/plain +forge-gui/res/cardsfolder/i/ice_cave.txt -text forge-gui/res/cardsfolder/i/ice_floe.txt svneol=native#text/plain forge-gui/res/cardsfolder/i/ice_storm.txt svneol=native#text/plain forge-gui/res/cardsfolder/i/iceberg.txt svneol=native#text/plain diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index 5e8ba5a4ea8..fdd6e1483a3 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -1251,6 +1251,20 @@ public class AbilityUtils { if (unlessCost.equals("CardManaCost")) { cost = new Cost(source.getManaCost(), true); } + else if (unlessCost.equals("TriggeredSpellManaCost")) { + SpellAbility triggered = (SpellAbility) sa.getRootAbility().getTriggeringObject("SpellAbility"); + Card triggeredCard = triggered.getHostCard(); + if (triggeredCard.getManaCost() == null) { + cost = new Cost(ManaCost.ZERO, true); + } else { + int xCount = triggeredCard.getManaCost().countX(); + int xPaid = triggeredCard.getXManaCostPaid() * xCount; + ManaCostBeingPaid toPay = new ManaCostBeingPaid(triggeredCard.getManaCost()); + toPay.decreaseShard(ManaCostShard.X, xCount); + toPay.increaseColorlessMana(xPaid); + cost = new Cost(toPay.toManaCost(), true); + } + } else if (unlessCost.equals("ChosenManaCost")) { if (source.getChosenCard().isEmpty()) { cost = new Cost(ManaCost.ZERO, true); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java index d1598310ef0..3bed90633f2 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java @@ -68,6 +68,7 @@ public class DelayedTriggerEffect extends SpellAbilityEffect { if (mapParams.containsKey("Execute")) { SpellAbility overridingSA = AbilityFactory.getAbility(sa.getSVar(mapParams.get("Execute")), sa.getHostCard()); + overridingSA.setActivatingPlayer(sa.getActivatingPlayer()); delTrig.setOverridingAbility(overridingSA); } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index 15963c72792..905bb5a6f12 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -380,8 +380,9 @@ public class TriggerHandler { if (regtrig.getStoredTriggeredObjects() != null) { sa.setAllTriggeringObjects(regtrig.getStoredTriggeredObjects()); } - - sa.setActivatingPlayer(host.getController()); + if (sa.getActivatingPlayer() == null) { // overriding delayed trigger should have set activator + sa.setActivatingPlayer(host.getController()); + } if (triggerParams.containsKey("TriggerController")) { Player p = AbilityUtils.getDefinedPlayers(regtrig.getHostCard(), triggerParams.get("TriggerController"), sa).get(0); sa.setActivatingPlayer(p); diff --git a/forge-gui/res/cardsfolder/i/ice_cave.txt b/forge-gui/res/cardsfolder/i/ice_cave.txt new file mode 100644 index 00000000000..84710222d02 --- /dev/null +++ b/forge-gui/res/cardsfolder/i/ice_cave.txt @@ -0,0 +1,7 @@ +Name:Ice Cave +ManaCost:3 U U +Types:Enchantment +T:Mode$ SpellCast | ValidCard$ Card | TriggerZones$ Battlefield | Execute$ TrigCounter | TriggerDescription$ Whenever a player casts a spell, any other player may pay that spell's mana cost. If a player does, counter the spell. (Mana cost includes color.) +SVar:TrigCounter:DB$ Counter | Defined$ TriggeredSpellAbility | UnlessCost$ TriggeredSpellManaCost | UnlessPayer$ NonTriggeredCardController | UnlessSwitched$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/ice_cave.jpg +Oracle:Whenever a player casts a spell, any other player may pay that spell's mana cost. If a player does, counter the spell. (Mana cost includes color.)