Archipelago/worlds/kh1/Rules.py

1959 lines
104 KiB
Python
Raw Normal View History

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
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:
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
(
state.has("High Jump", player, 2)
and state.has("Footprints", player)
)
or
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
(
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
(
state.has("High Jump", player, 2)
and state.has("Footprints", player)
)
or
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
(
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))
))
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_all(("High Jump", "Progressive Glide"), player)
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
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_all(("High Jump", "Progressive Glide"), player)
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
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)
and has_defensive_tools(state, player)
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
))
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("Progressive Glide", player)
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
))
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)
and state.has("Progressive Blizzard", player, 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
))
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) and state.has("Progressive Blizzard", player, 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
))
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)