Core: replace Location.event with advancement property (#2871)
				
					
				
			This commit is contained in:
		| @@ -253,10 +253,8 @@ def generate_itempool(world): | ||||
|         region.locations.append(loc) | ||||
|  | ||||
|         multiworld.push_item(loc, item_factory('Triforce', world), False) | ||||
|         loc.event = True | ||||
|         loc.locked = True | ||||
|  | ||||
|     multiworld.get_location('Ganon', player).event = True | ||||
|     multiworld.get_location('Ganon', player).locked = True | ||||
|     event_pairs = [ | ||||
|         ('Agahnim 1', 'Beat Agahnim 1'), | ||||
| @@ -273,7 +271,7 @@ def generate_itempool(world): | ||||
|         location = multiworld.get_location(location_name, player) | ||||
|         event = item_factory(event_name, world) | ||||
|         multiworld.push_item(location, event, False) | ||||
|         location.event = location.locked = True | ||||
|         location.locked = True | ||||
|  | ||||
|  | ||||
|     # set up item pool | ||||
|   | ||||
| @@ -1193,7 +1193,6 @@ def set_trock_key_rules(world, player): | ||||
|                     item = item_factory('Small Key (Turtle Rock)', world.worlds[player]) | ||||
|                     location = world.get_location('Turtle Rock - Big Key Chest', player) | ||||
|                     location.place_locked_item(item) | ||||
|                     location.event = True | ||||
|                     toss_junk_item(world, player) | ||||
|  | ||||
|     if world.accessibility[player] != 'locations': | ||||
|   | ||||
| @@ -10,10 +10,6 @@ class AdvData(typing.NamedTuple): | ||||
| class ChecksFinderAdvancement(Location): | ||||
|     game: str = "ChecksFinder" | ||||
|  | ||||
|     def __init__(self, player: int, name: str, address: typing.Optional[int], parent): | ||||
|         super().__init__(player, name, address, parent) | ||||
|         self.event = not address | ||||
|  | ||||
|  | ||||
| advancement_table = { | ||||
|     "Tile 1": AdvData(81000, 'Board'), | ||||
|   | ||||
| @@ -61,7 +61,7 @@ class DLCqworld(World): | ||||
|         self.precollect_coinsanity() | ||||
|         locations_count = len([location | ||||
|                                for location in self.multiworld.get_locations(self.player) | ||||
|                                if not location.event]) | ||||
|                                if not location.advancement]) | ||||
|  | ||||
|         items_to_exclude = [excluded_items | ||||
|                             for excluded_items in self.multiworld.precollected_items[self.player]] | ||||
|   | ||||
| @@ -10,7 +10,7 @@ def get_all_item_names(multiworld: MultiWorld) -> List[str]: | ||||
|  | ||||
|  | ||||
| def get_all_location_names(multiworld: MultiWorld) -> List[str]: | ||||
|     return [location.name for location in multiworld.get_locations() if not location.event] | ||||
|     return [location.name for location in multiworld.get_locations() if not location.advancement] | ||||
|  | ||||
|  | ||||
| def assert_victory_exists(tester: DLCQuestTestBase, multiworld: MultiWorld): | ||||
| @@ -38,5 +38,5 @@ def assert_can_win(tester: DLCQuestTestBase, multiworld: MultiWorld): | ||||
|  | ||||
|  | ||||
| def assert_same_number_items_locations(tester: DLCQuestTestBase, multiworld: MultiWorld): | ||||
|     non_event_locations = [location for location in multiworld.get_locations() if not location.event] | ||||
|     non_event_locations = [location for location in multiworld.get_locations() if not location.advancement] | ||||
|     tester.assertEqual(len(multiworld.itempool), len(non_event_locations)) | ||||
| @@ -90,7 +90,7 @@ def exclusion_rules(multiworld: MultiWorld, player: int, exclude_locations: typi | ||||
|             if loc_name not in multiworld.worlds[player].location_name_to_id: | ||||
|                 raise Exception(f"Unable to exclude location {loc_name} in player {player}'s world.") from e | ||||
|         else: | ||||
|             if not location.event: | ||||
|             if not location.advancement: | ||||
|                 location.progress_type = LocationProgressType.EXCLUDED | ||||
|             else: | ||||
|                 logging.warning(f"Unable to exclude location {loc_name} in player {player}'s world.") | ||||
|   | ||||
| @@ -60,13 +60,11 @@ class LinksAwakeningLocation(Location): | ||||
|  | ||||
|     def __init__(self, player: int, region, ladxr_item): | ||||
|         name = meta_to_name(ladxr_item.metadata) | ||||
|  | ||||
|         self.event = ladxr_item.event is not None | ||||
|         if self.event: | ||||
|             name = ladxr_item.event | ||||
|  | ||||
|         address = None | ||||
|         if not self.event: | ||||
|  | ||||
|         if ladxr_item.event is not None: | ||||
|             name = ladxr_item.event | ||||
|         else: | ||||
|             address = locations_to_id[name] | ||||
|         super().__init__(player, name, address) | ||||
|         self.parent_region = region | ||||
|   | ||||
| @@ -154,7 +154,7 @@ class LinksAwakeningWorld(World): | ||||
|         # Place RAFT, other access events | ||||
|         for region in regions: | ||||
|             for loc in region.locations: | ||||
|                 if loc.event: | ||||
|                 if loc.address is None: | ||||
|                     loc.place_locked_item(self.create_event(loc.ladxr_item.event)) | ||||
|          | ||||
|         # Connect Windfish -> Victory | ||||
|   | ||||
| @@ -9,11 +9,6 @@ from BaseClasses import Location | ||||
| class MeritousLocation(Location): | ||||
|     game: str = "Meritous" | ||||
|  | ||||
|     def __init__(self, player: int, name: str = '', address: int = None, parent=None): | ||||
|         super(MeritousLocation, self).__init__(player, name, address, parent) | ||||
|         if "Wervyn Anixil" in name or "Defeat" in name: | ||||
|             self.event = True | ||||
|  | ||||
|  | ||||
| offset = 593_000 | ||||
|  | ||||
|   | ||||
| @@ -44,14 +44,11 @@ class OOTLocation(Location): | ||||
|         self.vanilla_item = vanilla_item | ||||
|         if filter_tags is None:  | ||||
|             self.filter_tags = None | ||||
|         else:  | ||||
|         else: | ||||
|             self.filter_tags = list(filter_tags) | ||||
|         self.never = False # no idea what this does | ||||
|         self.disabled = DisableType.ENABLED | ||||
|  | ||||
|         if type == 'Event':  | ||||
|             self.event = True | ||||
|  | ||||
|     @property | ||||
|     def dungeon(self): | ||||
|         return self.parent_region.dungeon | ||||
|   | ||||
| @@ -717,7 +717,6 @@ class OOTWorld(World): | ||||
|             item = self.create_item(name, allow_arbitrary_name=True) | ||||
|         self.multiworld.push_item(location, item, collect=False) | ||||
|         location.locked = True | ||||
|         location.event = True | ||||
|         if name not in item_table: | ||||
|             location.internal = True | ||||
|         return item | ||||
| @@ -842,7 +841,7 @@ class OOTWorld(World): | ||||
|         all_state.sweep_for_events(locations=all_locations) | ||||
|         reachable = self.multiworld.get_reachable_locations(all_state, self.player) | ||||
|         unreachable = [loc for loc in all_locations if | ||||
|                        (loc.internal or loc.type == 'Drop') and loc.event and loc.locked and loc not in reachable] | ||||
|                        (loc.internal or loc.type == 'Drop') and loc.address is None and loc.locked and loc not in reachable] | ||||
|         for loc in unreachable: | ||||
|             loc.parent_region.locations.remove(loc) | ||||
|         # Exception: Sell Big Poe is an event which is only reachable if Bottle with Big Poe is in the item pool. | ||||
| @@ -972,7 +971,6 @@ class OOTWorld(World): | ||||
|                     for location in song_locations: | ||||
|                         location.item = None | ||||
|                         location.locked = False | ||||
|                         location.event = False | ||||
|                 else: | ||||
|                     break | ||||
|  | ||||
|   | ||||
| @@ -115,8 +115,6 @@ class Overcooked2World(World): | ||||
|             region, | ||||
|         ) | ||||
|  | ||||
|         location.event = is_event | ||||
|  | ||||
|         if priority: | ||||
|             location.progress_type = LocationProgressType.PRIORITY | ||||
|         else: | ||||
|   | ||||
| @@ -265,7 +265,6 @@ class PokemonRedBlueWorld(World): | ||||
|                         state = sweep_from_pool(multiworld.state, progitempool + unplaced_items) | ||||
|                     if (not item.advancement) or state.can_reach(loc, "Location", loc.player): | ||||
|                         multiworld.push_item(loc, item, False) | ||||
|                         loc.event = item.advancement | ||||
|                         fill_locations.remove(loc) | ||||
|                         break | ||||
|                     else: | ||||
|   | ||||
| @@ -197,7 +197,6 @@ def process_pokemon_locations(self): | ||||
|                 mon = randomize_pokemon(self, original_mon, mons_list, 2, self.multiworld.random) | ||||
|             placed_mons[mon] += 1 | ||||
|             location.item = self.create_item(mon) | ||||
|             location.event = True | ||||
|             location.locked = True | ||||
|             location.item.location = location | ||||
|             locations.append(location) | ||||
| @@ -269,7 +268,6 @@ def process_pokemon_locations(self): | ||||
|         for slot in encounter_slots: | ||||
|             location = self.multiworld.get_location(slot.name, self.player) | ||||
|             location.item = self.create_item(slot.original_item) | ||||
|             location.event = True | ||||
|             location.locked = True | ||||
|             location.item.location = location | ||||
|             placed_mons[location.item.name] += 1 | ||||
| @@ -1540,7 +1540,6 @@ def create_regions(self): | ||||
|                     item = self.create_filler() | ||||
|                 elif location.original_item == "Pokedex": | ||||
|                     if self.multiworld.randomize_pokedex[self.player] == "vanilla": | ||||
|                         location_object.event = True | ||||
|                         event = True | ||||
|                     item = self.create_item("Pokedex") | ||||
|                 elif location.original_item == "Moon Stone" and self.multiworld.stonesanity[self.player]: | ||||
|   | ||||
							
								
								
									
										0
									
								
								worlds/sc2wol/Regions.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								worlds/sc2wol/Regions.py
									
									
									
									
									
										Normal file
									
								
							| @@ -527,7 +527,6 @@ class SMZ3World(World): | ||||
