SoE: fix false positives in early sphere collection (#1165)
This commit is contained in:
		
							parent
							
								
									813015e007
								
							
						
					
					
						commit
						bea8d37a3c
					
				|  | @ -216,10 +216,16 @@ class SoEWorld(World): | |||
|         r.exits = [Entrance(self.player, 'New Game', r)] | ||||
|         self.multiworld.regions += [r] | ||||
| 
 | ||||
|         def get_sphere_index(evermizer_loc): | ||||
|             """Returns 0, 1 or 2 for locations in spheres 1, 2, 3+""" | ||||
|             if len(evermizer_loc.requires) == 1 and evermizer_loc.requires[0][1] != pyevermizer.P_WEAPON: | ||||
|                 return 2 | ||||
|             return min(2, len(evermizer_loc.requires)) | ||||
| 
 | ||||
|         # group locations into spheres (1, 2, 3+ at index 0, 1, 2) | ||||
|         spheres: typing.Dict[int, typing.Dict[int, typing.List[SoELocation]]] = {} | ||||
|         for loc in _locations: | ||||
|             spheres.setdefault(min(2, len(loc.requires)), {}).setdefault(loc.type, []).append( | ||||
|             spheres.setdefault(get_sphere_index(loc), {}).setdefault(loc.type, []).append( | ||||
|                 SoELocation(self.player, loc.name, self.location_name_to_id[loc.name], r, | ||||
|                             loc.difficulty > max_difficulty)) | ||||
| 
 | ||||
|  | @ -234,6 +240,7 @@ class SoEWorld(World): | |||
|             for typ, counts in fills.items(): | ||||
|                 count = counts[self.multiworld.difficulty[self.player].value] | ||||
|                 for location in self.multiworld.random.sample(spheres[trash_sphere][typ], count): | ||||
|                     assert location.name != "Energy Core #285", "Error in sphere generation" | ||||
|                     location.progress_type = LocationProgressType.EXCLUDED | ||||
|                     # TODO: do we need to set an item rule? | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue