From 16e6b9eed722084c586c576cb3b6c38ab64bb760 Mon Sep 17 00:00:00 2001 From: espeon65536 Date: Sun, 12 Sep 2021 19:46:01 -0500 Subject: [PATCH] Ensure that Sheik in Ice Cavern doesn't get a dungeon item --- worlds/oot/Rules.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/worlds/oot/Rules.py b/worlds/oot/Rules.py index bac97853..05b3f015 100644 --- a/worlds/oot/Rules.py +++ b/worlds/oot/Rules.py @@ -4,7 +4,7 @@ import logging from .SaveContext import SaveContext from BaseClasses import CollectionState -from worlds.generic.Rules import set_rule, add_rule, add_item_rule, forbid_item, item_in_locations +from worlds.generic.Rules import set_rule, add_rule, add_item_rule, forbid_item from ..AutoWorld import LogicMixin @@ -101,6 +101,12 @@ def set_rules(ootworld): location = world.get_location('Forest Temple MQ First Room Chest', player) forbid_item(location, 'Boss Key (Forest Temple)', ootworld.player) + if ootworld.shuffle_song_items == 'song' and not ootworld.starting_songs: + # Sheik in Ice Cavern is the only song location in a dungeon; need to ensure that it cannot be anything else. + # This is required if map/compass included, or any_dungeon shuffle. + location = world.get_location('Sheik in Ice Cavern', player) + add_item_rule(location, lambda item: item.player == player and item.type == 'Song') + for name in ootworld.always_hints: add_rule(world.get_location(name, player), guarantee_hint)