From a24fe1f3bfe6404dc51ba29f74b1048fa7cd2358 Mon Sep 17 00:00:00 2001 From: Bonta-kun <40473493+Bonta0@users.noreply.github.com> Date: Tue, 17 Dec 2019 21:09:33 +0100 Subject: [PATCH] World.__init__: group player attributes to remove some redundancy --- BaseClasses.py | 52 +++++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index c66035a3..3d9d7b14 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -27,19 +27,12 @@ class World(object): self.seed = None self.precollected_items = [] self.state = CollectionState(self) - self.required_medallions = dict([(player, ['Ether', 'Quake']) for player in range(1, players + 1)]) self._cached_entrances = None self._cached_locations = None - self._region_cache = {player: {} for player in range(1, players + 1)} self._entrance_cache = {} self._location_cache = {} self.required_locations = [] self.shuffle_bonk_prizes = False - self.swamp_patch_required = {player: False for player in range(1, players + 1)} - self.powder_patch_required = {player: False for player in range(1, players + 1)} - self.ganon_at_pyramid = {player: True for player in range(1, players + 1)} - self.ganonstower_vanilla = {player: True for player in range(1, players + 1)} - self.sewer_light_cone = {player: mode[player] == 'standard' for player in range(1, players + 1)} self.light_world_light_cone = False self.dark_world_light_cone = False self.treasure_hunt_count = 0 @@ -48,12 +41,8 @@ class World(object): self.rupoor_cost = 10 self.aga_randomness = True self.lock_aga_door_in_escape = False - self.fix_trock_doors = {player: self.shuffle[player] != 'vanilla' or self.mode[player] == 'inverted' for player in range(1, players + 1)} self.save_and_quit_from_boss = True self.accessibility = accessibility.copy() - self.fix_skullwoods_exit = {player: self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple'] for player in range(1, players + 1)} - self.fix_palaceofdarkness_exit = {player: self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple'] for player in range(1, players + 1)} - self.fix_trock_exit = {player: self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple'] for player in range(1, players + 1)} self.shuffle_ganon = shuffle_ganon self.fix_gtower_exit = self.shuffle_ganon self.can_access_trock_eyebridge = None @@ -63,30 +52,45 @@ class World(object): self.quickswap = quickswap self.fastmenu = fastmenu self.disable_music = disable_music - self.mapshuffle = {player: False for player in range(1, players + 1)} - self.compassshuffle = {player: False for player in range(1, players + 1)} - self.keyshuffle = {player: False for player in range(1, players + 1)} - self.bigkeyshuffle = {player: False for player in range(1, players + 1)} self.retro = retro.copy() self.custom = custom self.customitemarray = customitemarray self.can_take_damage = True - self.difficulty_requirements = {player: None for player in range(1, players + 1)} self.fix_fake_world = True - self.boss_shuffle = {player: 'none' for player in range(1, players + 1)} - self.enemy_shuffle = {player: 'none' for player in range(1, players + 1)} - self.enemy_health = {player: 'default' for player in range(1, players + 1)} - self.enemy_damage = {player: 'default' for player in range(1, players + 1)} - self.escape_assist = {player: [] for player in range(1, players + 1)} self.hints = hints.copy() - self.crystals_needed_for_ganon = {} - self.crystals_needed_for_gt = {} - self.open_pyramid = {player: False for player in range(1, players + 1)} self.dynamic_regions = [] self.dynamic_locations = [] self.spoiler = Spoiler(self) self.lamps_needed_for_dark_rooms = 1 + for player in range(1, players + 1): + def set_player_attr(attr, val): + self.__dict__.setdefault(attr, {})[player] = val + set_player_attr('_region_cache', {}) + set_player_attr('required_medallions', ['Ether', 'Quake']) + set_player_attr('swamp_patch_required', False) + set_player_attr('powder_patch_required', False) + set_player_attr('ganon_at_pyramid', True) + set_player_attr('ganonstower_vanilla', True) + set_player_attr('sewer_light_cone', self.mode[player] == 'standard') + set_player_attr('fix_trock_doors', self.shuffle[player] != 'vanilla' or self.mode[player] == 'inverted') + set_player_attr('fix_skullwoods_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']) + set_player_attr('fix_palaceofdarkness_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']) + set_player_attr('fix_trock_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']) + set_player_attr('mapshuffle', False) + set_player_attr('compassshuffle', False) + set_player_attr('keyshuffle', False) + set_player_attr('bigkeyshuffle', False) + set_player_attr('difficulty_requirements', None) + set_player_attr('boss_shuffle', 'none') + set_player_attr('enemy_shuffle', 'none') + set_player_attr('enemy_health', 'default') + set_player_attr('enemy_damage', 'default') + set_player_attr('escape_assist', []) + set_player_attr('crystals_needed_for_ganon', 7) + set_player_attr('crystals_needed_for_gt', 7) + set_player_attr('open_pyramid', False) + def initialize_regions(self, regions=None): for region in regions if regions else self.regions: region.world = self