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");