|                 if (loc.item.player == self.player and loc.always_allow(state, loc.item)): | ||||
|                     loc.item.classification = ItemClassification.filler | ||||
|                     loc.item.item.Progression = False | ||||
|                     loc.item.location.event = False | ||||
|                     self.unreachable.append(loc) | ||||
|  | ||||
|     def get_filler_item_name(self) -> str: | ||||
| @@ -573,7 +572,6 @@ class SMZ3World(World): | ||||
|                         break | ||||
|                 assert itemFromPool is not None, "Can't find anymore item(s) to pre fill GT" | ||||
|                 self.multiworld.push_item(loc, itemFromPool, False) | ||||
|                 loc.event = False | ||||
|         toRemove.sort(reverse = True) | ||||
|         for i in toRemove:  | ||||
|             self.multiworld.itempool.pop(i) | ||||
|   | ||||
| @@ -486,4 +486,3 @@ class SoELocation(Location): | ||||
|         super().__init__(player, name, address, parent) | ||||
|         # unconditional assignments favor a split dict, saving memory | ||||
|         self.progress_type = LocationProgressType.EXCLUDED if exclude else LocationProgressType.DEFAULT | ||||
|         self.event = not address | ||||
|   | ||||
| @@ -92,12 +92,6 @@ def create_region(world: MultiWorld, player: int, name: str, locations=None, exi | ||||
| class SpireLocation(Location): | ||||
|     game: str = "Slay the Spire" | ||||
|  | ||||
|     def __init__(self, player: int, name: str, address=None, parent=None): | ||||
|         super(SpireLocation, self).__init__(player, name, address, parent) | ||||
|         if address is None: | ||||
|             self.event = True | ||||
|             self.locked = True | ||||
|  | ||||
|  | ||||
| class SpireItem(Item): | ||||
|     game = "Slay the Spire" | ||||
|   | ||||
| @@ -30,10 +30,6 @@ client_version = 0 | ||||
| class StardewLocation(Location): | ||||
|     game: str = "Stardew Valley" | ||||
|  | ||||
|     def __init__(self, player: int, name: str, address: Optional[int], parent=None): | ||||
|         super().__init__(player, name, address, parent) | ||||
|         self.event = not address | ||||
|  | ||||
|  | ||||
| class StardewItem(Item): | ||||
|     game: str = "Stardew Valley" | ||||
| @@ -144,7 +140,7 @@ class StardewValleyWorld(World): | ||||
|  | ||||
|         locations_count = len([location | ||||
|                                for location in self.multiworld.get_locations(self.player) | ||||
|                                if not location.event]) | ||||
|                                if location.address is not None]) | ||||
|  | ||||
|         created_items = create_items(self.create_item, self.delete_item, locations_count, items_to_exclude, self.options, | ||||
|                                      self.random) | ||||
|   | ||||
| @@ -371,8 +371,7 @@ class TestLocationGeneration(SVTestBase): | ||||
|  | ||||
|     def test_all_location_created_are_in_location_table(self): | ||||
|         for location in self.get_real_locations(): | ||||
|             if not location.event: | ||||
|                 self.assertIn(location.name, location_table) | ||||
|             self.assertIn(location.name, location_table) | ||||
|  | ||||
|  | ||||
| class TestMinLocationAndMaxItem(SVTestBase): | ||||
| @@ -771,11 +770,10 @@ class TestShipsanityNone(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_no_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertFalse("Shipsanity" in location.name) | ||||
|                     self.assertNotIn(LocationTags.SHIPSANITY, location_table[location.name].tags) | ||||
|         for location in self.get_real_locations(): | ||||
|             with self.subTest(location.name): | ||||
|                 self.assertFalse("Shipsanity" in location.name) | ||||
|                 self.assertNotIn(LocationTags.SHIPSANITY, location_table[location.name].tags) | ||||
|  | ||||
|  | ||||
| class TestShipsanityCrops(SVTestBase): | ||||
| @@ -785,8 +783,8 @@ class TestShipsanityCrops(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_crop_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertIn(LocationTags.SHIPSANITY_CROP, location_table[location.name].tags) | ||||
|  | ||||
| @@ -808,8 +806,8 @@ class TestShipsanityCropsExcludeIsland(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_crop_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertIn(LocationTags.SHIPSANITY_CROP, location_table[location.name].tags) | ||||
|  | ||||
| @@ -831,8 +829,8 @@ class TestShipsanityCropsNoQiCropWithoutSpecialOrders(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_crop_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertIn(LocationTags.SHIPSANITY_CROP, location_table[location.name].tags) | ||||
|  | ||||
| @@ -854,8 +852,8 @@ class TestShipsanityFish(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_fish_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertIn(LocationTags.SHIPSANITY_FISH, location_table[location.name].tags) | ||||
|  | ||||
| @@ -878,8 +876,8 @@ class TestShipsanityFishExcludeIsland(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_fish_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertIn(LocationTags.SHIPSANITY_FISH, location_table[location.name].tags) | ||||
|  | ||||
| @@ -902,8 +900,8 @@ class TestShipsanityFishExcludeQiOrders(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_fish_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertIn(LocationTags.SHIPSANITY_FISH, location_table[location.name].tags) | ||||
|  | ||||
| @@ -926,8 +924,8 @@ class TestShipsanityFullShipment(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_full_shipment_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertIn(LocationTags.SHIPSANITY_FULL_SHIPMENT, location_table[location.name].tags) | ||||
|                     self.assertNotIn(LocationTags.SHIPSANITY_FISH, location_table[location.name].tags) | ||||
| @@ -953,8 +951,8 @@ class TestShipsanityFullShipmentExcludeIsland(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_full_shipment_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertIn(LocationTags.SHIPSANITY_FULL_SHIPMENT, location_table[location.name].tags) | ||||
|                     self.assertNotIn(LocationTags.SHIPSANITY_FISH, location_table[location.name].tags) | ||||
| @@ -979,8 +977,8 @@ class TestShipsanityFullShipmentExcludeQiBoard(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_full_shipment_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertIn(LocationTags.SHIPSANITY_FULL_SHIPMENT, location_table[location.name].tags) | ||||
|                     self.assertNotIn(LocationTags.SHIPSANITY_FISH, location_table[location.name].tags) | ||||
| @@ -1006,8 +1004,8 @@ class TestShipsanityFullShipmentWithFish(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_full_shipment_and_fish_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertTrue(LocationTags.SHIPSANITY_FULL_SHIPMENT in location_table[location.name].tags or | ||||
|                                     LocationTags.SHIPSANITY_FISH in location_table[location.name].tags) | ||||
| @@ -1041,8 +1039,8 @@ class TestShipsanityFullShipmentWithFishExcludeIsland(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_full_shipment_and_fish_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertTrue(LocationTags.SHIPSANITY_FULL_SHIPMENT in location_table[location.name].tags or | ||||
|                                     LocationTags.SHIPSANITY_FISH in location_table[location.name].tags) | ||||
| @@ -1075,8 +1073,8 @@ class TestShipsanityFullShipmentWithFishExcludeQiBoard(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_full_shipment_and_fish_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 with self.subTest(location.name): | ||||
|                     self.assertTrue(LocationTags.SHIPSANITY_FULL_SHIPMENT in location_table[location.name].tags or | ||||
|                                     LocationTags.SHIPSANITY_FISH in location_table[location.name].tags) | ||||
|   | ||||
| @@ -557,8 +557,8 @@ class TestDonationLogicRandomized(SVTestBase): | ||||
|         railroad_item = "Railroad Boulder Removed" | ||||
|         swap_museum_and_bathhouse(self.multiworld, self.player) | ||||
|         collect_all_except(self.multiworld, railroad_item) | ||||
|         donation_locations = [location for location in self.multiworld.get_locations() if | ||||
|                               not location.event and LocationTags.MUSEUM_DONATIONS in location_table[location.name].tags] | ||||
|         donation_locations = [location for location in self.get_real_locations() if | ||||
|                               LocationTags.MUSEUM_DONATIONS in location_table[location.name].tags] | ||||
|  | ||||
|         for donation in donation_locations: | ||||
|             self.assertFalse(self.world.logic.region.can_reach_location(donation.name)(self.multiworld.state)) | ||||
| @@ -713,10 +713,9 @@ class TestShipsanityNone(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_no_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event: | ||||
|                 self.assertFalse("Shipsanity" in location.name) | ||||
|                 self.assertNotIn(LocationTags.SHIPSANITY, location_table[location.name].tags) | ||||
|         for location in self.get_real_locations(): | ||||
|             self.assertFalse("Shipsanity" in location.name) | ||||
|             self.assertNotIn(LocationTags.SHIPSANITY, location_table[location.name].tags) | ||||
|  | ||||
|  | ||||
| class TestShipsanityCrops(SVTestBase): | ||||
| @@ -725,8 +724,8 @@ class TestShipsanityCrops(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_crop_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 self.assertIn(LocationTags.SHIPSANITY_CROP, location_table[location.name].tags) | ||||
|  | ||||
|  | ||||
| @@ -736,8 +735,8 @@ class TestShipsanityFish(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_fish_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 self.assertIn(LocationTags.SHIPSANITY_FISH, location_table[location.name].tags) | ||||
|  | ||||
|  | ||||
| @@ -747,8 +746,8 @@ class TestShipsanityFullShipment(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_full_shipment_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 self.assertIn(LocationTags.SHIPSANITY_FULL_SHIPMENT, location_table[location.name].tags) | ||||
|                 self.assertNotIn(LocationTags.SHIPSANITY_FISH, location_table[location.name].tags) | ||||
|  | ||||
| @@ -759,8 +758,8 @@ class TestShipsanityFullShipmentWithFish(SVTestBase): | ||||
|     } | ||||
|  | ||||
|     def test_only_full_shipment_and_fish_shipsanity_locations(self): | ||||
|         for location in self.multiworld.get_locations(self.player): | ||||
|             if not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|         for location in self.get_real_locations(): | ||||
|             if LocationTags.SHIPSANITY in location_table[location.name].tags: | ||||
|                 self.assertTrue(LocationTags.SHIPSANITY_FULL_SHIPMENT in location_table[location.name].tags or | ||||
|                                 LocationTags.SHIPSANITY_FISH in location_table[location.name].tags) | ||||
|  | ||||
| @@ -774,8 +773,8 @@ class TestShipsanityEverything(SVTestBase): | ||||
|     def test_all_shipsanity_locations_require_shipping_bin(self): | ||||
|         bin_name = "Shipping Bin" | ||||
|         collect_all_except(self.multiworld, bin_name) | ||||
|         shipsanity_locations = [location for location in self.multiworld.get_locations() if | ||||
|                                 not location.event and LocationTags.SHIPSANITY in location_table[location.name].tags] | ||||
|         shipsanity_locations = [location for location in self.get_real_locations() if | ||||
|                                 LocationTags.SHIPSANITY in location_table[location.name].tags] | ||||
|         bin_item = self.world.create_item(bin_name) | ||||
|         for location in shipsanity_locations: | ||||
|             with self.subTest(location.name): | ||||
|   | ||||
| @@ -277,10 +277,10 @@ class SVTestBase(RuleAssertMixin, WorldTestBase, SVTestCase): | ||||
|             self.multiworld.state.collect(self.world.create_item("Stardrop"), event=False) | ||||
|  | ||||
|     def get_real_locations(self) -> List[Location]: | ||||
|         return [location for location in self.multiworld.get_locations(self.player) if not location.event] | ||||
|         return [location for location in self.multiworld.get_locations(self.player) if location.address is not None] | ||||
|  | ||||
|     def get_real_location_names(self) -> List[str]: | ||||
|         return [location.name for location in self.multiworld.get_locations(self.player) if not location.event] | ||||
|         return [location.name for location in self.get_real_locations()] | ||||
|  | ||||
|  | ||||
| pre_generated_worlds = {} | ||||
|   | ||||
| @@ -20,7 +20,7 @@ class ModAssertMixin(TestCase): | ||||
|             self.assertTrue(item.mod_name is None or item.mod_name in chosen_mods, | ||||
|                             f"Item {item.name} has is from mod {item.mod_name}. Allowed mods are {chosen_mods}.") | ||||
|         for multiworld_location in multiworld.get_locations(): | ||||
|             if multiworld_location.event: | ||||
|             if multiworld_location.address is None: | ||||
|                 continue | ||||
|             location = location_table[multiworld_location.name] | ||||
|             self.assertTrue(location.mod_name is None or location.mod_name in chosen_mods) | ||||
|   | ||||
| @@ -13,7 +13,7 @@ def get_all_item_names(multiworld: MultiWorld) -> List[str]: | ||||
|  | ||||
|  | ||||
| def get_all_location_names(multiworld: MultiWorld) -> List[str]: | ||||
|     return [location.name for location in multiworld.get_locations() if not location.event] | ||||
|     return [location.name for location in multiworld.get_locations() if location.address is not None] | ||||
|  | ||||
|  | ||||
| class WorldAssertMixin(RuleAssertMixin, TestCase): | ||||
| @@ -48,7 +48,7 @@ class WorldAssertMixin(RuleAssertMixin, TestCase): | ||||
|         self.assert_can_reach_victory(multiworld) | ||||
|  | ||||
|     def assert_same_number_items_locations(self, multiworld: MultiWorld): | ||||
|         non_event_locations = [location for location in multiworld.get_locations() if not location.event] | ||||
|         non_event_locations = [location for location in multiworld.get_locations() if location.address is not None] | ||||
|         self.assertEqual(len(multiworld.itempool), len(non_event_locations)) | ||||
|  | ||||
|     def assert_can_reach_everything(self, multiworld: MultiWorld): | ||||
|   | ||||
| @@ -206,7 +206,6 @@ def create_location(player: int, location_data: LocationData, region: Region) -> | ||||
|         location.access_rule = location_data.rule | ||||
|  | ||||
|     if id is None: | ||||
|         location.event = True | ||||
|         location.locked = True | ||||
|     return location | ||||
|  | ||||
|   | ||||
| @@ -116,7 +116,6 @@ class TLoZWorld(World): | ||||
|  | ||||
|     def create_location(self, name, id, parent, event=False): | ||||
|         return_location = TLoZLocation(self.player, name, id, parent) | ||||
|         return_location.event = event | ||||
|         return return_location | ||||
|  | ||||
|     def create_regions(self): | ||||
|   | ||||
| @@ -10,10 +10,6 @@ class AdvData(typing.NamedTuple): | ||||
| class UndertaleAdvancement(Location): | ||||
|     game: str = "Undertale" | ||||
|  | ||||
|     def __init__(self, player: int, name: str, address: typing.Optional[int], parent): | ||||
|         super().__init__(player, name, address, parent) | ||||
|         self.event = not address | ||||
|  | ||||
|  | ||||
| advancement_table = { | ||||
|     "Snowman": AdvData(79100, "Snowdin Forest"), | ||||
|   | ||||
| @@ -131,12 +131,6 @@ def create_region(world: MultiWorld, player: int, name: str, locations=None, exi | ||||
| class WargrooveLocation(Location): | ||||
|     game: str = "Wargroove" | ||||
|  | ||||
|     def __init__(self, player: int, name: str, address=None, parent=None): | ||||
|         super(WargrooveLocation, self).__init__(player, name, address, parent) | ||||
|         if address is None: | ||||
|             self.event = True | ||||
|             self.locked = True | ||||
|  | ||||
|  | ||||
| class WargrooveItem(Item): | ||||
|     game = "Wargroove" | ||||
|   | ||||
| @@ -109,9 +109,7 @@ class ZorkGrandInquisitorWorld(World): | ||||
|                     region_mapping[data.region], | ||||
|                 ) | ||||
|  | ||||
|                 location.event = isinstance(location_enum_item, ZorkGrandInquisitorEvents) | ||||
|  | ||||
|                 if location.event: | ||||
|                 if isinstance(location_enum_item, ZorkGrandInquisitorEvents): | ||||
|                     location.place_locked_item( | ||||
|                         ZorkGrandInquisitorItem( | ||||
|                             data.event_item_name, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Aaron Wagener
					Aaron Wagener