45 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
from ....Region import SMRegion
 | 
						|
from ....Config import Config, SMLogic
 | 
						|
from ....Location import Location, LocationType
 | 
						|
from ....Item import Progression
 | 
						|
 | 
						|
class Pink(SMRegion):
 | 
						|
    Name = "Brinstar Pink"
 | 
						|
    Area = "Brinstar"
 | 
						|
 | 
						|
    def __init__(self, world, config: Config):
 | 
						|
        super().__init__(world, config)
 | 
						|
        self.Weight = -4
 | 
						|
        self.Locations = [
 | 
						|
            Location(self, 14, 0x8F84E4, LocationType.Chozo, "Super Missile (pink Brinstar)", 
 | 
						|
                lambda items: items.CardBrinstarBoss and items.CanPassBombPassages() and items.Super if self.Logic == SMLogic.Normal else \
 | 
						|
                lambda items: (items.CardBrinstarBoss or items.CardBrinstarL2) and items.CanPassBombPassages() and items.Super),
 | 
						|
            Location(self, 21, 0x8F8608, LocationType.Visible, "Missile (pink Brinstar top)"),
 | 
						|
            Location(self, 22, 0x8F860E, LocationType.Visible, "Missile (pink Brinstar bottom)"),
 | 
						|
            Location(self, 23, 0x8F8614, LocationType.Chozo, "Charge Beam", 
 | 
						|
                lambda items: items.CanPassBombPassages()),
 | 
						|
            Location(self, 24, 0x8F865C, LocationType.Visible, "Power Bomb (pink Brinstar)", 
 | 
						|
                lambda items: items.CanUsePowerBombs() and items.Super and items.HasEnergyReserves(1) if self.Logic == SMLogic.Normal else \
 | 
						|
                lambda items: items.CanUsePowerBombs() and items.Super),
 | 
						|
            Location(self, 25, 0x8F8676, LocationType.Visible, "Missile (green Brinstar pipe)", 
 | 
						|
                lambda items: items.Morph and (items.PowerBomb or items.Super or items.CanAccessNorfairUpperPortal())),
 | 
						|
            Location(self, 33, 0x8F87FA, LocationType.Visible, "Energy Tank, Waterway", 
 | 
						|
                lambda items: items.CanUsePowerBombs() and items.CanOpenRedDoors() and items.SpeedBooster and (items.HasEnergyReserves(1) or items.Gravity)),
 | 
						|
            Location(self, 35, 0x8F8824, LocationType.Visible, "Energy Tank, Brinstar Gate", 
 | 
						|
                lambda items: items.CardBrinstarL2 and items.CanUsePowerBombs() and items.Wave and items.HasEnergyReserves(1) if self.Logic == SMLogic.Normal else \
 | 
						|
                lambda items: items.CardBrinstarL2 and items.CanUsePowerBombs() and (items.Wave or items.Super))
 | 
						|
        ]
 | 
						|
 | 
						|
 | 
						|
    def CanEnter(self, items: Progression):
 | 
						|
        if self.Logic == SMLogic.Normal:
 | 
						|
            return items.CanOpenRedDoors() and (items.CanDestroyBombWalls() or items.SpeedBooster) or \
 | 
						|
            items.CanUsePowerBombs() or \
 | 
						|
            items.CanAccessNorfairUpperPortal() and items.Morph and items.Wave and \
 | 
						|
                (items.Ice or items.HiJump or items.SpaceJump)
 | 
						|
        else:
 | 
						|
            return items.CanOpenRedDoors() and (items.CanDestroyBombWalls() or items.SpeedBooster) or \
 | 
						|
                items.CanUsePowerBombs() or \
 | 
						|
                items.CanAccessNorfairUpperPortal() and items.Morph and (items.Missile or items.Super or items.Wave ) and \
 | 
						|
                    (items.Ice or items.HiJump or items.CanSpringBallJump() or items.CanFly())
 |