diff --git a/GUI/src/app/pages/generator/generator.component.ts b/GUI/src/app/pages/generator/generator.component.ts index 425bb07e9..74d6189b3 100644 --- a/GUI/src/app/pages/generator/generator.component.ts +++ b/GUI/src/app/pages/generator/generator.component.ts @@ -154,7 +154,7 @@ export class GeneratorComponent implements OnInit { return filteredTabList; } - generateSeed(fromPatchFile: boolean = false, webRaceSeed: boolean = false) { + generateSeed(fromPatchFile: boolean = false, webRaceSeed: boolean = false, goalHintsConfirmed: boolean = false) { this.generateSeedButtonEnabled = false; this.seedString = this.seedString.trim().replace(/[^a-zA-Z0-9_-]/g, ''); @@ -163,9 +163,10 @@ export class GeneratorComponent implements OnInit { //console.log(this.global.generator_settingsMap); //console.log(this.global.generator_customColorMap); - if (this.global.getGlobalVar('electronAvailable')) { //Electron - - //Delay the generation if settings are currently locked to avoid race conditions + //Delay the generation if settings are currently locked to avoid race conditions. + //Do this here so the goal hint confirmation dialog can be defined once for + //Electron and Web + if (this.global.getGlobalVar('electronAvailable')) { if (this.settingsLocked) { setTimeout(() => { this.generateSeed(fromPatchFile, webRaceSeed); @@ -173,6 +174,29 @@ export class GeneratorComponent implements OnInit { return; } + } + + let goalErrorText = "The selected hint distribution includes the Goal hint type. This can drastically increase generation time for large multiworld seeds. Continue?"; + let goalDistros = this.global.getGlobalVar('generatorGoalDistros'); + + if (!goalHintsConfirmed && goalDistros.indexOf(this.global.generator_settingsMap["hint_dist"]) > -1 && this.global.generator_settingsMap["world_count"] > 5) { + this.dialogService.open(ConfirmationWindow, { + autoFocus: true, closeOnBackdropClick: false, closeOnEsc: false, hasBackdrop: true, hasScroll: false, context: { dialogHeader: "Goal Hint Warning", dialogMessage: goalErrorText } + }).onClose.subscribe(confirmed => { + //User acknowledged increased generation time for multiworld seeds with goal hints + if (confirmed) { + this.generateSeed(fromPatchFile, webRaceSeed, true); + } + }); + + this.generateSeedButtonEnabled = true; + this.cd.markForCheck(); + this.cd.detectChanges(); + + return; + } + + if (this.global.getGlobalVar('electronAvailable')) { //Electron //Hack: Fix Generation Count being None occasionally if (!this.global.generator_settingsMap["count"] || this.global.generator_settingsMap["count"] < 1) diff --git a/GUI/src/app/providers/GUIGlobal.ts b/GUI/src/app/providers/GUIGlobal.ts index 85a785771..86b89ccd2 100644 --- a/GUI/src/app/providers/GUIGlobal.ts +++ b/GUI/src/app/providers/GUIGlobal.ts @@ -34,7 +34,8 @@ export class GUIGlobal { ["generatorSettingsArray", []], ["generatorSettingsObj", {}], ["generatorCosmeticsArray", []], - ["generatorCosmeticsObj", {}] + ["generatorCosmeticsObj", {}], + ["generatorGoalDistros", []] ]); } @@ -483,12 +484,14 @@ export class GUIGlobal { console.log("JSON Settings Data:", guiSettings); console.log("Last User Settings:", userSettings); console.log("Final Settings Map", this.generator_settingsMap); + console.log("Goal Hint Distros", guiSettings.distroArray); //Save settings after parsing them this.setGlobalVar('generatorSettingsArray', guiSettings.settingsArray); this.setGlobalVar('generatorSettingsObj', guiSettings.settingsObj); this.setGlobalVar('generatorCosmeticsArray', guiSettings.cosmeticsArray); this.setGlobalVar('generatorCosmeticsObj', guiSettings.cosmeticsObj); + this.setGlobalVar('generatorGoalDistros', guiSettings.distroArray); this.generator_presets = guiSettings.presets; } diff --git a/Goals.py b/Goals.py new file mode 100644 index 000000000..d8ba8965d --- /dev/null +++ b/Goals.py @@ -0,0 +1,344 @@ +from collections import OrderedDict, defaultdict +import logging + +from HintList import goalTable, getHintGroup, hintExclusions +from Search import Search + + +validColors = [ + 'White', + 'Red', + 'Green', + 'Blue', + 'Light Blue', + 'Pink', + 'Yellow', + 'Black' +] + + +class Goal(object): + + def __init__(self, world, name, hint_text, color, items=None, locations=None, lock_locations=None, lock_entrances=None, required_locations=None, create_empty=False): + # early exit if goal initialized incorrectly + if not items and not locations and not create_empty: + raise Exception('Invalid goal: no items or destinations set') + self.world = world + self.name = name + self.hint_text = hint_text + if color in validColors: + self.color = color + else: + raise Exception('Invalid goal: Color %r not supported' % color) + self.items = items + self.locations = locations + self.lock_locations = lock_locations + self.lock_entrances = lock_entrances + self.required_locations = required_locations or [] + self.weight = 0 + self.category = None + self._item_cache = {} + + def copy(self): + new_goal = Goal(self.world, self.name, self.hint_text, self.color, self.items, self.locations, self.lock_locations, self.lock_entrances, self.required_locations) + return new_goal + + def get_item(self, item): + try: + return self._item_cache[item] + except KeyError: + for i in self.items: + if i['name'] == item: + self._item_cache[item] = i + return i + raise KeyError('No such item %r for goal %r' % (item, self.name)) + + def requires(self, item): + # Prevent direct hints for certain items that can have many duplicates, such as tokens and Triforce Pieces + return any(i['name'] == item and not i['hintable'] for i in self.items) + + +class GoalCategory(object): + + def __init__(self, name, priority, goal_count=0, minimum_goals=0, lock_locations=None, lock_entrances=None): + self.name = name + self.priority = priority + self.lock_locations = lock_locations + self.lock_entrances = lock_entrances + self.goals = [] + self.goal_count = goal_count + self.minimum_goals = minimum_goals + self.weight = 0 + self._goal_cache = {} + + + def copy(self): + new_category = GoalCategory(self.name, self.priority, self.goal_count, self.minimum_goals, self.lock_locations, self.lock_entrances) + new_category.goals = list(goal.copy() for goal in self.goals) + return new_category + + def add_goal(self, goal): + goal.category = self + self.goals.append(goal) + + + def get_goal(self, goal): + if isinstance(goal, Goal): + return goal + try: + return self._goal_cache[goal] + except KeyError: + for g in self.goals: + if g.name == goal: + self._goal_cache[goal] = g + return g + raise KeyError('No such goal %r' % goal) + + + def is_beaten(self, search): + # if the category requirements are already satisfied by starting items (such as Links Pocket), + # do not generate hints for other goals in the category + starting_goals = search.can_beat_goals_fast({ self.name: self }) + return all(map(lambda s: len(starting_goals[self.name]['stateReverse'][s.world.id]) >= self.minimum_goals, search.state_list)) + + + def update_reachable_goals(self, starting_search, full_search): + # Only reduce goal item quantity if minimum goal requirements are reachable, + # but not the full goal quantity. Primary use is to identify reachable + # skull tokens, triforce pieces, and plentiful item duplicates with + # All Locations Reachable off. Beatable check is required to prevent + # inadvertently setting goal requirements to 0 or some quantity less + # than the minimum + # Relies on consistent list order to reference between current state + # and the copied search + # IMPORTANT: This is not meant to be called per-world. It is supposed to + # be called once for all world states for each category type. + + for index, state in enumerate(starting_search.state_list): + for goal in state.world.goal_categories[self.name].goals: + if goal.items: + if all(map(full_search.state_list[index].has_item_goal, goal.items)): + for i in goal.items: + i['quantity'] = min(full_search.state_list[index].item_count(i['name']), i['quantity']) + + +def replace_goal_names(worlds): + for world in worlds: + bosses = [location for location in world.get_filled_locations() if location.item.type == 'DungeonReward'] + for cat_name, category in world.goal_categories.items(): + for goal in category.goals: + if isinstance(goal.hint_text, dict): + for boss in bosses: + if boss.item.name == goal.hint_text['replace']: + flavorText, clearText, color = goalTable[boss.name] + if world.settings.clearer_hints: + goal.hint_text = clearText + else: + goal.hint_text = flavorText + goal.color = color + break + + +def update_goal_items(spoiler): + worlds = spoiler.worlds + + # get list of all of the progressive items that can appear in hints + # all_locations: all progressive items. have to collect from these + # item_locations: only the ones that should appear as "required"/WotH + all_locations = [location for world in worlds for location in world.get_filled_locations()] + # Set to test inclusion against + item_locations = {location for location in all_locations if location.item.majoritem and not location.locked and location.item.name != 'Triforce Piece'} + + # required_locations[category.name][goal.name][world_id] = [...] + required_locations = defaultdict(lambda: defaultdict(lambda: defaultdict(list))) + priority_locations = {(world.id): {} for world in worlds} + + # rebuild hint exclusion list + for world in worlds: + hintExclusions(world, clear_cache=True) + + # getHintGroup relies on hint exclusion list + always_locations = [location.name for world in worlds for location in getHintGroup('always', world)] + if spoiler.playthrough: + # Skip even the checks + _maybe_set_light_arrows = lambda _: None + else: + _maybe_set_light_arrows = maybe_set_light_arrows + + if worlds[0].enable_goal_hints: + # References first world for goal categories only + for cat_name, category in worlds[0].locked_goal_categories.items(): + for cat_world in worlds: + search = Search([world.state for world in worlds]) + search.collect_pseudo_starting_items() + + cat_state = list(filter(lambda s: s.world.id == cat_world.id, search.state_list)) + category_locks = lock_category_entrances(category, cat_state) + + if category.is_beaten(search): + unlock_category_entrances(category_locks, cat_state) + continue + + full_search = search.copy() + full_search.collect_locations() + reachable_goals = {} + # Goals are changed for beatable-only accessibility per-world + category.update_reachable_goals(search, full_search) + reachable_goals = full_search.can_beat_goals_fast({ cat_name: category }, cat_world.id) + identified_locations = search_goals({ cat_name: category }, reachable_goals, search, priority_locations, all_locations, item_locations, always_locations, _maybe_set_light_arrows) + # Multiworld can have all goals for one player's bridge entirely + # locked by another player's bridge. Therefore, we can't assume + # accurate required location lists by locking every world's + # entrance locks simultaneously. We must run a new search on the + # same category for each world's entrance locks. + for goal_name, world_location_lists in identified_locations[cat_name].items(): + required_locations[cat_name][goal_name][cat_world.id] = list(identified_locations[cat_name][goal_name][cat_world.id]) + + unlock_category_entrances(category_locks, cat_state) + + search = Search([world.state for world in worlds]) + search.collect_pseudo_starting_items() + reachable_goals = {} + # Force all goals to be unreachable if goal hints are not part of the distro + # Saves a minor amount of search time. Most of the benefit is skipping the + # locked goal categories. This section still needs to run to generate WOTH. + # WOTH isn't a goal, so it still is searched successfully. + if worlds[0].enable_goal_hints: + full_search = search.copy() + full_search.collect_locations() + for cat_name, category in worlds[0].unlocked_goal_categories.items(): + category.update_reachable_goals(search, full_search) + reachable_goals = full_search.can_beat_goals_fast(worlds[0].unlocked_goal_categories) + identified_locations = search_goals(worlds[0].unlocked_goal_categories, reachable_goals, search, priority_locations, all_locations, item_locations, always_locations, _maybe_set_light_arrows, search_woth=True) + required_locations.update(identified_locations) + woth_locations = list(required_locations['way of the hero']) + del required_locations['way of the hero'] + + # Update WOTH items + woth_locations_dict = {} + for world in worlds: + woth_locations_dict[world.id] = list(filter(lambda location: location.world.id == world.id, woth_locations)) + spoiler.required_locations = woth_locations_dict + + # Fallback to way of the hero required items list if all goals/goal categories already satisfied. + # Do not use if the default woth-like goal was already added for open bridge/open ganon. + # If the woth list is also empty, fails gracefully to the next hint type for the distro in either case. + # required_locations_dict[goal_world][category.name][goal.name][world.id] = [...] + required_locations_dict = defaultdict(lambda: defaultdict(lambda: defaultdict(lambda: defaultdict(list)))) + if not required_locations and 'ganon' not in worlds[0].goal_categories and worlds[0].hint_dist_user['use_default_goals'] and worlds[0].enable_goal_hints: + for world in worlds: + locations = [(location, 1, 1, [world.id]) for location in spoiler.required_locations[world.id]] + c = GoalCategory('ganon', 30, goal_count=1, minimum_goals=1) + g = Goal(world, 'the hero', 'way of the hero', 'White', items=[{'name': 'Triforce', 'quantity': 1, 'minimum': 1, 'hintable': True}]) + g.required_locations = locations + c.add_goal(g) + world.goal_categories[c.name] = c + # The real protagonist of the story + required_locations_dict[world.id]['ganon']['the hero'][world.id] = [l[0] for l in locations] + spoiler.goal_categories[world.id] = {c.name: c.copy()} + else: + for world in worlds: + for cat_name, category in world.goal_categories.items(): + if cat_name not in required_locations: + continue + for goal in category.goals: + if goal.name not in required_locations[category.name]: + continue + # Filter the required locations to only include locations in the goal's world. + # The fulfilled goal can be for another world, whose ID is saved previously as + # the fourth entry in each location tuple + goal_locations = defaultdict(list) + for goal_world, locations in required_locations[category.name][goal.name].items(): + for location in locations: + # filter isn't strictly necessary for the spoiler dictionary, but this way + # we only loop once to do that and grab the required locations for the + # current goal + if location[0].world.id != world.id: + continue + # The spoiler shows locations across worlds contributing to this world's goal + required_locations_dict[goal_world][category.name][goal.name][world.id].append(location[0]) + goal_locations[location[0]].append(goal_world) + goal.required_locations = [(location, 1, 1, world_ids) for location, world_ids in goal_locations.items()] + # Copy of goal categories for the spoiler log to reference + # since the hint algorithm mutates the world copy + for world in worlds: + spoiler.goal_categories[world.id] = {cat_name: category.copy() for cat_name, category in world.goal_categories.items()} + spoiler.goal_locations = required_locations_dict + + +def lock_category_entrances(category, state_list): + # Disable access rules for specified entrances + category_locks = {} + if category.lock_entrances is not None: + for index, state in enumerate(state_list): + category_locks[index] = {} + for lock in category.lock_entrances: + exit = state.world.get_entrance(lock) + category_locks[index][exit.name] = exit.access_rule + exit.access_rule = lambda state, **kwargs: False + return category_locks + + +def unlock_category_entrances(category_locks, state_list): + # Restore access rules + for state_id, exits in category_locks.items(): + for exit_name, access_rule in exits.items(): + exit = state_list[state_id].world.get_entrance(exit_name) + exit.access_rule = access_rule + + +def search_goals(categories, reachable_goals, search, priority_locations, all_locations, item_locations, always_locations, _maybe_set_light_arrows, search_woth=False): + # required_locations[category.name][goal.name][world_id] = [...] + required_locations = defaultdict(lambda: defaultdict(lambda: defaultdict(list))) + world_ids = [state.world.id for state in search.state_list] + if search_woth: + required_locations['way of the hero'] = [] + for location in search.iter_reachable_locations(all_locations): + # Try to remove items one at a time and see if the goal is still reachable + if location in item_locations: + old_item = location.item + location.item = None + # copies state! This is very important as we're in the middle of a search + # already, but beneficially, has search it can start from + valid_goals = search.can_beat_goals(categories) + for cat_name, category in categories.items(): + # Exit early if no goals are beatable with category locks + if category.name in reachable_goals and reachable_goals[category.name]: + for goal in category.goals: + if (category.name in valid_goals + and goal.name in valid_goals[category.name] + and goal.name in reachable_goals[category.name] + and (location.name not in priority_locations[location.world.id] + or priority_locations[location.world.id][location.name] == category.name) + and not goal.requires(old_item.name)): + invalid_states = set(world_ids) - set(valid_goals[category.name][goal.name]) + hintable_states = list(invalid_states & set(reachable_goals[category.name][goal.name])) + if hintable_states: + for world_id in hintable_states: + # Placeholder weights to be set for future bottleneck targeting. + # 0 weights for always-hinted locations isn't relevant currently + # but is intended to screen out contributions to the overall + # goal/category weights + if location.name in always_locations or location.name in location.world.hint_exclusions: + location_weights = (location, 0, 0) + else: + location_weights = (location, 1, 1) + required_locations[category.name][goal.name][world_id].append(location_weights) + goal.weight = 1 + category.weight = 1 + # Locations added to goal exclusion for future categories + # Main use is to split goals between before/after rainbow bridge + # Requires goal categories to be sorted by priority! + priority_locations[location.world.id][location.name] = category.name + if search_woth and not valid_goals['way of the hero']: + required_locations['way of the hero'].append(location) + location.item = old_item + _maybe_set_light_arrows(location) + search.state_list[location.item.world.id].collect(location.item) + return required_locations + + +def maybe_set_light_arrows(location): + if not location.item.world.light_arrow_location and location.item and location.item.name == 'Light Arrows': + location.item.world.light_arrow_location = location + logging.getLogger('').debug(f'Light Arrows [{location.item.world.id}] set to [{location.name}]') \ No newline at end of file diff --git a/HintList.py b/HintList.py index 1cbb2dc89..e4e801e0b 100644 --- a/HintList.py +++ b/HintList.py @@ -57,15 +57,22 @@ def getHintGroup(group, world): if hint.name in world.always_hints and group == 'always': hint.type = 'always' + conditional_keep = True + type_append = False + if group in ['overworld', 'dungeon', 'sometimes'] and hint.name in conditional_sometimes.keys(): + conditional_keep = conditional_sometimes[hint.name](world) + # Hint inclusion override from distribution if group in world.added_hint_types or group in world.item_added_hint_types: if hint.name in world.added_hint_types[group]: hint.type = group + type_append = True if nameIsLocation(name, hint.type, world): location = world.get_location(name) for i in world.item_added_hint_types[group]: if i == location.item.name: hint.type = group + type_append = True for i in world.item_hint_type_overrides[group]: if i == location.item.name: hint.type = [] @@ -79,7 +86,7 @@ def getHintGroup(group, world): if location.item.name in world.item_hint_type_overrides[group]: type_override = True - if group in hint.type and (name not in hintExclusions(world)) and not type_override: + if group in hint.type and (name not in hintExclusions(world)) and not type_override and (conditional_keep or type_append): ret.append(hint) return ret @@ -155,6 +162,11 @@ def tokens_required_by_settings(world): 'Kak 50 Gold Skulltula Reward': lambda world: tokens_required_by_settings(world) < 50, } +# Some sometimes hints should only be enabled under certain settings +conditional_sometimes = { + 'HC Great Fairy Reward': lambda world: world.settings.shuffle_interior_entrances == 'off', + 'OGC Great Fairy Reward': lambda world: world.settings.shuffle_interior_entrances == 'off', +} # table of hints, format is (name, hint text, clear hint text, type of hint) there are special characters that are read for certain in game commands: # ^ is a box break @@ -349,6 +361,11 @@ def tokens_required_by_settings(world): 'ZD King Zora Thawed': ("a #defrosted dignitary# gifts", "unfreezing #King Zora# grants", ['overworld', 'sometimes']), 'DMC Deku Scrub': ("a single #scrub in the crater# sells", None, ['overworld', 'sometimes']), 'DMC GS Crate': ("a spider under a #crate in the crater# holds", None, ['overworld', 'sometimes']), + 'LW Target in Woods': ("shooting a #target in the woods# grants", None, ['overworld', 'sometimes']), + 'ZR Frogs in the Rain': ("#frogs in a storm# gift", None, ['overworld', 'sometimes']), + 'LH Lab Dive': ("a #diving experiment# is rewarded with", None, ['overworld', 'sometimes']), + 'HC Great Fairy Reward': ("the #fairy of fire# holds", "a #fairy outside Hyrule Castle# holds", ['overworld', 'sometimes']), + 'OGC Great Fairy Reward': ("the #fairy of strength# holds", "a #fairy outside Ganon's Castle# holds", ['overworld', 'sometimes']), 'Deku Tree MQ After Spinning Log Chest': ("a #temporal stone within a tree# contains", "a #temporal stone within the Deku Tree# contains", ['dungeon', 'sometimes']), 'Deku Tree MQ GS Basement Graves Room': ("a #spider on a ceiling in a tree# holds", "a #spider on a ceiling in the Deku Tree# holds", ['dungeon', 'sometimes']), @@ -361,8 +378,10 @@ def tokens_required_by_settings(world): 'Fire Temple MQ Chest On Fire': ("the #Flare Dancer atop the volcano# guards a chest containing", "the #Flare Dancer atop the Fire Temple# guards a chest containing", ['dungeon', 'sometimes']), 'Fire Temple MQ GS Skull On Fire': ("a #spider under a block in the volcano# holds", "a #spider under a block in the Fire Temple# holds", ['dungeon', 'sometimes']), 'Water Temple River Chest': ("beyond the #river under the lake# waits", "beyond the #river in the Water Temple# waits", ['dungeon', 'sometimes']), + 'Water Temple Central Pillar Chest': ("beneath a #tall tower under a vast lake# lies", "a chest in the #central pillar of Water Temple# contains", ['dungeon', 'sometimes']), 'Water Temple Boss Key Chest': ("dodging #rolling boulders under the lake# leads to", "dodging #rolling boulders in the Water Temple# leads to", ['dungeon', 'sometimes']), 'Water Temple GS Behind Gate': ("a spider behind a #gate under the lake# holds", "a spider behind a #gate in the Water Temple# holds", ['dungeon', 'sometimes']), + 'Water Temple MQ Central Pillar Chest': ("beneath a #tall tower under a vast lake# lies", "a chest in the #central pillar of Water Temple# contains", ['dungeon', 'sometimes']), 'Water Temple MQ Freestanding Key': ("hidden in a #box under the lake# lies", "hidden in a #box in the Water Temple# lies", ['dungeon', 'sometimes']), 'Water Temple MQ GS Freestanding Key Area': ("the #locked spider under the lake# holds", "the #locked spider in the Water Temple# holds", ['dungeon', 'sometimes']), 'Water Temple MQ GS Triple Wall Torch': ("a spider behind a #gate under the lake# holds", "a spider behind a #gate in the Water Temple# holds", ['dungeon', 'sometimes']), @@ -370,15 +389,18 @@ def tokens_required_by_settings(world): 'Gerudo Training Ground MQ Underwater Silver Rupee Chest': (["those who seek #sunken silver rupees# will find", "the #thieves' underwater training# rewards"], None, ['dungeon', 'sometimes']), 'Gerudo Training Ground Maze Path Final Chest': ("the final prize of #the thieves' training# is", None, ['dungeon', 'sometimes']), 'Gerudo Training Ground MQ Ice Arrows Chest': ("the final prize of #the thieves' training# is", None, ['dungeon', 'sometimes']), - 'Bottom of the Well Lens of Truth Chest': (["the well's #grasping ghoul# hides", "a #nether dweller in the well# holds"], "#Dead Hand in the well# holds", ['dungeon', 'sometimes']), - 'Bottom of the Well MQ Compass Chest': (["the well's #grasping ghoul# hides", "a #nether dweller in the well# holds"], "#Dead Hand in the well# holds", ['dungeon', 'sometimes']), 'Spirit Temple Silver Gauntlets Chest': ("the treasure #sought by Nabooru# is", "upon the #Colossus's right hand# is", ['dungeon', 'sometimes']), 'Spirit Temple Mirror Shield Chest': ("upon the #Colossus's left hand# is", None, ['dungeon', 'sometimes']), 'Spirit Temple MQ Child Hammer Switch Chest': ("a #temporal paradox in the Colossus# yields", "a #temporal paradox in the Spirit Temple# yields", ['dungeon', 'sometimes']), 'Spirit Temple MQ Symphony Room Chest': ("a #symphony in the Colossus# yields", "a #symphony in the Spirit Temple# yields", ['dungeon', 'sometimes']), 'Spirit Temple MQ GS Symphony Room': ("a #spider's symphony in the Colossus# yields", "a #spider's symphony in the Spirit Temple# yields", ['dungeon', 'sometimes']), - 'Shadow Temple Invisible Floormaster Chest': ("shadows in an #invisible maze# guard", None, ['dungeon', 'sometimes']), + 'Shadow Temple Freestanding Key': ("a #burning skull in the house of the dead# holds", "a #giant pot in the Shadow Temple# holds", ['dungeon', 'sometimes']), 'Shadow Temple MQ Bomb Flower Chest': ("shadows in an #invisible maze# guard", None, ['dungeon', 'sometimes']), + 'Shadow Temple MQ Stalfos Room Chest': ("near an #empty pedestal within the house of the dead# lies", "#stalfos in the Shadow Temple# guard", ['dungeon', 'sometimes']), + 'Ice Cavern Iron Boots Chest': ("a #monster in a frozen cavern# guards", "the #final treasure of Ice Cavern# is", ['dungeon', 'sometimes']), + 'Ice Cavern MQ Iron Boots Chest': ("a #monster in a frozen cavern# guards", "the #final treasure of Ice Cavern# is", ['dungeon', 'sometimes']), + 'Ganons Castle Shadow Trial Golden Gauntlets Chest': ("#deep in the test of darkness# lies", "a #like-like in Ganon's Shadow Trial# guards", ['dungeon', 'sometimes']), + 'Ganons Castle MQ Shadow Trial Eye Switch Chest': ("#deep in the test of darkness# lies", "shooting an #eye switch in Ganon's Shadow Trial# reveals", ['dungeon', 'sometimes']), 'KF Kokiri Sword Chest': ("the #hidden treasure of the Kokiri# is", None, 'exclude'), 'KF Midos Top Left Chest': ("the #leader of the Kokiri# hides", "#inside Mido's house# is", 'exclude'), @@ -407,11 +429,9 @@ def tokens_required_by_settings(world): 'ToT Light Arrows Cutscene': ("the #final gift of a princess# is", None, 'exclude'), 'LW Gift from Saria': (["a #potato hoarder# holds", "a rooty tooty #flutey cutey# gifts"], "#Saria's Gift# is", 'exclude'), 'ZF Great Fairy Reward': ("the #fairy of winds# holds", None, 'exclude'), - 'HC Great Fairy Reward': ("the #fairy of fire# holds", None, 'exclude'), 'Colossus Great Fairy Reward': ("the #fairy of love# holds", None, 'exclude'), 'DMT Great Fairy Reward': ("a #magical fairy# gifts", None, 'exclude'), 'DMC Great Fairy Reward': ("a #magical fairy# gifts", None, 'exclude'), - 'OGC Great Fairy Reward': ("the #fairy of strength# holds", None, 'exclude'), 'Song from Impa': ("#deep in a castle#, Impa teaches", None, 'exclude'), 'Song from Malon': ("#a farm girl# sings", None, 'exclude'), @@ -423,7 +443,6 @@ def tokens_required_by_settings(world): 'ZD Diving Minigame': ("an #unsustainable business model# gifts", "those who #dive for Zora rupees# will find", 'exclude'), 'LH Child Fishing': ("#fishing in youth# bestows", None, 'exclude'), 'LH Adult Fishing': ("#fishing in maturity# bestows", None, 'exclude'), - 'LH Lab Dive': ("a #diving experiment# is rewarded with", None, 'exclude'), 'GC Rolling Goron as Adult': ("#comforting yourself# provides", "#reassuring a young Goron# is rewarded with", 'exclude'), 'Market Bombchu Bowling First Prize': ("the #first explosive prize# is", None, 'exclude'), 'Market Bombchu Bowling Second Prize': ("the #second explosive prize# is", None, 'exclude'), @@ -432,11 +451,9 @@ def tokens_required_by_settings(world): 'Kak 10 Gold Skulltula Reward': (["#10 bug badges# rewards", "#10 spider souls# yields", "#10 auriferous arachnids# lead to"], "slaying #10 Gold Skulltulas# reveals", 'exclude'), 'Kak Man on Roof': ("a #rooftop wanderer# holds", None, 'exclude'), 'ZR Magic Bean Salesman': ("a seller of #colorful crops# has", "a #bean seller# offers", 'exclude'), - 'ZR Frogs in the Rain': ("#frogs in a storm# gift", None, 'exclude'), 'GF HBA 1000 Points': ("scoring 1000 in #horseback archery# grants", None, 'exclude'), 'Market Shooting Gallery Reward': ("#shooting in youth# grants", None, 'exclude'), 'Kak Shooting Gallery Reward': ("#shooting in maturity# grants", None, 'exclude'), - 'LW Target in Woods': ("shooting a #target in the woods# grants", None, 'exclude'), 'Kak Anju as Adult': ("a #chicken caretaker# offers adults", None, 'exclude'), 'LLR Talons Chickens': ("#finding Super Cuccos# is rewarded with", None, 'exclude'), 'GC Rolling Goron as Child': ("the prize offered by a #large rolling Goron# is", None, 'exclude'), @@ -517,13 +534,14 @@ def tokens_required_by_settings(world): 'Forest Temple Raised Island Courtyard Chest': ("a #chest on a small island# in the Forest Temple holds", None, 'exclude'), 'Forest Temple Falling Ceiling Room Chest': ("beneath a #checkerboard falling ceiling# lies", None, 'exclude'), 'Forest Temple Eye Switch Chest': ("a #sharp eye# will spot", "#blocks of stone# in the Forest Temple surround", 'exclude'), - 'Forest Temple Boss Key Chest': ("a #turned trunk# contains", None, 'exclude'), 'Forest Temple Floormaster Chest': ("deep in the forest #shadows guard a chest# containing", None, 'exclude'), 'Forest Temple Bow Chest': ("an #army of the dead# guards", "#Stalfos deep in the Forest Temple# guard", 'exclude'), 'Forest Temple Red Poe Chest': ("#Joelle# guards", "a #red ghost# guards", 'exclude'), 'Forest Temple Blue Poe Chest': ("#Beth# guards", "a #blue ghost# guards", 'exclude'), 'Forest Temple Basement Chest': ("#revolving walls# in the Forest Temple conceal", None, 'exclude'), + 'Forest Temple Boss Key Chest': ("a #turned trunk# contains", "a #sideways chest in the Forest Temple# hides", 'exclude'), + 'Forest Temple MQ Boss Key Chest': ("a #turned trunk# contains", "a #sideways chest in the Forest Temple# hides", 'exclude'), 'Forest Temple MQ First Room Chest': ("a #tree in the Forest Temple# supports", None, 'exclude'), 'Forest Temple MQ Wolfos Chest': ("#defeating enemies beneath a falling ceiling# in Forest Temple yields", None, 'exclude'), 'Forest Temple MQ Bow Chest': ("an #army of the dead# guards", "#Stalfos deep in the Forest Temple# guard", 'exclude'), @@ -535,7 +553,6 @@ def tokens_required_by_settings(world): 'Forest Temple MQ Falling Ceiling Room Chest': ("beneath a #checkerboard falling ceiling# lies", None, 'exclude'), 'Forest Temple MQ Basement Chest': ("#revolving walls# in the Forest Temple conceal", None, 'exclude'), 'Forest Temple MQ Redead Chest': ("deep in the forest #undead guard a chest# containing", None, 'exclude'), - 'Forest Temple MQ Boss Key Chest': ("a #turned trunk# contains", None, 'exclude'), 'Fire Temple Near Boss Chest': ("#near a dragon# is", None, 'exclude'), 'Fire Temple Flare Dancer Chest': ("the #Flare Dancer behind a totem# guards", None, 'exclude'), @@ -567,11 +584,9 @@ def tokens_required_by_settings(world): 'Water Temple Torches Chest': ("#fire in the Water Temple# reveals", None, 'exclude'), 'Water Temple Dragon Chest': ("a #serpent's prize# in the Water Temple is", None, 'exclude'), 'Water Temple Central Bow Target Chest': ("#blinding an eye# in the Water Temple leads to", None, 'exclude'), - 'Water Temple Central Pillar Chest': ("in the #depths of the Water Temple# lies", None, 'exclude'), 'Water Temple Cracked Wall Chest': ("#through a crack# in the Water Temple is", None, 'exclude'), 'Water Temple Longshot Chest': (["#facing yourself# reveals", "a #dark reflection# of yourself guards"], "#Dark Link# guards", 'exclude'), - 'Water Temple MQ Central Pillar Chest': ("in the #depths of the Water Temple# lies", None, 'exclude'), 'Water Temple MQ Boss Key Chest': ("fire in the Water Temple unlocks a #vast gate# revealing a chest with", None, 'exclude'), 'Water Temple MQ Longshot Chest': ("#through a crack# in the Water Temple is", None, 'exclude'), 'Water Temple MQ Compass Chest': ("#fire in the Water Temple# reveals", None, 'exclude'), @@ -628,8 +643,8 @@ def tokens_required_by_settings(world): 'Shadow Temple After Wind Enemy Chest': ("#mummies guarding a ferry# hide", None, 'exclude'), 'Shadow Temple After Wind Hidden Chest': ("#mummies guarding a ferry# hide", None, 'exclude'), 'Shadow Temple Spike Walls Left Chest': ("#walls consumed by a ball of fire# reveal", None, 'exclude'), + 'Shadow Temple Invisible Floormaster Chest': ("shadows in an #invisible maze# guard", None, 'exclude'), 'Shadow Temple Boss Key Chest': ("#walls consumed by a ball of fire# reveal", None, 'exclude'), - 'Shadow Temple Freestanding Key': ("#inside a burning skull# lies", None, 'exclude'), 'Shadow Temple MQ Compass Chest': ("the #Eye of Truth# pierces a hall of faces to reveal", None, 'exclude'), 'Shadow Temple MQ Hover Boots Chest': ("#Dead Hand in the Shadow Temple# holds", None, 'exclude'), @@ -642,7 +657,6 @@ def tokens_required_by_settings(world): 'Shadow Temple MQ Invisible Spikes Chest': ("the #dead roam among invisible spikes# guarding", None, 'exclude'), 'Shadow Temple MQ Boss Key Chest': ("#walls consumed by a ball of fire# reveal", None, 'exclude'), 'Shadow Temple MQ Spike Walls Left Chest': ("#walls consumed by a ball of fire# reveal", None, 'exclude'), - 'Shadow Temple MQ Stalfos Room Chest': ("near an #empty pedestal# within the Shadow Temple lies", None, 'exclude'), 'Shadow Temple MQ Invisible Blades Invisible Chest': ("#invisible blades# guard", None, 'exclude'), 'Shadow Temple MQ Invisible Blades Visible Chest': ("#invisible blades# guard", None, 'exclude'), 'Shadow Temple MQ Wind Hint Chest': ("an #invisible chest guarded by the dead# holds", None, 'exclude'), @@ -664,18 +678,18 @@ def tokens_required_by_settings(world): 'Bottom of the Well Fire Keese Chest': ("#perilous pits# in the well guard the path to", None, 'exclude'), 'Bottom of the Well Like Like Chest': ("#locked in a cage# in the well lies", None, 'exclude'), 'Bottom of the Well Freestanding Key': ("#inside a coffin# hides", None, 'exclude'), + 'Bottom of the Well Lens of Truth Chest': (["the well's #grasping ghoul# hides", "a #nether dweller in the well# holds"], "#Dead Hand in the well# holds", 'exclude'), + 'Bottom of the Well MQ Compass Chest': (["the well's #grasping ghoul# hides", "a #nether dweller in the well# holds"], "#Dead Hand in the well# holds", 'exclude'), 'Bottom of the Well MQ Map Chest': ("a #royal melody in the well# uncovers", None, 'exclude'), 'Bottom of the Well MQ Lens of Truth Chest': ("an #army of the dead# in the well guards", None, 'exclude'), 'Bottom of the Well MQ Dead Hand Freestanding Key': ("#Dead Hand's explosive secret# is", None, 'exclude'), 'Bottom of the Well MQ East Inner Room Freestanding Key': ("an #invisible path in the well# leads to", None, 'exclude'), - 'Ice Cavern Map Chest': ("#winds of ice# surround", None, 'exclude'), + 'Ice Cavern Map Chest': ("#winds of ice# surround", "a chest #atop a pillar of ice# contains", 'exclude'), 'Ice Cavern Compass Chest': ("a #wall of ice# protects", None, 'exclude'), - 'Ice Cavern Iron Boots Chest': ("a #monster in a frozen cavern# guards", None, 'exclude'), 'Ice Cavern Freestanding PoH': ("a #wall of ice# protects", None, 'exclude'), - 'Ice Cavern MQ Iron Boots Chest': ("a #monster in a frozen cavern# guards", None, 'exclude'), 'Ice Cavern MQ Compass Chest': ("#winds of ice# surround", None, 'exclude'), 'Ice Cavern MQ Map Chest': ("a #wall of ice# protects", None, 'exclude'), 'Ice Cavern MQ Freestanding PoH': ("#winds of ice# surround", None, 'exclude'), @@ -723,7 +737,6 @@ def tokens_required_by_settings(world): 'Ganons Castle Water Trial Left Chest': ("the #test of the seas# holds", None, 'exclude'), 'Ganons Castle Water Trial Right Chest': ("the #test of the seas# holds", None, 'exclude'), 'Ganons Castle Shadow Trial Front Chest': ("#music in the test of darkness# unveils", None, 'exclude'), - 'Ganons Castle Shadow Trial Golden Gauntlets Chest': ("#light in the test of darkness# unveils", None, 'exclude'), 'Ganons Castle Spirit Trial Crystal Switch Chest': ("the #test of the sands# holds", None, 'exclude'), 'Ganons Castle Spirit Trial Invisible Chest': ("the #test of the sands# holds", None, 'exclude'), 'Ganons Castle Light Trial First Left Chest': ("the #test of radiance# holds", None, 'exclude'), @@ -740,7 +753,6 @@ def tokens_required_by_settings(world): 'Ganons Castle MQ Forest Trial Frozen Eye Switch Chest': ("the #test of the wilds# holds", None, 'exclude'), 'Ganons Castle MQ Light Trial Lullaby Chest': ("#music in the test of radiance# reveals", None, 'exclude'), 'Ganons Castle MQ Shadow Trial Bomb Flower Chest': ("the #test of darkness# holds", None, 'exclude'), - 'Ganons Castle MQ Shadow Trial Eye Switch Chest': ("the #test of darkness# holds", None, 'exclude'), 'Ganons Castle MQ Spirit Trial Golden Gauntlets Chest': ("#reflected light in the test of the sands# reveals", None, 'exclude'), 'Ganons Castle MQ Spirit Trial Sun Back Right Chest': ("#reflected light in the test of the sands# reveals", None, 'exclude'), 'Ganons Castle MQ Spirit Trial Sun Back Left Chest': ("#reflected light in the test of the sands# reveals", None, 'exclude'), @@ -1293,6 +1305,20 @@ def tokens_required_by_settings(world): '2011': ("Today, let's begin down&'The Hero is Defeated' timeline.", None, 'ganonLine'), } +# Separate table for goal names to avoid duplicates in the hint table. +# Link's Pocket will always be an empty goal, but it's included here to +# prevent key errors during the dungeon reward lookup. +goalTable = { + 'Queen Gohma': ("path to the #Spider#", "path to #Queen Gohma#", "Green"), + 'King Dodongo': ("path to the #Dinosaur#", "path to #King Dodongo#", "Red"), + 'Barinade': ("path to the #Tentacle#", "path to #Barinade#", "Blue"), + 'Phantom Ganon': ("path to the #Puppet#", "path to #Phantom Ganon#", "Green"), + 'Volvagia': ("path to the #Dragon#", "path to #Volvagia#", "Red"), + 'Morpha': ("path to the #Amoeba#", "path to #Morpha#", "Blue"), + 'Bongo Bongo': ("path to the #Hands#", "path to #Bongo Bongo#", "Pink"), + 'Twinrova': ("path to the #Witches#", "path to #Twinrova#", "Yellow"), + 'Links Pocket': ("path to #Links Pocket#", "path to #Links Pocket#", "Light Blue"), +} # This specifies which hints will never appear due to either having known or known useless contents or due to the locations not existing. def hintExclusions(world, clear_cache=False): @@ -1317,7 +1343,8 @@ def hintExclusions(world, clear_cache=False): 'sometimes', 'overworld', 'dungeon', - 'song']): + 'song', + 'exclude']): location_hints.append(hint) for hint in location_hints: @@ -1329,9 +1356,9 @@ def hintExclusions(world, clear_cache=False): def nameIsLocation(name, hint_type, world): if isinstance(hint_type, (list, tuple)): for htype in hint_type: - if htype in ['sometimes', 'song', 'overworld', 'dungeon', 'always'] and name not in hintExclusions(world): + if htype in ['sometimes', 'song', 'overworld', 'dungeon', 'always', 'exclude'] and name not in hintExclusions(world): return True - elif hint_type in ['sometimes', 'song', 'overworld', 'dungeon', 'always'] and name not in hintExclusions(world): + elif hint_type in ['sometimes', 'song', 'overworld', 'dungeon', 'always', 'exclude'] and name not in hintExclusions(world): return True return False diff --git a/Hints.py b/Hints.py index 33daef3a4..f6ad16d2a 100644 --- a/Hints.py +++ b/Hints.py @@ -350,11 +350,7 @@ def get_woth_hint(spoiler, world, checked): else: location_text = get_hint_area(location) - if world.settings.triforce_hunt: - return (GossipText('#%s# is on the path of gold.' % location_text, ['Light Blue']), location) - else: - return (GossipText('#%s# is on the way of the hero.' % location_text, ['Light Blue']), location) - + return (GossipText('#%s# is on the way of the hero.' % location_text, ['Light Blue']), location) def get_checked_areas(world, checked): def get_area_from_name(check): @@ -366,6 +362,102 @@ def get_area_from_name(check): return set(get_area_from_name(check) for check in checked) +def get_goal_category(spoiler, world, goal_categories): + cat_sizes = [] + cat_names = [] + zero_weights = True + goal_category = None + for cat_name, category in goal_categories.items(): + # Only add weights if the category has goals with hintable items + if world.id in spoiler.goal_locations and cat_name in spoiler.goal_locations[world.id]: + # Build lists for weighted choice + if category.weight > 0: + zero_weights = False + cat_sizes.append(category.weight) + cat_names.append(category.name) + # Depends on category order to choose next in the priority list + # Each category is guaranteed a hint first round, then weighted based on goal count + if not goal_category and category.name not in world.hinted_categories: + goal_category = category + world.hinted_categories.append(category.name) + + # random choice if each category has at least one hint + if not goal_category and len(cat_names) > 0: + if zero_weights: + goal_category = goal_categories[random.choice(cat_names)] + else: + goal_category = goal_categories[random.choices(cat_names, weights=cat_sizes)[0]] + + return goal_category + +def get_goal_hint(spoiler, world, checked): + goal_category = get_goal_category(spoiler, world, world.goal_categories) + + # check if no goals were generated (and thus no categories available) + if not goal_category: + return None + + goals = goal_category.goals + goal_locations = [] + + # Choose random goal and check if any locations are already hinted. + # If all locations for a goal are hinted, remove the goal from the list and try again. + # If all locations for all goals are hinted, try remaining goal categories + # If all locations for all goal categories are hinted, return no hint. + while not goal_locations: + if not goals: + del world.goal_categories[goal_category.name] + goal_category = get_goal_category(spoiler, world, world.goal_categories) + if not goal_category: + return None + else: + goals = goal_category.goals + + weights = [] + zero_weights = True + for goal in goals: + if goal.weight > 0: + zero_weights = False + weights.append(goal.weight) + + if zero_weights: + goal = random.choice(goals) + else: + goal = random.choices(goals, weights=weights)[0] + + goal_locations = list(filter(lambda location: + location[0].name not in checked + and location[0].name not in world.hint_exclusions + and location[0].name not in world.hint_type_overrides['goal'] + and location[0].item.name not in world.item_hint_type_overrides['goal'], + goal.required_locations)) + + if not goal_locations: + goals.remove(goal) + + # Goal weight to zero mitigates double hinting this goal + # Once all goals in a category are 0, selection is true random + goal.weight = 0 + location_tuple = random.choice(goal_locations) + location = location_tuple[0] + world_ids = location_tuple[3] + world_id = random.choice(world_ids) + checked.add(location.name) + + if location.parent_region.dungeon: + location_text = getHint(location.parent_region.dungeon.name, world.settings.clearer_hints).text + else: + location_text = get_hint_area(location) + + if world_id == world.id: + player_text = "the" + goal_text = goal.hint_text + else: + player_text = "Player %s's" % (world_id + 1) + goal_text = spoiler.goal_categories[world_id][goal_category.name].get_goal(goal.name).hint_text + + return (GossipText('#%s# is on %s %s.' % (location_text, player_text, goal_text), [goal.color, 'Light Blue']), location) + def get_barren_hint(spoiler, world, checked): if not hasattr(world, 'get_barren_hint_prev'): @@ -612,6 +704,7 @@ def get_junk_hint(spoiler, world, checked): 'trial': lambda spoiler, world, checked: None, 'always': lambda spoiler, world, checked: None, 'woth': get_woth_hint, + 'goal': get_goal_hint, 'barren': get_barren_hint, 'item': get_good_item_hint, 'sometimes': get_sometimes_hint, @@ -628,6 +721,7 @@ def get_junk_hint(spoiler, world, checked): 'trial', 'always', 'woth', + 'goal', 'barren', 'item', 'song', @@ -705,8 +799,6 @@ def buildGossipHints(spoiler, worlds): # builds out general hints based on location and whether an item is required or not def buildWorldGossipHints(spoiler, world, checkedLocations=None): - # rebuild hint exclusion list - hintExclusions(world, clear_cache=True) world.barren_dungeon = 0 world.woth_dungeon = 0 diff --git a/Item.py b/Item.py index e79e4b610..a759706c7 100644 --- a/Item.py +++ b/Item.py @@ -150,26 +150,7 @@ def majoritem(self): @property def goalitem(self): - if self.name == 'Triforce Piece': - return self.world.settings.triforce_hunt - if self.name == 'Light Arrows': - return self.world.settings.bridge == 'vanilla' - if self.info.medallion: - settings = ['medallions', 'dungeons'] - if self.name in ['Shadow Medallion', 'Spirit Medallion']: - settings.append('vanilla') - return self.world.settings.bridge in settings \ - or self.world.settings.shuffle_ganon_bosskey in ['medallions', 'dungeons'] \ - or (self.world.settings.shuffle_ganon_bosskey == 'on_lacs' and self.world.settings.lacs_condition in settings) - if self.info.stone: - return self.world.settings.bridge in ['stones', 'dungeons'] \ - or self.world.settings.shuffle_ganon_bosskey in ['stones', 'dungeons'] \ - or (self.world.settings.shuffle_ganon_bosskey == 'on_lacs' and self.world.settings.lacs_condition in ['stones', 'dungeons']) - if self.type == 'Token': - return self.world.settings.bridge == 'tokens' \ - or self.world.settings.shuffle_ganon_bosskey == 'tokens' \ - or (self.world.settings.shuffle_ganon_bosskey == 'on_lacs' and self.world.settings.lacs_condition == 'tokens') - #TODO check Bingo goals + return self.name in self.world.goal_items def __str__(self): diff --git a/ItemPool.py b/ItemPool.py index 0bc0b04a6..ba749a750 100644 --- a/ItemPool.py +++ b/ItemPool.py @@ -106,8 +106,8 @@ 'Bombchus (5)': 1, 'Bombchus (10)': 0, 'Bombchus (20)': 0, - 'Nayrus Love': 0, 'Magic Meter': 1, + 'Nayrus Love': 1, 'Double Defense': 0, 'Deku Stick Capacity': 0, 'Deku Nut Capacity': 0, @@ -1337,9 +1337,6 @@ def get_pool_core(world): for item,max in item_difficulty_max[world.settings.item_pool_value].items(): replace_max_item(pool, item, max) - if world.settings.damage_multiplier in ['ohko', 'quadruple'] and world.settings.item_pool_value == 'minimal': - pending_junk_pool.append('Nayrus Love') - world.distribution.alter_pool(world, pool) # Make sure our pending_junk_pool is empty. If not, remove some random junk here. diff --git a/Main.py b/Main.py index d33cf70c1..1df448176 100644 --- a/Main.py +++ b/Main.py @@ -33,6 +33,7 @@ from Search import Search, RewindableSearch from EntranceShuffle import set_entrances from LocationList import set_drop_location_names +from Goals import update_goal_items, maybe_set_light_arrows, replace_goal_names class dummy_window(): @@ -120,6 +121,8 @@ def resolve_settings(settings, window=dummy_window()): def generate(settings, window=dummy_window()): worlds = build_world_graphs(settings, window=window) place_items(settings, worlds, window=window) + if worlds[0].enable_goal_hints: + replace_goal_names(worlds) return make_spoiler(settings, worlds, window=window) @@ -189,7 +192,7 @@ def make_spoiler(settings, worlds, window=dummy_window()): if settings.create_spoiler or settings.hints != 'none': window.update_status('Calculating Hint Data') logger.info('Calculating hint data.') - update_required_items(spoiler) + update_goal_items(spoiler) buildGossipHints(spoiler, worlds) window.update_progress(55) elif settings.misc_hints: @@ -541,12 +544,6 @@ def copy_worlds(worlds): return worlds -def maybe_set_light_arrows(location): - if not location.item.world.light_arrow_location and location.item and location.item.name == 'Light Arrows': - location.item.world.light_arrow_location = location - logging.getLogger('').debug(f'Light Arrows [{location.item.world.id}] set to [{location.name}]') - - def find_light_arrows(spoiler): search = Search([world.state for world in spoiler.worlds]) for location in search.iter_reachable_locations(search.progression_locations()): @@ -554,53 +551,6 @@ def find_light_arrows(spoiler): maybe_set_light_arrows(location) -def update_required_items(spoiler): - worlds = spoiler.worlds - - # get list of all of the progressive items that can appear in hints - # all_locations: all progressive items. have to collect from these - # item_locations: only the ones that should appear as "required"/WotH - all_locations = [location for world in worlds for location in world.get_filled_locations()] - # Set to test inclusion against - item_locations = {location for location in all_locations if location.item.majoritem and not location.locked and location.item.name != 'Triforce Piece'} - - # if the playthrough was generated, filter the list of locations to the - # locations in the playthrough. The required locations is a subset of these - # locations. Can't use the locations directly since they are location to the - # copied spoiler world, so must compare via name and world id - if spoiler.playthrough: - translate = lambda loc: worlds[loc.world.id].get_location(loc.name) - spoiler_locations = set(map(translate, itertools.chain.from_iterable(spoiler.playthrough.values()))) - item_locations &= spoiler_locations - # Skip even the checks - _maybe_set_light_arrows = lambda _: None - else: - _maybe_set_light_arrows = maybe_set_light_arrows - - required_locations = [] - - search = Search([world.state for world in worlds]) - - for location in search.iter_reachable_locations(all_locations): - # Try to remove items one at a time and see if the game is still beatable - if location in item_locations: - old_item = location.item - location.item = None - # copies state! This is very important as we're in the middle of a search - # already, but beneficially, has search it can start from - if not search.can_beat_game(): - required_locations.append(location) - location.item = old_item - _maybe_set_light_arrows(location) - search.state_list[location.item.world.id].collect(location.item) - - # Filter the required location to only include location in the world - required_locations_dict = {} - for world in worlds: - required_locations_dict[world.id] = list(filter(lambda location: location.world.id == world.id, required_locations)) - spoiler.required_locations = required_locations_dict - - def create_playthrough(spoiler): worlds = spoiler.worlds if worlds[0].check_beatable_only and not Search([world.state for world in worlds]).can_beat_game(): @@ -643,6 +593,8 @@ def create_playthrough(spoiler): search.state_list[location.item.world.id].collect(location.item) maybe_set_light_arrows(location) logger.info('Collected %d spheres', len(collection_spheres)) + spoiler.full_playthrough = dict((location.name, i + 1) for i, sphere in enumerate(collection_spheres) for location in sphere) + spoiler.max_sphere = len(collection_spheres) # Reduce each sphere in reverse order, by checking if the game is beatable # when we remove the item. We do this to make sure that progressive items diff --git a/Plandomizer.py b/Plandomizer.py index 6777f1893..ea51b58a8 100644 --- a/Plandomizer.py +++ b/Plandomizer.py @@ -38,6 +38,7 @@ class InvalidFileException(Exception): 'entrances', 'locations', ':woth_locations', + ':goal_locations', ':barren_regions', 'gossip_stones', ) @@ -237,6 +238,7 @@ def update(self, src_dict, update_all=False): 'entrances': {name: EntranceRecord(record) for (name, record) in src_dict.get('entrances', {}).items()}, 'locations': {name: [LocationRecord(rec) for rec in record] if is_pattern(name) else LocationRecord(record) for (name, record) in src_dict.get('locations', {}).items() if not is_output_only(name)}, 'woth_locations': None, + 'goal_locations': None, 'barren_regions': None, 'gossip_stones': {name: [GossipRecord(rec) for rec in record] if is_pattern(name) else GossipRecord(record) for (name, record) in src_dict.get('gossip_stones', {}).items()}, } @@ -268,6 +270,7 @@ def to_json(self): 'entrances': {name: record.to_json() for (name, record) in self.entrances.items()}, 'locations': {name: [rec.to_json() for rec in record] if is_pattern(name) else record.to_json() for (name, record) in self.locations.items()}, ':woth_locations': None if self.woth_locations is None else {name: record.to_json() for (name, record) in self.woth_locations.items()}, + ':goal_locations': self.goal_locations, ':barren_regions': self.barren_regions, 'gossip_stones': SortedDict({name: [rec.to_json() for rec in record] if is_pattern(name) else record.to_json() for (name, record) in self.gossip_stones.items()}), } @@ -1162,6 +1165,20 @@ def update_spoiler(self, spoiler, output_spoiler): world_dist.entrances = {ent.name: EntranceRecord.from_entrance(ent) for ent in spoiler.entrances[world.id]} world_dist.locations = {loc: LocationRecord.from_item(item) for (loc, item) in spoiler.locations[world.id].items()} world_dist.woth_locations = {loc.name: LocationRecord.from_item(loc.item) for loc in spoiler.required_locations[world.id]} + world_dist.goal_locations = {} + if world.id in spoiler.goal_locations and spoiler.goal_locations[world.id]: + for cat_name, goals in spoiler.goal_locations[world.id].items(): + world_dist.goal_locations[cat_name] = {} + for goal_name, location_worlds in goals.items(): + goal = spoiler.goal_categories[world.id][cat_name].get_goal(goal_name) + goal_text = goal.hint_text.replace('#', '') + goal_text = goal_text[0].upper() + goal_text[1:] + world_dist.goal_locations[cat_name][goal_text] = {} + for location_world, locations in location_worlds.items(): + if len(self.world_dists) == 1: + world_dist.goal_locations[cat_name][goal_text] = {loc.name: LocationRecord.from_item(loc.item).to_json() for loc in locations} + else: + world_dist.goal_locations[cat_name][goal_text]['from World ' + str(location_world + 1)] = {loc.name: LocationRecord.from_item(loc.item).to_json() for loc in locations} world_dist.barren_regions = [*world.empty_areas] world_dist.gossip_stones = {gossipLocations[loc].name: GossipRecord(spoiler.hints[world.id][loc].to_json()) for loc in spoiler.hints[world.id]} diff --git a/README.md b/README.md index 3a054192f..1559b9c93 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,9 @@ do that. * New separate setting `LACS Condition` to select what goal items are required for the Light Arrows Cutscene. * New option `Misc. Hints` controls whether the Temple of Time altar and Ganondorf give hints, defaulting on to preserve behavior. Hell Mode disables this setting. * New `Rainbow Bridge` option `Random` that will choose one of the other options at random (besides Skulltula Tokens), and require the maximum of that goal (if applicable). +* New `goal` hint type for use in custom hint distributions. + * Default goals are included for the rainbow bridge, Ganon's Castle Boss Key, and trials settings. + * Hints read as "They say that Kokiri Forest is on the path to Twinrova.", where the medallion or stone reward from defeating Twinrova can be used for the bridge or Ganon's Castle Boss Key. Twinrova is not necessarily required depending on other settings. For example, with 2 medallions for the bridge, all medallions accessible without entering Ganon's Castle, and Spirit Medallion on Twinrova, the hint only points to one possible path to building the rainbow bridge. #### Bug Fixes @@ -144,6 +147,7 @@ do that. * Hint distributions can now filter areas from being hinted as foolish, via putting the area names in `remove_locations`. * Improved support for certain Unicode characters and control characters in hint texts. * Provide the dungeon name when hinting keys. +* Updated sometimes hints. * Renamed some regions, locations, items, etc to make vanilla names. This will make Plandomizer files incompatible between versions. * Gerudo Training **Grounds** -> Gerudo Training **Ground** * Gerudo Fortress -> Thieves' Hideout (when referring to the interior areas or the carpenter rescue quest) diff --git a/Search.py b/Search.py index ce37b8803..443aaf80a 100644 --- a/Search.py +++ b/Search.py @@ -236,6 +236,63 @@ def can_beat_game(self, scan_for_items=True): else: return False + + def can_beat_goals_fast(self, goal_categories, world_filter = None): + valid_goals = self.test_category_goals(goal_categories, world_filter) + if all(map(State.won, self.state_list)): + valid_goals['way of the hero'] = True + else: + valid_goals['way of the hero'] = False + return valid_goals + + + def can_beat_goals(self, goal_categories): + # collect all available items + # make a new search since we might be iterating over one already + search = self.copy() + search.collect_locations() + valid_goals = search.test_category_goals(goal_categories) + if all(map(State.won, search.state_list)): + valid_goals['way of the hero'] = True + else: + valid_goals['way of the hero'] = False + return valid_goals + + + def test_category_goals(self, goal_categories, world_filter = None): + valid_goals = {} + for category_name, category in goal_categories.items(): + valid_goals[category_name] = {} + valid_goals[category_name]['stateReverse'] = {} + for state in self.state_list: + # Must explicitly test for None as the world filter can be 0 + # for the first world ID + # Skips item search when an entrance lock is active to avoid + # mixing accessible goals with/without the entrance lock in + # multiworld + if world_filter is not None and state.world.id != world_filter: + continue + valid_goals[category_name]['stateReverse'][state.world.id] = [] + for goal in category.goals: + if goal.name not in valid_goals[category_name]: + valid_goals[category_name][goal.name] = [] + # Check if already beaten + if all(map(lambda i: state.has_full_item_goal(category, goal, i), goal.items)): + valid_goals[category_name][goal.name].append(state.world.id) + # Reverse lookup for checking if the category is already beaten. + # Only used to check if starting items satisfy the category. + valid_goals[category_name]['stateReverse'][state.world.id].append(goal.name) + return valid_goals + + + def collect_pseudo_starting_items(self): + for state in self.state_list: + # Skip Child Zelda and Link's Pocket are not technically starting items, so collect them now + if state.world.settings.skip_child_zelda: + self.collect(state.world.get_location('Song from Impa').item) + self.collect(state.world.get_location('Links Pocket').item) + + # Use the cache in the search to determine region reachability. # Implicitly requires is_starting_age or Time_Travel. def can_reach(self, region, age=None, tod=TimeOfDay.NONE): @@ -255,6 +312,9 @@ def can_reach(self, region, age=None, tod=TimeOfDay.NONE): # treat None as either return self.can_reach(region, age='adult', tod=tod) or self.can_reach(region, age='child', tod=tod) + def can_reach_spot(self, state, locationName, age=None, tod=TimeOfDay.NONE): + location = state.world.get_location(locationName) + return self.spot_access(location, age, tod) # Use the cache in the search to determine location reachability. # Only works for locations that had progression items... diff --git a/SettingsToJson.py b/SettingsToJson.py index eda600da0..11ded72a3 100755 --- a/SettingsToJson.py +++ b/SettingsToJson.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 +from Hints import HintDistFiles from SettingsList import setting_infos, setting_map, get_setting_info, get_settings_from_section, get_settings_from_tab -from Utils import data_path +from Utils import data_path, read_json import sys import json import copy @@ -227,6 +228,7 @@ def CreateJSON(path, web_version=False): 'settingsArray' : [], 'cosmeticsObj' : {}, 'cosmeticsArray': [], + 'distroArray' : [], } for tab in setting_map['Tabs']: @@ -243,6 +245,11 @@ def CreateJSON(path, web_version=False): if tab.get('is_cosmetics', False): settingOutputJson['cosmeticsObj'][tab['name']] = tabJsonObj settingOutputJson['cosmeticsArray'].append(tabJsonArr) + + for d in HintDistFiles(): + dist = read_json(d) + if dist['distribution']['goal']['weight'] != 0 or dist['distribution']['goal']['fixed'] != 0: + settingOutputJson['distroArray'].append(dist['name']) with open(path, 'w') as f: json.dump(settingOutputJson, f) diff --git a/Spoiler.py b/Spoiler.py index 5e63c7b5c..a07d48a15 100644 --- a/Spoiler.py +++ b/Spoiler.py @@ -50,10 +50,14 @@ def __init__(self, worlds): self.settings = worlds[0].settings self.playthrough = {} self.entrance_playthrough = {} + self.full_playthrough = {} + self.max_sphere = 0 self.locations = {} self.entrances = [] self.metadata = {} self.required_locations = {} + self.goal_locations = {} + self.goal_categories = {} self.hints = {world.id: {} for world in worlds} self.file_hash = [] diff --git a/State.py b/State.py index 5ccae05dd..65cc63de5 100644 --- a/State.py +++ b/State.py @@ -98,6 +98,16 @@ def has_dungeon_rewards(self, count): return (self.count_of(ItemInfo.medallions) + self.count_of(ItemInfo.stones)) >= count + def has_item_goal(self, item_goal): + return self.prog_items[item_goal['name']] >= item_goal['minimum'] + + + def has_full_item_goal(self, category, goal, item_goal): + local_goal = self.world.goal_categories[category.name].get_goal(goal.name) + per_world_max_quantity = local_goal.get_item(item_goal['name'])['quantity'] + return self.prog_items[item_goal['name']] >= per_world_max_quantity + + def had_night_start(self): stod = self.world.settings.starting_tod # These are all not between 6:30 and 18:00 diff --git a/World.py b/World.py index 53e2c6ee3..132af7cd0 100644 --- a/World.py +++ b/World.py @@ -1,14 +1,18 @@ +from collections import OrderedDict import copy +from decimal import Decimal, ROUND_HALF_UP import logging import random import os from DungeonList import create_dungeons from Entrance import Entrance +from Goals import Goal, GoalCategory from HintList import getRequiredHints from Hints import get_hint_area, hint_dist_keys, HintDistFiles from Item import Item, ItemFactory, MakeEventItem from ItemList import item_table +from ItemPool import TriforceCounts from Location import Location, LocationFactory from LocationList import business_scrubs from Plandomizer import InvalidFileException @@ -23,7 +27,6 @@ class World(object): def __init__(self, id, settings, resolveRandomizedSettings=True): self.id = id - self.shuffle = 'vanilla' self.dungeons = [] self.regions = [] self.itempool = [] @@ -178,8 +181,8 @@ def __init__(self, id, settings, resolveRandomizedSettings=True): max_tokens = 0 if self.settings.bridge == 'tokens': max_tokens = max(max_tokens, self.settings.bridge_tokens) - if self.settings.lacs_condition == 'tokens': - max_tokens = max(max_tokens, self.settings.lacs_tokens) + if self.settings.shuffle_ganon_bosskey == 'tokens': + max_tokens = max(max_tokens, self.settings.ganon_bosskey_tokens) tokens = [50, 40, 30, 20, 10] for t in tokens: if f'{t} Gold Skulltula Reward' not in self.settings.disabled_locations: @@ -188,6 +191,49 @@ def __init__(self, id, settings, resolveRandomizedSettings=True): # Additional Ruto's Letter become Bottle, so we may have to collect two. self.max_progressions['Rutos Letter'] = 2 + # Disable goal hints if the hint distro does not require them. + # WOTH locations are always searched. + self.enable_goal_hints = self.hint_dist_user['distribution']['goal']['fixed'] != 0 or self.hint_dist_user['distribution']['goal']['weight'] != 0 + + # Initialize default goals for win condition + self.goal_categories = OrderedDict() + if self.hint_dist_user['use_default_goals']: + self.set_goals() + + # import goals from hint plando + if 'custom_goals' in self.hint_dist_user: + for category in self.hint_dist_user['custom_goals']: + if category['category'] in self.goal_categories: + cat = self.goal_categories[category['category']] + else: + cat = GoalCategory(category['category'], category['priority'], minimum_goals=category['minimum_goals']) + for goal in category['goals']: + cat.add_goal(Goal(self, goal['name'], goal['hint_text'], goal['color'], items=list({'name': i['name'], 'quantity': i['quantity'], 'minimum': i['minimum'], 'hintable': i['hintable']} for i in goal['items']))) + if 'count_override' in category: + cat.goal_count = category['count_override'] + else: + cat.goal_count = len(cat.goals) + if 'lock_entrances' in category: + cat.lock_entrances = list(category['lock_entrances']) + self.goal_categories[cat.name] = cat + + # Sort goal hint categories by priority + # For most settings this will be Bridge, GBK + self.goal_categories = OrderedDict(sorted(self.goal_categories.items(), key=lambda kv: kv[1].priority)) + + # initialize category check for first rounds of goal hints + self.hinted_categories = [] + + # Quick item lookup for All Goals Reachable setting + self.goal_items = [] + for cat_name, category in self.goal_categories.items(): + for goal in category.goals: + for item in goal.items: + self.goal_items.append(item['name']) + + # Separate goal categories into locked and unlocked for search optimization + self.locked_goal_categories = dict(filter(lambda category: category[1].lock_entrances, self.goal_categories.items())) + self.unlocked_goal_categories = dict(filter(lambda category: not category[1].lock_entrances, self.goal_categories.items())) def copy(self): new_world = World(self.id, self.settings, False) @@ -495,6 +541,213 @@ def fill_bosses(self, bossCount=9): loc = prize_locs.pop() self.push_item(loc, item) + def set_goals(self): + # Default goals are divided into 3 primary categories: + # Bridge, Ganon's Boss Key, and Trials + # The Triforce Hunt goal is mutually exclusive with + # these categories given the vastly different playstyle. + # + # Goal priorities determine where hintable locations are placed. + # For example, an item required for both trials and bridge would + # be hinted only for bridge. This accomplishes two objectives: + # 1) Locations are not double counted for different stages + # of the game + # 2) Later category location lists are not diluted by early + # to mid game locations + # + # Entrance locks set restrictions on all goals in a category to + # ensure unreachable goals are not hintable. This is only used + # for the Rainbow Bridge to filter out goals hard-locked by + # Inside Ganon's Castle access. + # + # Minimum goals for a category tell the randomizer if the + # category meta-goal is satisfied by starting items. This + # is straightforward for dungeon reward goals where X rewards + # is the same as the minimum goals. For Triforce Hunt, Trials, + # and Skull conditions, there is only one goal in the category + # requesting X copies within the goal, so minimum goals has to + # be 1 for these. + b = GoalCategory('rainbow_bridge', 10, lock_entrances=['Ganons Castle Grounds -> Ganons Castle Lobby']) + gbk = GoalCategory('ganon_bosskey', 20) + trials = GoalCategory('trials', 30, minimum_goals=1) + th = GoalCategory('triforce_hunt', 30, goal_count=round(self.settings.triforce_goal_per_world / 10), minimum_goals=1) + trial_goal = Goal(self, 'the Tower', 'path to the Tower', 'White', items=[], create_empty=True) + + if self.settings.triforce_hunt and self.settings.triforce_goal_per_world > 0: + triforce_count = int((TriforceCounts[self.settings.item_pool_value] * self.settings.triforce_goal_per_world).to_integral_value(rounding=ROUND_HALF_UP)) + # "Hintable" value of False means the goal items themselves cannot + # be hinted directly. This is used for Triforce Hunt and Skull + # conditions to restrict hints to useful items instead of the win + # condition. Dungeon rewards do not need this restriction as they are + # already unhintable at a lower level. + # + # This restriction does NOT apply to Light Arrows or Ganon's Castle Boss + # Key, which makes these items directly hintable in their respective goals + # assuming they do not get hinted by another hint type (always, woth with + # an earlier order in the hint distro, etc). + th.add_goal(Goal(self, 'gold', 'path of gold', 'Yellow', items=[{'name': 'Triforce Piece', 'quantity': triforce_count, 'minimum': self.settings.triforce_goal_per_world, 'hintable': False}])) + self.goal_categories[th.name] = th + # Category goals are defined for each possible setting for each category. + # Bridge can be Stones, Medallions, Dungeons, Skulls, or Vanilla. + # Ganon's Boss Key can be Stones, Medallions, Dungeons, Skulls, LACS or + # one of the keysanity variants. + # Trials is one goal that is only on if at least one trial is on in the world. + # If there are no win conditions beyond Kill Ganon (open bridge, GBK removed, + # no trials), a fallback "path of the hero" clone of WOTH is created. Path + # wording is used to distinguish the hint type even though the hintable location + # set is identical to WOTH. + if not self.settings.triforce_hunt: + # Bridge goals will always be defined as they have the most immediate priority + if self.settings.bridge != 'open': + # "Replace" hint text dictionaries are used to reference the + # dungeon boss holding the specified reward. Only boss names/paths + # are defined for this feature, and it is not extendable via plando. + # Goal hint text colors are based on the dungeon reward, not the boss. + if ((self.settings.bridge_stones > 0 and self.settings.bridge == 'stones') or (self.settings.bridge_rewards > 0 and self.settings.bridge == 'dungeons')): + b.add_goal(Goal(self, 'Kokiri Emerald', { 'replace': 'Kokiri Emerald' }, 'Light Blue', items=[{'name': 'Kokiri Emerald', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + b.add_goal(Goal(self, 'Goron Ruby', { 'replace': 'Goron Ruby' }, 'Light Blue', items=[{'name': 'Goron Ruby', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + b.add_goal(Goal(self, 'Zora Sapphire', { 'replace': 'Zora Sapphire' }, 'Light Blue', items=[{'name': 'Zora Sapphire', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + b.minimum_goals = self.settings.bridge_stones if self.settings.bridge == 'stones' else self.settings.bridge_rewards + if (self.settings.bridge_medallions > 0 and self.settings.bridge == 'medallions') or (self.settings.bridge_rewards > 0 and self.settings.bridge == 'dungeons'): + b.add_goal(Goal(self, 'Forest Medallion', { 'replace': 'Forest Medallion' }, 'Green', items=[{'name': 'Forest Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + b.add_goal(Goal(self, 'Fire Medallion', { 'replace': 'Fire Medallion' }, 'Red', items=[{'name': 'Fire Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + b.add_goal(Goal(self, 'Water Medallion', { 'replace': 'Water Medallion' }, 'Blue', items=[{'name': 'Water Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + b.add_goal(Goal(self, 'Shadow Medallion', { 'replace': 'Shadow Medallion' }, 'Pink', items=[{'name': 'Shadow Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + b.add_goal(Goal(self, 'Spirit Medallion', { 'replace': 'Spirit Medallion' }, 'Yellow', items=[{'name': 'Spirit Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + b.add_goal(Goal(self, 'Light Medallion', { 'replace': 'Light Medallion' }, 'Light Blue', items=[{'name': 'Light Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + b.minimum_goals = self.settings.bridge_medallions if self.settings.bridge == 'medallions' else self.settings.bridge_rewards + if self.settings.bridge == 'vanilla': + b.add_goal(Goal(self, 'Shadow Medallion', { 'replace': 'Shadow Medallion' }, 'Pink', items=[{'name': 'Shadow Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + b.add_goal(Goal(self, 'Spirit Medallion', { 'replace': 'Spirit Medallion' }, 'Yellow', items=[{'name': 'Spirit Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + min_goals = 2 + # With plentiful item pool, multiple copies of Light Arrows are available, + # but both are not guaranteed reachable. Setting a goal quantity of the + # item pool value with a minimum quantity of 1 attempts to hint all items + # required to get all copies of Light Arrows, but will fall back to just + # one copy if the other is unreachable. + # + # Similar criteria is used for Ganon's Boss Key in plentiful keysanity. + if not 'Light Arrows' in self.item_added_hint_types['always']: + if self.settings.item_pool_value == 'plentiful': + arrows = 2 + else: + arrows = 1 + b.add_goal(Goal(self, 'Evil\'s Bane', 'path to Evil\'s Bane', 'Light Blue', items=[{'name': 'Light Arrows', 'quantity': arrows, 'minimum': 1, 'hintable': True}])) + min_goals += 1 + b.minimum_goals = min_goals + # Goal count within a category is currently unused. Testing is in progress + # to potentially use this for weighting certain goals for hint selection. + b.goal_count = len(b.goals) + if (self.settings.bridge_tokens > 0 + and self.settings.bridge == 'tokens' + and (self.settings.shuffle_ganon_bosskey != 'tokens' + or self.settings.bridge_tokens >= self.settings.ganon_bosskey_tokens)): + b.add_goal(Goal(self, 'Skulls', 'path of Skulls', 'Light Blue', items=[{'name': 'Gold Skulltula Token', 'quantity': 100, 'minimum': self.settings.bridge_tokens, 'hintable': False}])) + b.goal_count = round(self.settings.bridge_tokens / 10) + b.minimum_goals = 1 + self.goal_categories[b.name] = b + + # If the Ganon's Boss Key condition is the same or similar conditions + # as Bridge, do not create the goals if Bridge goals already cover + # GBK goals. For example, 3 dungeon GBK would not have its own goals + # if it is 4 medallion bridge. + # + # Even if created, there is no guarantee GBK goals will find new + # locations to hint. If duplicate goals are defined for Bridge and + # all of these goals are accessible without Ganon's Castle access, + # the GBK category is redundant and not used for hint selection. + if ((self.settings.ganon_bosskey_stones > 0 + and self.settings.shuffle_ganon_bosskey == 'stones' + and (self.settings.ganon_bosskey_stones > self.settings.bridge_stones or self.settings.bridge != 'stones')) + or (self.settings.ganon_bosskey_rewards > 0 + and self.settings.shuffle_ganon_bosskey == 'dungeons' + and ((self.settings.ganon_bosskey_rewards > self.settings.bridge_medallions and self.settings.bridge == 'medallions') + or (self.settings.ganon_bosskey_rewards > self.settings.bridge_stones and self.settings.bridge == 'stones') + or (self.settings.ganon_bosskey_rewards > self.settings.bridge_rewards and self.settings.bridge == 'dungeons') + or (self.settings.ganon_bosskey_rewards > 2 and self.settings.bridge == 'vanilla')))): + gbk.add_goal(Goal(self, 'Kokiri Emerald', { 'replace': 'Kokiri Emerald' }, 'Yellow', items=[{'name': 'Kokiri Emerald', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.add_goal(Goal(self, 'Goron Ruby', { 'replace': 'Goron Ruby' }, 'Yellow', items=[{'name': 'Goron Ruby', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.add_goal(Goal(self, 'Zora Sapphire', { 'replace': 'Zora Sapphire' }, 'Yellow', items=[{'name': 'Zora Sapphire', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.minimum_goals = self.settings.ganon_bosskey_stones if self.settings.shuffle_ganon_bosskey == 'stones' else self.settings.ganon_bosskey_rewards + if ((self.settings.ganon_bosskey_medallions > 0 + and self.settings.shuffle_ganon_bosskey == 'medallions' + and (self.settings.ganon_bosskey_medallions > self.settings.bridge_medallions or self.settings.bridge != 'medallions') + and (self.settings.ganon_bosskey_medallions > 2 or self.settings.bridge != 'vanilla')) + or (self.settings.ganon_bosskey_rewards > 0 + and self.settings.shuffle_ganon_bosskey == 'dungeons' + and ((self.settings.ganon_bosskey_rewards > self.settings.bridge_medallions and self.settings.bridge == 'medallions') + or (self.settings.ganon_bosskey_rewards > self.settings.bridge_stones and self.settings.bridge == 'stones') + or (self.settings.ganon_bosskey_rewards > self.settings.bridge_rewards and self.settings.bridge == 'dungeons') + or (self.settings.ganon_bosskey_rewards > 2 and self.settings.bridge == 'vanilla')))): + gbk.add_goal(Goal(self, 'Forest Medallion', { 'replace': 'Forest Medallion' }, 'Green', items=[{'name': 'Forest Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.add_goal(Goal(self, 'Fire Medallion', { 'replace': 'Fire Medallion' }, 'Red', items=[{'name': 'Fire Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.add_goal(Goal(self, 'Water Medallion', { 'replace': 'Water Medallion' }, 'Blue', items=[{'name': 'Water Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.add_goal(Goal(self, 'Shadow Medallion', { 'replace': 'Shadow Medallion' }, 'Pink', items=[{'name': 'Shadow Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.add_goal(Goal(self, 'Spirit Medallion', { 'replace': 'Spirit Medallion' }, 'Yellow', items=[{'name': 'Spirit Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.add_goal(Goal(self, 'Light Medallion', { 'replace': 'Light Medallion' }, 'Light Blue', items=[{'name': 'Light Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.minimum_goals = self.settings.ganon_bosskey_medallions if self.settings.shuffle_ganon_bosskey == 'medallions' else self.settings.ganon_bosskey_rewards + if self.settings.shuffle_ganon_bosskey == 'on_lacs': + gbk.add_goal(Goal(self, 'Shadow Medallion', { 'replace': 'Shadow Medallion' }, 'Pink', items=[{'name': 'Shadow Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.add_goal(Goal(self, 'Spirit Medallion', { 'replace': 'Spirit Medallion' }, 'Yellow', items=[{'name': 'Spirit Medallion', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + gbk.minimum_goals = 2 + gbk.goal_count = len(gbk.goals) + if (self.settings.ganon_bosskey_tokens > 0 + and self.settings.shuffle_ganon_bosskey == 'tokens' + and (self.settings.bridge != 'tokens' + or self.settings.bridge_tokens < self.settings.ganon_bosskey_tokens)): + gbk.add_goal(Goal(self, 'Skulls', 'path of Skulls', 'Light Blue', items=[{'name': 'Gold Skulltula Token', 'quantity': 100, 'minimum': self.settings.ganon_bosskey_tokens, 'hintable': False}])) + gbk.goal_count = round(self.settings.ganon_bosskey_tokens / 10) + gbk.minimum_goals = 1 + + # Ganon's Boss Key shuffled directly in the world will always + # generate a category/goal pair, though locations are not + # guaranteed if the higher priority Bridge category contains + # all required locations for GBK + if self.settings.shuffle_ganon_bosskey in ['dungeon', 'overworld', 'any_dungeon', 'keysanity']: + # Make priority even with trials as the goal is no longer centered around dungeon completion or collectibles + gbk.priority = 30 + gbk.goal_count = 1 + if self.settings.item_pool_value == 'plentiful': + keys = 2 + else: + keys = 1 + gbk.add_goal(Goal(self, 'the Key', 'path to the Key', 'Light Blue', items=[{'name': 'Boss Key (Ganons Castle)', 'quantity': keys, 'minimum': 1, 'hintable': True}])) + gbk.minimum_goals = 1 + if gbk.goals: + self.goal_categories[gbk.name] = gbk + + # To avoid too many goals in the hint selection phase, + # trials are reduced to one goal with six items to obtain. + if self.skipped_trials['Forest'] == False: + trial_goal.items.append({'name': 'Forest Trial Clear', 'quantity': 1, 'minimum': 1, 'hintable': True}) + trials.goal_count += 1 + if self.skipped_trials['Fire'] == False: + trial_goal.items.append({'name': 'Fire Trial Clear', 'quantity': 1, 'minimum': 1, 'hintable': True}) + trials.goal_count += 1 + if self.skipped_trials['Water'] == False: + trial_goal.items.append({'name': 'Water Trial Clear', 'quantity': 1, 'minimum': 1, 'hintable': True}) + trials.goal_count += 1 + if self.skipped_trials['Shadow'] == False: + trial_goal.items.append({'name': 'Shadow Trial Clear', 'quantity': 1, 'minimum': 1, 'hintable': True}) + trials.goal_count += 1 + if self.skipped_trials['Spirit'] == False: + trial_goal.items.append({'name': 'Spirit Trial Clear', 'quantity': 1, 'minimum': 1, 'hintable': True}) + trials.goal_count += 1 + if self.skipped_trials['Light'] == False: + trial_goal.items.append({'name': 'Light Trial Clear', 'quantity': 1, 'minimum': 1, 'hintable': True}) + trials.goal_count += 1 + + # Trials category is finalized and saved only if at least one trial is on + if self.settings.trials > 0: + trials.add_goal(trial_goal) + self.goal_categories[trials.name] = trials + + if self.settings.bridge == 'open' and (self.settings.shuffle_ganon_bosskey == 'remove' or self.settings.shuffle_ganon_bosskey == 'vanilla') and self.settings.trials == 0: + g = GoalCategory('ganon', 30, goal_count=1) + # Equivalent to WOTH, but added in case WOTH hints are disabled in favor of goal hints + g.add_goal(Goal(self, 'the hero', 'path of the hero', 'White', items=[{'name': 'Triforce', 'quantity': 1, 'minimum': 1, 'hintable': True}])) + g.minimum_goals = 1 + self.goal_categories[g.name] = g def get_region(self, regionname): if isinstance(regionname, Region): diff --git a/data/Hints/balanced.json b/data/Hints/balanced.json index f0e153ca0..02f17e26d 100644 --- a/data/Hints/balanced.json +++ b/data/Hints/balanced.json @@ -10,6 +10,7 @@ "dungeons_barren_limit": 1, "named_items_required": true, "vague_named_items": false, + "use_default_goals": true, "distribution": { "trial": {"order": 1, "weight": 0.0, "fixed": 0, "copies": 1}, "always": {"order": 2, "weight": 0.0, "fixed": 0, "copies": 1}, @@ -23,6 +24,7 @@ "overworld": {"order": 10, "weight": 2.0, "fixed": 0, "copies": 1}, "dungeon": {"order": 11, "weight": 1.5, "fixed": 0, "copies": 1}, "junk": {"order": 12, "weight": 3.0, "fixed": 0, "copies": 1}, - "named-item": {"order": 13, "weight": 0.0, "fixed": 0, "copies": 1} + "named-item": {"order": 13, "weight": 0.0, "fixed": 0, "copies": 1}, + "goal": {"order": 14, "weight": 0.0, "fixed": 0, "copies": 1} } } \ No newline at end of file diff --git a/data/Hints/bingo.json b/data/Hints/bingo.json index 81ba3801f..a9f90c451 100644 --- a/data/Hints/bingo.json +++ b/data/Hints/bingo.json @@ -10,6 +10,7 @@ "dungeons_barren_limit": 1, "named_items_required": true, "vague_named_items": false, + "use_default_goals": true, "distribution": { "trial": {"order": 1, "weight": 0.0, "fixed": 0, "copies": 2}, "always": {"order": 2, "weight": 0.0, "fixed": 0, "copies": 2}, @@ -23,6 +24,7 @@ "overworld": {"order": 10, "weight": 0.0, "fixed": 0, "copies": 2}, "dungeon": {"order": 11, "weight": 0.0, "fixed": 0, "copies": 2}, "junk": {"order": 12, "weight": 1.0, "fixed": 0, "copies": 1}, - "named-item": {"order": 13, "weight": 0.0, "fixed": 0, "copies": 2} + "named-item": {"order": 13, "weight": 0.0, "fixed": 0, "copies": 2}, + "goal": {"order": 14, "weight": 0.0, "fixed": 0, "copies": 1} } } diff --git a/data/Hints/coop2.json b/data/Hints/coop2.json index 914f39f83..5430c2f9b 100644 --- a/data/Hints/coop2.json +++ b/data/Hints/coop2.json @@ -15,6 +15,7 @@ "dungeons_barren_limit": 1, "named_items_required": true, "vague_named_items": false, + "use_default_goals": true, "distribution": { "trial": {"order": 1, "weight": 0.0, "fixed": 0, "copies": 2}, "always": {"order": 2, "weight": 0.0, "fixed": 6, "copies": 3}, @@ -28,7 +29,8 @@ "overworld": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 2}, "dungeon": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 2}, "woth": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 2}, - "named-item": {"order": 8, "weight": 0.0, "fixed": 1, "copies": 3} + "named-item": {"order": 8, "weight": 0.0, "fixed": 1, "copies": 3}, + "goal": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 1} }, "groups": [], "disabled": [] diff --git a/data/Hints/ddr.json b/data/Hints/ddr.json index c07113b68..e0d7a29ea 100644 --- a/data/Hints/ddr.json +++ b/data/Hints/ddr.json @@ -33,6 +33,7 @@ "dungeons_barren_limit": 1, "named_items_required": false, "vague_named_items": true, + "use_default_goals": true, "distribution": { "trial": {"order": 1, "weight": 0.0, "fixed": 0, "copies": 1}, "always": {"order": 2, "weight": 0.0, "fixed": 0, "copies": 2}, @@ -46,6 +47,7 @@ "overworld": {"order": 10, "weight": 0.0, "fixed": 0, "copies": 2}, "dungeon": {"order": 11, "weight": 0.0, "fixed": 0, "copies": 2}, "junk": {"order": 12, "weight": 0.0, "fixed": 0, "copies": 1}, - "named-item": {"order": 6, "weight": 0.0, "fixed": 3, "copies": 2} + "named-item": {"order": 6, "weight": 0.0, "fixed": 3, "copies": 2}, + "goal": {"order": 14, "weight": 0.0, "fixed": 0, "copies": 1} } } \ No newline at end of file diff --git a/data/Hints/league.json b/data/Hints/league.json index 1119cea06..c00aa6ec1 100644 --- a/data/Hints/league.json +++ b/data/Hints/league.json @@ -11,6 +11,8 @@ "dungeons_woth_limit": 2, "dungeons_barren_limit": 1, "named_items_required": true, + "vague_named_items": false, + "use_default_goals": true, "distribution": { "trial": {"order": 1, "weight": 0.0, "fixed": 0, "copies": 2}, "always": {"order": 2, "weight": 0.0, "fixed": 0, "copies": 2}, @@ -24,7 +26,8 @@ "overworld": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 2}, "dungeon": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 2}, "junk": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 2}, - "named-item": {"order": 8, "weight": 0.0, "fixed": 0, "copies": 2} + "named-item": {"order": 8, "weight": 0.0, "fixed": 0, "copies": 2}, + "goal": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 1} }, "groups": [], "disabled": [] diff --git a/data/Hints/mw2.json b/data/Hints/mw2.json index f29f8ea7b..91d9f999c 100644 --- a/data/Hints/mw2.json +++ b/data/Hints/mw2.json @@ -60,6 +60,8 @@ "dungeons_woth_limit": 3, "dungeons_barren_limit": 1, "named_items_required": true, + "vague_named_items": false, + "use_default_goals": true, "distribution": { "trial": { "order": 1, @@ -138,6 +140,12 @@ "weight": 0.0, "fixed": 0, "copies": 2 + }, + "goal": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 } } } diff --git a/data/Hints/scrubs.json b/data/Hints/scrubs.json index 262ca0107..f08637443 100644 --- a/data/Hints/scrubs.json +++ b/data/Hints/scrubs.json @@ -13,6 +13,7 @@ "dungeons_barren_limit": 1, "named_items_required": true, "vague_named_items": false, + "use_default_goals": true, "distribution": { "trial": {"order": 1, "weight": 0.0, "fixed": 0, "copies": 2}, "always": {"order": 2, "weight": 0.0, "fixed": 0, "copies": 2}, @@ -26,7 +27,8 @@ "overworld": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 2}, "dungeon": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 2}, "junk": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 2}, - "named-item": {"order": 8, "weight": 0.0, "fixed": 0, "copies": 2} + "named-item": {"order": 8, "weight": 0.0, "fixed": 0, "copies": 2}, + "goal": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 1} }, "groups": [], "disabled": [] diff --git a/data/Hints/strong.json b/data/Hints/strong.json index 5892736d0..b9c1e4ca3 100644 --- a/data/Hints/strong.json +++ b/data/Hints/strong.json @@ -10,6 +10,7 @@ "dungeons_barren_limit": 1, "named_items_required": true, "vague_named_items": false, + "use_default_goals": true, "distribution": { "trial": {"order": 1, "weight": 0.00, "fixed": 0, "copies": 1}, "always": {"order": 2, "weight": 0.00, "fixed": 0, "copies": 2}, @@ -23,6 +24,7 @@ "overworld": {"order": 10, "weight": 0.66, "fixed": 0, "copies": 1}, "dungeon": {"order": 11, "weight": 0.66, "fixed": 0, "copies": 1}, "junk": {"order": 12, "weight": 0.00, "fixed": 0, "copies": 1}, - "named-item": {"order": 13, "weight": 0.00, "fixed": 0, "copies": 1} + "named-item": {"order": 13, "weight": 0.00, "fixed": 0, "copies": 1}, + "goal": {"order": 14, "weight": 0.00, "fixed": 0, "copies": 1} } } \ No newline at end of file diff --git a/data/Hints/tournament.json b/data/Hints/tournament.json index 024889700..d116070ce 100644 --- a/data/Hints/tournament.json +++ b/data/Hints/tournament.json @@ -10,6 +10,7 @@ "dungeons_barren_limit": 1, "named_items_required": true, "vague_named_items": false, + "use_default_goals": true, "distribution": { "trial": {"order": 1, "weight": 0.0, "fixed": 0, "copies": 1}, "always": {"order": 2, "weight": 0.0, "fixed": 0, "copies": 2}, @@ -23,7 +24,8 @@ "overworld": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 1}, "dungeon": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 1}, "junk": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 1}, - "named-item": {"order": 8, "weight": 0.0, "fixed": 0, "copies": 1} + "named-item": {"order": 8, "weight": 0.0, "fixed": 0, "copies": 1}, + "goal": {"order": 0, "weight": 0.0, "fixed": 0, "copies": 1} }, "groups": [], "disabled": [ diff --git a/data/Hints/useless.json b/data/Hints/useless.json index f0da50ac7..7b60c00f4 100644 --- a/data/Hints/useless.json +++ b/data/Hints/useless.json @@ -10,6 +10,7 @@ "dungeons_barren_limit": 1, "named_items_required": false, "vague_named_items": false, + "use_default_goals": true, "distribution": { "trial": {"order": 1, "weight": 0.0, "fixed": 0, "copies": 0}, "always": {"order": 2, "weight": 0.0, "fixed": 0, "copies": 0}, @@ -23,6 +24,7 @@ "overworld": {"order": 10, "weight": 0.0, "fixed": 0, "copies": 0}, "dungeon": {"order": 11, "weight": 0.0, "fixed": 0, "copies": 0}, "junk": {"order": 12, "weight": 9.0, "fixed": 0, "copies": 1}, - "named-item": {"order": 13, "weight": 0.0, "fixed": 0, "copies": 0} + "named-item": {"order": 13, "weight": 0.0, "fixed": 0, "copies": 0}, + "goal": {"order": 14, "weight": 0.0, "fixed": 0, "copies": 1} } } \ No newline at end of file diff --git a/data/Hints/very_strong.json b/data/Hints/very_strong.json index 90402bf2b..b04537ba6 100644 --- a/data/Hints/very_strong.json +++ b/data/Hints/very_strong.json @@ -10,6 +10,7 @@ "dungeons_barren_limit": 40, "named_items_required": true, "vague_named_items": false, + "use_default_goals": true, "distribution": { "trial": {"order": 1, "weight": 0.0, "fixed": 0, "copies": 1}, "always": {"order": 2, "weight": 0.0, "fixed": 0, "copies": 2}, @@ -23,6 +24,7 @@ "overworld": {"order": 10, "weight": 1.5, "fixed": 0, "copies": 1}, "dungeon": {"order": 11, "weight": 1.5, "fixed": 0, "copies": 1}, "junk": {"order": 12, "weight": 0.0, "fixed": 0, "copies": 1}, - "named-item": {"order": 13, "weight": 0.0, "fixed": 0, "copies": 1} + "named-item": {"order": 13, "weight": 0.0, "fixed": 0, "copies": 1}, + "goal": {"order": 14, "weight": 0.0, "fixed": 0, "copies": 1} } } \ No newline at end of file diff --git a/tests/plando/plando-goals-exclusions-skulls-bridge.json b/tests/plando/plando-goals-exclusions-skulls-bridge.json new file mode 100644 index 000000000..afffadc7c --- /dev/null +++ b/tests/plando/plando-goals-exclusions-skulls-bridge.json @@ -0,0 +1,528 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "tokens", + "bridge_tokens": 60, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 0, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "tokens", + "ganon_bosskey_tokens": 50, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "adult" + }, + "randomized_settings": { + "starting_age": "adult" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "inactive", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": {"region": "Zoras Domain", "from": "ZR Behind Waterfall"}, + "Child Spawn -> KF Links House": {"region": "Zora River", "from": "ZR Top of Waterfall"} + }, + "locations": { + "Links Pocket": "Fire Medallion", + "Queen Gohma": "Forest Medallion", + "King Dodongo": "Shadow Medallion", + "Barinade": "Light Medallion", + "Phantom Ganon": "Kokiri Emerald", + "Volvagia": "Spirit Medallion", + "Morpha": "Goron Ruby", + "Bongo Bongo": "Zora Sapphire", + "Twinrova": "Water Medallion", + "Song from Impa": "Song of Time", + "Song from Malon": "Serenade of Water", + "Song from Saria": "Nocturne of Shadow", + "Song from Royal Familys Tomb": "Suns Song", + "Song from Ocarina of Time": "Prelude of Light", + "Song from Windmill": "Bolero of Fire", + "Sheik in Forest": "Zeldas Lullaby", + "Sheik in Crater": "Sarias Song", + "Sheik in Ice Cavern": "Song of Storms", + "Sheik at Colossus": "Requiem of Spirit", + "Sheik in Kakariko": "Minuet of Forest", + "Sheik at Temple": "Eponas Song", + "KF Midos Top Left Chest": "Rupees (5)", + "KF Midos Top Right Chest": "Eyeball Frog", + "KF Midos Bottom Left Chest": "Boomerang", + "KF Midos Bottom Right Chest": "Hover Boots", + "KF Kokiri Sword Chest": "Rupees (20)", + "KF Storms Grotto Chest": "Piece of Heart", + "LW Ocarina Memory Game": "Rupees (5)", + "LW Target in Woods": "Bow", + "LW Near Shortcuts Grotto Chest": "Rupees (5)", + "Deku Theater Skull Mask": "Piece of Heart", + "Deku Theater Mask of Truth": "Rupees (5)", + "LW Skull Kid": "Dins Fire", + "LW Deku Scrub Near Bridge": {"item": "Nayrus Love", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Mirror Shield", "price": 40}, + "SFM Wolfos Grotto Chest": "Piece of Heart", + "HF Near Market Grotto Chest": "Arrows (5)", + "HF Tektite Grotto Freestanding PoH": "Deku Stick Capacity", + "HF Southeast Grotto Chest": "Rupees (20)", + "HF Open Grotto Chest": "Stone of Agony", + "HF Deku Scrub Grotto": {"item": "Piece of Heart", "price": 10}, + "Market Shooting Gallery Reward": "Bombs (10)", + "Market Bombchu Bowling First Prize": "Rupees (20)", + "Market Bombchu Bowling Second Prize": "Recovery Heart", + "Market Lost Dog": "Rupees (5)", + "Market Treasure Chest Game Reward": "Rupees (20)", + "Market 10 Big Poes": "Deku Stick Capacity", + "ToT Light Arrows Cutscene": "Rupees (5)", + "HC Great Fairy Reward": "Light Arrows", + "LLR Talons Chickens": "Arrows (10)", + "LLR Freestanding PoH": "Deku Stick (1)", + "Kak Anju as Child": "Rupees (5)", + "Kak Anju as Adult": "Slingshot", + "Kak Impas House Freestanding PoH": "Deku Shield", + "Kak Windmill Freestanding PoH": "Hylian Shield", + "Kak Man on Roof": "Kokiri Sword", + "Kak Open Grotto Chest": "Farores Wind", + "Kak Redead Grotto Chest": "Recovery Heart", + "Kak Shooting Gallery Reward": "Piece of Heart (Treasure Chest Game)", + "Kak 10 Gold Skulltula Reward": "Rupees (5)", + "Kak 20 Gold Skulltula Reward": "Rupees (20)", + "Kak 30 Gold Skulltula Reward": "Magic Meter", + "Kak 40 Gold Skulltula Reward": "Heart Container", + "Kak 50 Gold Skulltula Reward": "Piece of Heart", + "Graveyard Shield Grave Chest": "Magic Meter", + "Graveyard Heart Piece Grave Chest": "Rupees (5)", + "Graveyard Royal Familys Tomb Chest": "Arrows (10)", + "Graveyard Freestanding PoH": "Piece of Heart", + "Graveyard Dampe Gravedigging Tour": "Arrows (30)", + "Graveyard Hookshot Chest": "Rupees (5)", + "Graveyard Dampe Race Freestanding PoH": "Piece of Heart", + "DMT Freestanding PoH": "Piece of Heart", + "DMT Chest": "Bombchus (10)", + "DMT Storms Grotto Chest": "Rupees (50)", + "DMT Great Fairy Reward": "Piece of Heart", + "DMT Biggoron": "Bombs (5)", + "GC Darunias Joy": "Bombs (5)", + "GC Pot Freestanding PoH": "Slingshot", + "GC Rolling Goron as Child": "Rupees (50)", + "GC Rolling Goron as Adult": "Piece of Heart", + "GC Maze Left Chest": "Arrows (30)", + "GC Maze Right Chest": "Rupees (5)", + "GC Maze Center Chest": "Progressive Hookshot", + "DMC Volcano Freestanding PoH": "Rupees (50)", + "DMC Wall Freestanding PoH": "Arrows (30)", + "DMC Upper Grotto Chest": "Heart Container", + "DMC Great Fairy Reward": "Arrows (10)", + "ZR Open Grotto Chest": "Rupees (200)", + "ZR Frogs in the Rain": "Deku Stick (1)", + "ZR Frogs Ocarina Game": "Piece of Heart", + "ZR Near Open Grotto Freestanding PoH": "Piece of Heart", + "ZR Near Domain Freestanding PoH": "Recovery Heart", + "ZD Diving Minigame": "Piece of Heart", + "ZD Chest": "Bow", + "ZD King Zora Thawed": "Bottle with Fish", + "ZF Great Fairy Reward": "Rupees (50)", + "ZF Iceberg Freestanding PoH": "Deku Stick (1)", + "ZF Bottom Freestanding PoH": "Rupees (5)", + "LH Underwater Item": "Deku Seeds (30)", + "LH Child Fishing": "Recovery Heart", + "LH Adult Fishing": "Rupees (20)", + "LH Lab Dive": "Deku Nuts (5)", + "LH Freestanding PoH": "Deku Nuts (5)", + "LH Sun": "Arrows (5)", + "GV Crate Freestanding PoH": "Rupees (50)", + "GV Waterfall Freestanding PoH": "Bombs (5)", + "GV Chest": "Deku Shield", + "GF Chest": "Heart Container", + "GF HBA 1000 Points": "Arrows (30)", + "GF HBA 1500 Points": "Rupees (50)", + "Wasteland Chest": "Bomb Bag", + "Colossus Great Fairy Reward": "Piece of Heart", + "Colossus Freestanding PoH": "Heart Container", + "OGC Great Fairy Reward": "Bomb Bag", + "Deku Tree Map Chest": "Rutos Letter", + "Deku Tree Slingshot Room Side Chest": "Recovery Heart", + "Deku Tree Slingshot Chest": "Piece of Heart", + "Deku Tree Compass Chest": "Piece of Heart", + "Deku Tree Compass Room Side Chest": "Heart Container", + "Deku Tree Basement Chest": "Piece of Heart", + "Deku Tree Queen Gohma Heart": "Arrows (5)", + "Dodongos Cavern Map Chest": "Piece of Heart", + "Dodongos Cavern Compass Chest": "Bombs (5)", + "Dodongos Cavern Bomb Flower Platform Chest": "Progressive Scale", + "Dodongos Cavern Bomb Bag Chest": "Rupees (5)", + "Dodongos Cavern End of Bridge Chest": "Heart Container", + "Dodongos Cavern Boss Room Chest": "Bombchus (10)", + "Dodongos Cavern King Dodongo Heart": "Recovery Heart", + "Jabu Jabus Belly Boomerang Chest": "Deku Shield", + "Jabu Jabus Belly Map Chest": "Deku Seeds (30)", + "Jabu Jabus Belly Compass Chest": "Piece of Heart", + "Jabu Jabus Belly Barinade Heart": "Rupees (20)", + "Bottom of the Well Front Left Fake Wall Chest": "Heart Container", + "Bottom of the Well Front Center Bombable Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Back Left Bombable Chest": "Fire Arrows", + "Bottom of the Well Underwater Left Chest": "Bombchus (20)", + "Bottom of the Well Freestanding Key": "Piece of Heart", + "Bottom of the Well Compass Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Center Skulltula Chest": "Bomb Bag", + "Bottom of the Well Right Bottom Fake Wall Chest": "Arrows (30)", + "Bottom of the Well Fire Keese Chest": "Iron Boots", + "Bottom of the Well Like Like Chest": "Arrows (30)", + "Bottom of the Well Map Chest": "Progressive Hookshot", + "Bottom of the Well Underwater Front Chest": "Recovery Heart", + "Bottom of the Well Invisible Chest": "Deku Seeds (30)", + "Bottom of the Well Lens of Truth Chest": "Small Key (Bottom of the Well)", + "Forest Temple First Room Chest": "Small Key (Forest Temple)", + "Forest Temple First Stalfos Chest": "Small Key (Forest Temple)", + "Forest Temple Raised Island Courtyard Chest": "Bombs (10)", + "Forest Temple Map Chest": "Small Key (Forest Temple)", + "Forest Temple Well Chest": "Small Key (Forest Temple)", + "Forest Temple Eye Switch Chest": "Boss Key (Forest Temple)", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Arrows (10)", + "Forest Temple Red Poe Chest": "Rupees (50)", + "Forest Temple Bow Chest": "Recovery Heart", + "Forest Temple Blue Poe Chest": "Piece of Heart", + "Forest Temple Falling Ceiling Room Chest": "Ice Arrows", + "Forest Temple Basement Chest": "Rupees (5)", + "Forest Temple Phantom Ganon Heart": "Rupees (200)", + "Fire Temple Near Boss Chest": "Small Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Small Key (Fire Temple)", + "Fire Temple Boss Key Chest": "Piece of Heart", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Boss Key (Fire Temple)", + "Fire Temple Boulder Maze Lower Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Side Room Chest": "Rupees (20)", + "Fire Temple Map Chest": "Hylian Shield", + "Fire Temple Boulder Maze Shortcut Chest": "Rupee (1)", + "Fire Temple Boulder Maze Upper Chest": "Progressive Wallet", + "Fire Temple Scarecrow Chest": "Small Key (Fire Temple)", + "Fire Temple Compass Chest": "Rupees (5)", + "Fire Temple Megaton Hammer Chest": "Small Key (Fire Temple)", + "Fire Temple Highest Goron Chest": "Small Key (Fire Temple)", + "Fire Temple Volvagia Heart": "Small Key (Fire Temple)", + "Water Temple Compass Chest": "Small Key (Water Temple)", + "Water Temple Map Chest": "Boss Key (Water Temple)", + "Water Temple Cracked Wall Chest": "Small Key (Water Temple)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Small Key (Water Temple)", + "Water Temple Central Pillar Chest": "Deku Nuts (5)", + "Water Temple Central Bow Target Chest": "Piece of Heart", + "Water Temple Longshot Chest": "Bombchus (10)", + "Water Temple River Chest": "Progressive Strength Upgrade", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Small Key (Water Temple)", + "Shadow Temple Map Chest": "Progressive Scale", + "Shadow Temple Hover Boots Chest": "Rupees (200)", + "Shadow Temple Compass Chest": "Small Key (Shadow Temple)", + "Shadow Temple Early Silver Rupee Chest": "Piece of Heart", + "Shadow Temple Invisible Blades Visible Chest": "Piece of Heart", + "Shadow Temple Invisible Blades Invisible Chest": "Small Key (Shadow Temple)", + "Shadow Temple Falling Spikes Lower Chest": "Double Defense", + "Shadow Temple Falling Spikes Upper Chest": "Megaton Hammer", + "Shadow Temple Falling Spikes Switch Chest": "Rupees (20)", + "Shadow Temple Invisible Spikes Chest": "Small Key (Shadow Temple)", + "Shadow Temple Freestanding Key": "Deku Nut Capacity", + "Shadow Temple Wind Hint Chest": "Rupees (50)", + "Shadow Temple After Wind Enemy Chest": "Small Key (Shadow Temple)", + "Shadow Temple After Wind Hidden Chest": "Progressive Strength Upgrade", + "Shadow Temple Spike Walls Left Chest": "Bombchus (5)", + "Shadow Temple Boss Key Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Invisible Floormaster Chest": "Small Key (Shadow Temple)", + "Shadow Temple Bongo Bongo Heart": "Piece of Heart", + "Spirit Temple Child Bridge Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Early Torches Chest": "Slingshot", + "Spirit Temple Child Climb North Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Climb East Chest": "Piece of Heart", + "Spirit Temple Map Chest": "Small Key (Spirit Temple)", + "Spirit Temple Sun Block Room Chest": "Piece of Heart", + "Spirit Temple Silver Gauntlets Chest": "Small Key (Spirit Temple)", + "Spirit Temple Compass Chest": "Rupees (5)", + "Spirit Temple Early Adult Right Chest": "Bombs (5)", + "Spirit Temple First Mirror Left Chest": "Deku Nut Capacity", + "Spirit Temple First Mirror Right Chest": "Bottle", + "Spirit Temple Statue Room Northeast Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Statue Room Hand Chest": "Rupees (5)", + "Spirit Temple Near Four Armos Chest": "Piece of Heart", + "Spirit Temple Hallway Right Invisible Chest": "Piece of Heart", + "Spirit Temple Hallway Left Invisible Chest": "Small Key (Spirit Temple)", + "Spirit Temple Mirror Shield Chest": "Bombs (5)", + "Spirit Temple Boss Key Chest": "Bombs (5)", + "Spirit Temple Topmost Chest": "Arrows (5)", + "Spirit Temple Twinrova Heart": "Deku Nuts (10)", + "Ice Cavern Map Chest": "Piece of Heart", + "Ice Cavern Compass Chest": "Rupees (5)", + "Ice Cavern Freestanding PoH": "Progressive Wallet", + "Ice Cavern Iron Boots Chest": "Recovery Heart", + "Gerudo Training Ground Lobby Left Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Lobby Right Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Stalfos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Before Heavy Block Chest": "Recovery Heart", + "Gerudo Training Ground Heavy Block First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Second Chest": "Heart Container", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Bottle with Poe", + "Gerudo Training Ground Eye Statue Chest": "Piece of Heart", + "Gerudo Training Ground Near Scarecrow Chest": "Piece of Heart", + "Gerudo Training Ground Hammer Room Clear Chest": "Zora Tunic", + "Gerudo Training Ground Hammer Room Switch Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Freestanding Key": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Right Central Chest": "Deku Stick (1)", + "Gerudo Training Ground Maze Right Side Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Deku Shield", + "Gerudo Training Ground Beamos Chest": "Biggoron Sword", + "Gerudo Training Ground Hidden Ceiling Chest": "Rupees (200)", + "Gerudo Training Ground Maze Path First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Second Chest": "Rupees (5)", + "Gerudo Training Ground Maze Path Third Chest": "Rupees (200)", + "Gerudo Training Ground Maze Path Final Chest": "Piece of Heart", + "Ganons Castle Forest Trial Chest": "Bow", + "Ganons Castle Water Trial Left Chest": "Goron Tunic", + "Ganons Castle Water Trial Right Chest": "Small Key (Ganons Castle)", + "Ganons Castle Shadow Trial Front Chest": "Bombs (10)", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Progressive Strength Upgrade", + "Ganons Castle Light Trial First Left Chest": "Recovery Heart", + "Ganons Castle Light Trial Second Left Chest": "Deku Seeds (30)", + "Ganons Castle Light Trial Third Left Chest": "Lens of Truth", + "Ganons Castle Light Trial First Right Chest": "Arrows (10)", + "Ganons Castle Light Trial Second Right Chest": "Piece of Heart", + "Ganons Castle Light Trial Third Right Chest": "Arrows (10)", + "Ganons Castle Light Trial Invisible Enemies Chest": "Small Key (Ganons Castle)", + "Ganons Castle Light Trial Lullaby Chest": "Bombs (20)", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Rupees (200)", + "Ganons Castle Spirit Trial Invisible Chest": "Bombs (20)", + "Ganons Tower Boss Key Chest": "Rupees (5)" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-exclusions-skulls-gbk.json b/tests/plando/plando-goals-exclusions-skulls-gbk.json new file mode 100644 index 000000000..1d0343a72 --- /dev/null +++ b/tests/plando/plando-goals-exclusions-skulls-gbk.json @@ -0,0 +1,528 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "tokens", + "bridge_tokens": 40, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 0, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "tokens", + "ganon_bosskey_tokens": 50, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "adult" + }, + "randomized_settings": { + "starting_age": "adult" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "inactive", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": {"region": "Zoras Domain", "from": "ZR Behind Waterfall"}, + "Child Spawn -> KF Links House": {"region": "Zora River", "from": "ZR Top of Waterfall"} + }, + "locations": { + "Links Pocket": "Fire Medallion", + "Queen Gohma": "Forest Medallion", + "King Dodongo": "Shadow Medallion", + "Barinade": "Light Medallion", + "Phantom Ganon": "Kokiri Emerald", + "Volvagia": "Spirit Medallion", + "Morpha": "Goron Ruby", + "Bongo Bongo": "Zora Sapphire", + "Twinrova": "Water Medallion", + "Song from Impa": "Song of Time", + "Song from Malon": "Serenade of Water", + "Song from Saria": "Nocturne of Shadow", + "Song from Royal Familys Tomb": "Suns Song", + "Song from Ocarina of Time": "Prelude of Light", + "Song from Windmill": "Bolero of Fire", + "Sheik in Forest": "Zeldas Lullaby", + "Sheik in Crater": "Sarias Song", + "Sheik in Ice Cavern": "Song of Storms", + "Sheik at Colossus": "Requiem of Spirit", + "Sheik in Kakariko": "Minuet of Forest", + "Sheik at Temple": "Eponas Song", + "KF Midos Top Left Chest": "Rupees (5)", + "KF Midos Top Right Chest": "Eyeball Frog", + "KF Midos Bottom Left Chest": "Boomerang", + "KF Midos Bottom Right Chest": "Hover Boots", + "KF Kokiri Sword Chest": "Rupees (20)", + "KF Storms Grotto Chest": "Piece of Heart", + "LW Ocarina Memory Game": "Rupees (5)", + "LW Target in Woods": "Bow", + "LW Near Shortcuts Grotto Chest": "Rupees (5)", + "Deku Theater Skull Mask": "Piece of Heart", + "Deku Theater Mask of Truth": "Rupees (5)", + "LW Skull Kid": "Dins Fire", + "LW Deku Scrub Near Bridge": {"item": "Nayrus Love", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Mirror Shield", "price": 40}, + "SFM Wolfos Grotto Chest": "Piece of Heart", + "HF Near Market Grotto Chest": "Arrows (5)", + "HF Tektite Grotto Freestanding PoH": "Deku Stick Capacity", + "HF Southeast Grotto Chest": "Rupees (20)", + "HF Open Grotto Chest": "Stone of Agony", + "HF Deku Scrub Grotto": {"item": "Piece of Heart", "price": 10}, + "Market Shooting Gallery Reward": "Bombs (10)", + "Market Bombchu Bowling First Prize": "Rupees (20)", + "Market Bombchu Bowling Second Prize": "Recovery Heart", + "Market Lost Dog": "Rupees (5)", + "Market Treasure Chest Game Reward": "Rupees (20)", + "Market 10 Big Poes": "Deku Stick Capacity", + "ToT Light Arrows Cutscene": "Rupees (5)", + "HC Great Fairy Reward": "Light Arrows", + "LLR Talons Chickens": "Arrows (10)", + "LLR Freestanding PoH": "Deku Stick (1)", + "Kak Anju as Child": "Rupees (5)", + "Kak Anju as Adult": "Slingshot", + "Kak Impas House Freestanding PoH": "Deku Shield", + "Kak Windmill Freestanding PoH": "Hylian Shield", + "Kak Man on Roof": "Kokiri Sword", + "Kak Open Grotto Chest": "Farores Wind", + "Kak Redead Grotto Chest": "Recovery Heart", + "Kak Shooting Gallery Reward": "Piece of Heart (Treasure Chest Game)", + "Kak 10 Gold Skulltula Reward": "Rupees (5)", + "Kak 20 Gold Skulltula Reward": "Rupees (20)", + "Kak 30 Gold Skulltula Reward": "Magic Meter", + "Kak 40 Gold Skulltula Reward": "Heart Container", + "Kak 50 Gold Skulltula Reward": "Piece of Heart", + "Graveyard Shield Grave Chest": "Magic Meter", + "Graveyard Heart Piece Grave Chest": "Rupees (5)", + "Graveyard Royal Familys Tomb Chest": "Arrows (10)", + "Graveyard Freestanding PoH": "Piece of Heart", + "Graveyard Dampe Gravedigging Tour": "Arrows (30)", + "Graveyard Hookshot Chest": "Rupees (5)", + "Graveyard Dampe Race Freestanding PoH": "Piece of Heart", + "DMT Freestanding PoH": "Piece of Heart", + "DMT Chest": "Bombchus (10)", + "DMT Storms Grotto Chest": "Rupees (50)", + "DMT Great Fairy Reward": "Piece of Heart", + "DMT Biggoron": "Bombs (5)", + "GC Darunias Joy": "Bombs (5)", + "GC Pot Freestanding PoH": "Slingshot", + "GC Rolling Goron as Child": "Rupees (50)", + "GC Rolling Goron as Adult": "Piece of Heart", + "GC Maze Left Chest": "Arrows (30)", + "GC Maze Right Chest": "Rupees (5)", + "GC Maze Center Chest": "Progressive Hookshot", + "DMC Volcano Freestanding PoH": "Rupees (50)", + "DMC Wall Freestanding PoH": "Arrows (30)", + "DMC Upper Grotto Chest": "Heart Container", + "DMC Great Fairy Reward": "Arrows (10)", + "ZR Open Grotto Chest": "Rupees (200)", + "ZR Frogs in the Rain": "Deku Stick (1)", + "ZR Frogs Ocarina Game": "Piece of Heart", + "ZR Near Open Grotto Freestanding PoH": "Piece of Heart", + "ZR Near Domain Freestanding PoH": "Recovery Heart", + "ZD Diving Minigame": "Piece of Heart", + "ZD Chest": "Bow", + "ZD King Zora Thawed": "Bottle with Fish", + "ZF Great Fairy Reward": "Rupees (50)", + "ZF Iceberg Freestanding PoH": "Deku Stick (1)", + "ZF Bottom Freestanding PoH": "Rupees (5)", + "LH Underwater Item": "Deku Seeds (30)", + "LH Child Fishing": "Recovery Heart", + "LH Adult Fishing": "Rupees (20)", + "LH Lab Dive": "Deku Nuts (5)", + "LH Freestanding PoH": "Deku Nuts (5)", + "LH Sun": "Arrows (5)", + "GV Crate Freestanding PoH": "Rupees (50)", + "GV Waterfall Freestanding PoH": "Bombs (5)", + "GV Chest": "Deku Shield", + "GF Chest": "Heart Container", + "GF HBA 1000 Points": "Arrows (30)", + "GF HBA 1500 Points": "Rupees (50)", + "Wasteland Chest": "Bomb Bag", + "Colossus Great Fairy Reward": "Piece of Heart", + "Colossus Freestanding PoH": "Heart Container", + "OGC Great Fairy Reward": "Bomb Bag", + "Deku Tree Map Chest": "Rutos Letter", + "Deku Tree Slingshot Room Side Chest": "Recovery Heart", + "Deku Tree Slingshot Chest": "Piece of Heart", + "Deku Tree Compass Chest": "Piece of Heart", + "Deku Tree Compass Room Side Chest": "Heart Container", + "Deku Tree Basement Chest": "Piece of Heart", + "Deku Tree Queen Gohma Heart": "Arrows (5)", + "Dodongos Cavern Map Chest": "Piece of Heart", + "Dodongos Cavern Compass Chest": "Bombs (5)", + "Dodongos Cavern Bomb Flower Platform Chest": "Progressive Scale", + "Dodongos Cavern Bomb Bag Chest": "Rupees (5)", + "Dodongos Cavern End of Bridge Chest": "Heart Container", + "Dodongos Cavern Boss Room Chest": "Bombchus (10)", + "Dodongos Cavern King Dodongo Heart": "Recovery Heart", + "Jabu Jabus Belly Boomerang Chest": "Deku Shield", + "Jabu Jabus Belly Map Chest": "Deku Seeds (30)", + "Jabu Jabus Belly Compass Chest": "Piece of Heart", + "Jabu Jabus Belly Barinade Heart": "Rupees (20)", + "Bottom of the Well Front Left Fake Wall Chest": "Heart Container", + "Bottom of the Well Front Center Bombable Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Back Left Bombable Chest": "Fire Arrows", + "Bottom of the Well Underwater Left Chest": "Bombchus (20)", + "Bottom of the Well Freestanding Key": "Piece of Heart", + "Bottom of the Well Compass Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Center Skulltula Chest": "Bomb Bag", + "Bottom of the Well Right Bottom Fake Wall Chest": "Arrows (30)", + "Bottom of the Well Fire Keese Chest": "Iron Boots", + "Bottom of the Well Like Like Chest": "Arrows (30)", + "Bottom of the Well Map Chest": "Progressive Hookshot", + "Bottom of the Well Underwater Front Chest": "Recovery Heart", + "Bottom of the Well Invisible Chest": "Deku Seeds (30)", + "Bottom of the Well Lens of Truth Chest": "Small Key (Bottom of the Well)", + "Forest Temple First Room Chest": "Small Key (Forest Temple)", + "Forest Temple First Stalfos Chest": "Small Key (Forest Temple)", + "Forest Temple Raised Island Courtyard Chest": "Bombs (10)", + "Forest Temple Map Chest": "Small Key (Forest Temple)", + "Forest Temple Well Chest": "Small Key (Forest Temple)", + "Forest Temple Eye Switch Chest": "Boss Key (Forest Temple)", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Arrows (10)", + "Forest Temple Red Poe Chest": "Rupees (50)", + "Forest Temple Bow Chest": "Recovery Heart", + "Forest Temple Blue Poe Chest": "Piece of Heart", + "Forest Temple Falling Ceiling Room Chest": "Ice Arrows", + "Forest Temple Basement Chest": "Rupees (5)", + "Forest Temple Phantom Ganon Heart": "Rupees (200)", + "Fire Temple Near Boss Chest": "Small Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Small Key (Fire Temple)", + "Fire Temple Boss Key Chest": "Piece of Heart", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Boss Key (Fire Temple)", + "Fire Temple Boulder Maze Lower Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Side Room Chest": "Rupees (20)", + "Fire Temple Map Chest": "Hylian Shield", + "Fire Temple Boulder Maze Shortcut Chest": "Rupee (1)", + "Fire Temple Boulder Maze Upper Chest": "Progressive Wallet", + "Fire Temple Scarecrow Chest": "Small Key (Fire Temple)", + "Fire Temple Compass Chest": "Rupees (5)", + "Fire Temple Megaton Hammer Chest": "Small Key (Fire Temple)", + "Fire Temple Highest Goron Chest": "Small Key (Fire Temple)", + "Fire Temple Volvagia Heart": "Small Key (Fire Temple)", + "Water Temple Compass Chest": "Small Key (Water Temple)", + "Water Temple Map Chest": "Boss Key (Water Temple)", + "Water Temple Cracked Wall Chest": "Small Key (Water Temple)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Small Key (Water Temple)", + "Water Temple Central Pillar Chest": "Deku Nuts (5)", + "Water Temple Central Bow Target Chest": "Piece of Heart", + "Water Temple Longshot Chest": "Bombchus (10)", + "Water Temple River Chest": "Progressive Strength Upgrade", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Small Key (Water Temple)", + "Shadow Temple Map Chest": "Progressive Scale", + "Shadow Temple Hover Boots Chest": "Rupees (200)", + "Shadow Temple Compass Chest": "Small Key (Shadow Temple)", + "Shadow Temple Early Silver Rupee Chest": "Piece of Heart", + "Shadow Temple Invisible Blades Visible Chest": "Piece of Heart", + "Shadow Temple Invisible Blades Invisible Chest": "Small Key (Shadow Temple)", + "Shadow Temple Falling Spikes Lower Chest": "Double Defense", + "Shadow Temple Falling Spikes Upper Chest": "Megaton Hammer", + "Shadow Temple Falling Spikes Switch Chest": "Rupees (20)", + "Shadow Temple Invisible Spikes Chest": "Small Key (Shadow Temple)", + "Shadow Temple Freestanding Key": "Deku Nut Capacity", + "Shadow Temple Wind Hint Chest": "Rupees (50)", + "Shadow Temple After Wind Enemy Chest": "Small Key (Shadow Temple)", + "Shadow Temple After Wind Hidden Chest": "Progressive Strength Upgrade", + "Shadow Temple Spike Walls Left Chest": "Bombchus (5)", + "Shadow Temple Boss Key Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Invisible Floormaster Chest": "Small Key (Shadow Temple)", + "Shadow Temple Bongo Bongo Heart": "Piece of Heart", + "Spirit Temple Child Bridge Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Early Torches Chest": "Slingshot", + "Spirit Temple Child Climb North Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Climb East Chest": "Piece of Heart", + "Spirit Temple Map Chest": "Small Key (Spirit Temple)", + "Spirit Temple Sun Block Room Chest": "Piece of Heart", + "Spirit Temple Silver Gauntlets Chest": "Small Key (Spirit Temple)", + "Spirit Temple Compass Chest": "Rupees (5)", + "Spirit Temple Early Adult Right Chest": "Bombs (5)", + "Spirit Temple First Mirror Left Chest": "Deku Nut Capacity", + "Spirit Temple First Mirror Right Chest": "Bottle", + "Spirit Temple Statue Room Northeast Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Statue Room Hand Chest": "Rupees (5)", + "Spirit Temple Near Four Armos Chest": "Piece of Heart", + "Spirit Temple Hallway Right Invisible Chest": "Piece of Heart", + "Spirit Temple Hallway Left Invisible Chest": "Small Key (Spirit Temple)", + "Spirit Temple Mirror Shield Chest": "Bombs (5)", + "Spirit Temple Boss Key Chest": "Bombs (5)", + "Spirit Temple Topmost Chest": "Arrows (5)", + "Spirit Temple Twinrova Heart": "Deku Nuts (10)", + "Ice Cavern Map Chest": "Piece of Heart", + "Ice Cavern Compass Chest": "Rupees (5)", + "Ice Cavern Freestanding PoH": "Progressive Wallet", + "Ice Cavern Iron Boots Chest": "Recovery Heart", + "Gerudo Training Ground Lobby Left Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Lobby Right Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Stalfos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Before Heavy Block Chest": "Recovery Heart", + "Gerudo Training Ground Heavy Block First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Second Chest": "Heart Container", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Bottle with Poe", + "Gerudo Training Ground Eye Statue Chest": "Piece of Heart", + "Gerudo Training Ground Near Scarecrow Chest": "Piece of Heart", + "Gerudo Training Ground Hammer Room Clear Chest": "Zora Tunic", + "Gerudo Training Ground Hammer Room Switch Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Freestanding Key": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Right Central Chest": "Deku Stick (1)", + "Gerudo Training Ground Maze Right Side Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Deku Shield", + "Gerudo Training Ground Beamos Chest": "Biggoron Sword", + "Gerudo Training Ground Hidden Ceiling Chest": "Rupees (200)", + "Gerudo Training Ground Maze Path First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Second Chest": "Rupees (5)", + "Gerudo Training Ground Maze Path Third Chest": "Rupees (200)", + "Gerudo Training Ground Maze Path Final Chest": "Piece of Heart", + "Ganons Castle Forest Trial Chest": "Bow", + "Ganons Castle Water Trial Left Chest": "Goron Tunic", + "Ganons Castle Water Trial Right Chest": "Small Key (Ganons Castle)", + "Ganons Castle Shadow Trial Front Chest": "Bombs (10)", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Progressive Strength Upgrade", + "Ganons Castle Light Trial First Left Chest": "Recovery Heart", + "Ganons Castle Light Trial Second Left Chest": "Deku Seeds (30)", + "Ganons Castle Light Trial Third Left Chest": "Lens of Truth", + "Ganons Castle Light Trial First Right Chest": "Arrows (10)", + "Ganons Castle Light Trial Second Right Chest": "Piece of Heart", + "Ganons Castle Light Trial Third Right Chest": "Arrows (10)", + "Ganons Castle Light Trial Invisible Enemies Chest": "Small Key (Ganons Castle)", + "Ganons Castle Light Trial Lullaby Chest": "Bombs (20)", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Rupees (200)", + "Ganons Castle Spirit Trial Invisible Chest": "Bombs (20)", + "Ganons Tower Boss Key Chest": "Rupees (5)" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-exclusions-var-dungeons.json b/tests/plando/plando-goals-exclusions-var-dungeons.json new file mode 100644 index 000000000..bc72c365d --- /dev/null +++ b/tests/plando/plando-goals-exclusions-var-dungeons.json @@ -0,0 +1,528 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "medallions", + "bridge_medallions": 2, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 0, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "dungeons", + "ganon_bosskey_rewards": 2, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "adult" + }, + "randomized_settings": { + "starting_age": "adult" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "inactive", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": "GC Shop", + "Child Spawn -> KF Links House": {"region": "LW Beyond Mido", "from": "SFM Entryway"} + }, + "locations": { + "Links Pocket": "Kokiri Emerald", + "Queen Gohma": "Spirit Medallion", + "King Dodongo": "Fire Medallion", + "Barinade": "Forest Medallion", + "Phantom Ganon": "Shadow Medallion", + "Volvagia": "Goron Ruby", + "Morpha": "Water Medallion", + "Bongo Bongo": "Light Medallion", + "Twinrova": "Zora Sapphire", + "Song from Impa": "Suns Song", + "Song from Malon": "Eponas Song", + "Song from Saria": "Nocturne of Shadow", + "Song from Royal Familys Tomb": "Requiem of Spirit", + "Song from Ocarina of Time": "Minuet of Forest", + "Song from Windmill": "Prelude of Light", + "Sheik in Forest": "Song of Storms", + "Sheik in Crater": "Sarias Song", + "Sheik in Ice Cavern": "Bolero of Fire", + "Sheik at Colossus": "Song of Time", + "Sheik in Kakariko": "Serenade of Water", + "Sheik at Temple": "Zeldas Lullaby", + "KF Midos Top Left Chest": "Deku Shield", + "KF Midos Top Right Chest": "Piece of Heart", + "KF Midos Bottom Left Chest": "Rupees (20)", + "KF Midos Bottom Right Chest": "Piece of Heart", + "KF Kokiri Sword Chest": "Bomb Bag", + "KF Storms Grotto Chest": "Arrows (10)", + "LW Ocarina Memory Game": "Bottle with Bugs", + "LW Target in Woods": "Arrows (5)", + "LW Near Shortcuts Grotto Chest": "Piece of Heart", + "Deku Theater Skull Mask": "Fire Arrows", + "Deku Theater Mask of Truth": "Rupees (20)", + "LW Skull Kid": "Light Arrows", + "LW Deku Scrub Near Bridge": {"item": "Arrows (30)", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Rupee (1)", "price": 40}, + "SFM Wolfos Grotto Chest": "Rupees (50)", + "HF Near Market Grotto Chest": "Rupees (5)", + "HF Tektite Grotto Freestanding PoH": "Rupees (200)", + "HF Southeast Grotto Chest": "Piece of Heart", + "HF Open Grotto Chest": "Ice Arrows", + "HF Deku Scrub Grotto": {"item": "Deku Stick (1)", "price": 10}, + "Market Shooting Gallery Reward": "Piece of Heart", + "Market Bombchu Bowling First Prize": "Piece of Heart", + "Market Bombchu Bowling Second Prize": "Mirror Shield", + "Market Lost Dog": "Bombs (5)", + "Market Treasure Chest Game Reward": "Piece of Heart", + "Market 10 Big Poes": "Deku Seeds (30)", + "ToT Light Arrows Cutscene": "Rupees (5)", + "HC Great Fairy Reward": "Bombchus (20)", + "LLR Talons Chickens": "Deku Nuts (5)", + "LLR Freestanding PoH": "Heart Container", + "Kak Anju as Child": "Bottle with Green Potion", + "Kak Anju as Adult": "Rupees (200)", + "Kak Impas House Freestanding PoH": "Deku Seeds (30)", + "Kak Windmill Freestanding PoH": "Rupees (5)", + "Kak Man on Roof": "Hover Boots", + "Kak Open Grotto Chest": "Deku Seeds (30)", + "Kak Redead Grotto Chest": "Piece of Heart", + "Kak Shooting Gallery Reward": "Piece of Heart", + "Kak 10 Gold Skulltula Reward": "Rupees (5)", + "Kak 20 Gold Skulltula Reward": "Piece of Heart", + "Kak 30 Gold Skulltula Reward": "Double Defense", + "Kak 40 Gold Skulltula Reward": "Bomb Bag", + "Kak 50 Gold Skulltula Reward": "Slingshot", + "Graveyard Shield Grave Chest": "Rupees (20)", + "Graveyard Heart Piece Grave Chest": "Bomb Bag", + "Graveyard Royal Familys Tomb Chest": "Rupees (200)", + "Graveyard Freestanding PoH": "Bow", + "Graveyard Dampe Gravedigging Tour": "Boomerang", + "Graveyard Hookshot Chest": "Piece of Heart", + "Graveyard Dampe Race Freestanding PoH": "Arrows (10)", + "DMT Freestanding PoH": "Bottle with Green Potion", + "DMT Chest": "Rupees (5)", + "DMT Storms Grotto Chest": "Bombchus (10)", + "DMT Great Fairy Reward": "Rupees (5)", + "DMT Biggoron": "Piece of Heart", + "GC Darunias Joy": "Recovery Heart", + "GC Pot Freestanding PoH": "Arrows (10)", + "GC Rolling Goron as Child": "Rupees (5)", + "GC Rolling Goron as Adult": "Rupees (5)", + "GC Maze Left Chest": "Kokiri Sword", + "GC Maze Right Chest": "Rupees (50)", + "GC Maze Center Chest": "Piece of Heart", + "DMC Volcano Freestanding PoH": "Rupees (20)", + "DMC Wall Freestanding PoH": "Piece of Heart", + "DMC Upper Grotto Chest": "Rupees (5)", + "DMC Great Fairy Reward": "Recovery Heart", + "ZR Open Grotto Chest": "Recovery Heart", + "ZR Frogs in the Rain": "Piece of Heart (Treasure Chest Game)", + "ZR Frogs Ocarina Game": "Piece of Heart", + "ZR Near Open Grotto Freestanding PoH": "Progressive Strength Upgrade", + "ZR Near Domain Freestanding PoH": "Piece of Heart", + "ZD Diving Minigame": "Arrows (5)", + "ZD Chest": "Slingshot", + "ZD King Zora Thawed": "Deku Stick Capacity", + "ZF Great Fairy Reward": "Bombs (20)", + "ZF Iceberg Freestanding PoH": "Deku Nut Capacity", + "ZF Bottom Freestanding PoH": "Rupees (5)", + "LH Underwater Item": "Progressive Strength Upgrade", + "LH Child Fishing": "Arrows (10)", + "LH Adult Fishing": "Arrows (30)", + "LH Lab Dive": "Piece of Heart", + "LH Freestanding PoH": "Rupees (5)", + "LH Sun": "Farores Wind", + "GV Crate Freestanding PoH": "Rupees (5)", + "GV Waterfall Freestanding PoH": "Piece of Heart", + "GV Chest": "Heart Container", + "GF Chest": "Lens of Truth", + "GF HBA 1000 Points": "Heart Container", + "GF HBA 1500 Points": "Recovery Heart", + "Wasteland Chest": "Rupees (200)", + "Colossus Great Fairy Reward": "Rupees (50)", + "Colossus Freestanding PoH": "Piece of Heart", + "OGC Great Fairy Reward": "Deku Stick Capacity", + "Deku Tree Map Chest": "Progressive Hookshot", + "Deku Tree Slingshot Room Side Chest": "Deku Nuts (5)", + "Deku Tree Slingshot Chest": "Arrows (30)", + "Deku Tree Compass Chest": "Piece of Heart", + "Deku Tree Compass Room Side Chest": "Bombs (10)", + "Deku Tree Basement Chest": "Heart Container", + "Deku Tree Queen Gohma Heart": "Heart Container", + "Dodongos Cavern Map Chest": "Rupees (5)", + "Dodongos Cavern Compass Chest": "Bombchus (10)", + "Dodongos Cavern Bomb Flower Platform Chest": "Bombs (5)", + "Dodongos Cavern Bomb Bag Chest": "Arrows (30)", + "Dodongos Cavern End of Bridge Chest": "Nayrus Love", + "Dodongos Cavern Boss Room Chest": "Rupees (20)", + "Dodongos Cavern King Dodongo Heart": "Piece of Heart", + "Jabu Jabus Belly Boomerang Chest": "Goron Tunic", + "Jabu Jabus Belly Map Chest": "Rupees (5)", + "Jabu Jabus Belly Compass Chest": "Heart Container", + "Jabu Jabus Belly Barinade Heart": "Rupees (20)", + "Bottom of the Well Front Left Fake Wall Chest": "Bow", + "Bottom of the Well Front Center Bombable Chest": "Arrows (30)", + "Bottom of the Well Back Left Bombable Chest": "Piece of Heart", + "Bottom of the Well Underwater Left Chest": "Iron Boots", + "Bottom of the Well Freestanding Key": "Small Key (Bottom of the Well)", + "Bottom of the Well Compass Chest": "Arrows (10)", + "Bottom of the Well Center Skulltula Chest": "Bombs (5)", + "Bottom of the Well Right Bottom Fake Wall Chest": "Piece of Heart", + "Bottom of the Well Fire Keese Chest": "Bombs (5)", + "Bottom of the Well Like Like Chest": "Bombchus (10)", + "Bottom of the Well Map Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Underwater Front Chest": "Bombs (5)", + "Bottom of the Well Invisible Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Lens of Truth Chest": "Recovery Heart", + "Forest Temple First Room Chest": "Piece of Heart", + "Forest Temple First Stalfos Chest": "Small Key (Forest Temple)", + "Forest Temple Raised Island Courtyard Chest": "Small Key (Forest Temple)", + "Forest Temple Map Chest": "Small Key (Forest Temple)", + "Forest Temple Well Chest": "Rupees (5)", + "Forest Temple Eye Switch Chest": "Rupees (50)", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Slingshot", + "Forest Temple Red Poe Chest": "Bombs (20)", + "Forest Temple Bow Chest": "Small Key (Forest Temple)", + "Forest Temple Blue Poe Chest": "Boss Key (Forest Temple)", + "Forest Temple Falling Ceiling Room Chest": "Deku Shield", + "Forest Temple Basement Chest": "Bombs (10)", + "Forest Temple Phantom Ganon Heart": "Hylian Shield", + "Fire Temple Near Boss Chest": "Boss Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Piece of Heart", + "Fire Temple Boss Key Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Piece of Heart", + "Fire Temple Boulder Maze Lower Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Side Room Chest": "Progressive Scale", + "Fire Temple Map Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Shortcut Chest": "Recovery Heart", + "Fire Temple Boulder Maze Upper Chest": "Small Key (Fire Temple)", + "Fire Temple Scarecrow Chest": "Small Key (Fire Temple)", + "Fire Temple Compass Chest": "Small Key (Fire Temple)", + "Fire Temple Megaton Hammer Chest": "Arrows (10)", + "Fire Temple Highest Goron Chest": "Zora Tunic", + "Fire Temple Volvagia Heart": "Small Key (Fire Temple)", + "Water Temple Compass Chest": "Arrows (30)", + "Water Temple Map Chest": "Dins Fire", + "Water Temple Cracked Wall Chest": "Small Key (Water Temple)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Boss Key (Water Temple)", + "Water Temple Central Pillar Chest": "Small Key (Water Temple)", + "Water Temple Central Bow Target Chest": "Small Key (Water Temple)", + "Water Temple Longshot Chest": "Small Key (Water Temple)", + "Water Temple River Chest": "Deku Nuts (5)", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Deku Shield", + "Shadow Temple Map Chest": "Small Key (Shadow Temple)", + "Shadow Temple Hover Boots Chest": "Rupees (20)", + "Shadow Temple Compass Chest": "Small Key (Shadow Temple)", + "Shadow Temple Early Silver Rupee Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Invisible Blades Visible Chest": "Rupees (5)", + "Shadow Temple Invisible Blades Invisible Chest": "Deku Shield", + "Shadow Temple Falling Spikes Lower Chest": "Rupees (5)", + "Shadow Temple Falling Spikes Upper Chest": "Small Key (Shadow Temple)", + "Shadow Temple Falling Spikes Switch Chest": "Eyeball Frog", + "Shadow Temple Invisible Spikes Chest": "Arrows (5)", + "Shadow Temple Freestanding Key": "Small Key (Shadow Temple)", + "Shadow Temple Wind Hint Chest": "Rupees (5)", + "Shadow Temple After Wind Enemy Chest": "Rupees (50)", + "Shadow Temple After Wind Hidden Chest": "Deku Nuts (10)", + "Shadow Temple Spike Walls Left Chest": "Small Key (Shadow Temple)", + "Shadow Temple Boss Key Chest": "Rupees (50)", + "Shadow Temple Invisible Floormaster Chest": "Piece of Heart", + "Shadow Temple Bongo Bongo Heart": "Piece of Heart", + "Spirit Temple Child Bridge Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Early Torches Chest": "Progressive Scale", + "Spirit Temple Child Climb North Chest": "Rupees (50)", + "Spirit Temple Child Climb East Chest": "Progressive Hookshot", + "Spirit Temple Map Chest": "Bombs (5)", + "Spirit Temple Sun Block Room Chest": "Progressive Wallet", + "Spirit Temple Silver Gauntlets Chest": "Piece of Heart", + "Spirit Temple Compass Chest": "Small Key (Spirit Temple)", + "Spirit Temple Early Adult Right Chest": "Small Key (Spirit Temple)", + "Spirit Temple First Mirror Left Chest": "Piece of Heart", + "Spirit Temple First Mirror Right Chest": "Biggoron Sword", + "Spirit Temple Statue Room Northeast Chest": "Magic Meter", + "Spirit Temple Statue Room Hand Chest": "Small Key (Spirit Temple)", + "Spirit Temple Near Four Armos Chest": "Rupees (5)", + "Spirit Temple Hallway Right Invisible Chest": "Piece of Heart", + "Spirit Temple Hallway Left Invisible Chest": "Heart Container", + "Spirit Temple Mirror Shield Chest": "Small Key (Spirit Temple)", + "Spirit Temple Boss Key Chest": "Piece of Heart", + "Spirit Temple Topmost Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Twinrova Heart": "Bombs (10)", + "Ice Cavern Map Chest": "Rupees (20)", + "Ice Cavern Compass Chest": "Piece of Heart", + "Ice Cavern Freestanding PoH": "Bombchus (5)", + "Ice Cavern Iron Boots Chest": "Arrows (10)", + "Gerudo Training Ground Lobby Left Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Lobby Right Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Stalfos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Before Heavy Block Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block First Chest": "Deku Stick (1)", + "Gerudo Training Ground Heavy Block Second Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Arrows (10)", + "Gerudo Training Ground Eye Statue Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Near Scarecrow Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hammer Room Clear Chest": "Megaton Hammer", + "Gerudo Training Ground Hammer Room Switch Chest": "Deku Nut Capacity", + "Gerudo Training Ground Freestanding Key": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Right Central Chest": "Progressive Strength Upgrade", + "Gerudo Training Ground Maze Right Side Chest": "Rupees (50)", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Beamos Chest": "Magic Meter", + "Gerudo Training Ground Hidden Ceiling Chest": "Piece of Heart", + "Gerudo Training Ground Maze Path First Chest": "Rupees (200)", + "Gerudo Training Ground Maze Path Second Chest": "Progressive Wallet", + "Gerudo Training Ground Maze Path Third Chest": "Deku Stick (1)", + "Gerudo Training Ground Maze Path Final Chest": "Rupees (200)", + "Ganons Castle Forest Trial Chest": "Rupees (50)", + "Ganons Castle Water Trial Left Chest": "Small Key (Ganons Castle)", + "Ganons Castle Water Trial Right Chest": "Recovery Heart", + "Ganons Castle Shadow Trial Front Chest": "Hylian Shield", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Recovery Heart", + "Ganons Castle Light Trial First Left Chest": "Recovery Heart", + "Ganons Castle Light Trial Second Left Chest": "Recovery Heart", + "Ganons Castle Light Trial Third Left Chest": "Stone of Agony", + "Ganons Castle Light Trial First Right Chest": "Rutos Letter", + "Ganons Castle Light Trial Second Right Chest": "Arrows (5)", + "Ganons Castle Light Trial Third Right Chest": "Bow", + "Ganons Castle Light Trial Invisible Enemies Chest": "Heart Container", + "Ganons Castle Light Trial Lullaby Chest": "Recovery Heart", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Small Key (Ganons Castle)", + "Ganons Castle Spirit Trial Invisible Chest": "Rupees (5)", + "Ganons Tower Boss Key Chest": "Rupees (5)" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-exclusions-var-meds.json b/tests/plando/plando-goals-exclusions-var-meds.json new file mode 100644 index 000000000..5dd13b148 --- /dev/null +++ b/tests/plando/plando-goals-exclusions-var-meds.json @@ -0,0 +1,528 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "medallions", + "bridge_medallions": 2, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 0, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "medallions", + "ganon_bosskey_medallions": 1, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "adult" + }, + "randomized_settings": { + "starting_age": "adult" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "inactive", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": "GC Shop", + "Child Spawn -> KF Links House": {"region": "LW Beyond Mido", "from": "SFM Entryway"} + }, + "locations": { + "Links Pocket": "Kokiri Emerald", + "Queen Gohma": "Spirit Medallion", + "King Dodongo": "Fire Medallion", + "Barinade": "Forest Medallion", + "Phantom Ganon": "Shadow Medallion", + "Volvagia": "Goron Ruby", + "Morpha": "Water Medallion", + "Bongo Bongo": "Light Medallion", + "Twinrova": "Zora Sapphire", + "Song from Impa": "Suns Song", + "Song from Malon": "Eponas Song", + "Song from Saria": "Nocturne of Shadow", + "Song from Royal Familys Tomb": "Requiem of Spirit", + "Song from Ocarina of Time": "Minuet of Forest", + "Song from Windmill": "Prelude of Light", + "Sheik in Forest": "Song of Storms", + "Sheik in Crater": "Sarias Song", + "Sheik in Ice Cavern": "Bolero of Fire", + "Sheik at Colossus": "Song of Time", + "Sheik in Kakariko": "Serenade of Water", + "Sheik at Temple": "Zeldas Lullaby", + "KF Midos Top Left Chest": "Deku Shield", + "KF Midos Top Right Chest": "Piece of Heart", + "KF Midos Bottom Left Chest": "Rupees (20)", + "KF Midos Bottom Right Chest": "Piece of Heart", + "KF Kokiri Sword Chest": "Bomb Bag", + "KF Storms Grotto Chest": "Arrows (10)", + "LW Ocarina Memory Game": "Bottle with Bugs", + "LW Target in Woods": "Arrows (5)", + "LW Near Shortcuts Grotto Chest": "Piece of Heart", + "Deku Theater Skull Mask": "Fire Arrows", + "Deku Theater Mask of Truth": "Rupees (20)", + "LW Skull Kid": "Light Arrows", + "LW Deku Scrub Near Bridge": {"item": "Arrows (30)", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Rupee (1)", "price": 40}, + "SFM Wolfos Grotto Chest": "Rupees (50)", + "HF Near Market Grotto Chest": "Rupees (5)", + "HF Tektite Grotto Freestanding PoH": "Rupees (200)", + "HF Southeast Grotto Chest": "Piece of Heart", + "HF Open Grotto Chest": "Ice Arrows", + "HF Deku Scrub Grotto": {"item": "Deku Stick (1)", "price": 10}, + "Market Shooting Gallery Reward": "Piece of Heart", + "Market Bombchu Bowling First Prize": "Piece of Heart", + "Market Bombchu Bowling Second Prize": "Mirror Shield", + "Market Lost Dog": "Bombs (5)", + "Market Treasure Chest Game Reward": "Piece of Heart", + "Market 10 Big Poes": "Deku Seeds (30)", + "ToT Light Arrows Cutscene": "Rupees (5)", + "HC Great Fairy Reward": "Bombchus (20)", + "LLR Talons Chickens": "Deku Nuts (5)", + "LLR Freestanding PoH": "Heart Container", + "Kak Anju as Child": "Bottle with Green Potion", + "Kak Anju as Adult": "Rupees (200)", + "Kak Impas House Freestanding PoH": "Deku Seeds (30)", + "Kak Windmill Freestanding PoH": "Rupees (5)", + "Kak Man on Roof": "Hover Boots", + "Kak Open Grotto Chest": "Deku Seeds (30)", + "Kak Redead Grotto Chest": "Piece of Heart", + "Kak Shooting Gallery Reward": "Piece of Heart", + "Kak 10 Gold Skulltula Reward": "Rupees (5)", + "Kak 20 Gold Skulltula Reward": "Piece of Heart", + "Kak 30 Gold Skulltula Reward": "Double Defense", + "Kak 40 Gold Skulltula Reward": "Bomb Bag", + "Kak 50 Gold Skulltula Reward": "Slingshot", + "Graveyard Shield Grave Chest": "Rupees (20)", + "Graveyard Heart Piece Grave Chest": "Bomb Bag", + "Graveyard Royal Familys Tomb Chest": "Rupees (200)", + "Graveyard Freestanding PoH": "Bow", + "Graveyard Dampe Gravedigging Tour": "Boomerang", + "Graveyard Hookshot Chest": "Piece of Heart", + "Graveyard Dampe Race Freestanding PoH": "Arrows (10)", + "DMT Freestanding PoH": "Bottle with Green Potion", + "DMT Chest": "Rupees (5)", + "DMT Storms Grotto Chest": "Bombchus (10)", + "DMT Great Fairy Reward": "Rupees (5)", + "DMT Biggoron": "Piece of Heart", + "GC Darunias Joy": "Recovery Heart", + "GC Pot Freestanding PoH": "Arrows (10)", + "GC Rolling Goron as Child": "Rupees (5)", + "GC Rolling Goron as Adult": "Rupees (5)", + "GC Maze Left Chest": "Kokiri Sword", + "GC Maze Right Chest": "Rupees (50)", + "GC Maze Center Chest": "Piece of Heart", + "DMC Volcano Freestanding PoH": "Rupees (20)", + "DMC Wall Freestanding PoH": "Piece of Heart", + "DMC Upper Grotto Chest": "Rupees (5)", + "DMC Great Fairy Reward": "Recovery Heart", + "ZR Open Grotto Chest": "Recovery Heart", + "ZR Frogs in the Rain": "Piece of Heart (Treasure Chest Game)", + "ZR Frogs Ocarina Game": "Piece of Heart", + "ZR Near Open Grotto Freestanding PoH": "Progressive Strength Upgrade", + "ZR Near Domain Freestanding PoH": "Piece of Heart", + "ZD Diving Minigame": "Arrows (5)", + "ZD Chest": "Slingshot", + "ZD King Zora Thawed": "Deku Stick Capacity", + "ZF Great Fairy Reward": "Bombs (20)", + "ZF Iceberg Freestanding PoH": "Deku Nut Capacity", + "ZF Bottom Freestanding PoH": "Rupees (5)", + "LH Underwater Item": "Progressive Strength Upgrade", + "LH Child Fishing": "Arrows (10)", + "LH Adult Fishing": "Arrows (30)", + "LH Lab Dive": "Piece of Heart", + "LH Freestanding PoH": "Rupees (5)", + "LH Sun": "Farores Wind", + "GV Crate Freestanding PoH": "Rupees (5)", + "GV Waterfall Freestanding PoH": "Piece of Heart", + "GV Chest": "Heart Container", + "GF Chest": "Lens of Truth", + "GF HBA 1000 Points": "Heart Container", + "GF HBA 1500 Points": "Recovery Heart", + "Wasteland Chest": "Rupees (200)", + "Colossus Great Fairy Reward": "Rupees (50)", + "Colossus Freestanding PoH": "Piece of Heart", + "OGC Great Fairy Reward": "Deku Stick Capacity", + "Deku Tree Map Chest": "Progressive Hookshot", + "Deku Tree Slingshot Room Side Chest": "Deku Nuts (5)", + "Deku Tree Slingshot Chest": "Arrows (30)", + "Deku Tree Compass Chest": "Piece of Heart", + "Deku Tree Compass Room Side Chest": "Bombs (10)", + "Deku Tree Basement Chest": "Heart Container", + "Deku Tree Queen Gohma Heart": "Heart Container", + "Dodongos Cavern Map Chest": "Rupees (5)", + "Dodongos Cavern Compass Chest": "Bombchus (10)", + "Dodongos Cavern Bomb Flower Platform Chest": "Bombs (5)", + "Dodongos Cavern Bomb Bag Chest": "Arrows (30)", + "Dodongos Cavern End of Bridge Chest": "Nayrus Love", + "Dodongos Cavern Boss Room Chest": "Rupees (20)", + "Dodongos Cavern King Dodongo Heart": "Piece of Heart", + "Jabu Jabus Belly Boomerang Chest": "Goron Tunic", + "Jabu Jabus Belly Map Chest": "Rupees (5)", + "Jabu Jabus Belly Compass Chest": "Heart Container", + "Jabu Jabus Belly Barinade Heart": "Rupees (20)", + "Bottom of the Well Front Left Fake Wall Chest": "Bow", + "Bottom of the Well Front Center Bombable Chest": "Arrows (30)", + "Bottom of the Well Back Left Bombable Chest": "Piece of Heart", + "Bottom of the Well Underwater Left Chest": "Iron Boots", + "Bottom of the Well Freestanding Key": "Small Key (Bottom of the Well)", + "Bottom of the Well Compass Chest": "Arrows (10)", + "Bottom of the Well Center Skulltula Chest": "Bombs (5)", + "Bottom of the Well Right Bottom Fake Wall Chest": "Piece of Heart", + "Bottom of the Well Fire Keese Chest": "Bombs (5)", + "Bottom of the Well Like Like Chest": "Bombchus (10)", + "Bottom of the Well Map Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Underwater Front Chest": "Bombs (5)", + "Bottom of the Well Invisible Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Lens of Truth Chest": "Recovery Heart", + "Forest Temple First Room Chest": "Piece of Heart", + "Forest Temple First Stalfos Chest": "Small Key (Forest Temple)", + "Forest Temple Raised Island Courtyard Chest": "Small Key (Forest Temple)", + "Forest Temple Map Chest": "Small Key (Forest Temple)", + "Forest Temple Well Chest": "Rupees (5)", + "Forest Temple Eye Switch Chest": "Rupees (50)", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Slingshot", + "Forest Temple Red Poe Chest": "Bombs (20)", + "Forest Temple Bow Chest": "Small Key (Forest Temple)", + "Forest Temple Blue Poe Chest": "Boss Key (Forest Temple)", + "Forest Temple Falling Ceiling Room Chest": "Deku Shield", + "Forest Temple Basement Chest": "Bombs (10)", + "Forest Temple Phantom Ganon Heart": "Hylian Shield", + "Fire Temple Near Boss Chest": "Boss Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Piece of Heart", + "Fire Temple Boss Key Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Piece of Heart", + "Fire Temple Boulder Maze Lower Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Side Room Chest": "Progressive Scale", + "Fire Temple Map Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Shortcut Chest": "Recovery Heart", + "Fire Temple Boulder Maze Upper Chest": "Small Key (Fire Temple)", + "Fire Temple Scarecrow Chest": "Small Key (Fire Temple)", + "Fire Temple Compass Chest": "Small Key (Fire Temple)", + "Fire Temple Megaton Hammer Chest": "Arrows (10)", + "Fire Temple Highest Goron Chest": "Zora Tunic", + "Fire Temple Volvagia Heart": "Small Key (Fire Temple)", + "Water Temple Compass Chest": "Arrows (30)", + "Water Temple Map Chest": "Dins Fire", + "Water Temple Cracked Wall Chest": "Small Key (Water Temple)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Boss Key (Water Temple)", + "Water Temple Central Pillar Chest": "Small Key (Water Temple)", + "Water Temple Central Bow Target Chest": "Small Key (Water Temple)", + "Water Temple Longshot Chest": "Small Key (Water Temple)", + "Water Temple River Chest": "Deku Nuts (5)", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Deku Shield", + "Shadow Temple Map Chest": "Small Key (Shadow Temple)", + "Shadow Temple Hover Boots Chest": "Rupees (20)", + "Shadow Temple Compass Chest": "Small Key (Shadow Temple)", + "Shadow Temple Early Silver Rupee Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Invisible Blades Visible Chest": "Rupees (5)", + "Shadow Temple Invisible Blades Invisible Chest": "Deku Shield", + "Shadow Temple Falling Spikes Lower Chest": "Rupees (5)", + "Shadow Temple Falling Spikes Upper Chest": "Small Key (Shadow Temple)", + "Shadow Temple Falling Spikes Switch Chest": "Eyeball Frog", + "Shadow Temple Invisible Spikes Chest": "Arrows (5)", + "Shadow Temple Freestanding Key": "Small Key (Shadow Temple)", + "Shadow Temple Wind Hint Chest": "Rupees (5)", + "Shadow Temple After Wind Enemy Chest": "Rupees (50)", + "Shadow Temple After Wind Hidden Chest": "Deku Nuts (10)", + "Shadow Temple Spike Walls Left Chest": "Small Key (Shadow Temple)", + "Shadow Temple Boss Key Chest": "Rupees (50)", + "Shadow Temple Invisible Floormaster Chest": "Piece of Heart", + "Shadow Temple Bongo Bongo Heart": "Piece of Heart", + "Spirit Temple Child Bridge Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Early Torches Chest": "Progressive Scale", + "Spirit Temple Child Climb North Chest": "Rupees (50)", + "Spirit Temple Child Climb East Chest": "Progressive Hookshot", + "Spirit Temple Map Chest": "Bombs (5)", + "Spirit Temple Sun Block Room Chest": "Progressive Wallet", + "Spirit Temple Silver Gauntlets Chest": "Piece of Heart", + "Spirit Temple Compass Chest": "Small Key (Spirit Temple)", + "Spirit Temple Early Adult Right Chest": "Small Key (Spirit Temple)", + "Spirit Temple First Mirror Left Chest": "Piece of Heart", + "Spirit Temple First Mirror Right Chest": "Biggoron Sword", + "Spirit Temple Statue Room Northeast Chest": "Magic Meter", + "Spirit Temple Statue Room Hand Chest": "Small Key (Spirit Temple)", + "Spirit Temple Near Four Armos Chest": "Rupees (5)", + "Spirit Temple Hallway Right Invisible Chest": "Piece of Heart", + "Spirit Temple Hallway Left Invisible Chest": "Heart Container", + "Spirit Temple Mirror Shield Chest": "Small Key (Spirit Temple)", + "Spirit Temple Boss Key Chest": "Piece of Heart", + "Spirit Temple Topmost Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Twinrova Heart": "Bombs (10)", + "Ice Cavern Map Chest": "Rupees (20)", + "Ice Cavern Compass Chest": "Piece of Heart", + "Ice Cavern Freestanding PoH": "Bombchus (5)", + "Ice Cavern Iron Boots Chest": "Arrows (10)", + "Gerudo Training Ground Lobby Left Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Lobby Right Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Stalfos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Before Heavy Block Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block First Chest": "Deku Stick (1)", + "Gerudo Training Ground Heavy Block Second Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Arrows (10)", + "Gerudo Training Ground Eye Statue Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Near Scarecrow Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hammer Room Clear Chest": "Megaton Hammer", + "Gerudo Training Ground Hammer Room Switch Chest": "Deku Nut Capacity", + "Gerudo Training Ground Freestanding Key": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Right Central Chest": "Progressive Strength Upgrade", + "Gerudo Training Ground Maze Right Side Chest": "Rupees (50)", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Beamos Chest": "Magic Meter", + "Gerudo Training Ground Hidden Ceiling Chest": "Piece of Heart", + "Gerudo Training Ground Maze Path First Chest": "Rupees (200)", + "Gerudo Training Ground Maze Path Second Chest": "Progressive Wallet", + "Gerudo Training Ground Maze Path Third Chest": "Deku Stick (1)", + "Gerudo Training Ground Maze Path Final Chest": "Rupees (200)", + "Ganons Castle Forest Trial Chest": "Rupees (50)", + "Ganons Castle Water Trial Left Chest": "Small Key (Ganons Castle)", + "Ganons Castle Water Trial Right Chest": "Recovery Heart", + "Ganons Castle Shadow Trial Front Chest": "Hylian Shield", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Recovery Heart", + "Ganons Castle Light Trial First Left Chest": "Recovery Heart", + "Ganons Castle Light Trial Second Left Chest": "Recovery Heart", + "Ganons Castle Light Trial Third Left Chest": "Stone of Agony", + "Ganons Castle Light Trial First Right Chest": "Rutos Letter", + "Ganons Castle Light Trial Second Right Chest": "Arrows (5)", + "Ganons Castle Light Trial Third Right Chest": "Bow", + "Ganons Castle Light Trial Invisible Enemies Chest": "Heart Container", + "Ganons Castle Light Trial Lullaby Chest": "Recovery Heart", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Small Key (Ganons Castle)", + "Ganons Castle Spirit Trial Invisible Chest": "Rupees (5)", + "Ganons Tower Boss Key Chest": "Rupees (5)" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-exclusions-var-stones.json b/tests/plando/plando-goals-exclusions-var-stones.json new file mode 100644 index 000000000..546005d45 --- /dev/null +++ b/tests/plando/plando-goals-exclusions-var-stones.json @@ -0,0 +1,528 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "stones", + "bridge_stones": 2, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 0, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "stones", + "ganon_bosskey_stones": 2, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "child" + }, + "randomized_settings": { + "starting_age": "child" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "inactive", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": "Market Treasure Chest Game", + "Child Spawn -> KF Links House": {"region": "Hyrule Field", "from": "ZR Front"} + }, + "locations": { + "Links Pocket": "Kokiri Emerald", + "Queen Gohma": "Goron Ruby", + "King Dodongo": "Shadow Medallion", + "Barinade": "Zora Sapphire", + "Phantom Ganon": "Spirit Medallion", + "Volvagia": "Forest Medallion", + "Morpha": "Light Medallion", + "Bongo Bongo": "Fire Medallion", + "Twinrova": "Water Medallion", + "Song from Impa": "Serenade of Water", + "Song from Malon": "Eponas Song", + "Song from Saria": "Suns Song", + "Song from Royal Familys Tomb": "Nocturne of Shadow", + "Song from Ocarina of Time": "Minuet of Forest", + "Song from Windmill": "Bolero of Fire", + "Sheik in Forest": "Prelude of Light", + "Sheik in Crater": "Zeldas Lullaby", + "Sheik in Ice Cavern": "Song of Storms", + "Sheik at Colossus": "Song of Time", + "Sheik in Kakariko": "Sarias Song", + "Sheik at Temple": "Requiem of Spirit", + "KF Midos Top Left Chest": "Deku Nut Capacity", + "KF Midos Top Right Chest": "Piece of Heart", + "KF Midos Bottom Left Chest": "Rupees (50)", + "KF Midos Bottom Right Chest": "Arrows (30)", + "KF Kokiri Sword Chest": "Heart Container", + "KF Storms Grotto Chest": "Bombchus (10)", + "LW Ocarina Memory Game": "Arrows (10)", + "LW Target in Woods": "Piece of Heart", + "LW Near Shortcuts Grotto Chest": "Rupees (5)", + "Deku Theater Skull Mask": "Rupees (50)", + "Deku Theater Mask of Truth": "Rupees (50)", + "LW Skull Kid": "Heart Container", + "LW Deku Scrub Near Bridge": {"item": "Piece of Heart", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Piece of Heart", "price": 40}, + "SFM Wolfos Grotto Chest": "Fire Arrows", + "HF Near Market Grotto Chest": "Deku Shield", + "HF Tektite Grotto Freestanding PoH": "Rupees (5)", + "HF Southeast Grotto Chest": "Magic Meter", + "HF Open Grotto Chest": "Rupees (200)", + "HF Deku Scrub Grotto": {"item": "Bomb Bag", "price": 10}, + "Market Shooting Gallery Reward": "Rupees (5)", + "Market Bombchu Bowling First Prize": "Rupees (5)", + "Market Bombchu Bowling Second Prize": "Piece of Heart", + "Market Lost Dog": "Piece of Heart", + "Market Treasure Chest Game Reward": "Recovery Heart", + "Market 10 Big Poes": "Bottle", + "ToT Light Arrows Cutscene": "Arrows (10)", + "HC Great Fairy Reward": "Slingshot", + "LLR Talons Chickens": "Piece of Heart", + "LLR Freestanding PoH": "Bombchus (20)", + "Kak Anju as Child": "Rupees (5)", + "Kak Anju as Adult": "Rupees (5)", + "Kak Impas House Freestanding PoH": "Piece of Heart", + "Kak Windmill Freestanding PoH": "Bow", + "Kak Man on Roof": "Ice Arrows", + "Kak Open Grotto Chest": "Rupees (5)", + "Kak Redead Grotto Chest": "Arrows (5)", + "Kak Shooting Gallery Reward": "Piece of Heart", + "Kak 10 Gold Skulltula Reward": "Recovery Heart", + "Kak 20 Gold Skulltula Reward": "Megaton Hammer", + "Kak 30 Gold Skulltula Reward": "Progressive Scale", + "Kak 40 Gold Skulltula Reward": "Bombs (10)", + "Kak 50 Gold Skulltula Reward": "Rupees (5)", + "Graveyard Shield Grave Chest": "Piece of Heart", + "Graveyard Heart Piece Grave Chest": "Farores Wind", + "Graveyard Royal Familys Tomb Chest": "Rupees (5)", + "Graveyard Freestanding PoH": "Kokiri Sword", + "Graveyard Dampe Gravedigging Tour": "Recovery Heart", + "Graveyard Hookshot Chest": "Magic Meter", + "Graveyard Dampe Race Freestanding PoH": "Rupees (5)", + "DMT Freestanding PoH": "Hylian Shield", + "DMT Chest": "Piece of Heart", + "DMT Storms Grotto Chest": "Piece of Heart", + "DMT Great Fairy Reward": "Deku Stick Capacity", + "DMT Biggoron": "Stone of Agony", + "GC Darunias Joy": "Slingshot", + "GC Pot Freestanding PoH": "Recovery Heart", + "GC Rolling Goron as Child": "Progressive Strength Upgrade", + "GC Rolling Goron as Adult": "Progressive Scale", + "GC Maze Left Chest": "Iron Boots", + "GC Maze Right Chest": "Double Defense", + "GC Maze Center Chest": "Mirror Shield", + "DMC Volcano Freestanding PoH": "Recovery Heart", + "DMC Wall Freestanding PoH": "Recovery Heart", + "DMC Upper Grotto Chest": "Rupees (20)", + "DMC Great Fairy Reward": "Bombs (5)", + "ZR Open Grotto Chest": "Bombs (20)", + "ZR Frogs in the Rain": "Recovery Heart", + "ZR Frogs Ocarina Game": "Biggoron Sword", + "ZR Near Open Grotto Freestanding PoH": "Heart Container", + "ZR Near Domain Freestanding PoH": "Piece of Heart", + "ZD Diving Minigame": "Rupees (50)", + "ZD Chest": "Piece of Heart", + "ZD King Zora Thawed": "Bombs (5)", + "ZF Great Fairy Reward": "Bomb Bag", + "ZF Iceberg Freestanding PoH": "Arrows (30)", + "ZF Bottom Freestanding PoH": "Piece of Heart", + "LH Underwater Item": "Piece of Heart", + "LH Child Fishing": "Piece of Heart", + "LH Adult Fishing": "Bombchus (5)", + "LH Lab Dive": "Rupees (5)", + "LH Freestanding PoH": "Deku Seeds (30)", + "LH Sun": "Piece of Heart", + "GV Crate Freestanding PoH": "Rupees (5)", + "GV Waterfall Freestanding PoH": "Arrows (5)", + "GV Chest": "Bombs (5)", + "GF Chest": "Piece of Heart", + "GF HBA 1000 Points": "Piece of Heart (Treasure Chest Game)", + "GF HBA 1500 Points": "Dins Fire", + "Wasteland Chest": "Progressive Strength Upgrade", + "Colossus Great Fairy Reward": "Piece of Heart", + "Colossus Freestanding PoH": "Bombs (20)", + "OGC Great Fairy Reward": "Deku Nut Capacity", + "Deku Tree Map Chest": "Arrows (30)", + "Deku Tree Slingshot Room Side Chest": "Bombs (5)", + "Deku Tree Slingshot Chest": "Light Arrows", + "Deku Tree Compass Chest": "Rupees (5)", + "Deku Tree Compass Room Side Chest": "Progressive Hookshot", + "Deku Tree Basement Chest": "Rupees (5)", + "Deku Tree Queen Gohma Heart": "Bombs (5)", + "Dodongos Cavern Map Chest": "Hover Boots", + "Dodongos Cavern Compass Chest": "Rupees (200)", + "Dodongos Cavern Bomb Flower Platform Chest": "Arrows (5)", + "Dodongos Cavern Bomb Bag Chest": "Arrows (5)", + "Dodongos Cavern End of Bridge Chest": "Recovery Heart", + "Dodongos Cavern Boss Room Chest": "Bow", + "Dodongos Cavern King Dodongo Heart": "Progressive Wallet", + "Jabu Jabus Belly Boomerang Chest": "Piece of Heart", + "Jabu Jabus Belly Map Chest": "Rupees (5)", + "Jabu Jabus Belly Compass Chest": "Lens of Truth", + "Jabu Jabus Belly Barinade Heart": "Deku Stick Capacity", + "Bottom of the Well Front Left Fake Wall Chest": "Arrows (10)", + "Bottom of the Well Front Center Bombable Chest": "Progressive Strength Upgrade", + "Bottom of the Well Back Left Bombable Chest": "Rupees (200)", + "Bottom of the Well Underwater Left Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Freestanding Key": "Rupees (20)", + "Bottom of the Well Compass Chest": "Rupees (20)", + "Bottom of the Well Center Skulltula Chest": "Arrows (10)", + "Bottom of the Well Right Bottom Fake Wall Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Fire Keese Chest": "Bombchus (10)", + "Bottom of the Well Like Like Chest": "Deku Nuts (10)", + "Bottom of the Well Map Chest": "Deku Shield", + "Bottom of the Well Underwater Front Chest": "Piece of Heart", + "Bottom of the Well Invisible Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Lens of Truth Chest": "Heart Container", + "Forest Temple First Room Chest": "Rupees (5)", + "Forest Temple First Stalfos Chest": "Rupees (200)", + "Forest Temple Raised Island Courtyard Chest": "Small Key (Forest Temple)", + "Forest Temple Map Chest": "Rupees (5)", + "Forest Temple Well Chest": "Rupees (50)", + "Forest Temple Eye Switch Chest": "Boss Key (Forest Temple)", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Small Key (Forest Temple)", + "Forest Temple Red Poe Chest": "Small Key (Forest Temple)", + "Forest Temple Bow Chest": "Small Key (Forest Temple)", + "Forest Temple Blue Poe Chest": "Deku Shield", + "Forest Temple Falling Ceiling Room Chest": "Heart Container", + "Forest Temple Basement Chest": "Piece of Heart", + "Forest Temple Phantom Ganon Heart": "Arrows (5)", + "Fire Temple Near Boss Chest": "Small Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Small Key (Fire Temple)", + "Fire Temple Boss Key Chest": "Boss Key (Fire Temple)", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Progressive Hookshot", + "Fire Temple Boulder Maze Lower Chest": "Piece of Heart", + "Fire Temple Boulder Maze Side Room Chest": "Small Key (Fire Temple)", + "Fire Temple Map Chest": "Heart Container", + "Fire Temple Boulder Maze Shortcut Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Upper Chest": "Small Key (Fire Temple)", + "Fire Temple Scarecrow Chest": "Rupee (1)", + "Fire Temple Compass Chest": "Arrows (30)", + "Fire Temple Megaton Hammer Chest": "Small Key (Fire Temple)", + "Fire Temple Highest Goron Chest": "Bombs (5)", + "Fire Temple Volvagia Heart": "Small Key (Fire Temple)", + "Water Temple Compass Chest": "Rupees (20)", + "Water Temple Map Chest": "Small Key (Water Temple)", + "Water Temple Cracked Wall Chest": "Small Key (Water Temple)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Bomb Bag", + "Water Temple Central Pillar Chest": "Rupees (5)", + "Water Temple Central Bow Target Chest": "Small Key (Water Temple)", + "Water Temple Longshot Chest": "Small Key (Water Temple)", + "Water Temple River Chest": "Boss Key (Water Temple)", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Slingshot", + "Shadow Temple Map Chest": "Small Key (Shadow Temple)", + "Shadow Temple Hover Boots Chest": "Small Key (Shadow Temple)", + "Shadow Temple Compass Chest": "Piece of Heart", + "Shadow Temple Early Silver Rupee Chest": "Deku Seeds (30)", + "Shadow Temple Invisible Blades Visible Chest": "Deku Shield", + "Shadow Temple Invisible Blades Invisible Chest": "Rupees (200)", + "Shadow Temple Falling Spikes Lower Chest": "Deku Stick (1)", + "Shadow Temple Falling Spikes Upper Chest": "Bombs (5)", + "Shadow Temple Falling Spikes Switch Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Invisible Spikes Chest": "Piece of Heart", + "Shadow Temple Freestanding Key": "Small Key (Shadow Temple)", + "Shadow Temple Wind Hint Chest": "Small Key (Shadow Temple)", + "Shadow Temple After Wind Enemy Chest": "Rupees (20)", + "Shadow Temple After Wind Hidden Chest": "Rupees (20)", + "Shadow Temple Spike Walls Left Chest": "Small Key (Shadow Temple)", + "Shadow Temple Boss Key Chest": "Piece of Heart", + "Shadow Temple Invisible Floormaster Chest": "Piece of Heart", + "Shadow Temple Bongo Bongo Heart": "Deku Seeds (30)", + "Spirit Temple Child Bridge Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Early Torches Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Climb North Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Child Climb East Chest": "Arrows (5)", + "Spirit Temple Map Chest": "Rupees (50)", + "Spirit Temple Sun Block Room Chest": "Arrows (30)", + "Spirit Temple Silver Gauntlets Chest": "Small Key (Spirit Temple)", + "Spirit Temple Compass Chest": "Piece of Heart", + "Spirit Temple Early Adult Right Chest": "Small Key (Spirit Temple)", + "Spirit Temple First Mirror Left Chest": "Zora Tunic", + "Spirit Temple First Mirror Right Chest": "Arrows (5)", + "Spirit Temple Statue Room Northeast Chest": "Piece of Heart", + "Spirit Temple Statue Room Hand Chest": "Deku Seeds (30)", + "Spirit Temple Near Four Armos Chest": "Rupees (5)", + "Spirit Temple Hallway Right Invisible Chest": "Bombs (10)", + "Spirit Temple Hallway Left Invisible Chest": "Small Key (Spirit Temple)", + "Spirit Temple Mirror Shield Chest": "Piece of Heart", + "Spirit Temple Boss Key Chest": "Heart Container", + "Spirit Temple Topmost Chest": "Rupees (5)", + "Spirit Temple Twinrova Heart": "Arrows (30)", + "Ice Cavern Map Chest": "Recovery Heart", + "Ice Cavern Compass Chest": "Heart Container", + "Ice Cavern Freestanding PoH": "Bombs (10)", + "Ice Cavern Iron Boots Chest": "Deku Nuts (5)", + "Gerudo Training Ground Lobby Left Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Lobby Right Chest": "Bottle with Poe", + "Gerudo Training Ground Stalfos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Before Heavy Block Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Second Chest": "Deku Stick (1)", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Eye Statue Chest": "Bow", + "Gerudo Training Ground Near Scarecrow Chest": "Rupees (50)", + "Gerudo Training Ground Hammer Room Clear Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hammer Room Switch Chest": "Rupees (20)", + "Gerudo Training Ground Freestanding Key": "Arrows (10)", + "Gerudo Training Ground Maze Right Central Chest": "Bombs (5)", + "Gerudo Training Ground Maze Right Side Chest": "Bombchus (10)", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Beamos Chest": "Piece of Heart", + "Gerudo Training Ground Hidden Ceiling Chest": "Rupees (200)", + "Gerudo Training Ground Maze Path First Chest": "Arrows (10)", + "Gerudo Training Ground Maze Path Second Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Final Chest": "Piece of Heart", + "Ganons Castle Forest Trial Chest": "Hylian Shield", + "Ganons Castle Water Trial Left Chest": "Arrows (10)", + "Ganons Castle Water Trial Right Chest": "Small Key (Ganons Castle)", + "Ganons Castle Shadow Trial Front Chest": "Nayrus Love", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Rutos Letter", + "Ganons Castle Light Trial First Left Chest": "Bombs (5)", + "Ganons Castle Light Trial Second Left Chest": "Goron Tunic", + "Ganons Castle Light Trial Third Left Chest": "Boomerang", + "Ganons Castle Light Trial First Right Chest": "Claim Check", + "Ganons Castle Light Trial Second Right Chest": "Piece of Heart", + "Ganons Castle Light Trial Third Right Chest": "Recovery Heart", + "Ganons Castle Light Trial Invisible Enemies Chest": "Recovery Heart", + "Ganons Castle Light Trial Lullaby Chest": "Bottle with Fish", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Small Key (Ganons Castle)", + "Ganons Castle Spirit Trial Invisible Chest": "Arrows (10)", + "Ganons Tower Boss Key Chest": "Progressive Wallet" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-multiworld-crisscross-entrance-locks.json b/tests/plando/plando-goals-multiworld-crisscross-entrance-locks.json new file mode 100644 index 000000000..1d36a9ee1 --- /dev/null +++ b/tests/plando/plando-goals-multiworld-crisscross-entrance-locks.json @@ -0,0 +1,760 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 2, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "medallions", + "bridge_medallions": 2, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 0, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "medallions", + "ganon_bosskey_medallions": 6, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [ + "deku_shield" + ], + "starting_items": [ + "ocarina" + ], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "adult" + }, + "locations": { + "World 1": { + "Links Pocket": {"item": "Fire Medallion", "player": 1}, + "Queen Gohma": {"item": "Water Medallion", "player": 1}, + "King Dodongo": {"item": "Forest Medallion", "player": 1}, + "Barinade": {"item": "Kokiri Emerald", "player": 1}, + "Phantom Ganon": {"item": "Shadow Medallion", "player": 1}, + "Volvagia": {"item": "Zora Sapphire", "player": 1}, + "Morpha": {"item": "Light Medallion", "player": 1}, + "Bongo Bongo": {"item": "Goron Ruby", "player": 1}, + "Twinrova": {"item": "Spirit Medallion", "player": 1}, + "Song from Impa": {"item": "Eponas Song", "player": 1}, + "Song from Malon": {"item": "Requiem of Spirit", "player": 1}, + "Song from Saria": {"item": "Song of Time", "player": 1}, + "Song from Royal Familys Tomb": {"item": "Nocturne of Shadow", "player": 1}, + "Song from Ocarina of Time": {"item": "Suns Song", "player": 1}, + "Song from Windmill": {"item": "Prelude of Light", "player": 1}, + "Sheik in Forest": {"item": "Bolero of Fire", "player": 1}, + "Sheik in Crater": {"item": "Song of Storms", "player": 1}, + "Sheik in Ice Cavern": {"item": "Minuet of Forest", "player": 1}, + "Sheik at Colossus": {"item": "Zeldas Lullaby", "player": 1}, + "Sheik in Kakariko": {"item": "Sarias Song", "player": 1}, + "Sheik at Temple": {"item": "Serenade of Water", "player": 1}, + "KF Midos Top Left Chest": {"item": "Heart Container", "player": 2}, + "KF Midos Top Right Chest": {"item": "Progressive Strength Upgrade", "player": 2}, + "KF Midos Bottom Left Chest": {"item": "Rupees (20)", "player": 1}, + "KF Midos Bottom Right Chest": {"item": "Slingshot", "player": 1}, + "KF Kokiri Sword Chest": {"item": "Piece of Heart", "player": 2}, + "KF Storms Grotto Chest": {"item": "Rupees (5)", "player": 1}, + "LW Ocarina Memory Game": {"item": "Deku Nuts (5)", "player": 2}, + "LW Target in Woods": {"item": "Piece of Heart", "player": 2}, + "LW Near Shortcuts Grotto Chest": {"item": "Bombs (5)", "player": 1}, + "Deku Theater Skull Mask": {"item": "Bombs (10)", "player": 1}, + "Deku Theater Mask of Truth": {"item": "Deku Nuts (10)", "player": 1}, + "LW Skull Kid": {"item": "Rupees (5)", "player": 2}, + "LW Deku Scrub Near Bridge": {"item": "Piece of Heart", "player": 2, "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Piece of Heart", "player": 1, "price": 40}, + "SFM Wolfos Grotto Chest": {"item": "Piece of Heart", "player": 1}, + "HF Near Market Grotto Chest": {"item": "Piece of Heart", "player": 1}, + "HF Tektite Grotto Freestanding PoH": {"item": "Bombs (10)", "player": 1}, + "HF Southeast Grotto Chest": {"item": "Hylian Shield", "player": 1}, + "HF Open Grotto Chest": {"item": "Slingshot", "player": 2}, + "HF Deku Scrub Grotto": {"item": "Recovery Heart", "player": 1, "price": 10}, + "Market Shooting Gallery Reward": {"item": "Heart Container", "player": 2}, + "Market Bombchu Bowling First Prize": {"item": "Piece of Heart", "player": 2}, + "Market Bombchu Bowling Second Prize": {"item": "Rupees (5)", "player": 1}, + "Market Lost Dog": {"item": "Rupees (5)", "player": 2}, + "Market Treasure Chest Game Reward": {"item": "Rupees (5)", "player": 2}, + "Market 10 Big Poes": {"item": "Progressive Strength Upgrade", "player": 1}, + "ToT Light Arrows Cutscene": {"item": "Rupees (5)", "player": 1}, + "HC Great Fairy Reward": {"item": "Arrows (30)", "player": 2}, + "LLR Talons Chickens": {"item": "Hover Boots", "player": 2}, + "LLR Freestanding PoH": {"item": "Ice Arrows", "player": 1}, + "Kak Anju as Child": {"item": "Deku Stick (1)", "player": 2}, + "Kak Anju as Adult": {"item": "Rupees (50)", "player": 1}, + "Kak Impas House Freestanding PoH": {"item": "Deku Shield", "player": 2}, + "Kak Windmill Freestanding PoH": {"item": "Rupees (20)", "player": 2}, + "Kak Man on Roof": {"item": "Slingshot", "player": 2}, + "Kak Open Grotto Chest": {"item": "Deku Shield", "player": 1}, + "Kak Redead Grotto Chest": {"item": "Rupees (5)", "player": 2}, + "Kak Shooting Gallery Reward": {"item": "Piece of Heart", "player": 2}, + "Kak 10 Gold Skulltula Reward": {"item": "Rupees (20)", "player": 1}, + "Kak 20 Gold Skulltula Reward": {"item": "Megaton Hammer", "player": 2}, + "Kak 30 Gold Skulltula Reward": {"item": "Bombs (5)", "player": 2}, + "Kak 40 Gold Skulltula Reward": {"item": "Arrows (5)", "player": 1}, + "Kak 50 Gold Skulltula Reward": {"item": "Piece of Heart", "player": 2}, + "Graveyard Shield Grave Chest": {"item": "Deku Stick Capacity", "player": 2}, + "Graveyard Heart Piece Grave Chest": {"item": "Deku Seeds (30)", "player": 2}, + "Graveyard Royal Familys Tomb Chest": {"item": "Recovery Heart", "player": 1}, + "Graveyard Freestanding PoH": {"item": "Arrows (5)", "player": 2}, + "Graveyard Dampe Gravedigging Tour": {"item": "Double Defense", "player": 2}, + "Graveyard Hookshot Chest": {"item": "Piece of Heart", "player": 1}, + "Graveyard Dampe Race Freestanding PoH": {"item": "Arrows (30)", "player": 2}, + "DMT Freestanding PoH": {"item": "Recovery Heart", "player": 2}, + "DMT Chest": {"item": "Arrows (5)", "player": 1}, + "DMT Storms Grotto Chest": {"item": "Farores Wind", "player": 1}, + "DMT Biggoron": {"item": "Bow", "player": 1}, + "GC Darunias Joy": {"item": "Arrows (30)", "player": 1}, + "GC Rolling Goron as Child": {"item": "Progressive Scale", "player": 1}, + "GC Rolling Goron as Adult": {"item": "Rupees (20)", "player": 2}, + "GC Maze Left Chest": {"item": "Farores Wind", "player": 2}, + "GC Maze Right Chest": {"item": "Piece of Heart", "player": 1}, + "GC Maze Center Chest": {"item": "Nayrus Love", "player": 2}, + "DMC Volcano Freestanding PoH": {"item": "Bow", "player": 1}, + "DMC Wall Freestanding PoH": {"item": "Goron Tunic", "player": 2}, + "DMC Upper Grotto Chest": {"item": "Deku Shield", "player": 2}, + "DMC Great Fairy Reward": {"item": "Rupees (50)", "player": 1}, + "ZR Open Grotto Chest": {"item": "Stone of Agony", "player": 1}, + "ZR Frogs in the Rain": {"item": "Arrows (5)", "player": 2}, + "ZR Frogs Ocarina Game": {"item": "Rupees (200)", "player": 2}, + "ZR Near Open Grotto Freestanding PoH": {"item": "Rupees (200)", "player": 2}, + "ZR Near Domain Freestanding PoH": {"item": "Bombs (5)", "player": 1}, + "ZD Diving Minigame": {"item": "Piece of Heart", "player": 2}, + "ZD Chest": {"item": "Arrows (10)", "player": 1}, + "ZD King Zora Thawed": {"item": "Rupees (20)", "player": 1}, + "ZF Great Fairy Reward": {"item": "Rupees (20)", "player": 1}, + "ZF Iceberg Freestanding PoH": {"item": "Recovery Heart", "player": 1}, + "ZF Bottom Freestanding PoH": {"item": "Rupees (5)", "player": 1}, + "LH Underwater Item": {"item": "Hylian Shield", "player": 1}, + "LH Adult Fishing": {"item": "Progressive Hookshot", "player": 2}, + "LH Lab Dive": {"item": "Rupees (50)", "player": 2}, + "LH Freestanding PoH": {"item": "Bombchus (10)", "player": 1}, + "LH Sun": {"item": "Recovery Heart", "player": 2}, + "GV Crate Freestanding PoH": {"item": "Deku Stick (1)", "player": 1}, + "GV Waterfall Freestanding PoH": {"item": "Recovery Heart", "player": 1}, + "GV Chest": {"item": "Bow", "player": 1}, + "GF Chest": {"item": "Progressive Wallet", "player": 1}, + "GF HBA 1000 Points": {"item": "Arrows (5)", "player": 2}, + "GF HBA 1500 Points": {"item": "Rupees (200)", "player": 1}, + "Wasteland Chest": {"item": "Progressive Strength Upgrade", "player": 2}, + "Colossus Great Fairy Reward": {"item": "Boomerang", "player": 1}, + "Colossus Freestanding PoH": {"item": "Progressive Wallet", "player": 1}, + "OGC Great Fairy Reward": {"item": "Piece of Heart", "player": 1}, + "Deku Tree Map Chest": {"item": "Recovery Heart", "player": 1}, + "Deku Tree Slingshot Room Side Chest": {"item": "Piece of Heart", "player": 2}, + "Deku Tree Slingshot Chest": {"item": "Deku Stick Capacity", "player": 2}, + "Deku Tree Compass Chest": {"item": "Bombchus (5)", "player": 1}, + "Deku Tree Compass Room Side Chest": {"item": "Hover Boots", "player": 1}, + "Deku Tree Basement Chest": {"item": "Rupees (5)", "player": 2}, + "Deku Tree Queen Gohma Heart": {"item": "Piece of Heart", "player": 2}, + "Dodongos Cavern Map Chest": {"item": "Bombchus (5)", "player": 2}, + "Dodongos Cavern Compass Chest": {"item": "Piece of Heart", "player": 1}, + "Dodongos Cavern Bomb Flower Platform Chest": {"item": "Bomb Bag", "player": 2}, + "Dodongos Cavern Bomb Bag Chest": {"item": "Kokiri Sword", "player": 2}, + "Dodongos Cavern End of Bridge Chest": {"item": "Progressive Hookshot", "player": 2}, + "Dodongos Cavern Boss Room Chest": {"item": "Recovery Heart", "player": 2}, + "Dodongos Cavern King Dodongo Heart": {"item": "Zora Tunic", "player": 2}, + "Jabu Jabus Belly Boomerang Chest": {"item": "Magic Meter", "player": 2}, + "Jabu Jabus Belly Map Chest": {"item": "Arrows (30)", "player": 1}, + "Jabu Jabus Belly Compass Chest": {"item": "Bombchus (10)", "player": 2}, + "Jabu Jabus Belly Barinade Heart": {"item": "Rupees (5)", "player": 2}, + "Bottom of the Well Front Left Fake Wall Chest": {"item": "Deku Seeds (30)", "player": 1}, + "Bottom of the Well Front Center Bombable Chest": {"item": "Rupees (50)", "player": 1}, + "Bottom of the Well Back Left Bombable Chest": {"item": "Small Key (Bottom of the Well)", "player": 1}, + "Bottom of the Well Underwater Left Chest": {"item": "Deku Seeds (30)", "player": 1}, + "Bottom of the Well Freestanding Key": {"item": "Rupees (20)", "player": 1}, + "Bottom of the Well Compass Chest": {"item": "Small Key (Bottom of the Well)", "player": 1}, + "Bottom of the Well Center Skulltula Chest": {"item": "Piece of Heart", "player": 1}, + "Bottom of the Well Right Bottom Fake Wall Chest": {"item": "Small Key (Bottom of the Well)", "player": 1}, + "Bottom of the Well Fire Keese Chest": {"item": "Rupees (20)", "player": 2}, + "Bottom of the Well Like Like Chest": {"item": "Piece of Heart", "player": 2}, + "Bottom of the Well Map Chest": {"item": "Rupees (5)", "player": 2}, + "Bottom of the Well Underwater Front Chest": {"item": "Rupees (20)", "player": 2}, + "Bottom of the Well Invisible Chest": {"item": "Piece of Heart", "player": 1}, + "Bottom of the Well Lens of Truth Chest": {"item": "Piece of Heart", "player": 1}, + "Forest Temple First Room Chest": {"item": "Rupees (5)", "player": 2}, + "Forest Temple First Stalfos Chest": {"item": "Bombchus (10)", "player": 1}, + "Forest Temple Raised Island Courtyard Chest": {"item": "Small Key (Forest Temple)", "player": 1}, + "Forest Temple Map Chest": {"item": "Small Key (Forest Temple)", "player": 1}, + "Forest Temple Well Chest": {"item": "Small Key (Forest Temple)", "player": 1}, + "Forest Temple Eye Switch Chest": {"item": "Boss Key (Forest Temple)", "player": 1}, + "Forest Temple Boss Key Chest": {"item": "Small Key (Forest Temple)", "player": 1}, + "Forest Temple Floormaster Chest": {"item": "Rupee (1)", "player": 2}, + "Forest Temple Red Poe Chest": {"item": "Small Key (Forest Temple)", "player": 1}, + "Forest Temple Bow Chest": {"item": "Rupees (5)", "player": 2}, + "Forest Temple Blue Poe Chest": {"item": "Arrows (30)", "player": 2}, + "Forest Temple Falling Ceiling Room Chest": {"item": "Rupees (20)", "player": 1}, + "Forest Temple Basement Chest": {"item": "Rupees (50)", "player": 1}, + "Forest Temple Phantom Ganon Heart": {"item": "Magic Meter", "player": 2}, + "Fire Temple Near Boss Chest": {"item": "Small Key (Fire Temple)", "player": 1}, + "Fire Temple Flare Dancer Chest": {"item": "Deku Nut Capacity", "player": 2}, + "Fire Temple Boss Key Chest": {"item": "Small Key (Fire Temple)", "player": 1}, + "Fire Temple Big Lava Room Lower Open Door Chest": {"item": "Magic Meter", "player": 1}, + "Fire Temple Big Lava Room Blocked Door Chest": {"item": "Small Key (Fire Temple)", "player": 1}, + "Fire Temple Boulder Maze Lower Chest": {"item": "Small Key (Fire Temple)", "player": 1}, + "Fire Temple Boulder Maze Side Room Chest": {"item": "Small Key (Fire Temple)", "player": 1}, + "Fire Temple Map Chest": {"item": "Small Key (Fire Temple)", "player": 1}, + "Fire Temple Boulder Maze Shortcut Chest": {"item": "Boss Key (Fire Temple)", "player": 1}, + "Fire Temple Boulder Maze Upper Chest": {"item": "Small Key (Fire Temple)", "player": 1}, + "Fire Temple Scarecrow Chest": {"item": "Piece of Heart", "player": 1}, + "Fire Temple Compass Chest": {"item": "Arrows (5)", "player": 1}, + "Fire Temple Megaton Hammer Chest": {"item": "Deku Stick (1)", "player": 1}, + "Fire Temple Highest Goron Chest": {"item": "Small Key (Fire Temple)", "player": 1}, + "Fire Temple Volvagia Heart": {"item": "Bombs (5)", "player": 2}, + "Water Temple Compass Chest": {"item": "Rupees (5)", "player": 1}, + "Water Temple Map Chest": {"item": "Boss Key (Water Temple)", "player": 1}, + "Water Temple Cracked Wall Chest": {"item": "Small Key (Water Temple)", "player": 1}, + "Water Temple Torches Chest": {"item": "Small Key (Water Temple)", "player": 1}, + "Water Temple Boss Key Chest": {"item": "Small Key (Water Temple)", "player": 1}, + "Water Temple Central Pillar Chest": {"item": "Piece of Heart", "player": 2}, + "Water Temple Central Bow Target Chest": {"item": "Small Key (Water Temple)", "player": 1}, + "Water Temple Longshot Chest": {"item": "Deku Nuts (5)", "player": 1}, + "Water Temple River Chest": {"item": "Piece of Heart", "player": 2}, + "Water Temple Dragon Chest": {"item": "Small Key (Water Temple)", "player": 1}, + "Water Temple Morpha Heart": {"item": "Small Key (Water Temple)", "player": 1}, + "Shadow Temple Map Chest": {"item": "Piece of Heart", "player": 1}, + "Shadow Temple Hover Boots Chest": {"item": "Small Key (Shadow Temple)", "player": 1}, + "Shadow Temple Compass Chest": {"item": "Arrows (10)", "player": 2}, + "Shadow Temple Early Silver Rupee Chest": {"item": "Deku Shield", "player": 2}, + "Shadow Temple Invisible Blades Visible Chest": {"item": "Small Key (Shadow Temple)", "player": 1}, + "Shadow Temple Invisible Blades Invisible Chest": {"item": "Deku Seeds (30)", "player": 1}, + "Shadow Temple Falling Spikes Lower Chest": {"item": "Piece of Heart", "player": 1}, + "Shadow Temple Falling Spikes Upper Chest": {"item": "Small Key (Shadow Temple)", "player": 1}, + "Shadow Temple Falling Spikes Switch Chest": {"item": "Piece of Heart", "player": 2}, + "Shadow Temple Invisible Spikes Chest": {"item": "Bombs (5)", "player": 2}, + "Shadow Temple Freestanding Key": {"item": "Bombs (20)", "player": 2}, + "Shadow Temple Wind Hint Chest": {"item": "Small Key (Shadow Temple)", "player": 1}, + "Shadow Temple After Wind Enemy Chest": {"item": "Recovery Heart", "player": 2}, + "Shadow Temple After Wind Hidden Chest": {"item": "Arrows (30)", "player": 1}, + "Shadow Temple Spike Walls Left Chest": {"item": "Boss Key (Shadow Temple)", "player": 1}, + "Shadow Temple Boss Key Chest": {"item": "Small Key (Shadow Temple)", "player": 1}, + "Shadow Temple Invisible Floormaster Chest": {"item": "Piece of Heart", "player": 1}, + "Shadow Temple Bongo Bongo Heart": {"item": "Rupees (200)", "player": 1}, + "Spirit Temple Child Bridge Chest": {"item": "Progressive Strength Upgrade", "player": 1}, + "Spirit Temple Child Early Torches Chest": {"item": "Deku Seeds (30)", "player": 2}, + "Spirit Temple Child Climb North Chest": {"item": "Piece of Heart", "player": 1}, + "Spirit Temple Child Climb East Chest": {"item": "Small Key (Spirit Temple)", "player": 1}, + "Spirit Temple Map Chest": {"item": "Small Key (Spirit Temple)", "player": 1}, + "Spirit Temple Sun Block Room Chest": {"item": "Progressive Scale", "player": 2}, + "Spirit Temple Silver Gauntlets Chest": {"item": "Piece of Heart", "player": 2}, + "Spirit Temple Compass Chest": {"item": "Recovery Heart", "player": 1}, + "Spirit Temple Early Adult Right Chest": {"item": "Small Key (Spirit Temple)", "player": 1}, + "Spirit Temple First Mirror Left Chest": {"item": "Piece of Heart", "player": 1}, + "Spirit Temple First Mirror Right Chest": {"item": "Small Key (Spirit Temple)", "player": 1}, + "Spirit Temple Statue Room Northeast Chest": {"item": "Boss Key (Spirit Temple)", "player": 1}, + "Spirit Temple Statue Room Hand Chest": {"item": "Stone of Agony", "player": 2}, + "Spirit Temple Near Four Armos Chest": {"item": "Piece of Heart", "player": 1}, + "Spirit Temple Hallway Right Invisible Chest": {"item": "Nayrus Love", "player": 1}, + "Spirit Temple Hallway Left Invisible Chest": {"item": "Small Key (Spirit Temple)", "player": 1}, + "Spirit Temple Mirror Shield Chest": {"item": "Piece of Heart", "player": 2}, + "Spirit Temple Boss Key Chest": {"item": "Deku Nut Capacity", "player": 2}, + "Spirit Temple Topmost Chest": {"item": "Piece of Heart", "player": 1}, + "Spirit Temple Twinrova Heart": {"item": "Heart Container", "player": 2}, + "Ice Cavern Map Chest": {"item": "Piece of Heart", "player": 1}, + "Ice Cavern Compass Chest": {"item": "Biggoron Sword", "player": 1}, + "Ice Cavern Freestanding PoH": {"item": "Bombs (20)", "player": 1}, + "Ice Cavern Iron Boots Chest": {"item": "Arrows (10)", "player": 2}, + "Gerudo Training Ground Lobby Left Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 1}, + "Gerudo Training Ground Lobby Right Chest": {"item": "Heart Container", "player": 1}, + "Gerudo Training Ground Stalfos Chest": {"item": "Bomb Bag", "player": 2}, + "Gerudo Training Ground Before Heavy Block Chest": {"item": "Hylian Shield", "player": 2}, + "Gerudo Training Ground Heavy Block First Chest": {"item": "Arrows (30)", "player": 1}, + "Gerudo Training Ground Heavy Block Second Chest": {"item": "Bombs (20)", "player": 1}, + "Gerudo Training Ground Heavy Block Third Chest": {"item": "Hylian Shield", "player": 2}, + "Gerudo Training Ground Heavy Block Fourth Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 1}, + "Gerudo Training Ground Eye Statue Chest": {"item": "Slingshot", "player": 1}, + "Gerudo Training Ground Near Scarecrow Chest": {"item": "Deku Nuts (5)", "player": 1}, + "Gerudo Training Ground Hammer Room Clear Chest": {"item": "Heart Container", "player": 1}, + "Gerudo Training Ground Hammer Room Switch Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 1}, + "Gerudo Training Ground Freestanding Key": {"item": "Small Key (Gerudo Training Ground)", "player": 1}, + "Gerudo Training Ground Maze Right Central Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 1}, + "Gerudo Training Ground Maze Right Side Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 1}, + "Gerudo Training Ground Underwater Silver Rupee Chest": {"item": "Piece of Heart", "player": 2}, + "Gerudo Training Ground Beamos Chest": {"item": "Bombchus (20)", "player": 2}, + "Gerudo Training Ground Hidden Ceiling Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 1}, + "Gerudo Training Ground Maze Path First Chest": {"item": "Bomb Bag", "player": 2}, + "Gerudo Training Ground Maze Path Second Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 1}, + "Gerudo Training Ground Maze Path Third Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 1}, + "Gerudo Training Ground Maze Path Final Chest": {"item": "Piece of Heart", "player": 2}, + "Ganons Castle Forest Trial Chest": {"item": "Progressive Strength Upgrade", "player": 2}, + "Ganons Castle Water Trial Left Chest": {"item": "Piece of Heart", "player": 1}, + "Ganons Castle Water Trial Right Chest": {"item": "Small Key (Ganons Castle)", "player": 1}, + "Ganons Castle Shadow Trial Front Chest": {"item": "Light Arrows", "player": 1}, + "Ganons Castle Shadow Trial Golden Gauntlets Chest": {"item": "Rupees (20)", "player": 1}, + "Ganons Castle Light Trial First Left Chest": {"item": "Kokiri Sword", "player": 1}, + "Ganons Castle Light Trial Second Left Chest": {"item": "Recovery Heart", "player": 1}, + "Ganons Castle Light Trial Third Left Chest": {"item": "Piece of Heart", "player": 1}, + "Ganons Castle Light Trial First Right Chest": {"item": "Arrows (10)", "player": 2}, + "Ganons Castle Light Trial Second Right Chest": {"item": "Arrows (30)", "player": 2}, + "Ganons Castle Light Trial Third Right Chest": {"item": "Deku Nuts (5)", "player": 1}, + "Ganons Castle Light Trial Invisible Enemies Chest": {"item": "Deku Stick (1)", "player": 2}, + "Ganons Castle Light Trial Lullaby Chest": {"item": "Dins Fire", "player": 2}, + "Ganons Castle Spirit Trial Crystal Switch Chest": {"item": "Bombchus (10)", "player": 1}, + "Ganons Castle Spirit Trial Invisible Chest": {"item": "Goron Tunic", "player": 1}, + "Ganons Tower Boss Key Chest": {"item": "Small Key (Ganons Castle)", "player": 1} + }, + "World 2": { + "Links Pocket": {"item": "Light Medallion", "player": 2}, + "Queen Gohma": {"item": "Water Medallion", "player": 2}, + "King Dodongo": {"item": "Zora Sapphire", "player": 2}, + "Barinade": {"item": "Fire Medallion", "player": 2}, + "Phantom Ganon": {"item": "Goron Ruby", "player": 2}, + "Volvagia": {"item": "Forest Medallion", "player": 2}, + "Morpha": {"item": "Kokiri Emerald", "player": 2}, + "Bongo Bongo": {"item": "Shadow Medallion", "player": 2}, + "Twinrova": {"item": "Spirit Medallion", "player": 2}, + "Song from Impa": {"item": "Serenade of Water", "player": 2}, + "Song from Malon": {"item": "Nocturne of Shadow", "player": 2}, + "Song from Saria": {"item": "Sarias Song", "player": 2}, + "Song from Royal Familys Tomb": {"item": "Requiem of Spirit", "player": 2}, + "Song from Ocarina of Time": {"item": "Song of Storms", "player": 2}, + "Song from Windmill": {"item": "Eponas Song", "player": 2}, + "Sheik in Forest": {"item": "Prelude of Light", "player": 2}, + "Sheik in Crater": {"item": "Minuet of Forest", "player": 2}, + "Sheik in Ice Cavern": {"item": "Bolero of Fire", "player": 2}, + "Sheik at Colossus": {"item": "Song of Time", "player": 2}, + "Sheik in Kakariko": {"item": "Suns Song", "player": 2}, + "Sheik at Temple": {"item": "Zeldas Lullaby", "player": 2}, + "KF Midos Top Left Chest": {"item": "Deku Seeds (30)", "player": 2}, + "KF Midos Top Right Chest": {"item": "Rupees (20)", "player": 1}, + "KF Midos Bottom Left Chest": {"item": "Rupees (200)", "player": 2}, + "KF Midos Bottom Right Chest": {"item": "Piece of Heart", "player": 1}, + "KF Kokiri Sword Chest": {"item": "Slingshot", "player": 2}, + "KF Storms Grotto Chest": {"item": "Recovery Heart", "player": 1}, + "LW Ocarina Memory Game": {"item": "Iron Boots", "player": 2}, + "LW Target in Woods": {"item": "Arrows (10)", "player": 1}, + "LW Near Shortcuts Grotto Chest": {"item": "Fire Arrows", "player": 1}, + "Deku Theater Skull Mask": {"item": "Deku Stick (1)", "player": 2}, + "Deku Theater Mask of Truth": {"item": "Arrows (5)", "player": 2}, + "LW Skull Kid": {"item": "Biggoron Sword", "player": 2}, + "LW Deku Scrub Near Bridge": {"item": "Heart Container", "player": 1, "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Ice Arrows", "player": 2, "price": 40}, + "SFM Wolfos Grotto Chest": {"item": "Bombs (5)", "player": 2}, + "HF Near Market Grotto Chest": {"item": "Bombchus (20)", "player": 1}, + "HF Tektite Grotto Freestanding PoH": {"item": "Deku Nut Capacity", "player": 1}, + "HF Open Grotto Chest": {"item": "Deku Stick Capacity", "player": 1}, + "HF Deku Scrub Grotto": {"item": "Bombs (5)", "player": 2, "price": 10}, + "Market Shooting Gallery Reward": {"item": "Lens of Truth", "player": 1}, + "Market Bombchu Bowling First Prize": {"item": "Rupees (5)", "player": 1}, + "Market Bombchu Bowling Second Prize": {"item": "Bombs (20)", "player": 2}, + "Market Lost Dog": {"item": "Piece of Heart", "player": 2}, + "Market Treasure Chest Game Reward": {"item": "Rupees (5)", "player": 2}, + "Market 10 Big Poes": {"item": "Piece of Heart", "player": 2}, + "ToT Light Arrows Cutscene": {"item": "Arrows (30)", "player": 1}, + "HC Great Fairy Reward": {"item": "Recovery Heart", "player": 2}, + "LLR Talons Chickens": {"item": "Rupees (5)", "player": 1}, + "LLR Freestanding PoH": {"item": "Iron Boots", "player": 1}, + "Kak Anju as Child": {"item": "Rupees (50)", "player": 1}, + "Kak Anju as Adult": {"item": "Bombs (10)", "player": 1}, + "Kak Impas House Freestanding PoH": {"item": "Arrows (10)", "player": 2}, + "Kak Windmill Freestanding PoH": {"item": "Bombs (5)", "player": 1}, + "Kak Man on Roof": {"item": "Arrows (10)", "player": 1}, + "Kak Open Grotto Chest": {"item": "Arrows (30)", "player": 2}, + "Kak Redead Grotto Chest": {"item": "Rupees (5)", "player": 1}, + "Kak Shooting Gallery Reward": {"item": "Rupees (5)", "player": 1}, + "Kak 10 Gold Skulltula Reward": {"item": "Deku Nuts (5)", "player": 2}, + "Kak 20 Gold Skulltula Reward": {"item": "Heart Container", "player": 1}, + "Kak 30 Gold Skulltula Reward": {"item": "Rupee (1)", "player": 1}, + "Kak 40 Gold Skulltula Reward": {"item": "Heart Container", "player": 2}, + "Kak 50 Gold Skulltula Reward": {"item": "Piece of Heart", "player": 1}, + "Graveyard Shield Grave Chest": {"item": "Slingshot", "player": 1}, + "Graveyard Heart Piece Grave Chest": {"item": "Arrows (30)", "player": 1}, + "Graveyard Royal Familys Tomb Chest": {"item": "Progressive Wallet", "player": 2}, + "Graveyard Freestanding PoH": {"item": "Piece of Heart", "player": 1}, + "Graveyard Dampe Gravedigging Tour": {"item": "Rupees (5)", "player": 1}, + "Graveyard Hookshot Chest": {"item": "Recovery Heart", "player": 2}, + "Graveyard Dampe Race Freestanding PoH": {"item": "Deku Stick (1)", "player": 2}, + "DMT Freestanding PoH": {"item": "Rupees (20)", "player": 1}, + "DMT Chest": {"item": "Piece of Heart", "player": 2}, + "DMT Storms Grotto Chest": {"item": "Bombs (10)", "player": 2}, + "DMT Great Fairy Reward": {"item": "Rupees (50)", "player": 2}, + "DMT Biggoron": {"item": "Bombchus (10)", "player": 2}, + "GC Darunias Joy": {"item": "Arrows (10)", "player": 2}, + "GC Pot Freestanding PoH": {"item": "Rupees (5)", "player": 2}, + "GC Rolling Goron as Child": {"item": "Deku Shield", "player": 1}, + "GC Rolling Goron as Adult": {"item": "Piece of Heart", "player": 1}, + "GC Maze Left Chest": {"item": "Rupees (5)", "player": 2}, + "GC Maze Right Chest": {"item": "Recovery Heart", "player": 1}, + "GC Maze Center Chest": {"item": "Piece of Heart", "player": 2}, + "DMC Volcano Freestanding PoH": {"item": "Rupees (5)", "player": 2}, + "DMC Wall Freestanding PoH": {"item": "Rupees (20)", "player": 2}, + "DMC Upper Grotto Chest": {"item": "Fire Arrows", "player": 2}, + "DMC Great Fairy Reward": {"item": "Arrows (5)", "player": 1}, + "ZR Open Grotto Chest": {"item": "Piece of Heart", "player": 1}, + "ZR Frogs in the Rain": {"item": "Rupees (5)", "player": 1}, + "ZR Frogs Ocarina Game": {"item": "Arrows (30)", "player": 2}, + "ZR Near Open Grotto Freestanding PoH": {"item": "Piece of Heart", "player": 2}, + "ZR Near Domain Freestanding PoH": {"item": "Bombchus (10)", "player": 2}, + "ZD Diving Minigame": {"item": "Mirror Shield", "player": 2}, + "ZD Chest": {"item": "Deku Shield", "player": 1}, + "ZD King Zora Thawed": {"item": "Heart Container", "player": 1}, + "ZF Great Fairy Reward": {"item": "Arrows (5)", "player": 1}, + "ZF Iceberg Freestanding PoH": {"item": "Deku Seeds (30)", "player": 1}, + "ZF Bottom Freestanding PoH": {"item": "Deku Seeds (30)", "player": 2}, + "LH Underwater Item": {"item": "Piece of Heart", "player": 1}, + "LH Child Fishing": {"item": "Rupees (50)", "player": 2}, + "LH Lab Dive": {"item": "Arrows (10)", "player": 2}, + "LH Freestanding PoH": {"item": "Piece of Heart", "player": 2}, + "LH Sun": {"item": "Rupees (5)", "player": 1}, + "GV Crate Freestanding PoH": {"item": "Rupees (5)", "player": 2}, + "GV Waterfall Freestanding PoH": {"item": "Deku Shield", "player": 1}, + "GV Chest": {"item": "Rupees (50)", "player": 1}, + "GF Chest": {"item": "Rupees (20)", "player": 1}, + "GF HBA 1000 Points": {"item": "Deku Nuts (10)", "player": 2}, + "GF HBA 1500 Points": {"item": "Dins Fire", "player": 1}, + "Wasteland Chest": {"item": "Progressive Hookshot", "player": 1}, + "Colossus Great Fairy Reward": {"item": "Rupees (50)", "player": 2}, + "Colossus Freestanding PoH": {"item": "Rupees (20)", "player": 1}, + "OGC Great Fairy Reward": {"item": "Heart Container", "player": 1}, + "Deku Tree Map Chest": {"item": "Deku Nut Capacity", "player": 1}, + "Deku Tree Slingshot Room Side Chest": {"item": "Rupees (5)", "player": 1}, + "Deku Tree Slingshot Chest": {"item": "Bow", "player": 2}, + "Deku Tree Compass Chest": {"item": "Recovery Heart", "player": 1}, + "Deku Tree Compass Room Side Chest": {"item": "Rupees (5)", "player": 1}, + "Deku Tree Basement Chest": {"item": "Heart Container", "player": 2}, + "Deku Tree Queen Gohma Heart": {"item": "Rupees (5)", "player": 1}, + "Dodongos Cavern Map Chest": {"item": "Arrows (10)", "player": 1}, + "Dodongos Cavern Compass Chest": {"item": "Deku Nuts (5)", "player": 2}, + "Dodongos Cavern Bomb Flower Platform Chest": {"item": "Rutos Letter", "player": 2}, + "Dodongos Cavern Bomb Bag Chest": {"item": "Deku Seeds (30)", "player": 2}, + "Dodongos Cavern End of Bridge Chest": {"item": "Rupees (5)", "player": 1}, + "Dodongos Cavern Boss Room Chest": {"item": "Rupees (5)", "player": 2}, + "Dodongos Cavern King Dodongo Heart": {"item": "Rupees (5)", "player": 1}, + "Jabu Jabus Belly Boomerang Chest": {"item": "Arrows (10)", "player": 1}, + "Jabu Jabus Belly Map Chest": {"item": "Piece of Heart", "player": 1}, + "Jabu Jabus Belly Compass Chest": {"item": "Piece of Heart", "player": 2}, + "Jabu Jabus Belly Barinade Heart": {"item": "Piece of Heart", "player": 2}, + "Bottom of the Well Front Left Fake Wall Chest": {"item": "Heart Container", "player": 2}, + "Bottom of the Well Front Center Bombable Chest": {"item": "Deku Stick Capacity", "player": 1}, + "Bottom of the Well Back Left Bombable Chest": {"item": "Small Key (Bottom of the Well)", "player": 2}, + "Bottom of the Well Underwater Left Chest": {"item": "Piece of Heart", "player": 2}, + "Bottom of the Well Freestanding Key": {"item": "Light Arrows", "player": 2}, + "Bottom of the Well Compass Chest": {"item": "Piece of Heart", "player": 1}, + "Bottom of the Well Center Skulltula Chest": {"item": "Small Key (Bottom of the Well)", "player": 2}, + "Bottom of the Well Right Bottom Fake Wall Chest": {"item": "Recovery Heart", "player": 2}, + "Bottom of the Well Fire Keese Chest": {"item": "Rupees (200)", "player": 1}, + "Bottom of the Well Map Chest": {"item": "Small Key (Bottom of the Well)", "player": 2}, + "Bottom of the Well Underwater Front Chest": {"item": "Deku Stick (1)", "player": 2}, + "Bottom of the Well Invisible Chest": {"item": "Piece of Heart", "player": 2}, + "Bottom of the Well Lens of Truth Chest": {"item": "Bomb Bag", "player": 1}, + "Forest Temple First Room Chest": {"item": "Small Key (Forest Temple)", "player": 2}, + "Forest Temple First Stalfos Chest": {"item": "Rupees (200)", "player": 1}, + "Forest Temple Raised Island Courtyard Chest": {"item": "Small Key (Forest Temple)", "player": 2}, + "Forest Temple Map Chest": {"item": "Small Key (Forest Temple)", "player": 2}, + "Forest Temple Well Chest": {"item": "Rupees (20)", "player": 2}, + "Forest Temple Eye Switch Chest": {"item": "Piece of Heart", "player": 2}, + "Forest Temple Boss Key Chest": {"item": "Rupees (5)", "player": 2}, + "Forest Temple Floormaster Chest": {"item": "Small Key (Forest Temple)", "player": 2}, + "Forest Temple Red Poe Chest": {"item": "Bow", "player": 2}, + "Forest Temple Bow Chest": {"item": "Small Key (Forest Temple)", "player": 2}, + "Forest Temple Blue Poe Chest": {"item": "Bow", "player": 2}, + "Forest Temple Falling Ceiling Room Chest": {"item": "Boss Key (Forest Temple)", "player": 2}, + "Forest Temple Basement Chest": {"item": "Rupees (5)", "player": 2}, + "Forest Temple Phantom Ganon Heart": {"item": "Piece of Heart", "player": 2}, + "Fire Temple Near Boss Chest": {"item": "Boss Key (Fire Temple)", "player": 2}, + "Fire Temple Flare Dancer Chest": {"item": "Small Key (Fire Temple)", "player": 2}, + "Fire Temple Boss Key Chest": {"item": "Arrows (5)", "player": 2}, + "Fire Temple Big Lava Room Lower Open Door Chest": {"item": "Progressive Strength Upgrade", "player": 1}, + "Fire Temple Big Lava Room Blocked Door Chest": {"item": "Small Key (Fire Temple)", "player": 2}, + "Fire Temple Boulder Maze Lower Chest": {"item": "Piece of Heart", "player": 2}, + "Fire Temple Boulder Maze Side Room Chest": {"item": "Small Key (Fire Temple)", "player": 2}, + "Fire Temple Map Chest": {"item": "Small Key (Fire Temple)", "player": 2}, + "Fire Temple Boulder Maze Shortcut Chest": {"item": "Lens of Truth", "player": 2}, + "Fire Temple Boulder Maze Upper Chest": {"item": "Small Key (Fire Temple)", "player": 2}, + "Fire Temple Scarecrow Chest": {"item": "Piece of Heart", "player": 1}, + "Fire Temple Compass Chest": {"item": "Piece of Heart", "player": 2}, + "Fire Temple Megaton Hammer Chest": {"item": "Small Key (Fire Temple)", "player": 2}, + "Fire Temple Highest Goron Chest": {"item": "Small Key (Fire Temple)", "player": 2}, + "Fire Temple Volvagia Heart": {"item": "Small Key (Fire Temple)", "player": 2}, + "Water Temple Compass Chest": {"item": "Small Key (Water Temple)", "player": 2}, + "Water Temple Map Chest": {"item": "Small Key (Water Temple)", "player": 2}, + "Water Temple Cracked Wall Chest": {"item": "Boss Key (Water Temple)", "player": 2}, + "Water Temple Torches Chest": {"item": "Small Key (Water Temple)", "player": 2}, + "Water Temple Boss Key Chest": {"item": "Small Key (Water Temple)", "player": 2}, + "Water Temple Central Pillar Chest": {"item": "Piece of Heart", "player": 1}, + "Water Temple Central Bow Target Chest": {"item": "Small Key (Water Temple)", "player": 2}, + "Water Temple Longshot Chest": {"item": "Arrows (5)", "player": 1}, + "Water Temple Dragon Chest": {"item": "Small Key (Water Temple)", "player": 2}, + "Water Temple Morpha Heart": {"item": "Bombs (10)", "player": 1}, + "Shadow Temple Map Chest": {"item": "Small Key (Shadow Temple)", "player": 2}, + "Shadow Temple Hover Boots Chest": {"item": "Arrows (10)", "player": 1}, + "Shadow Temple Compass Chest": {"item": "Small Key (Shadow Temple)", "player": 2}, + "Shadow Temple Early Silver Rupee Chest": {"item": "Arrows (10)", "player": 2}, + "Shadow Temple Invisible Blades Visible Chest": {"item": "Boomerang", "player": 2}, + "Shadow Temple Invisible Blades Invisible Chest": {"item": "Rupees (5)", "player": 2}, + "Shadow Temple Falling Spikes Lower Chest": {"item": "Piece of Heart", "player": 1}, + "Shadow Temple Falling Spikes Upper Chest": {"item": "Heart Container", "player": 1}, + "Shadow Temple Falling Spikes Switch Chest": {"item": "Recovery Heart", "player": 1}, + "Shadow Temple Invisible Spikes Chest": {"item": "Small Key (Shadow Temple)", "player": 2}, + "Shadow Temple Freestanding Key": {"item": "Small Key (Shadow Temple)", "player": 2}, + "Shadow Temple Wind Hint Chest": {"item": "Small Key (Shadow Temple)", "player": 2}, + "Shadow Temple After Wind Enemy Chest": {"item": "Megaton Hammer", "player": 1}, + "Shadow Temple After Wind Hidden Chest": {"item": "Rupees (50)", "player": 2}, + "Shadow Temple Spike Walls Left Chest": {"item": "Boss Key (Shadow Temple)", "player": 2}, + "Shadow Temple Boss Key Chest": {"item": "Recovery Heart", "player": 2}, + "Shadow Temple Invisible Floormaster Chest": {"item": "Heart Container", "player": 2}, + "Shadow Temple Bongo Bongo Heart": {"item": "Rupees (200)", "player": 2}, + "Spirit Temple Child Bridge Chest": {"item": "Small Key (Spirit Temple)", "player": 2}, + "Spirit Temple Child Early Torches Chest": {"item": "Arrows (5)", "player": 2}, + "Spirit Temple Child Climb North Chest": {"item": "Small Key (Spirit Temple)", "player": 2}, + "Spirit Temple Child Climb East Chest": {"item": "Piece of Heart", "player": 2}, + "Spirit Temple Map Chest": {"item": "Small Key (Spirit Temple)", "player": 2}, + "Spirit Temple Sun Block Room Chest": {"item": "Rupees (200)", "player": 1}, + "Spirit Temple Silver Gauntlets Chest": {"item": "Boss Key (Spirit Temple)", "player": 2}, + "Spirit Temple Compass Chest": {"item": "Deku Stick (1)", "player": 2}, + "Spirit Temple Early Adult Right Chest": {"item": "Piece of Heart", "player": 2}, + "Spirit Temple First Mirror Left Chest": {"item": "Bombs (10)", "player": 2}, + "Spirit Temple First Mirror Right Chest": {"item": "Small Key (Spirit Temple)", "player": 2}, + "Spirit Temple Statue Room Hand Chest": {"item": "Bomb Bag", "player": 1}, + "Spirit Temple Near Four Armos Chest": {"item": "Rupees (5)", "player": 2}, + "Spirit Temple Hallway Right Invisible Chest": {"item": "Piece of Heart (Treasure Chest Game)", "player": 1}, + "Spirit Temple Hallway Left Invisible Chest": {"item": "Small Key (Spirit Temple)", "player": 2}, + "Spirit Temple Mirror Shield Chest": {"item": "Rupees (50)", "player": 1}, + "Spirit Temple Boss Key Chest": {"item": "Rupees (20)", "player": 1}, + "Spirit Temple Topmost Chest": {"item": "Deku Stick (1)", "player": 2}, + "Spirit Temple Twinrova Heart": {"item": "Zora Tunic", "player": 1}, + "Ice Cavern Map Chest": {"item": "Heart Container", "player": 2}, + "Ice Cavern Compass Chest": {"item": "Progressive Wallet", "player": 2}, + "Ice Cavern Freestanding PoH": {"item": "Recovery Heart", "player": 2}, + "Ice Cavern Iron Boots Chest": {"item": "Piece of Heart (Treasure Chest Game)", "player": 2}, + "Gerudo Training Ground Lobby Left Chest": {"item": "Rupees (50)", "player": 1}, + "Gerudo Training Ground Lobby Right Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 2}, + "Gerudo Training Ground Stalfos Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 2}, + "Gerudo Training Ground Before Heavy Block Chest": {"item": "Mirror Shield", "player": 1}, + "Gerudo Training Ground Heavy Block First Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 2}, + "Gerudo Training Ground Heavy Block Second Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 2}, + "Gerudo Training Ground Heavy Block Third Chest": {"item": "Recovery Heart", "player": 2}, + "Gerudo Training Ground Heavy Block Fourth Chest": {"item": "Double Defense", "player": 1}, + "Gerudo Training Ground Eye Statue Chest": {"item": "Progressive Hookshot", "player": 1}, + "Gerudo Training Ground Near Scarecrow Chest": {"item": "Piece of Heart", "player": 2}, + "Gerudo Training Ground Hammer Room Clear Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 2}, + "Gerudo Training Ground Hammer Room Switch Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 2}, + "Gerudo Training Ground Freestanding Key": {"item": "Rupees (200)", "player": 1}, + "Gerudo Training Ground Maze Right Central Chest": {"item": "Rupees (50)", "player": 2}, + "Gerudo Training Ground Maze Right Side Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 2}, + "Gerudo Training Ground Underwater Silver Rupee Chest": {"item": "Deku Shield", "player": 2}, + "Gerudo Training Ground Beamos Chest": {"item": "Piece of Heart", "player": 2}, + "Gerudo Training Ground Hidden Ceiling Chest": {"item": "Heart Container", "player": 1}, + "Gerudo Training Ground Maze Path First Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 2}, + "Gerudo Training Ground Maze Path Second Chest": {"item": "Bombs (10)", "player": 1}, + "Gerudo Training Ground Maze Path Third Chest": {"item": "Small Key (Gerudo Training Ground)", "player": 2}, + "Gerudo Training Ground Maze Path Final Chest": {"item": "Arrows (5)", "player": 1}, + "Ganons Castle Forest Trial Chest": {"item": "Rupees (200)", "player": 2}, + "Ganons Castle Water Trial Left Chest": {"item": "Progressive Scale", "player": 1}, + "Ganons Castle Water Trial Right Chest": {"item": "Rupees (5)", "player": 2}, + "Ganons Castle Shadow Trial Front Chest": {"item": "Progressive Scale", "player": 2}, + "Ganons Castle Shadow Trial Golden Gauntlets Chest": {"item": "Piece of Heart", "player": 1}, + "Ganons Castle Light Trial First Left Chest": {"item": "Recovery Heart", "player": 2}, + "Ganons Castle Light Trial Second Left Chest": {"item": "Small Key (Ganons Castle)", "player": 2}, + "Ganons Castle Light Trial Third Left Chest": {"item": "Rupees (50)", "player": 2}, + "Ganons Castle Light Trial First Right Chest": {"item": "Magic Meter", "player": 1}, + "Ganons Castle Light Trial Second Right Chest": {"item": "Rupees (200)", "player": 2}, + "Ganons Castle Light Trial Third Right Chest": {"item": "Arrows (10)", "player": 1}, + "Ganons Castle Light Trial Invisible Enemies Chest": {"item": "Rutos Letter", "player": 1}, + "Ganons Castle Light Trial Lullaby Chest": {"item": "Piece of Heart", "player": 1}, + "Ganons Castle Spirit Trial Crystal Switch Chest": {"item": "Piece of Heart", "player": 1}, + "Ganons Castle Spirit Trial Invisible Chest": {"item": "Bomb Bag", "player": 1}, + "Ganons Tower Boss Key Chest": {"item": "Small Key (Ganons Castle)", "player": 2} + } + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-priority-bridge.json b/tests/plando/plando-goals-priority-bridge.json new file mode 100644 index 000000000..b5154fbf7 --- /dev/null +++ b/tests/plando/plando-goals-priority-bridge.json @@ -0,0 +1,528 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "medallions", + "bridge_medallions": 2, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 0, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "medallions", + "ganon_bosskey_medallions": 6, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "child" + }, + "randomized_settings": { + "starting_age": "child" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "inactive", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": {"region": "Death Mountain", "from": "Kak Behind Gate"}, + "Child Spawn -> KF Links House": {"region": "Zora River", "from": "Lost Woods"} + }, + "locations": { + "Links Pocket": "Water Medallion", + "Queen Gohma": "Shadow Medallion", + "King Dodongo": "Fire Medallion", + "Barinade": "Zora Sapphire", + "Phantom Ganon": "Spirit Medallion", + "Volvagia": "Forest Medallion", + "Morpha": "Goron Ruby", + "Bongo Bongo": "Light Medallion", + "Twinrova": "Kokiri Emerald", + "Song from Impa": "Zeldas Lullaby", + "Song from Malon": "Serenade of Water", + "Song from Saria": "Requiem of Spirit", + "Song from Royal Familys Tomb": "Suns Song", + "Song from Ocarina of Time": "Bolero of Fire", + "Song from Windmill": "Prelude of Light", + "Sheik in Forest": "Minuet of Forest", + "Sheik in Crater": "Song of Storms", + "Sheik in Ice Cavern": "Song of Time", + "Sheik at Colossus": "Eponas Song", + "Sheik in Kakariko": "Nocturne of Shadow", + "Sheik at Temple": "Sarias Song", + "KF Midos Top Left Chest": "Rupees (5)", + "KF Midos Top Right Chest": "Heart Container", + "KF Midos Bottom Left Chest": "Heart Container", + "KF Midos Bottom Right Chest": "Recovery Heart", + "KF Kokiri Sword Chest": "Recovery Heart", + "KF Storms Grotto Chest": "Arrows (30)", + "LW Ocarina Memory Game": "Rupees (50)", + "LW Target in Woods": "Deku Stick Capacity", + "LW Near Shortcuts Grotto Chest": "Arrows (5)", + "Deku Theater Skull Mask": "Bombs (10)", + "Deku Theater Mask of Truth": "Rupees (5)", + "LW Skull Kid": "Bombs (20)", + "LW Deku Scrub Near Bridge": {"item": "Recovery Heart", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Piece of Heart", "price": 40}, + "SFM Wolfos Grotto Chest": "Piece of Heart", + "HF Near Market Grotto Chest": "Rupees (50)", + "HF Tektite Grotto Freestanding PoH": "Bombchus (20)", + "HF Southeast Grotto Chest": "Magic Meter", + "HF Open Grotto Chest": "Rupees (200)", + "HF Deku Scrub Grotto": {"item": "Recovery Heart", "price": 10}, + "Market Shooting Gallery Reward": "Heart Container", + "Market Bombchu Bowling First Prize": "Bomb Bag", + "Market Bombchu Bowling Second Prize": "Deku Nuts (5)", + "Market Lost Dog": "Bombs (5)", + "Market Treasure Chest Game Reward": "Rupees (20)", + "Market 10 Big Poes": "Rupees (5)", + "ToT Light Arrows Cutscene": "Rupees (5)", + "HC Great Fairy Reward": "Rupees (5)", + "LLR Talons Chickens": "Lens of Truth", + "LLR Freestanding PoH": "Recovery Heart", + "Kak Anju as Child": "Rupees (5)", + "Kak Anju as Adult": "Rupees (200)", + "Kak Impas House Freestanding PoH": "Progressive Strength Upgrade", + "Kak Windmill Freestanding PoH": "Rupees (20)", + "Kak Man on Roof": "Bottle with Blue Potion", + "Kak Open Grotto Chest": "Rupees (20)", + "Kak Redead Grotto Chest": "Rupees (5)", + "Kak Shooting Gallery Reward": "Piece of Heart", + "Kak 10 Gold Skulltula Reward": "Deku Stick (1)", + "Kak 20 Gold Skulltula Reward": "Bombchus (5)", + "Kak 30 Gold Skulltula Reward": "Rupees (50)", + "Kak 40 Gold Skulltula Reward": "Nayrus Love", + "Kak 50 Gold Skulltula Reward": "Zora Tunic", + "Graveyard Shield Grave Chest": "Rupees (200)", + "Graveyard Heart Piece Grave Chest": "Hylian Shield", + "Graveyard Royal Familys Tomb Chest": "Deku Nuts (5)", + "Graveyard Freestanding PoH": "Eyeball Frog", + "Graveyard Dampe Gravedigging Tour": "Recovery Heart", + "Graveyard Hookshot Chest": "Dins Fire", + "Graveyard Dampe Race Freestanding PoH": "Piece of Heart", + "DMT Freestanding PoH": "Rupees (5)", + "DMT Chest": "Hover Boots", + "DMT Storms Grotto Chest": "Rutos Letter", + "DMT Great Fairy Reward": "Deku Nuts (5)", + "DMT Biggoron": "Piece of Heart", + "GC Darunias Joy": "Rupees (50)", + "GC Pot Freestanding PoH": "Progressive Hookshot", + "GC Rolling Goron as Child": "Rupees (5)", + "GC Rolling Goron as Adult": "Boomerang", + "GC Maze Left Chest": "Piece of Heart", + "GC Maze Right Chest": "Heart Container", + "GC Maze Center Chest": "Rupees (20)", + "DMC Volcano Freestanding PoH": "Progressive Strength Upgrade", + "DMC Wall Freestanding PoH": "Deku Nuts (10)", + "DMC Upper Grotto Chest": "Bombs (10)", + "DMC Great Fairy Reward": "Arrows (30)", + "ZR Open Grotto Chest": "Piece of Heart", + "ZR Frogs in the Rain": "Piece of Heart", + "ZR Frogs Ocarina Game": "Arrows (10)", + "ZR Near Open Grotto Freestanding PoH": "Piece of Heart", + "ZR Near Domain Freestanding PoH": "Deku Seeds (30)", + "ZD Diving Minigame": "Arrows (10)", + "ZD Chest": "Kokiri Sword", + "ZD King Zora Thawed": "Deku Shield", + "ZF Great Fairy Reward": "Arrows (5)", + "ZF Iceberg Freestanding PoH": "Bow", + "ZF Bottom Freestanding PoH": "Bombs (5)", + "LH Underwater Item": "Rupees (20)", + "LH Child Fishing": "Ice Arrows", + "LH Adult Fishing": "Arrows (10)", + "LH Lab Dive": "Piece of Heart", + "LH Freestanding PoH": "Arrows (5)", + "LH Sun": "Recovery Heart", + "GV Crate Freestanding PoH": "Arrows (30)", + "GV Waterfall Freestanding PoH": "Recovery Heart", + "GV Chest": "Piece of Heart", + "GF Chest": "Piece of Heart", + "GF HBA 1000 Points": "Bombs (20)", + "GF HBA 1500 Points": "Slingshot", + "Wasteland Chest": "Deku Nut Capacity", + "Colossus Great Fairy Reward": "Rupees (5)", + "Colossus Freestanding PoH": "Deku Stick (1)", + "OGC Great Fairy Reward": "Recovery Heart", + "Deku Tree Map Chest": "Piece of Heart (Treasure Chest Game)", + "Deku Tree Slingshot Room Side Chest": "Bottle with Poe", + "Deku Tree Slingshot Chest": "Slingshot", + "Deku Tree Compass Chest": "Deku Stick Capacity", + "Deku Tree Compass Room Side Chest": "Recovery Heart", + "Deku Tree Basement Chest": "Deku Nuts (5)", + "Deku Tree Queen Gohma Heart": "Piece of Heart", + "Dodongos Cavern Map Chest": "Piece of Heart", + "Dodongos Cavern Compass Chest": "Megaton Hammer", + "Dodongos Cavern Bomb Flower Platform Chest": "Piece of Heart", + "Dodongos Cavern Bomb Bag Chest": "Rupee (1)", + "Dodongos Cavern End of Bridge Chest": "Progressive Scale", + "Dodongos Cavern Boss Room Chest": "Mirror Shield", + "Dodongos Cavern King Dodongo Heart": "Piece of Heart", + "Jabu Jabus Belly Boomerang Chest": "Arrows (30)", + "Jabu Jabus Belly Map Chest": "Rupees (50)", + "Jabu Jabus Belly Compass Chest": "Stone of Agony", + "Jabu Jabus Belly Barinade Heart": "Piece of Heart", + "Bottom of the Well Front Left Fake Wall Chest": "Piece of Heart", + "Bottom of the Well Front Center Bombable Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Back Left Bombable Chest": "Deku Seeds (30)", + "Bottom of the Well Underwater Left Chest": "Rupees (20)", + "Bottom of the Well Freestanding Key": "Progressive Wallet", + "Bottom of the Well Compass Chest": "Progressive Strength Upgrade", + "Bottom of the Well Center Skulltula Chest": "Arrows (10)", + "Bottom of the Well Right Bottom Fake Wall Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Fire Keese Chest": "Rupees (5)", + "Bottom of the Well Like Like Chest": "Rupees (20)", + "Bottom of the Well Map Chest": "Bombs (5)", + "Bottom of the Well Underwater Front Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Invisible Chest": "Rupees (5)", + "Bottom of the Well Lens of Truth Chest": "Progressive Wallet", + "Forest Temple First Room Chest": "Boss Key (Forest Temple)", + "Forest Temple First Stalfos Chest": "Small Key (Forest Temple)", + "Forest Temple Raised Island Courtyard Chest": "Bombs (5)", + "Forest Temple Map Chest": "Rupees (200)", + "Forest Temple Well Chest": "Small Key (Forest Temple)", + "Forest Temple Eye Switch Chest": "Slingshot", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Small Key (Forest Temple)", + "Forest Temple Red Poe Chest": "Deku Shield", + "Forest Temple Bow Chest": "Arrows (10)", + "Forest Temple Blue Poe Chest": "Small Key (Forest Temple)", + "Forest Temple Falling Ceiling Room Chest": "Piece of Heart", + "Forest Temple Basement Chest": "Heart Container", + "Forest Temple Phantom Ganon Heart": "Farores Wind", + "Fire Temple Near Boss Chest": "Small Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Hylian Shield", + "Fire Temple Boss Key Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Iron Boots", + "Fire Temple Boulder Maze Lower Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Side Room Chest": "Small Key (Fire Temple)", + "Fire Temple Map Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Shortcut Chest": "Arrows (5)", + "Fire Temple Boulder Maze Upper Chest": "Piece of Heart", + "Fire Temple Scarecrow Chest": "Small Key (Fire Temple)", + "Fire Temple Compass Chest": "Rupees (5)", + "Fire Temple Megaton Hammer Chest": "Boss Key (Fire Temple)", + "Fire Temple Highest Goron Chest": "Small Key (Fire Temple)", + "Fire Temple Volvagia Heart": "Arrows (30)", + "Water Temple Compass Chest": "Goron Tunic", + "Water Temple Map Chest": "Small Key (Water Temple)", + "Water Temple Cracked Wall Chest": "Rupees (200)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Small Key (Water Temple)", + "Water Temple Central Pillar Chest": "Boss Key (Water Temple)", + "Water Temple Central Bow Target Chest": "Small Key (Water Temple)", + "Water Temple Longshot Chest": "Arrows (5)", + "Water Temple River Chest": "Heart Container", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Small Key (Water Temple)", + "Shadow Temple Map Chest": "Bombs (10)", + "Shadow Temple Hover Boots Chest": "Deku Nut Capacity", + "Shadow Temple Compass Chest": "Arrows (10)", + "Shadow Temple Early Silver Rupee Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Blades Visible Chest": "Heart Container", + "Shadow Temple Invisible Blades Invisible Chest": "Rupees (5)", + "Shadow Temple Falling Spikes Lower Chest": "Deku Shield", + "Shadow Temple Falling Spikes Upper Chest": "Small Key (Shadow Temple)", + "Shadow Temple Falling Spikes Switch Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Spikes Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Freestanding Key": "Rupees (20)", + "Shadow Temple Wind Hint Chest": "Small Key (Shadow Temple)", + "Shadow Temple After Wind Enemy Chest": "Piece of Heart", + "Shadow Temple After Wind Hidden Chest": "Arrows (30)", + "Shadow Temple Spike Walls Left Chest": "Small Key (Shadow Temple)", + "Shadow Temple Boss Key Chest": "Deku Seeds (30)", + "Shadow Temple Invisible Floormaster Chest": "Piece of Heart", + "Shadow Temple Bongo Bongo Heart": "Bombchus (10)", + "Spirit Temple Child Bridge Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Early Torches Chest": "Piece of Heart", + "Spirit Temple Child Climb North Chest": "Progressive Hookshot", + "Spirit Temple Child Climb East Chest": "Piece of Heart", + "Spirit Temple Map Chest": "Rupees (5)", + "Spirit Temple Sun Block Room Chest": "Small Key (Spirit Temple)", + "Spirit Temple Silver Gauntlets Chest": "Small Key (Spirit Temple)", + "Spirit Temple Compass Chest": "Small Key (Spirit Temple)", + "Spirit Temple Early Adult Right Chest": "Bow", + "Spirit Temple First Mirror Left Chest": "Bombchus (10)", + "Spirit Temple First Mirror Right Chest": "Light Arrows", + "Spirit Temple Statue Room Northeast Chest": "Bow", + "Spirit Temple Statue Room Hand Chest": "Recovery Heart", + "Spirit Temple Near Four Armos Chest": "Bombchus (10)", + "Spirit Temple Hallway Right Invisible Chest": "Small Key (Spirit Temple)", + "Spirit Temple Hallway Left Invisible Chest": "Piece of Heart", + "Spirit Temple Mirror Shield Chest": "Piece of Heart", + "Spirit Temple Boss Key Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Topmost Chest": "Deku Seeds (30)", + "Spirit Temple Twinrova Heart": "Bombs (5)", + "Ice Cavern Map Chest": "Piece of Heart", + "Ice Cavern Compass Chest": "Deku Nuts (5)", + "Ice Cavern Freestanding PoH": "Double Defense", + "Ice Cavern Iron Boots Chest": "Bomb Bag", + "Gerudo Training Ground Lobby Left Chest": "Bottle with Fish", + "Gerudo Training Ground Lobby Right Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Stalfos Chest": "Bomb Bag", + "Gerudo Training Ground Before Heavy Block Chest": "Fire Arrows", + "Gerudo Training Ground Heavy Block First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Second Chest": "Rupees (5)", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Piece of Heart", + "Gerudo Training Ground Eye Statue Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Near Scarecrow Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hammer Room Clear Chest": "Rupees (5)", + "Gerudo Training Ground Hammer Room Switch Chest": "Piece of Heart", + "Gerudo Training Ground Freestanding Key": "Deku Shield", + "Gerudo Training Ground Maze Right Central Chest": "Piece of Heart", + "Gerudo Training Ground Maze Right Side Chest": "Biggoron Sword", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Bombs (5)", + "Gerudo Training Ground Beamos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hidden Ceiling Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path First Chest": "Rupees (50)", + "Gerudo Training Ground Maze Path Second Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Final Chest": "Piece of Heart", + "Ganons Castle Forest Trial Chest": "Arrows (10)", + "Ganons Castle Water Trial Left Chest": "Rupees (5)", + "Ganons Castle Water Trial Right Chest": "Small Key (Ganons Castle)", + "Ganons Castle Shadow Trial Front Chest": "Piece of Heart", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Magic Meter", + "Ganons Castle Light Trial First Left Chest": "Deku Nuts (5)", + "Ganons Castle Light Trial Second Left Chest": "Rupees (50)", + "Ganons Castle Light Trial Third Left Chest": "Heart Container", + "Ganons Castle Light Trial First Right Chest": "Piece of Heart", + "Ganons Castle Light Trial Second Right Chest": "Piece of Heart", + "Ganons Castle Light Trial Third Right Chest": "Rupees (200)", + "Ganons Castle Light Trial Invisible Enemies Chest": "Piece of Heart", + "Ganons Castle Light Trial Lullaby Chest": "Rupees (5)", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Small Key (Ganons Castle)", + "Ganons Castle Spirit Trial Invisible Chest": "Rupees (5)", + "Ganons Tower Boss Key Chest": "Progressive Scale" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-priority-custom.json b/tests/plando/plando-goals-priority-custom.json new file mode 100644 index 000000000..e9d9a4416 --- /dev/null +++ b/tests/plando/plando-goals-priority-custom.json @@ -0,0 +1,570 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "medallions", + "bridge_medallions": 2, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 3, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "medallions", + "ganon_bosskey_medallions": 6, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "goal" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 2 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "custom_goals": [ + { + "category": "all", + "hint_text": "memes", + "priority": 1, + "count_override": 1, + "minimum_goals": 4, + "goals": [ + { + "name": "memes", + "hint_text": "of memes", + "color": "Light Blue", + "items": [ + { + "name": "Ice Arrows", + "quantity": 2, + "minimum": 1, + "hintable": true + }, + { + "name": "Double Defense", + "quantity": 2, + "minimum": 1, + "hintable": true + }, + { + "name": "Stone of Agony", + "quantity": 2, + "minimum": 1, + "hintable": true + }, + { + "name": "Nayrus Love", + "quantity": 2, + "minimum": 1, + "hintable": true + } + ] + } + ] + } + ], + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "child" + }, + "randomized_settings": { + "starting_age": "child" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "active", + "Water": "active", + "Spirit": "inactive", + "Shadow": "active", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": {"region": "Market", "from": "Market Entrance"}, + "Child Spawn -> KF Links House": "KF House of Twins" + }, + "locations": { + "Links Pocket": "Forest Medallion", + "Queen Gohma": "Zora Sapphire", + "King Dodongo": "Water Medallion", + "Barinade": "Fire Medallion", + "Phantom Ganon": "Shadow Medallion", + "Volvagia": "Kokiri Emerald", + "Morpha": "Light Medallion", + "Bongo Bongo": "Spirit Medallion", + "Twinrova": "Goron Ruby", + "Song from Impa": "Prelude of Light", + "Song from Malon": "Zeldas Lullaby", + "Song from Saria": "Eponas Song", + "Song from Royal Familys Tomb": "Sarias Song", + "Song from Ocarina of Time": "Minuet of Forest", + "Song from Windmill": "Requiem of Spirit", + "Sheik in Forest": "Suns Song", + "Sheik in Crater": "Serenade of Water", + "Sheik in Ice Cavern": "Song of Time", + "Sheik at Colossus": "Bolero of Fire", + "Sheik in Kakariko": "Song of Storms", + "Sheik at Temple": "Nocturne of Shadow", + "KF Midos Top Left Chest": "Piece of Heart", + "KF Midos Top Right Chest": "Bow", + "KF Midos Bottom Left Chest": "Rupees (20)", + "KF Midos Bottom Right Chest": "Progressive Hookshot", + "KF Kokiri Sword Chest": "Arrows (10)", + "KF Storms Grotto Chest": "Piece of Heart", + "LW Ocarina Memory Game": "Piece of Heart", + "LW Target in Woods": "Bombs (5)", + "LW Near Shortcuts Grotto Chest": "Arrows (5)", + "Deku Theater Skull Mask": "Rupees (5)", + "Deku Theater Mask of Truth": "Rupees (5)", + "LW Skull Kid": "Bombs (10)", + "LW Deku Scrub Near Bridge": {"item": "Bomb Bag", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Piece of Heart", "price": 40}, + "SFM Wolfos Grotto Chest": "Rupees (200)", + "HF Near Market Grotto Chest": "Biggoron Sword", + "HF Tektite Grotto Freestanding PoH": "Rupees (50)", + "HF Southeast Grotto Chest": "Rupees (5)", + "HF Open Grotto Chest": "Heart Container", + "HF Deku Scrub Grotto": {"item": "Rupees (20)", "price": 10}, + "Market Shooting Gallery Reward": "Nayrus Love", + "Market Bombchu Bowling First Prize": "Progressive Wallet", + "Market Bombchu Bowling Second Prize": "Rupees (200)", + "Market Lost Dog": "Rupees (200)", + "Market Treasure Chest Game Reward": "Rupees (5)", + "Market 10 Big Poes": "Arrows (30)", + "ToT Light Arrows Cutscene": "Piece of Heart", + "HC Great Fairy Reward": "Rupees (5)", + "LLR Talons Chickens": "Rupees (5)", + "LLR Freestanding PoH": "Bombs (5)", + "Kak Anju as Child": "Heart Container", + "Kak Anju as Adult": "Progressive Scale", + "Kak Impas House Freestanding PoH": "Mirror Shield", + "Kak Windmill Freestanding PoH": "Piece of Heart", + "Kak Man on Roof": "Bomb Bag", + "Kak Open Grotto Chest": "Rupees (5)", + "Kak Redead Grotto Chest": "Goron Tunic", + "Kak Shooting Gallery Reward": "Recovery Heart", + "Kak 10 Gold Skulltula Reward": "Piece of Heart", + "Kak 20 Gold Skulltula Reward": "Rupees (50)", + "Kak 30 Gold Skulltula Reward": "Piece of Heart", + "Kak 40 Gold Skulltula Reward": "Bombchus (5)", + "Kak 50 Gold Skulltula Reward": "Rupees (200)", + "Graveyard Shield Grave Chest": "Piece of Heart", + "Graveyard Heart Piece Grave Chest": "Rupees (5)", + "Graveyard Royal Familys Tomb Chest": "Deku Stick Capacity", + "Graveyard Freestanding PoH": "Recovery Heart", + "Graveyard Dampe Gravedigging Tour": "Rupees (5)", + "Graveyard Hookshot Chest": "Arrows (5)", + "Graveyard Dampe Race Freestanding PoH": "Bow", + "DMT Freestanding PoH": "Rupees (5)", + "DMT Chest": "Slingshot", + "DMT Storms Grotto Chest": "Arrows (10)", + "DMT Great Fairy Reward": "Fire Arrows", + "DMT Biggoron": "Arrows (30)", + "GC Darunias Joy": "Slingshot", + "GC Pot Freestanding PoH": "Piece of Heart", + "GC Rolling Goron as Child": "Piece of Heart", + "GC Rolling Goron as Adult": "Arrows (10)", + "GC Maze Left Chest": "Piece of Heart", + "GC Maze Right Chest": "Progressive Wallet", + "GC Maze Center Chest": "Progressive Scale", + "DMC Volcano Freestanding PoH": "Rupees (20)", + "DMC Wall Freestanding PoH": "Progressive Strength Upgrade", + "DMC Upper Grotto Chest": "Farores Wind", + "DMC Great Fairy Reward": "Bombs (10)", + "ZR Open Grotto Chest": "Bombs (20)", + "ZR Frogs in the Rain": "Deku Shield", + "ZR Frogs Ocarina Game": "Piece of Heart", + "ZR Near Open Grotto Freestanding PoH": "Rupees (50)", + "ZR Near Domain Freestanding PoH": "Bombs (5)", + "ZD Diving Minigame": "Slingshot", + "ZD Chest": "Deku Seeds (30)", + "ZD King Zora Thawed": "Bombs (5)", + "ZF Great Fairy Reward": "Progressive Strength Upgrade", + "ZF Iceberg Freestanding PoH": "Rupees (5)", + "ZF Bottom Freestanding PoH": "Arrows (5)", + "LH Underwater Item": "Deku Stick (1)", + "LH Child Fishing": "Ice Arrows", + "LH Adult Fishing": "Deku Stick (1)", + "LH Lab Dive": "Deku Nut Capacity", + "LH Freestanding PoH": "Recovery Heart", + "LH Sun": "Rupees (5)", + "GV Crate Freestanding PoH": "Piece of Heart", + "GV Waterfall Freestanding PoH": "Bow", + "GV Chest": "Arrows (5)", + "GF Chest": "Deku Shield", + "GF HBA 1000 Points": "Recovery Heart", + "GF HBA 1500 Points": "Iron Boots", + "Wasteland Chest": "Bombchus (10)", + "Colossus Great Fairy Reward": "Bottle with Fish", + "Colossus Freestanding PoH": "Double Defense", + "OGC Great Fairy Reward": "Rupees (5)", + "Deku Tree Map Chest": "Piece of Heart", + "Deku Tree Slingshot Room Side Chest": "Arrows (5)", + "Deku Tree Slingshot Chest": "Arrows (30)", + "Deku Tree Compass Chest": "Piece of Heart", + "Deku Tree Compass Room Side Chest": "Rupees (50)", + "Deku Tree Basement Chest": "Piece of Heart", + "Deku Tree Queen Gohma Heart": "Rupees (50)", + "Dodongos Cavern Map Chest": "Megaton Hammer", + "Dodongos Cavern Compass Chest": "Recovery Heart", + "Dodongos Cavern Bomb Flower Platform Chest": "Piece of Heart", + "Dodongos Cavern Bomb Bag Chest": "Piece of Heart", + "Dodongos Cavern End of Bridge Chest": "Recovery Heart", + "Dodongos Cavern Boss Room Chest": "Rutos Letter", + "Dodongos Cavern King Dodongo Heart": "Rupees (200)", + "Jabu Jabus Belly Boomerang Chest": "Rupees (20)", + "Jabu Jabus Belly Map Chest": "Recovery Heart", + "Jabu Jabus Belly Compass Chest": "Arrows (10)", + "Jabu Jabus Belly Barinade Heart": "Arrows (10)", + "Bottom of the Well Front Left Fake Wall Chest": "Rupee (1)", + "Bottom of the Well Front Center Bombable Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Back Left Bombable Chest": "Hylian Shield", + "Bottom of the Well Underwater Left Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Freestanding Key": "Rupees (5)", + "Bottom of the Well Compass Chest": "Bombs (10)", + "Bottom of the Well Center Skulltula Chest": "Hylian Shield", + "Bottom of the Well Right Bottom Fake Wall Chest": "Recovery Heart", + "Bottom of the Well Fire Keese Chest": "Progressive Strength Upgrade", + "Bottom of the Well Like Like Chest": "Bombs (20)", + "Bottom of the Well Map Chest": "Deku Nuts (10)", + "Bottom of the Well Underwater Front Chest": "Lens of Truth", + "Bottom of the Well Invisible Chest": "Recovery Heart", + "Bottom of the Well Lens of Truth Chest": "Small Key (Bottom of the Well)", + "Forest Temple First Room Chest": "Small Key (Forest Temple)", + "Forest Temple First Stalfos Chest": "Small Key (Forest Temple)", + "Forest Temple Raised Island Courtyard Chest": "Piece of Heart", + "Forest Temple Map Chest": "Small Key (Forest Temple)", + "Forest Temple Well Chest": "Deku Nuts (5)", + "Forest Temple Eye Switch Chest": "Small Key (Forest Temple)", + "Forest Temple Boss Key Chest": "Rupees (20)", + "Forest Temple Floormaster Chest": "Small Key (Forest Temple)", + "Forest Temple Red Poe Chest": "Deku Shield", + "Forest Temple Bow Chest": "Kokiri Sword", + "Forest Temple Blue Poe Chest": "Piece of Heart", + "Forest Temple Falling Ceiling Room Chest": "Boss Key (Forest Temple)", + "Forest Temple Basement Chest": "Bombchus (10)", + "Forest Temple Phantom Ganon Heart": "Arrows (10)", + "Fire Temple Near Boss Chest": "Small Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Bombs (5)", + "Fire Temple Boss Key Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Lower Chest": "Piece of Heart", + "Fire Temple Boulder Maze Side Room Chest": "Rupees (50)", + "Fire Temple Map Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Shortcut Chest": "Boss Key (Fire Temple)", + "Fire Temple Boulder Maze Upper Chest": "Piece of Heart", + "Fire Temple Scarecrow Chest": "Small Key (Fire Temple)", + "Fire Temple Compass Chest": "Bombchus (20)", + "Fire Temple Megaton Hammer Chest": "Small Key (Fire Temple)", + "Fire Temple Highest Goron Chest": "Small Key (Fire Temple)", + "Fire Temple Volvagia Heart": "Light Arrows", + "Water Temple Compass Chest": "Small Key (Water Temple)", + "Water Temple Map Chest": "Small Key (Water Temple)", + "Water Temple Cracked Wall Chest": "Small Key (Water Temple)", + "Water Temple Torches Chest": "Rupees (200)", + "Water Temple Boss Key Chest": "Deku Nut Capacity", + "Water Temple Central Pillar Chest": "Small Key (Water Temple)", + "Water Temple Central Bow Target Chest": "Stone of Agony", + "Water Temple Longshot Chest": "Boss Key (Water Temple)", + "Water Temple River Chest": "Small Key (Water Temple)", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Piece of Heart", + "Shadow Temple Map Chest": "Rupees (5)", + "Shadow Temple Hover Boots Chest": "Arrows (30)", + "Shadow Temple Compass Chest": "Small Key (Shadow Temple)", + "Shadow Temple Early Silver Rupee Chest": "Rupees (5)", + "Shadow Temple Invisible Blades Visible Chest": "Progressive Hookshot", + "Shadow Temple Invisible Blades Invisible Chest": "Heart Container", + "Shadow Temple Falling Spikes Lower Chest": "Small Key (Shadow Temple)", + "Shadow Temple Falling Spikes Upper Chest": "Small Key (Shadow Temple)", + "Shadow Temple Falling Spikes Switch Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Spikes Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Freestanding Key": "Deku Nuts (5)", + "Shadow Temple Wind Hint Chest": "Piece of Heart", + "Shadow Temple After Wind Enemy Chest": "Piece of Heart", + "Shadow Temple After Wind Hidden Chest": "Small Key (Shadow Temple)", + "Shadow Temple Spike Walls Left Chest": "Piece of Heart", + "Shadow Temple Boss Key Chest": "Deku Shield", + "Shadow Temple Invisible Floormaster Chest": "Arrows (5)", + "Shadow Temple Bongo Bongo Heart": "Rupees (5)", + "Spirit Temple Child Bridge Chest": "Piece of Heart", + "Spirit Temple Child Early Torches Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Climb North Chest": "Heart Container", + "Spirit Temple Child Climb East Chest": "Small Key (Spirit Temple)", + "Spirit Temple Map Chest": "Deku Stick Capacity", + "Spirit Temple Sun Block Room Chest": "Dins Fire", + "Spirit Temple Silver Gauntlets Chest": "Small Key (Spirit Temple)", + "Spirit Temple Compass Chest": "Small Key (Spirit Temple)", + "Spirit Temple Early Adult Right Chest": "Bombs (5)", + "Spirit Temple First Mirror Left Chest": "Arrows (30)", + "Spirit Temple First Mirror Right Chest": "Rupees (5)", + "Spirit Temple Statue Room Northeast Chest": "Deku Nuts (5)", + "Spirit Temple Statue Room Hand Chest": "Piece of Heart (Treasure Chest Game)", + "Spirit Temple Near Four Armos Chest": "Small Key (Spirit Temple)", + "Spirit Temple Hallway Right Invisible Chest": "Magic Meter", + "Spirit Temple Hallway Left Invisible Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Mirror Shield Chest": "Arrows (30)", + "Spirit Temple Boss Key Chest": "Heart Container", + "Spirit Temple Topmost Chest": "Rupees (5)", + "Spirit Temple Twinrova Heart": "Piece of Heart", + "Ice Cavern Map Chest": "Heart Container", + "Ice Cavern Compass Chest": "Recovery Heart", + "Ice Cavern Freestanding PoH": "Boomerang", + "Ice Cavern Iron Boots Chest": "Piece of Heart", + "Gerudo Training Ground Lobby Left Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Lobby Right Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Stalfos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Before Heavy Block Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block First Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block Second Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Hover Boots", + "Gerudo Training Ground Eye Statue Chest": "Piece of Heart", + "Gerudo Training Ground Near Scarecrow Chest": "Rupees (20)", + "Gerudo Training Ground Hammer Room Clear Chest": "Piece of Heart", + "Gerudo Training Ground Hammer Room Switch Chest": "Rupees (20)", + "Gerudo Training Ground Freestanding Key": "Bombchus (10)", + "Gerudo Training Ground Maze Right Central Chest": "Piece of Heart", + "Gerudo Training Ground Maze Right Side Chest": "Eyedrops", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Beamos Chest": "Rupees (20)", + "Gerudo Training Ground Hidden Ceiling Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path First Chest": "Deku Stick (1)", + "Gerudo Training Ground Maze Path Second Chest": "Rupees (5)", + "Gerudo Training Ground Maze Path Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Final Chest": "Rupees (50)", + "Ganons Castle Forest Trial Chest": "Arrows (10)", + "Ganons Castle Water Trial Left Chest": "Piece of Heart", + "Ganons Castle Water Trial Right Chest": "Small Key (Ganons Castle)", + "Ganons Castle Shadow Trial Front Chest": "Bomb Bag", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Bottle with Fairy", + "Ganons Castle Light Trial First Left Chest": "Recovery Heart", + "Ganons Castle Light Trial Second Left Chest": "Small Key (Ganons Castle)", + "Ganons Castle Light Trial Third Left Chest": "Magic Meter", + "Ganons Castle Light Trial First Right Chest": "Rupees (5)", + "Ganons Castle Light Trial Second Right Chest": "Bottle", + "Ganons Castle Light Trial Third Right Chest": "Zora Tunic", + "Ganons Castle Light Trial Invisible Enemies Chest": "Heart Container", + "Ganons Castle Light Trial Lullaby Chest": "Rupees (5)", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Heart Container", + "Ganons Castle Spirit Trial Invisible Chest": "Bombs (5)", + "Ganons Tower Boss Key Chest": "Rupees (20)" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-priority-gbk.json b/tests/plando/plando-goals-priority-gbk.json new file mode 100644 index 000000000..2bcd5caac --- /dev/null +++ b/tests/plando/plando-goals-priority-gbk.json @@ -0,0 +1,527 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "open", + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 0, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "medallions", + "ganon_bosskey_medallions": 6, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "child" + }, + "randomized_settings": { + "starting_age": "child" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "inactive", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": {"region": "Market", "from": "Market Bombchu Bowling"}, + "Child Spawn -> KF Links House": {"region": "LW Bridge", "from": "Hyrule Field"} + }, + "locations": { + "Links Pocket": "Spirit Medallion", + "Queen Gohma": "Fire Medallion", + "King Dodongo": "Goron Ruby", + "Barinade": "Zora Sapphire", + "Phantom Ganon": "Light Medallion", + "Volvagia": "Shadow Medallion", + "Morpha": "Kokiri Emerald", + "Bongo Bongo": "Forest Medallion", + "Twinrova": "Water Medallion", + "Song from Impa": "Nocturne of Shadow", + "Song from Malon": "Prelude of Light", + "Song from Saria": "Suns Song", + "Song from Royal Familys Tomb": "Requiem of Spirit", + "Song from Ocarina of Time": "Song of Storms", + "Song from Windmill": "Song of Time", + "Sheik in Forest": "Sarias Song", + "Sheik in Crater": "Zeldas Lullaby", + "Sheik in Ice Cavern": "Serenade of Water", + "Sheik at Colossus": "Eponas Song", + "Sheik in Kakariko": "Minuet of Forest", + "Sheik at Temple": "Bolero of Fire", + "KF Midos Top Left Chest": "Rupees (50)", + "KF Midos Top Right Chest": "Recovery Heart", + "KF Midos Bottom Left Chest": "Piece of Heart", + "KF Midos Bottom Right Chest": "Rupees (5)", + "KF Kokiri Sword Chest": "Recovery Heart", + "KF Storms Grotto Chest": "Hylian Shield", + "LW Ocarina Memory Game": "Rupees (50)", + "LW Target in Woods": "Bombs (5)", + "LW Near Shortcuts Grotto Chest": "Bombchus (10)", + "Deku Theater Skull Mask": "Piece of Heart", + "Deku Theater Mask of Truth": "Rupees (20)", + "LW Skull Kid": "Rupees (200)", + "LW Deku Scrub Near Bridge": {"item": "Bombs (5)", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Piece of Heart", "price": 40}, + "SFM Wolfos Grotto Chest": "Progressive Wallet", + "HF Near Market Grotto Chest": "Rupees (50)", + "HF Tektite Grotto Freestanding PoH": "Progressive Hookshot", + "HF Southeast Grotto Chest": "Recovery Heart", + "HF Open Grotto Chest": "Nayrus Love", + "HF Deku Scrub Grotto": {"item": "Bottle", "price": 10}, + "Market Shooting Gallery Reward": "Rupees (5)", + "Market Bombchu Bowling First Prize": "Recovery Heart", + "Market Bombchu Bowling Second Prize": "Rupees (20)", + "Market Lost Dog": "Piece of Heart", + "Market Treasure Chest Game Reward": "Bomb Bag", + "Market 10 Big Poes": "Piece of Heart", + "ToT Light Arrows Cutscene": "Piece of Heart", + "HC Great Fairy Reward": "Rupees (5)", + "LLR Talons Chickens": "Bombs (20)", + "LLR Freestanding PoH": "Rupees (5)", + "Kak Anju as Child": "Rupees (5)", + "Kak Anju as Adult": "Mirror Shield", + "Kak Impas House Freestanding PoH": "Piece of Heart", + "Kak Windmill Freestanding PoH": "Rupees (20)", + "Kak Man on Roof": "Bombs (5)", + "Kak Open Grotto Chest": "Bottle with Blue Fire", + "Kak Redead Grotto Chest": "Piece of Heart", + "Kak Shooting Gallery Reward": "Deku Stick Capacity", + "Kak 10 Gold Skulltula Reward": "Magic Meter", + "Kak 20 Gold Skulltula Reward": "Arrows (10)", + "Kak 30 Gold Skulltula Reward": "Rupee (1)", + "Kak 40 Gold Skulltula Reward": "Arrows (30)", + "Kak 50 Gold Skulltula Reward": "Rupees (50)", + "Graveyard Shield Grave Chest": "Rupees (200)", + "Graveyard Heart Piece Grave Chest": "Farores Wind", + "Graveyard Royal Familys Tomb Chest": "Piece of Heart", + "Graveyard Freestanding PoH": "Bomb Bag", + "Graveyard Dampe Gravedigging Tour": "Rutos Letter", + "Graveyard Hookshot Chest": "Piece of Heart", + "Graveyard Dampe Race Freestanding PoH": "Piece of Heart", + "DMT Freestanding PoH": "Bombs (5)", + "DMT Chest": "Arrows (10)", + "DMT Storms Grotto Chest": "Heart Container", + "DMT Great Fairy Reward": "Deku Seeds (30)", + "DMT Biggoron": "Bombs (10)", + "GC Darunias Joy": "Deku Nuts (5)", + "GC Pot Freestanding PoH": "Double Defense", + "GC Rolling Goron as Child": "Piece of Heart", + "GC Rolling Goron as Adult": "Bomb Bag", + "GC Maze Left Chest": "Piece of Heart", + "GC Maze Right Chest": "Piece of Heart", + "GC Maze Center Chest": "Rupees (50)", + "DMC Volcano Freestanding PoH": "Bombchus (20)", + "DMC Wall Freestanding PoH": "Piece of Heart", + "DMC Upper Grotto Chest": "Bombs (10)", + "DMC Great Fairy Reward": "Bow", + "ZR Open Grotto Chest": "Deku Nuts (5)", + "ZR Frogs in the Rain": "Bombs (5)", + "ZR Frogs Ocarina Game": "Recovery Heart", + "ZR Near Open Grotto Freestanding PoH": "Rupees (50)", + "ZR Near Domain Freestanding PoH": "Recovery Heart", + "ZD Diving Minigame": "Kokiri Sword", + "ZD Chest": "Arrows (10)", + "ZD King Zora Thawed": "Bombs (10)", + "ZF Great Fairy Reward": "Rupees (20)", + "ZF Iceberg Freestanding PoH": "Piece of Heart", + "ZF Bottom Freestanding PoH": "Piece of Heart", + "LH Underwater Item": "Progressive Strength Upgrade", + "LH Child Fishing": "Deku Shield", + "LH Adult Fishing": "Heart Container", + "LH Lab Dive": "Bombs (20)", + "LH Freestanding PoH": "Eyedrops", + "LH Sun": "Piece of Heart", + "GV Crate Freestanding PoH": "Dins Fire", + "GV Waterfall Freestanding PoH": "Rupees (5)", + "GV Chest": "Rupees (50)", + "GF Chest": "Arrows (30)", + "GF HBA 1000 Points": "Rupees (5)", + "GF HBA 1500 Points": "Iron Boots", + "Wasteland Chest": "Progressive Scale", + "Colossus Great Fairy Reward": "Recovery Heart", + "Colossus Freestanding PoH": "Heart Container", + "OGC Great Fairy Reward": "Stone of Agony", + "Deku Tree Map Chest": "Recovery Heart", + "Deku Tree Slingshot Room Side Chest": "Heart Container", + "Deku Tree Slingshot Chest": "Slingshot", + "Deku Tree Compass Chest": "Arrows (5)", + "Deku Tree Compass Room Side Chest": "Rupees (5)", + "Deku Tree Basement Chest": "Rupees (5)", + "Deku Tree Queen Gohma Heart": "Bombs (5)", + "Dodongos Cavern Map Chest": "Deku Nut Capacity", + "Dodongos Cavern Compass Chest": "Piece of Heart", + "Dodongos Cavern Bomb Flower Platform Chest": "Magic Meter", + "Dodongos Cavern Bomb Bag Chest": "Progressive Hookshot", + "Dodongos Cavern End of Bridge Chest": "Deku Stick (1)", + "Dodongos Cavern Boss Room Chest": "Zora Tunic", + "Dodongos Cavern King Dodongo Heart": "Slingshot", + "Jabu Jabus Belly Boomerang Chest": "Piece of Heart", + "Jabu Jabus Belly Map Chest": "Rupees (5)", + "Jabu Jabus Belly Compass Chest": "Piece of Heart", + "Jabu Jabus Belly Barinade Heart": "Hover Boots", + "Bottom of the Well Front Left Fake Wall Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Front Center Bombable Chest": "Deku Nuts (10)", + "Bottom of the Well Back Left Bombable Chest": "Bombchus (10)", + "Bottom of the Well Underwater Left Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Freestanding Key": "Piece of Heart", + "Bottom of the Well Compass Chest": "Rupees (5)", + "Bottom of the Well Center Skulltula Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Right Bottom Fake Wall Chest": "Rupees (5)", + "Bottom of the Well Fire Keese Chest": "Hylian Shield", + "Bottom of the Well Like Like Chest": "Heart Container", + "Bottom of the Well Map Chest": "Rupees (200)", + "Bottom of the Well Underwater Front Chest": "Light Arrows", + "Bottom of the Well Invisible Chest": "Rupees (5)", + "Bottom of the Well Lens of Truth Chest": "Arrows (10)", + "Forest Temple First Room Chest": "Small Key (Forest Temple)", + "Forest Temple First Stalfos Chest": "Boss Key (Forest Temple)", + "Forest Temple Raised Island Courtyard Chest": "Rupees (200)", + "Forest Temple Map Chest": "Biggoron Sword", + "Forest Temple Well Chest": "Rupees (5)", + "Forest Temple Eye Switch Chest": "Piece of Heart", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Small Key (Forest Temple)", + "Forest Temple Red Poe Chest": "Small Key (Forest Temple)", + "Forest Temple Bow Chest": "Small Key (Forest Temple)", + "Forest Temple Blue Poe Chest": "Deku Nut Capacity", + "Forest Temple Falling Ceiling Room Chest": "Rupees (50)", + "Forest Temple Basement Chest": "Deku Shield", + "Forest Temple Phantom Ganon Heart": "Arrows (10)", + "Fire Temple Near Boss Chest": "Piece of Heart", + "Fire Temple Flare Dancer Chest": "Boss Key (Fire Temple)", + "Fire Temple Boss Key Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Lower Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Side Room Chest": "Small Key (Fire Temple)", + "Fire Temple Map Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Shortcut Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Upper Chest": "Rupees (20)", + "Fire Temple Scarecrow Chest": "Rupees (20)", + "Fire Temple Compass Chest": "Progressive Scale", + "Fire Temple Megaton Hammer Chest": "Small Key (Fire Temple)", + "Fire Temple Highest Goron Chest": "Progressive Strength Upgrade", + "Fire Temple Volvagia Heart": "Piece of Heart", + "Water Temple Compass Chest": "Boss Key (Water Temple)", + "Water Temple Map Chest": "Arrows (10)", + "Water Temple Cracked Wall Chest": "Small Key (Water Temple)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Small Key (Water Temple)", + "Water Temple Central Pillar Chest": "Small Key (Water Temple)", + "Water Temple Central Bow Target Chest": "Small Key (Water Temple)", + "Water Temple Longshot Chest": "Rupees (20)", + "Water Temple River Chest": "Deku Nuts (5)", + "Water Temple Dragon Chest": "Recovery Heart", + "Water Temple Morpha Heart": "Small Key (Water Temple)", + "Shadow Temple Map Chest": "Small Key (Shadow Temple)", + "Shadow Temple Hover Boots Chest": "Small Key (Shadow Temple)", + "Shadow Temple Compass Chest": "Piece of Heart", + "Shadow Temple Early Silver Rupee Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Blades Visible Chest": "Bombs (5)", + "Shadow Temple Invisible Blades Invisible Chest": "Rupees (50)", + "Shadow Temple Falling Spikes Lower Chest": "Piece of Heart", + "Shadow Temple Falling Spikes Upper Chest": "Arrows (30)", + "Shadow Temple Falling Spikes Switch Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Spikes Chest": "Progressive Strength Upgrade", + "Shadow Temple Freestanding Key": "Rupees (20)", + "Shadow Temple Wind Hint Chest": "Bombs (10)", + "Shadow Temple After Wind Enemy Chest": "Rupees (5)", + "Shadow Temple After Wind Hidden Chest": "Arrows (10)", + "Shadow Temple Spike Walls Left Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Boss Key Chest": "Arrows (5)", + "Shadow Temple Invisible Floormaster Chest": "Small Key (Shadow Temple)", + "Shadow Temple Bongo Bongo Heart": "Deku Stick Capacity", + "Spirit Temple Child Bridge Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Early Torches Chest": "Bow", + "Spirit Temple Child Climb North Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Climb East Chest": "Piece of Heart", + "Spirit Temple Map Chest": "Small Key (Spirit Temple)", + "Spirit Temple Sun Block Room Chest": "Small Key (Spirit Temple)", + "Spirit Temple Silver Gauntlets Chest": "Piece of Heart", + "Spirit Temple Compass Chest": "Rupees (5)", + "Spirit Temple Early Adult Right Chest": "Rupees (5)", + "Spirit Temple First Mirror Left Chest": "Deku Shield", + "Spirit Temple First Mirror Right Chest": "Goron Tunic", + "Spirit Temple Statue Room Northeast Chest": "Fire Arrows", + "Spirit Temple Statue Room Hand Chest": "Boomerang", + "Spirit Temple Near Four Armos Chest": "Small Key (Spirit Temple)", + "Spirit Temple Hallway Right Invisible Chest": "Piece of Heart", + "Spirit Temple Hallway Left Invisible Chest": "Arrows (30)", + "Spirit Temple Mirror Shield Chest": "Bombs (5)", + "Spirit Temple Boss Key Chest": "Progressive Wallet", + "Spirit Temple Topmost Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Twinrova Heart": "Piece of Heart", + "Ice Cavern Map Chest": "Piece of Heart", + "Ice Cavern Compass Chest": "Rupees (200)", + "Ice Cavern Freestanding PoH": "Piece of Heart", + "Ice Cavern Iron Boots Chest": "Rupees (5)", + "Gerudo Training Ground Lobby Left Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Lobby Right Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Stalfos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Before Heavy Block Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block First Chest": "Bombchus (5)", + "Gerudo Training Ground Heavy Block Second Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Arrows (30)", + "Gerudo Training Ground Eye Statue Chest": "Ice Arrows", + "Gerudo Training Ground Near Scarecrow Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hammer Room Clear Chest": "Rupees (5)", + "Gerudo Training Ground Hammer Room Switch Chest": "Bottle with Big Poe", + "Gerudo Training Ground Freestanding Key": "Bow", + "Gerudo Training Ground Maze Right Central Chest": "Rupees (5)", + "Gerudo Training Ground Maze Right Side Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Arrows (30)", + "Gerudo Training Ground Beamos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hidden Ceiling Chest": "Deku Stick (1)", + "Gerudo Training Ground Maze Path First Chest": "Recovery Heart", + "Gerudo Training Ground Maze Path Second Chest": "Megaton Hammer", + "Gerudo Training Ground Maze Path Third Chest": "Heart Container", + "Gerudo Training Ground Maze Path Final Chest": "Piece of Heart", + "Ganons Castle Forest Trial Chest": "Lens of Truth", + "Ganons Castle Water Trial Left Chest": "Bombchus (10)", + "Ganons Castle Water Trial Right Chest": "Rupees (200)", + "Ganons Castle Shadow Trial Front Chest": "Arrows (10)", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Rupees (5)", + "Ganons Castle Light Trial First Left Chest": "Heart Container", + "Ganons Castle Light Trial Second Left Chest": "Rupees (20)", + "Ganons Castle Light Trial Third Left Chest": "Small Key (Ganons Castle)", + "Ganons Castle Light Trial First Right Chest": "Deku Nuts (5)", + "Ganons Castle Light Trial Second Right Chest": "Small Key (Ganons Castle)", + "Ganons Castle Light Trial Third Right Chest": "Slingshot", + "Ganons Castle Light Trial Invisible Enemies Chest": "Deku Shield", + "Ganons Castle Light Trial Lullaby Chest": "Recovery Heart", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Heart Container", + "Ganons Castle Spirit Trial Invisible Chest": "Piece of Heart (Treasure Chest Game)", + "Ganons Tower Boss Key Chest": "Piece of Heart" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-priority-mixed-trials.json b/tests/plando/plando-goals-priority-mixed-trials.json new file mode 100644 index 000000000..b691f5f49 --- /dev/null +++ b/tests/plando/plando-goals-priority-mixed-trials.json @@ -0,0 +1,528 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "medallions", + "bridge_medallions": 2, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 3, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "medallions", + "ganon_bosskey_medallions": 6, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "adult" + }, + "randomized_settings": { + "starting_age": "adult" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "active", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "active", + "Light": "active" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": {"region": "GC Darunias Chamber", "from": "DMC Lower Nearby"}, + "Child Spawn -> KF Links House": "Kak Carpenter Boss House" + }, + "locations": { + "Links Pocket": "Kokiri Emerald", + "Queen Gohma": "Water Medallion", + "King Dodongo": "Light Medallion", + "Barinade": "Fire Medallion", + "Phantom Ganon": "Shadow Medallion", + "Volvagia": "Spirit Medallion", + "Morpha": "Forest Medallion", + "Bongo Bongo": "Zora Sapphire", + "Twinrova": "Goron Ruby", + "Song from Impa": "Zeldas Lullaby", + "Song from Malon": "Requiem of Spirit", + "Song from Saria": "Bolero of Fire", + "Song from Royal Familys Tomb": "Serenade of Water", + "Song from Ocarina of Time": "Song of Storms", + "Song from Windmill": "Song of Time", + "Sheik in Forest": "Suns Song", + "Sheik in Crater": "Prelude of Light", + "Sheik in Ice Cavern": "Nocturne of Shadow", + "Sheik at Colossus": "Eponas Song", + "Sheik in Kakariko": "Sarias Song", + "Sheik at Temple": "Minuet of Forest", + "KF Midos Top Left Chest": "Piece of Heart", + "KF Midos Top Right Chest": "Heart Container", + "KF Midos Bottom Left Chest": "Rupee (1)", + "KF Midos Bottom Right Chest": "Rupees (5)", + "KF Kokiri Sword Chest": "Bombchus (20)", + "KF Storms Grotto Chest": "Fire Arrows", + "LW Ocarina Memory Game": "Recovery Heart", + "LW Target in Woods": "Goron Tunic", + "LW Near Shortcuts Grotto Chest": "Bombs (5)", + "Deku Theater Skull Mask": "Deku Stick Capacity", + "Deku Theater Mask of Truth": "Deku Nuts (5)", + "LW Skull Kid": "Rupees (50)", + "LW Deku Scrub Near Bridge": {"item": "Piece of Heart", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Magic Meter", "price": 40}, + "SFM Wolfos Grotto Chest": "Bombchus (10)", + "HF Near Market Grotto Chest": "Piece of Heart", + "HF Tektite Grotto Freestanding PoH": "Piece of Heart", + "HF Southeast Grotto Chest": "Recovery Heart", + "HF Open Grotto Chest": "Arrows (10)", + "HF Deku Scrub Grotto": {"item": "Eyedrops", "price": 10}, + "Market Shooting Gallery Reward": "Progressive Wallet", + "Market Bombchu Bowling First Prize": "Rupees (5)", + "Market Bombchu Bowling Second Prize": "Arrows (10)", + "Market Lost Dog": "Ice Arrows", + "Market Treasure Chest Game Reward": "Piece of Heart", + "Market 10 Big Poes": "Rupees (200)", + "ToT Light Arrows Cutscene": "Bombs (20)", + "HC Great Fairy Reward": "Slingshot", + "LLR Talons Chickens": "Arrows (30)", + "LLR Freestanding PoH": "Rupees (5)", + "Kak Anju as Child": "Piece of Heart", + "Kak Anju as Adult": "Deku Nut Capacity", + "Kak Impas House Freestanding PoH": "Piece of Heart", + "Kak Windmill Freestanding PoH": "Arrows (10)", + "Kak Man on Roof": "Piece of Heart", + "Kak Open Grotto Chest": "Deku Seeds (30)", + "Kak Redead Grotto Chest": "Rupees (20)", + "Kak Shooting Gallery Reward": "Piece of Heart", + "Kak 10 Gold Skulltula Reward": "Rupees (5)", + "Kak 20 Gold Skulltula Reward": "Recovery Heart", + "Kak 30 Gold Skulltula Reward": "Piece of Heart", + "Kak 40 Gold Skulltula Reward": "Piece of Heart", + "Kak 50 Gold Skulltula Reward": "Progressive Scale", + "Graveyard Shield Grave Chest": "Deku Nuts (5)", + "Graveyard Heart Piece Grave Chest": "Arrows (5)", + "Graveyard Royal Familys Tomb Chest": "Bombs (20)", + "Graveyard Freestanding PoH": "Piece of Heart", + "Graveyard Dampe Gravedigging Tour": "Piece of Heart", + "Graveyard Hookshot Chest": "Piece of Heart", + "Graveyard Dampe Race Freestanding PoH": "Piece of Heart", + "DMT Freestanding PoH": "Kokiri Sword", + "DMT Chest": "Piece of Heart", + "DMT Storms Grotto Chest": "Deku Nuts (5)", + "DMT Great Fairy Reward": "Rupees (5)", + "DMT Biggoron": "Piece of Heart", + "GC Darunias Joy": "Arrows (30)", + "GC Pot Freestanding PoH": "Arrows (30)", + "GC Rolling Goron as Child": "Bottle with Poe", + "GC Rolling Goron as Adult": "Rupees (20)", + "GC Maze Left Chest": "Arrows (5)", + "GC Maze Right Chest": "Bow", + "GC Maze Center Chest": "Lens of Truth", + "DMC Volcano Freestanding PoH": "Recovery Heart", + "DMC Wall Freestanding PoH": "Bomb Bag", + "DMC Upper Grotto Chest": "Piece of Heart", + "DMC Great Fairy Reward": "Bombs (5)", + "ZR Open Grotto Chest": "Recovery Heart", + "ZR Frogs in the Rain": "Rupees (5)", + "ZR Frogs Ocarina Game": "Bombs (10)", + "ZR Near Open Grotto Freestanding PoH": "Progressive Strength Upgrade", + "ZR Near Domain Freestanding PoH": "Deku Shield", + "ZD Diving Minigame": "Rupees (5)", + "ZD Chest": "Deku Stick (1)", + "ZD King Zora Thawed": "Boomerang", + "ZF Great Fairy Reward": "Recovery Heart", + "ZF Iceberg Freestanding PoH": "Rupees (200)", + "ZF Bottom Freestanding PoH": "Piece of Heart", + "LH Underwater Item": "Magic Meter", + "LH Child Fishing": "Arrows (30)", + "LH Adult Fishing": "Progressive Hookshot", + "LH Lab Dive": "Rupees (200)", + "LH Freestanding PoH": "Arrows (5)", + "LH Sun": "Rupees (5)", + "GV Crate Freestanding PoH": "Bomb Bag", + "GV Waterfall Freestanding PoH": "Rupees (20)", + "GV Chest": "Arrows (10)", + "GF Chest": "Piece of Heart", + "GF HBA 1000 Points": "Recovery Heart", + "GF HBA 1500 Points": "Bombs (5)", + "Wasteland Chest": "Arrows (5)", + "Colossus Great Fairy Reward": "Bomb Bag", + "Colossus Freestanding PoH": "Rupees (5)", + "OGC Great Fairy Reward": "Bombs (5)", + "Deku Tree Map Chest": "Rupees (50)", + "Deku Tree Slingshot Room Side Chest": "Dins Fire", + "Deku Tree Slingshot Chest": "Progressive Scale", + "Deku Tree Compass Chest": "Arrows (10)", + "Deku Tree Compass Room Side Chest": "Rupees (50)", + "Deku Tree Basement Chest": "Piece of Heart", + "Deku Tree Queen Gohma Heart": "Rutos Letter", + "Dodongos Cavern Map Chest": "Bombchus (10)", + "Dodongos Cavern Compass Chest": "Recovery Heart", + "Dodongos Cavern Bomb Flower Platform Chest": "Deku Shield", + "Dodongos Cavern Bomb Bag Chest": "Rupees (5)", + "Dodongos Cavern End of Bridge Chest": "Recovery Heart", + "Dodongos Cavern Boss Room Chest": "Bombs (10)", + "Dodongos Cavern King Dodongo Heart": "Rupees (50)", + "Jabu Jabus Belly Boomerang Chest": "Bow", + "Jabu Jabus Belly Map Chest": "Rupees (50)", + "Jabu Jabus Belly Compass Chest": "Recovery Heart", + "Jabu Jabus Belly Barinade Heart": "Heart Container", + "Bottom of the Well Front Left Fake Wall Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Front Center Bombable Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Back Left Bombable Chest": "Hylian Shield", + "Bottom of the Well Underwater Left Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Freestanding Key": "Rupees (5)", + "Bottom of the Well Compass Chest": "Heart Container", + "Bottom of the Well Center Skulltula Chest": "Piece of Heart", + "Bottom of the Well Right Bottom Fake Wall Chest": "Rupees (5)", + "Bottom of the Well Fire Keese Chest": "Bombs (5)", + "Bottom of the Well Like Like Chest": "Bombs (5)", + "Bottom of the Well Map Chest": "Deku Stick Capacity", + "Bottom of the Well Underwater Front Chest": "Rupees (5)", + "Bottom of the Well Invisible Chest": "Heart Container", + "Bottom of the Well Lens of Truth Chest": "Arrows (10)", + "Forest Temple First Room Chest": "Piece of Heart", + "Forest Temple First Stalfos Chest": "Piece of Heart", + "Forest Temple Raised Island Courtyard Chest": "Small Key (Forest Temple)", + "Forest Temple Map Chest": "Small Key (Forest Temple)", + "Forest Temple Well Chest": "Arrows (10)", + "Forest Temple Eye Switch Chest": "Small Key (Forest Temple)", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Deku Nuts (5)", + "Forest Temple Red Poe Chest": "Progressive Strength Upgrade", + "Forest Temple Bow Chest": "Small Key (Forest Temple)", + "Forest Temple Blue Poe Chest": "Boss Key (Forest Temple)", + "Forest Temple Falling Ceiling Room Chest": "Piece of Heart", + "Forest Temple Basement Chest": "Arrows (10)", + "Forest Temple Phantom Ganon Heart": "Progressive Wallet", + "Fire Temple Near Boss Chest": "Small Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Small Key (Fire Temple)", + "Fire Temple Boss Key Chest": "Deku Shield", + "Fire Temple Big Lava Room Lower Open Door Chest": "Boss Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Rupees (5)", + "Fire Temple Boulder Maze Lower Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Side Room Chest": "Bombs (5)", + "Fire Temple Map Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Shortcut Chest": "Deku Nuts (5)", + "Fire Temple Boulder Maze Upper Chest": "Small Key (Fire Temple)", + "Fire Temple Scarecrow Chest": "Small Key (Fire Temple)", + "Fire Temple Compass Chest": "Rupees (20)", + "Fire Temple Megaton Hammer Chest": "Small Key (Fire Temple)", + "Fire Temple Highest Goron Chest": "Deku Seeds (30)", + "Fire Temple Volvagia Heart": "Small Key (Fire Temple)", + "Water Temple Compass Chest": "Small Key (Water Temple)", + "Water Temple Map Chest": "Bow", + "Water Temple Cracked Wall Chest": "Boss Key (Water Temple)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Stone of Agony", + "Water Temple Central Pillar Chest": "Small Key (Water Temple)", + "Water Temple Central Bow Target Chest": "Small Key (Water Temple)", + "Water Temple Longshot Chest": "Deku Nuts (5)", + "Water Temple River Chest": "Small Key (Water Temple)", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Rupees (20)", + "Shadow Temple Map Chest": "Small Key (Shadow Temple)", + "Shadow Temple Hover Boots Chest": "Rupees (50)", + "Shadow Temple Compass Chest": "Small Key (Shadow Temple)", + "Shadow Temple Early Silver Rupee Chest": "Rupees (200)", + "Shadow Temple Invisible Blades Visible Chest": "Piece of Heart", + "Shadow Temple Invisible Blades Invisible Chest": "Small Key (Shadow Temple)", + "Shadow Temple Falling Spikes Lower Chest": "Deku Nuts (10)", + "Shadow Temple Falling Spikes Upper Chest": "Rupees (200)", + "Shadow Temple Falling Spikes Switch Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Spikes Chest": "Mirror Shield", + "Shadow Temple Freestanding Key": "Small Key (Shadow Temple)", + "Shadow Temple Wind Hint Chest": "Piece of Heart", + "Shadow Temple After Wind Enemy Chest": "Boss Key (Shadow Temple)", + "Shadow Temple After Wind Hidden Chest": "Zora Tunic", + "Shadow Temple Spike Walls Left Chest": "Rupees (5)", + "Shadow Temple Boss Key Chest": "Rupees (5)", + "Shadow Temple Invisible Floormaster Chest": "Deku Stick (1)", + "Shadow Temple Bongo Bongo Heart": "Recovery Heart", + "Spirit Temple Child Bridge Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Child Early Torches Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Climb North Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Climb East Chest": "Small Key (Spirit Temple)", + "Spirit Temple Map Chest": "Megaton Hammer", + "Spirit Temple Sun Block Room Chest": "Farores Wind", + "Spirit Temple Silver Gauntlets Chest": "Light Arrows", + "Spirit Temple Compass Chest": "Hover Boots", + "Spirit Temple Early Adult Right Chest": "Arrows (5)", + "Spirit Temple First Mirror Left Chest": "Rupees (5)", + "Spirit Temple First Mirror Right Chest": "Piece of Heart (Treasure Chest Game)", + "Spirit Temple Statue Room Northeast Chest": "Slingshot", + "Spirit Temple Statue Room Hand Chest": "Small Key (Spirit Temple)", + "Spirit Temple Near Four Armos Chest": "Heart Container", + "Spirit Temple Hallway Right Invisible Chest": "Arrows (30)", + "Spirit Temple Hallway Left Invisible Chest": "Small Key (Spirit Temple)", + "Spirit Temple Mirror Shield Chest": "Piece of Heart", + "Spirit Temple Boss Key Chest": "Biggoron Sword", + "Spirit Temple Topmost Chest": "Double Defense", + "Spirit Temple Twinrova Heart": "Progressive Hookshot", + "Ice Cavern Map Chest": "Rupees (50)", + "Ice Cavern Compass Chest": "Bottle", + "Ice Cavern Freestanding PoH": "Piece of Heart", + "Ice Cavern Iron Boots Chest": "Heart Container", + "Gerudo Training Ground Lobby Left Chest": "Bombchus (10)", + "Gerudo Training Ground Lobby Right Chest": "Piece of Heart", + "Gerudo Training Ground Stalfos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Before Heavy Block Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Second Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block Third Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block Fourth Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Eye Statue Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Near Scarecrow Chest": "Heart Container", + "Gerudo Training Ground Hammer Room Clear Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hammer Room Switch Chest": "Iron Boots", + "Gerudo Training Ground Freestanding Key": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Right Central Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Right Side Chest": "Piece of Heart", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Deku Nut Capacity", + "Gerudo Training Ground Beamos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hidden Ceiling Chest": "Bottle with Fish", + "Gerudo Training Ground Maze Path First Chest": "Slingshot", + "Gerudo Training Ground Maze Path Second Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Third Chest": "Bombchus (5)", + "Gerudo Training Ground Maze Path Final Chest": "Rupees (5)", + "Ganons Castle Forest Trial Chest": "Piece of Heart", + "Ganons Castle Water Trial Left Chest": "Small Key (Ganons Castle)", + "Ganons Castle Water Trial Right Chest": "Rupees (5)", + "Ganons Castle Shadow Trial Front Chest": "Arrows (30)", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Rupees (20)", + "Ganons Castle Light Trial First Left Chest": "Hylian Shield", + "Ganons Castle Light Trial Second Left Chest": "Rupees (5)", + "Ganons Castle Light Trial Third Left Chest": "Deku Shield", + "Ganons Castle Light Trial First Right Chest": "Nayrus Love", + "Ganons Castle Light Trial Second Right Chest": "Arrows (5)", + "Ganons Castle Light Trial Third Right Chest": "Rupees (5)", + "Ganons Castle Light Trial Invisible Enemies Chest": "Rupees (200)", + "Ganons Castle Light Trial Lullaby Chest": "Small Key (Ganons Castle)", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Progressive Strength Upgrade", + "Ganons Castle Spirit Trial Invisible Chest": "Heart Container", + "Ganons Tower Boss Key Chest": "Rupees (20)" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-priority-mixed.json b/tests/plando/plando-goals-priority-mixed.json new file mode 100644 index 000000000..e37072d33 --- /dev/null +++ b/tests/plando/plando-goals-priority-mixed.json @@ -0,0 +1,528 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "medallions", + "bridge_medallions": 2, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 0, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "medallions", + "ganon_bosskey_medallions": 6, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "adult" + }, + "randomized_settings": { + "starting_age": "adult" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "inactive", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": "GC Shop", + "Child Spawn -> KF Links House": {"region": "LW Beyond Mido", "from": "SFM Entryway"} + }, + "locations": { + "Links Pocket": "Kokiri Emerald", + "Queen Gohma": "Spirit Medallion", + "King Dodongo": "Fire Medallion", + "Barinade": "Forest Medallion", + "Phantom Ganon": "Shadow Medallion", + "Volvagia": "Goron Ruby", + "Morpha": "Water Medallion", + "Bongo Bongo": "Light Medallion", + "Twinrova": "Zora Sapphire", + "Song from Impa": "Suns Song", + "Song from Malon": "Eponas Song", + "Song from Saria": "Nocturne of Shadow", + "Song from Royal Familys Tomb": "Requiem of Spirit", + "Song from Ocarina of Time": "Minuet of Forest", + "Song from Windmill": "Prelude of Light", + "Sheik in Forest": "Song of Storms", + "Sheik in Crater": "Sarias Song", + "Sheik in Ice Cavern": "Bolero of Fire", + "Sheik at Colossus": "Song of Time", + "Sheik in Kakariko": "Serenade of Water", + "Sheik at Temple": "Zeldas Lullaby", + "KF Midos Top Left Chest": "Deku Shield", + "KF Midos Top Right Chest": "Piece of Heart", + "KF Midos Bottom Left Chest": "Rupees (20)", + "KF Midos Bottom Right Chest": "Piece of Heart", + "KF Kokiri Sword Chest": "Bomb Bag", + "KF Storms Grotto Chest": "Arrows (10)", + "LW Ocarina Memory Game": "Bottle with Bugs", + "LW Target in Woods": "Arrows (5)", + "LW Near Shortcuts Grotto Chest": "Piece of Heart", + "Deku Theater Skull Mask": "Fire Arrows", + "Deku Theater Mask of Truth": "Rupees (20)", + "LW Skull Kid": "Light Arrows", + "LW Deku Scrub Near Bridge": {"item": "Arrows (30)", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Rupee (1)", "price": 40}, + "SFM Wolfos Grotto Chest": "Rupees (50)", + "HF Near Market Grotto Chest": "Rupees (5)", + "HF Tektite Grotto Freestanding PoH": "Rupees (200)", + "HF Southeast Grotto Chest": "Piece of Heart", + "HF Open Grotto Chest": "Ice Arrows", + "HF Deku Scrub Grotto": {"item": "Deku Stick (1)", "price": 10}, + "Market Shooting Gallery Reward": "Piece of Heart", + "Market Bombchu Bowling First Prize": "Piece of Heart", + "Market Bombchu Bowling Second Prize": "Mirror Shield", + "Market Lost Dog": "Bombs (5)", + "Market Treasure Chest Game Reward": "Piece of Heart", + "Market 10 Big Poes": "Deku Seeds (30)", + "ToT Light Arrows Cutscene": "Rupees (5)", + "HC Great Fairy Reward": "Bombchus (20)", + "LLR Talons Chickens": "Deku Nuts (5)", + "LLR Freestanding PoH": "Heart Container", + "Kak Anju as Child": "Bottle with Green Potion", + "Kak Anju as Adult": "Rupees (200)", + "Kak Impas House Freestanding PoH": "Deku Seeds (30)", + "Kak Windmill Freestanding PoH": "Rupees (5)", + "Kak Man on Roof": "Hover Boots", + "Kak Open Grotto Chest": "Deku Seeds (30)", + "Kak Redead Grotto Chest": "Piece of Heart", + "Kak Shooting Gallery Reward": "Piece of Heart", + "Kak 10 Gold Skulltula Reward": "Rupees (5)", + "Kak 20 Gold Skulltula Reward": "Piece of Heart", + "Kak 30 Gold Skulltula Reward": "Double Defense", + "Kak 40 Gold Skulltula Reward": "Bomb Bag", + "Kak 50 Gold Skulltula Reward": "Slingshot", + "Graveyard Shield Grave Chest": "Rupees (20)", + "Graveyard Heart Piece Grave Chest": "Bomb Bag", + "Graveyard Royal Familys Tomb Chest": "Rupees (200)", + "Graveyard Freestanding PoH": "Bow", + "Graveyard Dampe Gravedigging Tour": "Boomerang", + "Graveyard Hookshot Chest": "Piece of Heart", + "Graveyard Dampe Race Freestanding PoH": "Arrows (10)", + "DMT Freestanding PoH": "Bottle with Green Potion", + "DMT Chest": "Rupees (5)", + "DMT Storms Grotto Chest": "Bombchus (10)", + "DMT Great Fairy Reward": "Rupees (5)", + "DMT Biggoron": "Piece of Heart", + "GC Darunias Joy": "Recovery Heart", + "GC Pot Freestanding PoH": "Arrows (10)", + "GC Rolling Goron as Child": "Rupees (5)", + "GC Rolling Goron as Adult": "Rupees (5)", + "GC Maze Left Chest": "Kokiri Sword", + "GC Maze Right Chest": "Rupees (50)", + "GC Maze Center Chest": "Piece of Heart", + "DMC Volcano Freestanding PoH": "Rupees (20)", + "DMC Wall Freestanding PoH": "Piece of Heart", + "DMC Upper Grotto Chest": "Rupees (5)", + "DMC Great Fairy Reward": "Recovery Heart", + "ZR Open Grotto Chest": "Recovery Heart", + "ZR Frogs in the Rain": "Piece of Heart (Treasure Chest Game)", + "ZR Frogs Ocarina Game": "Piece of Heart", + "ZR Near Open Grotto Freestanding PoH": "Progressive Strength Upgrade", + "ZR Near Domain Freestanding PoH": "Piece of Heart", + "ZD Diving Minigame": "Arrows (5)", + "ZD Chest": "Slingshot", + "ZD King Zora Thawed": "Deku Stick Capacity", + "ZF Great Fairy Reward": "Bombs (20)", + "ZF Iceberg Freestanding PoH": "Deku Nut Capacity", + "ZF Bottom Freestanding PoH": "Rupees (5)", + "LH Underwater Item": "Progressive Strength Upgrade", + "LH Child Fishing": "Arrows (10)", + "LH Adult Fishing": "Arrows (30)", + "LH Lab Dive": "Piece of Heart", + "LH Freestanding PoH": "Rupees (5)", + "LH Sun": "Farores Wind", + "GV Crate Freestanding PoH": "Rupees (5)", + "GV Waterfall Freestanding PoH": "Piece of Heart", + "GV Chest": "Heart Container", + "GF Chest": "Lens of Truth", + "GF HBA 1000 Points": "Heart Container", + "GF HBA 1500 Points": "Recovery Heart", + "Wasteland Chest": "Rupees (200)", + "Colossus Great Fairy Reward": "Rupees (50)", + "Colossus Freestanding PoH": "Piece of Heart", + "OGC Great Fairy Reward": "Deku Stick Capacity", + "Deku Tree Map Chest": "Progressive Hookshot", + "Deku Tree Slingshot Room Side Chest": "Deku Nuts (5)", + "Deku Tree Slingshot Chest": "Arrows (30)", + "Deku Tree Compass Chest": "Piece of Heart", + "Deku Tree Compass Room Side Chest": "Bombs (10)", + "Deku Tree Basement Chest": "Heart Container", + "Deku Tree Queen Gohma Heart": "Heart Container", + "Dodongos Cavern Map Chest": "Rupees (5)", + "Dodongos Cavern Compass Chest": "Bombchus (10)", + "Dodongos Cavern Bomb Flower Platform Chest": "Bombs (5)", + "Dodongos Cavern Bomb Bag Chest": "Arrows (30)", + "Dodongos Cavern End of Bridge Chest": "Nayrus Love", + "Dodongos Cavern Boss Room Chest": "Rupees (20)", + "Dodongos Cavern King Dodongo Heart": "Piece of Heart", + "Jabu Jabus Belly Boomerang Chest": "Goron Tunic", + "Jabu Jabus Belly Map Chest": "Rupees (5)", + "Jabu Jabus Belly Compass Chest": "Heart Container", + "Jabu Jabus Belly Barinade Heart": "Rupees (20)", + "Bottom of the Well Front Left Fake Wall Chest": "Bow", + "Bottom of the Well Front Center Bombable Chest": "Arrows (30)", + "Bottom of the Well Back Left Bombable Chest": "Piece of Heart", + "Bottom of the Well Underwater Left Chest": "Iron Boots", + "Bottom of the Well Freestanding Key": "Small Key (Bottom of the Well)", + "Bottom of the Well Compass Chest": "Arrows (10)", + "Bottom of the Well Center Skulltula Chest": "Bombs (5)", + "Bottom of the Well Right Bottom Fake Wall Chest": "Piece of Heart", + "Bottom of the Well Fire Keese Chest": "Bombs (5)", + "Bottom of the Well Like Like Chest": "Bombchus (10)", + "Bottom of the Well Map Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Underwater Front Chest": "Bombs (5)", + "Bottom of the Well Invisible Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Lens of Truth Chest": "Recovery Heart", + "Forest Temple First Room Chest": "Piece of Heart", + "Forest Temple First Stalfos Chest": "Small Key (Forest Temple)", + "Forest Temple Raised Island Courtyard Chest": "Small Key (Forest Temple)", + "Forest Temple Map Chest": "Small Key (Forest Temple)", + "Forest Temple Well Chest": "Rupees (5)", + "Forest Temple Eye Switch Chest": "Rupees (50)", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Slingshot", + "Forest Temple Red Poe Chest": "Bombs (20)", + "Forest Temple Bow Chest": "Small Key (Forest Temple)", + "Forest Temple Blue Poe Chest": "Boss Key (Forest Temple)", + "Forest Temple Falling Ceiling Room Chest": "Deku Shield", + "Forest Temple Basement Chest": "Bombs (10)", + "Forest Temple Phantom Ganon Heart": "Hylian Shield", + "Fire Temple Near Boss Chest": "Boss Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Piece of Heart", + "Fire Temple Boss Key Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Piece of Heart", + "Fire Temple Boulder Maze Lower Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Side Room Chest": "Progressive Scale", + "Fire Temple Map Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Shortcut Chest": "Recovery Heart", + "Fire Temple Boulder Maze Upper Chest": "Small Key (Fire Temple)", + "Fire Temple Scarecrow Chest": "Small Key (Fire Temple)", + "Fire Temple Compass Chest": "Small Key (Fire Temple)", + "Fire Temple Megaton Hammer Chest": "Arrows (10)", + "Fire Temple Highest Goron Chest": "Zora Tunic", + "Fire Temple Volvagia Heart": "Small Key (Fire Temple)", + "Water Temple Compass Chest": "Arrows (30)", + "Water Temple Map Chest": "Dins Fire", + "Water Temple Cracked Wall Chest": "Small Key (Water Temple)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Boss Key (Water Temple)", + "Water Temple Central Pillar Chest": "Small Key (Water Temple)", + "Water Temple Central Bow Target Chest": "Small Key (Water Temple)", + "Water Temple Longshot Chest": "Small Key (Water Temple)", + "Water Temple River Chest": "Deku Nuts (5)", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Deku Shield", + "Shadow Temple Map Chest": "Small Key (Shadow Temple)", + "Shadow Temple Hover Boots Chest": "Rupees (20)", + "Shadow Temple Compass Chest": "Small Key (Shadow Temple)", + "Shadow Temple Early Silver Rupee Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Invisible Blades Visible Chest": "Rupees (5)", + "Shadow Temple Invisible Blades Invisible Chest": "Deku Shield", + "Shadow Temple Falling Spikes Lower Chest": "Rupees (5)", + "Shadow Temple Falling Spikes Upper Chest": "Small Key (Shadow Temple)", + "Shadow Temple Falling Spikes Switch Chest": "Eyeball Frog", + "Shadow Temple Invisible Spikes Chest": "Arrows (5)", + "Shadow Temple Freestanding Key": "Small Key (Shadow Temple)", + "Shadow Temple Wind Hint Chest": "Rupees (5)", + "Shadow Temple After Wind Enemy Chest": "Rupees (50)", + "Shadow Temple After Wind Hidden Chest": "Deku Nuts (10)", + "Shadow Temple Spike Walls Left Chest": "Small Key (Shadow Temple)", + "Shadow Temple Boss Key Chest": "Rupees (50)", + "Shadow Temple Invisible Floormaster Chest": "Piece of Heart", + "Shadow Temple Bongo Bongo Heart": "Piece of Heart", + "Spirit Temple Child Bridge Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Early Torches Chest": "Progressive Scale", + "Spirit Temple Child Climb North Chest": "Rupees (50)", + "Spirit Temple Child Climb East Chest": "Progressive Hookshot", + "Spirit Temple Map Chest": "Bombs (5)", + "Spirit Temple Sun Block Room Chest": "Progressive Wallet", + "Spirit Temple Silver Gauntlets Chest": "Piece of Heart", + "Spirit Temple Compass Chest": "Small Key (Spirit Temple)", + "Spirit Temple Early Adult Right Chest": "Small Key (Spirit Temple)", + "Spirit Temple First Mirror Left Chest": "Piece of Heart", + "Spirit Temple First Mirror Right Chest": "Biggoron Sword", + "Spirit Temple Statue Room Northeast Chest": "Magic Meter", + "Spirit Temple Statue Room Hand Chest": "Small Key (Spirit Temple)", + "Spirit Temple Near Four Armos Chest": "Rupees (5)", + "Spirit Temple Hallway Right Invisible Chest": "Piece of Heart", + "Spirit Temple Hallway Left Invisible Chest": "Heart Container", + "Spirit Temple Mirror Shield Chest": "Small Key (Spirit Temple)", + "Spirit Temple Boss Key Chest": "Piece of Heart", + "Spirit Temple Topmost Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Twinrova Heart": "Bombs (10)", + "Ice Cavern Map Chest": "Rupees (20)", + "Ice Cavern Compass Chest": "Piece of Heart", + "Ice Cavern Freestanding PoH": "Bombchus (5)", + "Ice Cavern Iron Boots Chest": "Arrows (10)", + "Gerudo Training Ground Lobby Left Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Lobby Right Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Stalfos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Before Heavy Block Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block First Chest": "Deku Stick (1)", + "Gerudo Training Ground Heavy Block Second Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Arrows (10)", + "Gerudo Training Ground Eye Statue Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Near Scarecrow Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hammer Room Clear Chest": "Megaton Hammer", + "Gerudo Training Ground Hammer Room Switch Chest": "Deku Nut Capacity", + "Gerudo Training Ground Freestanding Key": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Right Central Chest": "Progressive Strength Upgrade", + "Gerudo Training Ground Maze Right Side Chest": "Rupees (50)", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Beamos Chest": "Magic Meter", + "Gerudo Training Ground Hidden Ceiling Chest": "Piece of Heart", + "Gerudo Training Ground Maze Path First Chest": "Rupees (200)", + "Gerudo Training Ground Maze Path Second Chest": "Progressive Wallet", + "Gerudo Training Ground Maze Path Third Chest": "Deku Stick (1)", + "Gerudo Training Ground Maze Path Final Chest": "Rupees (200)", + "Ganons Castle Forest Trial Chest": "Rupees (50)", + "Ganons Castle Water Trial Left Chest": "Small Key (Ganons Castle)", + "Ganons Castle Water Trial Right Chest": "Recovery Heart", + "Ganons Castle Shadow Trial Front Chest": "Hylian Shield", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Recovery Heart", + "Ganons Castle Light Trial First Left Chest": "Recovery Heart", + "Ganons Castle Light Trial Second Left Chest": "Recovery Heart", + "Ganons Castle Light Trial Third Left Chest": "Stone of Agony", + "Ganons Castle Light Trial First Right Chest": "Rutos Letter", + "Ganons Castle Light Trial Second Right Chest": "Arrows (5)", + "Ganons Castle Light Trial Third Right Chest": "Bow", + "Ganons Castle Light Trial Invisible Enemies Chest": "Heart Container", + "Ganons Castle Light Trial Lullaby Chest": "Recovery Heart", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Small Key (Ganons Castle)", + "Ganons Castle Spirit Trial Invisible Chest": "Rupees (5)", + "Ganons Tower Boss Key Chest": "Rupees (5)" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-priority-triforce-hunt.json b/tests/plando/plando-goals-priority-triforce-hunt.json new file mode 100644 index 000000000..c7429361e --- /dev/null +++ b/tests/plando/plando-goals-priority-triforce-hunt.json @@ -0,0 +1,527 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "medallions", + "bridge_medallions": 2, + "triforce_hunt": true, + "triforce_goal_per_world": 20, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 3, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "adult" + }, + "randomized_settings": { + "starting_age": "adult" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "active", + "Spirit": "active", + "Shadow": "active", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": {"region": "Kokiri Forest", "from": "KF Sarias House"}, + "Child Spawn -> KF Links House": {"region": "Market", "from": "ToT Entrance"} + }, + "locations": { + "Links Pocket": "Shadow Medallion", + "Queen Gohma": "Goron Ruby", + "King Dodongo": "Spirit Medallion", + "Barinade": "Light Medallion", + "Phantom Ganon": "Fire Medallion", + "Volvagia": "Forest Medallion", + "Morpha": "Water Medallion", + "Bongo Bongo": "Zora Sapphire", + "Twinrova": "Kokiri Emerald", + "Song from Impa": "Zeldas Lullaby", + "Song from Malon": "Requiem of Spirit", + "Song from Saria": "Bolero of Fire", + "Song from Royal Familys Tomb": "Suns Song", + "Song from Ocarina of Time": "Minuet of Forest", + "Song from Windmill": "Song of Storms", + "Sheik in Forest": "Nocturne of Shadow", + "Sheik in Crater": "Prelude of Light", + "Sheik in Ice Cavern": "Sarias Song", + "Sheik at Colossus": "Serenade of Water", + "Sheik in Kakariko": "Song of Time", + "Sheik at Temple": "Eponas Song", + "KF Midos Top Left Chest": "Progressive Strength Upgrade", + "KF Midos Top Right Chest": "Piece of Heart", + "KF Midos Bottom Left Chest": "Goron Tunic", + "KF Midos Bottom Right Chest": "Deku Nut Capacity", + "KF Kokiri Sword Chest": "Piece of Heart", + "KF Storms Grotto Chest": "Rupees (5)", + "LW Ocarina Memory Game": "Deku Nuts (5)", + "LW Target in Woods": "Piece of Heart", + "LW Near Shortcuts Grotto Chest": "Heart Container", + "Deku Theater Skull Mask": "Progressive Strength Upgrade", + "Deku Theater Mask of Truth": "Arrows (30)", + "LW Skull Kid": "Bombchus (10)", + "LW Deku Scrub Near Bridge": {"item": "Bottle", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Piece of Heart", "price": 40}, + "SFM Wolfos Grotto Chest": "Bombs (5)", + "HF Near Market Grotto Chest": "Piece of Heart", + "HF Tektite Grotto Freestanding PoH": "Recovery Heart", + "HF Southeast Grotto Chest": "Slingshot", + "HF Open Grotto Chest": "Piece of Heart", + "HF Deku Scrub Grotto": {"item": "Triforce Piece", "price": 10}, + "Market Shooting Gallery Reward": "Progressive Hookshot", + "Market Bombchu Bowling First Prize": "Triforce Piece", + "Market Bombchu Bowling Second Prize": "Arrows (5)", + "Market Lost Dog": "Heart Container", + "Market Treasure Chest Game Reward": "Bombs (5)", + "Market 10 Big Poes": "Arrows (10)", + "ToT Light Arrows Cutscene": "Arrows (5)", + "HC Great Fairy Reward": "Rupees (5)", + "LLR Talons Chickens": "Rupees (200)", + "LLR Freestanding PoH": "Rupees (5)", + "Kak Anju as Child": "Triforce Piece", + "Kak Anju as Adult": "Triforce Piece", + "Kak Impas House Freestanding PoH": "Bombchus (10)", + "Kak Windmill Freestanding PoH": "Piece of Heart", + "Kak Man on Roof": "Piece of Heart", + "Kak Open Grotto Chest": "Piece of Heart", + "Kak Redead Grotto Chest": "Recovery Heart", + "Kak Shooting Gallery Reward": "Deku Nut Capacity", + "Kak 10 Gold Skulltula Reward": "Arrows (30)", + "Kak 20 Gold Skulltula Reward": "Rupees (50)", + "Kak 30 Gold Skulltula Reward": "Triforce Piece", + "Kak 40 Gold Skulltula Reward": "Piece of Heart", + "Kak 50 Gold Skulltula Reward": "Bombchus (20)", + "Graveyard Shield Grave Chest": "Rupees (200)", + "Graveyard Heart Piece Grave Chest": "Triforce Piece", + "Graveyard Royal Familys Tomb Chest": "Triforce Piece", + "Graveyard Freestanding PoH": "Claim Check", + "Graveyard Dampe Gravedigging Tour": "Arrows (30)", + "Graveyard Hookshot Chest": "Recovery Heart", + "Graveyard Dampe Race Freestanding PoH": "Bottle with Bugs", + "DMT Freestanding PoH": "Rupees (50)", + "DMT Chest": "Hover Boots", + "DMT Storms Grotto Chest": "Heart Container", + "DMT Great Fairy Reward": "Iron Boots", + "DMT Biggoron": "Rupees (5)", + "GC Darunias Joy": "Piece of Heart", + "GC Pot Freestanding PoH": "Rupees (5)", + "GC Rolling Goron as Child": "Hylian Shield", + "GC Rolling Goron as Adult": "Piece of Heart", + "GC Maze Left Chest": "Bombs (5)", + "GC Maze Right Chest": "Piece of Heart", + "GC Maze Center Chest": "Rupees (50)", + "DMC Volcano Freestanding PoH": "Triforce Piece", + "DMC Wall Freestanding PoH": "Light Arrows", + "DMC Upper Grotto Chest": "Triforce Piece", + "DMC Great Fairy Reward": "Piece of Heart", + "ZR Open Grotto Chest": "Piece of Heart", + "ZR Frogs in the Rain": "Rupees (5)", + "ZR Frogs Ocarina Game": "Piece of Heart", + "ZR Near Open Grotto Freestanding PoH": "Triforce Piece", + "ZR Near Domain Freestanding PoH": "Kokiri Sword", + "ZD Diving Minigame": "Progressive Hookshot", + "ZD Chest": "Rupees (50)", + "ZD King Zora Thawed": "Triforce Piece", + "ZF Great Fairy Reward": "Triforce Piece", + "ZF Iceberg Freestanding PoH": "Piece of Heart", + "ZF Bottom Freestanding PoH": "Nayrus Love", + "LH Underwater Item": "Piece of Heart", + "LH Child Fishing": "Triforce Piece", + "LH Adult Fishing": "Piece of Heart", + "LH Lab Dive": "Zora Tunic", + "LH Freestanding PoH": "Rutos Letter", + "LH Sun": "Double Defense", + "GV Crate Freestanding PoH": "Mirror Shield", + "GV Waterfall Freestanding PoH": "Lens of Truth", + "GV Chest": "Hylian Shield", + "GF Chest": "Triforce Piece", + "GF HBA 1000 Points": "Arrows (10)", + "GF HBA 1500 Points": "Slingshot", + "Wasteland Chest": "Deku Seeds (30)", + "Colossus Great Fairy Reward": "Arrows (10)", + "Colossus Freestanding PoH": "Piece of Heart", + "OGC Great Fairy Reward": "Recovery Heart", + "Deku Tree Map Chest": "Piece of Heart", + "Deku Tree Slingshot Room Side Chest": "Rupees (5)", + "Deku Tree Slingshot Chest": "Piece of Heart (Treasure Chest Game)", + "Deku Tree Compass Chest": "Rupees (20)", + "Deku Tree Compass Room Side Chest": "Bomb Bag", + "Deku Tree Basement Chest": "Triforce Piece", + "Deku Tree Queen Gohma Heart": "Triforce Piece", + "Dodongos Cavern Map Chest": "Heart Container", + "Dodongos Cavern Compass Chest": "Rupees (200)", + "Dodongos Cavern Bomb Flower Platform Chest": "Rupees (200)", + "Dodongos Cavern Bomb Bag Chest": "Rupees (5)", + "Dodongos Cavern End of Bridge Chest": "Bow", + "Dodongos Cavern Boss Room Chest": "Triforce Piece", + "Dodongos Cavern King Dodongo Heart": "Rupees (5)", + "Jabu Jabus Belly Boomerang Chest": "Rupees (5)", + "Jabu Jabus Belly Map Chest": "Triforce Piece", + "Jabu Jabus Belly Compass Chest": "Triforce Piece", + "Jabu Jabus Belly Barinade Heart": "Piece of Heart", + "Bottom of the Well Front Left Fake Wall Chest": "Bombs (5)", + "Bottom of the Well Front Center Bombable Chest": "Progressive Strength Upgrade", + "Bottom of the Well Back Left Bombable Chest": "Bow", + "Bottom of the Well Underwater Left Chest": "Fire Arrows", + "Bottom of the Well Freestanding Key": "Arrows (5)", + "Bottom of the Well Compass Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Center Skulltula Chest": "Farores Wind", + "Bottom of the Well Right Bottom Fake Wall Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Fire Keese Chest": "Rupees (5)", + "Bottom of the Well Like Like Chest": "Recovery Heart", + "Bottom of the Well Map Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Underwater Front Chest": "Recovery Heart", + "Bottom of the Well Invisible Chest": "Bombchus (5)", + "Bottom of the Well Lens of Truth Chest": "Magic Meter", + "Forest Temple First Room Chest": "Small Key (Forest Temple)", + "Forest Temple First Stalfos Chest": "Boss Key (Forest Temple)", + "Forest Temple Raised Island Courtyard Chest": "Boomerang", + "Forest Temple Map Chest": "Recovery Heart", + "Forest Temple Well Chest": "Piece of Heart", + "Forest Temple Eye Switch Chest": "Rupees (5)", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Small Key (Forest Temple)", + "Forest Temple Red Poe Chest": "Piece of Heart", + "Forest Temple Bow Chest": "Small Key (Forest Temple)", + "Forest Temple Blue Poe Chest": "Small Key (Forest Temple)", + "Forest Temple Falling Ceiling Room Chest": "Triforce Piece", + "Forest Temple Basement Chest": "Ice Arrows", + "Forest Temple Phantom Ganon Heart": "Stone of Agony", + "Fire Temple Near Boss Chest": "Small Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Rupee (1)", + "Fire Temple Boss Key Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Heart Container", + "Fire Temple Boulder Maze Lower Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Side Room Chest": "Small Key (Fire Temple)", + "Fire Temple Map Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Shortcut Chest": "Boss Key (Fire Temple)", + "Fire Temple Boulder Maze Upper Chest": "Piece of Heart", + "Fire Temple Scarecrow Chest": "Progressive Wallet", + "Fire Temple Compass Chest": "Small Key (Fire Temple)", + "Fire Temple Megaton Hammer Chest": "Small Key (Fire Temple)", + "Fire Temple Highest Goron Chest": "Triforce Piece", + "Fire Temple Volvagia Heart": "Arrows (30)", + "Water Temple Compass Chest": "Rupees (20)", + "Water Temple Map Chest": "Small Key (Water Temple)", + "Water Temple Cracked Wall Chest": "Small Key (Water Temple)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Boss Key (Water Temple)", + "Water Temple Central Pillar Chest": "Small Key (Water Temple)", + "Water Temple Central Bow Target Chest": "Small Key (Water Temple)", + "Water Temple Longshot Chest": "Rupees (20)", + "Water Temple River Chest": "Arrows (10)", + "Water Temple Dragon Chest": "Heart Container", + "Water Temple Morpha Heart": "Small Key (Water Temple)", + "Shadow Temple Map Chest": "Small Key (Shadow Temple)", + "Shadow Temple Hover Boots Chest": "Small Key (Shadow Temple)", + "Shadow Temple Compass Chest": "Bombs (20)", + "Shadow Temple Early Silver Rupee Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Blades Visible Chest": "Deku Shield", + "Shadow Temple Invisible Blades Invisible Chest": "Triforce Piece", + "Shadow Temple Falling Spikes Lower Chest": "Small Key (Shadow Temple)", + "Shadow Temple Falling Spikes Upper Chest": "Slingshot", + "Shadow Temple Falling Spikes Switch Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Invisible Spikes Chest": "Rupees (5)", + "Shadow Temple Freestanding Key": "Heart Container", + "Shadow Temple Wind Hint Chest": "Rupees (5)", + "Shadow Temple After Wind Enemy Chest": "Biggoron Sword", + "Shadow Temple After Wind Hidden Chest": "Piece of Heart", + "Shadow Temple Spike Walls Left Chest": "Small Key (Shadow Temple)", + "Shadow Temple Boss Key Chest": "Piece of Heart", + "Shadow Temple Invisible Floormaster Chest": "Rupees (20)", + "Shadow Temple Bongo Bongo Heart": "Megaton Hammer", + "Spirit Temple Child Bridge Chest": "Triforce Piece", + "Spirit Temple Child Early Torches Chest": "Bombs (20)", + "Spirit Temple Child Climb North Chest": "Progressive Wallet", + "Spirit Temple Child Climb East Chest": "Small Key (Spirit Temple)", + "Spirit Temple Map Chest": "Small Key (Spirit Temple)", + "Spirit Temple Sun Block Room Chest": "Recovery Heart", + "Spirit Temple Silver Gauntlets Chest": "Rupees (200)", + "Spirit Temple Compass Chest": "Small Key (Spirit Temple)", + "Spirit Temple Early Adult Right Chest": "Progressive Scale", + "Spirit Temple First Mirror Left Chest": "Small Key (Spirit Temple)", + "Spirit Temple First Mirror Right Chest": "Piece of Heart", + "Spirit Temple Statue Room Northeast Chest": "Bottle with Milk", + "Spirit Temple Statue Room Hand Chest": "Triforce Piece", + "Spirit Temple Near Four Armos Chest": "Piece of Heart", + "Spirit Temple Hallway Right Invisible Chest": "Rupees (20)", + "Spirit Temple Hallway Left Invisible Chest": "Small Key (Spirit Temple)", + "Spirit Temple Mirror Shield Chest": "Bow", + "Spirit Temple Boss Key Chest": "Piece of Heart", + "Spirit Temple Topmost Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Twinrova Heart": "Triforce Piece", + "Ice Cavern Map Chest": "Bomb Bag", + "Ice Cavern Compass Chest": "Rupees (200)", + "Ice Cavern Freestanding PoH": "Piece of Heart", + "Ice Cavern Iron Boots Chest": "Deku Stick Capacity", + "Gerudo Training Ground Lobby Left Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Lobby Right Chest": "Triforce Piece", + "Gerudo Training Ground Stalfos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Before Heavy Block Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block First Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block Second Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block Third Chest": "Rupees (5)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Eye Statue Chest": "Rupees (20)", + "Gerudo Training Ground Near Scarecrow Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hammer Room Clear Chest": "Rupees (5)", + "Gerudo Training Ground Hammer Room Switch Chest": "Heart Container", + "Gerudo Training Ground Freestanding Key": "Bombchus (10)", + "Gerudo Training Ground Maze Right Central Chest": "Piece of Heart", + "Gerudo Training Ground Maze Right Side Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Beamos Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hidden Ceiling Chest": "Deku Shield", + "Gerudo Training Ground Maze Path First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Second Chest": "Deku Stick Capacity", + "Gerudo Training Ground Maze Path Third Chest": "Rupees (5)", + "Gerudo Training Ground Maze Path Final Chest": "Triforce Piece", + "Ganons Castle Forest Trial Chest": "Arrows (10)", + "Ganons Castle Water Trial Left Chest": "Deku Nuts (5)", + "Ganons Castle Water Trial Right Chest": "Small Key (Ganons Castle)", + "Ganons Castle Shadow Trial Front Chest": "Deku Shield", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Bomb Bag", + "Ganons Castle Light Trial First Left Chest": "Rupees (50)", + "Ganons Castle Light Trial Second Left Chest": "Magic Meter", + "Ganons Castle Light Trial Third Left Chest": "Dins Fire", + "Ganons Castle Light Trial First Right Chest": "Triforce Piece", + "Ganons Castle Light Trial Second Right Chest": "Deku Nuts (10)", + "Ganons Castle Light Trial Third Right Chest": "Piece of Heart", + "Ganons Castle Light Trial Invisible Enemies Chest": "Triforce Piece", + "Ganons Castle Light Trial Lullaby Chest": "Progressive Scale", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Small Key (Ganons Castle)", + "Ganons Castle Spirit Trial Invisible Chest": "Deku Shield", + "Ganons Tower Boss Key Chest": "Triforce Piece" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-starting-items-fallback.json b/tests/plando/plando-goals-starting-items-fallback.json new file mode 100644 index 000000000..1346acad1 --- /dev/null +++ b/tests/plando/plando-goals-starting-items-fallback.json @@ -0,0 +1,528 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "dungeons", + "bridge_rewards": 1, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 0, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "dungeons", + "ganon_bosskey_rewards": 1, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "adult" + }, + "randomized_settings": { + "starting_age": "adult" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "inactive", + "Light": "inactive" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": {"region": "Kak Backyard", "from": "Kak Potion Shop Back"}, + "Child Spawn -> KF Links House": "LLR Talons House" + }, + "locations": { + "Links Pocket": "Forest Medallion", + "Queen Gohma": "Water Medallion", + "King Dodongo": "Kokiri Emerald", + "Barinade": "Zora Sapphire", + "Phantom Ganon": "Shadow Medallion", + "Volvagia": "Fire Medallion", + "Morpha": "Spirit Medallion", + "Bongo Bongo": "Goron Ruby", + "Twinrova": "Light Medallion", + "Song from Impa": "Sarias Song", + "Song from Malon": "Nocturne of Shadow", + "Song from Saria": "Song of Storms", + "Song from Royal Familys Tomb": "Prelude of Light", + "Song from Ocarina of Time": "Song of Time", + "Song from Windmill": "Serenade of Water", + "Sheik in Forest": "Zeldas Lullaby", + "Sheik in Crater": "Minuet of Forest", + "Sheik in Ice Cavern": "Eponas Song", + "Sheik at Colossus": "Requiem of Spirit", + "Sheik in Kakariko": "Suns Song", + "Sheik at Temple": "Bolero of Fire", + "KF Midos Top Left Chest": "Piece of Heart", + "KF Midos Top Right Chest": "Piece of Heart", + "KF Midos Bottom Left Chest": "Deku Stick Capacity", + "KF Midos Bottom Right Chest": "Bombchus (10)", + "KF Kokiri Sword Chest": "Recovery Heart", + "KF Storms Grotto Chest": "Megaton Hammer", + "LW Ocarina Memory Game": "Bombs (10)", + "LW Target in Woods": "Deku Nuts (5)", + "LW Near Shortcuts Grotto Chest": "Piece of Heart", + "Deku Theater Skull Mask": "Progressive Strength Upgrade", + "Deku Theater Mask of Truth": "Recovery Heart", + "LW Skull Kid": "Bombs (10)", + "LW Deku Scrub Near Bridge": {"item": "Heart Container", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Deku Nuts (10)", "price": 40}, + "SFM Wolfos Grotto Chest": "Piece of Heart", + "HF Near Market Grotto Chest": "Arrows (10)", + "HF Tektite Grotto Freestanding PoH": "Deku Nuts (5)", + "HF Southeast Grotto Chest": "Mirror Shield", + "HF Open Grotto Chest": "Bombs (5)", + "HF Deku Scrub Grotto": {"item": "Bombs (5)", "price": 10}, + "Market Shooting Gallery Reward": "Piece of Heart", + "Market Bombchu Bowling First Prize": "Rupee (1)", + "Market Bombchu Bowling Second Prize": "Goron Tunic", + "Market Lost Dog": "Bombs (5)", + "Market Treasure Chest Game Reward": "Bombchus (10)", + "Market 10 Big Poes": "Rupees (50)", + "ToT Light Arrows Cutscene": "Slingshot", + "HC Great Fairy Reward": "Recovery Heart", + "LLR Talons Chickens": "Rupees (5)", + "LLR Freestanding PoH": "Piece of Heart", + "Kak Anju as Child": "Bombchus (20)", + "Kak Anju as Adult": "Recovery Heart", + "Kak Impas House Freestanding PoH": "Recovery Heart", + "Kak Windmill Freestanding PoH": "Magic Meter", + "Kak Man on Roof": "Piece of Heart", + "Kak Open Grotto Chest": "Arrows (10)", + "Kak Redead Grotto Chest": "Rupees (200)", + "Kak Shooting Gallery Reward": "Dins Fire", + "Kak 10 Gold Skulltula Reward": "Arrows (5)", + "Kak 20 Gold Skulltula Reward": "Deku Seeds (30)", + "Kak 30 Gold Skulltula Reward": "Piece of Heart", + "Kak 40 Gold Skulltula Reward": "Progressive Strength Upgrade", + "Kak 50 Gold Skulltula Reward": "Piece of Heart", + "Graveyard Shield Grave Chest": "Rupees (5)", + "Graveyard Heart Piece Grave Chest": "Light Arrows", + "Graveyard Royal Familys Tomb Chest": "Recovery Heart", + "Graveyard Freestanding PoH": "Progressive Wallet", + "Graveyard Dampe Gravedigging Tour": "Arrows (5)", + "Graveyard Hookshot Chest": "Rupees (5)", + "Graveyard Dampe Race Freestanding PoH": "Iron Boots", + "DMT Freestanding PoH": "Rupees (5)", + "DMT Chest": "Progressive Scale", + "DMT Storms Grotto Chest": "Bombchus (10)", + "DMT Great Fairy Reward": "Rupees (5)", + "DMT Biggoron": "Arrows (10)", + "GC Darunias Joy": "Piece of Heart", + "GC Pot Freestanding PoH": "Piece of Heart", + "GC Rolling Goron as Child": "Bow", + "GC Rolling Goron as Adult": "Piece of Heart", + "GC Maze Left Chest": "Arrows (30)", + "GC Maze Right Chest": "Rupees (5)", + "GC Maze Center Chest": "Deku Seeds (30)", + "DMC Volcano Freestanding PoH": "Piece of Heart", + "DMC Wall Freestanding PoH": "Boomerang", + "DMC Upper Grotto Chest": "Deku Stick (1)", + "DMC Great Fairy Reward": "Zora Tunic", + "ZR Open Grotto Chest": "Deku Shield", + "ZR Frogs in the Rain": "Magic Meter", + "ZR Frogs Ocarina Game": "Fire Arrows", + "ZR Near Open Grotto Freestanding PoH": "Deku Stick (1)", + "ZR Near Domain Freestanding PoH": "Piece of Heart", + "ZD Diving Minigame": "Heart Container", + "ZD Chest": "Piece of Heart", + "ZD King Zora Thawed": "Lens of Truth", + "ZF Great Fairy Reward": "Biggoron Sword", + "ZF Iceberg Freestanding PoH": "Bottle with Bugs", + "ZF Bottom Freestanding PoH": "Rupees (20)", + "LH Underwater Item": "Rupees (5)", + "LH Child Fishing": "Piece of Heart", + "LH Adult Fishing": "Rupees (20)", + "LH Lab Dive": "Rupees (20)", + "LH Freestanding PoH": "Deku Stick Capacity", + "LH Sun": "Progressive Strength Upgrade", + "GV Crate Freestanding PoH": "Progressive Hookshot", + "GV Waterfall Freestanding PoH": "Deku Nuts (5)", + "GV Chest": "Rupees (50)", + "GF Chest": "Deku Nut Capacity", + "GF HBA 1000 Points": "Bottle", + "GF HBA 1500 Points": "Deku Nuts (5)", + "Wasteland Chest": "Bombs (5)", + "Colossus Great Fairy Reward": "Piece of Heart", + "Colossus Freestanding PoH": "Rupees (200)", + "OGC Great Fairy Reward": "Recovery Heart", + "Deku Tree Map Chest": "Deku Nuts (5)", + "Deku Tree Slingshot Room Side Chest": "Arrows (30)", + "Deku Tree Slingshot Chest": "Heart Container", + "Deku Tree Compass Chest": "Recovery Heart", + "Deku Tree Compass Room Side Chest": "Bombs (20)", + "Deku Tree Basement Chest": "Deku Shield", + "Deku Tree Queen Gohma Heart": "Piece of Heart", + "Dodongos Cavern Map Chest": "Piece of Heart", + "Dodongos Cavern Compass Chest": "Rupees (5)", + "Dodongos Cavern Bomb Flower Platform Chest": "Arrows (5)", + "Dodongos Cavern Bomb Bag Chest": "Deku Nut Capacity", + "Dodongos Cavern End of Bridge Chest": "Heart Container", + "Dodongos Cavern Boss Room Chest": "Rupees (5)", + "Dodongos Cavern King Dodongo Heart": "Rupees (50)", + "Jabu Jabus Belly Boomerang Chest": "Arrows (30)", + "Jabu Jabus Belly Map Chest": "Piece of Heart", + "Jabu Jabus Belly Compass Chest": "Recovery Heart", + "Jabu Jabus Belly Barinade Heart": "Rupees (50)", + "Bottom of the Well Front Left Fake Wall Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Front Center Bombable Chest": "Piece of Heart", + "Bottom of the Well Back Left Bombable Chest": "Piece of Heart", + "Bottom of the Well Underwater Left Chest": "Bombs (5)", + "Bottom of the Well Freestanding Key": "Small Key (Bottom of the Well)", + "Bottom of the Well Compass Chest": "Hylian Shield", + "Bottom of the Well Center Skulltula Chest": "Rupees (200)", + "Bottom of the Well Right Bottom Fake Wall Chest": "Rupees (50)", + "Bottom of the Well Fire Keese Chest": "Nayrus Love", + "Bottom of the Well Like Like Chest": "Piece of Heart", + "Bottom of the Well Map Chest": "Arrows (30)", + "Bottom of the Well Underwater Front Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Invisible Chest": "Piece of Heart", + "Bottom of the Well Lens of Truth Chest": "Arrows (10)", + "Forest Temple First Room Chest": "Small Key (Forest Temple)", + "Forest Temple First Stalfos Chest": "Kokiri Sword", + "Forest Temple Raised Island Courtyard Chest": "Small Key (Forest Temple)", + "Forest Temple Map Chest": "Arrows (10)", + "Forest Temple Well Chest": "Small Key (Forest Temple)", + "Forest Temple Eye Switch Chest": "Small Key (Forest Temple)", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Boss Key (Forest Temple)", + "Forest Temple Red Poe Chest": "Piece of Heart", + "Forest Temple Bow Chest": "Stone of Agony", + "Forest Temple Blue Poe Chest": "Piece of Heart", + "Forest Temple Falling Ceiling Room Chest": "Bombs (5)", + "Forest Temple Basement Chest": "Bomb Bag", + "Forest Temple Phantom Ganon Heart": "Arrows (10)", + "Fire Temple Near Boss Chest": "Small Key (Fire Temple)", + "Fire Temple Flare Dancer Chest": "Small Key (Fire Temple)", + "Fire Temple Boss Key Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Heart Container", + "Fire Temple Boulder Maze Lower Chest": "Arrows (30)", + "Fire Temple Boulder Maze Side Room Chest": "Small Key (Fire Temple)", + "Fire Temple Map Chest": "Heart Container", + "Fire Temple Boulder Maze Shortcut Chest": "Boss Key (Fire Temple)", + "Fire Temple Boulder Maze Upper Chest": "Small Key (Fire Temple)", + "Fire Temple Scarecrow Chest": "Small Key (Fire Temple)", + "Fire Temple Compass Chest": "Piece of Heart", + "Fire Temple Megaton Hammer Chest": "Arrows (30)", + "Fire Temple Highest Goron Chest": "Arrows (5)", + "Fire Temple Volvagia Heart": "Small Key (Fire Temple)", + "Water Temple Compass Chest": "Small Key (Water Temple)", + "Water Temple Map Chest": "Boss Key (Water Temple)", + "Water Temple Cracked Wall Chest": "Bomb Bag", + "Water Temple Torches Chest": "Rutos Letter", + "Water Temple Boss Key Chest": "Small Key (Water Temple)", + "Water Temple Central Pillar Chest": "Small Key (Water Temple)", + "Water Temple Central Bow Target Chest": "Small Key (Water Temple)", + "Water Temple Longshot Chest": "Piece of Heart", + "Water Temple River Chest": "Slingshot", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Small Key (Water Temple)", + "Shadow Temple Map Chest": "Rupees (50)", + "Shadow Temple Hover Boots Chest": "Small Key (Shadow Temple)", + "Shadow Temple Compass Chest": "Piece of Heart", + "Shadow Temple Early Silver Rupee Chest": "Progressive Scale", + "Shadow Temple Invisible Blades Visible Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Blades Invisible Chest": "Bombs (20)", + "Shadow Temple Falling Spikes Lower Chest": "Slingshot", + "Shadow Temple Falling Spikes Upper Chest": "Rupees (5)", + "Shadow Temple Falling Spikes Switch Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Spikes Chest": "Small Key (Shadow Temple)", + "Shadow Temple Freestanding Key": "Boss Key (Shadow Temple)", + "Shadow Temple Wind Hint Chest": "Rupees (20)", + "Shadow Temple After Wind Enemy Chest": "Rupees (200)", + "Shadow Temple After Wind Hidden Chest": "Rupees (20)", + "Shadow Temple Spike Walls Left Chest": "Heart Container", + "Shadow Temple Boss Key Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Floormaster Chest": "Rupees (5)", + "Shadow Temple Bongo Bongo Heart": "Rupees (5)", + "Spirit Temple Child Bridge Chest": "Rupees (200)", + "Spirit Temple Child Early Torches Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Climb North Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Climb East Chest": "Small Key (Spirit Temple)", + "Spirit Temple Map Chest": "Deku Shield", + "Spirit Temple Sun Block Room Chest": "Rupees (5)", + "Spirit Temple Silver Gauntlets Chest": "Farores Wind", + "Spirit Temple Compass Chest": "Progressive Hookshot", + "Spirit Temple Early Adult Right Chest": "Boss Key (Spirit Temple)", + "Spirit Temple First Mirror Left Chest": "Small Key (Spirit Temple)", + "Spirit Temple First Mirror Right Chest": "Rupees (5)", + "Spirit Temple Statue Room Northeast Chest": "Heart Container", + "Spirit Temple Statue Room Hand Chest": "Rupees (50)", + "Spirit Temple Near Four Armos Chest": "Piece of Heart (Treasure Chest Game)", + "Spirit Temple Hallway Right Invisible Chest": "Progressive Wallet", + "Spirit Temple Hallway Left Invisible Chest": "Small Key (Spirit Temple)", + "Spirit Temple Mirror Shield Chest": "Ice Arrows", + "Spirit Temple Boss Key Chest": "Hylian Shield", + "Spirit Temple Topmost Chest": "Piece of Heart", + "Spirit Temple Twinrova Heart": "Deku Shield", + "Ice Cavern Map Chest": "Rupees (5)", + "Ice Cavern Compass Chest": "Rupees (20)", + "Ice Cavern Freestanding PoH": "Deku Seeds (30)", + "Ice Cavern Iron Boots Chest": "Bombs (10)", + "Gerudo Training Ground Lobby Left Chest": "Piece of Heart", + "Gerudo Training Ground Lobby Right Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Stalfos Chest": "Rupees (5)", + "Gerudo Training Ground Before Heavy Block Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block First Chest": "Piece of Heart", + "Gerudo Training Ground Heavy Block Second Chest": "Rupees (5)", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Bombs (5)", + "Gerudo Training Ground Eye Statue Chest": "Rupees (200)", + "Gerudo Training Ground Near Scarecrow Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hammer Room Clear Chest": "Rupees (20)", + "Gerudo Training Ground Hammer Room Switch Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Freestanding Key": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Right Central Chest": "Bomb Bag", + "Gerudo Training Ground Maze Right Side Chest": "Recovery Heart", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Claim Check", + "Gerudo Training Ground Beamos Chest": "Piece of Heart", + "Gerudo Training Ground Hidden Ceiling Chest": "Bombchus (5)", + "Gerudo Training Ground Maze Path First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Second Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Final Chest": "Arrows (5)", + "Ganons Castle Forest Trial Chest": "Bow", + "Ganons Castle Water Trial Left Chest": "Small Key (Ganons Castle)", + "Ganons Castle Water Trial Right Chest": "Hover Boots", + "Ganons Castle Shadow Trial Front Chest": "Double Defense", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Small Key (Ganons Castle)", + "Ganons Castle Light Trial First Left Chest": "Recovery Heart", + "Ganons Castle Light Trial Second Left Chest": "Rupees (5)", + "Ganons Castle Light Trial Third Left Chest": "Rupees (5)", + "Ganons Castle Light Trial First Right Chest": "Piece of Heart", + "Ganons Castle Light Trial Second Right Chest": "Rupees (5)", + "Ganons Castle Light Trial Third Right Chest": "Bow", + "Ganons Castle Light Trial Invisible Enemies Chest": "Piece of Heart", + "Ganons Castle Light Trial Lullaby Chest": "Bottle with Poe", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Rupees (5)", + "Ganons Castle Spirit Trial Invisible Chest": "Arrows (10)", + "Ganons Tower Boss Key Chest": "Rupees (20)" + } +} \ No newline at end of file diff --git a/tests/plando/plando-goals-starting-items-trials.json b/tests/plando/plando-goals-starting-items-trials.json new file mode 100644 index 000000000..2c2c698d4 --- /dev/null +++ b/tests/plando/plando-goals-starting-items-trials.json @@ -0,0 +1,528 @@ +{ + ":version": "6.0.108 f.LUM", + "settings": { + "world_count": 1, + "create_spoiler": true, + "randomize_settings": false, + "open_forest": "closed_deku", + "open_kakariko": "open", + "open_door_of_time": true, + "zora_fountain": "closed", + "gerudo_fortress": "fast", + "bridge": "dungeons", + "bridge_rewards": 1, + "triforce_hunt": false, + "logic_rules": "glitchless", + "reachable_locations": "all", + "bombchus_in_logic": false, + "one_item_per_dungeon": false, + "trials_random": false, + "trials": 1, + "skip_child_zelda": true, + "no_escape_sequence": true, + "no_guard_stealth": true, + "no_epona_race": true, + "skip_some_minigame_phases": true, + "useful_cutscenes": false, + "complete_mask_quest": false, + "fast_chests": true, + "logic_no_night_tokens_without_suns_song": false, + "free_scarecrow": false, + "fast_bunny_hood": true, + "start_with_rupees": false, + "start_with_consumables": true, + "starting_hearts": 3, + "chicken_count_random": false, + "chicken_count": 7, + "big_poe_count_random": false, + "big_poe_count": 1, + "shuffle_kokiri_sword": true, + "shuffle_ocarinas": false, + "shuffle_gerudo_card": false, + "shuffle_song_items": "song", + "shuffle_cows": false, + "shuffle_beans": false, + "shuffle_medigoron_carpet_salesman": false, + "shuffle_interior_entrances": "off", + "shuffle_grotto_entrances": false, + "shuffle_dungeon_entrances": false, + "shuffle_overworld_entrances": false, + "owl_drops": false, + "warp_songs": false, + "spawn_positions": true, + "shuffle_scrubs": "off", + "shopsanity": "off", + "tokensanity": "off", + "shuffle_mapcompass": "startwith", + "shuffle_smallkeys": "dungeon", + "shuffle_hideoutkeys": "vanilla", + "shuffle_bosskeys": "dungeon", + "shuffle_ganon_bosskey": "dungeons", + "ganon_bosskey_rewards": 1, + "lacs_condition": "vanilla", + "enhance_map_compass": false, + "mq_dungeons_random": false, + "mq_dungeons": 0, + "disabled_locations": [ + "Deku Theater Mask of Truth" + ], + "allowed_tricks": [ + "logic_fewer_tunic_requirements", + "logic_grottos_without_agony", + "logic_child_deadhand", + "logic_man_on_roof", + "logic_dc_jump", + "logic_rusted_switches", + "logic_windmill_poh", + "logic_crater_bean_poh_with_hovers", + "logic_forest_vines", + "logic_lens_botw", + "logic_lens_castle", + "logic_lens_gtg", + "logic_lens_shadow", + "logic_lens_shadow_back", + "logic_lens_spirit" + ], + "logic_earliest_adult_trade": "prescription", + "logic_latest_adult_trade": "claim_check", + "starting_equipment": [], + "starting_items": [], + "starting_songs": [], + "ocarina_songs": false, + "correct_chest_sizes": false, + "clearer_hints": true, + "no_collectible_hearts": false, + "hints": "always", + "item_hints": [], + "hint_dist_user": { + "name": "s4_goals", + "gui_name": "S4 (Goals)", + "description": "Tournament hints used for OoTR Season 4. Gossip stones in grottos are disabled. 4 Goal, 2 Barren, remainder filled with Sometimes. Always, Goal, and Barren hints duplicated.", + "add_locations": [], + "remove_locations": [], + "add_items": [], + "remove_items": [ + { + "types": [ + "woth" + ], + "item": "Zeldas Lullaby" + } + ], + "dungeons_woth_limit": 2, + "dungeons_barren_limit": 1, + "named_items_required": true, + "use_default_goals": true, + "distribution": { + "trial": { + "order": 1, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "always": { + "order": 2, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "woth": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 2 + }, + "goal": { + "order": 3, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "barren": { + "order": 4, + "weight": 0.0, + "fixed": 2, + "copies": 2 + }, + "entrance": { + "order": 5, + "weight": 0.0, + "fixed": 4, + "copies": 1 + }, + "sometimes": { + "order": 6, + "weight": 0.0, + "fixed": 99, + "copies": 1 + }, + "random": { + "order": 7, + "weight": 9.0, + "fixed": 0, + "copies": 1 + }, + "item": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "song": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "overworld": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "dungeon": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "junk": { + "order": 0, + "weight": 0.0, + "fixed": 0, + "copies": 1 + }, + "named-item": { + "order": 8, + "weight": 0.0, + "fixed": 0, + "copies": 1 + } + }, + "groups": [], + "disabled": [ + "HC (Storms Grotto)", + "HF (Cow Grotto)", + "HF (Near Market Grotto)", + "HF (Southeast Grotto)", + "HF (Open Grotto)", + "Kak (Open Grotto)", + "ZR (Open Grotto)", + "KF (Storms Grotto)", + "LW (Near Shortcuts Grotto)", + "DMT (Storms Grotto)", + "DMC (Upper Grotto)" + ] + }, + "text_shuffle": "none", + "misc_hints": true, + "ice_trap_appearance": "junk_only", + "junk_ice_traps": "off", + "item_pool_value": "balanced", + "damage_multiplier": "normal", + "starting_tod": "default", + "starting_age": "child" + }, + "randomized_settings": { + "starting_age": "child" + }, + "starting_items": { + "Deku Nuts": 99, + "Deku Sticks": 99 + }, + "dungeons": { + "Deku Tree": "vanilla", + "Dodongos Cavern": "vanilla", + "Jabu Jabus Belly": "vanilla", + "Bottom of the Well": "vanilla", + "Ice Cavern": "vanilla", + "Gerudo Training Ground": "vanilla", + "Forest Temple": "vanilla", + "Fire Temple": "vanilla", + "Water Temple": "vanilla", + "Spirit Temple": "vanilla", + "Shadow Temple": "vanilla", + "Ganons Castle": "vanilla" + }, + "trials": { + "Forest": "inactive", + "Fire": "inactive", + "Water": "inactive", + "Spirit": "inactive", + "Shadow": "inactive", + "Light": "active" + }, + "songs": {}, + "entrances": { + "Adult Spawn -> Temple of Time": {"region": "GC Woods Warp", "from": "Lost Woods"}, + "Child Spawn -> KF Links House": {"region": "Gerudo Fortress", "from": "GV Fortress Side"} + }, + "locations": { + "Links Pocket": "Water Medallion", + "Queen Gohma": "Goron Ruby", + "King Dodongo": "Light Medallion", + "Barinade": "Spirit Medallion", + "Phantom Ganon": "Forest Medallion", + "Volvagia": "Shadow Medallion", + "Morpha": "Fire Medallion", + "Bongo Bongo": "Kokiri Emerald", + "Twinrova": "Zora Sapphire", + "Song from Impa": "Suns Song", + "Song from Malon": "Sarias Song", + "Song from Saria": "Zeldas Lullaby", + "Song from Royal Familys Tomb": "Minuet of Forest", + "Song from Ocarina of Time": "Serenade of Water", + "Song from Windmill": "Nocturne of Shadow", + "Sheik in Forest": "Prelude of Light", + "Sheik in Crater": "Song of Storms", + "Sheik in Ice Cavern": "Song of Time", + "Sheik at Colossus": "Bolero of Fire", + "Sheik in Kakariko": "Eponas Song", + "Sheik at Temple": "Requiem of Spirit", + "KF Midos Top Left Chest": "Double Defense", + "KF Midos Top Right Chest": "Bottle with Green Potion", + "KF Midos Bottom Left Chest": "Rupees (5)", + "KF Midos Bottom Right Chest": "Rupees (20)", + "KF Kokiri Sword Chest": "Zora Tunic", + "KF Storms Grotto Chest": "Rupees (50)", + "LW Ocarina Memory Game": "Rupees (5)", + "LW Target in Woods": "Bombs (5)", + "LW Near Shortcuts Grotto Chest": "Piece of Heart", + "Deku Theater Skull Mask": "Rupees (5)", + "Deku Theater Mask of Truth": "Rupees (200)", + "LW Skull Kid": "Rupees (5)", + "LW Deku Scrub Near Bridge": {"item": "Bombs (10)", "price": 40}, + "LW Deku Scrub Grotto Front": {"item": "Rupees (5)", "price": 40}, + "SFM Wolfos Grotto Chest": "Recovery Heart", + "HF Near Market Grotto Chest": "Lens of Truth", + "HF Tektite Grotto Freestanding PoH": "Recovery Heart", + "HF Southeast Grotto Chest": "Bow", + "HF Open Grotto Chest": "Arrows (30)", + "HF Deku Scrub Grotto": {"item": "Megaton Hammer", "price": 10}, + "Market Shooting Gallery Reward": "Heart Container", + "Market Bombchu Bowling First Prize": "Deku Shield", + "Market Bombchu Bowling Second Prize": "Dins Fire", + "Market Lost Dog": "Piece of Heart", + "Market Treasure Chest Game Reward": "Bombs (20)", + "Market 10 Big Poes": "Rupees (20)", + "ToT Light Arrows Cutscene": "Rupees (5)", + "HC Great Fairy Reward": "Rupees (5)", + "LLR Talons Chickens": "Slingshot", + "LLR Freestanding PoH": "Bow", + "Kak Anju as Child": "Deku Shield", + "Kak Anju as Adult": "Piece of Heart", + "Kak Impas House Freestanding PoH": "Piece of Heart", + "Kak Windmill Freestanding PoH": "Boomerang", + "Kak Man on Roof": "Piece of Heart", + "Kak Open Grotto Chest": "Bombchus (10)", + "Kak Redead Grotto Chest": "Progressive Strength Upgrade", + "Kak Shooting Gallery Reward": "Recovery Heart", + "Kak 10 Gold Skulltula Reward": "Rupees (20)", + "Kak 20 Gold Skulltula Reward": "Piece of Heart", + "Kak 30 Gold Skulltula Reward": "Rupees (5)", + "Kak 40 Gold Skulltula Reward": "Rupees (5)", + "Kak 50 Gold Skulltula Reward": "Deku Stick (1)", + "Graveyard Shield Grave Chest": "Rupee (1)", + "Graveyard Heart Piece Grave Chest": "Arrows (10)", + "Graveyard Royal Familys Tomb Chest": "Deku Nuts (5)", + "Graveyard Freestanding PoH": "Bombs (5)", + "Graveyard Dampe Gravedigging Tour": "Piece of Heart", + "Graveyard Hookshot Chest": "Rupees (5)", + "Graveyard Dampe Race Freestanding PoH": "Piece of Heart", + "DMT Freestanding PoH": "Bombchus (5)", + "DMT Chest": "Ice Arrows", + "DMT Storms Grotto Chest": "Magic Meter", + "DMT Great Fairy Reward": "Bomb Bag", + "DMT Biggoron": "Hylian Shield", + "GC Darunias Joy": "Bottle with Bugs", + "GC Pot Freestanding PoH": "Recovery Heart", + "GC Rolling Goron as Child": "Arrows (10)", + "GC Rolling Goron as Adult": "Light Arrows", + "GC Maze Left Chest": "Recovery Heart", + "GC Maze Right Chest": "Rupees (5)", + "GC Maze Center Chest": "Arrows (30)", + "DMC Volcano Freestanding PoH": "Piece of Heart", + "DMC Wall Freestanding PoH": "Magic Meter", + "DMC Upper Grotto Chest": "Heart Container", + "DMC Great Fairy Reward": "Piece of Heart", + "ZR Open Grotto Chest": "Piece of Heart", + "ZR Frogs in the Rain": "Rupees (200)", + "ZR Frogs Ocarina Game": "Arrows (10)", + "ZR Near Open Grotto Freestanding PoH": "Bombchus (20)", + "ZR Near Domain Freestanding PoH": "Heart Container", + "ZD Diving Minigame": "Iron Boots", + "ZD Chest": "Rupees (5)", + "ZD King Zora Thawed": "Progressive Strength Upgrade", + "ZF Great Fairy Reward": "Prescription", + "ZF Iceberg Freestanding PoH": "Heart Container", + "ZF Bottom Freestanding PoH": "Arrows (10)", + "LH Underwater Item": "Goron Tunic", + "LH Child Fishing": "Piece of Heart", + "LH Adult Fishing": "Piece of Heart", + "LH Lab Dive": "Recovery Heart", + "LH Freestanding PoH": "Bomb Bag", + "LH Sun": "Hover Boots", + "GV Crate Freestanding PoH": "Arrows (10)", + "GV Waterfall Freestanding PoH": "Stone of Agony", + "GV Chest": "Nayrus Love", + "GF Chest": "Arrows (30)", + "GF HBA 1000 Points": "Piece of Heart", + "GF HBA 1500 Points": "Rupees (5)", + "Wasteland Chest": "Hylian Shield", + "Colossus Great Fairy Reward": "Piece of Heart", + "Colossus Freestanding PoH": "Piece of Heart", + "OGC Great Fairy Reward": "Bomb Bag", + "Deku Tree Map Chest": "Heart Container", + "Deku Tree Slingshot Room Side Chest": "Bow", + "Deku Tree Slingshot Chest": "Rupees (200)", + "Deku Tree Compass Chest": "Rupees (5)", + "Deku Tree Compass Room Side Chest": "Recovery Heart", + "Deku Tree Basement Chest": "Recovery Heart", + "Deku Tree Queen Gohma Heart": "Rutos Letter", + "Dodongos Cavern Map Chest": "Heart Container", + "Dodongos Cavern Compass Chest": "Progressive Wallet", + "Dodongos Cavern Bomb Flower Platform Chest": "Deku Shield", + "Dodongos Cavern Bomb Bag Chest": "Arrows (10)", + "Dodongos Cavern End of Bridge Chest": "Piece of Heart", + "Dodongos Cavern Boss Room Chest": "Rupees (5)", + "Dodongos Cavern King Dodongo Heart": "Piece of Heart", + "Jabu Jabus Belly Boomerang Chest": "Arrows (10)", + "Jabu Jabus Belly Map Chest": "Rupees (50)", + "Jabu Jabus Belly Compass Chest": "Rupees (5)", + "Jabu Jabus Belly Barinade Heart": "Arrows (30)", + "Bottom of the Well Front Left Fake Wall Chest": "Bombchus (10)", + "Bottom of the Well Front Center Bombable Chest": "Piece of Heart", + "Bottom of the Well Back Left Bombable Chest": "Piece of Heart", + "Bottom of the Well Underwater Left Chest": "Progressive Wallet", + "Bottom of the Well Freestanding Key": "Piece of Heart", + "Bottom of the Well Compass Chest": "Bombs (20)", + "Bottom of the Well Center Skulltula Chest": "Rupees (5)", + "Bottom of the Well Right Bottom Fake Wall Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Fire Keese Chest": "Deku Stick Capacity", + "Bottom of the Well Like Like Chest": "Piece of Heart", + "Bottom of the Well Map Chest": "Piece of Heart", + "Bottom of the Well Underwater Front Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Invisible Chest": "Small Key (Bottom of the Well)", + "Bottom of the Well Lens of Truth Chest": "Recovery Heart", + "Forest Temple First Room Chest": "Piece of Heart", + "Forest Temple First Stalfos Chest": "Small Key (Forest Temple)", + "Forest Temple Raised Island Courtyard Chest": "Slingshot", + "Forest Temple Map Chest": "Small Key (Forest Temple)", + "Forest Temple Well Chest": "Kokiri Sword", + "Forest Temple Eye Switch Chest": "Small Key (Forest Temple)", + "Forest Temple Boss Key Chest": "Small Key (Forest Temple)", + "Forest Temple Floormaster Chest": "Rupees (200)", + "Forest Temple Red Poe Chest": "Boss Key (Forest Temple)", + "Forest Temple Bow Chest": "Small Key (Forest Temple)", + "Forest Temple Blue Poe Chest": "Piece of Heart", + "Forest Temple Falling Ceiling Room Chest": "Bombs (5)", + "Forest Temple Basement Chest": "Rupees (20)", + "Forest Temple Phantom Ganon Heart": "Deku Stick Capacity", + "Fire Temple Near Boss Chest": "Rupees (5)", + "Fire Temple Flare Dancer Chest": "Small Key (Fire Temple)", + "Fire Temple Boss Key Chest": "Deku Nuts (10)", + "Fire Temple Big Lava Room Lower Open Door Chest": "Small Key (Fire Temple)", + "Fire Temple Big Lava Room Blocked Door Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Lower Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Side Room Chest": "Piece of Heart", + "Fire Temple Map Chest": "Small Key (Fire Temple)", + "Fire Temple Boulder Maze Shortcut Chest": "Bombs (5)", + "Fire Temple Boulder Maze Upper Chest": "Small Key (Fire Temple)", + "Fire Temple Scarecrow Chest": "Boss Key (Fire Temple)", + "Fire Temple Compass Chest": "Small Key (Fire Temple)", + "Fire Temple Megaton Hammer Chest": "Piece of Heart", + "Fire Temple Highest Goron Chest": "Rupees (5)", + "Fire Temple Volvagia Heart": "Small Key (Fire Temple)", + "Water Temple Compass Chest": "Deku Shield", + "Water Temple Map Chest": "Rupees (20)", + "Water Temple Cracked Wall Chest": "Boss Key (Water Temple)", + "Water Temple Torches Chest": "Small Key (Water Temple)", + "Water Temple Boss Key Chest": "Small Key (Water Temple)", + "Water Temple Central Pillar Chest": "Small Key (Water Temple)", + "Water Temple Central Bow Target Chest": "Small Key (Water Temple)", + "Water Temple Longshot Chest": "Arrows (10)", + "Water Temple River Chest": "Arrows (5)", + "Water Temple Dragon Chest": "Small Key (Water Temple)", + "Water Temple Morpha Heart": "Small Key (Water Temple)", + "Shadow Temple Map Chest": "Heart Container", + "Shadow Temple Hover Boots Chest": "Heart Container", + "Shadow Temple Compass Chest": "Small Key (Shadow Temple)", + "Shadow Temple Early Silver Rupee Chest": "Piece of Heart", + "Shadow Temple Invisible Blades Visible Chest": "Small Key (Shadow Temple)", + "Shadow Temple Invisible Blades Invisible Chest": "Recovery Heart", + "Shadow Temple Falling Spikes Lower Chest": "Deku Nuts (5)", + "Shadow Temple Falling Spikes Upper Chest": "Rupees (5)", + "Shadow Temple Falling Spikes Switch Chest": "Deku Nut Capacity", + "Shadow Temple Invisible Spikes Chest": "Boss Key (Shadow Temple)", + "Shadow Temple Freestanding Key": "Small Key (Shadow Temple)", + "Shadow Temple Wind Hint Chest": "Rupees (50)", + "Shadow Temple After Wind Enemy Chest": "Fire Arrows", + "Shadow Temple After Wind Hidden Chest": "Small Key (Shadow Temple)", + "Shadow Temple Spike Walls Left Chest": "Small Key (Shadow Temple)", + "Shadow Temple Boss Key Chest": "Progressive Scale", + "Shadow Temple Invisible Floormaster Chest": "Rupees (5)", + "Shadow Temple Bongo Bongo Heart": "Deku Seeds (30)", + "Spirit Temple Child Bridge Chest": "Piece of Heart", + "Spirit Temple Child Early Torches Chest": "Small Key (Spirit Temple)", + "Spirit Temple Child Climb North Chest": "Piece of Heart", + "Spirit Temple Child Climb East Chest": "Rupees (200)", + "Spirit Temple Map Chest": "Small Key (Spirit Temple)", + "Spirit Temple Sun Block Room Chest": "Rupees (50)", + "Spirit Temple Silver Gauntlets Chest": "Boss Key (Spirit Temple)", + "Spirit Temple Compass Chest": "Progressive Hookshot", + "Spirit Temple Early Adult Right Chest": "Small Key (Spirit Temple)", + "Spirit Temple First Mirror Left Chest": "Progressive Scale", + "Spirit Temple First Mirror Right Chest": "Deku Stick (1)", + "Spirit Temple Statue Room Northeast Chest": "Arrows (30)", + "Spirit Temple Statue Room Hand Chest": "Small Key (Spirit Temple)", + "Spirit Temple Near Four Armos Chest": "Bottle", + "Spirit Temple Hallway Right Invisible Chest": "Bombs (10)", + "Spirit Temple Hallway Left Invisible Chest": "Small Key (Spirit Temple)", + "Spirit Temple Mirror Shield Chest": "Bombs (5)", + "Spirit Temple Boss Key Chest": "Piece of Heart", + "Spirit Temple Topmost Chest": "Arrows (5)", + "Spirit Temple Twinrova Heart": "Deku Nut Capacity", + "Ice Cavern Map Chest": "Rupees (20)", + "Ice Cavern Compass Chest": "Progressive Strength Upgrade", + "Ice Cavern Freestanding PoH": "Rupees (20)", + "Ice Cavern Iron Boots Chest": "Slingshot", + "Gerudo Training Ground Lobby Left Chest": "Piece of Heart", + "Gerudo Training Ground Lobby Right Chest": "Piece of Heart", + "Gerudo Training Ground Stalfos Chest": "Rupees (5)", + "Gerudo Training Ground Before Heavy Block Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Second Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Third Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Heavy Block Fourth Chest": "Rupees (200)", + "Gerudo Training Ground Eye Statue Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Near Scarecrow Chest": "Rupees (50)", + "Gerudo Training Ground Hammer Room Clear Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Hammer Room Switch Chest": "Rupees (5)", + "Gerudo Training Ground Freestanding Key": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Right Central Chest": "Arrows (30)", + "Gerudo Training Ground Maze Right Side Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Underwater Silver Rupee Chest": "Deku Nuts (5)", + "Gerudo Training Ground Beamos Chest": "Rupees (5)", + "Gerudo Training Ground Hidden Ceiling Chest": "Rupees (20)", + "Gerudo Training Ground Maze Path First Chest": "Small Key (Gerudo Training Ground)", + "Gerudo Training Ground Maze Path Second Chest": "Rupees (5)", + "Gerudo Training Ground Maze Path Third Chest": "Piece of Heart", + "Gerudo Training Ground Maze Path Final Chest": "Rupees (20)", + "Ganons Castle Forest Trial Chest": "Progressive Hookshot", + "Ganons Castle Water Trial Left Chest": "Bombchus (10)", + "Ganons Castle Water Trial Right Chest": "Recovery Heart", + "Ganons Castle Shadow Trial Front Chest": "Bombs (10)", + "Ganons Castle Shadow Trial Golden Gauntlets Chest": "Small Key (Ganons Castle)", + "Ganons Castle Light Trial First Left Chest": "Rupees (5)", + "Ganons Castle Light Trial Second Left Chest": "Biggoron Sword", + "Ganons Castle Light Trial Third Left Chest": "Deku Stick (1)", + "Ganons Castle Light Trial First Right Chest": "Piece of Heart (Treasure Chest Game)", + "Ganons Castle Light Trial Second Right Chest": "Rupees (50)", + "Ganons Castle Light Trial Third Right Chest": "Farores Wind", + "Ganons Castle Light Trial Invisible Enemies Chest": "Small Key (Ganons Castle)", + "Ganons Castle Light Trial Lullaby Chest": "Rupees (50)", + "Ganons Castle Spirit Trial Crystal Switch Chest": "Bombs (5)", + "Ganons Castle Spirit Trial Invisible Chest": "Mirror Shield", + "Ganons Tower Boss Key Chest": "Piece of Heart" + } +} \ No newline at end of file diff --git a/version.py b/version.py index 71310b8aa..93807b5cd 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -__version__ = '6.0.108 f.LUM' +__version__ = '6.0.112 f.LUM'