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) |