From a63f46414a078e66fb29e57ec0fc7e8101cb2a9a Mon Sep 17 00:00:00 2001 From: Myrd Date: Mon, 1 Dec 2014 06:12:05 +0000 Subject: [PATCH] Fix issue where a spell's target wouldn't be correctly shown in the game log message. The problem was that by the time the log sees the spell, its target has been swapped with the stack ability. --- forge-game/src/main/java/forge/game/GameLogFormatter.java | 8 +++++++- .../java/forge/game/event/GameEventSpellAbilityCast.java | 5 ++++- forge-game/src/main/java/forge/game/zone/MagicStack.java | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameLogFormatter.java b/forge-game/src/main/java/forge/game/GameLogFormatter.java index b47b15d71b4..d55e1269066 100644 --- a/forge-game/src/main/java/forge/game/GameLogFormatter.java +++ b/forge-game/src/main/java/forge/game/GameLogFormatter.java @@ -12,6 +12,7 @@ import forge.game.zone.ZoneType; import forge.util.Lang; import forge.util.maps.MapOfLists; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map.Entry; @@ -49,7 +50,12 @@ public class GameLogFormatter extends IGameEventVisitor.Base { if (event.sa.getTargetRestrictions() != null) { sb.append(" targeting "); - for (TargetChoices ch : event.sa.getAllTargetChoices()) { + + ArrayList targets = event.sa.getAllTargetChoices(); + // Include the TargetChoices from the stack instance, since the real target choices + // are on that object at this point (see SpellAbilityStackInstance constructor). + targets.add(event.si.getTargetChoices()); + for (TargetChoices ch : targets) { if (null != ch) { sb.append(ch.getTargetedString()); } diff --git a/forge-game/src/main/java/forge/game/event/GameEventSpellAbilityCast.java b/forge-game/src/main/java/forge/game/event/GameEventSpellAbilityCast.java index eb6485fe8b7..25098b251e8 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventSpellAbilityCast.java +++ b/forge-game/src/main/java/forge/game/event/GameEventSpellAbilityCast.java @@ -1,6 +1,7 @@ package forge.game.event; import forge.game.spellability.SpellAbility; +import forge.game.spellability.SpellAbilityStackInstance; /** * TODO: Write javadoc for this type. @@ -9,10 +10,12 @@ import forge.game.spellability.SpellAbility; public class GameEventSpellAbilityCast extends GameEvent { public final SpellAbility sa; + public final SpellAbilityStackInstance si; public final boolean replicate; - public GameEventSpellAbilityCast(SpellAbility sp, boolean replicate) { + public GameEventSpellAbilityCast(SpellAbility sp, SpellAbilityStackInstance si, boolean replicate) { sa = sp; + this.si = si; this.replicate = replicate; } diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index 3f141f0af19..cbd01745a72 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -425,7 +425,7 @@ public class MagicStack /* extends MyObservable */ implements Iterable