from enum import Enum from typing import Dict, List from worlds.smz3.TotalSMZ3.Config import * from worlds.smz3.TotalSMZ3.Item import Item, ItemType class RewardType(Enum): Null = 0 Agahnim = 1 PendantGreen = 2 PendantNonGreen = 3 CrystalBlue = 4 CrystalRed = 5 GoldenFourBoss = 6 class IReward: Reward: RewardType def CanComplete(self, items): pass class IMedallionAccess: Medallion: object class Region: import worlds.smz3.TotalSMZ3.Location as 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)