DamageMap: use cause for Lifelink part

This commit is contained in:
Hanmac
2018-03-13 08:21:15 +01:00
parent 51655cffe6
commit 0b64ffb4c7
10 changed files with 13 additions and 13 deletions

View File

@@ -120,7 +120,7 @@ public class DamageAllEffect extends DamageBaseEffect {
if (!usedDamageMap) { if (!usedDamageMap) {
preventMap.triggerPreventDamage(false); preventMap.triggerPreventDamage(false);
damageMap.triggerDamageDoneOnce(false); damageMap.triggerDamageDoneOnce(false, sa);
} }
replaceDying(sa); replaceDying(sa);

View File

@@ -162,7 +162,7 @@ public class DamageDealEffect extends DamageBaseEffect {
if (!usedDamageMap) { if (!usedDamageMap) {
preventMap.triggerPreventDamage(false); preventMap.triggerPreventDamage(false);
// non combat damage cause lifegain there // non combat damage cause lifegain there
damageMap.triggerDamageDoneOnce(false); damageMap.triggerDamageDoneOnce(false, sa);
} }
replaceDying(sa); replaceDying(sa);
return; return;
@@ -201,7 +201,7 @@ public class DamageDealEffect extends DamageBaseEffect {
if (!usedDamageMap) { if (!usedDamageMap) {
preventMap.triggerPreventDamage(false); preventMap.triggerPreventDamage(false);
// non combat damage cause lifegain there // non combat damage cause lifegain there
damageMap.triggerDamageDoneOnce(false); damageMap.triggerDamageDoneOnce(false, sa);
} }
replaceDying(sa); replaceDying(sa);
} }

View File

@@ -131,7 +131,7 @@ public class DamageEachEffect extends DamageBaseEffect {
if (!usedDamageMap) { if (!usedDamageMap) {
preventMap.triggerPreventDamage(false); preventMap.triggerPreventDamage(false);
damageMap.triggerDamageDoneOnce(false); damageMap.triggerDamageDoneOnce(false, sa);
} }
replaceDying(sa); replaceDying(sa);

View File

@@ -24,7 +24,7 @@ public class DamageResolveEffect extends SpellAbilityEffect {
} }
// non combat damage cause lifegain there // non combat damage cause lifegain there
if (damageMap != null) { if (damageMap != null) {
damageMap.triggerDamageDoneOnce(false); damageMap.triggerDamageDoneOnce(false, sa);
} }
} }

View File

@@ -67,7 +67,7 @@ public class FightEffect extends DamageBaseEffect {
dealDamage(fighters.get(1), fighters.get(0), dmg2, damageMap, preventMap, sa); dealDamage(fighters.get(1), fighters.get(0), dmg2, damageMap, preventMap, sa);
preventMap.triggerPreventDamage(false); preventMap.triggerPreventDamage(false);
damageMap.triggerDamageDoneOnce(false); damageMap.triggerDamageDoneOnce(false, sa);
replaceDying(sa); replaceDying(sa);

View File

@@ -213,7 +213,7 @@ public class RepeatEachEffect extends SpellAbilityEffect {
sa.getPreventMap().triggerPreventDamage(false); sa.getPreventMap().triggerPreventDamage(false);
sa.setPreventMap(null); sa.setPreventMap(null);
// non combat damage cause lifegain there // non combat damage cause lifegain there
sa.getDamageMap().triggerDamageDoneOnce(false); sa.getDamageMap().triggerDamageDoneOnce(false, sa);
sa.setDamageMap(null); sa.setDamageMap(null);
} }
} }

View File

@@ -12,6 +12,7 @@ import com.google.common.collect.Sets;
import com.google.common.collect.Table; import com.google.common.collect.Table;
import forge.game.GameEntity; import forge.game.GameEntity;
import forge.game.spellability.SpellAbility;
import forge.game.trigger.TriggerType; import forge.game.trigger.TriggerType;
public class CardDamageMap extends ForwardingTable<Card, GameEntity, Integer> { public class CardDamageMap extends ForwardingTable<Card, GameEntity, Integer> {
@@ -35,7 +36,7 @@ public class CardDamageMap extends ForwardingTable<Card, GameEntity, Integer> {
} }
} }
public void triggerDamageDoneOnce(boolean isCombat) { public void triggerDamageDoneOnce(boolean isCombat, final SpellAbility sa) {
// Source -> Targets // Source -> Targets
for (Map.Entry<Card, Map<GameEntity, Integer>> e : this.rowMap().entrySet()) { for (Map.Entry<Card, Map<GameEntity, Integer>> e : this.rowMap().entrySet()) {
final Card sourceLKI = e.getKey(); final Card sourceLKI = e.getKey();
@@ -53,8 +54,7 @@ public class CardDamageMap extends ForwardingTable<Card, GameEntity, Integer> {
sourceLKI.getGame().getTriggerHandler().runTrigger(TriggerType.DamageDealtOnce, runParams, false); sourceLKI.getGame().getTriggerHandler().runTrigger(TriggerType.DamageDealtOnce, runParams, false);
if (sourceLKI.hasKeyword("Lifelink")) { if (sourceLKI.hasKeyword("Lifelink")) {
// FIXME: add sourceSA to fix Firesong and Sunspeaker sourceLKI.getController().gainLife(sum, sourceLKI, sa);
sourceLKI.getController().gainLife(sum, sourceLKI);
} }
} }
} }

View File

@@ -809,7 +809,7 @@ public class Combat {
// Run the trigger to deal combat damage once // Run the trigger to deal combat damage once
// LifeLink for Combat Damage at this place // LifeLink for Combat Damage at this place
dealtDamageTo.triggerDamageDoneOnce(true); dealtDamageTo.triggerDamageDoneOnce(true, null);
dealtDamageTo.clear(); dealtDamageTo.clear();
} }

View File

@@ -67,7 +67,7 @@ public class CostDamage extends CostPart {
payer.addDamage(decision.c, source, damageMap, preventMap, null); payer.addDamage(decision.c, source, damageMap, preventMap, null);
preventMap.triggerPreventDamage(false); preventMap.triggerPreventDamage(false);
damageMap.triggerDamageDoneOnce(false); damageMap.triggerDamageDoneOnce(false, null);
return decision.c > 0; return decision.c > 0;
} }

View File

@@ -427,7 +427,7 @@ public class HumanPlay {
p.addDamage(amount, source, damageMap, preventMap, null); p.addDamage(amount, source, damageMap, preventMap, null);
preventMap.triggerPreventDamage(false); preventMap.triggerPreventDamage(false);
damageMap.triggerDamageDoneOnce(false); damageMap.triggerDamageDoneOnce(false, null);
} }
else if (part instanceof CostPutCounter) { else if (part instanceof CostPutCounter) {
CounterType counterType = ((CostPutCounter) part).getCounter(); CounterType counterType = ((CostPutCounter) part).getCounter();