From 738319462d29fe4835b49390b78e64245f6e3a7f Mon Sep 17 00:00:00 2001 From: alwaysintreble Date: Wed, 8 Mar 2023 15:19:38 -0600 Subject: [PATCH] Spoiler: Don't double print if world overrides common options (#1505) --- BaseClasses.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index 11eb1f87..a375699f 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -2,20 +2,20 @@ from __future__ import annotations import copy import functools -import json import logging import random import secrets import typing # this can go away when Python 3.8 support is dropped from argparse import Namespace -from collections import OrderedDict, Counter, deque -from enum import unique, IntEnum, IntFlag +from collections import OrderedDict, Counter, deque, ChainMap +from enum import IntEnum, IntFlag from typing import List, Dict, Optional, Set, Iterable, Union, Any, Tuple, TypedDict, Callable, NamedTuple import NetUtils import Options import Utils + class Group(TypedDict, total=False): name: str game: str @@ -1278,12 +1278,11 @@ class Spoiler(): if self.multiworld.players > 1: outfile.write('\nPlayer %d: %s\n' % (player, self.multiworld.get_player_name(player))) outfile.write('Game: %s\n' % self.multiworld.game[player]) - for f_option, option in Options.per_game_common_options.items(): + + options = ChainMap(Options.per_game_common_options, self.multiworld.worlds[player].option_definitions) + for f_option, option in options.items(): write_option(f_option, option) - options = self.multiworld.worlds[player].option_definitions - if options: - for f_option, option in options.items(): - write_option(f_option, option) + AutoWorld.call_single(self.multiworld, "write_spoiler_header", player, outfile) if self.entrances: