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