TUNIC: Error catching for logic bugs in ER (#3082)
This commit is contained in:
		| @@ -1,5 +1,5 @@ | |||||||
| from typing import Dict, List, Any | from typing import Dict, List, Any | ||||||
|  | from logging import warning | ||||||
| from BaseClasses import Region, Location, Item, Tutorial, ItemClassification | from BaseClasses import Region, Location, Item, Tutorial, ItemClassification | ||||||
| from .items import item_name_to_id, item_table, item_name_groups, fool_tiers, filler_items, slot_data_item_names | from .items import item_name_to_id, item_table, item_name_groups, fool_tiers, filler_items, slot_data_item_names | ||||||
| from .locations import location_table, location_name_groups, location_name_to_id, hexagon_locations | from .locations import location_table, location_name_groups, location_name_to_id, hexagon_locations | ||||||
| @@ -245,17 +245,27 @@ class TunicWorld(World): | |||||||
|                     continue |                     continue | ||||||
|                 path_to_loc = [] |                 path_to_loc = [] | ||||||
|                 previous_name = "placeholder" |                 previous_name = "placeholder" | ||||||
|                 name, connection = paths[location.parent_region] |                 try: | ||||||
|                 while connection != ("Menu", None): |                     name, connection = paths[location.parent_region] | ||||||
|                     name, connection = connection |                 except KeyError: | ||||||
|                     # for LS entrances, we just want to give the portal name |                     # logic bug, proceed with warning since it takes a long time to update AP | ||||||
|                     if "(LS)" in name: |                     warning(f"{location.name} is not logically accessible for " | ||||||
|                         name, _ = name.split(" (LS) ") |                             f"{self.multiworld.get_file_safe_player_name(self.player)}. " | ||||||
|                     # was getting some cases like Library Grave -> Library Grave -> other place |                             "Creating entrance hint Inaccessible. " | ||||||
|                     if name in portal_names and name != previous_name: |                             "Please report this to the TUNIC rando devs.") | ||||||
|                         previous_name = name |                     hint_text = "Inaccessible" | ||||||
|                         path_to_loc.append(name) |                 else: | ||||||
|                 hint_text = " -> ".join(reversed(path_to_loc)) |                     while connection != ("Menu", None): | ||||||
|  |                         name, connection = connection | ||||||
|  |                         # for LS entrances, we just want to give the portal name | ||||||
|  |                         if "(LS)" in name: | ||||||
|  |                             name, _ = name.split(" (LS) ") | ||||||
|  |                         # was getting some cases like Library Grave -> Library Grave -> other place | ||||||
|  |                         if name in portal_names and name != previous_name: | ||||||
|  |                             previous_name = name | ||||||
|  |                             path_to_loc.append(name) | ||||||
|  |                     hint_text = " -> ".join(reversed(path_to_loc)) | ||||||
|  |  | ||||||
|                 if hint_text: |                 if hint_text: | ||||||
|                     hint_data[self.player][location.address] = hint_text |                     hint_data[self.player][location.address] = hint_text | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Scipio Wright
					Scipio Wright