From 499f67c5863a8700e55e7b2dec4cfb2364cd4f76 Mon Sep 17 00:00:00 2001 From: Fabian Dill <fabian.dill@web.de> Date: Wed, 24 Feb 2021 06:02:51 +0100 Subject: [PATCH] HK Logic --- BaseClasses.py | 18 + Fill.py | 2 +- Main.py | 29 +- worlds/hk/Items.py | 705 +++++++++++---------- worlds/hk/Locations.py | 1318 +++++++++------------------------------- worlds/hk/Regions.py | 13 + worlds/hk/Rules.py | 360 +++++++++++ worlds/hk/Types.py | 7 + worlds/hk/__init__.py | 66 +- 9 files changed, 1136 insertions(+), 1382 deletions(-) create mode 100644 worlds/hk/Regions.py create mode 100644 worlds/hk/Rules.py create mode 100644 worlds/hk/Types.py diff --git a/BaseClasses.py b/BaseClasses.py index bddc37e7..fb1de6f6 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -135,6 +135,11 @@ class MultiWorld(): set_player_attr('game', "A Link to the Past") set_player_attr('completion_condition', lambda state: True) + for hk_logic in {"MILDSKIPS", "SPICYSKIPS", "FIREBALLSKIPS", "ACIDSKIPS", "SPIKETUNNELS", + "DARKROOMS", "CURSED", "SHADESKIPS"}: + set_player_attr(hk_logic, False) + set_player_attr("NOTCURSED", True) + self.worlds = [] #for i in range(players): # self.worlds.append(worlds.alttp.ALTTPWorld({}, i)) @@ -585,6 +590,19 @@ class CollectionState(object): def has(self, item, player: int, count: int = 1): return self.prog_items[item, player] >= count + def has_essence(self, count:int, player: int): + # TODO: implement + return True + + def has_grubs(self, count:int, player: int): + found: int = 0 + for (item, item_player), count in self.prog_items.items(): + if item_player == player and "Grub" in item: + found += count + if found > count: + return True + return False + def has_key(self, item, player, count: int = 1): if self.world.logic[player] == 'nologic': return True diff --git a/Fill.py b/Fill.py index b090f123..702754dd 100644 --- a/Fill.py +++ b/Fill.py @@ -164,7 +164,7 @@ def distribute_items_restrictive(world, gftower_trash=False, fill_locations=None world.push_item(location, ItemFactory('Nothing', location.player), False) if unplaced or unfilled: - logging.warning('Unplaced items: %s - Unfilled Locations: %s', unplaced, unfilled) + logging.warning(f'Unplaced items({len(unplaced)}): {unplaced} - Unfilled Locations({len(unfilled)}): {unfilled}') def fast_fill(world, item_pool: typing.List, fill_locations: typing.List) -> typing.Tuple[typing.List, typing.List]: diff --git a/Main.py b/Main.py index bbee93b4..9bf886a2 100644 --- a/Main.py +++ b/Main.py @@ -8,7 +8,7 @@ import zlib import concurrent.futures import pickle -from BaseClasses import MultiWorld, CollectionState, Region +from BaseClasses import MultiWorld, CollectionState, Region, Item from worlds.alttp import ALttPLocation, ALttPItem from worlds.alttp.Items import ItemFactory, item_table, item_name_groups from worlds.alttp.Regions import create_regions, mark_light_world_regions, \ @@ -22,7 +22,8 @@ from Fill import distribute_items_restrictive, flood_items, balance_multiworld_p from worlds.alttp.Shops import create_shops, ShopSlotFill, SHOP_ID_START, total_shop_slots, FillDisabledShopSlots from worlds.alttp.ItemPool import generate_itempool, difficulties, fill_prizes from Utils import output_path, parse_player_names, get_options, __version__, _version_tuple -from worlds.hk import gen_hollow, gen_regions, set_rules as set_hk_rules +from worlds.hk import gen_hollow, set_rules as set_hk_rules +from worlds.hk import create_regions as hk_create_regions from worlds.generic.Rules import locality_rules import Patch @@ -157,6 +158,8 @@ def main(args, seed=None): world.non_local_items[player] -= item_name_groups['Pendants'] world.non_local_items[player] -= item_name_groups['Crystals'] + for player in world.hk_player_ids: + hk_create_regions(world, player) for player in world.alttp_player_ids: world.difficulty_requirements[player] = difficulties[world.difficulty[player]] @@ -529,6 +532,7 @@ def copy_world(world): ret.dark_room_logic = world.dark_room_logic.copy() ret.restrict_dungeon_item_on_boss = world.restrict_dungeon_item_on_boss.copy() ret.game = world.game.copy() + ret.completion_condition = world.completion_condition.copy() for player in world.alttp_player_ids: if world.mode[player] != 'inverted': @@ -539,7 +543,7 @@ def copy_world(world): create_dungeons(ret, player) for player in world.hk_player_ids: - gen_regions(ret, player) + hk_create_regions(ret, player) copy_dynamic_regions_and_locations(world, ret) @@ -564,21 +568,28 @@ def copy_world(world): # fill locations for location in world.get_locations(): if location.item is not None: - item = ALttPItem(location.item.name, location.item.advancement, location.item.type, player = location.item.player) + item = Item(location.item.name, location.item.advancement, location.item.code, player = location.item.player) ret.get_location(location.name, location.player).item = item item.location = ret.get_location(location.name, location.player) item.world = ret + item.type = location.item.type + if location.event: ret.get_location(location.name, location.player).event = True if location.locked: ret.get_location(location.name, location.player).locked = True - # copy remaining itempool. No item in itempool should have an assigned location - for item in world.itempool: - ret.itempool.append(ALttPItem(item.name, item.advancement, item.type, player = item.player)) - for item in world.precollected_items: - ret.push_precollected(ItemFactory(item.name, item.player)) + # copy remaining itempool. No item in itempool should have an assigned location + for old_item in world.itempool: + item = Item(old_item.name, old_item.advancement, old_item.code, player = old_item.player) + item.type = old_item.type + ret.itempool.append(item) + + for old_item in world.precollected_items: + item = Item(old_item.name, old_item.advancement, old_item.code, player = old_item.player) + item.type = old_item.type + ret.push_precollected(item) # copy progress items in state ret.state.prog_items = world.state.prog_items.copy() diff --git a/worlds/hk/Items.py b/worlds/hk/Items.py index e75883c6..d9f6d88f 100644 --- a/worlds/hk/Items.py +++ b/worlds/hk/Items.py @@ -1,325 +1,382 @@ -items = \ -{ 16777217: {'advancement': True, 'name': 'Lurien'}, - 16777218: {'advancement': True, 'name': 'Monomon'}, - 16777219: {'advancement': True, 'name': 'Herrah'}, - 16777220: {'advancement': False, 'name': 'World_Sense'}, - 16777221: {'advancement': True, 'name': 'Dreamer'}, - 16777222: {'advancement': True, 'name': 'Mothwing_Cloak'}, - 16777223: {'advancement': True, 'name': 'Mantis_Claw'}, - 16777224: {'advancement': True, 'name': 'Crystal_Heart'}, - 16777225: {'advancement': True, 'name': 'Monarch_Wings'}, - 16777226: {'advancement': True, 'name': 'Shade_Cloak'}, - 16777227: {'advancement': True, 'name': "Isma's_Tear"}, - 16777228: {'advancement': True, 'name': 'Dream_Nail'}, - 16777229: {'advancement': True, 'name': 'Dream_Gate'}, - 16777230: {'advancement': True, 'name': 'Awoken_Dream_Nail'}, - 16777231: {'advancement': True, 'name': 'Vengeful_Spirit'}, - 16777232: {'advancement': True, 'name': 'Shade_Soul'}, - 16777233: {'advancement': True, 'name': 'Desolate_Dive'}, - 16777234: {'advancement': True, 'name': 'Descending_Dark'}, - 16777235: {'advancement': True, 'name': 'Howling_Wraiths'}, - 16777236: {'advancement': True, 'name': 'Abyss_Shriek'}, - 16777237: {'advancement': True, 'name': 'Cyclone_Slash'}, - 16777238: {'advancement': True, 'name': 'Dash_Slash'}, - 16777239: {'advancement': True, 'name': 'Great_Slash'}, - 16777240: {'advancement': True, 'name': 'Focus'}, - 16777241: {'advancement': False, 'name': 'Gathering_Swarm'}, - 16777242: {'advancement': False, 'name': 'Wayward_Compass'}, - 16777243: {'advancement': False, 'name': 'Grubsong'}, - 16777244: {'advancement': False, 'name': 'Stalwart_Shell'}, - 16777245: {'advancement': False, 'name': 'Baldur_Shell'}, - 16777246: {'advancement': False, 'name': 'Fury_of_the_Fallen'}, - 16777247: {'advancement': False, 'name': 'Quick_Focus'}, - 16777248: {'advancement': True, 'name': 'Lifeblood_Heart'}, - 16777249: {'advancement': True, 'name': 'Lifeblood_Core'}, - 16777250: {'advancement': False, 'name': "Defender's_Crest"}, - 16777251: {'advancement': False, 'name': 'Flukenest'}, - 16777252: {'advancement': False, 'name': 'Thorns_of_Agony'}, - 16777253: {'advancement': True, 'name': 'Mark_of_Pride'}, - 16777254: {'advancement': False, 'name': 'Steady_Body'}, - 16777255: {'advancement': False, 'name': 'Heavy_Blow'}, - 16777256: {'advancement': True, 'name': 'Sharp_Shadow'}, - 16777257: {'advancement': True, 'name': 'Spore_Shroom'}, - 16777258: {'advancement': False, 'name': 'Longnail'}, - 16777259: {'advancement': False, 'name': 'Shaman_Stone'}, - 16777260: {'advancement': False, 'name': 'Soul_Catcher'}, - 16777261: {'advancement': False, 'name': 'Soul_Eater'}, - 16777262: {'advancement': True, 'name': 'Glowing_Womb'}, - 16777263: {'advancement': False, 'name': 'Fragile_Heart'}, - 16777264: {'advancement': False, 'name': 'Fragile_Greed'}, - 16777265: {'advancement': False, 'name': 'Fragile_Strength'}, - 16777266: {'advancement': False, 'name': "Nailmaster's_Glory"}, - 16777267: {'advancement': True, 'name': "Joni's_Blessing"}, - 16777268: {'advancement': False, 'name': 'Shape_of_Unn'}, - 16777269: {'advancement': False, 'name': 'Hiveblood'}, - 16777270: {'advancement': False, 'name': 'Dream_Wielder'}, - 16777271: {'advancement': True, 'name': 'Dashmaster'}, - 16777272: {'advancement': False, 'name': 'Quick_Slash'}, - 16777273: {'advancement': False, 'name': 'Spell_Twister'}, - 16777274: {'advancement': False, 'name': 'Deep_Focus'}, - 16777275: {'advancement': True, 'name': "Grubberfly's_Elegy"}, - 16777276: {'advancement': True, 'name': 'Queen_Fragment'}, - 16777277: {'advancement': True, 'name': 'King_Fragment'}, - 16777278: {'advancement': True, 'name': 'Void_Heart'}, - 16777279: {'advancement': True, 'name': 'Sprintmaster'}, - 16777280: {'advancement': False, 'name': 'Dreamshield'}, - 16777281: {'advancement': True, 'name': 'Weaversong'}, - 16777282: {'advancement': True, 'name': 'Grimmchild'}, - 16777283: {'advancement': True, 'name': 'City_Crest'}, - 16777284: {'advancement': True, 'name': 'Lumafly_Lantern'}, - 16777285: {'advancement': True, 'name': 'Tram_Pass'}, - 16777286: {'advancement': True, 'name': 'Simple_Key-Sly'}, - 16777287: {'advancement': True, 'name': 'Simple_Key-Basin'}, - 16777288: {'advancement': True, 'name': 'Simple_Key-City'}, - 16777289: {'advancement': True, 'name': 'Simple_Key-Lurker'}, - 16777290: {'advancement': True, 'name': "Shopkeeper's_Key"}, - 16777291: {'advancement': True, 'name': 'Elegant_Key'}, - 16777292: {'advancement': True, 'name': 'Love_Key'}, - 16777293: {'advancement': True, 'name': "King's_Brand"}, - 16777294: {'advancement': False, 'name': 'Godtuner'}, - 16777295: {'advancement': False, 'name': "Collector's_Map"}, - 16777296: {'advancement': False, 'name': 'Mask_Shard-Sly1'}, - 16777297: {'advancement': False, 'name': 'Mask_Shard-Sly2'}, - 16777298: {'advancement': False, 'name': 'Mask_Shard-Sly3'}, - 16777299: {'advancement': False, 'name': 'Mask_Shard-Sly4'}, - 16777300: {'advancement': False, 'name': 'Mask_Shard-Seer'}, - 16777301: {'advancement': False, 'name': 'Mask_Shard-5_Grubs'}, - 16777302: {'advancement': False, 'name': 'Mask_Shard-Brooding_Mawlek'}, - 16777303: {'advancement': False, 'name': 'Mask_Shard-Crossroads_Goam'}, - 16777304: {'advancement': False, 'name': 'Mask_Shard-Stone_Sanctuary'}, - 16777305: {'advancement': False, 'name': "Mask_Shard-Queen's_Station"}, - 16777306: {'advancement': False, 'name': 'Mask_Shard-Deepnest'}, - 16777307: {'advancement': False, 'name': 'Mask_Shard-Waterways'}, - 16777308: {'advancement': False, 'name': 'Mask_Shard-Enraged_Guardian'}, - 16777309: {'advancement': False, 'name': 'Mask_Shard-Hive'}, - 16777310: {'advancement': False, 'name': 'Mask_Shard-Grey_Mourner'}, - 16777311: {'advancement': False, 'name': 'Mask_Shard-Bretta'}, - 16777312: {'advancement': False, 'name': 'Vessel_Fragment-Sly1'}, - 16777313: {'advancement': False, 'name': 'Vessel_Fragment-Sly2'}, - 16777314: {'advancement': False, 'name': 'Vessel_Fragment-Seer'}, - 16777315: {'advancement': False, 'name': 'Vessel_Fragment-Greenpath'}, - 16777316: {'advancement': False, 'name': 'Vessel_Fragment-City'}, - 16777317: {'advancement': False, 'name': 'Vessel_Fragment-Crossroads'}, - 16777318: {'advancement': False, 'name': 'Vessel_Fragment-Basin'}, - 16777319: {'advancement': False, 'name': 'Vessel_Fragment-Deepnest'}, - 16777320: {'advancement': False, 'name': 'Vessel_Fragment-Stag_Nest'}, - 16777321: {'advancement': False, 'name': 'Charm_Notch-Shrumal_Ogres'}, - 16777322: {'advancement': False, 'name': 'Charm_Notch-Fog_Canyon'}, - 16777323: {'advancement': False, 'name': 'Charm_Notch-Colosseum'}, - 16777324: {'advancement': False, 'name': 'Charm_Notch-Grimm'}, - 16777325: {'advancement': False, 'name': 'Pale_Ore-Basin'}, - 16777326: {'advancement': False, 'name': 'Pale_Ore-Crystal_Peak'}, - 16777327: {'advancement': False, 'name': 'Pale_Ore-Nosk'}, - 16777328: {'advancement': False, 'name': 'Pale_Ore-Seer'}, - 16777329: {'advancement': False, 'name': 'Pale_Ore-Grubs'}, - 16777330: {'advancement': False, 'name': 'Pale_Ore-Colosseum'}, - 16777331: {'advancement': False, 'name': '200_Geo-False_Knight_Chest'}, - 16777332: {'advancement': False, 'name': '380_Geo-Soul_Master_Chest'}, - 16777333: {'advancement': False, 'name': '655_Geo-Watcher_Knights_Chest'}, - 16777334: {'advancement': False, 'name': '85_Geo-Greenpath_Chest'}, - 16777335: {'advancement': False, 'name': '620_Geo-Mantis_Lords_Chest'}, - 16777336: {'advancement': False, 'name': '150_Geo-Resting_Grounds_Chest'}, - 16777337: {'advancement': False, 'name': '80_Geo-Crystal_Peak_Chest'}, - 16777338: {'advancement': False, 'name': '160_Geo-Weavers_Den_Chest'}, - 16777339: {'advancement': False, 'name': '1_Geo'}, - 16777340: {'advancement': False, 'name': 'Rancid_Egg-Sly'}, - 16777341: {'advancement': False, 'name': 'Rancid_Egg-Grubs'}, - 16777342: {'advancement': False, 'name': 'Rancid_Egg-Sheo'}, - 16777343: {'advancement': False, 'name': 'Rancid_Egg-Fungal_Core'}, - 16777344: {'advancement': False, 'name': "Rancid_Egg-Queen's_Gardens"}, - 16777345: {'advancement': False, 'name': 'Rancid_Egg-Blue_Lake'}, - 16777346: { 'advancement': False, - 'name': 'Rancid_Egg-Crystal_Peak_Dive_Entrance'}, - 16777347: { 'advancement': False, - 'name': 'Rancid_Egg-Crystal_Peak_Dark_Room'}, - 16777348: { 'advancement': False, - 'name': 'Rancid_Egg-Crystal_Peak_Tall_Room'}, - 16777349: {'advancement': False, 'name': 'Rancid_Egg-City_of_Tears_Left'}, - 16777350: { 'advancement': False, - 'name': 'Rancid_Egg-City_of_Tears_Pleasure_House'}, - 16777351: {'advancement': False, 'name': "Rancid_Egg-Beast's_Den"}, - 16777352: {'advancement': False, 'name': 'Rancid_Egg-Dark_Deepnest'}, - 16777353: {'advancement': False, 'name': "Rancid_Egg-Weaver's_Den"}, - 16777354: {'advancement': False, 'name': 'Rancid_Egg-Near_Quick_Slash'}, - 16777355: {'advancement': False, 'name': "Rancid_Egg-Upper_Kingdom's_Edge"}, - 16777356: {'advancement': False, 'name': 'Rancid_Egg-Waterways_East'}, - 16777357: {'advancement': False, 'name': 'Rancid_Egg-Waterways_Main'}, - 16777358: { 'advancement': False, - 'name': 'Rancid_Egg-Waterways_West_Bluggsac'}, - 16777359: { 'advancement': False, - 'name': 'Rancid_Egg-Waterways_West_Pickup'}, - 16777360: {'advancement': False, 'name': "Wanderer's_Journal-Cliffs"}, - 16777361: { 'advancement': False, - 'name': "Wanderer's_Journal-Greenpath_Stag"}, - 16777362: { 'advancement': False, - 'name': "Wanderer's_Journal-Greenpath_Lower"}, - 16777363: { 'advancement': False, - 'name': "Wanderer's_Journal-Fungal_Wastes_Thorns_Gauntlet"}, - 16777364: { 'advancement': False, - 'name': "Wanderer's_Journal-Above_Mantis_Village"}, - 16777365: { 'advancement': False, - 'name': "Wanderer's_Journal-Crystal_Peak_Crawlers"}, - 16777366: { 'advancement': False, - 'name': "Wanderer's_Journal-Resting_Grounds_Catacombs"}, - 16777367: { 'advancement': False, - 'name': "Wanderer's_Journal-King's_Station"}, - 16777368: { 'advancement': False, - 'name': "Wanderer's_Journal-Pleasure_House"}, - 16777369: { 'advancement': False, - 'name': "Wanderer's_Journal-City_Storerooms"}, - 16777370: { 'advancement': False, - 'name': "Wanderer's_Journal-Ancient_Basin"}, - 16777371: { 'advancement': False, - 'name': "Wanderer's_Journal-Kingdom's_Edge_Entrance"}, - 16777372: { 'advancement': False, - 'name': "Wanderer's_Journal-Kingdom's_Edge_Camp"}, - 16777373: { 'advancement': False, - 'name': "Wanderer's_Journal-Kingdom's_Edge_Requires_Dive"}, - 16777374: {'advancement': False, 'name': 'Hallownest_Seal-Crossroads_Well'}, - 16777375: {'advancement': False, 'name': 'Hallownest_Seal-Grubs'}, - 16777376: {'advancement': False, 'name': 'Hallownest_Seal-Greenpath'}, - 16777377: {'advancement': False, 'name': 'Hallownest_Seal-Fog_Canyon_West'}, - 16777378: {'advancement': False, 'name': 'Hallownest_Seal-Fog_Canyon_East'}, - 16777379: {'advancement': False, 'name': "Hallownest_Seal-Queen's_Station"}, - 16777380: { 'advancement': False, - 'name': 'Hallownest_Seal-Fungal_Wastes_Sporgs'}, - 16777381: {'advancement': False, 'name': 'Hallownest_Seal-Mantis_Lords'}, - 16777382: {'advancement': False, 'name': 'Hallownest_Seal-Seer'}, - 16777383: { 'advancement': False, - 'name': 'Hallownest_Seal-Resting_Grounds_Catacombs'}, - 16777384: {'advancement': False, 'name': "Hallownest_Seal-King's_Station"}, - 16777385: {'advancement': False, 'name': 'Hallownest_Seal-City_Rafters'}, - 16777386: {'advancement': False, 'name': 'Hallownest_Seal-Soul_Sanctum'}, - 16777387: {'advancement': False, 'name': 'Hallownest_Seal-Watcher_Knight'}, - 16777388: { 'advancement': False, - 'name': 'Hallownest_Seal-Deepnest_By_Mantis_Lords'}, - 16777389: {'advancement': False, 'name': "Hallownest_Seal-Beast's_Den"}, - 16777390: {'advancement': False, 'name': "Hallownest_Seal-Queen's_Gardens"}, - 16777391: {'advancement': False, 'name': "King's_Idol-Grubs"}, - 16777392: {'advancement': False, 'name': "King's_Idol-Cliffs"}, - 16777393: {'advancement': False, 'name': "King's_Idol-Crystal_Peak"}, - 16777394: {'advancement': False, 'name': "King's_Idol-Glade_of_Hope"}, - 16777395: {'advancement': False, 'name': "King's_Idol-Dung_Defender"}, - 16777396: {'advancement': False, 'name': "King's_Idol-Great_Hopper"}, - 16777397: {'advancement': False, 'name': "King's_Idol-Pale_Lurker"}, - 16777398: {'advancement': False, 'name': "King's_Idol-Deepnest"}, - 16777399: {'advancement': False, 'name': 'Arcane_Egg-Seer'}, - 16777400: {'advancement': False, 'name': 'Arcane_Egg-Lifeblood_Core'}, - 16777401: {'advancement': False, 'name': 'Arcane_Egg-Shade_Cloak'}, - 16777402: {'advancement': False, 'name': 'Arcane_Egg-Birthplace'}, - 16777403: {'advancement': True, 'name': 'Whispering_Root-Crossroads'}, - 16777404: {'advancement': True, 'name': 'Whispering_Root-Greenpath'}, - 16777405: {'advancement': True, 'name': 'Whispering_Root-Leg_Eater'}, - 16777406: {'advancement': True, 'name': 'Whispering_Root-Mantis_Village'}, - 16777407: {'advancement': True, 'name': 'Whispering_Root-Deepnest'}, - 16777408: {'advancement': True, 'name': 'Whispering_Root-Queens_Gardens'}, - 16777409: {'advancement': True, 'name': 'Whispering_Root-Kingdoms_Edge'}, - 16777410: {'advancement': True, 'name': 'Whispering_Root-Waterways'}, - 16777411: {'advancement': True, 'name': 'Whispering_Root-City'}, - 16777412: {'advancement': True, 'name': 'Whispering_Root-Resting_Grounds'}, - 16777413: {'advancement': True, 'name': 'Whispering_Root-Spirits_Glade'}, - 16777414: {'advancement': True, 'name': 'Whispering_Root-Crystal_Peak'}, - 16777415: {'advancement': True, 'name': 'Whispering_Root-Howling_Cliffs'}, - 16777416: {'advancement': True, 'name': 'Whispering_Root-Ancestral_Mound'}, - 16777417: {'advancement': True, 'name': 'Whispering_Root-Hive'}, - 16777418: {'advancement': True, 'name': 'Boss_Essence-Elder_Hu'}, - 16777419: {'advancement': True, 'name': 'Boss_Essence-Xero'}, - 16777420: {'advancement': True, 'name': 'Boss_Essence-Gorb'}, - 16777421: {'advancement': True, 'name': 'Boss_Essence-Marmu'}, - 16777422: {'advancement': True, 'name': 'Boss_Essence-No_Eyes'}, - 16777423: {'advancement': True, 'name': 'Boss_Essence-Galien'}, - 16777424: {'advancement': True, 'name': 'Boss_Essence-Markoth'}, - 16777425: {'advancement': True, 'name': 'Boss_Essence-Failed_Champion'}, - 16777426: {'advancement': True, 'name': 'Boss_Essence-Soul_Tyrant'}, - 16777427: {'advancement': True, 'name': 'Boss_Essence-Lost_Kin'}, - 16777428: {'advancement': True, 'name': 'Boss_Essence-White_Defender'}, - 16777429: {'advancement': True, 'name': 'Boss_Essence-Grey_Prince_Zote'}, - 16777430: {'advancement': True, 'name': 'Grub-Crossroads_Acid'}, - 16777431: {'advancement': True, 'name': 'Grub-Crossroads_Center'}, - 16777432: {'advancement': True, 'name': 'Grub-Crossroads_Stag'}, - 16777433: {'advancement': True, 'name': 'Grub-Crossroads_Spike'}, - 16777434: {'advancement': True, 'name': 'Grub-Crossroads_Guarded'}, - 16777435: {'advancement': True, 'name': 'Grub-Greenpath_Cornifer'}, - 16777436: {'advancement': True, 'name': 'Grub-Greenpath_Journal'}, - 16777437: {'advancement': True, 'name': 'Grub-Greenpath_MMC'}, - 16777438: {'advancement': True, 'name': 'Grub-Greenpath_Stag'}, - 16777439: {'advancement': True, 'name': 'Grub-Fog_Canyon'}, - 16777440: {'advancement': True, 'name': 'Grub-Fungal_Bouncy'}, - 16777441: {'advancement': True, 'name': 'Grub-Fungal_Spore_Shroom'}, - 16777442: {'advancement': True, 'name': 'Grub-Deepnest_Mimic'}, - 16777443: {'advancement': True, 'name': 'Grub-Deepnest_Nosk'}, - 16777444: {'advancement': True, 'name': 'Grub-Deepnest_Spike'}, - 16777445: {'advancement': True, 'name': 'Grub-Dark_Deepnest'}, - 16777446: {'advancement': True, 'name': "Grub-Beast's_Den"}, - 16777447: {'advancement': True, 'name': "Grub-Kingdom's_Edge_Oro"}, - 16777448: {'advancement': True, 'name': "Grub-Kingdom's_Edge_Camp"}, - 16777449: {'advancement': True, 'name': 'Grub-Hive_External'}, - 16777450: {'advancement': True, 'name': 'Grub-Hive_Internal'}, - 16777451: {'advancement': True, 'name': 'Grub-Basin_Requires_Wings'}, - 16777452: {'advancement': True, 'name': 'Grub-Basin_Requires_Dive'}, - 16777453: {'advancement': True, 'name': 'Grub-Waterways_Main'}, - 16777454: {'advancement': True, 'name': 'Grub-Waterways_East'}, - 16777455: {'advancement': True, 'name': 'Grub-Waterways_Requires_Tram'}, - 16777456: {'advancement': True, 'name': 'Grub-City_of_Tears_Left'}, - 16777457: {'advancement': True, 'name': 'Grub-Soul_Sanctum'}, - 16777458: {'advancement': True, 'name': "Grub-Watcher's_Spire"}, - 16777459: {'advancement': True, 'name': 'Grub-City_of_Tears_Guarded'}, - 16777460: {'advancement': True, 'name': "Grub-King's_Station"}, - 16777461: {'advancement': True, 'name': 'Grub-Resting_Grounds'}, - 16777462: {'advancement': True, 'name': 'Grub-Crystal_Peak_Below_Chest'}, - 16777463: {'advancement': True, 'name': 'Grub-Crystallized_Mound'}, - 16777464: {'advancement': True, 'name': 'Grub-Crystal_Peak_Spike'}, - 16777465: {'advancement': True, 'name': 'Grub-Crystal_Peak_Mimic'}, - 16777466: {'advancement': True, 'name': 'Grub-Crystal_Peak_Crushers'}, - 16777467: {'advancement': True, 'name': 'Grub-Crystal_Heart'}, - 16777468: {'advancement': True, 'name': 'Grub-Hallownest_Crown'}, - 16777469: {'advancement': True, 'name': 'Grub-Howling_Cliffs'}, - 16777470: {'advancement': True, 'name': "Grub-Queen's_Gardens_Stag"}, - 16777471: {'advancement': True, 'name': "Grub-Queen's_Gardens_Marmu"}, - 16777472: {'advancement': True, 'name': "Grub-Queen's_Gardens_Top"}, - 16777473: {'advancement': True, 'name': 'Grub-Collector_1'}, - 16777474: {'advancement': True, 'name': 'Grub-Collector_2'}, - 16777475: {'advancement': True, 'name': 'Grub-Collector_3'}, - 16777476: {'advancement': False, 'name': 'Crossroads_Map'}, - 16777477: {'advancement': False, 'name': 'Greenpath_Map'}, - 16777478: {'advancement': False, 'name': 'Fog_Canyon_Map'}, - 16777479: {'advancement': False, 'name': 'Fungal_Wastes_Map'}, - 16777480: {'advancement': False, 'name': 'Deepnest_Map-Upper'}, - 16777481: { 'advancement': False, - 'name': 'Deepnest_Map-Right_[Gives_Quill]'}, - 16777482: {'advancement': False, 'name': 'Ancient_Basin_Map'}, - 16777483: {'advancement': False, 'name': "Kingdom's_Edge_Map"}, - 16777484: {'advancement': False, 'name': 'City_of_Tears_Map'}, - 16777485: {'advancement': False, 'name': 'Royal_Waterways_Map'}, - 16777486: {'advancement': False, 'name': 'Howling_Cliffs_Map'}, - 16777487: {'advancement': False, 'name': 'Crystal_Peak_Map'}, - 16777488: {'advancement': False, 'name': "Queen's_Gardens_Map"}, - 16777489: {'advancement': False, 'name': 'Resting_Grounds_Map'}, - 16777490: {'advancement': True, 'name': 'Dirtmouth_Stag'}, - 16777491: {'advancement': True, 'name': 'Crossroads_Stag'}, - 16777492: {'advancement': True, 'name': 'Greenpath_Stag'}, - 16777493: {'advancement': True, 'name': "Queen's_Station_Stag"}, - 16777494: {'advancement': True, 'name': "Queen's_Gardens_Stag"}, - 16777495: {'advancement': True, 'name': 'City_Storerooms_Stag'}, - 16777496: {'advancement': True, 'name': "King's_Station_Stag"}, - 16777497: {'advancement': True, 'name': 'Resting_Grounds_Stag'}, - 16777498: {'advancement': True, 'name': 'Distant_Village_Stag'}, - 16777499: {'advancement': True, 'name': 'Hidden_Station_Stag'}, - 16777500: {'advancement': True, 'name': 'Stag_Nest_Stag'}, - 16777501: {'advancement': False, 'name': "Lifeblood_Cocoon-King's_Pass"}, - 16777502: { 'advancement': False, - 'name': 'Lifeblood_Cocoon-Ancestral_Mound'}, - 16777503: {'advancement': False, 'name': 'Lifeblood_Cocoon-Greenpath'}, - 16777504: { 'advancement': False, - 'name': 'Lifeblood_Cocoon-Fog_Canyon_West'}, - 16777505: {'advancement': False, 'name': 'Lifeblood_Cocoon-Mantis_Village'}, - 16777506: {'advancement': False, 'name': 'Lifeblood_Cocoon-Failed_Tramway'}, - 16777507: {'advancement': False, 'name': 'Lifeblood_Cocoon-Galien'}, - 16777508: {'advancement': False, 'name': "Lifeblood_Cocoon-Kingdom's_Edge"}, - 16777509: {'advancement': False, 'name': 'Grubfather'}, - 16777510: {'advancement': False, 'name': 'Seer'}, - 16777511: {'advancement': False, 'name': 'Equipped'}, - 16777512: {'advancement': False, 'name': 'Placeholder'}} +# generated by https://github.com/Berserker66/HollowKnight.RandomizerMod/blob/master/extract_data.py +# do not edit manually -item_table = {data["name"]: item_id for item_id, data in items.items()} -lookup_id_to_name = {item_id: data["name"] for item_id, data in items.items()} \ No newline at end of file +from .Types import HKItemData + +item_table = \ +{ '150_Geo-Resting_Grounds_Chest': HKItemData(advancement=False, id=16777336, type='Geo'), + '160_Geo-Weavers_Den_Chest': HKItemData(advancement=False, id=16777338, type='Geo'), + '1_Geo': HKItemData(advancement=False, id=16777339, type='Fake'), + '200_Geo-False_Knight_Chest': HKItemData(advancement=False, id=16777331, type='Geo'), + '380_Geo-Soul_Master_Chest': HKItemData(advancement=False, id=16777332, type='Geo'), + '620_Geo-Mantis_Lords_Chest': HKItemData(advancement=False, id=16777335, type='Geo'), + '655_Geo-Watcher_Knights_Chest': HKItemData(advancement=False, id=16777333, type='Geo'), + '80_Geo-Crystal_Peak_Chest': HKItemData(advancement=False, id=16777337, type='Geo'), + '85_Geo-Greenpath_Chest': HKItemData(advancement=False, id=16777334, type='Geo'), + 'Abyss': HKItemData(advancement=True, id=0, type='Event'), + 'Abyss_Shriek': HKItemData(advancement=True, id=16777236, type='Skill'), + 'Ancestral_Mound': HKItemData(advancement=True, id=0, type='Event'), + 'Ancient_Basin_Map': HKItemData(advancement=False, id=16777482, type='Map'), + 'Arcane_Egg-Birthplace': HKItemData(advancement=False, id=16777402, type='Relic'), + 'Arcane_Egg-Lifeblood_Core': HKItemData(advancement=False, id=16777400, type='Relic'), + 'Arcane_Egg-Seer': HKItemData(advancement=False, id=16777399, type='Relic'), + 'Arcane_Egg-Shade_Cloak': HKItemData(advancement=False, id=16777401, type='Relic'), + 'Awoken_Dream_Nail': HKItemData(advancement=True, id=16777230, type='Skill'), + 'Baldur_Shell': HKItemData(advancement=False, id=16777245, type='Charm'), + "Beast's_Den": HKItemData(advancement=True, id=0, type='Event'), + 'Blue_Lake': HKItemData(advancement=True, id=0, type='Event'), + 'Boss_Essence-Elder_Hu': HKItemData(advancement=True, id=16777418, type='Essence_Boss'), + 'Boss_Essence-Failed_Champion': HKItemData(advancement=True, id=16777425, type='Essence_Boss'), + 'Boss_Essence-Galien': HKItemData(advancement=True, id=16777423, type='Essence_Boss'), + 'Boss_Essence-Gorb': HKItemData(advancement=True, id=16777420, type='Essence_Boss'), + 'Boss_Essence-Grey_Prince_Zote': HKItemData(advancement=True, id=16777429, type='Essence_Boss'), + 'Boss_Essence-Lost_Kin': HKItemData(advancement=True, id=16777427, type='Essence_Boss'), + 'Boss_Essence-Markoth': HKItemData(advancement=True, id=16777424, type='Essence_Boss'), + 'Boss_Essence-Marmu': HKItemData(advancement=True, id=16777421, type='Essence_Boss'), + 'Boss_Essence-No_Eyes': HKItemData(advancement=True, id=16777422, type='Essence_Boss'), + 'Boss_Essence-Soul_Tyrant': HKItemData(advancement=True, id=16777426, type='Essence_Boss'), + 'Boss_Essence-White_Defender': HKItemData(advancement=True, id=16777428, type='Essence_Boss'), + 'Boss_Essence-Xero': HKItemData(advancement=True, id=16777419, type='Essence_Boss'), + 'Bottom_Left_Fungal_Wastes': HKItemData(advancement=True, id=0, type='Event'), + "Bottom_Left_Queen's_Gardens": HKItemData(advancement=True, id=0, type='Event'), + "Bottom_Right_Queen's_Gardens": HKItemData(advancement=True, id=0, type='Event'), + 'Can_Stag': HKItemData(advancement=True, id=0, type='Event'), + 'Cast_Off_Shell': HKItemData(advancement=True, id=0, type='Event'), + "Center_Right_Kingdom's_Edge": HKItemData(advancement=True, id=0, type='Event'), + "Central_Kingdom's_Edge": HKItemData(advancement=True, id=0, type='Event'), + 'Central_Left_Waterways': HKItemData(advancement=True, id=0, type='Event'), + 'Charm_Notch-Colosseum': HKItemData(advancement=False, id=16777323, type='Notch'), + 'Charm_Notch-Fog_Canyon': HKItemData(advancement=False, id=16777322, type='Notch'), + 'Charm_Notch-Grimm': HKItemData(advancement=False, id=16777324, type='Notch'), + 'Charm_Notch-Shrumal_Ogres': HKItemData(advancement=False, id=16777321, type='Notch'), + 'City_Crest': HKItemData(advancement=True, id=16777283, type='Key'), + 'City_Storerooms_Stag': HKItemData(advancement=True, id=16777495, type='Stag'), + 'City_of_Tears_Map': HKItemData(advancement=False, id=16777484, type='Map'), + "Collector's_Map": HKItemData(advancement=False, id=16777295, type='Key'), + 'Colosseum': HKItemData(advancement=True, id=0, type='Event'), + 'Crossroads': HKItemData(advancement=True, id=0, type='Event'), + 'Crossroads_Map': HKItemData(advancement=False, id=16777476, type='Map'), + 'Crossroads_Stag': HKItemData(advancement=True, id=16777491, type='Stag'), + 'Crystal_Heart': HKItemData(advancement=True, id=16777224, type='Skill'), + 'Crystal_Peak': HKItemData(advancement=True, id=0, type='Event'), + 'Crystal_Peak_Map': HKItemData(advancement=False, id=16777487, type='Map'), + 'Crystallized_Mound': HKItemData(advancement=True, id=0, type='Event'), + 'Cyclone_Slash': HKItemData(advancement=True, id=16777237, type='Skill'), + 'Dark_Deepnest': HKItemData(advancement=True, id=0, type='Event'), + 'Dash_Slash': HKItemData(advancement=True, id=16777238, type='Skill'), + 'Dashmaster': HKItemData(advancement=True, id=16777271, type='Charm'), + 'Deep_Focus': HKItemData(advancement=False, id=16777274, type='Charm'), + 'Deepnest': HKItemData(advancement=True, id=0, type='Event'), + 'Deepnest_Map-Right_[Gives_Quill]': HKItemData(advancement=False, id=16777481, type='Map'), + 'Deepnest_Map-Upper': HKItemData(advancement=False, id=16777480, type='Map'), + "Defender's_Crest": HKItemData(advancement=False, id=16777250, type='Charm'), + 'Descending_Dark': HKItemData(advancement=True, id=16777234, type='Skill'), + 'Desolate_Dive': HKItemData(advancement=True, id=16777233, type='Skill'), + 'Dirtmouth': HKItemData(advancement=True, id=0, type='Event'), + 'Dirtmouth_Stag': HKItemData(advancement=True, id=16777490, type='Stag'), + 'Distant_Village': HKItemData(advancement=True, id=0, type='Event'), + 'Distant_Village_Stag': HKItemData(advancement=True, id=16777498, type='Stag'), + 'Dream_Gate': HKItemData(advancement=True, id=16777229, type='Skill'), + 'Dream_Nail': HKItemData(advancement=True, id=16777228, type='Skill'), + 'Dream_Wielder': HKItemData(advancement=False, id=16777270, type='Charm'), + 'Dreamer': HKItemData(advancement=True, id=16777221, type='Fake'), + 'Dreamshield': HKItemData(advancement=False, id=16777280, type='Charm'), + 'Elegant_Key': HKItemData(advancement=True, id=16777291, type='Key'), + 'Emilitia': HKItemData(advancement=True, id=0, type='Event'), + 'Equipped': HKItemData(advancement=False, id=16777511, type='Fake'), + 'Failed_Tramway': HKItemData(advancement=True, id=0, type='Event'), + 'Far_Left_Basin': HKItemData(advancement=True, id=0, type='Event'), + 'Far_Left_Waterways': HKItemData(advancement=True, id=0, type='Event'), + "Far_Queen's_Gardens": HKItemData(advancement=True, id=0, type='Event'), + 'Far_Right_Deepnest': HKItemData(advancement=True, id=0, type='Event'), + 'Flukenest': HKItemData(advancement=False, id=16777251, type='Charm'), + 'Focus': HKItemData(advancement=True, id=16777240, type='Cursed'), + 'Fog_Canyon_Map': HKItemData(advancement=False, id=16777478, type='Map'), + 'Fragile_Greed': HKItemData(advancement=False, id=16777264, type='Charm'), + 'Fragile_Heart': HKItemData(advancement=False, id=16777263, type='Charm'), + 'Fragile_Strength': HKItemData(advancement=False, id=16777265, type='Charm'), + 'Fungal_Core': HKItemData(advancement=True, id=0, type='Event'), + 'Fungal_Wastes': HKItemData(advancement=True, id=0, type='Event'), + 'Fungal_Wastes_Map': HKItemData(advancement=False, id=16777479, type='Map'), + 'Fury_of_the_Fallen': HKItemData(advancement=False, id=16777246, type='Charm'), + 'Gathering_Swarm': HKItemData(advancement=False, id=16777241, type='Charm'), + 'Glowing_Womb': HKItemData(advancement=True, id=16777262, type='Charm'), + 'Godtuner': HKItemData(advancement=False, id=16777294, type='Key'), + 'Great_Slash': HKItemData(advancement=True, id=16777239, type='Skill'), + 'Greenpath': HKItemData(advancement=True, id=0, type='Event'), + 'Greenpath-QG': HKItemData(advancement=True, id=0, type='Event'), + 'Greenpath_Map': HKItemData(advancement=False, id=16777477, type='Map'), + 'Greenpath_Stag': HKItemData(advancement=True, id=16777492, type='Stag'), + 'Grimmchild': HKItemData(advancement=True, id=16777282, type='Charm'), + 'Grub-Basin_Requires_Dive': HKItemData(advancement=True, id=16777452, type='Grub'), + 'Grub-Basin_Requires_Wings': HKItemData(advancement=True, id=16777451, type='Grub'), + "Grub-Beast's_Den": HKItemData(advancement=True, id=16777446, type='Grub'), + 'Grub-City_of_Tears_Guarded': HKItemData(advancement=True, id=16777459, type='Grub'), + 'Grub-City_of_Tears_Left': HKItemData(advancement=True, id=16777456, type='Grub'), + 'Grub-Collector_1': HKItemData(advancement=True, id=16777473, type='Grub'), + 'Grub-Collector_2': HKItemData(advancement=True, id=16777474, type='Grub'), + 'Grub-Collector_3': HKItemData(advancement=True, id=16777475, type='Grub'), + 'Grub-Crossroads_Acid': HKItemData(advancement=True, id=16777430, type='Grub'), + 'Grub-Crossroads_Center': HKItemData(advancement=True, id=16777431, type='Grub'), + 'Grub-Crossroads_Guarded': HKItemData(advancement=True, id=16777434, type='Grub'), + 'Grub-Crossroads_Spike': HKItemData(advancement=True, id=16777433, type='Grub'), + 'Grub-Crossroads_Stag': HKItemData(advancement=True, id=16777432, type='Grub'), + 'Grub-Crystal_Heart': HKItemData(advancement=True, id=16777467, type='Grub'), + 'Grub-Crystal_Peak_Below_Chest': HKItemData(advancement=True, id=16777462, type='Grub'), + 'Grub-Crystal_Peak_Crushers': HKItemData(advancement=True, id=16777466, type='Grub'), + 'Grub-Crystal_Peak_Mimic': HKItemData(advancement=True, id=16777465, type='Grub'), + 'Grub-Crystal_Peak_Spike': HKItemData(advancement=True, id=16777464, type='Grub'), + 'Grub-Crystallized_Mound': HKItemData(advancement=True, id=16777463, type='Grub'), + 'Grub-Dark_Deepnest': HKItemData(advancement=True, id=16777445, type='Grub'), + 'Grub-Deepnest_Mimic': HKItemData(advancement=True, id=16777442, type='Grub'), + 'Grub-Deepnest_Nosk': HKItemData(advancement=True, id=16777443, type='Grub'), + 'Grub-Deepnest_Spike': HKItemData(advancement=True, id=16777444, type='Grub'), + 'Grub-Fog_Canyon': HKItemData(advancement=True, id=16777439, type='Grub'), + 'Grub-Fungal_Bouncy': HKItemData(advancement=True, id=16777440, type='Grub'), + 'Grub-Fungal_Spore_Shroom': HKItemData(advancement=True, id=16777441, type='Grub'), + 'Grub-Greenpath_Cornifer': HKItemData(advancement=True, id=16777435, type='Grub'), + 'Grub-Greenpath_Journal': HKItemData(advancement=True, id=16777436, type='Grub'), + 'Grub-Greenpath_MMC': HKItemData(advancement=True, id=16777437, type='Grub'), + 'Grub-Greenpath_Stag': HKItemData(advancement=True, id=16777438, type='Grub'), + 'Grub-Hallownest_Crown': HKItemData(advancement=True, id=16777468, type='Grub'), + 'Grub-Hive_External': HKItemData(advancement=True, id=16777449, type='Grub'), + 'Grub-Hive_Internal': HKItemData(advancement=True, id=16777450, type='Grub'), + 'Grub-Howling_Cliffs': HKItemData(advancement=True, id=16777469, type='Grub'), + "Grub-King's_Station": HKItemData(advancement=True, id=16777460, type='Grub'), + "Grub-Kingdom's_Edge_Camp": HKItemData(advancement=True, id=16777448, type='Grub'), + "Grub-Kingdom's_Edge_Oro": HKItemData(advancement=True, id=16777447, type='Grub'), + "Grub-Queen's_Gardens_Marmu": HKItemData(advancement=True, id=16777471, type='Grub'), + "Grub-Queen's_Gardens_Stag": HKItemData(advancement=True, id=16777470, type='Grub'), + "Grub-Queen's_Gardens_Top": HKItemData(advancement=True, id=16777472, type='Grub'), + 'Grub-Resting_Grounds': HKItemData(advancement=True, id=16777461, type='Grub'), + 'Grub-Soul_Sanctum': HKItemData(advancement=True, id=16777457, type='Grub'), + "Grub-Watcher's_Spire": HKItemData(advancement=True, id=16777458, type='Grub'), + 'Grub-Waterways_East': HKItemData(advancement=True, id=16777454, type='Grub'), + 'Grub-Waterways_Main': HKItemData(advancement=True, id=16777453, type='Grub'), + 'Grub-Waterways_Requires_Tram': HKItemData(advancement=True, id=16777455, type='Grub'), + "Grubberfly's_Elegy": HKItemData(advancement=True, id=16777275, type='Charm'), + 'Grubfather': HKItemData(advancement=False, id=16777509, type='Fake'), + 'Grubsong': HKItemData(advancement=False, id=16777243, type='Charm'), + "Hallownest's_Crown": HKItemData(advancement=True, id=0, type='Event'), + "Hallownest_Seal-Beast's_Den": HKItemData(advancement=False, id=16777389, type='Relic'), + 'Hallownest_Seal-City_Rafters': HKItemData(advancement=False, id=16777385, type='Relic'), + 'Hallownest_Seal-Crossroads_Well': HKItemData(advancement=False, id=16777374, type='Relic'), + 'Hallownest_Seal-Deepnest_By_Mantis_Lords': HKItemData(advancement=False, id=16777388, type='Relic'), + 'Hallownest_Seal-Fog_Canyon_East': HKItemData(advancement=False, id=16777378, type='Relic'), + 'Hallownest_Seal-Fog_Canyon_West': HKItemData(advancement=False, id=16777377, type='Relic'), + 'Hallownest_Seal-Fungal_Wastes_Sporgs': HKItemData(advancement=False, id=16777380, type='Relic'), + 'Hallownest_Seal-Greenpath': HKItemData(advancement=False, id=16777376, type='Relic'), + 'Hallownest_Seal-Grubs': HKItemData(advancement=False, id=16777375, type='Relic'), + "Hallownest_Seal-King's_Station": HKItemData(advancement=False, id=16777384, type='Relic'), + 'Hallownest_Seal-Mantis_Lords': HKItemData(advancement=False, id=16777381, type='Relic'), + "Hallownest_Seal-Queen's_Gardens": HKItemData(advancement=False, id=16777390, type='Relic'), + "Hallownest_Seal-Queen's_Station": HKItemData(advancement=False, id=16777379, type='Relic'), + 'Hallownest_Seal-Resting_Grounds_Catacombs': HKItemData(advancement=False, id=16777383, type='Relic'), + 'Hallownest_Seal-Seer': HKItemData(advancement=False, id=16777382, type='Relic'), + 'Hallownest_Seal-Soul_Sanctum': HKItemData(advancement=False, id=16777386, type='Relic'), + 'Hallownest_Seal-Watcher_Knight': HKItemData(advancement=False, id=16777387, type='Relic'), + 'Heavy_Blow': HKItemData(advancement=False, id=16777255, type='Charm'), + 'Herrah': HKItemData(advancement=True, id=16777219, type='Dreamer'), + 'Hidden_Station_Stag': HKItemData(advancement=True, id=16777499, type='Stag'), + 'Hive': HKItemData(advancement=True, id=0, type='Event'), + 'Hiveblood': HKItemData(advancement=False, id=16777269, type='Charm'), + 'Howling_Cliffs': HKItemData(advancement=True, id=0, type='Event'), + 'Howling_Cliffs_Map': HKItemData(advancement=False, id=16777486, type='Map'), + 'Howling_Wraiths': HKItemData(advancement=True, id=16777235, type='Skill'), + "Isma's_Grove": HKItemData(advancement=True, id=0, type='Event'), + "Isma's_Tear": HKItemData(advancement=True, id=16777227, type='Skill'), + "Joni's_Blessing": HKItemData(advancement=True, id=16777267, type='Charm'), + 'Junk_Pit': HKItemData(advancement=True, id=0, type='Event'), + "King's_Brand": HKItemData(advancement=True, id=16777293, type='Key'), + "King's_Idol-Cliffs": HKItemData(advancement=False, id=16777392, type='Relic'), + "King's_Idol-Crystal_Peak": HKItemData(advancement=False, id=16777393, type='Relic'), + "King's_Idol-Deepnest": HKItemData(advancement=False, id=16777398, type='Relic'), + "King's_Idol-Dung_Defender": HKItemData(advancement=False, id=16777395, type='Relic'), + "King's_Idol-Glade_of_Hope": HKItemData(advancement=False, id=16777394, type='Relic'), + "King's_Idol-Great_Hopper": HKItemData(advancement=False, id=16777396, type='Relic'), + "King's_Idol-Grubs": HKItemData(advancement=False, id=16777391, type='Relic'), + "King's_Idol-Pale_Lurker": HKItemData(advancement=False, id=16777397, type='Relic'), + "King's_Pass": HKItemData(advancement=True, id=0, type='Event'), + "King's_Station_Stag": HKItemData(advancement=True, id=16777496, type='Stag'), + 'King_Fragment': HKItemData(advancement=True, id=16777277, type='Charm'), + "Kingdom's_Edge_Map": HKItemData(advancement=False, id=16777483, type='Map'), + 'Lake_of_Unn': HKItemData(advancement=True, id=0, type='Event'), + 'Left_City': HKItemData(advancement=True, id=0, type='Event'), + 'Left_Elevator': HKItemData(advancement=True, id=0, type='Event'), + 'Left_Fog_Canyon': HKItemData(advancement=True, id=0, type='Event'), + 'Lifeblood_Cocoon-Ancestral_Mound': HKItemData(advancement=False, id=16777502, type='Cocoon'), + 'Lifeblood_Cocoon-Failed_Tramway': HKItemData(advancement=False, id=16777506, type='Cocoon'), + 'Lifeblood_Cocoon-Fog_Canyon_West': HKItemData(advancement=False, id=16777504, type='Cocoon'), + 'Lifeblood_Cocoon-Galien': HKItemData(advancement=False, id=16777507, type='Cocoon'), + 'Lifeblood_Cocoon-Greenpath': HKItemData(advancement=False, id=16777503, type='Cocoon'), + "Lifeblood_Cocoon-King's_Pass": HKItemData(advancement=False, id=16777501, type='Cocoon'), + "Lifeblood_Cocoon-Kingdom's_Edge": HKItemData(advancement=False, id=16777508, type='Cocoon'), + 'Lifeblood_Cocoon-Mantis_Village': HKItemData(advancement=False, id=16777505, type='Cocoon'), + 'Lifeblood_Core': HKItemData(advancement=True, id=16777249, type='Charm'), + 'Lifeblood_Heart': HKItemData(advancement=True, id=16777248, type='Charm'), + 'Longnail': HKItemData(advancement=False, id=16777258, type='Charm'), + 'Love_Key': HKItemData(advancement=True, id=16777292, type='Key'), + 'Lower_Basin': HKItemData(advancement=True, id=0, type='Event'), + "Lower_King's_Station": HKItemData(advancement=True, id=0, type='Event'), + "Lower_Kingdom's_Edge": HKItemData(advancement=True, id=0, type='Event'), + 'Lower_Left_Waterways': HKItemData(advancement=True, id=0, type='Event'), + 'Lower_Resting_Grounds': HKItemData(advancement=True, id=0, type='Event'), + 'Lower_Tram': HKItemData(advancement=True, id=0, type='Event'), + 'Lumafly_Lantern': HKItemData(advancement=True, id=16777284, type='Key'), + 'Lurien': HKItemData(advancement=True, id=16777217, type='Dreamer'), + 'Mantis_Claw': HKItemData(advancement=True, id=16777223, type='Skill'), + 'Mantis_Outskirts': HKItemData(advancement=True, id=0, type='Event'), + 'Mantis_Village': HKItemData(advancement=True, id=0, type='Event'), + 'Mark_of_Pride': HKItemData(advancement=True, id=16777253, type='Charm'), + 'Mask_Shard-5_Grubs': HKItemData(advancement=False, id=16777301, type='Mask'), + 'Mask_Shard-Bretta': HKItemData(advancement=False, id=16777311, type='Mask'), + 'Mask_Shard-Brooding_Mawlek': HKItemData(advancement=False, id=16777302, type='Mask'), + 'Mask_Shard-Crossroads_Goam': HKItemData(advancement=False, id=16777303, type='Mask'), + 'Mask_Shard-Deepnest': HKItemData(advancement=False, id=16777306, type='Mask'), + 'Mask_Shard-Enraged_Guardian': HKItemData(advancement=False, id=16777308, type='Mask'), + 'Mask_Shard-Grey_Mourner': HKItemData(advancement=False, id=16777310, type='Mask'), + 'Mask_Shard-Hive': HKItemData(advancement=False, id=16777309, type='Mask'), + "Mask_Shard-Queen's_Station": HKItemData(advancement=False, id=16777305, type='Mask'), + 'Mask_Shard-Seer': HKItemData(advancement=False, id=16777300, type='Mask'), + 'Mask_Shard-Sly1': HKItemData(advancement=False, id=16777296, type='Mask'), + 'Mask_Shard-Sly2': HKItemData(advancement=False, id=16777297, type='Mask'), + 'Mask_Shard-Sly3': HKItemData(advancement=False, id=16777298, type='Mask'), + 'Mask_Shard-Sly4': HKItemData(advancement=False, id=16777299, type='Mask'), + 'Mask_Shard-Stone_Sanctuary': HKItemData(advancement=False, id=16777304, type='Mask'), + 'Mask_Shard-Waterways': HKItemData(advancement=False, id=16777307, type='Mask'), + 'Mid_Basin': HKItemData(advancement=True, id=0, type='Event'), + 'Monarch_Wings': HKItemData(advancement=True, id=16777225, type='Skill'), + 'Monomon': HKItemData(advancement=True, id=16777218, type='Dreamer'), + 'Mothwing_Cloak': HKItemData(advancement=True, id=16777222, type='Skill'), + "Nailmaster's_Glory": HKItemData(advancement=False, id=16777266, type='Charm'), + 'Oro_Bench': HKItemData(advancement=True, id=0, type='Event'), + 'Overgrown_Mound': HKItemData(advancement=True, id=0, type='Event'), + 'Palace_Grounds': HKItemData(advancement=True, id=0, type='Event'), + 'Pale_Lurker_Area': HKItemData(advancement=True, id=0, type='Event'), + 'Pale_Ore-Basin': HKItemData(advancement=False, id=16777325, type='Ore'), + 'Pale_Ore-Colosseum': HKItemData(advancement=False, id=16777330, type='Ore'), + 'Pale_Ore-Crystal_Peak': HKItemData(advancement=False, id=16777326, type='Ore'), + 'Pale_Ore-Grubs': HKItemData(advancement=False, id=16777329, type='Ore'), + 'Pale_Ore-Nosk': HKItemData(advancement=False, id=16777327, type='Ore'), + 'Pale_Ore-Seer': HKItemData(advancement=False, id=16777328, type='Ore'), + 'Placeholder': HKItemData(advancement=False, id=16777512, type='Fake'), + 'Pleasure_House': HKItemData(advancement=True, id=0, type='Event'), + "Queen's_Gardens_Map": HKItemData(advancement=False, id=16777488, type='Map'), + "Queen's_Gardens_Stag": HKItemData(advancement=True, id=16777494, type='Stag'), + "Queen's_Station": HKItemData(advancement=True, id=0, type='Event'), + "Queen's_Station_Stag": HKItemData(advancement=True, id=16777493, type='Stag'), + 'Queen_Fragment': HKItemData(advancement=True, id=16777276, type='Charm'), + 'Quick_Focus': HKItemData(advancement=False, id=16777247, type='Charm'), + 'Quick_Slash': HKItemData(advancement=False, id=16777272, type='Charm'), + "Rancid_Egg-Beast's_Den": HKItemData(advancement=False, id=16777351, type='Egg'), + 'Rancid_Egg-Blue_Lake': HKItemData(advancement=False, id=16777345, type='Egg'), + 'Rancid_Egg-City_of_Tears_Left': HKItemData(advancement=False, id=16777349, type='Egg'), + 'Rancid_Egg-City_of_Tears_Pleasure_House': HKItemData(advancement=False, id=16777350, type='Egg'), + 'Rancid_Egg-Crystal_Peak_Dark_Room': HKItemData(advancement=False, id=16777347, type='Egg'), + 'Rancid_Egg-Crystal_Peak_Dive_Entrance': HKItemData(advancement=False, id=16777346, type='Egg'), + 'Rancid_Egg-Crystal_Peak_Tall_Room': HKItemData(advancement=False, id=16777348, type='Egg'), + 'Rancid_Egg-Dark_Deepnest': HKItemData(advancement=False, id=16777352, type='Egg'), + 'Rancid_Egg-Fungal_Core': HKItemData(advancement=False, id=16777343, type='Egg'), + 'Rancid_Egg-Grubs': HKItemData(advancement=False, id=16777341, type='Egg'), + 'Rancid_Egg-Near_Quick_Slash': HKItemData(advancement=False, id=16777354, type='Egg'), + "Rancid_Egg-Queen's_Gardens": HKItemData(advancement=False, id=16777344, type='Egg'), + 'Rancid_Egg-Sheo': HKItemData(advancement=False, id=16777342, type='Egg'), + 'Rancid_Egg-Sly': HKItemData(advancement=False, id=16777340, type='Egg'), + "Rancid_Egg-Upper_Kingdom's_Edge": HKItemData(advancement=False, id=16777355, type='Egg'), + 'Rancid_Egg-Waterways_East': HKItemData(advancement=False, id=16777356, type='Egg'), + 'Rancid_Egg-Waterways_Main': HKItemData(advancement=False, id=16777357, type='Egg'), + 'Rancid_Egg-Waterways_West_Bluggsac': HKItemData(advancement=False, id=16777358, type='Egg'), + 'Rancid_Egg-Waterways_West_Pickup': HKItemData(advancement=False, id=16777359, type='Egg'), + "Rancid_Egg-Weaver's_Den": HKItemData(advancement=False, id=16777353, type='Egg'), + 'Resting_Grounds_Map': HKItemData(advancement=False, id=16777489, type='Map'), + 'Resting_Grounds_Stag': HKItemData(advancement=True, id=16777497, type='Stag'), + 'Right_City': HKItemData(advancement=True, id=0, type='Event'), + 'Right_Elevator': HKItemData(advancement=True, id=0, type='Event'), + 'Right_Fog_Canyon': HKItemData(advancement=True, id=0, type='Event'), + 'Right_Waterways': HKItemData(advancement=True, id=0, type='Event'), + 'Royal_Waterways_Map': HKItemData(advancement=False, id=16777485, type='Map'), + 'Seer': HKItemData(advancement=False, id=16777510, type='Fake'), + 'Shade_Cloak': HKItemData(advancement=True, id=16777226, type='Skill'), + 'Shade_Soul': HKItemData(advancement=True, id=16777232, type='Skill'), + 'Shaman_Stone': HKItemData(advancement=False, id=16777259, type='Charm'), + 'Shape_of_Unn': HKItemData(advancement=False, id=16777268, type='Charm'), + 'Sharp_Shadow': HKItemData(advancement=True, id=16777256, type='Charm'), + "Shopkeeper's_Key": HKItemData(advancement=True, id=16777290, type='Key'), + 'Simple_Key-Basin': HKItemData(advancement=True, id=16777287, type='Key'), + 'Simple_Key-City': HKItemData(advancement=True, id=16777288, type='Key'), + 'Simple_Key-Lurker': HKItemData(advancement=True, id=16777289, type='Key'), + 'Simple_Key-Sly': HKItemData(advancement=True, id=16777286, type='Key'), + 'Soul_Catcher': HKItemData(advancement=False, id=16777260, type='Charm'), + 'Soul_Eater': HKItemData(advancement=False, id=16777261, type='Charm'), + 'Soul_Sanctum': HKItemData(advancement=True, id=0, type='Event'), + 'Spell_Twister': HKItemData(advancement=False, id=16777273, type='Charm'), + 'Spirits_Glade': HKItemData(advancement=True, id=0, type='Event'), + 'Spore_Shroom': HKItemData(advancement=True, id=16777257, type='Charm'), + 'Sprintmaster': HKItemData(advancement=True, id=16777279, type='Charm'), + 'Stag_Nest': HKItemData(advancement=True, id=0, type='Event'), + 'Stag_Nest_Stag': HKItemData(advancement=True, id=16777500, type='Stag'), + 'Stalwart_Shell': HKItemData(advancement=False, id=16777244, type='Charm'), + 'Steady_Body': HKItemData(advancement=False, id=16777254, type='Charm'), + 'Stone_Sanctuary': HKItemData(advancement=True, id=0, type='Event'), + "Teacher's_Archives": HKItemData(advancement=True, id=0, type='Event'), + 'Thorns_of_Agony': HKItemData(advancement=False, id=16777252, type='Charm'), + "Top_Kingdom's_Edge": HKItemData(advancement=True, id=0, type='Event'), + "Top_Left_Queen's_Gardens": HKItemData(advancement=True, id=0, type='Event'), + "Top_Right_Queen's_Gardens": HKItemData(advancement=True, id=0, type='Event'), + 'Tower_of_Love': HKItemData(advancement=True, id=0, type='Event'), + 'Tram_Pass': HKItemData(advancement=True, id=16777285, type='Key'), + 'Upper_Basin': HKItemData(advancement=True, id=0, type='Event'), + 'Upper_Crystal_Peak': HKItemData(advancement=True, id=0, type='Event'), + 'Upper_Deepnest': HKItemData(advancement=True, id=0, type='Event'), + "Upper_King's_Station": HKItemData(advancement=True, id=0, type='Event'), + "Upper_Kingdom's_Edge": HKItemData(advancement=True, id=0, type='Event'), + 'Upper_Left_Waterways': HKItemData(advancement=True, id=0, type='Event'), + 'Upper_Resting_Grounds': HKItemData(advancement=True, id=0, type='Event'), + 'Upper_Tram': HKItemData(advancement=True, id=0, type='Event'), + 'Vengeful_Spirit': HKItemData(advancement=True, id=16777231, type='Skill'), + 'Vessel_Fragment-Basin': HKItemData(advancement=False, id=16777318, type='Vessel'), + 'Vessel_Fragment-City': HKItemData(advancement=False, id=16777316, type='Vessel'), + 'Vessel_Fragment-Crossroads': HKItemData(advancement=False, id=16777317, type='Vessel'), + 'Vessel_Fragment-Deepnest': HKItemData(advancement=False, id=16777319, type='Vessel'), + 'Vessel_Fragment-Greenpath': HKItemData(advancement=False, id=16777315, type='Vessel'), + 'Vessel_Fragment-Seer': HKItemData(advancement=False, id=16777314, type='Vessel'), + 'Vessel_Fragment-Sly1': HKItemData(advancement=False, id=16777312, type='Vessel'), + 'Vessel_Fragment-Sly2': HKItemData(advancement=False, id=16777313, type='Vessel'), + 'Vessel_Fragment-Stag_Nest': HKItemData(advancement=False, id=16777320, type='Vessel'), + 'Void_Heart': HKItemData(advancement=True, id=16777278, type='Charm'), + "Wanderer's_Journal-Above_Mantis_Village": HKItemData(advancement=False, id=16777364, type='Relic'), + "Wanderer's_Journal-Ancient_Basin": HKItemData(advancement=False, id=16777370, type='Relic'), + "Wanderer's_Journal-City_Storerooms": HKItemData(advancement=False, id=16777369, type='Relic'), + "Wanderer's_Journal-Cliffs": HKItemData(advancement=False, id=16777360, type='Relic'), + "Wanderer's_Journal-Crystal_Peak_Crawlers": HKItemData(advancement=False, id=16777365, type='Relic'), + "Wanderer's_Journal-Fungal_Wastes_Thorns_Gauntlet": HKItemData(advancement=False, id=16777363, type='Relic'), + "Wanderer's_Journal-Greenpath_Lower": HKItemData(advancement=False, id=16777362, type='Relic'), + "Wanderer's_Journal-Greenpath_Stag": HKItemData(advancement=False, id=16777361, type='Relic'), + "Wanderer's_Journal-King's_Station": HKItemData(advancement=False, id=16777367, type='Relic'), + "Wanderer's_Journal-Kingdom's_Edge_Camp": HKItemData(advancement=False, id=16777372, type='Relic'), + "Wanderer's_Journal-Kingdom's_Edge_Entrance": HKItemData(advancement=False, id=16777371, type='Relic'), + "Wanderer's_Journal-Kingdom's_Edge_Requires_Dive": HKItemData(advancement=False, id=16777373, type='Relic'), + "Wanderer's_Journal-Pleasure_House": HKItemData(advancement=False, id=16777368, type='Relic'), + "Wanderer's_Journal-Resting_Grounds_Catacombs": HKItemData(advancement=False, id=16777366, type='Relic'), + 'Waterways_Shaft': HKItemData(advancement=True, id=0, type='Event'), + 'Wayward_Compass': HKItemData(advancement=False, id=16777242, type='Charm'), + "Weaver's_Den": HKItemData(advancement=True, id=0, type='Event'), + 'Weaversong': HKItemData(advancement=True, id=16777281, type='Charm'), + 'Whispering_Root-Ancestral_Mound': HKItemData(advancement=True, id=16777416, type='Root'), + 'Whispering_Root-City': HKItemData(advancement=True, id=16777411, type='Root'), + 'Whispering_Root-Crossroads': HKItemData(advancement=True, id=16777403, type='Root'), + 'Whispering_Root-Crystal_Peak': HKItemData(advancement=True, id=16777414, type='Root'), + 'Whispering_Root-Deepnest': HKItemData(advancement=True, id=16777407, type='Root'), + 'Whispering_Root-Greenpath': HKItemData(advancement=True, id=16777404, type='Root'), + 'Whispering_Root-Hive': HKItemData(advancement=True, id=16777417, type='Root'), + 'Whispering_Root-Howling_Cliffs': HKItemData(advancement=True, id=16777415, type='Root'), + 'Whispering_Root-Kingdoms_Edge': HKItemData(advancement=True, id=16777409, type='Root'), + 'Whispering_Root-Leg_Eater': HKItemData(advancement=True, id=16777405, type='Root'), + 'Whispering_Root-Mantis_Village': HKItemData(advancement=True, id=16777406, type='Root'), + 'Whispering_Root-Queens_Gardens': HKItemData(advancement=True, id=16777408, type='Root'), + 'Whispering_Root-Resting_Grounds': HKItemData(advancement=True, id=16777412, type='Root'), + 'Whispering_Root-Spirits_Glade': HKItemData(advancement=True, id=16777413, type='Root'), + 'Whispering_Root-Waterways': HKItemData(advancement=True, id=16777410, type='Root'), + 'World_Sense': HKItemData(advancement=False, id=16777220, type='Dreamer')} + +lookup_id_to_name = {data.id: item_name for item_name, data in item_table.items()} \ No newline at end of file diff --git a/worlds/hk/Locations.py b/worlds/hk/Locations.py index 1f687bd2..2eff5590 100644 --- a/worlds/hk/Locations.py +++ b/worlds/hk/Locations.py @@ -1,1018 +1,304 @@ -locations = \ -{ 17825793: { 'name': 'Lurien', - 'scene': 'Ruins2_Watcher_Room', - 'x': 58.0, - 'y': 136.0}, - 17825794: { 'name': 'Monomon', - 'scene': 'Fungus3_archive_02', - 'x': 54.0, - 'y': 89.0}, - 17825795: { 'name': 'Herrah', - 'scene': 'Deepnest_Spider_Town', - 'x': 68.0, - 'y': 154.0}, - 17825796: { 'name': 'World_Sense', - 'scene': 'Room_Final_Boss_Atrium', - 'x': 202.0, - 'y': 7.0}, - 17825797: {'name': 'Dreamer', 'scene': None, 'x': 0, 'y': 0}, - 17825798: {'name': 'Mothwing_Cloak', 'scene': 'Fungus1_04', 'x': 0, 'y': 0}, - 17825799: {'name': 'Mantis_Claw', 'scene': 'Fungus2_14', 'x': 0, 'y': 0}, - 17825800: {'name': 'Crystal_Heart', 'scene': 'Mines_31', 'x': 0, 'y': 0}, - 17825801: {'name': 'Monarch_Wings', 'scene': 'Abyss_21', 'x': 0, 'y': 0}, - 17825802: {'name': 'Shade_Cloak', 'scene': 'Abyss_10', 'x': 0, 'y': 0}, - 17825803: {'name': "Isma's_Tear", 'scene': 'Waterways_13', 'x': 0, 'y': 0}, - 17825804: { 'name': 'Dream_Nail', - 'scene': 'Dream_Nailcollection', - 'x': 0, - 'y': 0}, - 17825805: { 'name': 'Dream_Gate', - 'scene': 'RestingGrounds_07', - 'x': 30.0, - 'y': 10.0}, - 17825806: { 'name': 'Awoken_Dream_Nail', - 'scene': 'RestingGrounds_07', - 'x': 21.0, - 'y': 10.0}, - 17825807: { 'name': 'Vengeful_Spirit', - 'scene': 'Crossroads_ShamanTemple', - 'x': 0, - 'y': 0}, - 17825808: {'name': 'Shade_Soul', 'scene': 'Ruins1_31b', 'x': 0, 'y': 0}, - 17825809: {'name': 'Desolate_Dive', 'scene': 'Ruins1_24', 'x': 0, 'y': 0}, - 17825810: {'name': 'Descending_Dark', 'scene': 'Mines_35', 'x': 0, 'y': 0}, - 17825811: { 'name': 'Howling_Wraiths', - 'scene': 'Room_Fungus_Shaman', - 'x': 0, - 'y': 0}, - 17825812: {'name': 'Abyss_Shriek', 'scene': 'Abyss_12', 'x': 0, 'y': 0}, - 17825813: { 'name': 'Cyclone_Slash', - 'scene': 'Room_nailmaster', - 'x': 0, - 'y': 0}, - 17825814: { 'name': 'Dash_Slash', - 'scene': 'Room_nailmaster_03', - 'x': 0, - 'y': 0}, - 17825815: { 'name': 'Great_Slash', - 'scene': 'Room_nailmaster_02', - 'x': 0, - 'y': 0}, - 17825816: {'name': 'Focus', 'scene': 'Tutorial_01', 'x': 111.5, 'y': 31.4}, - 17825817: {'name': 'Gathering_Swarm', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825818: { 'name': 'Wayward_Compass', - 'scene': 'Room_mapper', - 'x': 0, - 'y': 0}, - 17825819: { 'name': 'Grubsong', - 'scene': 'Crossroads_38', - 'x': 51.0, - 'y': 4.0}, - 17825820: {'name': 'Stalwart_Shell', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825821: {'name': 'Baldur_Shell', 'scene': 'Fungus1_28', 'x': 0, 'y': 0}, - 17825822: { 'name': 'Fury_of_the_Fallen', - 'scene': 'Tutorial_01', - 'x': 0, - 'y': 0}, - 17825823: { 'name': 'Quick_Focus', - 'scene': 'Room_Charm_Shop', - 'x': 0, - 'y': 0}, - 17825824: { 'name': 'Lifeblood_Heart', - 'scene': 'Room_Charm_Shop', - 'x': 0, - 'y': 0}, - 17825825: {'name': 'Lifeblood_Core', 'scene': 'Abyss_08', 'x': 0, 'y': 0}, - 17825826: { 'name': "Defender's_Crest", - 'scene': 'Waterways_05', - 'x': 0, - 'y': 0}, - 17825827: {'name': 'Flukenest', 'scene': 'Waterways_12', 'x': 0, 'y': 0}, - 17825828: { 'name': 'Thorns_of_Agony', - 'scene': 'Fungus1_14', - 'x': 0, - 'y': 0}, - 17825829: {'name': 'Mark_of_Pride', 'scene': 'Fungus2_31', 'x': 0, 'y': 0}, - 17825830: { 'name': 'Steady_Body', - 'scene': 'Room_Charm_Shop', - 'x': 0, - 'y': 0}, - 17825831: {'name': 'Heavy_Blow', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825832: {'name': 'Sharp_Shadow', 'scene': 'Deepnest_44', 'x': 0, 'y': 0}, - 17825833: {'name': 'Spore_Shroom', 'scene': 'Fungus2_20', 'x': 0, 'y': 0}, - 17825834: {'name': 'Longnail', 'scene': 'Room_Charm_Shop', 'x': 0, 'y': 0}, - 17825835: { 'name': 'Shaman_Stone', - 'scene': 'Room_Charm_Shop', - 'x': 0, - 'y': 0}, - 17825836: { 'name': 'Soul_Catcher', - 'scene': 'Crossroads_ShamanTemple', - 'x': 0, - 'y': 0}, - 17825837: { 'name': 'Soul_Eater', - 'scene': 'RestingGrounds_10', - 'x': 0, - 'y': 0}, - 17825838: { 'name': 'Glowing_Womb', - 'scene': 'Crossroads_22', - 'x': 0, - 'y': 0}, - 17825839: {'name': 'Fragile_Heart', 'scene': 'Fungus2_26', 'x': 0, 'y': 0}, - 17825840: {'name': 'Fragile_Greed', 'scene': 'Fungus2_26', 'x': 0, 'y': 0}, - 17825841: { 'name': 'Fragile_Strength', - 'scene': 'Fungus2_26', - 'x': 0, - 'y': 0}, - 17825842: { 'name': "Nailmaster's_Glory", - 'scene': 'Room_Sly_Storeroom', - 'x': 0, - 'y': 0}, - 17825843: {'name': "Joni's_Blessing", 'scene': 'Cliffs_05', 'x': 0, 'y': 0}, - 17825844: {'name': 'Shape_of_Unn', 'scene': 'Fungus1_Slug', 'x': 0, 'y': 0}, - 17825845: {'name': 'Hiveblood', 'scene': 'Hive_05', 'x': 0, 'y': 0}, - 17825846: { 'name': 'Dream_Wielder', - 'scene': 'RestingGrounds_07', - 'x': 36.0, - 'y': 10.0}, - 17825847: {'name': 'Dashmaster', 'scene': 'Fungus2_23', 'x': 0, 'y': 0}, - 17825848: { 'name': 'Quick_Slash', - 'scene': 'Deepnest_East_14b', - 'x': 0, - 'y': 0}, - 17825849: {'name': 'Spell_Twister', 'scene': 'Ruins1_30', 'x': 0, 'y': 0}, - 17825850: {'name': 'Deep_Focus', 'scene': 'Mines_36', 'x': 0, 'y': 0}, - 17825851: { 'name': "Grubberfly's_Elegy", - 'scene': 'Crossroads_38', - 'x': 36.0, - 'y': 4.0}, - 17825852: {'name': 'Queen_Fragment', 'scene': 'Room_Queen', 'x': 0, 'y': 0}, - 17825853: { 'name': 'King_Fragment', - 'scene': 'White_Palace_09', - 'x': 0, - 'y': 0}, - 17825854: { 'name': 'Void_Heart', - 'scene': 'Abyss_15', - 'x': 141.0, - 'y': 11.0}, - 17825855: {'name': 'Sprintmaster', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825856: { 'name': 'Dreamshield', - 'scene': 'RestingGrounds_17', - 'x': 0, - 'y': 0}, - 17825857: { 'name': 'Weaversong', - 'scene': 'Deepnest_45_v02', - 'x': 0, - 'y': 0}, - 17825858: { 'name': 'Grimmchild', - 'scene': 'Grimm_Main_Tent', - 'x': 75.0, - 'y': 7.0}, - 17825859: {'name': 'City_Crest', 'scene': 'Crossroads_10', 'x': 0, 'y': 0}, - 17825860: {'name': 'Lumafly_Lantern', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825861: {'name': 'Tram_Pass', 'scene': 'Deepnest_26b', 'x': 0, 'y': 0}, - 17825862: {'name': 'Simple_Key-Sly', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825863: {'name': 'Simple_Key-Basin', 'scene': 'Abyss_20', 'x': 0, 'y': 0}, - 17825864: {'name': 'Simple_Key-City', 'scene': 'Ruins1_17', 'x': 0, 'y': 0}, - 17825865: { 'name': 'Simple_Key-Lurker', - 'scene': 'GG_Lurker', - 'x': 169.5, - 'y': 52.4}, - 17825866: {'name': "Shopkeeper's_Key", 'scene': 'Mines_11', 'x': 0, 'y': 0}, - 17825867: {'name': 'Elegant_Key', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825868: {'name': 'Love_Key', 'scene': 'Fungus3_39', 'x': 0, 'y': 0}, - 17825869: {'name': "King's_Brand", 'scene': 'Room_Wyrm', 'x': 0, 'y': 0}, - 17825870: {'name': 'Godtuner', 'scene': 'GG_Waterways', 'x': 0, 'y': 0}, - 17825871: {'name': "Collector's_Map", 'scene': 'Ruins2_11', 'x': 0, 'y': 0}, - 17825872: {'name': 'Mask_Shard-Sly1', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825873: {'name': 'Mask_Shard-Sly2', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825874: {'name': 'Mask_Shard-Sly3', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825875: {'name': 'Mask_Shard-Sly4', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825876: { 'name': 'Mask_Shard-Seer', - 'scene': 'RestingGrounds_07', - 'x': 24.0, - 'y': 10.0}, - 17825877: { 'name': 'Mask_Shard-5_Grubs', - 'scene': 'Crossroads_38', - 'x': 54.0, - 'y': 4.0}, - 17825878: { 'name': 'Mask_Shard-Brooding_Mawlek', - 'scene': 'Crossroads_09', - 'x': 0, - 'y': 0}, - 17825879: { 'name': 'Mask_Shard-Crossroads_Goam', - 'scene': 'Crossroads_13', - 'x': 0, - 'y': 0}, - 17825880: { 'name': 'Mask_Shard-Stone_Sanctuary', - 'scene': 'Fungus1_36', - 'x': 0, - 'y': 0}, - 17825881: { 'name': "Mask_Shard-Queen's_Station", - 'scene': 'Fungus2_01', - 'x': 0, - 'y': 0}, - 17825882: { 'name': 'Mask_Shard-Deepnest', - 'scene': 'Fungus2_25', - 'x': 0, - 'y': 0}, - 17825883: { 'name': 'Mask_Shard-Waterways', - 'scene': 'Waterways_04b', - 'x': 0, - 'y': 0}, - 17825884: { 'name': 'Mask_Shard-Enraged_Guardian', - 'scene': 'Mines_32', - 'x': 0, - 'y': 0}, - 17825885: {'name': 'Mask_Shard-Hive', 'scene': 'Hive_04', 'x': 0, 'y': 0}, - 17825886: { 'name': 'Mask_Shard-Grey_Mourner', - 'scene': 'Room_Mansion', - 'x': 0, - 'y': 0}, - 17825887: { 'name': 'Mask_Shard-Bretta', - 'scene': 'Room_Bretta', - 'x': 0, - 'y': 0}, - 17825888: { 'name': 'Vessel_Fragment-Sly1', - 'scene': 'Room_shop', - 'x': 0, - 'y': 0}, - 17825889: { 'name': 'Vessel_Fragment-Sly2', - 'scene': 'Room_shop', - 'x': 0, - 'y': 0}, - 17825890: { 'name': 'Vessel_Fragment-Seer', - 'scene': 'RestingGrounds_07', - 'x': 33.0, - 'y': 10.0}, - 17825891: { 'name': 'Vessel_Fragment-Greenpath', - 'scene': 'Fungus1_13', - 'x': 0, - 'y': 0}, - 17825892: { 'name': 'Vessel_Fragment-City', - 'scene': 'Ruins2_09', - 'x': 0, - 'y': 0}, - 17825893: { 'name': 'Vessel_Fragment-Crossroads', - 'scene': 'Crossroads_37', - 'x': 0, - 'y': 0}, - 17825894: { 'name': 'Vessel_Fragment-Basin', - 'scene': 'Abyss_04', - 'x': 65.0, - 'y': 58.0}, - 17825895: { 'name': 'Vessel_Fragment-Deepnest', - 'scene': 'Deepnest_38', - 'x': 0, - 'y': 0}, - 17825896: { 'name': 'Vessel_Fragment-Stag_Nest', - 'scene': 'Cliffs_03', - 'x': 0, - 'y': 0}, - 17825897: { 'name': 'Charm_Notch-Shrumal_Ogres', - 'scene': 'Fungus2_05', - 'x': 0, - 'y': 0}, - 17825898: { 'name': 'Charm_Notch-Fog_Canyon', - 'scene': 'Fungus3_28', - 'x': 0, - 'y': 0}, - 17825899: { 'name': 'Charm_Notch-Colosseum', - 'scene': 'Room_Colosseum_Bronze', - 'x': 0, - 'y': 0}, - 17825900: { 'name': 'Charm_Notch-Grimm', - 'scene': 'Grimm_Main_Tent', - 'x': 0, - 'y': 0}, - 17825901: {'name': 'Pale_Ore-Basin', 'scene': 'Abyss_17', 'x': 0, 'y': 0}, - 17825902: { 'name': 'Pale_Ore-Crystal_Peak', - 'scene': 'Mines_34', - 'x': 0, - 'y': 0}, - 17825903: {'name': 'Pale_Ore-Nosk', 'scene': 'Deepnest_32', 'x': 0, 'y': 0}, - 17825904: { 'name': 'Pale_Ore-Seer', - 'scene': 'RestingGrounds_07', - 'x': 39.0, - 'y': 10.0}, - 17825905: { 'name': 'Pale_Ore-Grubs', - 'scene': 'Crossroads_38', - 'x': 42.0, - 'y': 4.0}, - 17825906: { 'name': 'Pale_Ore-Colosseum', - 'scene': 'Room_Colosseum_Silver', - 'x': 0, - 'y': 0}, - 17825907: { 'name': '200_Geo-False_Knight_Chest', - 'scene': 'Crossroads_10', - 'x': 0, - 'y': 0}, - 17825908: { 'name': '380_Geo-Soul_Master_Chest', - 'scene': 'Ruins1_32', - 'x': 0, - 'y': 0}, - 17825909: { 'name': '655_Geo-Watcher_Knights_Chest', - 'scene': 'Ruins2_03', - 'x': 0, - 'y': 0}, - 17825910: { 'name': '85_Geo-Greenpath_Chest', - 'scene': 'Fungus1_13', - 'x': 0, - 'y': 0}, - 17825911: { 'name': '620_Geo-Mantis_Lords_Chest', - 'scene': 'Fungus2_31', - 'x': 0, - 'y': 0}, - 17825912: { 'name': '150_Geo-Resting_Grounds_Chest', - 'scene': 'RestingGrounds_10', - 'x': 0, - 'y': 0}, - 17825913: { 'name': '80_Geo-Crystal_Peak_Chest', - 'scene': 'Mines_37', - 'x': 0, - 'y': 0}, - 17825914: { 'name': '160_Geo-Weavers_Den_Chest', - 'scene': 'Deepnest_45_v02', - 'x': 0, - 'y': 0}, - 17825915: {'name': '1_Geo', 'scene': None, 'x': 0, 'y': 0}, - 17825916: {'name': 'Rancid_Egg-Sly', 'scene': 'Room_shop', 'x': 0, 'y': 0}, - 17825917: { 'name': 'Rancid_Egg-Grubs', - 'scene': 'Crossroads_38', - 'x': 48.0, - 'y': 4.0}, - 17825918: { 'name': 'Rancid_Egg-Sheo', - 'scene': 'Fungus1_15', - 'x': 0, - 'y': 0}, - 17825919: { 'name': 'Rancid_Egg-Fungal_Core', - 'scene': 'Fungus2_29', - 'x': 0, - 'y': 0}, - 17825920: { 'name': "Rancid_Egg-Queen's_Gardens", - 'scene': 'Fungus3_34', - 'x': 0, - 'y': 0}, - 17825921: { 'name': 'Rancid_Egg-Blue_Lake', - 'scene': 'Crossroads_50', - 'x': 0, - 'y': 0}, - 17825922: { 'name': 'Rancid_Egg-Crystal_Peak_Dive_Entrance', - 'scene': 'Mines_01', - 'x': 0, - 'y': 0}, - 17825923: { 'name': 'Rancid_Egg-Crystal_Peak_Dark_Room', - 'scene': 'Mines_29', - 'x': 0, - 'y': 0}, - 17825924: { 'name': 'Rancid_Egg-Crystal_Peak_Tall_Room', - 'scene': 'Mines_20', - 'x': 0, - 'y': 0}, - 17825925: { 'name': 'Rancid_Egg-City_of_Tears_Left', - 'scene': 'Ruins1_05c', - 'x': 0, - 'y': 0}, - 17825926: { 'name': 'Rancid_Egg-City_of_Tears_Pleasure_House', - 'scene': 'Ruins_Elevator', - 'x': 0, - 'y': 0}, - 17825927: { 'name': "Rancid_Egg-Beast's_Den", - 'scene': 'Deepnest_Spider_Town', - 'x': 0, - 'y': 0}, - 17825928: { 'name': 'Rancid_Egg-Dark_Deepnest', - 'scene': 'Deepnest_39', - 'x': 0, - 'y': 0}, - 17825929: { 'name': "Rancid_Egg-Weaver's_Den", - 'scene': 'Deepnest_45_v02', - 'x': 0, - 'y': 0}, - 17825930: { 'name': 'Rancid_Egg-Near_Quick_Slash', - 'scene': 'Deepnest_East_14', - 'x': 0, - 'y': 0}, - 17825931: { 'name': "Rancid_Egg-Upper_Kingdom's_Edge", - 'scene': 'Deepnest_East_07', - 'x': 0, - 'y': 0}, - 17825932: { 'name': 'Rancid_Egg-Waterways_East', - 'scene': 'Waterways_07', - 'x': 0, - 'y': 0}, - 17825933: { 'name': 'Rancid_Egg-Waterways_Main', - 'scene': 'Waterways_02', - 'x': 0, - 'y': 0}, - 17825934: { 'name': 'Rancid_Egg-Waterways_West_Bluggsac', - 'scene': 'Waterways_04', - 'x': 0, - 'y': 0}, - 17825935: { 'name': 'Rancid_Egg-Waterways_West_Pickup', - 'scene': 'Waterways_04b', - 'x': 0, - 'y': 0}, - 17825936: { 'name': "Wanderer's_Journal-Cliffs", - 'scene': 'Cliffs_01', - 'x': 0, - 'y': 0}, - 17825937: { 'name': "Wanderer's_Journal-Greenpath_Stag", - 'scene': 'Fungus1_22', - 'x': 0, - 'y': 0}, - 17825938: { 'name': "Wanderer's_Journal-Greenpath_Lower", - 'scene': 'Fungus1_11', - 'x': 0, - 'y': 0}, - 17825939: { 'name': "Wanderer's_Journal-Fungal_Wastes_Thorns_Gauntlet", - 'scene': 'Fungus2_04', - 'x': 0, - 'y': 0}, - 17825940: { 'name': "Wanderer's_Journal-Above_Mantis_Village", - 'scene': 'Fungus2_17', - 'x': 0, - 'y': 0}, - 17825941: { 'name': "Wanderer's_Journal-Crystal_Peak_Crawlers", - 'scene': 'Mines_20', - 'x': 0, - 'y': 0}, - 17825942: { 'name': "Wanderer's_Journal-Resting_Grounds_Catacombs", - 'scene': 'RestingGrounds_10', - 'x': 0, - 'y': 0}, - 17825943: { 'name': "Wanderer's_Journal-King's_Station", - 'scene': 'Ruins2_05', - 'x': 0, - 'y': 0}, - 17825944: { 'name': "Wanderer's_Journal-Pleasure_House", - 'scene': 'Ruins_Elevator', - 'x': 0, - 'y': 0}, - 17825945: { 'name': "Wanderer's_Journal-City_Storerooms", - 'scene': 'Ruins1_28', - 'x': 0, - 'y': 0}, - 17825946: { 'name': "Wanderer's_Journal-Ancient_Basin", - 'scene': 'Abyss_02', - 'x': 0, - 'y': 0}, - 17825947: { 'name': "Wanderer's_Journal-Kingdom's_Edge_Entrance", - 'scene': 'Deepnest_East_07', - 'x': 0, - 'y': 0}, - 17825948: { 'name': "Wanderer's_Journal-Kingdom's_Edge_Camp", - 'scene': 'Deepnest_East_13', - 'x': 0, - 'y': 0}, - 17825949: { 'name': "Wanderer's_Journal-Kingdom's_Edge_Requires_Dive", - 'scene': 'Deepnest_East_18', - 'x': 0, - 'y': 0}, - 17825950: { 'name': 'Hallownest_Seal-Crossroads_Well', - 'scene': 'Crossroads_01', - 'x': 0, - 'y': 0}, - 17825951: { 'name': 'Hallownest_Seal-Grubs', - 'scene': 'Crossroads_38', - 'x': 45.0, - 'y': 4.0}, - 17825952: { 'name': 'Hallownest_Seal-Greenpath', - 'scene': 'Fungus1_10', - 'x': 0, - 'y': 0}, - 17825953: { 'name': 'Hallownest_Seal-Fog_Canyon_West', - 'scene': 'Fungus3_30', - 'x': 0, - 'y': 0}, - 17825954: { 'name': 'Hallownest_Seal-Fog_Canyon_East', - 'scene': 'Fungus3_26', - 'x': 0, - 'y': 0}, - 17825955: { 'name': "Hallownest_Seal-Queen's_Station", - 'scene': 'Fungus2_34', - 'x': 0, - 'y': 0}, - 17825956: { 'name': 'Hallownest_Seal-Fungal_Wastes_Sporgs', - 'scene': 'Fungus2_03', - 'x': 0, - 'y': 0}, - 17825957: { 'name': 'Hallownest_Seal-Mantis_Lords', - 'scene': 'Fungus2_31', - 'x': 0, - 'y': 0}, - 17825958: { 'name': 'Hallownest_Seal-Seer', - 'scene': 'RestingGrounds_07', - 'x': 42.0, - 'y': 10.0}, - 17825959: { 'name': 'Hallownest_Seal-Resting_Grounds_Catacombs', - 'scene': 'RestingGrounds_10', - 'x': 0, - 'y': 0}, - 17825960: { 'name': "Hallownest_Seal-King's_Station", - 'scene': 'Ruins2_08', - 'x': 0, - 'y': 0}, - 17825961: { 'name': 'Hallownest_Seal-City_Rafters', - 'scene': 'Ruins1_03', - 'x': 0, - 'y': 0}, - 17825962: { 'name': 'Hallownest_Seal-Soul_Sanctum', - 'scene': 'Ruins1_32', - 'x': 0, - 'y': 0}, - 17825963: { 'name': 'Hallownest_Seal-Watcher_Knight', - 'scene': 'Ruins2_03', - 'x': 0, - 'y': 0}, - 17825964: { 'name': 'Hallownest_Seal-Deepnest_By_Mantis_Lords', - 'scene': 'Deepnest_16', - 'x': 0, - 'y': 0}, - 17825965: { 'name': "Hallownest_Seal-Beast's_Den", - 'scene': 'Deepnest_Spider_Town', - 'x': 0, - 'y': 0}, - 17825966: { 'name': "Hallownest_Seal-Queen's_Gardens", - 'scene': 'Fungus3_48', - 'x': 0, - 'y': 0}, - 17825967: { 'name': "King's_Idol-Grubs", - 'scene': 'Crossroads_38', - 'x': 39.0, - 'y': 4.0}, - 17825968: { 'name': "King's_Idol-Cliffs", - 'scene': 'Cliffs_01', - 'x': 0, - 'y': 0}, - 17825969: { 'name': "King's_Idol-Crystal_Peak", - 'scene': 'Mines_30', - 'x': 0, - 'y': 0}, - 17825970: { 'name': "King's_Idol-Glade_of_Hope", - 'scene': 'RestingGrounds_08', - 'x': 0, - 'y': 0}, - 17825971: { 'name': "King's_Idol-Dung_Defender", - 'scene': 'Waterways_15', - 'x': 0, - 'y': 0}, - 17825972: { 'name': "King's_Idol-Great_Hopper", - 'scene': 'Deepnest_East_08', - 'x': 0, - 'y': 0}, - 17825973: { 'name': "King's_Idol-Pale_Lurker", - 'scene': 'GG_Lurker', - 'x': 0, - 'y': 0}, - 17825974: { 'name': "King's_Idol-Deepnest", - 'scene': 'Deepnest_33', - 'x': 0, - 'y': 0}, - 17825975: { 'name': 'Arcane_Egg-Seer', - 'scene': 'RestingGrounds_07', - 'x': 27.0, - 'y': 10.0}, - 17825976: { 'name': 'Arcane_Egg-Lifeblood_Core', - 'scene': 'Abyss_08', - 'x': 0, - 'y': 0}, - 17825977: { 'name': 'Arcane_Egg-Shade_Cloak', - 'scene': 'Abyss_10', - 'x': 0, - 'y': 0}, - 17825978: { 'name': 'Arcane_Egg-Birthplace', - 'scene': 'Abyss_15', - 'x': 0, - 'y': 0}, - 17825979: { 'name': 'Whispering_Root-Crossroads', - 'scene': 'Crossroads_07', - 'x': 6.8, - 'y': 103.2}, - 17825980: { 'name': 'Whispering_Root-Greenpath', - 'scene': 'Fungus1_13', - 'x': 28.7, - 'y': 23.3}, - 17825981: { 'name': 'Whispering_Root-Leg_Eater', - 'scene': 'Fungus2_33', - 'x': 34.7, - 'y': 7.4}, - 17825982: { 'name': 'Whispering_Root-Mantis_Village', - 'scene': 'Fungus2_17', - 'x': 27.7, - 'y': 3.4}, - 17825983: { 'name': 'Whispering_Root-Deepnest', - 'scene': 'Deepnest_39', - 'x': 13.4, - 'y': 36.3}, - 17825984: { 'name': 'Whispering_Root-Queens_Gardens', - 'scene': 'Fungus3_11', - 'x': 34.0, - 'y': 8.5}, - 17825985: { 'name': 'Whispering_Root-Kingdoms_Edge', - 'scene': 'Deepnest_East_07', - 'x': 59.6, - 'y': 10.2}, - 17825986: { 'name': 'Whispering_Root-Waterways', - 'scene': 'Abyss_01', - 'x': 37.9, - 'y': 10.4}, - 17825987: { 'name': 'Whispering_Root-City', - 'scene': 'Ruins1_17', - 'x': 78.0, - 'y': 22.0}, - 17825988: { 'name': 'Whispering_Root-Resting_Grounds', - 'scene': 'RestingGrounds_05', - 'x': 15.7, - 'y': 69.4}, - 17825989: { 'name': 'Whispering_Root-Spirits_Glade', - 'scene': 'RestingGrounds_08', - 'x': 153.4, - 'y': 56.5}, - 17825990: { 'name': 'Whispering_Root-Crystal_Peak', - 'scene': 'Mines_23', - 'x': 91.6, - 'y': 8.0}, - 17825991: { 'name': 'Whispering_Root-Howling_Cliffs', - 'scene': 'Cliffs_01', - 'x': 83.7, - 'y': 15.3}, - 17825992: { 'name': 'Whispering_Root-Ancestral_Mound', - 'scene': 'Crossroads_ShamanTemple', - 'x': 20.4, - 'y': 60.4}, - 17825993: { 'name': 'Whispering_Root-Hive', - 'scene': 'Hive_02', - 'x': 168.7, - 'y': 24.1}, - 17825994: { 'name': 'Boss_Essence-Elder_Hu', - 'scene': 'Fungus2_32', - 'x': 0, - 'y': 0}, - 17825995: { 'name': 'Boss_Essence-Xero', - 'scene': 'RestingGrounds_02_boss', - 'x': 0, - 'y': 0}, - 17825996: { 'name': 'Boss_Essence-Gorb', - 'scene': 'Cliffs_02_boss', - 'x': 0, - 'y': 0}, - 17825997: { 'name': 'Boss_Essence-Marmu', - 'scene': 'Fungus3_40_boss', - 'x': 0, - 'y': 0}, - 17825998: { 'name': 'Boss_Essence-No_Eyes', - 'scene': 'Fungus1_35', - 'x': 0, - 'y': 0}, - 17825999: { 'name': 'Boss_Essence-Galien', - 'scene': 'Deepnest_40', - 'x': 0, - 'y': 0}, - 17826000: { 'name': 'Boss_Essence-Markoth', - 'scene': 'Deepnest_East_10', - 'x': 0, - 'y': 0}, - 17826001: { 'name': 'Boss_Essence-Failed_Champion', - 'scene': 'Crossroads_10', - 'x': 0, - 'y': 0}, - 17826002: { 'name': 'Boss_Essence-Soul_Tyrant', - 'scene': 'Ruins1_24_boss_defeated', - 'x': 0, - 'y': 0}, - 17826003: { 'name': 'Boss_Essence-Lost_Kin', - 'scene': 'Abyss_19', - 'x': 0, - 'y': 0}, - 17826004: { 'name': 'Boss_Essence-White_Defender', - 'scene': 'Waterways_15', - 'x': 0, - 'y': 0}, - 17826005: { 'name': 'Boss_Essence-Grey_Prince_Zote', - 'scene': 'Room_Bretta_Basement', - 'x': 0, - 'y': 0}, - 17826006: { 'name': 'Grub-Crossroads_Acid', - 'scene': 'Crossroads_35', - 'x': 0, - 'y': 0}, - 17826007: { 'name': 'Grub-Crossroads_Center', - 'scene': 'Crossroads_05', - 'x': 0, - 'y': 0}, - 17826008: { 'name': 'Grub-Crossroads_Stag', - 'scene': 'Crossroads_03', - 'x': 0, - 'y': 0}, - 17826009: { 'name': 'Grub-Crossroads_Spike', - 'scene': 'Crossroads_31', - 'x': 0, - 'y': 0}, - 17826010: { 'name': 'Grub-Crossroads_Guarded', - 'scene': 'Crossroads_48', - 'x': 0, - 'y': 0}, - 17826011: { 'name': 'Grub-Greenpath_Cornifer', - 'scene': 'Fungus1_06', - 'x': 0, - 'y': 0}, - 17826012: { 'name': 'Grub-Greenpath_Journal', - 'scene': 'Fungus1_07', - 'x': 0, - 'y': 0}, - 17826013: { 'name': 'Grub-Greenpath_MMC', - 'scene': 'Fungus1_13', - 'x': 0, - 'y': 0}, - 17826014: { 'name': 'Grub-Greenpath_Stag', - 'scene': 'Fungus1_21', - 'x': 0, - 'y': 0}, - 17826015: { 'name': 'Grub-Fog_Canyon', - 'scene': 'Fungus3_47', - 'x': 0, - 'y': 0}, - 17826016: { 'name': 'Grub-Fungal_Bouncy', - 'scene': 'Fungus2_18', - 'x': 0, - 'y': 0}, - 17826017: { 'name': 'Grub-Fungal_Spore_Shroom', - 'scene': 'Fungus2_20', - 'x': 0, - 'y': 0}, - 17826018: { 'name': 'Grub-Deepnest_Mimic', - 'scene': 'Deepnest_36', - 'x': 0, - 'y': 0}, - 17826019: { 'name': 'Grub-Deepnest_Nosk', - 'scene': 'Deepnest_31', - 'x': 0, - 'y': 0}, - 17826020: { 'name': 'Grub-Deepnest_Spike', - 'scene': 'Deepnest_03', - 'x': 0, - 'y': 0}, - 17826021: { 'name': 'Grub-Dark_Deepnest', - 'scene': 'Deepnest_39', - 'x': 0, - 'y': 0}, - 17826022: { 'name': "Grub-Beast's_Den", - 'scene': 'Deepnest_Spider_Town', - 'x': 0, - 'y': 0}, - 17826023: { 'name': "Grub-Kingdom's_Edge_Oro", - 'scene': 'Deepnest_East_14', - 'x': 0, - 'y': 0}, - 17826024: { 'name': "Grub-Kingdom's_Edge_Camp", - 'scene': 'Deepnest_East_11', - 'x': 0, - 'y': 0}, - 17826025: { 'name': 'Grub-Hive_External', - 'scene': 'Hive_03', - 'x': 0, - 'y': 0}, - 17826026: { 'name': 'Grub-Hive_Internal', - 'scene': 'Hive_04', - 'x': 0, - 'y': 0}, - 17826027: { 'name': 'Grub-Basin_Requires_Wings', - 'scene': 'Abyss_19', - 'x': 0, - 'y': 0}, - 17826028: { 'name': 'Grub-Basin_Requires_Dive', - 'scene': 'Abyss_17', - 'x': 0, - 'y': 0}, - 17826029: { 'name': 'Grub-Waterways_Main', - 'scene': 'Waterways_04', - 'x': 0, - 'y': 0}, - 17826030: { 'name': 'Grub-Waterways_East', - 'scene': 'Waterways_13', - 'x': 0, - 'y': 0}, - 17826031: { 'name': 'Grub-Waterways_Requires_Tram', - 'scene': 'Waterways_14', - 'x': 0, - 'y': 0}, - 17826032: { 'name': 'Grub-City_of_Tears_Left', - 'scene': 'Ruins1_05', - 'x': 0, - 'y': 0}, - 17826033: { 'name': 'Grub-Soul_Sanctum', - 'scene': 'Ruins1_32', - 'x': 0, - 'y': 0}, - 17826034: { 'name': "Grub-Watcher's_Spire", - 'scene': 'Ruins2_03', - 'x': 0, - 'y': 0}, - 17826035: { 'name': 'Grub-City_of_Tears_Guarded', - 'scene': 'Ruins_House_01', - 'x': 0, - 'y': 0}, - 17826036: { 'name': "Grub-King's_Station", - 'scene': 'Ruins2_07', - 'x': 0, - 'y': 0}, - 17826037: { 'name': 'Grub-Resting_Grounds', - 'scene': 'RestingGrounds_10', - 'x': 0, - 'y': 0}, - 17826038: { 'name': 'Grub-Crystal_Peak_Below_Chest', - 'scene': 'Mines_04', - 'x': 0, - 'y': 0}, - 17826039: { 'name': 'Grub-Crystallized_Mound', - 'scene': 'Mines_35', - 'x': 0, - 'y': 0}, - 17826040: { 'name': 'Grub-Crystal_Peak_Spike', - 'scene': 'Mines_03', - 'x': 0, - 'y': 0}, - 17826041: { 'name': 'Grub-Crystal_Peak_Mimic', - 'scene': 'Mines_16', - 'x': 0, - 'y': 0}, - 17826042: { 'name': 'Grub-Crystal_Peak_Crushers', - 'scene': 'Mines_19', - 'x': 0, - 'y': 0}, - 17826043: { 'name': 'Grub-Crystal_Heart', - 'scene': 'Mines_31', - 'x': 0, - 'y': 0}, - 17826044: { 'name': 'Grub-Hallownest_Crown', - 'scene': 'Mines_24', - 'x': 0, - 'y': 0}, - 17826045: { 'name': 'Grub-Howling_Cliffs', - 'scene': 'Fungus1_28', - 'x': 0, - 'y': 0}, - 17826046: { 'name': "Grub-Queen's_Gardens_Stag", - 'scene': 'Fungus3_10', - 'x': 0, - 'y': 0}, - 17826047: { 'name': "Grub-Queen's_Gardens_Marmu", - 'scene': 'Fungus3_48', - 'x': 0, - 'y': 0}, - 17826048: { 'name': "Grub-Queen's_Gardens_Top", - 'scene': 'Fungus3_22', - 'x': 0, - 'y': 0}, - 17826049: { 'name': 'Grub-Collector_1', - 'scene': 'Ruins2_11', - 'x': 64.2, - 'y': 115.4}, - 17826050: { 'name': 'Grub-Collector_2', - 'scene': 'Ruins2_11', - 'x': 55.3, - 'y': 115.4}, - 17826051: { 'name': 'Grub-Collector_3', - 'scene': 'Ruins2_11', - 'x': 38.5, - 'y': 115.4}, - 17826052: { 'name': 'Crossroads_Map', - 'scene': 'Crossroads_33', - 'x': 36.5, - 'y': 34.0}, - 17826053: { 'name': 'Greenpath_Map', - 'scene': 'Fungus1_06', - 'x': 160.0, - 'y': 3.3}, - 17826054: { 'name': 'Fog_Canyon_Map', - 'scene': 'Fungus3_25', - 'x': 36.4, - 'y': 32.0}, - 17826055: { 'name': 'Fungal_Wastes_Map', - 'scene': 'Fungus2_18', - 'x': 11.0, - 'y': 35.0}, - 17826056: { 'name': 'Deepnest_Map-Upper', - 'scene': 'Deepnest_01b', - 'x': 7.8, - 'y': 4.5}, - 17826057: { 'name': 'Deepnest_Map-Right_[Gives_Quill]', - 'scene': 'Fungus2_25', - 'x': 49.5, - 'y': 23.2}, - 17826058: { 'name': 'Ancient_Basin_Map', - 'scene': 'Abyss_04', - 'x': 68.3, - 'y': 41.4}, - 17826059: { 'name': "Kingdom's_Edge_Map", - 'scene': 'Deepnest_East_03', - 'x': 7.5, - 'y': 60.1}, - 17826060: { 'name': 'City_of_Tears_Map', - 'scene': 'Ruins1_31', - 'x': 35.1, - 'y': 15.3}, - 17826061: { 'name': 'Royal_Waterways_Map', - 'scene': 'Waterways_09', - 'x': 25.4, - 'y': 30.5}, - 17826062: { 'name': 'Howling_Cliffs_Map', - 'scene': 'Cliffs_01', - 'x': 125.8, - 'y': 91.6}, - 17826063: { 'name': 'Crystal_Peak_Map', - 'scene': 'Mines_30', - 'x': 157.0, - 'y': 8.4}, - 17826064: { 'name': "Queen's_Gardens_Map", - 'scene': 'Fungus1_24', - 'x': 53.7, - 'y': 22.3}, - 17826065: { 'name': 'Resting_Grounds_Map', - 'scene': 'RestingGrounds_09', - 'x': 8.2, - 'y': 6.1}, - 17826066: { 'name': 'Dirtmouth_Stag', - 'scene': 'Room_Town_Stag_Station', - 'x': 39.4, - 'y': 20.4}, - 17826067: { 'name': 'Crossroads_Stag', - 'scene': 'Crossroads_47', - 'x': 19.7, - 'y': 6.4}, - 17826068: { 'name': 'Greenpath_Stag', - 'scene': 'Fungus1_16_alt', - 'x': 19.7, - 'y': 6.4}, - 17826069: { 'name': "Queen's_Station_Stag", - 'scene': 'Fungus2_02', - 'x': 20.3, - 'y': 6.4}, - 17826070: { 'name': "Queen's_Gardens_Stag", - 'scene': 'Fungus3_40', - 'x': 159.8, - 'y': 13.4}, - 17826071: { 'name': 'City_Storerooms_Stag', - 'scene': 'Ruins1_29', - 'x': 28.1, - 'y': 6.4}, - 17826072: { 'name': "King's_Station_Stag", - 'scene': 'Ruins2_08', - 'x': 28.1, - 'y': 6.4}, - 17826073: { 'name': 'Resting_Grounds_Stag', - 'scene': 'RestingGrounds_09', - 'x': 27.6, - 'y': 6.4}, - 17826074: { 'name': 'Distant_Village_Stag', - 'scene': 'Deepnest_09', - 'x': 27.6, - 'y': 6.4}, - 17826075: { 'name': 'Hidden_Station_Stag', - 'scene': 'Abyss_22', - 'x': 28.0, - 'y': 6.4}, - 17826076: { 'name': 'Stag_Nest_Stag', - 'scene': 'Cliffs_03', - 'x': 19.3, - 'y': 6.3}, - 17826077: { 'name': "Lifeblood_Cocoon-King's_Pass", - 'scene': 'Tutorial_01', - 'x': 58.3, - 'y': 58.4}, - 17826078: { 'name': 'Lifeblood_Cocoon-Ancestral_Mound', - 'scene': 'Crossroads_ShamanTemple', - 'x': 32.0, - 'y': 46.4}, - 17826079: { 'name': 'Lifeblood_Cocoon-Greenpath', - 'scene': 'Fungus1_32', - 'x': 33.3, - 'y': 23.4}, - 17826080: { 'name': 'Lifeblood_Cocoon-Fog_Canyon_West', - 'scene': 'Fungus3_30', - 'x': 5.2, - 'y': 7.4}, - 17826081: { 'name': 'Lifeblood_Cocoon-Mantis_Village', - 'scene': 'Fungus2_15', - 'x': 5.5, - 'y': 23.4}, - 17826082: { 'name': 'Lifeblood_Cocoon-Failed_Tramway', - 'scene': 'Deepnest_26', - 'x': 137.8, - 'y': 36.4}, - 17826083: { 'name': 'Lifeblood_Cocoon-Galien', - 'scene': 'Deepnest_40', - 'x': 72.8, - 'y': 48.4}, - 17826084: { 'name': "Lifeblood_Cocoon-Kingdom's_Edge", - 'scene': 'Deepnest_East_15', - 'x': 30.8, - 'y': 4.4}, - 17826085: {'name': 'Grubfather', 'scene': None, 'x': 0, 'y': 0}, - 17826086: {'name': 'Seer', 'scene': None, 'x': 0, 'y': 0}, - 17826087: {'name': 'Equipped', 'scene': None, 'x': 0, 'y': 0}, - 17826088: {'name': 'Placeholder', 'scene': None, 'x': 0, 'y': 0}} +# generated by https://github.com/Berserker66/HollowKnight.RandomizerMod/blob/master/extract_data.py +# do not edit manually + +lookup_id_to_name = \ +{ 17825793: 'Lurien', + 17825794: 'Monomon', + 17825795: 'Herrah', + 17825796: 'World_Sense', + 17825797: 'Dreamer', + 17825798: 'Mothwing_Cloak', + 17825799: 'Mantis_Claw', + 17825800: 'Crystal_Heart', + 17825801: 'Monarch_Wings', + 17825802: 'Shade_Cloak', + 17825803: "Isma's_Tear", + 17825804: 'Dream_Nail', + 17825805: 'Dream_Gate', + 17825806: 'Awoken_Dream_Nail', + 17825807: 'Vengeful_Spirit', + 17825808: 'Shade_Soul', + 17825809: 'Desolate_Dive', + 17825810: 'Descending_Dark', + 17825811: 'Howling_Wraiths', + 17825812: 'Abyss_Shriek', + 17825813: 'Cyclone_Slash', + 17825814: 'Dash_Slash', + 17825815: 'Great_Slash', + 17825816: 'Focus', + 17825817: 'Gathering_Swarm', + 17825818: 'Wayward_Compass', + 17825819: 'Grubsong', + 17825820: 'Stalwart_Shell', + 17825821: 'Baldur_Shell', + 17825822: 'Fury_of_the_Fallen', + 17825823: 'Quick_Focus', + 17825824: 'Lifeblood_Heart', + 17825825: 'Lifeblood_Core', + 17825826: "Defender's_Crest", + 17825827: 'Flukenest', + 17825828: 'Thorns_of_Agony', + 17825829: 'Mark_of_Pride', + 17825830: 'Steady_Body', + 17825831: 'Heavy_Blow', + 17825832: 'Sharp_Shadow', + 17825833: 'Spore_Shroom', + 17825834: 'Longnail', + 17825835: 'Shaman_Stone', + 17825836: 'Soul_Catcher', + 17825837: 'Soul_Eater', + 17825838: 'Glowing_Womb', + 17825839: 'Fragile_Heart', + 17825840: 'Fragile_Greed', + 17825841: 'Fragile_Strength', + 17825842: "Nailmaster's_Glory", + 17825843: "Joni's_Blessing", + 17825844: 'Shape_of_Unn', + 17825845: 'Hiveblood', + 17825846: 'Dream_Wielder', + 17825847: 'Dashmaster', + 17825848: 'Quick_Slash', + 17825849: 'Spell_Twister', + 17825850: 'Deep_Focus', + 17825851: "Grubberfly's_Elegy", + 17825852: 'Queen_Fragment', + 17825853: 'King_Fragment', + 17825854: 'Void_Heart', + 17825855: 'Sprintmaster', + 17825856: 'Dreamshield', + 17825857: 'Weaversong', + 17825858: 'Grimmchild', + 17825859: 'City_Crest', + 17825860: 'Lumafly_Lantern', + 17825861: 'Tram_Pass', + 17825862: 'Simple_Key-Sly', + 17825863: 'Simple_Key-Basin', + 17825864: 'Simple_Key-City', + 17825865: 'Simple_Key-Lurker', + 17825866: "Shopkeeper's_Key", + 17825867: 'Elegant_Key', + 17825868: 'Love_Key', + 17825869: "King's_Brand", + 17825870: 'Godtuner', + 17825871: "Collector's_Map", + 17825872: 'Mask_Shard-Sly1', + 17825873: 'Mask_Shard-Sly2', + 17825874: 'Mask_Shard-Sly3', + 17825875: 'Mask_Shard-Sly4', + 17825876: 'Mask_Shard-Seer', + 17825877: 'Mask_Shard-5_Grubs', + 17825878: 'Mask_Shard-Brooding_Mawlek', + 17825879: 'Mask_Shard-Crossroads_Goam', + 17825880: 'Mask_Shard-Stone_Sanctuary', + 17825881: "Mask_Shard-Queen's_Station", + 17825882: 'Mask_Shard-Deepnest', + 17825883: 'Mask_Shard-Waterways', + 17825884: 'Mask_Shard-Enraged_Guardian', + 17825885: 'Mask_Shard-Hive', + 17825886: 'Mask_Shard-Grey_Mourner', + 17825887: 'Mask_Shard-Bretta', + 17825888: 'Vessel_Fragment-Sly1', + 17825889: 'Vessel_Fragment-Sly2', + 17825890: 'Vessel_Fragment-Seer', + 17825891: 'Vessel_Fragment-Greenpath', + 17825892: 'Vessel_Fragment-City', + 17825893: 'Vessel_Fragment-Crossroads', + 17825894: 'Vessel_Fragment-Basin', + 17825895: 'Vessel_Fragment-Deepnest', + 17825896: 'Vessel_Fragment-Stag_Nest', + 17825897: 'Charm_Notch-Shrumal_Ogres', + 17825898: 'Charm_Notch-Fog_Canyon', + 17825899: 'Charm_Notch-Colosseum', + 17825900: 'Charm_Notch-Grimm', + 17825901: 'Pale_Ore-Basin', + 17825902: 'Pale_Ore-Crystal_Peak', + 17825903: 'Pale_Ore-Nosk', + 17825904: 'Pale_Ore-Seer', + 17825905: 'Pale_Ore-Grubs', + 17825906: 'Pale_Ore-Colosseum', + 17825907: '200_Geo-False_Knight_Chest', + 17825908: '380_Geo-Soul_Master_Chest', + 17825909: '655_Geo-Watcher_Knights_Chest', + 17825910: '85_Geo-Greenpath_Chest', + 17825911: '620_Geo-Mantis_Lords_Chest', + 17825912: '150_Geo-Resting_Grounds_Chest', + 17825913: '80_Geo-Crystal_Peak_Chest', + 17825914: '160_Geo-Weavers_Den_Chest', + 17825915: '1_Geo', + 17825916: 'Rancid_Egg-Sly', + 17825917: 'Rancid_Egg-Grubs', + 17825918: 'Rancid_Egg-Sheo', + 17825919: 'Rancid_Egg-Fungal_Core', + 17825920: "Rancid_Egg-Queen's_Gardens", + 17825921: 'Rancid_Egg-Blue_Lake', + 17825922: 'Rancid_Egg-Crystal_Peak_Dive_Entrance', + 17825923: 'Rancid_Egg-Crystal_Peak_Dark_Room', + 17825924: 'Rancid_Egg-Crystal_Peak_Tall_Room', + 17825925: 'Rancid_Egg-City_of_Tears_Left', + 17825926: 'Rancid_Egg-City_of_Tears_Pleasure_House', + 17825927: "Rancid_Egg-Beast's_Den", + 17825928: 'Rancid_Egg-Dark_Deepnest', + 17825929: "Rancid_Egg-Weaver's_Den", + 17825930: 'Rancid_Egg-Near_Quick_Slash', + 17825931: "Rancid_Egg-Upper_Kingdom's_Edge", + 17825932: 'Rancid_Egg-Waterways_East', + 17825933: 'Rancid_Egg-Waterways_Main', + 17825934: 'Rancid_Egg-Waterways_West_Bluggsac', + 17825935: 'Rancid_Egg-Waterways_West_Pickup', + 17825936: "Wanderer's_Journal-Cliffs", + 17825937: "Wanderer's_Journal-Greenpath_Stag", + 17825938: "Wanderer's_Journal-Greenpath_Lower", + 17825939: "Wanderer's_Journal-Fungal_Wastes_Thorns_Gauntlet", + 17825940: "Wanderer's_Journal-Above_Mantis_Village", + 17825941: "Wanderer's_Journal-Crystal_Peak_Crawlers", + 17825942: "Wanderer's_Journal-Resting_Grounds_Catacombs", + 17825943: "Wanderer's_Journal-King's_Station", + 17825944: "Wanderer's_Journal-Pleasure_House", + 17825945: "Wanderer's_Journal-City_Storerooms", + 17825946: "Wanderer's_Journal-Ancient_Basin", + 17825947: "Wanderer's_Journal-Kingdom's_Edge_Entrance", + 17825948: "Wanderer's_Journal-Kingdom's_Edge_Camp", + 17825949: "Wanderer's_Journal-Kingdom's_Edge_Requires_Dive", + 17825950: 'Hallownest_Seal-Crossroads_Well', + 17825951: 'Hallownest_Seal-Grubs', + 17825952: 'Hallownest_Seal-Greenpath', + 17825953: 'Hallownest_Seal-Fog_Canyon_West', + 17825954: 'Hallownest_Seal-Fog_Canyon_East', + 17825955: "Hallownest_Seal-Queen's_Station", + 17825956: 'Hallownest_Seal-Fungal_Wastes_Sporgs', + 17825957: 'Hallownest_Seal-Mantis_Lords', + 17825958: 'Hallownest_Seal-Seer', + 17825959: 'Hallownest_Seal-Resting_Grounds_Catacombs', + 17825960: "Hallownest_Seal-King's_Station", + 17825961: 'Hallownest_Seal-City_Rafters', + 17825962: 'Hallownest_Seal-Soul_Sanctum', + 17825963: 'Hallownest_Seal-Watcher_Knight', + 17825964: 'Hallownest_Seal-Deepnest_By_Mantis_Lords', + 17825965: "Hallownest_Seal-Beast's_Den", + 17825966: "Hallownest_Seal-Queen's_Gardens", + 17825967: "King's_Idol-Grubs", + 17825968: "King's_Idol-Cliffs", + 17825969: "King's_Idol-Crystal_Peak", + 17825970: "King's_Idol-Glade_of_Hope", + 17825971: "King's_Idol-Dung_Defender", + 17825972: "King's_Idol-Great_Hopper", + 17825973: "King's_Idol-Pale_Lurker", + 17825974: "King's_Idol-Deepnest", + 17825975: 'Arcane_Egg-Seer', + 17825976: 'Arcane_Egg-Lifeblood_Core', + 17825977: 'Arcane_Egg-Shade_Cloak', + 17825978: 'Arcane_Egg-Birthplace', + 17825979: 'Whispering_Root-Crossroads', + 17825980: 'Whispering_Root-Greenpath', + 17825981: 'Whispering_Root-Leg_Eater', + 17825982: 'Whispering_Root-Mantis_Village', + 17825983: 'Whispering_Root-Deepnest', + 17825984: 'Whispering_Root-Queens_Gardens', + 17825985: 'Whispering_Root-Kingdoms_Edge', + 17825986: 'Whispering_Root-Waterways', + 17825987: 'Whispering_Root-City', + 17825988: 'Whispering_Root-Resting_Grounds', + 17825989: 'Whispering_Root-Spirits_Glade', + 17825990: 'Whispering_Root-Crystal_Peak', + 17825991: 'Whispering_Root-Howling_Cliffs', + 17825992: 'Whispering_Root-Ancestral_Mound', + 17825993: 'Whispering_Root-Hive', + 17825994: 'Boss_Essence-Elder_Hu', + 17825995: 'Boss_Essence-Xero', + 17825996: 'Boss_Essence-Gorb', + 17825997: 'Boss_Essence-Marmu', + 17825998: 'Boss_Essence-No_Eyes', + 17825999: 'Boss_Essence-Galien', + 17826000: 'Boss_Essence-Markoth', + 17826001: 'Boss_Essence-Failed_Champion', + 17826002: 'Boss_Essence-Soul_Tyrant', + 17826003: 'Boss_Essence-Lost_Kin', + 17826004: 'Boss_Essence-White_Defender', + 17826005: 'Boss_Essence-Grey_Prince_Zote', + 17826006: 'Grub-Crossroads_Acid', + 17826007: 'Grub-Crossroads_Center', + 17826008: 'Grub-Crossroads_Stag', + 17826009: 'Grub-Crossroads_Spike', + 17826010: 'Grub-Crossroads_Guarded', + 17826011: 'Grub-Greenpath_Cornifer', + 17826012: 'Grub-Greenpath_Journal', + 17826013: 'Grub-Greenpath_MMC', + 17826014: 'Grub-Greenpath_Stag', + 17826015: 'Grub-Fog_Canyon', + 17826016: 'Grub-Fungal_Bouncy', + 17826017: 'Grub-Fungal_Spore_Shroom', + 17826018: 'Grub-Deepnest_Mimic', + 17826019: 'Grub-Deepnest_Nosk', + 17826020: 'Grub-Deepnest_Spike', + 17826021: 'Grub-Dark_Deepnest', + 17826022: "Grub-Beast's_Den", + 17826023: "Grub-Kingdom's_Edge_Oro", + 17826024: "Grub-Kingdom's_Edge_Camp", + 17826025: 'Grub-Hive_External', + 17826026: 'Grub-Hive_Internal', + 17826027: 'Grub-Basin_Requires_Wings', + 17826028: 'Grub-Basin_Requires_Dive', + 17826029: 'Grub-Waterways_Main', + 17826030: 'Grub-Waterways_East', + 17826031: 'Grub-Waterways_Requires_Tram', + 17826032: 'Grub-City_of_Tears_Left', + 17826033: 'Grub-Soul_Sanctum', + 17826034: "Grub-Watcher's_Spire", + 17826035: 'Grub-City_of_Tears_Guarded', + 17826036: "Grub-King's_Station", + 17826037: 'Grub-Resting_Grounds', + 17826038: 'Grub-Crystal_Peak_Below_Chest', + 17826039: 'Grub-Crystallized_Mound', + 17826040: 'Grub-Crystal_Peak_Spike', + 17826041: 'Grub-Crystal_Peak_Mimic', + 17826042: 'Grub-Crystal_Peak_Crushers', + 17826043: 'Grub-Crystal_Heart', + 17826044: 'Grub-Hallownest_Crown', + 17826045: 'Grub-Howling_Cliffs', + 17826046: "Grub-Queen's_Gardens_Stag", + 17826047: "Grub-Queen's_Gardens_Marmu", + 17826048: "Grub-Queen's_Gardens_Top", + 17826049: 'Grub-Collector_1', + 17826050: 'Grub-Collector_2', + 17826051: 'Grub-Collector_3', + 17826052: 'Crossroads_Map', + 17826053: 'Greenpath_Map', + 17826054: 'Fog_Canyon_Map', + 17826055: 'Fungal_Wastes_Map', + 17826056: 'Deepnest_Map-Upper', + 17826057: 'Deepnest_Map-Right_[Gives_Quill]', + 17826058: 'Ancient_Basin_Map', + 17826059: "Kingdom's_Edge_Map", + 17826060: 'City_of_Tears_Map', + 17826061: 'Royal_Waterways_Map', + 17826062: 'Howling_Cliffs_Map', + 17826063: 'Crystal_Peak_Map', + 17826064: "Queen's_Gardens_Map", + 17826065: 'Resting_Grounds_Map', + 17826066: 'Dirtmouth_Stag', + 17826067: 'Crossroads_Stag', + 17826068: 'Greenpath_Stag', + 17826069: "Queen's_Station_Stag", + 17826070: "Queen's_Gardens_Stag", + 17826071: 'City_Storerooms_Stag', + 17826072: "King's_Station_Stag", + 17826073: 'Resting_Grounds_Stag', + 17826074: 'Distant_Village_Stag', + 17826075: 'Hidden_Station_Stag', + 17826076: 'Stag_Nest_Stag', + 17826077: "Lifeblood_Cocoon-King's_Pass", + 17826078: 'Lifeblood_Cocoon-Ancestral_Mound', + 17826079: 'Lifeblood_Cocoon-Greenpath', + 17826080: 'Lifeblood_Cocoon-Fog_Canyon_West', + 17826081: 'Lifeblood_Cocoon-Mantis_Village', + 17826082: 'Lifeblood_Cocoon-Failed_Tramway', + 17826083: 'Lifeblood_Cocoon-Galien', + 17826084: "Lifeblood_Cocoon-Kingdom's_Edge", + 17826085: 'Grubfather', + 17826086: 'Seer', + 17826087: 'Equipped', + 17826088: 'Placeholder'} -lookup_id_to_name = {location_id: data["name"] for location_id, data in locations.items()} -lookup_name_to_id = {data["name"]: location_id for location_id, data in locations.items()} \ No newline at end of file + +lookup_name_to_id = {location_name: location_id for location_id, location_name in lookup_id_to_name.items()} \ No newline at end of file diff --git a/worlds/hk/Regions.py b/worlds/hk/Regions.py new file mode 100644 index 00000000..246f4b85 --- /dev/null +++ b/worlds/hk/Regions.py @@ -0,0 +1,13 @@ +# generated by https://github.com/Berserker66/HollowKnight.RandomizerMod/blob/master/extract_data.py +# do not edit manually + + +def create_regions(world, player: int): + from . import create_region + from .Items import item_table + from .Locations import lookup_name_to_id + world.regions += [ + create_region(world, player, 'Menu', None, ['Hollow Nest S&Q']), + create_region(world, player, 'Hollow Nest', [location for location in lookup_name_to_id] + + [item_name for item_name, item_data in item_table.items() if item_data.type == "Event"]) + ] diff --git a/worlds/hk/Rules.py b/worlds/hk/Rules.py new file mode 100644 index 00000000..3fa4f283 --- /dev/null +++ b/worlds/hk/Rules.py @@ -0,0 +1,360 @@ +# generated by https://github.com/Berserker66/HollowKnight.RandomizerMod/blob/master/extract_data.py +# do not edit manually + +from ..generic.Rules import set_rule + +def set_rules(world, player): + if world.logic[player] != 'nologic': + world.completion_condition[player] = lambda state: state.has('Lurien', player) and \ + state.has('Monomon', player) and \ + state.has('Herrah', player) + + set_rule(world.get_location("Lurien", player), lambda state: ((((state.has("Right_City", player) and state.has("Mantis_Claw", player)) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and (state.has("Monarch_Wings", player) or state.world.MILDSKIPS[player])) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Monomon", player), lambda state: ((((state.has("Teacher's_Archives", player) and state.has("Mantis_Claw", player)) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])) or state.world.SPICYSKIPS[player])) and (state.has("Isma's_Tear", player) or state.has("Crystal_Heart", player)))) + set_rule(world.get_location("Herrah", player), lambda state: ((state.has("Beast's_Den", player) and state.has("Mantis_Claw", player)) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("World_Sense", player), lambda state: (((state.has("Crossroads", player) and state.has("Lurien", player)) and state.has("Monomon", player)) and state.has("Herrah", player))) + set_rule(world.get_location("Mothwing_Cloak", player), lambda state: state.has("Greenpath", player)) + set_rule(world.get_location("Mantis_Claw", player), lambda state: (state.has("Mantis_Village", player) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or (state.has("Crystal_Heart", player) and state.has("Mantis_Claw", player))) or state.world.MILDSKIPS[player]))) + set_rule(world.get_location("Crystal_Heart", player), lambda state: (state.has("Upper_Crystal_Peak", player) and ((state.has("Crystal_Heart", player) or (state.has("Mantis_Claw", player) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))))) or (state.has("Monarch_Wings", player) and state.world.SHADESKIPS[player])))) + set_rule(world.get_location("Monarch_Wings", player), lambda state: ((state.has("Far_Left_Basin", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Shade_Cloak", player), lambda state: (state.has("Abyss", player) and ((state.has("Mantis_Claw", player) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player))) or (state.has("Monarch_Wings", player) and ((state.world.SHADESKIPS[player] or (state.has("Mothwing_Cloak", player) and state.has("Shade_Cloak", player))) or ((state.has("Queen_Fragment", player) and state.has("King_Fragment", player)) and state.has("Void_Heart", player))))))) + set_rule(world.get_location("Isma's_Tear", player), lambda state: state.has("Isma's_Grove", player)) + set_rule(world.get_location("Dream_Nail", player), lambda state: state.has("Upper_Resting_Grounds", player)) + set_rule(world.get_location("Dream_Gate", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(1000, player))) + set_rule(world.get_location("Awoken_Dream_Nail", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(1000, player))) + set_rule(world.get_location("Vengeful_Spirit", player), lambda state: state.has("Ancestral_Mound", player)) + set_rule(world.get_location("Shade_Soul", player), lambda state: ((state.has("Soul_Sanctum", player) and state.has("Elegant_Key", player)) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Desolate_Dive", player), lambda state: (state.has("Soul_Sanctum", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Descending_Dark", player), lambda state: ((state.has("Crystallized_Mound", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Howling_Wraiths", player), lambda state: state.has("Overgrown_Mound", player)) + set_rule(world.get_location("Abyss_Shriek", player), lambda state: (state.has("Abyss", player) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) + set_rule(world.get_location("Cyclone_Slash", player), lambda state: state.has("Howling_Cliffs", player)) + set_rule(world.get_location("Dash_Slash", player), lambda state: state.has("Oro_Bench", player)) + set_rule(world.get_location("Great_Slash", player), lambda state: (state.has("Greenpath", player) and (state.has("Mantis_Claw", player) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and (state.has("Crystal_Heart", player) or state.has("Monarch_Wings", player))) or (state.has("Monarch_Wings", player) and state.has("Crystal_Heart", player)))))) + set_rule(world.get_location("Focus", player), lambda state: state.has("King's_Pass", player)) + set_rule(world.get_location("Grubsong", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(30, player))) + set_rule(world.get_location("Baldur_Shell", player), lambda state: ((((((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.has("Grubberfly's_Elegy", player)) or state.has("Glowing_Womb", player)) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.has("Dash_Slash", player))) or (state.world.MILDSKIPS[player] and (state.has("Weaversong", player) or (state.has("Spore_Shroom", player) and (state.world.NOTCURSED[player] or state.has("Focus", player)))))) or (((state.has("Mark_of_Pride", player) or state.has("Cyclone_Slash", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.world.SPICYSKIPS[player])) and (state.has("Howling_Cliffs", player) or (state.has("Greenpath", player) and ((((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Crystal_Heart", player)) or state.world.SHADESKIPS[player]))))) + set_rule(world.get_location("Fury_of_the_Fallen", player), lambda state: state.has("King's_Pass", player)) + set_rule(world.get_location("Lifeblood_Core", player), lambda state: ((state.has("Abyss", player) and ((state.has("Lifeblood_Heart", player) or state.has("Lifeblood_Core", player)) or state.has("Joni's_Blessing", player))) and (state.world.SPICYSKIPS[player] or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.has("Monarch_Wings", player))))) + set_rule(world.get_location("Defender's_Crest", player), lambda state: ((state.has("Central_Left_Waterways", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player]))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Flukenest", player), lambda state: (state.has("Lower_Left_Waterways", player) and ((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])) and state.world.MILDSKIPS[player])) or (state.world.CURSED[player] and (state.has("Vengeful_Spirit", player) or state.has("Howling_Wraiths", player)))))) + set_rule(world.get_location("Thorns_of_Agony", player), lambda state: (state.has("Greenpath", player) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or (state.has("Mantis_Claw", player) and state.has("Crystal_Heart", player))))) + set_rule(world.get_location("Mark_of_Pride", player), lambda state: (state.has("Mantis_Village", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Sharp_Shadow", player), lambda state: (state.has("Deepnest", player) and (state.has("Mothwing_Cloak", player) and state.has("Shade_Cloak", player)))) + set_rule(world.get_location("Spore_Shroom", player), lambda state: ((state.has("Bottom_Left_Fungal_Wastes", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) and ((state.has("Isma's_Tear", player) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or (state.has("Mantis_Claw", player) and state.has("Crystal_Heart", player))))) + set_rule(world.get_location("Soul_Catcher", player), lambda state: (state.has("Ancestral_Mound", player) and ((state.has("Mantis_Claw", player) or (((((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.has("Grubberfly's_Elegy", player)) or state.has("Glowing_Womb", player)) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.has("Dash_Slash", player))) or (state.world.MILDSKIPS[player] and (state.has("Weaversong", player) or (state.has("Spore_Shroom", player) and (state.world.NOTCURSED[player] or state.has("Focus", player)))))) or (((state.has("Mark_of_Pride", player) or state.has("Cyclone_Slash", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.world.SPICYSKIPS[player]))) or (state.has("Monarch_Wings", player) and state.world.SHADESKIPS[player])))) + set_rule(world.get_location("Soul_Eater", player), lambda state: ((state.has("Upper_Resting_Grounds", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Glowing_Womb", player), lambda state: ((state.has("Crossroads", player) and (state.has("Crystal_Heart", player) or ((state.world.SPIKETUNNELS[player] and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and ((state.has("Dashmaster", player) or (state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player))) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))))) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or ((((state.has("Lurien", player) or state.has("Monomon", player)) or state.has("Herrah", player)) or state.has("Dreamer", player)) and state.world.SPICYSKIPS[player])))) + set_rule(world.get_location("Nailmaster's_Glory", player), lambda state: ((((state.has("Dirtmouth", player) and state.has("Crossroads", player)) and state.has("Cyclone_Slash", player)) and state.has("Dash_Slash", player)) and state.has("Great_Slash", player))) + set_rule(world.get_location("Joni's_Blessing", player), lambda state: (state.has("Howling_Cliffs", player) and (state.world.DARKROOMS[player] or state.has("Lumafly_Lantern", player)))) + set_rule(world.get_location("Shape_of_Unn", player), lambda state: (state.has("Lake_of_Unn", player) and (((state.has("Isma's_Tear", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) or ((((((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Crystal_Heart", player)) and state.world.ACIDSKIPS[player]) and state.has("Monarch_Wings", player)) and (((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and state.world.FIREBALLSKIPS[player]) or ((state.has("Sharp_Shadow", player) and state.has("Mothwing_Cloak", player)) and state.has("Shade_Cloak", player)))) and state.world.SPICYSKIPS[player])) or ((((state.world.SPICYSKIPS[player] and state.world.ACIDSKIPS[player]) and state.has("Monarch_Wings", player)) and state.has("Crystal_Heart", player)) and ((state.has("Sharp_Shadow", player) and state.has("Mothwing_Cloak", player)) and state.has("Shade_Cloak", player)))))) + set_rule(world.get_location("Hiveblood", player), lambda state: ((state.has("Hive", player) and ((state.has("Mantis_Claw", player) and state.has("Monarch_Wings", player)) or (state.world.MILDSKIPS[player] and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Dream_Wielder", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(1000, player))) + set_rule(world.get_location("Dashmaster", player), lambda state: state.has("Mantis_Outskirts", player)) + set_rule(world.get_location("Quick_Slash", player), lambda state: (((state.has("Oro_Bench", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.SPIKETUNNELS[player]))) + set_rule(world.get_location("Spell_Twister", player), lambda state: (state.has("Soul_Sanctum", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Deep_Focus", player), lambda state: (state.has("Upper_Crystal_Peak", player) and (((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) and state.has("Crystal_Heart", player)) or ((state.world.SPICYSKIPS[player] and state.has("Monarch_Wings", player)) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))))) + set_rule(world.get_location("Grubberfly's_Elegy", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(30, player))) + set_rule(world.get_location("Queen_Fragment", player), lambda state: (((state.has("Far_Queen's_Gardens", player) and (state.has("Mothwing_Cloak", player) and state.has("Shade_Cloak", player))) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("King_Fragment", player), lambda state: (((((state.has("Palace_Grounds", player) and ((state.has("Dream_Nail", player) and state.has("Dream_Gate", player)) and state.has("Awoken_Dream_Nail", player))) and state.has("Mantis_Claw", player)) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Monarch_Wings", player)) and state.has("Crystal_Heart", player))) + set_rule(world.get_location("Void_Heart", player), lambda state: ((((state.has("Abyss", player) and (state.has("Mothwing_Cloak", player) and state.has("Shade_Cloak", player))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and (((state.has("Queen_Fragment", player) and state.has("King_Fragment", player)) or (state.has("Queen_Fragment", player) and state.has("Void_Heart", player))) or (state.has("King_Fragment", player) and state.has("Void_Heart", player)))) and ((state.world.MILDSKIPS[player] or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Dreamshield", player), lambda state: state.has("Upper_Resting_Grounds", player)) + set_rule(world.get_location("Weaversong", player), lambda state: (state.has("Weaver's_Den", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Grimmchild", player), lambda state: (state.has("Dirtmouth", player) and ((state.has("Howling_Cliffs", player) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) or state.has("Grimmchild", player)))) + set_rule(world.get_location("City_Crest", player), lambda state: state.has("Crossroads", player)) + set_rule(world.get_location("Tram_Pass", player), lambda state: (state.has("Failed_Tramway", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Simple_Key-Basin", player), lambda state: state.has("Far_Left_Basin", player)) + set_rule(world.get_location("Simple_Key-City", player), lambda state: (state.has("Left_Elevator", player) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or state.world.MILDSKIPS[player]))) + set_rule(world.get_location("Simple_Key-Lurker", player), lambda state: ((state.has("Pale_Lurker_Area", player) and state.has("Mantis_Claw", player)) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Shopkeeper's_Key", player), lambda state: (state.has("Upper_Crystal_Peak", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Love_Key", player), lambda state: (state.has("Bottom_Right_Queen's_Gardens", player) and (((state.has("Isma's_Tear", player) or (((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Crystal_Heart", player)) and state.world.ACIDSKIPS[player])) or ((((state.world.ACIDSKIPS[player] and state.has("Mantis_Claw", player)) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Monarch_Wings", player)) and (state.has("Dashmaster", player) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))))) or (((state.world.SPICYSKIPS[player] and state.world.ACIDSKIPS[player]) and ((state.has("Sharp_Shadow", player) and state.has("Mothwing_Cloak", player)) and state.has("Shade_Cloak", player))) and state.has("Monarch_Wings", player))))) + set_rule(world.get_location("King's_Brand", player), lambda state: (state.has("Cast_Off_Shell", player) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Godtuner", player), lambda state: (state.has("Junk_Pit", player) and (((state.has("Simple_Key-Sly", player) and state.has("Simple_Key-City", player)) and state.has("Simple_Key-Basin", player)) and state.has("Simple_Key-Lurker", player)))) + set_rule(world.get_location("Collector's_Map", player), lambda state: (((state.has("Tower_of_Love", player) and state.has("Love_Key", player)) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player]))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Mask_Shard-Seer", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(1000, player))) + set_rule(world.get_location("Mask_Shard-5_Grubs", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(30, player))) + set_rule(world.get_location("Mask_Shard-Brooding_Mawlek", player), lambda state: (state.has("Crossroads", player) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Mask_Shard-Crossroads_Goam", player), lambda state: (state.has("Crossroads", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player]))) + set_rule(world.get_location("Mask_Shard-Stone_Sanctuary", player), lambda state: state.has("Stone_Sanctuary", player)) + set_rule(world.get_location("Mask_Shard-Queen's_Station", player), lambda state: (state.has("Queen's_Station", player) and ((state.has("Mantis_Claw", player) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Crystal_Heart", player))) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Mask_Shard-Deepnest", player), lambda state: state.has("Fungal_Core", player)) + set_rule(world.get_location("Mask_Shard-Waterways", player), lambda state: (state.has("Upper_Left_Waterways", player) or state.has("Far_Left_Waterways", player))) + set_rule(world.get_location("Mask_Shard-Enraged_Guardian", player), lambda state: (((state.has("Upper_Crystal_Peak", player) and state.has("Mantis_Claw", player)) and state.has("Monarch_Wings", player)) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Mask_Shard-Hive", player), lambda state: (state.has("Hive", player) and ((state.has("Mantis_Claw", player) and state.has("Monarch_Wings", player)) or (state.world.MILDSKIPS[player] and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))))) + set_rule(world.get_location("Mask_Shard-Grey_Mourner", player), lambda state: (((((((state.has("Upper_Resting_Grounds", player) and state.has("Top_Left_Queen's_Gardens", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and state.has("Mantis_Claw", player)) and state.has("Monarch_Wings", player)) and state.has("Crystal_Heart", player)) and state.has("Isma's_Tear", player)) and (state.has("Mothwing_Cloak", player) and state.has("Shade_Cloak", player)))) + set_rule(world.get_location("Mask_Shard-Bretta", player), lambda state: (((state.has("Mantis_Outskirts", player) and state.has("Dirtmouth", player)) and state.has("Mantis_Claw", player)) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or ((state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and state.world.SHADESKIPS[player])))) + set_rule(world.get_location("Vessel_Fragment-Seer", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(1000, player))) + set_rule(world.get_location("Vessel_Fragment-Greenpath", player), lambda state: (state.has("Greenpath", player) and (state.has("Mantis_Claw", player) or (state.world.SPICYSKIPS[player] and state.has("Monarch_Wings", player))))) + set_rule(world.get_location("Vessel_Fragment-City", player), lambda state: (state.has("Upper_King's_Station", player) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Vessel_Fragment-Crossroads", player), lambda state: state.has("Left_Elevator", player)) + set_rule(world.get_location("Vessel_Fragment-Basin", player), lambda state: (state.has("Mid_Basin", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Vessel_Fragment-Deepnest", player), lambda state: (state.has("Deepnest", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Vessel_Fragment-Stag_Nest", player), lambda state: state.has("Stag_Nest", player)) + set_rule(world.get_location("Charm_Notch-Shrumal_Ogres", player), lambda state: state.has("Fungal_Wastes", player)) + set_rule(world.get_location("Charm_Notch-Fog_Canyon", player), lambda state: ((state.has("Right_Fog_Canyon", player) and state.has("Mantis_Claw", player)) and (((state.has("Isma's_Tear", player) or (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.has("Crystal_Heart", player)) and state.world.ACIDSKIPS[player])) or ((state.has("Monarch_Wings", player) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))))) and state.world.ACIDSKIPS[player])) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.world.SPICYSKIPS[player])))) + set_rule(world.get_location("Charm_Notch-Colosseum", player), lambda state: (state.has("Colosseum", player) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Charm_Notch-Grimm", player), lambda state: ((state.has("Dirtmouth", player) and state.has("Grimmchild", player)) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Pale_Ore-Basin", player), lambda state: (state.has("Mid_Basin", player) and (((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.world.MILDSKIPS[player])) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Pale_Ore-Crystal_Peak", player), lambda state: state.has("Hallownest's_Crown", player)) + set_rule(world.get_location("Pale_Ore-Nosk", player), lambda state: (((state.has("Deepnest", player) and state.has("Mantis_Claw", player)) and ((state.has("Monarch_Wings", player) or state.has("Crystal_Heart", player)) or state.world.SHADESKIPS[player])) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Pale_Ore-Seer", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(1000, player))) + set_rule(world.get_location("Pale_Ore-Grubs", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(30, player))) + set_rule(world.get_location("Pale_Ore-Colosseum", player), lambda state: ((state.has("Colosseum", player) and (state.has("Mantis_Claw", player) or (state.world.SPICYSKIPS[player] and state.has("Monarch_Wings", player)))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("200_Geo-False_Knight_Chest", player), lambda state: state.has("Crossroads", player)) + set_rule(world.get_location("380_Geo-Soul_Master_Chest", player), lambda state: (state.has("Soul_Sanctum", player) and state.has("Mantis_Claw", player))) + set_rule(world.get_location("655_Geo-Watcher_Knights_Chest", player), lambda state: (((state.has("Right_City", player) and state.has("Mantis_Claw", player)) and (state.has("Monarch_Wings", player) or state.world.MILDSKIPS[player])) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("85_Geo-Greenpath_Chest", player), lambda state: (state.has("Greenpath", player) and ((((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))) or state.world.SHADESKIPS[player]))) + set_rule(world.get_location("620_Geo-Mantis_Lords_Chest", player), lambda state: (state.has("Mantis_Village", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player])))) + set_rule(world.get_location("150_Geo-Resting_Grounds_Chest", player), lambda state: (state.has("Upper_Resting_Grounds", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) + set_rule(world.get_location("80_Geo-Crystal_Peak_Chest", player), lambda state: (state.has("Upper_Crystal_Peak", player) and ((state.has("Mantis_Claw", player) and (((state.has("Sprintmaster", player) and state.has("Dashmaster", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or (state.has("Crystal_Heart", player) and state.world.SPICYSKIPS[player]))) or ((((state.has("Monarch_Wings", player) and state.has("Grubberfly's_Elegy", player)) and state.world.SHADESKIPS[player]) and state.world.SPICYSKIPS[player]) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or (state.has("Sprintmaster", player) and state.has("Dashmaster", player))))))) + set_rule(world.get_location("160_Geo-Weavers_Den_Chest", player), lambda state: (((state.has("Weaver's_Den", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player]))) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.SPIKETUNNELS[player]))) + set_rule(world.get_location("Rancid_Egg-Grubs", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(30, player))) + set_rule(world.get_location("Rancid_Egg-Sheo", player), lambda state: ((state.has("Greenpath", player) and state.has("Mantis_Claw", player)) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and (state.has("Crystal_Heart", player) or state.has("Monarch_Wings", player))) or (state.has("Monarch_Wings", player) and state.has("Crystal_Heart", player))))) + set_rule(world.get_location("Rancid_Egg-Fungal_Core", player), lambda state: (state.has("Fungal_Core", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Rancid_Egg-Queen's_Gardens", player), lambda state: (state.has("Top_Right_Queen's_Gardens", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))))) + set_rule(world.get_location("Rancid_Egg-Blue_Lake", player), lambda state: (state.has("Blue_Lake", player) and (state.has("Monarch_Wings", player) or state.has("Crystal_Heart", player)))) + set_rule(world.get_location("Rancid_Egg-Crystal_Peak_Dive_Entrance", player), lambda state: (((state.has("Crossroads", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and (state.has("Monarch_Wings", player) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))) or ((state.has("Crystal_Peak", player) and state.has("Mantis_Claw", player)) and (state.has("Monarch_Wings", player) or state.has("Crystal_Heart", player))))) + set_rule(world.get_location("Rancid_Egg-Crystal_Peak_Dark_Room", player), lambda state: state.has("Crystal_Peak", player)) + set_rule(world.get_location("Rancid_Egg-Crystal_Peak_Tall_Room", player), lambda state: (state.has("Upper_Crystal_Peak", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) + set_rule(world.get_location("Rancid_Egg-City_of_Tears_Left", player), lambda state: (state.has("Left_City", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player]))) + set_rule(world.get_location("Rancid_Egg-City_of_Tears_Pleasure_House", player), lambda state: state.has("Pleasure_House", player)) + set_rule(world.get_location("Rancid_Egg-Beast's_Den", player), lambda state: (state.has("Beast's_Den", player) and (state.has("Mantis_Claw", player) or ((state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player]) and state.world.SHADESKIPS[player])))) + set_rule(world.get_location("Rancid_Egg-Dark_Deepnest", player), lambda state: (state.has("Dark_Deepnest", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and (state.world.MILDSKIPS[player] or state.has("Bottom_Left_Queen's_Gardens", player)))))) + set_rule(world.get_location("Rancid_Egg-Weaver's_Den", player), lambda state: (state.has("Weaver's_Den", player) and (state.world.SPIKETUNNELS[player] or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))))) + set_rule(world.get_location("Rancid_Egg-Near_Quick_Slash", player), lambda state: ((state.has("Oro_Bench", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Rancid_Egg-Upper_Kingdom's_Edge", player), lambda state: (state.has("Upper_Kingdom's_Edge", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Rancid_Egg-Waterways_East", player), lambda state: state.has("Right_Waterways", player)) + set_rule(world.get_location("Rancid_Egg-Waterways_Main", player), lambda state: (state.has("Upper_Left_Waterways", player) or (state.has("Central_Left_Waterways", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.SPICYSKIPS[player])))) + set_rule(world.get_location("Rancid_Egg-Waterways_West_Bluggsac", player), lambda state: (state.has("Upper_Left_Waterways", player) or state.has("Far_Left_Waterways", player))) + set_rule(world.get_location("Rancid_Egg-Waterways_West_Pickup", player), lambda state: ((state.has("Upper_Left_Waterways", player) or state.has("Far_Left_Waterways", player)) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player])))) + set_rule(world.get_location("Wanderer's_Journal-Cliffs", player), lambda state: state.has("Howling_Cliffs", player)) + set_rule(world.get_location("Wanderer's_Journal-Greenpath_Stag", player), lambda state: state.has("Greenpath", player)) + set_rule(world.get_location("Wanderer's_Journal-Greenpath_Lower", player), lambda state: (state.has("Greenpath", player) and state.has("Mantis_Claw", player))) + set_rule(world.get_location("Wanderer's_Journal-Fungal_Wastes_Thorns_Gauntlet", player), lambda state: ((state.has("Fungal_Wastes", player) and state.has("Mantis_Claw", player)) and (((state.has("Monarch_Wings", player) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Crystal_Heart", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))))) + set_rule(world.get_location("Wanderer's_Journal-Above_Mantis_Village", player), lambda state: (state.has("Fungal_Wastes", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SHADESKIPS[player])))) + set_rule(world.get_location("Wanderer's_Journal-Crystal_Peak_Crawlers", player), lambda state: (state.has("Upper_Crystal_Peak", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player]))) + set_rule(world.get_location("Wanderer's_Journal-Resting_Grounds_Catacombs", player), lambda state: ((state.has("Upper_Resting_Grounds", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Wanderer's_Journal-King's_Station", player), lambda state: state.has("Upper_King's_Station", player)) + set_rule(world.get_location("Wanderer's_Journal-Pleasure_House", player), lambda state: state.has("Pleasure_House", player)) + set_rule(world.get_location("Wanderer's_Journal-City_Storerooms", player), lambda state: state.has("Left_Elevator", player)) + set_rule(world.get_location("Wanderer's_Journal-Ancient_Basin", player), lambda state: (state.has("Upper_Basin", player) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.SPIKETUNNELS[player]))) + set_rule(world.get_location("Wanderer's_Journal-Kingdom's_Edge_Entrance", player), lambda state: (state.has("Central_Kingdom's_Edge", player) and state.has("Mantis_Claw", player))) + set_rule(world.get_location("Wanderer's_Journal-Kingdom's_Edge_Camp", player), lambda state: (state.has("Center_Right_Kingdom's_Edge", player) and (state.has("Monarch_Wings", player) or (state.has("Mantis_Claw", player) and (state.world.SPICYSKIPS[player] or state.has("Cast_Off_Shell", player)))))) + set_rule(world.get_location("Wanderer's_Journal-Kingdom's_Edge_Requires_Dive", player), lambda state: (state.has("Center_Right_Kingdom's_Edge", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) + set_rule(world.get_location("Hallownest_Seal-Crossroads_Well", player), lambda state: (state.has("Crossroads", player) and ((state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and (state.world.SHADESKIPS[player] or ((((state.has("Lurien", player) or state.has("Monomon", player)) or state.has("Herrah", player)) or state.has("Dreamer", player)) and state.world.SPICYSKIPS[player])))) or ((((((state.has("Lurien", player) or state.has("Monomon", player)) or state.has("Herrah", player)) or state.has("Dreamer", player)) and state.world.SPICYSKIPS[player]) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))))))) + set_rule(world.get_location("Hallownest_Seal-Grubs", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(30, player))) + set_rule(world.get_location("Hallownest_Seal-Greenpath", player), lambda state: (state.has("Greenpath", player) and (((state.has("Isma's_Tear", player) or (state.has("Monarch_Wings", player) and (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))))) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and ((((state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) or state.has("Dashmaster", player)) or state.has("Monarch_Wings", player)) or state.has("Mantis_Claw", player)))) or state.has("Crystal_Heart", player)))) + set_rule(world.get_location("Hallownest_Seal-Fog_Canyon_West", player), lambda state: state.has("Left_Fog_Canyon", player)) + set_rule(world.get_location("Hallownest_Seal-Fog_Canyon_East", player), lambda state: ((state.has("Right_Fog_Canyon", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.world.MILDSKIPS[player]))) or ((state.has("Crossroads", player) and ((state.has("Isma's_Tear", player) or (((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Crystal_Heart", player)) and state.world.ACIDSKIPS[player])) or ((state.has("Monarch_Wings", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.world.ACIDSKIPS[player]))) and ((((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Crystal_Heart", player)) or state.world.SPICYSKIPS[player])))) + set_rule(world.get_location("Hallownest_Seal-Queen's_Station", player), lambda state: (state.has("Queen's_Station", player) and state.has("Monarch_Wings", player))) + set_rule(world.get_location("Hallownest_Seal-Fungal_Wastes_Sporgs", player), lambda state: state.has("Fungal_Wastes", player)) + set_rule(world.get_location("Hallownest_Seal-Mantis_Lords", player), lambda state: (state.has("Mantis_Village", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Hallownest_Seal-Seer", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(1000, player))) + set_rule(world.get_location("Hallownest_Seal-Resting_Grounds_Catacombs", player), lambda state: (state.has("Upper_Resting_Grounds", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) + set_rule(world.get_location("Hallownest_Seal-King's_Station", player), lambda state: (state.has("Upper_King's_Station", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Hallownest_Seal-City_Rafters", player), lambda state: state.has("Left_City", player)) + set_rule(world.get_location("Hallownest_Seal-Soul_Sanctum", player), lambda state: ((state.has("Soul_Sanctum", player) and state.has("Mantis_Claw", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) + set_rule(world.get_location("Hallownest_Seal-Watcher_Knight", player), lambda state: (((state.has("Right_City", player) and state.has("Mantis_Claw", player)) and (state.has("Monarch_Wings", player) or state.world.MILDSKIPS[player])) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Hallownest_Seal-Deepnest_By_Mantis_Lords", player), lambda state: (state.has("Far_Right_Deepnest", player) and state.has("Mantis_Claw", player))) + set_rule(world.get_location("Hallownest_Seal-Beast's_Den", player), lambda state: state.has("Beast's_Den", player)) + set_rule(world.get_location("Hallownest_Seal-Queen's_Gardens", player), lambda state: (state.has("Top_Left_Queen's_Gardens", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.world.SPICYSKIPS[player])))) + set_rule(world.get_location("King's_Idol-Grubs", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(30, player))) + set_rule(world.get_location("King's_Idol-Cliffs", player), lambda state: state.has("Howling_Cliffs", player)) + set_rule(world.get_location("King's_Idol-Crystal_Peak", player), lambda state: (state.has("Upper_Crystal_Peak", player) and ((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("King's_Idol-Glade_of_Hope", player), lambda state: (state.has("Spirits_Glade", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))))) + set_rule(world.get_location("King's_Idol-Dung_Defender", player), lambda state: (((state.has("Central_Left_Waterways", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player]))) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("King's_Idol-Great_Hopper", player), lambda state: state.has("Top_Kingdom's_Edge", player)) + set_rule(world.get_location("King's_Idol-Pale_Lurker", player), lambda state: state.has("Pale_Lurker_Area", player)) + set_rule(world.get_location("King's_Idol-Deepnest", player), lambda state: state.has("Failed_Tramway", player)) + set_rule(world.get_location("Arcane_Egg-Seer", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(1000, player))) + set_rule(world.get_location("Arcane_Egg-Lifeblood_Core", player), lambda state: ((state.has("Abyss", player) and ((state.has("Lifeblood_Heart", player) or state.has("Lifeblood_Core", player)) or state.has("Joni's_Blessing", player))) and (state.has("Crystal_Heart", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))))) + set_rule(world.get_location("Arcane_Egg-Shade_Cloak", player), lambda state: ((state.has("Abyss", player) and ((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Monarch_Wings", player))) and ((state.has("Mothwing_Cloak", player) and state.has("Shade_Cloak", player)) or ((state.has("Queen_Fragment", player) and state.has("King_Fragment", player)) and state.has("Void_Heart", player))))) + set_rule(world.get_location("Arcane_Egg-Birthplace", player), lambda state: (state.has("Abyss", player) and (((state.has("Queen_Fragment", player) and state.has("King_Fragment", player)) or (state.has("Queen_Fragment", player) and state.has("Void_Heart", player))) or (state.has("King_Fragment", player) and state.has("Void_Heart", player))))) + set_rule(world.get_location("Whispering_Root-Crossroads", player), lambda state: (((state.has("Crossroads", player) and state.has("Mantis_Claw", player)) and (((state.has("Monarch_Wings", player) or state.has("Crystal_Heart", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or ((((state.has("Lurien", player) or state.has("Monomon", player)) or state.has("Herrah", player)) or state.has("Dreamer", player)) and state.world.SPICYSKIPS[player]))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Greenpath", player), lambda state: (((state.has("Far_Queen's_Gardens", player) and state.has("Greenpath", player)) and state.has("Mantis_Claw", player)) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Leg_Eater", player), lambda state: (state.has("Right_Fog_Canyon", player) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Mantis_Village", player), lambda state: ((state.has("Fungal_Wastes", player) and state.has("Mantis_Claw", player)) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Deepnest", player), lambda state: (((state.has("Dark_Deepnest", player) and (state.has("Lumafly_Lantern", player) or state.world.DARKROOMS[player])) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Queens_Gardens", player), lambda state: ((state.has("Bottom_Right_Queen's_Gardens", player) and state.has("Mantis_Claw", player)) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Kingdoms_Edge", player), lambda state: ((state.has("Upper_Kingdom's_Edge", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Waterways", player), lambda state: (((state.has("Waterways_Shaft", player) and state.has("Mantis_Claw", player)) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or state.world.MILDSKIPS[player])) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-City", player), lambda state: ((state.has("Left_Elevator", player) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or state.world.MILDSKIPS[player])) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Resting_Grounds", player), lambda state: (state.has("Upper_Resting_Grounds", player) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Spirits_Glade", player), lambda state: (((state.has("Spirits_Glade", player) and state.has("Mantis_Claw", player)) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Crystal_Peak", player), lambda state: (((state.has("Upper_Crystal_Peak", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Howling_Cliffs", player), lambda state: ((state.has("Howling_Cliffs", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.world.MILDSKIPS[player]))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Ancestral_Mound", player), lambda state: (((state.has("Ancestral_Mound", player) and (state.has("Monarch_Wings", player) or (state.has("Mantis_Claw", player) and state.world.SPICYSKIPS[player]))) and (state.has("Mantis_Claw", player) or (((((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.has("Grubberfly's_Elegy", player)) or state.has("Glowing_Womb", player)) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.has("Dash_Slash", player))) or (state.world.MILDSKIPS[player] and (state.has("Weaversong", player) or (state.has("Spore_Shroom", player) and (state.world.NOTCURSED[player] or state.has("Focus", player)))))) or (((state.has("Mark_of_Pride", player) or state.has("Cyclone_Slash", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.world.SPICYSKIPS[player])))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Whispering_Root-Hive", player), lambda state: ((state.has("Hive", player) and ((state.has("Mantis_Claw", player) and state.has("Monarch_Wings", player)) or (state.world.MILDSKIPS[player] and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player)))) + set_rule(world.get_location("Boss_Essence-Elder_Hu", player), lambda state: ((state.has("Fungal_Wastes", player) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Boss_Essence-Xero", player), lambda state: ((state.has("Upper_Resting_Grounds", player) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Boss_Essence-Gorb", player), lambda state: ((state.has("Howling_Cliffs", player) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Boss_Essence-Marmu", player), lambda state: (((state.has("Top_Left_Queen's_Gardens", player) or ((state.has("Queen's_Gardens_Stag", player) and state.has("Can_Stag", player)) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player)))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Boss_Essence-No_Eyes", player), lambda state: (((state.has("Stone_Sanctuary", player) and state.has("Lumafly_Lantern", player)) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Boss_Essence-Galien", player), lambda state: ((((state.has("Failed_Tramway", player) and (state.has("Lumafly_Lantern", player) or state.world.DARKROOMS[player])) or (state.has("Dark_Deepnest", player) and state.has("Mantis_Claw", player))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Boss_Essence-Markoth", player), lambda state: (((state.has("Center_Right_Kingdom's_Edge", player) and (state.has("Mothwing_Cloak", player) and state.has("Shade_Cloak", player))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Boss_Essence-Failed_Champion", player), lambda state: (((state.has("Crossroads", player) and ((state.has("Mantis_Claw", player) and ((state.has("Monarch_Wings", player) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Crystal_Heart", player))) or (state.has("Monarch_Wings", player) and ((((state.has("Lurien", player) or state.has("Monomon", player)) or state.has("Herrah", player)) or state.has("Dreamer", player)) and state.world.SPICYSKIPS[player])))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Boss_Essence-Soul_Tyrant", player), lambda state: (((state.has("Soul_Sanctum", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Boss_Essence-Lost_Kin", player), lambda state: (((state.has("Far_Left_Basin", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Boss_Essence-White_Defender", player), lambda state: (((((((state.has("Central_Left_Waterways", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player]))) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player]))) and state.has("Lurien", player)) and state.has("Monomon", player)) and state.has("Herrah", player))) + set_rule(world.get_location("Boss_Essence-Grey_Prince_Zote", player), lambda state: (((((((state.has("Dirtmouth", player) and ((state.has("Dream_Nail", player) or state.has("Dream_Gate", player)) or state.has("Awoken_Dream_Nail", player))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player]))) and state.has("Mantis_Outskirts", player)) and state.has("Mantis_Claw", player)) and state.has("Monarch_Wings", player)) and state.has("Failed_Tramway", player)) and state.has("Colosseum", player))) + set_rule(world.get_location("Grub-Crossroads_Acid", player), lambda state: state.has("Crossroads", player)) + set_rule(world.get_location("Grub-Crossroads_Center", player), lambda state: (state.has("Crossroads", player) and (((state.world.MILDSKIPS[player] or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)))) + set_rule(world.get_location("Grub-Crossroads_Stag", player), lambda state: state.has("Crossroads", player)) + set_rule(world.get_location("Grub-Crossroads_Spike", player), lambda state: state.has("Crossroads", player)) + set_rule(world.get_location("Grub-Crossroads_Guarded", player), lambda state: state.has("Crossroads", player)) + set_rule(world.get_location("Grub-Greenpath_Cornifer", player), lambda state: state.has("Greenpath", player)) + set_rule(world.get_location("Grub-Greenpath_Journal", player), lambda state: state.has("Greenpath", player)) + set_rule(world.get_location("Grub-Greenpath_MMC", player), lambda state: (state.has("Greenpath", player) and ((((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))) or state.world.SHADESKIPS[player]))) + set_rule(world.get_location("Grub-Greenpath_Stag", player), lambda state: state.has("Greenpath", player)) + set_rule(world.get_location("Grub-Fog_Canyon", player), lambda state: (state.has("Crystal_Heart", player) and state.has("Right_Fog_Canyon", player))) + set_rule(world.get_location("Grub-Fungal_Bouncy", player), lambda state: state.has("Fungal_Wastes", player)) + set_rule(world.get_location("Grub-Fungal_Spore_Shroom", player), lambda state: state.has("Bottom_Left_Fungal_Wastes", player)) + set_rule(world.get_location("Grub-Deepnest_Mimic", player), lambda state: (state.has("Bottom_Left_Fungal_Wastes", player) or (state.has("Upper_Deepnest", player) and (state.has("Monarch_Wings", player) or (state.has("Mantis_Claw", player) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Crystal_Heart", player))))))) + set_rule(world.get_location("Grub-Deepnest_Nosk", player), lambda state: (state.has("Deepnest", player) and ((state.has("Crystal_Heart", player) or state.has("Monarch_Wings", player)) or (state.has("Mantis_Claw", player) and state.world.SHADESKIPS[player])))) + set_rule(world.get_location("Grub-Deepnest_Spike", player), lambda state: (state.has("Deepnest", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Grub-Dark_Deepnest", player), lambda state: (state.has("Dark_Deepnest", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and (state.world.MILDSKIPS[player] or state.has("Bottom_Left_Queen's_Gardens", player)))))) + set_rule(world.get_location("Grub-Beast's_Den", player), lambda state: (state.has("Beast's_Den", player) and (state.has("Mantis_Claw", player) or ((state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player]) and state.world.SHADESKIPS[player])))) + set_rule(world.get_location("Grub-Kingdom's_Edge_Oro", player), lambda state: (((state.has("Oro_Bench", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and (state.world.MILDSKIPS[player] or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))))) + set_rule(world.get_location("Grub-Kingdom's_Edge_Camp", player), lambda state: (state.has("Center_Right_Kingdom's_Edge", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or (state.world.MILDSKIPS[player] and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))))) + set_rule(world.get_location("Grub-Hive_External", player), lambda state: (((state.has("Lower_Kingdom's_Edge", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and (state.has("Isma's_Tear", player) or ((state.has("Mantis_Claw", player) and state.has("Crystal_Heart", player)) and state.world.ACIDSKIPS[player])))) + set_rule(world.get_location("Grub-Hive_Internal", player), lambda state: (((state.has("Hive", player) and state.has("Mantis_Claw", player)) and state.has("Monarch_Wings", player)) and (state.has("Crystal_Heart", player) or state.world.SPICYSKIPS[player]))) + set_rule(world.get_location("Grub-Basin_Requires_Wings", player), lambda state: ((state.has("Far_Left_Basin", player) and state.has("Monarch_Wings", player)) and (state.has("Mantis_Claw", player) or ((state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and state.world.SPICYSKIPS[player])))) + set_rule(world.get_location("Grub-Basin_Requires_Dive", player), lambda state: (state.has("Mid_Basin", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) + set_rule(world.get_location("Grub-Waterways_Main", player), lambda state: (state.has("Upper_Left_Waterways", player) or state.has("Far_Left_Waterways", player))) + set_rule(world.get_location("Grub-Waterways_East", player), lambda state: ((state.has("Isma's_Grove", player) and state.has("Mantis_Claw", player)) and (state.has("Isma's_Tear", player) or (((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Crystal_Heart", player)) and state.world.ACIDSKIPS[player])))) + set_rule(world.get_location("Grub-Waterways_Requires_Tram", player), lambda state: ((state.has("Lower_Kingdom's_Edge", player) and state.has("Mantis_Claw", player)) and ((state.has("Crystal_Heart", player) and state.has("Monarch_Wings", player)) or state.has("Isma's_Tear", player)))) + set_rule(world.get_location("Grub-City_of_Tears_Left", player), lambda state: ((state.has("Left_City", player) and ((state.has("Mantis_Claw", player) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Crystal_Heart", player)) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player])) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))) or ((state.has("Left_Elevator", player) or state.has("Soul_Sanctum", player)) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Grub-Soul_Sanctum", player), lambda state: ((state.has("Soul_Sanctum", player) and state.has("Mantis_Claw", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) + set_rule(world.get_location("Grub-Watcher's_Spire", player), lambda state: ((state.has("Right_City", player) and state.has("Mantis_Claw", player)) and (state.has("Monarch_Wings", player) or state.world.MILDSKIPS[player]))) + set_rule(world.get_location("Grub-City_of_Tears_Guarded", player), lambda state: (state.has("Right_City", player) and (((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Upper_King's_Station", player)))) + set_rule(world.get_location("Grub-King's_Station", player), lambda state: state.has("Lower_King's_Station", player)) + set_rule(world.get_location("Grub-Resting_Grounds", player), lambda state: ((state.has("Upper_Resting_Grounds", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Grub-Crystal_Peak_Below_Chest", player), lambda state: (state.has("Upper_Crystal_Peak", player) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or (state.has("Mantis_Claw", player) and state.has("Crystal_Heart", player))) or (state.has("Dashmaster", player) and state.has("Sprintmaster", player))))) + set_rule(world.get_location("Grub-Crystallized_Mound", player), lambda state: ((state.has("Crystallized_Mound", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Grub-Crystal_Peak_Spike", player), lambda state: (state.has("Crystal_Peak", player) and ((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or ((state.has("Monarch_Wings", player) and state.world.SPIKETUNNELS[player]) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))))))) + set_rule(world.get_location("Grub-Crystal_Peak_Mimic", player), lambda state: (((state.has("Upper_Crystal_Peak", player) and state.has("Mantis_Claw", player)) and state.has("Crystal_Heart", player)) or ((state.has("King's_Pass", player) and state.has("Monarch_Wings", player)) and state.has("Crystal_Heart", player)))) + set_rule(world.get_location("Grub-Crystal_Peak_Crushers", player), lambda state: ((state.has("Upper_Crystal_Peak", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Grub-Crystal_Heart", player), lambda state: (state.has("Upper_Crystal_Peak", player) and ((state.has("Mantis_Claw", player) and state.has("Crystal_Heart", player)) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Grub-Hallownest_Crown", player), lambda state: (((state.has("Upper_Crystal_Peak", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or (state.has("Hallownest's_Crown", player) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Crystal_Heart", player)) or state.world.SPIKETUNNELS[player])))) + set_rule(world.get_location("Grub-Howling_Cliffs", player), lambda state: state.has("Howling_Cliffs", player)) + set_rule(world.get_location("Grub-Queen's_Gardens_Stag", player), lambda state: (state.has("Top_Left_Queen's_Gardens", player) or (state.has("Queen's_Gardens_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Grub-Queen's_Gardens_Marmu", player), lambda state: (state.has("Top_Left_Queen's_Gardens", player) and state.has("Mantis_Claw", player))) + set_rule(world.get_location("Grub-Queen's_Gardens_Top", player), lambda state: (((state.has("Far_Queen's_Gardens", player) and state.has("Mantis_Claw", player)) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Crystal_Heart", player))) + set_rule(world.get_location("Grub-Collector_1", player), lambda state: (((state.has("Tower_of_Love", player) and state.has("Love_Key", player)) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player]))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Grub-Collector_2", player), lambda state: (((state.has("Tower_of_Love", player) and state.has("Love_Key", player)) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player]))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Grub-Collector_3", player), lambda state: (((state.has("Tower_of_Love", player) and state.has("Love_Key", player)) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player]))) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Crossroads_Map", player), lambda state: state.has("Crossroads", player)) + set_rule(world.get_location("Greenpath_Map", player), lambda state: state.has("Greenpath", player)) + set_rule(world.get_location("Fog_Canyon_Map", player), lambda state: (state.has("Right_Fog_Canyon", player) and (((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.world.MILDSKIPS[player]) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Fungal_Wastes_Map", player), lambda state: state.has("Fungal_Wastes", player)) + set_rule(world.get_location("Deepnest_Map-Upper", player), lambda state: state.has("Upper_Deepnest", player)) + set_rule(world.get_location("Deepnest_Map-Right_[Gives_Quill]", player), lambda state: (state.has("Far_Right_Deepnest", player) and state.has("Mantis_Claw", player))) + set_rule(world.get_location("Ancient_Basin_Map", player), lambda state: (state.has("Mid_Basin", player) and (((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or state.world.MILDSKIPS[player]))) + set_rule(world.get_location("Kingdom's_Edge_Map", player), lambda state: state.has("Central_Kingdom's_Edge", player)) + set_rule(world.get_location("City_of_Tears_Map", player), lambda state: state.has("Left_Elevator", player)) + set_rule(world.get_location("Royal_Waterways_Map", player), lambda state: (state.has("Far_Left_Waterways", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Howling_Cliffs_Map", player), lambda state: state.has("Howling_Cliffs", player)) + set_rule(world.get_location("Crystal_Peak_Map", player), lambda state: state.has("Upper_Crystal_Peak", player)) + set_rule(world.get_location("Queen's_Gardens_Map", player), lambda state: ((state.has("Top_Left_Queen's_Gardens", player) or (state.has("Top_Right_Queen's_Gardens", player) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or (state.has("Crystal_Heart", player) and state.has("Mantis_Claw", player))))) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Resting_Grounds_Map", player), lambda state: state.has("Upper_Resting_Grounds", player)) + set_rule(world.get_location("Dirtmouth_Stag", player), lambda state: state.has("Can_Stag", player)) + set_rule(world.get_location("Crossroads_Stag", player), lambda state: state.has("Crossroads", player)) + set_rule(world.get_location("Greenpath_Stag", player), lambda state: state.has("Greenpath", player)) + set_rule(world.get_location("Queen's_Station_Stag", player), lambda state: state.has("Queen's_Station", player)) + set_rule(world.get_location("Queen's_Gardens_Stag", player), lambda state: (state.has("Top_Left_Queen's_Gardens", player) or (state.has("Queen's_Gardens_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("City_Storerooms_Stag", player), lambda state: state.has("Left_Elevator", player)) + set_rule(world.get_location("King's_Station_Stag", player), lambda state: ((state.has("Upper_King's_Station", player) or (state.has("Right_City", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))) or (state.has("King's_Station_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Resting_Grounds_Stag", player), lambda state: state.has("Upper_Resting_Grounds", player)) + set_rule(world.get_location("Distant_Village_Stag", player), lambda state: ((state.has("Distant_Village", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) or (state.has("Distant_Village_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Hidden_Station_Stag", player), lambda state: state.has("Palace_Grounds", player)) + set_rule(world.get_location("Stag_Nest_Stag", player), lambda state: state.has("Stag_Nest", player)) + set_rule(world.get_location("Lifeblood_Cocoon-King's_Pass", player), lambda state: state.has("King's_Pass", player)) + set_rule(world.get_location("Lifeblood_Cocoon-Ancestral_Mound", player), lambda state: state.has("Ancestral_Mound", player)) + set_rule(world.get_location("Lifeblood_Cocoon-Greenpath", player), lambda state: state.has("Greenpath", player)) + set_rule(world.get_location("Lifeblood_Cocoon-Fog_Canyon_West", player), lambda state: state.has("Left_Fog_Canyon", player)) + set_rule(world.get_location("Lifeblood_Cocoon-Mantis_Village", player), lambda state: ((state.has("Mantis_Village", player) and state.has("Mantis_Claw", player)) and (state.has("Monarch_Wings", player) or state.has("Crystal_Heart", player)))) + set_rule(world.get_location("Lifeblood_Cocoon-Failed_Tramway", player), lambda state: (state.has("Failed_Tramway", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and (state.world.MILDSKIPS[player] or state.world.SHADESKIPS[player]))))) + set_rule(world.get_location("Lifeblood_Cocoon-Galien", player), lambda state: (state.has("Dark_Deepnest", player) and state.has("Mantis_Claw", player))) + set_rule(world.get_location("Lifeblood_Cocoon-Kingdom's_Edge", player), lambda state: (state.has("Upper_Kingdom's_Edge", player) and (state.has("Monarch_Wings", player) or (state.has("Mantis_Claw", player) and state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Grubfather", player), lambda state: state.has("Crossroads", player)) + set_rule(world.get_location("Seer", player), lambda state: state.has("Upper_Resting_Grounds", player)) + + # Events + + set_rule(world.get_location("Dirtmouth", player), lambda state: ((((state.has("Crossroads", player) or ((state.has("Upper_Crystal_Peak", player) and state.has("Mantis_Claw", player)) and state.has("Crystal_Heart", player))) or state.has("King's_Pass", player)) or (state.has("Howling_Cliffs", player) and (state.has("Crystal_Heart", player) or (state.has("Monarch_Wings", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))))) or (state.has("Dirtmouth_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Can_Stag", player), lambda state: (((((((((state.has("Crossroads", player) or state.has("Greenpath", player)) or state.has("Queen's_Station", player)) or state.has("Top_Left_Queen's_Gardens", player)) or state.has("Left_Elevator", player)) or state.has("Upper_King's_Station", player)) or (state.has("Right_City", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))) or state.has("Upper_Resting_Grounds", player)) or (state.has("Distant_Village", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or (state.has("Beast's_Den", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))))) or state.has("Palace_Grounds", player))) + set_rule(world.get_location("Crossroads", player), lambda state: ((((((((state.has("Dirtmouth", player) or (state.has("Crystal_Peak", player) and state.has("Lumafly_Lantern", player))) or (state.has("Blue_Lake", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) or (state.has("Fungal_Wastes", player) and ((((state.has("Isma's_Tear", player) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Crystal_Heart", player)) or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player)))) or (state.has("Right_Fog_Canyon", player) and (state.has("Mantis_Claw", player) and (state.has("Isma's_Tear", player) or ((state.has("Crystal_Heart", player) or (state.has("Monarch_Wings", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))) and state.world.ACIDSKIPS[player]))))) or state.has("Ancestral_Mound", player)) or state.has("Upper_Tram", player)) or (state.has("Crossroads_Stag", player) and state.has("Can_Stag", player))) or state.has("Left_Elevator", player))) + set_rule(world.get_location("Ancestral_Mound", player), lambda state: state.has("Crossroads", player)) + set_rule(world.get_location("Greenpath", player), lambda state: (((((((state.has("Crossroads", player) and (((((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.has("Grubberfly's_Elegy", player)) or state.has("Glowing_Womb", player)) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.has("Dash_Slash", player))) or (state.world.MILDSKIPS[player] and (state.has("Weaversong", player) or (state.has("Spore_Shroom", player) and (state.world.NOTCURSED[player] or state.has("Focus", player)))))) or (((state.has("Mark_of_Pride", player) or state.has("Cyclone_Slash", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.world.SPICYSKIPS[player]))) or state.has("Howling_Cliffs", player)) or state.has("Left_Fog_Canyon", player)) or (state.has("Lake_of_Unn", player) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or (state.has("Mantis_Claw", player) and (state.has("Isma's_Tear", player) or state.has("Crystal_Heart", player)))))) or state.has("Stone_Sanctuary", player)) or (state.has("Greenpath-QG", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) or (state.has("Greenpath_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Lake_of_Unn", player), lambda state: (state.has("Greenpath", player) and (((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or state.has("Isma's_Tear", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))))) + set_rule(world.get_location("Stone_Sanctuary", player), lambda state: (state.has("Greenpath", player) and (state.has("Lumafly_Lantern", player) or state.world.DARKROOMS[player]))) + set_rule(world.get_location("Greenpath-QG", player), lambda state: ((state.has("Greenpath", player) and state.has("Far_Queen's_Gardens", player)) and state.has("Mantis_Claw", player))) + set_rule(world.get_location("Left_Fog_Canyon", player), lambda state: (((state.has("Greenpath", player) or state.has("Queen's_Station", player)) or (state.has("Top_Right_Queen's_Gardens", player) and (((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.has("Isma's_Tear", player)) or (((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Crystal_Heart", player)) and state.world.ACIDSKIPS[player])))) or state.has("Right_Fog_Canyon", player))) + set_rule(world.get_location("Overgrown_Mound", player), lambda state: (state.has("Left_Fog_Canyon", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Right_Fog_Canyon", player), lambda state: ((((state.has("Left_Fog_Canyon", player) and (state.has("Mothwing_Cloak", player) and state.has("Shade_Cloak", player))) or (state.has("Fungal_Wastes", player) and state.has("Isma's_Tear", player))) or (state.has("Crossroads", player) and (state.has("Isma's_Tear", player) or (((state.has("Mantis_Claw", player) and state.has("Crystal_Heart", player)) or (state.has("Monarch_Wings", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))) and state.world.ACIDSKIPS[player])))) or state.has("Teacher's_Archives", player))) + set_rule(world.get_location("Teacher's_Archives", player), lambda state: state.has("Right_Fog_Canyon", player)) + set_rule(world.get_location("Queen's_Station", player), lambda state: ((state.has("Left_Fog_Canyon", player) or state.has("Fungal_Wastes", player)) or (state.has("Queen's_Station_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Fungal_Wastes", player), lambda state: (((((((state.has("Queen's_Station", player) and ((((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Crystal_Heart", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))))) or (state.has("Isma's_Tear", player) and state.has("Right_Fog_Canyon", player))) or (state.has("Crossroads", player) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or ((((state.has("Lurien", player) or state.has("Monomon", player)) or state.has("Herrah", player)) or state.has("Dreamer", player)) and state.world.SPICYSKIPS[player])) or (state.has("Mantis_Claw", player) and (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))))))) or (((state.has("Left_City", player) or state.has("Left_Elevator", player)) and state.has("Mantis_Claw", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or (state.has("Fungal_Core", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) or (state.has("Mantis_Village", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player]))) or (state.has("Mantis_Outskirts", player) and (((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player)) or state.has("Isma's_Tear", player)) or state.world.MILDSKIPS[player])))) + set_rule(world.get_location("Bottom_Left_Fungal_Wastes", player), lambda state: (((state.has("Fungal_Wastes", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and (state.world.SHADESKIPS[player] or state.world.SPICYSKIPS[player])))) or state.has("Bottom_Right_Queen's_Gardens", player)) or (state.has("Upper_Deepnest", player) and ((state.has("Mantis_Claw", player) and (((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Crystal_Heart", player)) or state.has("Monarch_Wings", player)) or state.world.SHADESKIPS[player]) or state.world.SPICYSKIPS[player])) or (state.has("Monarch_Wings", player) and (state.world.SHADESKIPS[player] or state.world.SPICYSKIPS[player])))))) + set_rule(world.get_location("Fungal_Core", player), lambda state: ((state.has("Fungal_Wastes", player) and state.has("Mantis_Claw", player)) and state.has("Monarch_Wings", player))) + set_rule(world.get_location("Mantis_Outskirts", player), lambda state: (state.has("Fungal_Wastes", player) or (state.has("Mantis_Village", player) and ((((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.has("Isma's_Tear", player)) or state.has("Crystal_Heart", player)) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.world.MILDSKIPS[player]))))) + set_rule(world.get_location("Mantis_Village", player), lambda state: ((state.has("Fungal_Wastes", player) and ((state.world.MILDSKIPS[player] or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player))) or (state.has("Mantis_Outskirts", player) and (((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or state.has("Isma's_Tear", player))))) + set_rule(world.get_location("Left_City", player), lambda state: (((((state.has("Fungal_Wastes", player) and state.has("City_Crest", player)) and ((state.has("Isma's_Tear", player) or state.has("Crystal_Heart", player)) or (state.has("Mantis_Claw", player) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or (state.has("Monarch_Wings", player) and (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))))))) or state.has("Right_City", player)) or state.has("Soul_Sanctum", player)) or state.has("Left_Elevator", player))) + set_rule(world.get_location("Left_Elevator", player), lambda state: (((state.has("Left_City", player) and ((state.has("Mantis_Claw", player) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Crystal_Heart", player)) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player])) or (state.has("Monarch_Wings", player) and state.world.SHADESKIPS[player]))) or state.has("Soul_Sanctum", player)) or (state.has("City_Storerooms_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Soul_Sanctum", player), lambda state: ((state.has("Left_City", player) and ((state.has("Mantis_Claw", player) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Crystal_Heart", player)) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player])) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))) or (state.has("Left_Elevator", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))))) + set_rule(world.get_location("Right_City", player), lambda state: ((((((((state.has("Left_City", player) and state.has("Mantis_Claw", player)) and state.has("Monarch_Wings", player)) or state.has("Lower_King's_Station", player)) or state.has("Pleasure_House", player)) or state.has("Emilitia", player)) or (state.has("Waterways_Shaft", player) and ((state.has("Mantis_Claw", player) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or state.world.MILDSKIPS[player])) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player])))) or (((state.has("Central_Left_Waterways", player) and state.world.SPICYSKIPS[player]) and state.has("Monarch_Wings", player)) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player])))) or (((state.has("Central_Left_Waterways", player) and state.has("Crystal_Heart", player)) and state.world.MILDSKIPS[player]) and state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Lower_King's_Station", player), lambda state: ((((state.has("Right_City", player) or state.has("Upper_King's_Station", player)) or state.has("Tower_of_Love", player)) or state.has("Central_Kingdom's_Edge", player)) or (state.has("King's_Station_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Upper_King's_Station", player), lambda state: ((((state.has("Right_City", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or (state.world.MILDSKIPS[player] and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))))) or (state.has("Lower_King's_Station", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) or state.has("Right_Elevator", player)) or ((state.has("King's_Station_Stag", player) and state.has("Can_Stag", player)) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.SPICYSKIPS[player])))) + set_rule(world.get_location("Right_Elevator", player), lambda state: (((state.has("Lower_Resting_Grounds", player) or state.has("Top_Kingdom's_Edge", player)) or state.has("Pleasure_House", player)) or state.has("Upper_King's_Station", player))) + set_rule(world.get_location("Pleasure_House", player), lambda state: ((state.has("Right_City", player) and (((state.has("Upper_King's_Station", player) or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))) and (((state.has("Simple_Key-Sly", player) and state.has("Simple_Key-City", player)) and state.has("Simple_Key-Basin", player)) and state.has("Simple_Key-Lurker", player)))) + set_rule(world.get_location("Tower_of_Love", player), lambda state: state.has("Upper_Kingdom's_Edge", player)) + set_rule(world.get_location("Upper_Left_Waterways", player), lambda state: (((state.has("Left_City", player) and (((state.has("Simple_Key-Sly", player) or state.has("Simple_Key-City", player)) or state.has("Simple_Key-Basin", player)) or state.has("Simple_Key-Lurker", player))) or (state.has("Far_Left_Waterways", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) or (state.has("Central_Left_Waterways", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))))) + set_rule(world.get_location("Central_Left_Waterways", player), lambda state: (((state.has("Upper_Left_Waterways", player) or (state.has("Lower_Left_Waterways", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) or (((state.has("Waterways_Shaft", player) and ((state.world.SPIKETUNNELS[player] and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and ((state.has("Dashmaster", player) or (state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player))) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))) and (state.has("Crystal_Heart", player) or state.has("Isma's_Tear", player))) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.SPICYSKIPS[player]))) or ((state.has("Right_Waterways", player) and state.has("Mantis_Claw", player)) and state.has("Crystal_Heart", player)))) + set_rule(world.get_location("Far_Left_Waterways", player), lambda state: (state.has("Upper_Left_Waterways", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Lower_Left_Waterways", player), lambda state: ((state.has("Central_Left_Waterways", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or (state.has("Junk_Pit", player) and state.has("Mantis_Claw", player)))) + set_rule(world.get_location("Waterways_Shaft", player), lambda state: (((state.has("Right_City", player) or (state.has("Upper_Basin", player) and state.has("Mantis_Claw", player))) or (state.has("Central_Left_Waterways", player) and ((((state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player])) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player]))) or state.has("Crystal_Heart", player)) or (state.has("Isma's_Tear", player) and ((state.world.SPIKETUNNELS[player] and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and ((state.has("Dashmaster", player) or (state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player))) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))))))) or ((state.has("Right_Waterways", player) and state.has("Mantis_Claw", player)) and (state.has("Crystal_Heart", player) or ((state.has("Isma's_Tear", player) and state.has("Monarch_Wings", player)) and ((state.world.SPIKETUNNELS[player] and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and ((state.has("Dashmaster", player) or (state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player))) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))))))) + set_rule(world.get_location("Right_Waterways", player), lambda state: ((((((state.has("Central_Left_Waterways", player) and state.has("Crystal_Heart", player)) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.has("Isma's_Tear", player)))) or ((state.has("Waterways_Shaft", player) and ((state.world.SPIKETUNNELS[player] and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and ((state.has("Dashmaster", player) or (state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player))) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))) and (((state.has("Mantis_Claw", player) and state.has("Crystal_Heart", player)) or ((state.has("Mantis_Claw", player) and state.has("Monarch_Wings", player)) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))) or ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) and state.has("Isma's_Tear", player))))) or ((state.has("Lower_Kingdom's_Edge", player) and state.has("Mantis_Claw", player)) and (state.has("Crystal_Heart", player) or state.has("Isma's_Tear", player)))) or (state.has("Isma's_Grove", player) and (state.has("Isma's_Tear", player) or (((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Crystal_Heart", player)) and state.world.ACIDSKIPS[player])))) or state.has("Emilitia", player))) + set_rule(world.get_location("Junk_Pit", player), lambda state: (state.has("Lower_Left_Waterways", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Isma's_Grove", player), lambda state: (state.has("Right_Waterways", player) and ((((state.has("Mantis_Claw", player) and state.has("Central_Left_Waterways", player)) and (((((((state.has("Vengeful_Spirit", player) and state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) and state.has("Descending_Dark", player))) or (state.has("Howling_Wraiths", player) and state.has("Abyss_Shriek", player))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) and (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.world.MILDSKIPS[player]))) or (state.has("Isma's_Tear", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player]))) or (((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Crystal_Heart", player)) and state.world.ACIDSKIPS[player])))) + set_rule(world.get_location("Emilitia", player), lambda state: (state.has("Right_Waterways", player) and state.has("Mantis_Claw", player))) + set_rule(world.get_location("Upper_Deepnest", player), lambda state: ((state.has("Bottom_Left_Fungal_Wastes", player) or state.has("Failed_Tramway", player)) or (state.has("Far_Right_Deepnest", player) and state.has("Mantis_Claw", player)))) + set_rule(world.get_location("Far_Right_Deepnest", player), lambda state: ((state.has("Mantis_Village", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) or state.has("Fungal_Core", player))) + set_rule(world.get_location("Deepnest", player), lambda state: ((((state.has("Upper_Deepnest", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) or state.has("Lower_Tram", player)) or state.has("Failed_Tramway", player)) or ((state.has("Dark_Deepnest", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))) and (state.has("Lumafly_Lantern", player) or state.world.DARKROOMS[player])))) + set_rule(world.get_location("Failed_Tramway", player), lambda state: ((state.has("Deepnest", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) or (state.has("Dark_Deepnest", player) and state.has("Mantis_Claw", player)))) + set_rule(world.get_location("Dark_Deepnest", player), lambda state: ((state.has("Lumafly_Lantern", player) or state.world.DARKROOMS[player]) and (((((state.has("Deepnest", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) or (state.has("Bottom_Left_Queen's_Gardens", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) or state.has("Weaver's_Den", player)) or (state.has("Distant_Village", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player])))) or (state.has("Failed_Tramway", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))))) + set_rule(world.get_location("Weaver's_Den", player), lambda state: (state.has("Dark_Deepnest", player) and ((((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))) or (state.has("Bottom_Left_Queen's_Gardens", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))))) + set_rule(world.get_location("Distant_Village", player), lambda state: (((state.has("Dark_Deepnest", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))) or state.has("Beast's_Den", player)) or (state.has("Distant_Village_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Beast's_Den", player), lambda state: (((state.has("Dark_Deepnest", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))) or (state.has("Distant_Village_Stag", player) and state.has("Can_Stag", player))) or (state.has("Distant_Village", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))))) + set_rule(world.get_location("Lower_Tram", player), lambda state: (state.has("Tram_Pass", player) and ((state.has("Deepnest", player) or state.has("Mid_Basin", player)) or state.has("Lower_Kingdom's_Edge", player)))) + set_rule(world.get_location("Upper_Basin", player), lambda state: (state.has("Waterways_Shaft", player) or (state.has("Mid_Basin", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))))) + set_rule(world.get_location("Mid_Basin", player), lambda state: ((state.has("Upper_Basin", player) or (state.has("Lower_Basin", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player])))) or state.has("Lower_Tram", player))) + set_rule(world.get_location("Lower_Basin", player), lambda state: (((state.has("Mid_Basin", player) or (state.has("Abyss", player) and ((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Monarch_Wings", player)))) or state.has("Palace_Grounds", player)) or (state.has("Far_Left_Basin", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player))))) + set_rule(world.get_location("Far_Left_Basin", player), lambda state: (state.has("Lower_Basin", player) and (state.has("Monarch_Wings", player) or state.has("Crystal_Heart", player)))) + set_rule(world.get_location("Palace_Grounds", player), lambda state: (((state.has("Lower_Basin", player) and state.has("Mantis_Claw", player)) and state.has("Monarch_Wings", player)) or (state.has("Hidden_Station_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Abyss", player), lambda state: (state.has("Lower_Basin", player) and state.has("King's_Brand", player))) + set_rule(world.get_location("Lower_Kingdom's_Edge", player), lambda state: (state.has("Lower_Tram", player) or (state.has("Hive", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))))) + set_rule(world.get_location("Central_Kingdom's_Edge", player), lambda state: (((state.has("Right_City", player) or (state.has("Lower_Kingdom's_Edge", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) or state.has("Upper_Kingdom's_Edge", player)) or state.has("Center_Right_Kingdom's_Edge", player))) + set_rule(world.get_location("Upper_Kingdom's_Edge", player), lambda state: (((state.has("Center_Right_Kingdom's_Edge", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player])) or state.has("Top_Kingdom's_Edge", player)) or state.has("Tower_of_Love", player))) + set_rule(world.get_location("Center_Right_Kingdom's_Edge", player), lambda state: (((state.has("Central_Kingdom's_Edge", player) and ((state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player])) or (state.has("Isma's_Tear", player) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player))))) or state.has("Upper_Kingdom's_Edge", player)) or state.has("Cast_Off_Shell", player))) + set_rule(world.get_location("Oro_Bench", player), lambda state: ((state.has("Central_Kingdom's_Edge", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))) or (state.has("Center_Right_Kingdom's_Edge", player) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or state.world.SPICYSKIPS[player])))) + set_rule(world.get_location("Cast_Off_Shell", player), lambda state: (state.has("Center_Right_Kingdom's_Edge", player) and (state.has("Monarch_Wings", player) or (state.world.SPICYSKIPS[player] and state.has("Mantis_Claw", player))))) + set_rule(world.get_location("Top_Kingdom's_Edge", player), lambda state: ((state.has("Upper_Kingdom's_Edge", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) or state.has("Colosseum", player))) + set_rule(world.get_location("Hive", player), lambda state: (state.has("Lower_Kingdom's_Edge", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)))) + set_rule(world.get_location("Colosseum", player), lambda state: (state.has("Top_Kingdom's_Edge", player) or state.has("Pale_Lurker_Area", player))) + set_rule(world.get_location("Pale_Lurker_Area", player), lambda state: (state.has("Colosseum", player) and state.has("Mantis_Claw", player))) + set_rule(world.get_location("Crystal_Peak", player), lambda state: ((((state.has("Crossroads", player) and (state.has("Lumafly_Lantern", player) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player)))) or (((state.has("Dirtmouth", player) and state.has("Mantis_Claw", player)) and state.has("Monarch_Wings", player)) and state.has("Crystal_Heart", player))) or (((state.has("Crystal_Heart", player) or (state.has("Monarch_Wings", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)))) and (state.has("Lumafly_Lantern", player) or state.world.DARKROOMS[player])) and state.has("Crystallized_Mound", player))) or state.has("Upper_Crystal_Peak", player))) + set_rule(world.get_location("Upper_Crystal_Peak", player), lambda state: (((state.has("Crystal_Peak", player) and (state.has("Mantis_Claw", player) or ((state.world.SPIKETUNNELS[player] and state.has("Monarch_Wings", player)) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))))))) or (((state.has("King's_Pass", player) and state.has("Mantis_Claw", player)) and state.has("Monarch_Wings", player)) and state.has("Crystal_Heart", player))) or state.has("Hallownest's_Crown", player))) + set_rule(world.get_location("Hallownest's_Crown", player), lambda state: (((state.has("Upper_Crystal_Peak", player) and state.has("Mantis_Claw", player)) and (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)) or state.has("Crystal_Heart", player))) and (state.has("Monarch_Wings", player) or state.world.MILDSKIPS[player]))) + set_rule(world.get_location("Crystallized_Mound", player), lambda state: ((state.has("Crystal_Peak", player) and (state.has("Lumafly_Lantern", player) or state.world.DARKROOMS[player])) and (((state.has("Monarch_Wings", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Crystal_Heart", player)) or ((state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player)))) and (state.has("Monarch_Wings", player) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))))))) + set_rule(world.get_location("Upper_Tram", player), lambda state: (state.has("Tram_Pass", player) and (state.has("Crossroads", player) or state.has("Upper_Resting_Grounds", player)))) + set_rule(world.get_location("Upper_Resting_Grounds", player), lambda state: (((((state.has("Upper_Tram", player) or (state.has("Lower_Resting_Grounds", player) and ((((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Mantis_Claw", player)) or state.has("Monarch_Wings", player)) or state.world.MILDSKIPS[player]))) or (state.has("Crystal_Peak", player) and (state.has("Lumafly_Lantern", player) or state.world.DARKROOMS[player]))) or state.has("Crystallized_Mound", player)) or state.has("Spirits_Glade", player)) or (state.has("Resting_Grounds_Stag", player) and state.has("Can_Stag", player)))) + set_rule(world.get_location("Spirits_Glade", player), lambda state: (state.has_essence(200, player) and state.has("Upper_Resting_Grounds", player))) + set_rule(world.get_location("Lower_Resting_Grounds", player), lambda state: (((state.has("Upper_Resting_Grounds", player) and (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.has("Blue_Lake", player)) or state.has("Right_Elevator", player))) + set_rule(world.get_location("Blue_Lake", player), lambda state: ((state.has("Crossroads", player) and (((state.has("Mantis_Claw", player) and (state.has("Monarch_Wings", player) or state.has("Crystal_Heart", player))) or ((((state.has("Lurien", player) or state.has("Monomon", player)) or state.has("Herrah", player)) or state.has("Dreamer", player)) and state.world.SPICYSKIPS[player])) or (state.world.SHADESKIPS[player] and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or ((state.world.SPICYSKIPS[player] and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))))))) or (state.has("Lower_Resting_Grounds", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))))) + set_rule(world.get_location("Top_Right_Queen's_Gardens", player), lambda state: ((state.has("Left_Fog_Canyon", player) and ((state.has("Isma's_Tear", player) or (((state.has("Mantis_Claw", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.has("Crystal_Heart", player)) and state.world.ACIDSKIPS[player])) or (state.has("Mothwing_Cloak", player) and state.has("Shade_Cloak", player)))) or (state.has("Top_Left_Queen's_Gardens", player) and ((state.has("Crystal_Heart", player) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or state.has("Monarch_Wings", player))))) + set_rule(world.get_location("Bottom_Right_Queen's_Gardens", player), lambda state: ((state.has("Top_Right_Queen's_Gardens", player) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) and state.has("Crystal_Heart", player)))) or (state.has("Bottom_Left_Queen's_Gardens", player) and state.has("Mantis_Claw", player)))) + set_rule(world.get_location("Bottom_Left_Queen's_Gardens", player), lambda state: ((state.has("Bottom_Right_Queen's_Gardens", player) or ((state.has("Top_Left_Queen's_Gardens", player) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.world.SPICYSKIPS[player])) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player)))) or (((state.has("Dark_Deepnest", player) and state.has("Mantis_Claw", player)) and (state.has("Monarch_Wings", player) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.world.MILDSKIPS[player]))) and (state.has("Lumafly_Lantern", player) or (state.world.DARKROOMS[player] and state.world.SPICYSKIPS[player]))))) + set_rule(world.get_location("Top_Left_Queen's_Gardens", player), lambda state: (((((state.has("Bottom_Left_Queen's_Gardens", player) and ((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.world.SPICYSKIPS[player])) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.MILDSKIPS[player]))) and ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) or state.has("Monarch_Wings", player))) or ((state.has("Queen's_Gardens_Stag", player) and state.has("Can_Stag", player)) and ((state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player)) or (((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.world.SHADESKIPS[player]) and state.world.SPICYSKIPS[player])))) or (state.has("Far_Queen's_Gardens", player) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))))) + set_rule(world.get_location("Far_Queen's_Gardens", player), lambda state: (((state.has("Top_Left_Queen's_Gardens", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))) and (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) or (state.has("Greenpath-QG", player) and (state.has("Mantis_Claw", player) or state.has("Monarch_Wings", player))))) + set_rule(world.get_location("Howling_Cliffs", player), lambda state: (((state.has("Greenpath", player) and ((state.has("Mantis_Claw", player) and ((((((((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Desolate_Dive", player) or state.has("Descending_Dark", player))) or state.has("Grubberfly's_Elegy", player)) or state.has("Glowing_Womb", player)) or ((state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player)) and state.has("Dash_Slash", player))) or (state.world.MILDSKIPS[player] and (state.has("Weaversong", player) or (state.has("Spore_Shroom", player) and (state.world.NOTCURSED[player] or state.has("Focus", player)))))) or (((state.has("Mark_of_Pride", player) or state.has("Cyclone_Slash", player)) or (state.has("Mothwing_Cloak", player) or state.has("Shade_Cloak", player))) and state.world.SPICYSKIPS[player])) or state.has("Monarch_Wings", player))) or (((state.has("Monarch_Wings", player) and (state.world.FIREBALLSKIPS[player] and ((state.has("Vengeful_Spirit", player) or state.has("Shade_Soul", player)) or (state.has("Howling_Wraiths", player) or state.has("Abyss_Shriek", player))))) and state.world.SHADESKIPS[player]) and state.world.SPICYSKIPS[player]))) or (state.has("King's_Pass", player) and (state.has("Mantis_Claw", player) or (state.has("Monarch_Wings", player) and state.world.SPICYSKIPS[player])))) or state.has("Stag_Nest", player))) + set_rule(world.get_location("Stag_Nest", player), lambda state: (((state.has("Howling_Cliffs", player) and state.has("Monarch_Wings", player)) and state.world.MILDSKIPS[player]) or ((((((((((state.has("Crossroads_Stag", player) and state.has("Greenpath_Stag", player)) and state.has("Queen's_Station_Stag", player)) and state.has("Queen's_Gardens_Stag", player)) and state.has("City_Storerooms_Stag", player)) and state.has("King's_Station_Stag", player)) and state.has("Resting_Grounds_Stag", player)) and state.has("Distant_Village_Stag", player)) and state.has("Hidden_Station_Stag", player)) or state.has("Stag_Nest_Stag", player)) and state.has("Can_Stag", player)))) \ No newline at end of file diff --git a/worlds/hk/Types.py b/worlds/hk/Types.py new file mode 100644 index 00000000..8d5aee00 --- /dev/null +++ b/worlds/hk/Types.py @@ -0,0 +1,7 @@ +import typing + + +class HKItemData(typing.NamedTuple): + advancement: bool + id: int + type: str \ No newline at end of file diff --git a/worlds/hk/__init__.py b/worlds/hk/__init__.py index 00ea3f8e..a38fc552 100644 --- a/worlds/hk/__init__.py +++ b/worlds/hk/__init__.py @@ -2,12 +2,28 @@ import logging logger = logging.getLogger("Hollow Knight") -from .Locations import locations, lookup_name_to_id -from .Items import items +from .Locations import lookup_name_to_id +from .Items import item_table +from .Regions import create_regions +from .Rules import set_rules from BaseClasses import Region, Entrance, Location, MultiWorld, Item +def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None): + ret = Region(name, None, name, player) + ret.world = world + if locations: + for location in locations: + loc_id = lookup_name_to_id.get(location, 0) + location = HKLocation(player, location, loc_id, ret) + ret.locations.append(location) + if exits: + for exit in exits: + ret.exits.append(Entrance(player, exit, ret)) + + return ret + class HKLocation(Location): game: str = "Hollow Knight" @@ -20,26 +36,13 @@ class HKItem(Item): def __init__(self, name, advancement, code, player: int = None): super(HKItem, self).__init__(name, advancement, code, player) + def gen_hollow(world: MultiWorld, player: int): - logger.info("Doing buggy things.") - gen_regions(world, player) link_regions(world, player) gen_items(world, player) set_rules(world, player) - world.clear_location_cache() - world.clear_entrance_cache() -def set_rules(world: MultiWorld, player: int): - if world.logic[player] != 'nologic': - world.completion_condition[player] = lambda state: state.has('Lurien', player) and \ - state.has('Monomon', player) and \ - state.has('Herrah', player) -def gen_regions(world: MultiWorld, player: int): - world.regions += [ - create_region(world, player, 'Menu', None, ['Hollow Nest S&Q']), - create_region(world, player, 'Hollow Nest', [location["name"] for location in locations.values()]) - ] def link_regions(world: MultiWorld, player: int): @@ -48,23 +51,22 @@ def link_regions(world: MultiWorld, player: int): def gen_items(world: MultiWorld, player: int): pool = [] - for item_id, item_data in items.items(): - name = item_data["name"] - item = HKItem(name, item_data["advancement"], item_id, player=player) - pool.append(item) + for item_name, item_data in item_table.items(): + + item = HKItem(item_name, item_data.advancement, item_data.id, player=player) + + if item_data.type == "Event": + event_location = world.get_location(item_name, player) + world.push_item(event_location, item) + event_location.event = True + event_location.locked = True + if item.name == "King's_Pass": + world.push_precollected(item) + + else: + pool.append(item) + world.itempool += pool -def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None): - ret = Region(name, None, name, player) - ret.world = world - if locations: - for location in locations: - loc_id = lookup_name_to_id[location] - location = HKLocation(player, location, loc_id, ret) - ret.locations.append(location) - if exits: - for exit in exits: - ret.exits.append(Entrance(player, exit, ret)) - return ret