diff --git a/forge-game/src/main/java/forge/game/combat/Combat.java b/forge-game/src/main/java/forge/game/combat/Combat.java index d4ccebcd13b..79359682e60 100644 --- a/forge-game/src/main/java/forge/game/combat/Combat.java +++ b/forge-game/src/main/java/forge/game/combat/Combat.java @@ -17,26 +17,9 @@ */ package forge.game.combat; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import forge.game.Game; -import forge.game.spellability.SpellAbilityStackInstance; -import org.apache.commons.lang3.tuple.Pair; - import com.google.common.base.Function; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Multimap; -import com.google.common.collect.Multimaps; -import com.google.common.collect.Table; - +import com.google.common.collect.*; +import forge.game.Game; import forge.game.GameEntity; import forge.game.GameLogEntryType; import forge.game.GameObjectMap; @@ -45,9 +28,14 @@ import forge.game.card.CardCollection; import forge.game.card.CardCollectionView; import forge.game.card.CardDamageMap; import forge.game.player.Player; +import forge.game.spellability.SpellAbilityStackInstance; import forge.game.trigger.TriggerType; import forge.util.collect.FCollection; import forge.util.collect.FCollectionView; +import org.apache.commons.lang3.tuple.Pair; + +import java.util.*; +import java.util.Map.Entry; /** *

@@ -815,11 +803,17 @@ public class Combat { c.addCombatDamage(c.getAssignedDamageMap(), dealtDamageTo, preventMap); c.clearAssignedDamage(); } - + // Run triggers for (final GameEntity ge : dealtDamageTo.columnKeySet()) { + int totalDmg = 0; + for (Integer dmgEntry : dealtDamageTo.column(ge).values()) { + totalDmg += dmgEntry; + } + final Map runParams = Maps.newHashMap(); runParams.put("DamageSources", dealtDamageTo.column(ge).keySet()); + runParams.put("DamageAmount", totalDmg); runParams.put("DamageTarget", ge); ge.getGame().getTriggerHandler().runTrigger(TriggerType.CombatDamageDoneOnce, runParams, false); } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerCombatDamageDoneOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerCombatDamageDoneOnce.java index ac8304fbd4c..c4ff3f1cde7 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerCombatDamageDoneOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerCombatDamageDoneOnce.java @@ -82,13 +82,15 @@ public class TriggerCombatDamageDoneOnce extends Trigger { public final void setTriggeringObjects(final SpellAbility sa) { sa.setTriggeringObject("Sources", this.getRunParams().get("DamageSources")); sa.setTriggeringObject("Target", this.getRunParams().get("DamageTarget")); + sa.setTriggeringObject("DamageAmount", this.getRunParams().get("DamageAmount")); } @Override public String getImportantStackObjects(SpellAbility sa) { StringBuilder sb = new StringBuilder(); - sb.append("Sources: ").append(sa.getTriggeringObject("Sources")).append(", "); + //sb.append("Sources: ").append(sa.getTriggeringObject("Sources")).append(", "); // FIXME: why does this end up empty at all times? sb.append("Target: ").append(sa.getTriggeringObject("Target")); + sb.append("Damage: ").append(sa.getTriggeringObject("DamageAmount")); return sb.toString(); } } diff --git a/forge-gui/res/cardsfolder/a/armadillo_cloak.txt b/forge-gui/res/cardsfolder/a/armadillo_cloak.txt index c77cec0cfde..2ab87efcd27 100644 --- a/forge-gui/res/cardsfolder/a/armadillo_cloak.txt +++ b/forge-gui/res/cardsfolder/a/armadillo_cloak.txt @@ -4,7 +4,8 @@ Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 1 G W | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Trample | Description$ Enchanted creature gets +2/+2 and has trample. -T:Mode$ DamageDone | ValidSource$ Card.AttachedBy | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals damage, you gain that much life. +T:Mode$ DamageDone | CombatDamage$ False | ValidSource$ Card.AttachedBy | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals damage, you gain that much life. +T:Mode$ DealtCombatDamageOnce | Secondary$ True | ValidSource$ Card.AttachedBy | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals damage, you gain that much life. SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | References$ X SVar:X:TriggerCount$DamageAmount SVar:Picture:http://www.wizards.com/global/images/magic/general/armadillo_cloak.jpg diff --git a/forge-gui/res/cardsfolder/f/fungusaur.txt b/forge-gui/res/cardsfolder/f/fungusaur.txt index 81ce19afc28..137764a173a 100644 --- a/forge-gui/res/cardsfolder/f/fungusaur.txt +++ b/forge-gui/res/cardsfolder/f/fungusaur.txt @@ -2,7 +2,8 @@ Name:Fungusaur ManaCost:3 G Types:Creature Fungus Dinosaur PT:2/2 -T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME is dealt damage, put a +1/+1 counter on it. +T:Mode$ DamageDone | CombatDamage$ False | ValidTarget$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME is dealt damage, put a +1/+1 counter on it. +T:Mode$ CombatDamageDoneOnce | Secondary$ True | ValidTarget$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME is dealt damage, put a +1/+1 counter on it. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 SVar:HasCombatEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/fungusaur.jpg