From 382d3f7752309e3e0242533de7c664ccc58b525d Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 20 Dec 2018 08:27:02 +0300 Subject: [PATCH] - Unfreeze the tracker to update SpellAbilityViews for Charm, otherwise it may crash (fixes Vindictive Lich). --- .../src/main/java/forge/player/PlayerControllerHuman.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index ad37ec775f2..b26a3954f65 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -1432,11 +1432,19 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont @Override public List chooseModeForAbility(final SpellAbility sa, final int min, final int num, boolean allowRepeat) { + boolean trackerFrozen = game.getTracker().isFrozen(); + if (trackerFrozen) { + // The view tracker needs to be unfrozen to update the SpellAbilityViews at this point, or it may crash + game.getTracker().unfreeze(); + } final List possible = CharmEffect.makePossibleOptions(sa); HashMap spellViewCache = new HashMap<>(); for (AbilitySub spellAbility : possible) { spellViewCache.put(spellAbility.getView(), spellAbility); } + if (trackerFrozen) { + game.getTracker().freeze(); // refreeze if the tracker was frozen prior to this update + } final List choices = new ArrayList<>(spellViewCache.keySet()); final String modeTitle = TextUtil.concatNoSpace(sa.getActivatingPlayer().toString(), " activated ", sa.getHostCard().toString(), " - Choose a mode");