 5935093615
			
		
	
	5935093615
	
	
	
		
			
			* Commit for PR * Commit for PR * Update worlds/mlss/Client.py Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> * Update worlds/mlss/__init__.py Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> * Update worlds/mlss/__init__.py Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> * Update worlds/mlss/docs/setup_en.md Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> * Remove deprecated import. Updated settings and romfile syntax * Updated Options to new system. Changed all references from MultiWorld to World * Changed switch statements to if else * Update en_Mario & Luigi Superstar Saga.md * Updated client.py * Update Client.py * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Updated logic, Updated patch implementation, Removed unused imports, Cleaned up Code * Update __init__.py * Changed reference from world to mlssworld * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Fix merge conflict + update prep * v1.2 * Leftover print commands * Update basepatch.bsdiff * Update basepatch.bsdiff * v1.3 * Update Rom.py * Change tracker locations to serverside, no longer locations. Various code cleanup and logic changes. * Event removal continuation. * Partial Implementation of APPP (Incomplete)) * v1.4 Implemented APPP * Docs Updated * Update Rom.py * Update setup_en.md * Update Rom.py * Update Rules.py * Fix for APPP being broken on webhost * Update Rom.py * Update Rom.py * Location name fixes + pants color fixes * Update Rules.py * Fix for ultra hammer cutscene * Fixed compat. issues with python ver. 3.8 * Updated hidden block yaml option * pre-v1.5 * Update Client.py * Update basepatch.bsdiff * v1.5 * Update XP multiplier to have a minimum of 0 * Update 'Beanfruit' to 'Bean Fruit' * v1.6 * Update Rom.py * Update basepatch.bsdiff * Initial review refactor * Revert state logic changes. Continuation of refactor. * Fixed failed generations. Finished refactor. * Reworked colors. Removed all .txt files * Actually removed the .txt files this time * Update Rom.py * Update README.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/Options.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/Client.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/__init__.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/Data.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Review refactor. * Update README.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/Rules.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Add coin blocks to LocationName * Refactor. * Update Items.py * Delete mlss.apworld * Small asm bugfix * Update basepatch.bsdiff * Client sends less messages to server * Update basepatch.bsdiff --------- Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
		
			
				
	
	
		
			572 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			572 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import typing
 | |
| 
 | |
| from worlds.generic.Rules import add_rule, forbid_item
 | |
| from .Names.LocationName import LocationName
 | |
| from .Locations import all_locations, hidden
 | |
| from . import StateLogic
 | |
| 
 | |
| if typing.TYPE_CHECKING:
 | |
|     from . import MLSSWorld
 | |
| 
 | |
| 
 | |
| def set_rules(world: "MLSSWorld", excluded):
 | |
|     for location in all_locations:
 | |
|         if "Digspot" in location.name:
 | |
|             if (world.options.skip_minecart and "Minecart" in location.name) or (
 | |
|                 world.options.castle_skip and "Bowser" in location.name
 | |
|             ):
 | |
|                 continue
 | |
|             if world.options.chuckle_beans == 0 or world.options.chuckle_beans == 1 and location.id in hidden:
 | |
|                 continue
 | |
|             add_rule(
 | |
|                 world.get_location(location.name),
 | |
|                 lambda state: StateLogic.canDig(state, world.player),
 | |
|             )
 | |
|         if "Beanstone" in location.name:
 | |
|             add_rule(
 | |
|                 world.get_location(location.name),
 | |
|                 lambda state: StateLogic.canDig(state, world.player),
 | |
|             )
 | |
|         if "Shop" in location.name and "Coffee" not in location.name and location.name not in excluded:
 | |
|             forbid_item(world.get_location(location.name), "Hammers", world.player)
 | |
|             if "Badge" in location.name or "Pants" in location.name:
 | |
|                 add_rule(
 | |
|                     world.get_location(location.name),
 | |
|                     lambda state: StateLogic.brooch(state, world.player) or StateLogic.rose(state, world.player),
 | |
|                 )
 | |
