Witness: Fix for Witness plando crashes. (#2092)

This commit is contained in:
blastron
2023-08-16 07:03:41 -07:00
committed by GitHub
parent be07634b15
commit e30f364bbd
2 changed files with 13 additions and 4 deletions

View File

@@ -219,17 +219,21 @@ class WitnessPlayerItems:
# regardless of whether or not they actually wind up being manually placed.
for plando_setting in self._world.plando_items[self._player_id]:
if plando_setting.get("from_pool", True):
for item_setting_key in (key for key in ["item", "items"] if key in plando_setting):
for item_setting_key in [key for key in ["item", "items"] if key in plando_setting]:
if type(plando_setting[item_setting_key]) is str:
output.remove(plando_setting[item_setting_key])
output -= {plando_setting[item_setting_key]}
elif type(plando_setting[item_setting_key]) is dict:
output -= {item for item, weight in plando_setting[item_setting_key].items() if weight}
else:
# Assume this is some other kind of iterable.
output -= plando_setting[item_setting_key]
for inner_item in plando_setting[item_setting_key]:
if type(inner_item) is str:
output -= {inner_item}
elif type(inner_item) is dict:
output -= {item for item, weight in inner_item.items() if weight}
# Sort the output for consistency across versions if the implementation changes but the logic does not.
return sorted(output)
return sorted(list(output))
def get_door_ids_in_pool(self) -> List[int]:
"""