Add "Fake" (Randomizer-only) Hollow Knight items
This commit is contained in:
parent
c9fc446d13
commit
abcc2690f0
139
BaseClasses.py
139
BaseClasses.py
|
@ -260,9 +260,6 @@ class MultiWorld():
|
|||
ret.prog_items['Silver Bow', item.player] += 1
|
||||
elif self.difficulty_requirements[item.player].progressive_bow_limit >= 1:
|
||||
ret.prog_items['Bow', item.player] += 1
|
||||
elif item.name.startswith('Bottle'):
|
||||
if ret.bottle_count(item.player) < self.difficulty_requirements[item.player].progressive_bottle_limit:
|
||||
ret.prog_items[item.name, item.player] += 1
|
||||
elif item.advancement or item.smallkey or item.bigkey:
|
||||
ret.prog_items[item.name, item.player] += 1
|
||||
|
||||
|
@ -484,7 +481,8 @@ class MultiWorld():
|
|||
|
||||
if not sphere:
|
||||
# ran out of places and did not finish yet, quit
|
||||
logging.debug(f"Could not access required locations.")
|
||||
logging.warning(f"Could not access required locations for accessibility check."
|
||||
f" Missing: {locations}")
|
||||
return False
|
||||
|
||||
for location in sphere:
|
||||
|
@ -590,17 +588,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_essence(self, player: int, count: int):
|
||||
return self.prog_items["Dream_Nail", player]
|
||||
# return self.prog_items["Essence", player] >= count
|
||||
|
||||
def has_grubs(self, player: int, count: int):
|
||||
from worlds.hk import Items as HKItems
|
||||
found = 0
|
||||
|
||||
for item_name in HKItems.lookup_type_to_names["Grub"]:
|
||||
found += self.prog_items[item_name, player]
|
||||
if found >= count:
|
||||
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):
|
||||
|
@ -642,10 +642,12 @@ class CollectionState(object):
|
|||
found: int = 0
|
||||
for bottlename in item_name_groups["Bottles"]:
|
||||
found += self.prog_items[bottlename, player]
|
||||
return found
|
||||
return min(self.world.difficulty_requirements[player].progressive_bottle_limit, found)
|
||||
|
||||
def has_bottles(self, bottles: int, player: int) -> bool:
|
||||
"""Version of bottle_count that allows fast abort"""
|
||||
if bottles > self.world.difficulty_requirements[player].progressive_bottle_limit:
|
||||
return False
|
||||
found: int = 0
|
||||
for bottlename in item_name_groups["Bottles"]:
|
||||
found += self.prog_items[bottlename, player]
|
||||
|
@ -796,58 +798,59 @@ class CollectionState(object):
|
|||
if location:
|
||||
self.locations_checked.add(location)
|
||||
changed = False
|
||||
if item.name.startswith('Progressive '):
|
||||
if 'Sword' in item.name:
|
||||
if self.has('Golden Sword', item.player):
|
||||
pass
|
||||
elif self.has('Tempered Sword', item.player) and self.world.difficulty_requirements[
|
||||
item.player].progressive_sword_limit >= 4:
|
||||
self.prog_items['Golden Sword', item.player] += 1
|
||||
changed = True
|
||||
elif self.has('Master Sword', item.player) and self.world.difficulty_requirements[item.player].progressive_sword_limit >= 3:
|
||||
self.prog_items['Tempered Sword', item.player] += 1
|
||||
changed = True
|
||||
elif self.has('Fighter Sword', item.player) and self.world.difficulty_requirements[item.player].progressive_sword_limit >= 2:
|
||||
self.prog_items['Master Sword', item.player] += 1
|
||||
changed = True
|
||||
elif self.world.difficulty_requirements[item.player].progressive_sword_limit >= 1:
|
||||
self.prog_items['Fighter Sword', item.player] += 1
|
||||
changed = True
|
||||
elif 'Glove' in item.name:
|
||||
if self.has('Titans Mitts', item.player):
|
||||
pass
|
||||
elif self.has('Power Glove', item.player):
|
||||
self.prog_items['Titans Mitts', item.player] += 1
|
||||
changed = True
|
||||
else:
|
||||
self.prog_items['Power Glove', item.player] += 1
|
||||
changed = True
|
||||
elif 'Shield' in item.name:
|
||||
if self.has('Mirror Shield', item.player):
|
||||
pass
|
||||
elif self.has('Red Shield', item.player) and self.world.difficulty_requirements[item.player].progressive_shield_limit >= 3:
|
||||
self.prog_items['Mirror Shield', item.player] += 1
|
||||
changed = True
|
||||
elif self.has('Blue Shield', item.player) and self.world.difficulty_requirements[item.player].progressive_shield_limit >= 2:
|
||||
self.prog_items['Red Shield', item.player] += 1
|
||||
changed = True
|
||||
elif self.world.difficulty_requirements[item.player].progressive_shield_limit >= 1:
|
||||
self.prog_items['Blue Shield', item.player] += 1
|
||||
changed = True
|
||||
elif 'Bow' in item.name:
|
||||
if self.has('Silver Bow', item.player):
|
||||
pass
|
||||
elif self.has('Bow', item.player):
|
||||
self.prog_items['Silver Bow', item.player] += 1
|
||||
changed = True
|
||||
else:
|
||||
self.prog_items['Bow', item.player] += 1
|
||||
changed = True
|
||||
elif item.name.startswith('Bottle'):
|
||||
if self.bottle_count(item.player) < self.world.difficulty_requirements[item.player].progressive_bottle_limit:
|
||||
self.prog_items[item.name, item.player] += 1
|
||||
changed = True
|
||||
elif event or item.advancement:
|
||||
|
||||
# TODO: create a mapping for progressive items in each game and use that
|
||||
if item.game == "A Link to the Past":
|
||||
if item.name.startswith('Progressive '):
|
||||
if 'Sword' in item.name:
|
||||
if self.has('Golden Sword', item.player):
|
||||
pass
|
||||
elif self.has('Tempered Sword', item.player) and self.world.difficulty_requirements[
|
||||
item.player].progressive_sword_limit >= 4:
|
||||
self.prog_items['Golden Sword', item.player] += 1
|
||||
changed = True
|
||||
elif self.has('Master Sword', item.player) and self.world.difficulty_requirements[item.player].progressive_sword_limit >= 3:
|
||||
self.prog_items['Tempered Sword', item.player] += 1
|
||||
changed = True
|
||||
elif self.has('Fighter Sword', item.player) and self.world.difficulty_requirements[item.player].progressive_sword_limit >= 2:
|
||||
self.prog_items['Master Sword', item.player] += 1
|
||||
changed = True
|
||||
elif self.world.difficulty_requirements[item.player].progressive_sword_limit >= 1:
|
||||
self.prog_items['Fighter Sword', item.player] += 1
|
||||
changed = True
|
||||
elif 'Glove' in item.name:
|
||||
if self.has('Titans Mitts', item.player):
|
||||
pass
|
||||
elif self.has('Power Glove', item.player):
|
||||
self.prog_items['Titans Mitts', item.player] += 1
|
||||
changed = True
|
||||
else:
|
||||
self.prog_items['Power Glove', item.player] += 1
|
||||
changed = True
|
||||
elif 'Shield' in item.name:
|
||||
if self.has('Mirror Shield', item.player):
|
||||
pass
|
||||
elif self.has('Red Shield', item.player) and self.world.difficulty_requirements[item.player].progressive_shield_limit >= 3:
|
||||
self.prog_items['Mirror Shield', item.player] += 1
|
||||
changed = True
|
||||
elif self.has('Blue Shield', item.player) and self.world.difficulty_requirements[item.player].progressive_shield_limit >= 2:
|
||||
self.prog_items['Red Shield', item.player] += 1
|
||||
changed = True
|
||||
elif self.world.difficulty_requirements[item.player].progressive_shield_limit >= 1:
|
||||
self.prog_items['Blue Shield', item.player] += 1
|
||||
changed = True
|
||||
elif 'Bow' in item.name:
|
||||
if self.has('Silver Bow', item.player):
|
||||
pass
|
||||
elif self.has('Bow', item.player):
|
||||
self.prog_items['Silver Bow', item.player] += 1
|
||||
changed = True
|
||||
else:
|
||||
self.prog_items['Bow', item.player] += 1
|
||||
changed = True
|
||||
|
||||
|
||||
if not changed and (event or item.advancement):
|
||||
self.prog_items[item.name, item.player] += 1
|
||||
changed = True
|
||||
|
||||
|
@ -1108,7 +1111,7 @@ class Location():
|
|||
|
||||
class Item():
|
||||
location: Optional[Location] = None
|
||||
world: Optional[World] = None
|
||||
world: Optional[MultiWorld] = None
|
||||
game: str = "Generic"
|
||||
type: str = None
|
||||
pedestal_credit_text = "and the Unknown Item"
|
||||
|
|
6
Main.py
6
Main.py
|
@ -9,7 +9,7 @@ import concurrent.futures
|
|||
import pickle
|
||||
|
||||
from BaseClasses import MultiWorld, CollectionState, Region, Item
|
||||
from worlds.alttp import ALttPLocation, ALttPItem
|
||||
from worlds.alttp import ALttPLocation
|
||||
from worlds.alttp.Items import ItemFactory, item_table, item_name_groups
|
||||
from worlds.alttp.Regions import create_regions, mark_light_world_regions, \
|
||||
lookup_vanilla_location_to_entrance
|
||||
|
@ -25,6 +25,7 @@ from Utils import output_path, parse_player_names, get_options, __version__, _ve
|
|||
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
|
||||
from worlds import Games
|
||||
import Patch
|
||||
|
||||
seeddigits = 20
|
||||
|
@ -396,7 +397,7 @@ def main(args, seed=None):
|
|||
|
||||
for location in [loc for loc in world.get_filled_locations() if type(loc.address) is int]:
|
||||
main_entrance = get_entrance_to_region(location.parent_region)
|
||||
if location.game == "Hollow Knight":
|
||||
if location.game == Games.HK:
|
||||
checks_in_area[location.player]["Light World"].append(location.address)
|
||||
elif location.parent_region.dungeon:
|
||||
dungeonname = {'Inverted Agahnims Tower': 'Agahnims Tower',
|
||||
|
@ -573,6 +574,7 @@ def copy_world(world):
|
|||
item.location = ret.get_location(location.name, location.player)
|
||||
item.world = ret
|
||||
item.type = location.item.type
|
||||
item.game = location.item.game
|
||||
|
||||
if location.event:
|
||||
ret.get_location(location.name, location.player).event = True
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
import enum
|
||||
|
||||
__all__ = {"lookup_any_item_id_to_name",
|
||||
"lookup_any_location_id_to_name"}
|
||||
"lookup_any_location_id_to_name",
|
||||
"network_data_package",
|
||||
"Games"}
|
||||
|
||||
from .alttp.Items import lookup_id_to_name as alttp
|
||||
from .hk.Items import lookup_id_to_name as hk
|
||||
|
@ -13,3 +17,9 @@ lookup_any_location_id_to_name = {**Regions.lookup_id_to_name, **Locations.looku
|
|||
network_data_package = {"lookup_any_location_id_to_name": lookup_any_location_id_to_name,
|
||||
"lookup_any_item_id_to_name": lookup_any_item_id_to_name,
|
||||
"version": 1}
|
||||
|
||||
@enum.unique
|
||||
class Games(str, enum.Enum):
|
||||
HK = "Hollow Knight"
|
||||
LTTP = "A Link to the Past"
|
||||
|
||||
|
|
|
@ -200,6 +200,21 @@ item_table = {'Bow': (True, None, 0x0B, 'You have\nchosen the\narcher class.', '
|
|||
'Open Floodgate': (True, 'Event', None, None, None, None, None, None, None, None),
|
||||
}
|
||||
|
||||
progression_mapping = {
|
||||
"Golden Sword": ("Progressive Sword", 4),
|
||||
"Tempered Sword": ("Progressive Sword", 3),
|
||||
"Master Sword": ("Progressive Sword", 2),
|
||||
"Fighter Sword": ("Progressive Sword", 1),
|
||||
"Titans Mitts": ("Progressive Glove", 2),
|
||||
"Power Glove": ("Progressive Glove", 1),
|
||||
"Blue Shield": ("Progressive Shield", 1),
|
||||
"Red Shield": ("Progressive Shield", 2),
|
||||
"Mirror Shield": ("Progressive Shield", 3),
|
||||
"Silver Bow": ("Progressive Bow", 2),
|
||||
"Bow": ("Progressive Bow", 1)
|
||||
|
||||
}
|
||||
|
||||
lookup_id_to_name = {data[2]: name for name, data in item_table.items() if type(data[2]) == int}
|
||||
|
||||
hint_blacklist = {"Triforce"}
|
||||
|
|
|
@ -2,10 +2,12 @@
|
|||
# do not edit manually
|
||||
|
||||
from .Types import HKItemData
|
||||
from typing import Dict, Set
|
||||
|
||||
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'),
|
||||
|
@ -78,9 +80,11 @@ item_table = \
|
|||
'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'),
|
||||
|
@ -152,6 +156,7 @@ item_table = \
|
|||
'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'),
|
||||
|
@ -256,6 +261,7 @@ item_table = \
|
|||
'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'),
|
||||
|
@ -291,6 +297,7 @@ item_table = \
|
|||
'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'),
|
||||
|
@ -374,4 +381,7 @@ item_table = \
|
|||
'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()}
|
||||
lookup_id_to_name:Dict[int, str] = {data.id: item_name for item_name, data in item_table.items()}
|
||||
lookup_type_to_names:Dict[str, Set[str]] = {}
|
||||
for item, item_data in item_table.items():
|
||||
lookup_type_to_names.setdefault(item_data.type, set()).add(item)
|
|
@ -5,9 +5,6 @@ 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)
|
||||
world.completion_condition[player] = lambda state: state.has('Hollow Knight', player)
|
||||
|
||||
|
||||
|
@ -22,8 +19,8 @@ def set_rules(world, 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("Dream_Gate", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(player, 300)))
|
||||
set_rule(world.get_location("Awoken_Dream_Nail", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(player, 300)))
|
||||
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))))
|
||||
|
@ -34,7 +31,7 @@ def set_rules(world, 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("Grubsong", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(player, 5)))
|
||||
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)))))
|
||||
|
@ -46,17 +43,17 @@ def set_rules(world, 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)) and state.world.SPICYSKIPS[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("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("Dream_Wielder", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(player, 300)))
|
||||
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("Grubberfly's_Elegy", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(player, 5)))
|
||||
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))))
|
||||
|
@ -69,12 +66,12 @@ def set_rules(world, 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("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-Seer", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(player, 300)))
|
||||
set_rule(world.get_location("Mask_Shard-5_Grubs", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(player, 5)))
|
||||
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))
|
||||
|
@ -85,7 +82,7 @@ def set_rules(world, 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-Seer", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(player, 300)))
|
||||
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))
|
||||
|
@ -99,8 +96,8 @@ def set_rules(world, 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-Seer", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(player, 300)))
|
||||
set_rule(world.get_location("Pale_Ore-Grubs", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(player, 5)))
|
||||
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)))
|
||||
|
@ -110,7 +107,7 @@ def set_rules(world, 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-Grubs", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(player, 5)))
|
||||
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)))))
|
||||
|
@ -143,15 +140,15 @@ def set_rules(world, 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)) and state.world.SPICYSKIPS[player])))) or (((((state.has("Lurien", player) or state.has("Monomon", player)) or state.has("Herrah", 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-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(player, 5)))
|
||||
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-Seer", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(player, 300)))
|
||||
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))
|
||||
|
@ -160,7 +157,7 @@ def set_rules(world, 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-Grubs", player), lambda state: (state.has("Crossroads", player) and state.has_grubs(player, 5)))
|
||||
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))))))
|
||||
|
@ -168,11 +165,11 @@ def set_rules(world, 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-Seer", player), lambda state: (state.has("Upper_Resting_Grounds", player) and state.has_essence(player, 300)))
|
||||
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)) 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-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))))
|
||||
|
@ -194,7 +191,7 @@ def set_rules(world, 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)) 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-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)))
|
||||
|
@ -278,12 +275,15 @@ def set_rules(world, 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("Hollow Knight", player), lambda state: state.has('Lurien', player) and \
|
||||
state.has('Monomon', player) and \
|
||||
state.has('Herrah', player))
|
||||
|
||||
set_rule(world.get_location("King's_Pass", player), lambda state: (state.has("Howling_Cliffs", player) or (state.has("Dirtmouth", player) and state.has("Mantis_Claw", player))))
|
||||
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)))
|
||||
|
@ -297,7 +297,7 @@ def set_rules(world, 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)) 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("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])))))
|
||||
|
@ -351,9 +351,9 @@ def set_rules(world, 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("Spirits_Glade", player), lambda state: (state.has_essence(player, 200) 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)) 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("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])))))
|
||||
|
|
|
@ -62,7 +62,8 @@ def gen_items(world: MultiWorld, player: int):
|
|||
event_location.locked = True
|
||||
if item.name == "King's_Pass":
|
||||
world.push_precollected(item)
|
||||
|
||||
elif item_data.type == "Fake":
|
||||
pass
|
||||
else:
|
||||
pool.append(item)
|
||||
|
||||
|
|
Loading…
Reference in New Issue