Kingdom Hearts: Implement New Game (#3201)
* Added Final Ansem Goal
* Update __init__.py
* Update Rules.py
* New EotW logic
* Update __init__.py
* Update __init__.py
* Update Items.py
* Update Rules.py
* Rename Location to be more meaningful, logic fixes
* Removed Aerith locations
* Change to allow randomized keyblade stats
* Fixed incorrect option description. Fixed victory locations for alternative win condition settings
* Commit
* Lots of changes
* Fixes
* Fixes
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Fixes
* Update Rules.py
* Update Rules.py
* Update Options.py
* Old Book is not required
* Added Jungle Slider
* Add Cid Check
* Add Wonderland Book Check
* Add OC Green Trinity
* Add Inferno Band Event
* Add Kurt Zisa Zantetsuken and Unknown EXP Necklace checks
* Update Locations.py
* Fix Final Ansem Goal
* Update __init__.py
* Update __init__.py
* Add options to exclude super bosses and 100 acre wood
* Fix puppies trp, remove cid check
* Fix 100 Acre Wood Option
* Material to Empty Bottle
* Fixed rules, location names, etc
* Fix super bosses
* Add item + location groups, level sanity
* Fix location and item group names
* Add Bad Starting Weapons Option
* Logic Error for 100 Acre Wood
* Update Rules.py
* Update __init__.py
* Fixes related to randomized keyblade stats and super bosses
* Credits and Fixes
* Logic fixes, location name group changes
* Update Options.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update .gitignore
* Update CODEOWNERS
* Update docs/CODEOWNERS
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fixed Atlantica item group name
* Update CODEOWNERS
* Update Client.py
* Update Items.py
* Update __init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fixed report group name
* Fixes for PR
* Update Options.py
* Push changes for making the Final Rest Door appear, few option fixes
* Update Rules.py
* Website formatting, 0 min for reports, option description typo
* Create KH1Client.py
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Options.py
* Update Options.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Add Donald and Goofy Death Link
* Add fight logic for optional bosses
* Update __init__.py
* Update Options.py
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Client.py
* Update kh1_en.md
* Update __init__.py
* Cleaning up for PR
* Update Client.py
* Added event locations for vanilla items
* Add proper location groups and auto hint synth shop items when entering
* so many changes
* Update Rules.py
* fixed oathkeeper and crabclaw logic
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update en_Kingdom Hearts.md
* Update en_Kingdom Hearts.md
* fixing text
* Update kh1_en.md
* Addition of new key items
* Update Regions.py
* Push for start item from pool test
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Document update
* Update Rules.py
* Added starting world range and final rest goal option
* Update kh1_en.md
* Update en_Kingdom Hearts.md
* Update __init__.py
* Update __init__.py
* Clean up options descriptions
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Client.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fix grammar in document
* Update __init__.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Removed return type
* Update __init__.py
* Update __init__.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update __init__.py
* Fix missing i replacement, rework set rules to use "self" instead of a million arguments
* Update KH1Client.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Reformat rules, fix bug with exp mult, add to readme
* Clean up regions, fix client
* Fix item send prompt
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/test/test_goal.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Fix so many suggestions
* removed junk in missable locations option
* Update __init__.py
* Change credits order
* Update en_Kingdom Hearts.md
* Standardize punctuation
* Update en_Kingdom Hearts.md
* Update en_Kingdom Hearts.md
* Update Regions.py
* Removed "disclude" options in generation fillers
* Update Rules.py
* Update __init__.py
* Fix cemetery typo
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Add option groups and option presets
* Update worlds/kh1/__init__.py
That's a good idea!
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Presets.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* fixed HB rule and formatting on a line in Items.py
* Fix logic bug with Geppetto's House postcard
* Update Rules.py
* Update Options.py
* Update __init__.py
* Update __init__.py
* Huge under-the-hood update for PR
* More updates for PR
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update __init__.py
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
2024-08-18 22:39:37 +00:00
from BaseClasses import CollectionState
from worlds . generic . Rules import add_rule
2024-08-24 00:06:08 +00:00
from math import ceil
Kingdom Hearts: Implement New Game (#3201)
* Added Final Ansem Goal
* Update __init__.py
* Update Rules.py
* New EotW logic
* Update __init__.py
* Update __init__.py
* Update Items.py
* Update Rules.py
* Rename Location to be more meaningful, logic fixes
* Removed Aerith locations
* Change to allow randomized keyblade stats
* Fixed incorrect option description. Fixed victory locations for alternative win condition settings
* Commit
* Lots of changes
* Fixes
* Fixes
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Fixes
* Update Rules.py
* Update Rules.py
* Update Options.py
* Old Book is not required
* Added Jungle Slider
* Add Cid Check
* Add Wonderland Book Check
* Add OC Green Trinity
* Add Inferno Band Event
* Add Kurt Zisa Zantetsuken and Unknown EXP Necklace checks
* Update Locations.py
* Fix Final Ansem Goal
* Update __init__.py
* Update __init__.py
* Add options to exclude super bosses and 100 acre wood
* Fix puppies trp, remove cid check
* Fix 100 Acre Wood Option
* Material to Empty Bottle
* Fixed rules, location names, etc
* Fix super bosses
* Add item + location groups, level sanity
* Fix location and item group names
* Add Bad Starting Weapons Option
* Logic Error for 100 Acre Wood
* Update Rules.py
* Update __init__.py
* Fixes related to randomized keyblade stats and super bosses
* Credits and Fixes
* Logic fixes, location name group changes
* Update Options.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update .gitignore
* Update CODEOWNERS
* Update docs/CODEOWNERS
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fixed Atlantica item group name
* Update CODEOWNERS
* Update Client.py
* Update Items.py
* Update __init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fixed report group name
* Fixes for PR
* Update Options.py
* Push changes for making the Final Rest Door appear, few option fixes
* Update Rules.py
* Website formatting, 0 min for reports, option description typo
* Create KH1Client.py
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Options.py
* Update Options.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Add Donald and Goofy Death Link
* Add fight logic for optional bosses
* Update __init__.py
* Update Options.py
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Client.py
* Update kh1_en.md
* Update __init__.py
* Cleaning up for PR
* Update Client.py
* Added event locations for vanilla items
* Add proper location groups and auto hint synth shop items when entering
* so many changes
* Update Rules.py
* fixed oathkeeper and crabclaw logic
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update en_Kingdom Hearts.md
* Update en_Kingdom Hearts.md
* fixing text
* Update kh1_en.md
* Addition of new key items
* Update Regions.py
* Push for start item from pool test
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Document update
* Update Rules.py
* Added starting world range and final rest goal option
* Update kh1_en.md
* Update en_Kingdom Hearts.md
* Update __init__.py
* Update __init__.py
* Clean up options descriptions
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Client.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fix grammar in document
* Update __init__.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Removed return type
* Update __init__.py
* Update __init__.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update __init__.py
* Fix missing i replacement, rework set rules to use "self" instead of a million arguments
* Update KH1Client.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Reformat rules, fix bug with exp mult, add to readme
* Clean up regions, fix client
* Fix item send prompt
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/test/test_goal.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Fix so many suggestions
* removed junk in missable locations option
* Update __init__.py
* Change credits order
* Update en_Kingdom Hearts.md
* Standardize punctuation
* Update en_Kingdom Hearts.md
* Update en_Kingdom Hearts.md
* Update Regions.py
* Removed "disclude" options in generation fillers
* Update Rules.py
* Update __init__.py
* Fix cemetery typo
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Add option groups and option presets
* Update worlds/kh1/__init__.py
That's a good idea!
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Presets.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* fixed HB rule and formatting on a line in Items.py
* Fix logic bug with Geppetto's House postcard
* Update Rules.py
* Update Options.py
* Update __init__.py
* Update __init__.py
* Huge under-the-hood update for PR
* More updates for PR
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update __init__.py
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
2024-08-18 22:39:37 +00:00
SINGLE_PUPPIES = [ " Puppy " + str ( i ) . rjust ( 2 , " 0 " ) for i in range ( 1 , 100 ) ]
TRIPLE_PUPPIES = [ " Puppies " + str ( 3 * ( i - 1 ) + 1 ) . rjust ( 2 , " 0 " ) + " - " + str ( 3 * ( i - 1 ) + 3 ) . rjust ( 2 , " 0 " ) for i in range ( 1 , 34 ) ]
TORN_PAGES = [ " Torn Page " + str ( i ) for i in range ( 1 , 6 ) ]
WORLDS = [ " Wonderland " , " Olympus Coliseum " , " Deep Jungle " , " Agrabah " , " Monstro " , " Atlantica " , " Halloween Town " , " Neverland " , " Hollow Bastion " , " End of the World " ]
KEYBLADES = [ " Lady Luck " , " Olympia " , " Jungle King " , " Three Wishes " , " Wishing Star " , " Crabclaw " , " Pumpkinhead " , " Fairy Harp " , " Divine Rose " , " Oblivion " ]
def has_x_worlds ( state : CollectionState , player : int , num_of_worlds : int , keyblades_unlock_chests : bool ) - > bool :
worlds_acquired = 0.0
for i in range ( len ( WORLDS ) ) :
if state . has ( WORLDS [ i ] , player ) :
worlds_acquired = worlds_acquired + 0.5
if ( state . has ( WORLDS [ i ] , player ) and ( not keyblades_unlock_chests or state . has ( KEYBLADES [ i ] , player ) ) ) or ( state . has ( WORLDS [ i ] , player ) and WORLDS [ i ] == " Atlantica " ) :
worlds_acquired = worlds_acquired + 0.5
return worlds_acquired > = num_of_worlds
def has_emblems ( state : CollectionState , player : int , keyblades_unlock_chests : bool ) - > bool :
return state . has_all ( {
" Emblem Piece (Flame) " ,
" Emblem Piece (Chest) " ,
" Emblem Piece (Statue) " ,
" Emblem Piece (Fountain) " ,
" Hollow Bastion " } , player ) and has_x_worlds ( state , player , 5 , keyblades_unlock_chests )
def has_puppies_all ( state : CollectionState , player : int , puppies_required : int ) - > bool :
return state . has ( " All Puppies " , player )
def has_puppies_triplets ( state : CollectionState , player : int , puppies_required : int ) - > bool :
2024-08-24 00:06:08 +00:00
return state . has_from_list_unique ( TRIPLE_PUPPIES , player , ceil ( puppies_required / 3 ) )
Kingdom Hearts: Implement New Game (#3201)
* Added Final Ansem Goal
* Update __init__.py
* Update Rules.py
* New EotW logic
* Update __init__.py
* Update __init__.py
* Update Items.py
* Update Rules.py
* Rename Location to be more meaningful, logic fixes
* Removed Aerith locations
* Change to allow randomized keyblade stats
* Fixed incorrect option description. Fixed victory locations for alternative win condition settings
* Commit
* Lots of changes
* Fixes
* Fixes
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Fixes
* Update Rules.py
* Update Rules.py
* Update Options.py
* Old Book is not required
* Added Jungle Slider
* Add Cid Check
* Add Wonderland Book Check
* Add OC Green Trinity
* Add Inferno Band Event
* Add Kurt Zisa Zantetsuken and Unknown EXP Necklace checks
* Update Locations.py
* Fix Final Ansem Goal
* Update __init__.py
* Update __init__.py
* Add options to exclude super bosses and 100 acre wood
* Fix puppies trp, remove cid check
* Fix 100 Acre Wood Option
* Material to Empty Bottle
* Fixed rules, location names, etc
* Fix super bosses
* Add item + location groups, level sanity
* Fix location and item group names
* Add Bad Starting Weapons Option
* Logic Error for 100 Acre Wood
* Update Rules.py
* Update __init__.py
* Fixes related to randomized keyblade stats and super bosses
* Credits and Fixes
* Logic fixes, location name group changes
* Update Options.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update .gitignore
* Update CODEOWNERS
* Update docs/CODEOWNERS
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fixed Atlantica item group name
* Update CODEOWNERS
* Update Client.py
* Update Items.py
* Update __init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fixed report group name
* Fixes for PR
* Update Options.py
* Push changes for making the Final Rest Door appear, few option fixes
* Update Rules.py
* Website formatting, 0 min for reports, option description typo
* Create KH1Client.py
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Options.py
* Update Options.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Add Donald and Goofy Death Link
* Add fight logic for optional bosses
* Update __init__.py
* Update Options.py
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update Client.py
* Update kh1_en.md
* Update __init__.py
* Cleaning up for PR
* Update Client.py
* Added event locations for vanilla items
* Add proper location groups and auto hint synth shop items when entering
* so many changes
* Update Rules.py
* fixed oathkeeper and crabclaw logic
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update Rules.py
* Update en_Kingdom Hearts.md
* Update en_Kingdom Hearts.md
* fixing text
* Update kh1_en.md
* Addition of new key items
* Update Regions.py
* Push for start item from pool test
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Document update
* Update Rules.py
* Added starting world range and final rest goal option
* Update kh1_en.md
* Update en_Kingdom Hearts.md
* Update __init__.py
* Update __init__.py
* Clean up options descriptions
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/Client.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Fix grammar in document
* Update __init__.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Removed return type
* Update __init__.py
* Update __init__.py
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Update __init__.py
* Fix missing i replacement, rework set rules to use "self" instead of a million arguments
* Update KH1Client.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Reformat rules, fix bug with exp mult, add to readme
* Clean up regions, fix client
* Fix item send prompt
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/en_Kingdom Hearts.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/docs/kh1_en.md
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/test/test_goal.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Locations.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Items.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Regions.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/__init__.py
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Fix so many suggestions
* removed junk in missable locations option
* Update __init__.py
* Change credits order
* Update en_Kingdom Hearts.md
* Standardize punctuation
* Update en_Kingdom Hearts.md
* Update en_Kingdom Hearts.md
* Update Regions.py
* Removed "disclude" options in generation fillers
* Update Rules.py
* Update __init__.py
* Fix cemetery typo
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Add option groups and option presets
* Update worlds/kh1/__init__.py
That's a good idea!
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Options.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Presets.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* fixed HB rule and formatting on a line in Items.py
* Fix logic bug with Geppetto's House postcard
* Update Rules.py
* Update Options.py
* Update __init__.py
* Update __init__.py
* Huge under-the-hood update for PR
* More updates for PR
* Update worlds/kh1/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update worlds/kh1/Rules.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Update __init__.py
---------
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
2024-08-18 22:39:37 +00:00
def has_puppies_individual ( state : CollectionState , player : int , puppies_required : int ) - > bool :
return state . has_from_list_unique ( SINGLE_PUPPIES , player , puppies_required )
def has_torn_pages ( state : CollectionState , player : int , pages_required : int ) - > bool :
return state . count_from_list_unique ( TORN_PAGES , player ) > = pages_required
def has_all_arts ( state : CollectionState , player : int ) - > bool :
return state . has_all ( { " Fire Arts " , " Blizzard Arts " , " Thunder Arts " , " Cure Arts " , " Gravity Arts " , " Stop Arts " , " Aero Arts " } , player )
def has_all_summons ( state : CollectionState , player : int ) - > bool :
return state . has_all ( { " Simba " , " Bambi " , " Genie " , " Dumbo " , " Mushu " , " Tinker Bell " } , player )
def has_all_magic_lvx ( state : CollectionState , player : int , level ) - > bool :
return state . has_all_counts ( {
" Progressive Fire " : level ,
" Progressive Blizzard " : level ,
" Progressive Thunder " : level ,
" Progressive Cure " : level ,
" Progressive Gravity " : level ,
" Progressive Aero " : level ,
" Progressive Stop " : level } , player )
def has_offensive_magic ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " Progressive Fire " , " Progressive Blizzard " , " Progressive Thunder " , " Progressive Gravity " , " Progressive Stop " } , player )
def has_reports ( state : CollectionState , player : int , eotw_required_reports : int ) - > bool :
return state . has_group_unique ( " Reports " , player , eotw_required_reports )
def has_final_rest_door ( state : CollectionState , player : int , final_rest_door_requirement : str , final_rest_door_required_reports : int , keyblades_unlock_chests : bool , puppies_choice : str ) :
if final_rest_door_requirement == " reports " :
return state . has_group_unique ( " Reports " , player , final_rest_door_required_reports )
if final_rest_door_requirement == " puppies " :
if puppies_choice == " individual " :
return has_puppies_individual ( state , player , 99 )
if puppies_choice == " triplets " :
return has_puppies_triplets ( state , player , 99 )
return has_puppies_all ( state , player , 99 )
if final_rest_door_requirement == " postcards " :
return state . has ( " Postcard " , player , 10 )
if final_rest_door_requirement == " superbosses " :
return (
state . has_all ( { " Olympus Coliseum " , " Neverland " , " Agrabah " , " Hollow Bastion " , " Green Trinity " , " Phil Cup " , " Pegasus Cup " , " Hercules Cup " , " Entry Pass " } , player )
and has_emblems ( state , player , keyblades_unlock_chests )
and has_all_magic_lvx ( state , player , 2 )
and has_defensive_tools ( state , player )
and has_x_worlds ( state , player , 7 , keyblades_unlock_chests )
)
def has_defensive_tools ( state : CollectionState , player : int ) - > bool :
return (
state . has_all_counts ( { " Progressive Cure " : 2 , " Leaf Bracer " : 1 , " Dodge Roll " : 1 } , player )
and state . has_any_count ( { " Second Chance " : 1 , " MP Rage " : 1 , " Progressive Aero " : 2 } , player )
)
def can_dumbo_skip ( state : CollectionState , player : int ) - > bool :
return (
state . has ( " Dumbo " , player )
and state . has_group ( " Magic " , player )
)
def has_oogie_manor ( state : CollectionState , player : int , advanced_logic : bool ) - > bool :
return (
state . has ( " Progressive Fire " , player )
or ( advanced_logic and state . has ( " High Jump " , player , 2 ) )
or ( advanced_logic and state . has ( " High Jump " , player ) and state . has ( " Progressive Glide " , player ) )
)
def set_rules ( kh1world ) :
multiworld = kh1world . multiworld
player = kh1world . player
options = kh1world . options
eotw_required_reports = kh1world . determine_reports_required_to_open_end_of_the_world ( )
final_rest_door_required_reports = kh1world . determine_reports_required_to_open_final_rest_door ( )
final_rest_door_requirement = kh1world . options . final_rest_door . current_key
has_puppies = has_puppies_individual
if kh1world . options . puppies == " triplets " :
has_puppies = has_puppies_triplets
elif kh1world . options . puppies == " full " :
has_puppies = has_puppies_all
add_rule ( kh1world . get_location ( " Traverse Town 1st District Candle Puzzle Chest " ) ,
lambda state : state . has ( " Progressive Blizzard " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Mystical House Yellow Trinity Chest " ) ,
lambda state : (
state . has ( " Progressive Fire " , player )
and
(
state . has ( " Yellow Trinity " , player )
or ( options . advanced_logic and state . has ( " High Jump " , player ) )
or state . has ( " High Jump " , player , 2 )
)
) )
add_rule ( kh1world . get_location ( " Traverse Town Secret Waterway White Trinity Chest " ) ,
lambda state : state . has ( " White Trinity " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Geppetto ' s House Chest " ) ,
lambda state : (
state . has ( " Monstro " , player )
and
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Traverse Town Item Workshop Right Chest " ) ,
lambda state : (
state . has ( " Green Trinity " , player )
or state . has ( " High Jump " , player , 3 )
) )
add_rule ( kh1world . get_location ( " Traverse Town 1st District Blue Trinity Balcony Chest " ) ,
lambda state : (
( state . has ( " Blue Trinity " , player ) and state . has ( " Progressive Glide " , player ) )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
) )
add_rule ( kh1world . get_location ( " Traverse Town Mystical House Glide Chest " ) ,
lambda state : (
(
state . has ( " Progressive Glide " , player )
or
(
options . advanced_logic
and
(
( state . has ( " High Jump " , player ) and state . has ( " Yellow Trinity " , player ) )
or state . has ( " High Jump " , player , 2 )
)
and state . has ( " Combo Master " , player )
)
or
(
options . advanced_logic
and state . has ( " Mermaid Kick " , player )
)
)
and state . has ( " Progressive Fire " , player )
) )
add_rule ( kh1world . get_location ( " Traverse Town Alleyway Behind Crates Chest " ) ,
lambda state : state . has ( " Red Trinity " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Item Workshop Left Chest " ) ,
lambda state : (
state . has ( " Green Trinity " , player )
or state . has ( " High Jump " , player , 3 )
) )
add_rule ( kh1world . get_location ( " Wonderland Rabbit Hole Green Trinity Chest " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Rabbit Hole Defeat Heartless 3 Chest " ) ,
lambda state : has_x_worlds ( state , player , 5 , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Wonderland Bizarre Room Green Trinity Chest " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Queen ' s Castle Hedge Left Red Chest " ) ,
lambda state : (
state . has ( " Footprints " , player )
or state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
) )
add_rule ( kh1world . get_location ( " Wonderland Queen ' s Castle Hedge Right Blue Chest " ) ,
lambda state : (
state . has ( " Footprints " , player )
or state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
) )
add_rule ( kh1world . get_location ( " Wonderland Queen ' s Castle Hedge Right Red Chest " ) ,
lambda state : (
state . has ( " Footprints " , player )
or state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Thunder Plant Chest " ) ,
lambda state : (
state . has_all ( {
" Progressive Thunder " ,
" Footprints " } , player )
) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Through the Painting Thunder Plant Chest " ) ,
lambda state : (
state . has_all ( {
" Progressive Thunder " ,
" Footprints " } , player )
) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Glide Chest " ) ,
lambda state : (
state . has ( " Progressive Glide " , player )
or
(
options . advanced_logic
and ( state . has ( " High Jump " , player ) or can_dumbo_skip ( state , player ) )
and state . has ( " Footprints " , player )
)
) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Corner Chest " ) ,
lambda state : (
(
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
)
or options . advanced_logic
) )
add_rule ( kh1world . get_location ( " Wonderland Bizarre Room Lamp Chest " ) ,
lambda state : state . has ( " Footprints " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Tea Party Garden Above Lotus Forest Entrance 2nd Chest " ) ,
lambda state : (
state . has ( " Progressive Glide " , player )
or
(
options . advanced_logic
and state . has_all ( {
" High Jump " ,
" Footprints " } , player )
)
) )
add_rule ( kh1world . get_location ( " Wonderland Tea Party Garden Above Lotus Forest Entrance 1st Chest " ) ,
lambda state : (
state . has ( " Progressive Glide " , player )
or
(
options . advanced_logic
and state . has_all ( {
" High Jump " ,
" Footprints " } , player )
)
) )
add_rule ( kh1world . get_location ( " Wonderland Tea Party Garden Bear and Clock Puzzle Chest " ) ,
lambda state : (
state . has ( " Footprints " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
or state . has ( " High Jump " , player , 2 )
) )
add_rule ( kh1world . get_location ( " Wonderland Tea Party Garden Across From Bizarre Room Entrance Chest " ) ,
lambda state : (
state . has ( " Progressive Glide " , player )
or
(
state . has ( " High Jump " , player , 3 )
and state . has ( " Footprints " , player )
)
or
(
options . advanced_logic
and state . has_all ( {
" High Jump " ,
" Footprints " ,
" Combo Master " } , player )
)
) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Through the Painting White Trinity Chest " ) ,
lambda state : (
state . has_all ( {
" White Trinity " ,
" Footprints " } , player )
) )
add_rule ( kh1world . get_location ( " Deep Jungle Hippo ' s Lagoon Right Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
or options . advanced_logic
) )
add_rule ( kh1world . get_location ( " Deep Jungle Climbing Trees Blue Trinity Chest " ) ,
lambda state : state . has ( " Blue Trinity " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Cavern of Hearts White Trinity Chest " ) ,
lambda state : (
state . has_all ( {
" White Trinity " ,
" Slides " } , player )
) )
add_rule ( kh1world . get_location ( " Deep Jungle Camp Blue Trinity Chest " ) ,
lambda state : state . has ( " Blue Trinity " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Waterfall Cavern Low Chest " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Waterfall Cavern Middle Chest " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Waterfall Cavern High Wall Chest " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Waterfall Cavern High Middle Chest " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Tree House Suspended Boat Chest " ) ,
lambda state : (
state . has ( " Progressive Glide " , player )
or options . advanced_logic
) )
add_rule ( kh1world . get_location ( " Agrabah Main Street High Above Palace Gates Entrance Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
or ( options . advanced_logic and can_dumbo_skip ( state , player ) )
) )
add_rule ( kh1world . get_location ( " Agrabah Palace Gates High Opposite Palace Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or options . advanced_logic
) )
add_rule ( kh1world . get_location ( " Agrabah Palace Gates High Close to Palace Chest " ) ,
lambda state : (
(
state . has_all ( {
" High Jump " ,
" Progressive Glide " } , player )
or
(
options . advanced_logic
and
(
state . has ( " Combo Master " , player )
or can_dumbo_skip ( state , player )
)
)
)
or state . has ( " High Jump " , player , 3 )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
) )
add_rule ( kh1world . get_location ( " Agrabah Storage Green Trinity Chest " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Entrance Tall Tower Chest " ) ,
lambda state : (
state . has ( " Progressive Glide " , player )
or ( options . advanced_logic and state . has ( " Combo Master " , player ) )
or ( options . advanced_logic and can_dumbo_skip ( state , player ) )
or state . has ( " High Jump " , player , 2 )
) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Bottomless Hall Pillar Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
or options . advanced_logic
) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Silent Chamber Blue Trinity Chest " ) ,
lambda state : state . has ( " Blue Trinity " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Hidden Room Right Chest " ) ,
lambda state : (
state . has ( " Yellow Trinity " , player )
or state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Hidden Room Left Chest " ) ,
lambda state : (
state . has ( " Yellow Trinity " , player )
or state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Entrance White Trinity Chest " ) ,
lambda state : state . has ( " White Trinity " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 6 Other Platform Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Combo Master " , player ) )
) )
add_rule ( kh1world . get_location ( " Monstro Chamber 6 Platform Near Chamber 5 Entrance Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or options . advanced_logic
) )
add_rule ( kh1world . get_location ( " Monstro Chamber 6 Raised Area Near Chamber 1 Entrance Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Combo Master " , player ) )
) )
add_rule ( kh1world . get_location ( " Halloween Town Moonlight Hill White Trinity Chest " ) ,
lambda state : (
state . has_all ( {
" White Trinity " ,
" Forget-Me-Not " } , player )
) )
add_rule ( kh1world . get_location ( " Halloween Town Bridge Under Bridge " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
) )
add_rule ( kh1world . get_location ( " Halloween Town Boneyard Tombstone Puzzle Chest " ) ,
lambda state : state . has ( " Forget-Me-Not " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Bridge Right of Gate Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and
(
state . has ( " Progressive Glide " , player )
or options . advanced_logic
)
) )
add_rule ( kh1world . get_location ( " Halloween Town Cemetery Behind Grave Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and has_oogie_manor ( state , player , options . advanced_logic )
) )
add_rule ( kh1world . get_location ( " Halloween Town Cemetery By Cat Shape Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and has_oogie_manor ( state , player , options . advanced_logic )
) )
add_rule ( kh1world . get_location ( " Halloween Town Cemetery Between Graves Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and has_oogie_manor ( state , player , options . advanced_logic )
) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Lower Iron Cage Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and has_oogie_manor ( state , player , options . advanced_logic )
) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Upper Iron Cage Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and has_oogie_manor ( state , player , options . advanced_logic )
) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Hollow Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and has_oogie_manor ( state , player , options . advanced_logic )
) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Grounds Red Trinity Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " ,
" Red Trinity " } , player )
) )
add_rule ( kh1world . get_location ( " Halloween Town Guillotine Square High Tower Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or ( options . advanced_logic and can_dumbo_skip ( state , player ) )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
) )
add_rule ( kh1world . get_location ( " Halloween Town Guillotine Square Pumpkin Structure Left Chest " ) ,
lambda state : (
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and
(
state . has ( " Progressive Glide " , player )
or ( options . advanced_logic and state . has ( " Combo Master " , player ) )
or state . has ( " High Jump " , player , 2 )
)
) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Entrance Steps Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Inside Entrance Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
) )
add_rule ( kh1world . get_location ( " Halloween Town Bridge Left of Gate Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and
(
state . has ( " Progressive Glide " , player )
or state . has ( " High Jump " , player )
or options . advanced_logic
)
) )
add_rule ( kh1world . get_location ( " Halloween Town Cemetery By Striped Grave Chest " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and has_oogie_manor ( state , player , options . advanced_logic )
) )
add_rule ( kh1world . get_location ( " Halloween Town Guillotine Square Pumpkin Structure Right Chest " ) ,
lambda state : (
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and
(
state . has ( " Progressive Glide " , player )
or ( options . advanced_logic and state . has ( " Combo Master " , player ) )
or state . has ( " High Jump " , player , 2 )
)
) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Right Blue Trinity Chest " ) ,
lambda state : state . has ( " Blue Trinity " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Left Blue Trinity Chest " ) ,
lambda state : state . has ( " Blue Trinity " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates White Trinity Chest " ) ,
lambda state : state . has ( " White Trinity " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Blizzara Chest " ) ,
lambda state : state . has ( " Progressive Blizzard " , player , 2 ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Blizzaga Chest " ) ,
lambda state : state . has ( " Progressive Blizzard " , player , 3 ) )
add_rule ( kh1world . get_location ( " Monstro Mouth High Platform Boat Side Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
) )
add_rule ( kh1world . get_location ( " Monstro Mouth High Platform Across from Boat Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
) )
add_rule ( kh1world . get_location ( " Monstro Mouth Green Trinity Top of Boat Chest " ) ,
lambda state : (
(
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
)
and state . has ( " Green Trinity " , player )
) )
add_rule ( kh1world . get_location ( " Monstro Chamber 5 Platform Chest " ) ,
lambda state : state . has ( " High Jump " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 3 Platform Above Chamber 2 Entrance Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or options . advanced_logic
) )
add_rule ( kh1world . get_location ( " Monstro Chamber 3 Platform Near Chamber 6 Entrance Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or options . advanced_logic
) )
add_rule ( kh1world . get_location ( " Monstro Chamber 5 Atop Barrel Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or options . advanced_logic
) )
add_rule ( kh1world . get_location ( " Neverland Pirate Ship Deck White Trinity Chest " ) ,
lambda state : (
state . has_all ( {
" White Trinity " ,
" Green Trinity " } , player )
) )
add_rule ( kh1world . get_location ( " Neverland Pirate Ship Crows Nest Chest " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Neverland Hold Yellow Trinity Right Blue Chest " ) ,
lambda state : state . has ( " Yellow Trinity " , player ) )
add_rule ( kh1world . get_location ( " Neverland Hold Yellow Trinity Left Blue Chest " ) ,
lambda state : state . has ( " Yellow Trinity " , player ) )
add_rule ( kh1world . get_location ( " Neverland Cabin Chest " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Neverland Hold Flight 1st Chest " ) ,
lambda state : (
state . has ( " Green Trinity " , player )
or state . has ( " Progressive Glide " , player )
or state . has ( " High Jump " , player , 3 )
) )
add_rule ( kh1world . get_location ( " Neverland Clock Tower Chest " ) ,
lambda state : (
state . has ( " Green Trinity " , player )
and has_all_magic_lvx ( state , player , 2 )
) )
add_rule ( kh1world . get_location ( " Neverland Hold Flight 2nd Chest " ) ,
lambda state : (
state . has ( " Green Trinity " , player )
or state . has ( " Progressive Glide " , player )
or state . has ( " High Jump " , player , 3 )
) )
add_rule ( kh1world . get_location ( " Neverland Hold Yellow Trinity Green Chest " ) ,
lambda state : state . has ( " Yellow Trinity " , player ) )
add_rule ( kh1world . get_location ( " Neverland Captain ' s Cabin Chest " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls Under Water 2nd Chest " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls Floating Platform Near Save Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
or state . has ( " Progressive Blizzard " , player )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls Floating Platform Near Bubble Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
or state . has ( " Progressive Blizzard " , player )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls High Platform Chest " ) ,
lambda state : (
state . has ( " Progressive Glide " , player )
or ( state . has ( " Progressive Blizzard " , player ) and has_emblems ( state , player , options . keyblades_unlock_chests ) )
or ( options . advanced_logic and state . has ( " Combo Master " , player ) )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Castle Gates Gravity Chest " ) ,
lambda state : (
state . has ( " Progressive Gravity " , player )
and
(
has_emblems ( state , player , options . keyblades_unlock_chests )
or ( options . advanced_logic and state . has ( " High Jump " , player , 2 ) and state . has ( " Progressive Glide " , player ) )
or ( options . advanced_logic and can_dumbo_skip ( state , player ) and state . has ( " Progressive Glide " , player ) )
)
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Castle Gates Freestanding Pillar Chest " ) ,
lambda state : (
has_emblems ( state , player , options . keyblades_unlock_chests )
or state . has ( " High Jump " , player , 2 )
or ( options . advanced_logic and can_dumbo_skip ( state , player ) )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Castle Gates High Pillar Chest " ) ,
lambda state : (
has_emblems ( state , player , options . keyblades_unlock_chests )
or state . has ( " High Jump " , player , 2 )
or ( options . advanced_logic and can_dumbo_skip ( state , player ) )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Great Crest Lower Chest " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Great Crest After Battle Platform Chest " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion High Tower 2nd Gravity Chest " ) ,
lambda state : (
state . has ( " Progressive Gravity " , player )
and has_emblems ( state , player , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion High Tower 1st Gravity Chest " ) ,
lambda state : (
state . has ( " Progressive Gravity " , player )
and has_emblems ( state , player , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion High Tower Above Sliding Blocks Chest " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Lift Stop Library Node After High Tower Switch Gravity Chest " ) ,
lambda state : (
state . has ( " Progressive Gravity " , player )
and has_emblems ( state , player , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Lift Stop Library Node Gravity Chest " ) ,
lambda state : state . has ( " Progressive Gravity " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Lift Stop Under High Tower Sliding Blocks Chest " ) ,
lambda state : (
has_emblems ( state , player , options . keyblades_unlock_chests )
and state . has_all ( {
" Progressive Glide " ,
" Progressive Gravity " } , player )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Lift Stop Outside Library Gravity Chest " ) ,
lambda state : state . has ( " Progressive Gravity " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Lift Stop Heartless Sigil Door Gravity Chest " ) ,
lambda state : (
state . has ( " Progressive Gravity " , player )
and has_emblems ( state , player , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Waterway Blizzard on Bubble Chest " ) ,
lambda state : (
( state . has ( " Progressive Blizzard " , player ) and state . has ( " High Jump " , player ) )
or state . has ( " High Jump " , player , 3 )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Grand Hall Steps Right Side Chest " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Grand Hall Oblivion Chest " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Grand Hall Left of Gate Chest " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Entrance Hall Left of Emblem Door Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or
(
options . advanced_logic
and can_dumbo_skip ( state , player )
and has_emblems ( state , player , options . keyblades_unlock_chests )
)
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls White Trinity Chest " ) ,
lambda state : state . has ( " White Trinity " , player ) )
add_rule ( kh1world . get_location ( " End of the World Giant Crevasse 5th Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
) )
add_rule ( kh1world . get_location ( " End of the World Giant Crevasse 1st Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
) )
add_rule ( kh1world . get_location ( " End of the World Giant Crevasse 4th Chest " ) ,
lambda state : (
(
options . advanced_logic
and state . has ( " High Jump " , player )
and state . has ( " Combo Master " , player )
)
or state . has ( " Progressive Glide " , player )
) )
add_rule ( kh1world . get_location ( " End of the World World Terminus Agrabah Chest " ) ,
lambda state : (
state . has ( " High Jump " , player )
or
(
options . advanced_logic
and can_dumbo_skip ( state , player )
and state . has ( " Progressive Glide " , player )
)
) )
add_rule ( kh1world . get_location ( " Monstro Chamber 6 White Trinity Chest " ) ,
lambda state : state . has ( " White Trinity " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Kairi Secret Waterway Oathkeeper Event " ) ,
lambda state : (
has_emblems ( state , player , options . keyblades_unlock_chests )
and state . has ( " Hollow Bastion " , player )
and has_x_worlds ( state , player , 5 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Deep Jungle Defeat Sabor White Fang Event " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Defeat Clayton Cure Event " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Seal Keyhole Jungle King Event " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Seal Keyhole Red Trinity Event " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Defeat Cerberus Inferno Band Event " ) ,
lambda state : state . has ( " Entry Pass " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Cloud Sonic Blade Event " ) ,
lambda state : state . has ( " Entry Pass " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Defeat Trickmaster Blizzard Event " ) ,
lambda state : state . has ( " Footprints " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Defeat Trickmaster Ifrit ' s Horn Event " ) ,
lambda state : state . has ( " Footprints " , player ) )
add_rule ( kh1world . get_location ( " Monstro Defeat Parasite Cage II Stop Event " ) ,
lambda state : (
state . has ( " High Jump " , player )
or
(
options . advanced_logic
and state . has ( " Progressive Glide " , player )
)
) )
add_rule ( kh1world . get_location ( " Halloween Town Defeat Oogie Boogie Holy Circlet Event " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and has_oogie_manor ( state , player , options . advanced_logic )
) )
add_rule ( kh1world . get_location ( " Halloween Town Defeat Oogie ' s Manor Gravity Event " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and has_oogie_manor ( state , player , options . advanced_logic )
) )
add_rule ( kh1world . get_location ( " Halloween Town Seal Keyhole Pumpkinhead Event " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " } , player )
and has_oogie_manor ( state , player , options . advanced_logic )
) )
add_rule ( kh1world . get_location ( " Neverland Defeat Anti Sora Raven ' s Claw Event " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Neverland Encounter Hook Cure Event " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Neverland Seal Keyhole Fairy Harp Event " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Neverland Seal Keyhole Tinker Bell Event " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Neverland Seal Keyhole Glide Event " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Neverland Defeat Captain Hook Ars Arcanum Event " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Defeat Maleficent Donald Cheer Event " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Defeat Dragon Maleficent Fireglow Event " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Defeat Riku II Ragnarok Event " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Defeat Behemoth Omega Arts Event " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Speak to Princesses Fire Event " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Traverse Town Mail Postcard 01 Event " ) ,
lambda state : state . has ( " Postcard " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Mail Postcard 02 Event " ) ,
lambda state : state . has ( " Postcard " , player , 2 ) )
add_rule ( kh1world . get_location ( " Traverse Town Mail Postcard 03 Event " ) ,
lambda state : state . has ( " Postcard " , player , 3 ) )
add_rule ( kh1world . get_location ( " Traverse Town Mail Postcard 04 Event " ) ,
lambda state : state . has ( " Postcard " , player , 4 ) )
add_rule ( kh1world . get_location ( " Traverse Town Mail Postcard 05 Event " ) ,
lambda state : state . has ( " Postcard " , player , 5 ) )
add_rule ( kh1world . get_location ( " Traverse Town Mail Postcard 06 Event " ) ,
lambda state : state . has ( " Postcard " , player , 6 ) )
add_rule ( kh1world . get_location ( " Traverse Town Mail Postcard 07 Event " ) ,
lambda state : state . has ( " Postcard " , player , 7 ) )
add_rule ( kh1world . get_location ( " Traverse Town Mail Postcard 08 Event " ) ,
lambda state : state . has ( " Postcard " , player , 8 ) )
add_rule ( kh1world . get_location ( " Traverse Town Mail Postcard 09 Event " ) ,
lambda state : state . has ( " Postcard " , player , 9 ) )
add_rule ( kh1world . get_location ( " Traverse Town Mail Postcard 10 Event " ) ,
lambda state : state . has ( " Postcard " , player , 10 ) )
add_rule ( kh1world . get_location ( " Traverse Town Defeat Opposite Armor Aero Event " ) ,
lambda state : state . has ( " Red Trinity " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Speak with Aerith Ansem ' s Report 2 " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Speak with Aerith Ansem ' s Report 4 " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Defeat Maleficent Ansem ' s Report 5 " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Speak with Aerith Ansem ' s Report 6 " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Halloween Town Defeat Oogie Boogie Ansem ' s Report 7 " ) ,
lambda state : (
state . has_all ( {
" Jack-In-The-Box " ,
" Forget-Me-Not " ,
" Progressive Fire " } , player )
) )
add_rule ( kh1world . get_location ( " Neverland Defeat Hook Ansem ' s Report 9 " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Speak with Aerith Ansem ' s Report 10 " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Traverse Town Geppetto ' s House Geppetto Reward 1 " ) ,
lambda state : (
state . has ( " Monstro " , player )
and
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Traverse Town Geppetto ' s House Geppetto Reward 2 " ) ,
lambda state : (
state . has ( " Monstro " , player )
and
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Traverse Town Geppetto ' s House Geppetto Reward 3 " ) ,
lambda state : (
state . has ( " Monstro " , player )
and
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Traverse Town Geppetto ' s House Geppetto Reward 4 " ) ,
lambda state : (
state . has ( " Monstro " , player )
and
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Traverse Town Geppetto ' s House Geppetto Reward 5 " ) ,
lambda state : (
state . has ( " Monstro " , player )
and
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Traverse Town Geppetto ' s House Geppetto All Summons Reward " ) ,
lambda state : (
state . has ( " Monstro " , player )
and
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and has_all_summons ( state , player )
and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Traverse Town Geppetto ' s House Talk to Pinocchio " ) ,
lambda state : (
state . has ( " Monstro " , player )
and
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Traverse Town Magician ' s Study Obtained All Arts Items " ) ,
lambda state : (
has_all_magic_lvx ( state , player , 1 )
and has_all_arts ( state , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Traverse Town Magician ' s Study Obtained All LV1 Magic " ) ,
lambda state : has_all_magic_lvx ( state , player , 1 ) )
add_rule ( kh1world . get_location ( " Traverse Town Magician ' s Study Obtained All LV3 Magic " ) ,
lambda state : has_all_magic_lvx ( state , player , 3 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 10 Puppies " ) ,
lambda state : has_puppies ( state , player , 10 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 20 Puppies " ) ,
lambda state : has_puppies ( state , player , 20 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 30 Puppies " ) ,
lambda state : has_puppies ( state , player , 30 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 40 Puppies " ) ,
lambda state : has_puppies ( state , player , 40 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 50 Puppies Reward 1 " ) ,
lambda state : has_puppies ( state , player , 50 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 50 Puppies Reward 2 " ) ,
lambda state : has_puppies ( state , player , 50 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 60 Puppies " ) ,
lambda state : has_puppies ( state , player , 60 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 70 Puppies " ) ,
lambda state : has_puppies ( state , player , 70 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 80 Puppies " ) ,
lambda state : has_puppies ( state , player , 80 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 90 Puppies " ) ,
lambda state : has_puppies ( state , player , 90 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 99 Puppies Reward 1 " ) ,
lambda state : has_puppies ( state , player , 99 ) )
add_rule ( kh1world . get_location ( " Traverse Town Piano Room Return 99 Puppies Reward 2 " ) ,
lambda state : has_puppies ( state , player , 99 ) )
add_rule ( kh1world . get_location ( " Neverland Hold Aero Chest " ) ,
lambda state : state . has ( " Yellow Trinity " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Camp Hi-Potion Experiment " ) ,
lambda state : state . has ( " Progressive Fire " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Camp Ether Experiment " ) ,
lambda state : state . has ( " Progressive Blizzard " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Camp Replication Experiment " ) ,
lambda state : state . has ( " Progressive Blizzard " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Cliff Save Gorillas " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Tree House Save Gorillas " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Camp Save Gorillas " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Bamboo Thicket Save Gorillas " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Climbing Trees Save Gorillas " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Jungle Slider 10 Fruits " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Jungle Slider 20 Fruits " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Jungle Slider 30 Fruits " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Jungle Slider 40 Fruits " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Jungle Slider 50 Fruits " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Bizarre Room Read Book " ) ,
lambda state : state . has ( " Footprints " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Green Trinity " ) ,
lambda state : state . has ( " Green Trinity " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Hero ' s License Event " ) ,
lambda state : state . has ( " Entry Pass " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Cavern of Hearts Navi-G Piece Event " ) ,
lambda state : state . has ( " Slides " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Bizarre Room Navi-G Piece Event " ) ,
lambda state : state . has ( " Footprints " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Synth Log " ) ,
lambda state : (
state . has ( " Empty Bottle " , player , 6 )
and
(
state . has ( " Green Trinity " , player )
or state . has ( " High Jump " , player , 3 )
)
) )
add_rule ( kh1world . get_location ( " Traverse Town Synth Cloth " ) ,
lambda state : (
state . has ( " Empty Bottle " , player , 6 )
and
(
state . has ( " Green Trinity " , player )
or state . has ( " High Jump " , player , 3 )
)
) )
add_rule ( kh1world . get_location ( " Traverse Town Synth Rope " ) ,
lambda state : (
state . has ( " Empty Bottle " , player , 6 )
and
(
state . has ( " Green Trinity " , player )
or state . has ( " High Jump " , player , 3 )
)
) )
add_rule ( kh1world . get_location ( " Traverse Town Synth Seagull Egg " ) ,
lambda state : (
state . has ( " Empty Bottle " , player , 6 )
and
(
state . has ( " Green Trinity " , player )
or state . has ( " High Jump " , player , 3 )
)
) )
add_rule ( kh1world . get_location ( " Traverse Town Synth Fish " ) ,
lambda state : (
state . has ( " Empty Bottle " , player , 6 )
and
(
state . has ( " Green Trinity " , player )
or state . has ( " High Jump " , player , 3 )
)
) )
add_rule ( kh1world . get_location ( " Traverse Town Synth Mushroom " ) ,
lambda state : (
state . has ( " Empty Bottle " , player , 6 )
and
(
state . has ( " Green Trinity " , player )
or state . has ( " High Jump " , player , 3 )
)
) )
add_rule ( kh1world . get_location ( " Traverse Town Gizmo Shop Postcard 1 " ) ,
lambda state : state . has ( " Progressive Thunder " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Gizmo Shop Postcard 2 " ) ,
lambda state : state . has ( " Progressive Thunder " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Item Workshop Postcard " ) ,
lambda state : (
state . has ( " Green Trinity " , player )
or state . has ( " High Jump " , player , 3 )
) )
add_rule ( kh1world . get_location ( " Traverse Town Geppetto ' s House Postcard " ) ,
lambda state : (
state . has ( " Monstro " , player )
and
(
state . has ( " High Jump " , player )
or ( options . advanced_logic and state . has ( " Progressive Glide " , player ) )
)
and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Entrance Hall Emblem Piece (Flame) " ) ,
lambda state : (
(
state . has ( " Theon Vol. 6 " , player )
or state . has ( " High Jump " , player , 3 )
or has_emblems ( state , player , options . keyblades_unlock_chests )
)
and state . has ( " Progressive Fire " , player )
and
(
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
or state . has ( " Progressive Thunder " , player )
or options . advanced_logic
)
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Entrance Hall Emblem Piece (Chest) " ) ,
lambda state : (
state . has ( " Theon Vol. 6 " , player )
or state . has ( " High Jump " , player , 3 )
or has_emblems ( state , player , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Entrance Hall Emblem Piece (Statue) " ) ,
lambda state : (
(
state . has ( " Theon Vol. 6 " , player )
or state . has ( " High Jump " , player , 3 )
or has_emblems ( state , player , options . keyblades_unlock_chests )
)
and state . has ( " Red Trinity " , player )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Entrance Hall Emblem Piece (Fountain) " ) ,
lambda state : (
state . has ( " Theon Vol. 6 " , player )
or state . has ( " High Jump " , player , 3 )
or has_emblems ( state , player , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Library Speak to Belle Divine Rose " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Library Speak to Aerith Cure " ) ,
lambda state : has_emblems ( state , player , options . keyblades_unlock_chests ) )
if options . hundred_acre_wood :
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Left Cliff Chest " ) ,
lambda state : (
has_torn_pages ( state , player , 4 )
and
(
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
)
) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Right Tree Alcove Chest " ) ,
lambda state : (
has_torn_pages ( state , player , 4 )
and
(
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
)
) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Under Giant Pot Chest " ) ,
lambda state : has_torn_pages ( state , player , 4 ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Turn in Rare Nut 1 " ) ,
lambda state : has_torn_pages ( state , player , 4 ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Turn in Rare Nut 2 " ) ,
lambda state : (
has_torn_pages ( state , player , 4 )
and
(
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
)
) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Turn in Rare Nut 3 " ) ,
lambda state : (
has_torn_pages ( state , player , 4 )
and
(
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
)
) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Turn in Rare Nut 4 " ) ,
lambda state : (
has_torn_pages ( state , player , 4 )
and
(
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
)
) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Turn in Rare Nut 5 " ) ,
lambda state : (
has_torn_pages ( state , player , 4 )
and
(
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
)
) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Pooh ' s House Owl Cheer " ) ,
lambda state : has_torn_pages ( state , player , 5 ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Convert Torn Page 1 " ) ,
lambda state : has_torn_pages ( state , player , 1 ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Convert Torn Page 2 " ) ,
lambda state : has_torn_pages ( state , player , 2 ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Convert Torn Page 3 " ) ,
lambda state : has_torn_pages ( state , player , 3 ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Convert Torn Page 4 " ) ,
lambda state : has_torn_pages ( state , player , 4 ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Convert Torn Page 5 " ) ,
lambda state : has_torn_pages ( state , player , 5 ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Pooh ' s House Start Fire " ) ,
lambda state : has_torn_pages ( state , player , 3 ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Break Log " ) ,
lambda state : has_torn_pages ( state , player , 4 ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Fall Through Top of Tree Next to Pooh " ) ,
lambda state : (
has_torn_pages ( state , player , 4 )
and
(
state . has ( " High Jump " , player )
or state . has ( " Progressive Glide " , player )
)
) )
if options . atlantica :
add_rule ( kh1world . get_location ( " Atlantica Ursula ' s Lair Use Fire on Urchin Chest " ) ,
lambda state : (
state . has_all ( {
" Progressive Fire " ,
" Crystal Trident " } , player )
) )
add_rule ( kh1world . get_location ( " Atlantica Triton ' s Palace White Trinity Chest " ) ,
lambda state : state . has ( " White Trinity " , player ) )
add_rule ( kh1world . get_location ( " Atlantica Defeat Ursula I Mermaid Kick Event " ) ,
lambda state : (
has_offensive_magic ( state , player )
and state . has ( " Crystal Trident " , player )
) )
add_rule ( kh1world . get_location ( " Atlantica Defeat Ursula II Thunder Event " ) ,
lambda state : (
state . has ( " Mermaid Kick " , player )
and has_offensive_magic ( state , player )
and state . has ( " Crystal Trident " , player )
) )
add_rule ( kh1world . get_location ( " Atlantica Seal Keyhole Crabclaw Event " ) ,
lambda state : (
state . has ( " Mermaid Kick " , player )
and has_offensive_magic ( state , player )
and state . has ( " Crystal Trident " , player )
) )
add_rule ( kh1world . get_location ( " Atlantica Undersea Gorge Blizzard Clam " ) ,
lambda state : state . has ( " Progressive Blizzard " , player ) )
add_rule ( kh1world . get_location ( " Atlantica Undersea Valley Fire Clam " ) ,
lambda state : state . has ( " Progressive Fire " , player ) )
add_rule ( kh1world . get_location ( " Atlantica Triton ' s Palace Thunder Clam " ) ,
lambda state : state . has ( " Progressive Thunder " , player ) )
add_rule ( kh1world . get_location ( " Atlantica Cavern Nook Clam " ) ,
lambda state : state . has ( " Crystal Trident " , player ) )
add_rule ( kh1world . get_location ( " Atlantica Defeat Ursula II Ansem ' s Report 3 " ) ,
lambda state : (
state . has_all ( {
" Mermaid Kick " ,
" Crystal Trident " } , player )
and has_offensive_magic ( state , player )
) )
if options . cups :
add_rule ( kh1world . get_location ( " Olympus Coliseum Defeat Hades Ansem ' s Report 8 " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Complete Phil Cup " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Entry Pass " } , player )
) )
add_rule ( kh1world . get_location ( " Complete Phil Cup Solo " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Entry Pass " } , player )
) )
add_rule ( kh1world . get_location ( " Complete Phil Cup Time Trial " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Entry Pass " } , player )
) )
add_rule ( kh1world . get_location ( " Complete Pegasus Cup " ) ,
lambda state : (
state . has_all ( {
" Pegasus Cup " ,
" Entry Pass " } , player )
) )
add_rule ( kh1world . get_location ( " Complete Pegasus Cup Solo " ) ,
lambda state : (
state . has_all ( {
" Pegasus Cup " ,
" Entry Pass " } , player )
) )
add_rule ( kh1world . get_location ( " Complete Pegasus Cup Time Trial " ) ,
lambda state : (
state . has_all ( {
" Pegasus Cup " ,
" Entry Pass " } , player )
) )
add_rule ( kh1world . get_location ( " Complete Hercules Cup " ) ,
lambda state : (
state . has_all ( {
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 4 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Complete Hercules Cup Solo " ) ,
lambda state : (
state . has_all ( {
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 4 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Complete Hercules Cup Time Trial " ) ,
lambda state : (
state . has_all ( {
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 4 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Complete Hades Cup " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Complete Hades Cup Solo " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Complete Hades Cup Time Trial " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Hades Cup Defeat Cloud and Leon Event " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Hades Cup Defeat Yuffie Event " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Hades Cup Defeat Cerberus Event " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Hades Cup Defeat Behemoth Event " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Hades Cup Defeat Hades Event " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Hercules Cup Defeat Cloud Event " ) ,
lambda state : (
state . has_all ( {
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 4 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Hercules Cup Yellow Trinity Event " ) ,
lambda state : (
state . has_all ( {
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 4 , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Defeat Ice Titan Diamond Dust Event " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " ,
" Guard " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Gates Purple Jar After Defeating Hades " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Olympia Chest " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 4 , options . keyblades_unlock_chests )
) )
if options . super_bosses :
add_rule ( kh1world . get_location ( " Neverland Defeat Phantom Stop Event " ) ,
lambda state : (
state . has ( " Green Trinity " , player )
and has_all_magic_lvx ( state , player , 2 )
and has_defensive_tools ( state , player )
and has_emblems ( state , player , options . keyblades_unlock_chests )
) )
add_rule ( kh1world . get_location ( " Agrabah Defeat Kurt Zisa Ansem ' s Report 11 " ) ,
lambda state : (
has_emblems ( state , player , options . keyblades_unlock_chests )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Agrabah Defeat Kurt Zisa Zantetsuken Event " ) ,
lambda state : (
has_emblems ( state , player , options . keyblades_unlock_chests ) and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests ) and has_defensive_tools ( state , player )
) )
if options . super_bosses or options . goal . current_key == " sephiroth " :
add_rule ( kh1world . get_location ( " Olympus Coliseum Defeat Sephiroth Ansem ' s Report 12 " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Defeat Sephiroth One-Winged Angel Event " ) ,
lambda state : (
state . has_all ( {
" Phil Cup " ,
" Pegasus Cup " ,
" Hercules Cup " ,
" Entry Pass " } , player )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
if options . super_bosses or options . goal . current_key == " unknown " :
add_rule ( kh1world . get_location ( " Hollow Bastion Defeat Unknown Ansem ' s Report 13 " ) ,
lambda state : (
has_emblems ( state , player , options . keyblades_unlock_chests )
and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
add_rule ( kh1world . get_location ( " Hollow Bastion Defeat Unknown EXP Necklace Event " ) ,
lambda state : (
has_emblems ( state , player , options . keyblades_unlock_chests ) and has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests )
and has_defensive_tools ( state , player )
) )
for i in range ( options . level_checks ) :
add_rule ( kh1world . get_location ( " Level " + str ( i + 1 ) . rjust ( 3 , ' 0 ' ) ) ,
lambda state , level_num = i : (
has_x_worlds ( state , player , min ( ( ( level_num / / 10 ) * 2 ) , 8 ) , options . keyblades_unlock_chests )
) )
if options . goal . current_key == " final_ansem " :
add_rule ( kh1world . get_location ( " Final Ansem " ) ,
lambda state : (
has_final_rest_door ( state , player , final_rest_door_requirement , final_rest_door_required_reports , options . keyblades_unlock_chests , options . puppies )
) )
if options . keyblades_unlock_chests :
add_rule ( kh1world . get_location ( " Traverse Town 1st District Candle Puzzle Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town 1st District Accessory Shop Roof Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town 2nd District Boots and Shoes Awning Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town 2nd District Rooftop Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town 2nd District Gizmo Shop Facade Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Alleyway Balcony Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Alleyway Blue Room Awning Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Alleyway Corner Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Green Room Clock Puzzle Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Green Room Table Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Red Room Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Mystical House Yellow Trinity Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Accessory Shop Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Secret Waterway White Trinity Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Geppetto ' s House Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Item Workshop Right Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town 1st District Blue Trinity Balcony Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Mystical House Glide Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Alleyway Behind Crates Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Item Workshop Left Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Traverse Town Secret Waterway Near Stairs Chest " ) ,
lambda state : state . has ( " Lionheart " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Rabbit Hole Green Trinity Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Rabbit Hole Defeat Heartless 1 Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Rabbit Hole Defeat Heartless 2 Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Rabbit Hole Defeat Heartless 3 Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Bizarre Room Green Trinity Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Queen ' s Castle Hedge Left Red Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Queen ' s Castle Hedge Right Blue Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Queen ' s Castle Hedge Right Red Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Thunder Plant Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Through the Painting Thunder Plant Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Glide Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Nut Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Corner Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Bizarre Room Lamp Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Tea Party Garden Above Lotus Forest Entrance 2nd Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Tea Party Garden Above Lotus Forest Entrance 1st Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Tea Party Garden Bear and Clock Puzzle Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Tea Party Garden Across From Bizarre Room Entrance Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Wonderland Lotus Forest Through the Painting White Trinity Chest " ) ,
lambda state : state . has ( " Lady Luck " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Tree House Beneath Tree House Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Tree House Rooftop Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Hippo ' s Lagoon Center Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Hippo ' s Lagoon Left Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Hippo ' s Lagoon Right Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Vines Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Vines 2 Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Climbing Trees Blue Trinity Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Tunnel Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Cavern of Hearts White Trinity Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Camp Blue Trinity Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Tent Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Waterfall Cavern Low Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Waterfall Cavern Middle Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Waterfall Cavern High Wall Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Waterfall Cavern High Middle Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Cliff Right Cliff Left Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Cliff Right Cliff Right Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Deep Jungle Tree House Suspended Boat Chest " ) ,
lambda state : state . has ( " Jungle King " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Plaza By Storage Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Plaza Raised Terrace Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Plaza Top Corner Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Alley Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Bazaar Across Windows Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Bazaar High Corner Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Main Street Right Palace Entrance Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Main Street High Above Alley Entrance Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Main Street High Above Palace Gates Entrance Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Palace Gates Low Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Palace Gates High Opposite Palace Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Palace Gates High Close to Palace Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Storage Green Trinity Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Storage Behind Barrel Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Entrance Left Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Entrance Tall Tower Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Hall High Left Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Hall Near Bottomless Hall Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Bottomless Hall Raised Platform Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Bottomless Hall Pillar Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Bottomless Hall Across Chasm Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Treasure Room Across Platforms Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Treasure Room Small Treasure Pile Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Treasure Room Large Treasure Pile Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Treasure Room Above Fire Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Relic Chamber Jump from Stairs Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Relic Chamber Stairs Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Dark Chamber Abu Gem Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Dark Chamber Across from Relic Chamber Entrance Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Dark Chamber Bridge Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Dark Chamber Near Save Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Silent Chamber Blue Trinity Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Hidden Room Right Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Hidden Room Left Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Aladdin ' s House Main Street Entrance Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Aladdin ' s House Plaza Entrance Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Agrabah Cave of Wonders Entrance White Trinity Chest " ) ,
lambda state : state . has ( " Three Wishes " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 6 Other Platform Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 6 Platform Near Chamber 5 Entrance Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 6 Raised Area Near Chamber 1 Entrance Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 6 Low Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Moonlight Hill White Trinity Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Bridge Under Bridge " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Boneyard Tombstone Puzzle Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Bridge Right of Gate Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Cemetery Behind Grave Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Cemetery By Cat Shape Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Cemetery Between Graves Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Lower Iron Cage Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Upper Iron Cage Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Hollow Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Grounds Red Trinity Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Guillotine Square High Tower Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Guillotine Square Pumpkin Structure Left Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Entrance Steps Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Oogie ' s Manor Inside Entrance Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Bridge Left of Gate Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Cemetery By Striped Grave Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Guillotine Square Under Jack ' s House Stairs Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Halloween Town Guillotine Square Pumpkin Structure Right Chest " ) ,
lambda state : state . has ( " Pumpkinhead " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Left Behind Columns Chest " ) ,
lambda state : state . has ( " Olympia " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Right Blue Trinity Chest " ) ,
lambda state : state . has ( " Olympia " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Left Blue Trinity Chest " ) ,
lambda state : state . has ( " Olympia " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates White Trinity Chest " ) ,
lambda state : state . has ( " Olympia " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Blizzara Chest " ) ,
lambda state : state . has ( " Olympia " , player ) )
add_rule ( kh1world . get_location ( " Olympus Coliseum Coliseum Gates Blizzaga Chest " ) ,
lambda state : state . has ( " Olympia " , player ) )
add_rule ( kh1world . get_location ( " Monstro Mouth Boat Deck Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Mouth High Platform Boat Side Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Mouth High Platform Across from Boat Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Mouth Near Ship Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Mouth Green Trinity Top of Boat Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 2 Ground Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 2 Platform Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 5 Platform Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 3 Ground Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 3 Platform Above Chamber 2 Entrance Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 3 Near Chamber 6 Entrance Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 3 Platform Near Chamber 6 Entrance Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Mouth High Platform Near Teeth Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 5 Atop Barrel Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 5 Low 2nd Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 5 Low 1st Chest " ) ,
lambda state : state . has ( " Wishing Star " , player ) )
add_rule ( kh1world . get_location ( " Neverland Pirate Ship Deck White Trinity Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Neverland Pirate Ship Crows Nest Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Neverland Hold Yellow Trinity Right Blue Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Neverland Hold Yellow Trinity Left Blue Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Neverland Galley Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Neverland Cabin Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Neverland Hold Flight 1st Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Neverland Clock Tower Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Neverland Hold Flight 2nd Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Neverland Hold Yellow Trinity Green Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Neverland Captain ' s Cabin Chest " ) ,
lambda state : state . has ( " Fairy Harp " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls Water ' s Surface Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls Under Water 1st Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls Under Water 2nd Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls Floating Platform Near Save Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls Floating Platform Near Bubble Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls High Platform Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Castle Gates Gravity Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Castle Gates Freestanding Pillar Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Castle Gates High Pillar Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Great Crest Lower Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Great Crest After Battle Platform Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion High Tower 2nd Gravity Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion High Tower 1st Gravity Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion High Tower Above Sliding Blocks Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Library Top of Bookshelf Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Lift Stop Library Node After High Tower Switch Gravity Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Lift Stop Library Node Gravity Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Lift Stop Under High Tower Sliding Blocks Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Lift Stop Outside Library Gravity Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Lift Stop Heartless Sigil Door Gravity Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Base Level Bubble Under the Wall Platform Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Base Level Platform Near Entrance Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Base Level Near Crystal Switch Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Waterway Near Save Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Waterway Blizzard on Bubble Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Waterway Unlock Passage from Base Level Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Dungeon By Candles Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Dungeon Corner Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Grand Hall Steps Right Side Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Grand Hall Oblivion Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Grand Hall Left of Gate Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Entrance Hall Left of Emblem Door Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " Hollow Bastion Rising Falls White Trinity Chest " ) ,
lambda state : state . has ( " Divine Rose " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Dimension 1st Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Dimension 2nd Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Dimension 3rd Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Dimension 4th Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Dimension 5th Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Dimension 6th Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Dimension 10th Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Dimension 9th Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Dimension 8th Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Dimension 7th Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Giant Crevasse 3rd Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Giant Crevasse 5th Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Giant Crevasse 1st Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Giant Crevasse 4th Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Giant Crevasse 2nd Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World World Terminus Traverse Town Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World World Terminus Wonderland Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World World Terminus Olympus Coliseum Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World World Terminus Deep Jungle Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World World Terminus Agrabah Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World World Terminus Halloween Town Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World World Terminus Neverland Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World World Terminus 100 Acre Wood Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " End of the World Final Rest Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
add_rule ( kh1world . get_location ( " Monstro Chamber 6 White Trinity Chest " ) ,
lambda state : state . has ( " Oblivion " , player ) )
if options . hundred_acre_wood :
add_rule ( kh1world . get_location ( " 100 Acre Wood Meadow Inside Log Chest " ) ,
lambda state : state . has ( " Oathkeeper " , player ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Left Cliff Chest " ) ,
lambda state : state . has ( " Oathkeeper " , player ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Right Tree Alcove Chest " ) ,
lambda state : state . has ( " Oathkeeper " , player ) )
add_rule ( kh1world . get_location ( " 100 Acre Wood Bouncing Spot Under Giant Pot Chest " ) ,
lambda state : state . has ( " Oathkeeper " , player ) )
add_rule ( kh1world . get_entrance ( " Wonderland " ) ,
lambda state : state . has ( " Wonderland " , player ) and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_entrance ( " Olympus Coliseum " ) ,
lambda state : state . has ( " Olympus Coliseum " , player ) and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_entrance ( " Deep Jungle " ) ,
lambda state : state . has ( " Deep Jungle " , player ) and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_entrance ( " Agrabah " ) ,
lambda state : state . has ( " Agrabah " , player ) and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_entrance ( " Monstro " ) ,
lambda state : state . has ( " Monstro " , player ) and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests ) )
if options . atlantica :
add_rule ( kh1world . get_entrance ( " Atlantica " ) ,
lambda state : state . has ( " Atlantica " , player ) and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_entrance ( " Halloween Town " ) ,
lambda state : state . has ( " Halloween Town " , player ) and has_x_worlds ( state , player , 2 , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_entrance ( " Neverland " ) ,
lambda state : state . has ( " Neverland " , player ) and has_x_worlds ( state , player , 3 , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_entrance ( " Hollow Bastion " ) ,
lambda state : state . has ( " Hollow Bastion " , player ) and has_x_worlds ( state , player , 5 , options . keyblades_unlock_chests ) )
add_rule ( kh1world . get_entrance ( " End of the World " ) ,
lambda state : has_x_worlds ( state , player , 7 , options . keyblades_unlock_chests ) and ( has_reports ( state , player , eotw_required_reports ) or state . has ( " End of the World " , player ) ) )
add_rule ( kh1world . get_entrance ( " 100 Acre Wood " ) ,
lambda state : state . has ( " Progressive Fire " , player ) )
multiworld . completion_condition [ player ] = lambda state : state . has ( " Victory " , player )