Archipelago/worlds/smz3/TotalSMZ3/Regions/Zelda/ThievesTown.py

40 lines
2.2 KiB
Python

from typing import List
from worlds.smz3.TotalSMZ3.Region import Z3Region, RewardType, IReward
from worlds.smz3.TotalSMZ3.Config import Config
from worlds.smz3.TotalSMZ3.Location import Location, LocationType
from worlds.smz3.TotalSMZ3.Item import Progression, ItemType
class ThievesTown(Z3Region, IReward):
Name = "Thieves' Town"
Area = "Thieves' Town"
def __init__(self, world, config: Config):
super().__init__(world, config)
self.RegionItems = [ ItemType.KeyTT, ItemType.BigKeyTT, ItemType.MapTT, ItemType.CompassTT]
self.Reward = RewardType.Null
self.Locations = [
Location(self, 256+153, 0x1EA01, LocationType.Regular, "Thieves' Town - Map Chest"),
Location(self, 256+154, 0x1EA0A, LocationType.Regular, "Thieves' Town - Ambush Chest"),
Location(self, 256+155, 0x1EA07, LocationType.Regular, "Thieves' Town - Compass Chest"),
Location(self, 256+156, 0x1EA04, LocationType.Regular, "Thieves' Town - Big Key Chest"),
Location(self, 256+157, 0x1EA0D, LocationType.Regular, "Thieves' Town - Attic",
lambda items: items.BigKeyTT and items.KeyTT),
Location(self, 256+158, 0x1EA13, LocationType.Regular, "Thieves' Town - Blind's Cell",
lambda items: items.BigKeyTT),
Location(self, 256+159, 0x1EA10, LocationType.Regular, "Thieves' Town - Big Chest",
lambda items: items.BigKeyTT and items.Hammer and
(self.GetLocation("Thieves' Town - Big Chest").ItemIs(ItemType.KeyTT, self.world) or items.KeyTT))
.AlwaysAllow(lambda item, items: item.Is(ItemType.KeyTT, self.world) and items.Hammer),
Location(self, 256+160, 0x308156, LocationType.Regular, "Thieves' Town - Blind",
lambda items: items.BigKeyTT and items.KeyTT and self.CanBeatBoss(items)),
]
def CanBeatBoss(self, items: Progression):
return items.Sword or items.Hammer or items.Somaria or items.Byrna
def CanEnter(self, items: Progression):
return items.MoonPearl and self.world.CanEnter("Dark World North West", items)
def CanComplete(self, items: Progression):
return self.GetLocation("Thieves' Town - Blind").Available(items)