|         if location.itemType != 0 and location.name not in excluded:
 | |
|             if "Bowser" in location.name and world.options.castle_skip:
 | |
|                 continue
 | |
|             forbid_item(world.get_location(location.name), "5 Coins", world.player)
 | |
| 
 | |
|     if world.options.chuckle_beans == 2:
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.HoohooVillageSuperHammerCaveDigspot),
 | |
|             lambda state: StateLogic.canCrash(state, world.player) or StateLogic.super(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanbeanOutskirtsFarmRoomDigspot2),
 | |
|             lambda state: StateLogic.thunder(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanbeanOutskirtsFarmRoomDigspot3),
 | |
|             lambda state: StateLogic.thunder(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChucklehuckWoodsWhiteFruitRoomDigspot3),
 | |
|             lambda state: StateLogic.canMini(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.JokesEndJojoraRoomDigspot),
 | |
|             lambda state: StateLogic.canDash(state, world.player),
 | |
|         )
 | |
| 
 | |
|     if world.options.chuckle_beans != 0:
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.HoohooMountainBaseBoostatueRoomDigspot2),
 | |
|             lambda state: StateLogic.canCrash(state, world.player) or StateLogic.super(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanbeanOutskirtsFarmRoomDigspot1),
 | |
|             lambda state: StateLogic.thunder(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChucklehuckWoodsWhiteFruitRoomDigspot2),
 | |
|             lambda state: StateLogic.canMini(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.TeeheeValleyPastUltraHammersDigspot1),
 | |
|             lambda state: StateLogic.ultra(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.TeeheeValleyPastUltraHammersDigspot3),
 | |
|             lambda state: StateLogic.ultra(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanbeanOutskirtsNorthBeachDigspot3),
 | |
|             lambda state: StateLogic.canDash(state, world.player) or StateLogic.super(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanbeanOutskirtsEDigspot2),
 | |
|             lambda state: StateLogic.thunder(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanbeanOutskirtsNEDigspot1),
 | |
|             lambda state: StateLogic.thunder(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanbeanOutskirtsSRoom1Digspot2),
 | |
|             lambda state: StateLogic.ultra(state, world.player) and StateLogic.thunder(state, world.player),
 | |
|         )
 | |
| 
 | |
|     forbid_item(
 | |
|         world.get_location(LocationName.SSChuckolaMembershipCard), "Nuts", world.player
 | |
|     )  # Bandaid Fix
 | |
| 
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.HoohooVillageHammerHouseBlock),
 | |
|         lambda state: StateLogic.hammers(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.HoohooMountainBaseBoostatueRoomBlock2),
 | |
|         lambda state: StateLogic.canCrash(state, world.player) or StateLogic.super(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsBooStatueMole),
 | |
|         lambda state: StateLogic.canMini(state, world.player) and StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.HoohooVillageSuperHammerCaveBlock),
 | |
|         lambda state: StateLogic.canCrash(state, world.player) or StateLogic.super(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsFarmRoomMoleReward1),
 | |
|         lambda state: StateLogic.thunder(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsFarmRoomMoleReward2),
 | |
|         lambda state: StateLogic.thunder(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsThunderHandMole),
 | |
|         lambda state: StateLogic.thunder(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsNWBlock),
 | |
|         lambda state: StateLogic.super(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsBeanFruit1),
 | |
|         lambda state: StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsBeanFruit2),
 | |
|         lambda state: StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsBeanFruit3),
 | |
|         lambda state: StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsBeanFruit4),
 | |
|         lambda state: StateLogic.super(state, world.player) and StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsBeanFruit5),
 | |
|         lambda state: StateLogic.super(state, world.player) and StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsBeanFruit6),
 | |
|         lambda state: StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsBeanFruit7),
 | |
|         lambda state: StateLogic.teehee(state, world.player) and StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsSRoom1Block),
 | |
