diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index 99fdd382d11..4409b490ee6 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -2196,16 +2196,18 @@ public class GameAction { } } - // Remember objects as needed - final Card sourceLKI = cause.getHostCard().getGame().getChangeZoneLKIInfo(cause.getHostCard()); - final boolean rememberCard = cause.hasParam("RememberDamaged") || cause.hasParam("RememberDamagedCreature"); - final boolean rememberPlayer = cause.hasParam("RememberDamaged") || cause.hasParam("RememberDamagedPlayer"); - if (rememberCard || rememberPlayer) { - for (GameEntity e : damageMap.row(sourceLKI).keySet()) { - if (e instanceof Card && rememberCard) { - cause.getHostCard().addRemembered(e); - } else if (e instanceof Player && rememberPlayer) { - cause.getHostCard().addRemembered(e); + if (cause != null) { + // Remember objects as needed + final Card sourceLKI = cause.getHostCard().getGame().getChangeZoneLKIInfo(cause.getHostCard()); + final boolean rememberCard = cause.hasParam("RememberDamaged") || cause.hasParam("RememberDamagedCreature"); + final boolean rememberPlayer = cause.hasParam("RememberDamaged") || cause.hasParam("RememberDamagedPlayer"); + if (rememberCard || rememberPlayer) { + for (GameEntity e : damageMap.row(sourceLKI).keySet()) { + if (e instanceof Card && rememberCard) { + cause.getHostCard().addRemembered(e); + } else if (e instanceof Player && rememberPlayer) { + cause.getHostCard().addRemembered(e); + } } } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageResolveEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageResolveEffect.java index 4ecb1cbd2a4..c96a27937fc 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageResolveEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageResolveEffect.java @@ -22,6 +22,8 @@ public class DamageResolveEffect extends SpellAbilityEffect { GameEntityCounterTable counterTable = sa.getCounterTable(); sa.getHostCard().getGame().getAction().dealDamage(false, damageMap, preventMap, counterTable, sa); + + replaceDying(sa); } /* (non-Javadoc) diff --git a/forge-gui/res/cardsfolder/s/serpentine_spike.txt b/forge-gui/res/cardsfolder/s/serpentine_spike.txt index e611ed4f554..110db3105dd 100644 --- a/forge-gui/res/cardsfolder/s/serpentine_spike.txt +++ b/forge-gui/res/cardsfolder/s/serpentine_spike.txt @@ -2,10 +2,10 @@ Name:Serpentine Spike ManaCost:5 R R Types:Sorcery K:Devoid -A:SP$ DealDamage | Cost$ 5 R R | ValidTgts$ Creature | TgtPrompt$ Select target creature to deal 2 damage to | NumDmg$ 2 | RememberDamaged$ True | DamageMap$ True | SubAbility$ DBDamageTwo | SpellDescription$ CARDNAME deals 2 damage to target creature, 3 damage to another target creature, and 4 damage to a third target creature. If a creature dealt damage this way would die this turn, exile it instead. -SVar:DBDamageTwo:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select another target creature to deal 3 damage to | NumDmg$ 3 | RememberDamaged$ True | TargetUnique$ True | SubAbility$ DBDamageThree -SVar:DBDamageThree:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select another target creature to deal 4 damage to | NumDmg$ 4 | RememberDamaged$ True | TargetUnique$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBDamageResolve -SVar:DBDamageResolve:DB$ DamageResolve | SubAbility$ DBCleanup +A:SP$ DealDamage | Cost$ 5 R R | ValidTgts$ Creature | TgtPrompt$ Select target creature to deal 2 damage to | NumDmg$ 2 | DamageMap$ True | SubAbility$ DBDamageTwo | SpellDescription$ CARDNAME deals 2 damage to target creature, 3 damage to another target creature, and 4 damage to a third target creature. If a creature dealt damage this way would die this turn, exile it instead. +SVar:DBDamageTwo:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select another target creature to deal 3 damage to | NumDmg$ 3 | TargetUnique$ True | SubAbility$ DBDamageThree +SVar:DBDamageThree:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select another target creature to deal 4 damage to | NumDmg$ 4 | TargetUnique$ True | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/serpentine_spike.jpg Oracle:Devoid (This card has no color.)\nSerpentine Spike deals 2 damage to target creature, 3 damage to another target creature, and 4 damage to a third target creature. If a creature dealt damage this way would die this turn, exile it instead.