mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
Convert several locations to using events
Event locations automatically get Moon Perarl requirements added, and ensure the other referenced location is listed in the spoiler log's path section
This commit is contained in:
18
Rules.py
18
Rules.py
@@ -110,11 +110,14 @@ def global_rules(world):
|
||||
set_rule(world.get_entrance('South Hyrule Teleporter'), lambda state: state.has('Hammer') and state.can_lift_rocks() and state.has_Pearl()) # bunny cannot use hammer
|
||||
set_rule(world.get_entrance('Kakariko Teleporter'), lambda state: ((state.has('Hammer') and state.can_lift_rocks()) or state.can_lift_heavy_rocks()) and state.has_Pearl()) # bunny cannot lift bushes
|
||||
set_rule(world.get_location('Flute Spot'), lambda state: state.has('Shovel'))
|
||||
set_rule(world.get_location('Purple Chest'), lambda state: state.can_reach('Blacksmith', 'Location')) # Can S&Q with chest
|
||||
set_rule(world.get_location('Dark Blacksmith Ruins'), lambda state: state.has('Return Smith'))
|
||||
set_rule(world.get_location('Purple Chest'), lambda state: state.has('Pick Up Purple Chest')) # Can S&Q with chest
|
||||
|
||||
set_rule(world.get_location('Zora\'s Ledge'), lambda state: state.has('Flippers'))
|
||||
set_rule(world.get_entrance('Waterfall of Wishing'), lambda state: state.has('Flippers')) # can be fake flippered into, but is in weird state inside that might prevent you from doing things. Can be improved in future Todo
|
||||
set_rule(world.get_location('Blacksmith'), lambda state: state.can_lift_heavy_rocks() and state.can_reach('West Dark World') and state.has_Pearl()) # Can S&Q with smith
|
||||
set_rule(world.get_location('Frog'), lambda state: state.can_lift_heavy_rocks()) # will get automatic moon pearl requirement
|
||||
set_rule(world.get_location('Missing Smith'), lambda state: state.has('Get Frog')) # Can S&Q with smith
|
||||
set_rule(world.get_location('Blacksmith'), lambda state: state.has('Return Smith'))
|
||||
set_rule(world.get_location('Magic Bat'), lambda state: state.has('Magic Powder'))
|
||||
set_rule(world.get_location('Sick Kid'), lambda state: state.has_bottle())
|
||||
set_rule(world.get_location('Library'), lambda state: state.has_Boots())
|
||||
@@ -246,7 +249,9 @@ def global_rules(world):
|
||||
# for location in ['Tower of Hera - Big Key Chest']:
|
||||
# forbid_item(world.get_location(location), 'Small Key (Tower of Hera)')
|
||||
|
||||
set_rule(world.get_entrance('Swamp Palace Moat'), lambda state: state.has('Flippers') and state.can_reach('Dam'))
|
||||
set_rule(world.get_entrance('Swamp Palace Moat'), lambda state: state.has('Flippers') and state.has('Open Floodgate'))
|
||||
add_rule(world.get_location('Sunken Treasure'), lambda state: state.has('Open Floodgate'))
|
||||
|
||||
set_rule(world.get_entrance('Swamp Palace Small Key Door'), lambda state: state.has_key('Small Key (Swamp Palace)'))
|
||||
set_rule(world.get_entrance('Swamp Palace (Center)'), lambda state: state.has('Hammer'))
|
||||
set_rule(world.get_location('Swamp Palace - Big Chest'), lambda state: state.has('Big Key (Swamp Palace)') or item_name(state, 'Swamp Palace - Big Chest') == 'Big Key (Swamp Palace)')
|
||||
@@ -780,13 +785,8 @@ def set_bunny_rules(world):
|
||||
bunny_impassable_caves = ['Bumper Cave', 'Two Brothers House', 'Hookshot Cave', 'Skull Woods First Section (Right)', 'Skull Woods First Section (Left)', 'Skull Woods First Section (Top)', 'Turtle Rock (Entrance)', 'Turtle Rock (Second Section)', 'Turtle Rock (Big Chest)', 'Skull Woods Second Section (Drop)',
|
||||
'Turtle Rock (Eye Bridge)', 'Sewers', 'Pyramid', 'Spiral Cave (Top)', 'Desert Palace Main (Inner)']
|
||||
|
||||
bunny_accessible_locations = ['Link\'s Uncle', 'Sahasrahla', 'Sick Kid', 'Lost Woods Hideout', 'Lumberjack Tree', 'Checkerboard Cave', 'Potion Shop', 'Spectacle Rock Cave', 'Pyramid', 'Hype Cave - Generous Guy', 'Peg Cave', 'Bumper Cave Ledge']
|
||||
bunny_accessible_locations = ['Link\'s Uncle', 'Sahasrahla', 'Sick Kid', 'Lost Woods Hideout', 'Lumberjack Tree', 'Checkerboard Cave', 'Potion Shop', 'Spectacle Rock Cave', 'Pyramid', 'Hype Cave - Generous Guy', 'Peg Cave', 'Bumper Cave Ledge', 'Dark Blacksmith Ruins']
|
||||
|
||||
if world.get_region('Dam').is_dark_world:
|
||||
# if Dam is is dark world, then it is required to have the pearl to get the sunken item
|
||||
add_rule(world.get_location('Sunken Treasure'), lambda state: state.has_Pearl())
|
||||
# similarly we need perl to get across the swamp palace moat
|
||||
add_rule(world.get_entrance('Swamp Palace Moat'), lambda state: state.has_Pearl())
|
||||
|
||||
def path_to_access_rule(path, entrance):
|
||||
return lambda state: state.can_reach(entrance) and all(rule(state) for rule in path)
|
||||
|
||||
Reference in New Issue
Block a user