|         lambda state: StateLogic.ultra(state, world.player) and StateLogic.thunder(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsSRoom2Block1),
 | |
|         lambda state: StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.WoohooHooniversityMiniMarioPuzzleSecretAreaBlock1),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.WoohooHooniversityMiniMarioPuzzleSecretAreaBlock2),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.WoohooHooniversityMiniMarioPuzzleSecretAreaBlock3),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.WoohooHooniversityMiniMarioPuzzleSecretAreaBlock4),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.WoohooHooniversityMiniMarioPuzzleBlock),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsSecretScroll1),
 | |
|         lambda state: StateLogic.thunder(state, world.player) and StateLogic.super(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsSecretScroll2),
 | |
|         lambda state: StateLogic.thunder(state, world.player) and StateLogic.ultra(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.HoohooVillageMoleBehindTurtle),
 | |
|         lambda state: StateLogic.canDash(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsNESoloMarioMole1),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsNESoloMarioMole2),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsSuperHammerUpgrade),
 | |
|         lambda state: StateLogic.thunder(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsUltraHammerUpgrade),
 | |
|         lambda state: StateLogic.thunder(state, world.player)
 | |
|         and StateLogic.pieces(state, world.player)
 | |
|         and StateLogic.castleTown(state, world.player)
 | |
|         and StateLogic.rose(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanOutskirtsSoloLuigiCaveMole),
 | |
|         lambda state: StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsRedChuckolaFruit),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsWhiteChuckolaFruit),
 | |
|         lambda state: StateLogic.canDig(state, world.player) and StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsAfterChucklerootBlock1),
 | |
|         lambda state: StateLogic.fruits(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsAfterChucklerootBlock2),
 | |
|         lambda state: StateLogic.fruits(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsAfterChucklerootBlock3),
 | |
|         lambda state: StateLogic.fruits(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsAfterChucklerootBlock4),
 | |
|         lambda state: StateLogic.fruits(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsAfterChucklerootBlock5),
 | |
|         lambda state: StateLogic.fruits(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsAfterChucklerootBlock6),
 | |
|         lambda state: StateLogic.fruits(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsRoom7Block1),
 | |
|         lambda state: StateLogic.hammers(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsRoom7Block2),
 | |
|         lambda state: StateLogic.hammers(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsRoom4Block1),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsRoom4Block2),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsRoom4Block3),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsPipeRoomBlock1),
 | |
|         lambda state: StateLogic.hammers(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChucklehuckWoodsPipeRoomBlock2),
 | |
|         lambda state: StateLogic.hammers(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanCastleTownMiniMarioBlock1),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanCastleTownMiniMarioBlock2),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanCastleTownMiniMarioBlock3),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanCastleTownMiniMarioBlock4),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanCastleTownMiniMarioBlock5),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanCastleFakeBeastar),
 | |
|         lambda state: StateLogic.pieces(state, world.player) and StateLogic.rose(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanbeanCastlePeachsExtraDress),
 | |
|         lambda state: StateLogic.pieces(state, world.player) and StateLogic.rose(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.SewersRoom5Block1),
 | |
|         lambda state: StateLogic.hammers(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.SewersRoom5Block2),
 | |
|         lambda state: StateLogic.hammers(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.GwarharLagoonFirstUnderwaterAreaRoom1Block),
 | |
|         lambda state: StateLogic.canDash(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.GwarharLagoonFirstUnderwaterAreaRoom2Block1),
 | |
|         lambda state: StateLogic.canDash(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.GwarharLagoonFirstUnderwaterAreaRoom2Block2),
 | |
|         lambda state: StateLogic.canDash(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.GwarharLagoonRedPearlBean),
 | |
|         lambda state: StateLogic.fire(state, world.player) and StateLogic.thunder(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.GwarharLagoonGreenPearlBean),
 | |
|         lambda state: StateLogic.fire(state, world.player) and StateLogic.thunder(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.TeeheeValleyPastUltraHammersBlock1),
 | |
