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