World.__init__: group player attributes to remove some redundancy

This commit is contained in:
Bonta-kun 2019-12-17 21:09:33 +01:00
parent 1ecb5fe40b
commit a24fe1f3bf
1 changed files with 28 additions and 24 deletions

View File

@ -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