|         lambda state: StateLogic.ultra(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.TeeheeValleyPastUltraHammersBlock2),
 | |
|         lambda state: StateLogic.ultra(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.TeeheeValleySoloLuigiMazeRoom1Block),
 | |
|         lambda state: StateLogic.ultra(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.OhoOasisFirebrand),
 | |
|         lambda state: StateLogic.canMini(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.OhoOasisThunderhand),
 | |
|         lambda state: StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanstarPieceYoshiTheater),
 | |
|         lambda state: StateLogic.neon(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.YoshiTheaterAzureYoshi),
 | |
|         lambda state: StateLogic.beanFruit(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.YoshiTheaterBlueYoshi),
 | |
|         lambda state: StateLogic.beanFruit(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.YoshiTheaterGreenYoshi),
 | |
|         lambda state: StateLogic.beanFruit(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.YoshiTheaterOrangeYoshi),
 | |
|         lambda state: StateLogic.beanFruit(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.YoshiTheaterPurpleYoshi),
 | |
|         lambda state: StateLogic.beanFruit(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.YoshiTheaterRedYoshi),
 | |
|         lambda state: StateLogic.beanFruit(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.YoshiTheaterYellowYoshi),
 | |
|         lambda state: StateLogic.beanFruit(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.WinkleAreaBeanstarRoomBlock),
 | |
|         lambda state: StateLogic.winkle(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BeanstarPieceWinkleArea),
 | |
|         lambda state: StateLogic.winkle(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.GwarharLagoonSpangleReward),
 | |
|         lambda state: StateLogic.spangle(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.PantsShopMomPiranhaFlag1),
 | |
|         lambda state: StateLogic.brooch(state, world.player) or StateLogic.rose(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.PantsShopMomPiranhaFlag2),
 | |
|         lambda state: StateLogic.brooch(state, world.player) or StateLogic.rose(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.PantsShopMomPiranhaFlag3),
 | |
|         lambda state: StateLogic.brooch(state, world.player) or StateLogic.rose(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BadgeShopMomPiranhaFlag1),
 | |
|         lambda state: StateLogic.brooch(state, world.player) or StateLogic.rose(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BadgeShopMomPiranhaFlag2),
 | |
|         lambda state: StateLogic.brooch(state, world.player) or StateLogic.rose(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.BadgeShopMomPiranhaFlag3),
 | |
|         lambda state: StateLogic.brooch(state, world.player) or StateLogic.rose(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChateauGreenGoblet),
 | |
|         lambda state: StateLogic.brooch(state, world.player) and StateLogic.canDig(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.ChateauRedGoblet),
 | |
|         lambda state: StateLogic.brooch(state, world.player) and StateLogic.canMini(state, world.player),
 | |
|     )
 | |
| 
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.GwarharLagoonSpangle),
 | |
|         lambda state: StateLogic.ultra(state, world.player),
 | |
|     )
 | |
|     add_rule(
 | |
|         world.get_location(LocationName.GwarharLagoonSpangleRoomBlock),
 | |
|         lambda state: StateLogic.ultra(state, world.player),
 | |
|     )
 | |
|     if world.options.difficult_logic:
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.GwarharLagoonSpangleReward),
 | |
|             lambda state: StateLogic.canCrash(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanstarPieceHermie),
 | |
|             lambda state: StateLogic.canCrash(state, world.player),
 | |
|         )
 | |
|         if world.options.chuckle_beans != 0:
 | |
|             add_rule(
 | |
|                 world.get_location(LocationName.GwarharLagoonPastHermieDigspot),
 | |
|                 lambda state: StateLogic.canCrash(state, world.player),
 | |
|             )
 | |
| 
 | |
|     if world.options.coins:
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.HoohooMountainBaseBooStatueCaveCoinBlock1),
 | |
|             lambda state: StateLogic.canCrash(state, world.player) or StateLogic.super(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.HoohooMountainBaseBooStatueCaveCoinBlock2),
 | |
