Files
Grinch-AP/worlds/smz3/TotalSMZ3/Regions/Zelda/IcePalace.py

52 lines
3.0 KiB
Python
Raw Normal View History

2022-03-15 08:55:57 -04:00
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 IcePalace(Z3Region, IReward):
Name = "Ice Palace"
Area = "Ice Palace"
def __init__(self, world, config: Config):
super().__init__(world, config)
self.RegionItems = [ ItemType.KeyIP, ItemType.BigKeyIP, ItemType.MapIP, ItemType.CompassIP]
self.Reward = RewardType.Null
self.Locations = [
Location(self, 256+161, 0x1E9D4, LocationType.Regular, "Ice Palace - Compass Chest"),
Location(self, 256+162, 0x1E9E0, LocationType.Regular, "Ice Palace - Spike Room",
lambda items: items.Hookshot or items.KeyIP >= 1 and self.CanNotWasteKeysBeforeAccessible(items, [
self.GetLocation("Ice Palace - Map Chest"),
self.GetLocation("Ice Palace - Big Key Chest")
])),
Location(self, 256+163, 0x1E9DD, LocationType.Regular, "Ice Palace - Map Chest",
lambda items: items.Hammer and items.CanLiftLight() and (
items.Hookshot or items.KeyIP >= 1 and self.CanNotWasteKeysBeforeAccessible(items, [
self.GetLocation("Ice Palace - Spike Room"),
self.GetLocation("Ice Palace - Big Key Chest")
])
)),
Location(self, 256+164, 0x1E9A4, LocationType.Regular, "Ice Palace - Big Key Chest",
lambda items: items.Hammer and items.CanLiftLight() and (
items.Hookshot or items.KeyIP >= 1 and self.CanNotWasteKeysBeforeAccessible(items, [
self.GetLocation("Ice Palace - Spike Room"),
self.GetLocation("Ice Palace - Map Chest")
])
)),
Location(self, 256+165, 0x1E9E3, LocationType.Regular, "Ice Palace - Iced T Room"),
Location(self, 256+166, 0x1E995, LocationType.Regular, "Ice Palace - Freezor Chest"),
Location(self, 256+167, 0x1E9AA, LocationType.Regular, "Ice Palace - Big Chest",
lambda items: items.BigKeyIP),
Location(self, 256+168, 0x308157, LocationType.Regular, "Ice Palace - Kholdstare",
lambda items: items.BigKeyIP and items.Hammer and items.CanLiftLight() and
items.KeyIP >= (1 if items.Somaria else 2))
]
def CanNotWasteKeysBeforeAccessible(self, items: Progression, locations: List[Location]):
return not items.BigKeyIP or any(l.ItemIs(ItemType.BigKeyIP, self.world) for l in locations)
def CanEnter(self, items: Progression):
return items.MoonPearl and items.Flippers and items.CanLiftHeavy() and items.CanMeltFreezors()
def CanComplete(self, items: Progression):
return self.GetLocation("Ice Palace - Kholdstare").Available(items)