Merge branch 'master' into 'master'

Fixed Vindictive Lich and SAView update for Charm in general (fixes related crashes and oddities).

See merge request core-developers/forge!1236
This commit is contained in:
Michael Kamensky
2018-12-20 05:28:24 +00:00

View File

@@ -1432,11 +1432,19 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
@Override @Override
public List<AbilitySub> chooseModeForAbility(final SpellAbility sa, final int min, final int num, public List<AbilitySub> chooseModeForAbility(final SpellAbility sa, final int min, final int num,
boolean allowRepeat) { 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<AbilitySub> possible = CharmEffect.makePossibleOptions(sa); final List<AbilitySub> possible = CharmEffect.makePossibleOptions(sa);
HashMap<SpellAbilityView, AbilitySub> spellViewCache = new HashMap<>(); HashMap<SpellAbilityView, AbilitySub> spellViewCache = new HashMap<>();
for (AbilitySub spellAbility : possible) { for (AbilitySub spellAbility : possible) {
spellViewCache.put(spellAbility.getView(), spellAbility); spellViewCache.put(spellAbility.getView(), spellAbility);
} }
if (trackerFrozen) {
game.getTracker().freeze(); // refreeze if the tracker was frozen prior to this update
}
final List<SpellAbilityView> choices = new ArrayList<>(spellViewCache.keySet()); final List<SpellAbilityView> choices = new ArrayList<>(spellViewCache.keySet());
final String modeTitle = TextUtil.concatNoSpace(sa.getActivatingPlayer().toString(), " activated ", final String modeTitle = TextUtil.concatNoSpace(sa.getActivatingPlayer().toString(), " activated ",
sa.getHostCard().toString(), " - Choose a mode"); sa.getHostCard().toString(), " - Choose a mode");