|             lambda state: StateLogic.canCrash(state, world.player) or StateLogic.super(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.HoohooMountainBaseBooStatueCaveCoinBlock3),
 | |
|             lambda state: StateLogic.canCrash(state, world.player) or StateLogic.super(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanbeanOutskirtsNWCoinBlock),
 | |
|             lambda state: StateLogic.super(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanbeanOutskirtsSRoom1CoinBlock),
 | |
|             lambda state: StateLogic.ultra(state, world.player) and StateLogic.thunder(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.BeanbeanOutskirtsSRoom2CoinBlock),
 | |
|             lambda state: StateLogic.canCrash(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChateauPoppleRoomCoinBlock1),
 | |
|             lambda state: StateLogic.brooch(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChateauPoppleRoomCoinBlock2),
 | |
|             lambda state: StateLogic.brooch(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChucklehuckWoodsCaveRoom1CoinBlock),
 | |
|             lambda state: StateLogic.brooch(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChucklehuckWoodsCaveRoom2CoinBlock),
 | |
|             lambda state: StateLogic.brooch(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChucklehuckWoodsCaveRoom3CoinBlock),
 | |
|             lambda state: StateLogic.brooch(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChucklehuckWoodsPipe5RoomCoinBlock),
 | |
|             lambda state: StateLogic.brooch(state, world.player) and StateLogic.hammers(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChucklehuckWoodsRoom7CoinBlock),
 | |
|             lambda state: StateLogic.brooch(state, world.player) and StateLogic.hammers(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChucklehuckWoodsAfterChucklerootCoinBlock),
 | |
|             lambda state: StateLogic.brooch(state, world.player) and StateLogic.fruits(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChucklehuckWoodsKoopaRoomCoinBlock),
 | |
|             lambda state: StateLogic.brooch(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.ChucklehuckWoodsWinkleAreaCaveCoinBlock),
 | |
|             lambda state: StateLogic.brooch(state, world.player) and StateLogic.canDash(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.SewersPrisonRoomCoinBlock),
 | |
|             lambda state: StateLogic.rose(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.TeeheeValleyPastUltraHammerRocksCoinBlock),
 | |
|             lambda state: StateLogic.ultra(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.SSChuckolaStorageRoomCoinBlock1),
 | |
|             lambda state: StateLogic.super(state, world.player) or StateLogic.canDash(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.SSChuckolaStorageRoomCoinBlock2),
 | |
|             lambda state: StateLogic.super(state, world.player) or StateLogic.canDash(state, world.player),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.GwarharLagoonFirstUnderwaterAreaRoom2CoinBlock),
 | |
|             lambda state: StateLogic.canDash(state, world.player)
 | |
|             and (StateLogic.membership(state, world.player) or StateLogic.surfable(state, world.player)),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.JokesEndSecondFloorWestRoomCoinBlock),
 | |
|             lambda state: StateLogic.ultra(state, world.player)
 | |
|             and StateLogic.fire(state, world.player)
 | |
|             and (
 | |
|                 StateLogic.membership(state, world.player)
 | |
|                 or (StateLogic.canDig(state, world.player) and StateLogic.canMini(state, world.player))
 | |
|             ),
 | |
|         )
 | |
|         add_rule(
 | |
|             world.get_location(LocationName.JokesEndNorthofBridgeRoomCoinBlock),
 | |
|             lambda state: StateLogic.ultra(state, world.player)
 | |
|             and StateLogic.fire(state, world.player)
 | |
|             and StateLogic.canDig(state, world.player)
 | |
|             and (StateLogic.membership(state, world.player) or StateLogic.canMini(state, world.player)),
 | |
|         )
 | |
|         if not world.options.difficult_logic:
 | |
|             add_rule(
 | |
|                 world.get_location(LocationName.JokesEndNorthofBridgeRoomCoinBlock),
 | |
|                 lambda state: StateLogic.canCrash(state, world.player),
 | |
|             )
 |