Ensure removed items and events do not appear in the starting inventory multidata and web tracker

This commit is contained in:
espeon65536 2021-09-14 13:10:43 -05:00 committed by Fabian Dill
parent 16e6b9eed7
commit f17e6f9afd
1 changed files with 11 additions and 0 deletions

View File

@ -454,12 +454,14 @@ class OOTWorld(World):
generate_itempool(self) generate_itempool(self)
add_dungeon_items(self) add_dungeon_items(self)
junk_pool = get_junk_pool(self) junk_pool = get_junk_pool(self)
removed_items = []
# Determine starting items # Determine starting items
for item in self.world.precollected_items: for item in self.world.precollected_items:
if item.player != self.player: if item.player != self.player:
continue continue
if item.name in self.remove_from_start_inventory: if item.name in self.remove_from_start_inventory:
self.remove_from_start_inventory.remove(item.name) self.remove_from_start_inventory.remove(item.name)
removed_items.append(item.name)
else: else:
self.starting_items[item.name] += 1 self.starting_items[item.name] += 1
if item.type == 'Song': if item.type == 'Song':
@ -475,6 +477,7 @@ class OOTWorld(World):
self.starting_items['Rupees'] = 999 self.starting_items['Rupees'] = 999
self.world.itempool += self.itempool self.world.itempool += self.itempool
self.remove_from_start_inventory.extend(removed_items)
def set_rules(self): def set_rules(self):
set_rules(self) set_rules(self)
@ -767,6 +770,14 @@ class OOTWorld(World):
finally: finally:
hint_data_available.set() hint_data_available.set()
def modify_multidata(self, multidata: dict):
for item_name in self.remove_from_start_inventory:
item_id = self.item_name_to_id.get(item_name, None)
try:
multidata["precollected_items"][self.player].remove(item_id)
except ValueError as e:
logger.warning(f"Attempted to remove nonexistent item id {item_id} from OoT precollected items ({item_name})")
# Helper functions # Helper functions
def get_shuffled_entrances(self): def get_shuffled_entrances(self):