This commit is contained in:
Fabian Dill 2021-02-24 06:02:51 +01:00
parent e60ae897b4
commit 499f67c586
9 changed files with 1136 additions and 1382 deletions

View File

@ -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

View File

@ -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]:

29
Main.py
View File

@ -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()

View File

@ -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()}
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()}

File diff suppressed because it is too large Load Diff

13
worlds/hk/Regions.py Normal file
View File

@ -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"])
]

360
worlds/hk/Rules.py Normal file
View File

@ -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))))

7
worlds/hk/Types.py Normal file
View File

@ -0,0 +1,7 @@
import typing
class HKItemData(typing.NamedTuple):
advancement: bool
id: int
type: str

View File

@ -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