World.__init__: group player attributes to remove some redundancy
This commit is contained in:
		
							parent
							
								
									1ecb5fe40b
								
							
						
					
					
						commit
						a24fe1f3bf
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue