From 28dbb309cfd541ab263bae8ad6c516a6dae4c569 Mon Sep 17 00:00:00 2001 From: Bug Hunter Date: Mon, 29 Mar 2021 08:00:21 +0000 Subject: [PATCH] TargetSelection: Fix stack peeking detection --- .../main/java/forge/player/TargetSelection.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/forge-gui/src/main/java/forge/player/TargetSelection.java b/forge-gui/src/main/java/forge/player/TargetSelection.java index 4d2558cf992..b8565bf6876 100644 --- a/forge-gui/src/main/java/forge/player/TargetSelection.java +++ b/forge-gui/src/main/java/forge/player/TargetSelection.java @@ -266,11 +266,11 @@ public class TargetSelection { } if (((CardView) chosen).getZone().equals(ZoneType.Stack)) { for (final SpellAbilityStackInstance si : game.getStack()) { - // avoid peeking own SI so target is not changed - if (si.compareToSpellAbility(ability)) { - continue; - } SpellAbility abilityOnStack = si.getSpellAbility(true); + if (si.compareToSpellAbility(ability)) { + // By peeking at stack item, target is set to its SI state. So set it back before adding targets + ability.resetTargets(); + } if (abilityOnStack.getHostCard().getView().equals(chosen)) { ability.getTargets().add(abilityOnStack); break; @@ -293,11 +293,11 @@ public class TargetSelection { final Game game = ability.getActivatingPlayer().getGame(); for (final SpellAbilityStackInstance si : game.getStack()) { - // avoid peeking own SI so target is not changed - if (si.compareToSpellAbility(ability)) { - continue; - } SpellAbility abilityOnStack = si.getSpellAbility(true); + if (si.compareToSpellAbility(ability)) { + // By peeking at stack item, target is set to its SI state. So set it back before adding targets + ability.resetTargets(); + } if (ability.canTargetSpellAbility(abilityOnStack)) { stackItemViewCache.put(si.getView(), si); selectOptions.add(si.getView());