45 lines
2.6 KiB
Python
45 lines
2.6 KiB
Python
from typing import List
|
|
from ...Region import Z3Region, RewardType, IReward, IMedallionAccess
|
|
from ...Config import Config
|
|
from ...Location import Location, LocationType
|
|
from ...Item import Progression, ItemType
|
|
|
|
class MiseryMire(Z3Region, IReward, IMedallionAccess):
|
|
Name = "Misery Mire"
|
|
Area = "Misery Mire"
|
|
|
|
def __init__(self, world, config: Config):
|
|
super().__init__(world, config)
|
|
self.Weight = 2
|
|
self.RegionItems = [ ItemType.KeyMM, ItemType.BigKeyMM, ItemType.MapMM, ItemType.CompassMM]
|
|
self.Reward = RewardType.Null
|
|
self.Medallion = None
|
|
self.Locations = [
|
|
Location(self, 256+169, 0x1EA5E, LocationType.Regular, "Misery Mire - Main Lobby",
|
|
lambda items: items.BigKeyMM or items.KeyMM >= 1),
|
|
Location(self, 256+170, 0x1EA6A, LocationType.Regular, "Misery Mire - Map Chest",
|
|
lambda items: items.BigKeyMM or items.KeyMM >= 1),
|
|
Location(self, 256+171, 0x1EA61, LocationType.Regular, "Misery Mire - Bridge Chest"),
|
|
Location(self, 256+172, 0x1E9DA, LocationType.Regular, "Misery Mire - Spike Chest"),
|
|
Location(self, 256+173, 0x1EA64, LocationType.Regular, "Misery Mire - Compass Chest",
|
|
lambda items: items.CanLightTorches() and
|
|
items.KeyMM >= (2 if self.GetLocation("Misery Mire - Big Key Chest").ItemIs(ItemType.BigKeyMM, self.world) else 3)),
|
|
Location(self, 256+174, 0x1EA6D, LocationType.Regular, "Misery Mire - Big Key Chest",
|
|
lambda items: items.CanLightTorches() and
|
|
items.KeyMM >= (2 if self.GetLocation("Misery Mire - Compass Chest").ItemIs(ItemType.BigKeyMM, self.world) else 3)),
|
|
Location(self, 256+175, 0x1EA67, LocationType.Regular, "Misery Mire - Big Chest",
|
|
lambda items: items.BigKeyMM),
|
|
Location(self, 256+176, 0x308158, LocationType.Regular, "Misery Mire - Vitreous",
|
|
lambda items: items.BigKeyMM and items.Lamp and items.Somaria)
|
|
]
|
|
|
|
# // Need "CanKillManyEnemies" if implementing swordless
|
|
def CanEnter(self, items: Progression):
|
|
from ...WorldState import Medallion
|
|
return (items.Bombos if self.Medallion == Medallion.Bombos else (
|
|
items.Ether if self.Medallion == Medallion.Ether else items.Quake)) and items.Sword and \
|
|
items.MoonPearl and (items.Boots or items.Hookshot) and \
|
|
self.world.CanEnter("Dark World Mire", items)
|
|
|
|
def CanComplete(self, items: Progression):
|
|
return self.GetLocation("Misery Mire - Vitreous").Available(items) |