70 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from enum import Enum
 | |
| from typing import Dict, List
 | |
| from .Config import *
 | |
| 
 | |
| class RewardType(Enum):
 | |
|     Null = 0
 | |
|     Agahnim = 1 << 0
 | |
|     PendantGreen = 1 << 1
 | |
|     PendantNonGreen = 1 << 2
 | |
|     CrystalBlue = 1 << 3
 | |
|     CrystalRed = 1 << 4
 | |
|     BossTokenKraid = 1 << 5
 | |
|     BossTokenPhantoon = 1 << 6
 | |
|     BossTokenDraygon = 1 << 7
 | |
|     BossTokenRidley = 1 << 8
 | |
| 
 | |
|     AnyPendant = PendantGreen | PendantNonGreen
 | |
|     AnyCrystal = CrystalBlue | CrystalRed
 | |
|     AnyBossToken = BossTokenKraid | BossTokenPhantoon | BossTokenDraygon | BossTokenRidley
 | |
| 
 | |
| class IReward:
 | |
|     Reward: RewardType
 | |
|     def CanComplete(self, items):
 | |
|         pass
 | |
| 
 | |
| class IMedallionAccess:
 | |
|     Medallion = None
 | |
| 
 | |
| class Region:
 | |
|     from . import Location
 | |
|     Name: str
 | |
|     Area: str
 | |
| 
 | |
|     Locations: List[Location.Location]
 | |
|     Weight: int = 0
 | |
| 
 | |
|     Config: Config
 | |
| 
 | |
|     locationLookup: Dict[str, Location.Location]
 | |
|     
 | |
|     def GetLocation(self, name: str):
 | |
|         return self.locationLookup[name]
 | |
| 
 | |
|     def __init__(self, world, config: Config):
 | |
|         self.Config = config
 | |
|         self.world = world
 | |
|         self.locationLookup = {}
 | |
|         self.RegionItems = []
 | |
| 
 | |
|     def GenerateLocationLookup(self):
 | |
|         self.locationLookup = {loc.Name:loc for loc in self.Locations}
 | |
| 
 | |
|     def IsRegionItem(self, item):
 | |
|         return item.Type in self.RegionItems
 | |
| 
 | |
|     def CanFill(self, item):
 | |
|         return self.Config.Keysanity or not item.IsDungeonItem() or self.IsRegionItem(item)
 | |
| 
 | |
|     def CanEnter(self, items):
 | |
|         return True
 | |
| 
 | |
| class SMRegion(Region):
 | |
|     Logic: SMLogic = Config.SMLogic
 | |
|     def __init__(self, world, config: Config):
 | |
|         super().__init__(world, config)
 | |
| 
 | |
| class Z3Region(Region):
 | |
|     def __init__(self, world, config: Config):
 | |
|         super().__init__(world, config)
 | 
