131 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Python
		
	
	
	
| from logic.smbool import SMBool
 | |
| 
 | |
| # layout patches added by randomizers
 | |
| class RomPatches:
 | |
|     #### Patches definitions
 | |
| 
 | |
|     ### Layout
 | |
|     # blue door to access the room with etank+missile
 | |
|     BlueBrinstarBlueDoor      = 10
 | |
|     # missile in the first room is a major item and accessible and ceiling is a minor
 | |
|     BlueBrinstarMissile       = 11
 | |
|     # shot block instead of bomb blocks for spazer access
 | |
|     SpazerShotBlock           = 20
 | |
|     # climb back up red tower from bottom no matter what
 | |
|     RedTowerLeftPassage       = 21
 | |
|     # exit red tower top to crateria
 | |
|     RedTowerBlueDoors         = 22
 | |
|     # shot block in crumble blocks at early supers
 | |
|     EarlySupersShotBlock      = 23
 | |
|     # brinstar reserve area door blue
 | |
|     BrinReserveBlueDoors      = 24
 | |
|     # red tower top PB door to hellway
 | |
|     HellwayBlueDoor           = 25
 | |
|     # etecoon supers blue door
 | |
|     EtecoonSupersBlueDoor     = 26
 | |
|     # shot block to exit hi jump area
 | |
|     HiJumpShotBlock           = 30
 | |
|     # access main upper norfair without anything
 | |
|     CathedralEntranceWallJump = 31
 | |
|     # graph blue doors
 | |
|     HiJumpAreaBlueDoor        = 32
 | |
|     SpeedAreaBlueDoors        = 33
 | |
|     # LN start
 | |
|     LowerNorfairPBRoomHeatDisable = 34
 | |
|     FirefleasRemoveFune       = 35
 | |
|     # moat bottom block
 | |
|     MoatShotBlock             = 41
 | |
|     #graph+forgotten hiway anti softlock
 | |
|     SpongeBathBlueDoor        = 42
 | |
|     # forgotten hiway anti softlock
 | |
|     EastOceanPlatforms        = 43
 | |
|     # maridia
 | |
|     MaridiaTubeOpened         = 51
 | |
|     MamaTurtleBlueDoor        = 52
 | |
|     # ws start
 | |
|     WsEtankBlueDoor           = 53
 | |
|     ## Area rando patches
 | |
|     # remove crumble block for reverse lower norfair door access
 | |
|     SingleChamberNoCrumble    = 101
 | |
|     # remove green gates for reverse maridia access
 | |
|     AreaRandoGatesBase        = 102
 | |
|     # remove crab green gate in maridia and blue gate in green brinstar
 | |
|     AreaRandoGatesOther       = 103
 | |
|     # disable Green Hill Yellow, Noob Bridge Green, Coude Yellow, and Kronic Boost yellow doors
 | |
|     AreaRandoBlueDoors        = 104
 | |
|     # crateria key hunter yellow, green pirates shaft red
 | |
|     AreaRandoMoreBlueDoors    = 105
 | |
|     # croc green+grey doors
 | |
|     CrocBlueDoors             = 106
 | |
|     # maridia crab shaft AP door
 | |
|     CrabShaftBlueDoor         = 107
 | |
|     # wrap door from sand halls left to under botwoon
 | |
|     MaridiaSandWarp           = 108
 | |
|     ## Minimizer Patches
 | |
|     NoGadoras                 = 200
 | |
|     TourianSpeedup            = 201
 | |
|     OpenZebetites             = 202
 | |
| 
 | |
|     ### Other
 | |
|     # Gravity no longer protects from environmental damage (heat, spikes...)
 | |
|     NoGravityEnvProtection  = 1000
 | |
|     # Wrecked Ship etank accessible when Phantoon is alive
 | |
|     WsEtankPhantoonAlive    = 1001
 | |
|     # Lower Norfair chozo (vanilla access to GT/Screw Area) : disable space jump check
 | |
|     LNChozoSJCheckDisabled  = 1002
 | |
|     # Progressive suits patch, mutually exclusive with NoGravityEnvProtection
 | |
|     ProgressiveSuits        = 1003
 | |
|     # Nerfed charge beam available from the start
 | |
|     NerfedCharge            = 1004
 | |
|     # Nerfed rainbow beam for ultra sparse energy qty
 | |
|     NerfedRainbowBeam       = 1005
 | |
|     # Red doors open with one missile, and don't react to supers: part of door color rando
 | |
|     RedDoorsMissileOnly     = 1006
 | |
| 
 | |
|     ### Hacks
 | |
|     # rotation hack
 | |
|     RotationHack            = 10000
 | |
| 
 | |
|     #### Patch sets
 | |
|     # total randomizer
 | |
|     TotalBase = [ BlueBrinstarBlueDoor, RedTowerBlueDoors, NoGravityEnvProtection ]
 | |
|     # tournament and full
 | |
|     TotalLayout = [ MoatShotBlock, EarlySupersShotBlock,
 | |
|                     SpazerShotBlock, RedTowerLeftPassage,
 | |
|                     HiJumpShotBlock, CathedralEntranceWallJump ]
 | |
| 
 | |
|     Total = TotalBase + TotalLayout
 | |
| 
 | |
|     # casual
 | |
|     TotalCasual = [ BlueBrinstarMissile ] + Total
 | |
| 
 | |
|     # area rando patch set
 | |
|     AreaBaseSet = [ SingleChamberNoCrumble, AreaRandoGatesBase,
 | |
|                     AreaRandoBlueDoors, AreaRandoMoreBlueDoors,
 | |
|                     CrocBlueDoors, CrabShaftBlueDoor, MaridiaSandWarp ]
 | |
|     AreaComfortSet = [ AreaRandoGatesOther, SpongeBathBlueDoor, EastOceanPlatforms ]
 | |
|     AreaSet = AreaBaseSet + AreaComfortSet
 | |
| 
 | |
|     # VARIA specific patch set
 | |
|     VariaTweaks = [ WsEtankPhantoonAlive, LNChozoSJCheckDisabled ]
 | |
| 
 | |
|     # Tourian speedup in minimizer mode
 | |
|     MinimizerTourian = [ TourianSpeedup, OpenZebetites ]
 | |
| 
 | |
|     # dessyreqt randomizer
 | |
|     Dessy = []
 | |
| 
 | |
|     ### Active patches
 | |
|     ActivePatches = {}
 | |
| 
 | |
|     @staticmethod
 | |
|     def has(player, patch):
 | |
|         return SMBool(patch in RomPatches.ActivePatches[player])
 | |
| 
 | |
|     @staticmethod
 | |
|     def setDefaultPatches(startLocation):
 | |
|         # called by the isolver in seedless mode.
 | |
|         # activate only layout patch (the most common one), red tower blue doors and the startLocation's patches.
 | |
|         from graph.graph_utils import GraphUtils
 | |
|         RomPatches.ActivePatches[0] = [RomPatches.RedTowerBlueDoors] + RomPatches.TotalLayout + GraphUtils.getGraphPatches(startLocation)
 |