From 416d6746daaf5731c19c110af07de0fbb3622bf7 Mon Sep 17 00:00:00 2001 From: jeffwadsworth Date: Wed, 22 Feb 2012 20:49:54 +0000 Subject: [PATCH] - Added a corrected Ib Halfheart, Goblin Tactician. It now carries the trigger, etc. --- .../i/ib_halfheart_goblin_tactician.txt | 13 ++++++------- .../abilityfactory/AbilityFactorySacrifice.java | 14 ++++++++++---- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/res/cardsfolder/i/ib_halfheart_goblin_tactician.txt b/res/cardsfolder/i/ib_halfheart_goblin_tactician.txt index 55617ee25c4..a99eb504ece 100644 --- a/res/cardsfolder/i/ib_halfheart_goblin_tactician.txt +++ b/res/cardsfolder/i/ib_halfheart_goblin_tactician.txt @@ -4,13 +4,12 @@ Types:Legendary Creature Goblin Advisor Text:no text PT:3/2 A:AB$ Token | Cost$ Sac<2/Mountain> | TokenAmount$ 2 | TokenPower$ 1 | TokenName$ Goblin | TokenToughness$ 1 | TokenColors$ Red | TokenTypes$ Creature,Goblin | TokenOwner$ You -S:Mode$ Continuous | Affected$ Goblin.YouCtrl+Other | AddTrigger$ HalfHeartTrigGetsBlocked | AddSVar$ HalfHeartTrigSacrifice & HalfHeartDBDamage & HalfHeartGoblinX | Description$ Whenever another Goblin you control becomes blocked, sacrifice it. If you do, it deals 4 damage to each creature blocking it. Sacrifice two Mountains: Put two 1/1 red Goblin creature tokens onto the battlefield. -SVar:HalfHeartTrigGetsBlocked:Mode$ Blocks | ValidCard$ Creature.YouDontCtrl | ValidBlocked$ Card.Self | Execute$ HalfHeartTrigSacrifice | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME becomes blocked, sacrifice it. If you do, it deals 4 damage to each creature blocking it. -SVar:HalfHeartTrigSacrifice:AB$ Sacrifice | Cost$ 0 | SacValid$ Card.Self | RememberSacrificed$ True | ConditionCheckSVar$ HalfHeartGoblinX | ConditionSVarCompare$ EQ0 | SubAbility$ HalfHeartDBDamage -SVar:HalfHeartDBDamage:DB$ DealDamage | DamageSource$ TriggeredAttacker | NumDmg$ 4 | Defined$ TriggeredBlocker | ConditionCheckSVar$ HalfHeartGoblinX | ConditionSVarCompare$ EQ1 -SVar:HalfHeartGoblinX:Remembered$Valid Card.Self +T:Mode$ Blocks | ValidCard$ Creature.YouDontCtrl | ValidBlocked$ Goblin.YouCtrl+Other | Execute$ HalfHeartTrigSacrifice | TriggerZones$ Battlefield | TriggerDescription$ Whenever another Goblin you control becomes blocked, sacrifice it. If you do, it deals 4 damage to each creature blocking it. +SVar:HalfHeartTrigSacrifice:AB$ Sacrifice | Cost$ 0 | SacValid$ TriggeredAttacker | RememberSacrificed$ True | SubAbility$ HalfHeartDBDamage +SVar:HalfHeartDBDamage:DB$ DealDamage | DamageSource$ TriggeredAttacker | NumDmg$ 4 | Defined$ TriggeredBlocker | ConditionCheckSVar$ GoblinX | ConditionSVarCompare$ EQ1 +T:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ You | Execute$ DBCleanup | TriggerZones$ Battlefield | Static$ True | Secondary$ True | TriggerDescription$ Clear Remembered List +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:GoblinX:TriggeredAttacker$Valid Card.IsRemembered SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/ib_halfheart_goblin_tactician.jpg -Oracle:Whenever another Goblin you control becomes blocked, sacrifice it. If you do, it deals 4 damage to each creature blocking it.\nSacrifice two Mountains: Put two 1/1 red Goblin creature tokens onto the battlefield. -SetInfo:TSP|Rare|http://magiccards.info/scans/en/ts/163.jpg End \ No newline at end of file diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java index dd6ed3337a6..8ad441cc1ed 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java @@ -437,6 +437,7 @@ public class AbilityFactorySacrifice { } String valid = params.get("SacValid"); + System.out.println("Valid = " + valid); if (valid == null) { valid = "Self"; } @@ -450,9 +451,6 @@ public class AbilityFactorySacrifice { final boolean destroy = params.containsKey("Destroy"); final boolean remSacrificed = params.containsKey("RememberSacrificed"); - if (remSacrificed) { - card.clearRemembered(); - } if (valid.equals("Self")) { if (AllZone.getZoneOf(card).is(Constant.Zone.Battlefield)) { @@ -471,7 +469,7 @@ public class AbilityFactorySacrifice { card.addRemembered(toSac); } } - } else if (valid.equals("TriggeredCard")) { + } else if (valid.equals("TriggeredCard")) { final Card equipee = (Card) sa.getTriggeringObject("Card"); if (tgts.contains(card.getController()) && AllZoneUtil.isCardInPlay(equipee)) { Singletons.getModel().getGameAction().sacrifice(equipee); @@ -479,6 +477,14 @@ public class AbilityFactorySacrifice { card.addRemembered(equipee); } } + } else if (valid.equals("TriggeredAttacker")) { + final Card toSac = (Card) sa.getTriggeringObject("Attacker"); + if (AllZone.getZoneOf(card).is(Constant.Zone.Battlefield) && AllZoneUtil.isCardInPlay(toSac)) { + Singletons.getModel().getGameAction().sacrifice(toSac); + if (remSacrificed) { + card.addRemembered(toSac); + } + } } else { CardList sacList = null; for (final Player p : tgts) {