core: rip out RegionType and rework Region class (#814)
This commit is contained in:
parent
f7a0542898
commit
7cbeb8438b
|
@ -949,24 +949,9 @@ class CollectionState():
|
||||||
self.stale[item.player] = True
|
self.stale[item.player] = True
|
||||||
|
|
||||||
|
|
||||||
@unique
|
|
||||||
class RegionType(IntEnum):
|
|
||||||
Generic = 0
|
|
||||||
LightWorld = 1
|
|
||||||
DarkWorld = 2
|
|
||||||
Cave = 3 # Also includes Houses
|
|
||||||
Dungeon = 4
|
|
||||||
|
|
||||||
@property
|
|
||||||
def is_indoors(self) -> bool:
|
|
||||||
"""Shorthand for checking if Cave or Dungeon"""
|
|
||||||
return self in (RegionType.Cave, RegionType.Dungeon)
|
|
||||||
|
|
||||||
|
|
||||||
class Region:
|
class Region:
|
||||||
name: str
|
name: str
|
||||||
type: RegionType
|
_hint_text: str
|
||||||
hint_text: str
|
|
||||||
player: int
|
player: int
|
||||||
multiworld: Optional[MultiWorld]
|
multiworld: Optional[MultiWorld]
|
||||||
entrances: List[Entrance]
|
entrances: List[Entrance]
|
||||||
|
@ -980,14 +965,13 @@ class Region:
|
||||||
is_light_world: bool = False
|
is_light_world: bool = False
|
||||||
is_dark_world: bool = False
|
is_dark_world: bool = False
|
||||||
|
|
||||||
def __init__(self, name: str, type_: RegionType, hint: str, player: int, world: Optional[MultiWorld] = None):
|
def __init__(self, name: str, player: int, multiworld: MultiWorld, hint: Optional[str] = None):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.type = type_
|
|
||||||
self.entrances = []
|
self.entrances = []
|
||||||
self.exits = []
|
self.exits = []
|
||||||
self.locations = []
|
self.locations = []
|
||||||
self.multiworld = world
|
self.multiworld = multiworld
|
||||||
self.hint_text = hint
|
self._hint_text = hint
|
||||||
self.player = player
|
self.player = player
|
||||||
|
|
||||||
def can_reach(self, state: CollectionState) -> bool:
|
def can_reach(self, state: CollectionState) -> bool:
|
||||||
|
@ -1003,6 +987,10 @@ class Region:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@property
|
||||||
|
def hint_text(self) -> str:
|
||||||
|
return self._hint_text if self._hint_text else self.name
|
||||||
|
|
||||||
def get_connecting_entrance(self, is_main_entrance: typing.Callable[[Entrance], bool]) -> Entrance:
|
def get_connecting_entrance(self, is_main_entrance: typing.Callable[[Entrance], bool]) -> Entrance:
|
||||||
for entrance in self.entrances:
|
for entrance in self.entrances:
|
||||||
if is_main_entrance(entrance):
|
if is_main_entrance(entrance):
|
||||||
|
@ -1289,6 +1277,7 @@ class Spoiler():
|
||||||
[('player', player), ('entrance', entrance), ('exit', exit_), ('direction', direction)])
|
[('player', player), ('entrance', entrance), ('exit', exit_), ('direction', direction)])
|
||||||
|
|
||||||
def parse_data(self):
|
def parse_data(self):
|
||||||
|
from worlds.alttp.SubClasses import LTTPRegionType
|
||||||
self.medallions = OrderedDict()
|
self.medallions = OrderedDict()
|
||||||
for player in self.multiworld.get_game_players("A Link to the Past"):
|
for player in self.multiworld.get_game_players("A Link to the Past"):
|
||||||
self.medallions[f'Misery Mire ({self.multiworld.get_player_name(player)})'] = \
|
self.medallions[f'Misery Mire ({self.multiworld.get_player_name(player)})'] = \
|
||||||
|
@ -1298,23 +1287,31 @@ class Spoiler():
|
||||||
|
|
||||||
self.locations = OrderedDict()
|
self.locations = OrderedDict()
|
||||||
listed_locations = set()
|
listed_locations = set()
|
||||||
|
lw_locations = []
|
||||||
|
dw_locations = []
|
||||||
|
cave_locations = []
|
||||||
|
for loc in self.multiworld.get_locations():
|
||||||
|
if loc.game == "A Link to the Past":
|
||||||
|
if loc not in listed_locations and loc.parent_region and \
|
||||||
|
loc.parent_region.type == LTTPRegionType.LightWorld and loc.show_in_spoiler:
|
||||||
|
lw_locations.append(loc)
|
||||||
|
elif loc not in listed_locations and loc.parent_region and \
|
||||||
|
loc.parent_region.type == LTTPRegionType.DarkWorld and loc.show_in_spoiler:
|
||||||
|
dw_locations.append(loc)
|
||||||
|
elif loc not in listed_locations and loc.parent_region and \
|
||||||
|
loc.parent_region.type == LTTPRegionType.Cave and loc.show_in_spoiler:
|
||||||
|
cave_locations.append(loc)
|
||||||
|
|
||||||
lw_locations = [loc for loc in self.multiworld.get_locations() if
|
|
||||||
loc not in listed_locations and loc.parent_region and loc.parent_region.type == RegionType.LightWorld and loc.show_in_spoiler]
|
|
||||||
self.locations['Light World'] = OrderedDict(
|
self.locations['Light World'] = OrderedDict(
|
||||||
[(str(location), str(location.item) if location.item is not None else 'Nothing') for location in
|
[(str(location), str(location.item) if location.item is not None else 'Nothing') for location in
|
||||||
lw_locations])
|
lw_locations])
|
||||||
listed_locations.update(lw_locations)
|
listed_locations.update(lw_locations)
|
||||||
|
|
||||||
dw_locations = [loc for loc in self.multiworld.get_locations() if
|
|
||||||
loc not in listed_locations and loc.parent_region and loc.parent_region.type == RegionType.DarkWorld and loc.show_in_spoiler]
|
|
||||||
self.locations['Dark World'] = OrderedDict(
|
self.locations['Dark World'] = OrderedDict(
|
||||||
[(str(location), str(location.item) if location.item is not None else 'Nothing') for location in
|
[(str(location), str(location.item) if location.item is not None else 'Nothing') for location in
|
||||||
dw_locations])
|
dw_locations])
|
||||||
listed_locations.update(dw_locations)
|
listed_locations.update(dw_locations)
|
||||||
|
|
||||||
cave_locations = [loc for loc in self.multiworld.get_locations() if
|
|
||||||
loc not in listed_locations and loc.parent_region and loc.parent_region.type == RegionType.Cave and loc.show_in_spoiler]
|
|
||||||
self.locations['Caves'] = OrderedDict(
|
self.locations['Caves'] = OrderedDict(
|
||||||
[(str(location), str(location.item) if location.item is not None else 'Nothing') for location in
|
[(str(location), str(location.item) if location.item is not None else 'Nothing') for location in
|
||||||
cave_locations])
|
cave_locations])
|
||||||
|
|
13
Main.py
13
Main.py
|
@ -9,8 +9,9 @@ import tempfile
|
||||||
import zipfile
|
import zipfile
|
||||||
from typing import Dict, List, Tuple, Optional, Set
|
from typing import Dict, List, Tuple, Optional, Set
|
||||||
|
|
||||||
from BaseClasses import Item, MultiWorld, CollectionState, Region, RegionType, LocationProgressType, Location
|
from BaseClasses import Item, MultiWorld, CollectionState, Region, LocationProgressType, Location
|
||||||
import worlds
|
import worlds
|
||||||
|
from worlds.alttp.SubClasses import LTTPRegionType
|
||||||
from worlds.alttp.Regions import is_main_entrance
|
from worlds.alttp.Regions import is_main_entrance
|
||||||
from Fill import distribute_items_restrictive, flood_items, balance_multiworld_progression, distribute_planned
|
from Fill import distribute_items_restrictive, flood_items, balance_multiworld_progression, distribute_planned
|
||||||
from worlds.alttp.Shops import FillDisabledShopSlots
|
from worlds.alttp.Shops import FillDisabledShopSlots
|
||||||
|
@ -191,7 +192,7 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No
|
||||||
new_item.classification |= classifications[item_name]
|
new_item.classification |= classifications[item_name]
|
||||||
new_itempool.append(new_item)
|
new_itempool.append(new_item)
|
||||||
|
|
||||||
region = Region("Menu", RegionType.Generic, "ItemLink", group_id, world)
|
region = Region("Menu", group_id, world, "ItemLink")
|
||||||
world.regions.append(region)
|
world.regions.append(region)
|
||||||
locations = region.locations = []
|
locations = region.locations = []
|
||||||
for item in world.itempool:
|
for item in world.itempool:
|
||||||
|
@ -290,13 +291,13 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No
|
||||||
'Inverted Ganons Tower': 'Ganons Tower'} \
|
'Inverted Ganons Tower': 'Ganons Tower'} \
|
||||||
.get(location.parent_region.dungeon.name, location.parent_region.dungeon.name)
|
.get(location.parent_region.dungeon.name, location.parent_region.dungeon.name)
|
||||||
checks_in_area[location.player][dungeonname].append(location.address)
|
checks_in_area[location.player][dungeonname].append(location.address)
|
||||||
elif location.parent_region.type == RegionType.LightWorld:
|
elif location.parent_region.type == LTTPRegionType.LightWorld:
|
||||||
checks_in_area[location.player]["Light World"].append(location.address)
|
checks_in_area[location.player]["Light World"].append(location.address)
|
||||||
elif location.parent_region.type == RegionType.DarkWorld:
|
elif location.parent_region.type == LTTPRegionType.DarkWorld:
|
||||||
checks_in_area[location.player]["Dark World"].append(location.address)
|
checks_in_area[location.player]["Dark World"].append(location.address)
|
||||||
elif main_entrance.parent_region.type == RegionType.LightWorld:
|
elif main_entrance.parent_region.type == LTTPRegionType.LightWorld:
|
||||||
checks_in_area[location.player]["Light World"].append(location.address)
|
checks_in_area[location.player]["Light World"].append(location.address)
|
||||||
elif main_entrance.parent_region.type == RegionType.DarkWorld:
|
elif main_entrance.parent_region.type == LTTPRegionType.DarkWorld:
|
||||||
checks_in_area[location.player]["Dark World"].append(location.address)
|
checks_in_area[location.player]["Dark World"].append(location.address)
|
||||||
checks_in_area[location.player]["Total"] += 1
|
checks_in_area[location.player]["Total"] += 1
|
||||||
|
|
||||||
|
|
|
@ -497,21 +497,21 @@ def create_items(self) -> None:
|
||||||
```python
|
```python
|
||||||
def create_regions(self) -> None:
|
def create_regions(self) -> None:
|
||||||
# Add regions to the multiworld. "Menu" is the required starting point.
|
# Add regions to the multiworld. "Menu" is the required starting point.
|
||||||
# Arguments to Region() are name, type, human_readable_name, player, world
|
# Arguments to Region() are name, player, world, and optionally hint_text
|
||||||
r = Region("Menu", RegionType.Generic, "Menu", self.player, self.multiworld)
|
r = Region("Menu", self.player, self.multiworld)
|
||||||
# Set Region.exits to a list of entrances that are reachable from region
|
# Set Region.exits to a list of entrances that are reachable from region
|
||||||
r.exits = [Entrance(self.player, "New game", r)] # or use r.exits.append
|
r.exits = [Entrance(self.player, "New game", r)] # or use r.exits.append
|
||||||
# Append region to MultiWorld's regions
|
# Append region to MultiWorld's regions
|
||||||
self.multiworld.regions.append(r) # or use += [r...]
|
self.multiworld.regions.append(r) # or use += [r...]
|
||||||
|
|
||||||
r = Region("Main Area", RegionType.Generic, "Main Area", self.player, self.multiworld)
|
r = Region("Main Area", self.player, self.multiworld)
|
||||||
# Add main area's locations to main area (all but final boss)
|
# Add main area's locations to main area (all but final boss)
|
||||||
r.locations = [MyGameLocation(self.player, location.name,
|
r.locations = [MyGameLocation(self.player, location.name,
|
||||||
self.location_name_to_id[location.name], r)]
|
self.location_name_to_id[location.name], r)]
|
||||||
r.exits = [Entrance(self.player, "Boss Door", r)]
|
r.exits = [Entrance(self.player, "Boss Door", r)]
|
||||||
self.multiworld.regions.append(r)
|
self.multiworld.regions.append(r)
|
||||||
|
|
||||||
r = Region("Boss Room", RegionType.Generic, "Boss Room", self.player, self.multiworld)
|
r = Region("Boss Room", self.player, self.multiworld)
|
||||||
# add event to Boss Room
|
# add event to Boss Room
|
||||||
r.locations = [MyGameLocation(self.player, "Final Boss", None, r)]
|
r.locations = [MyGameLocation(self.player, "Final Boss", None, r)]
|
||||||
self.multiworld.regions.append(r)
|
self.multiworld.regions.append(r)
|
||||||
|
|
|
@ -3,7 +3,7 @@ import unittest
|
||||||
from worlds.AutoWorld import World
|
from worlds.AutoWorld import World
|
||||||
from Fill import FillError, balance_multiworld_progression, fill_restrictive, \
|
from Fill import FillError, balance_multiworld_progression, fill_restrictive, \
|
||||||
distribute_early_items, distribute_items_restrictive
|
distribute_early_items, distribute_items_restrictive
|
||||||
from BaseClasses import Entrance, LocationProgressType, MultiWorld, Region, RegionType, Item, Location, \
|
from BaseClasses import Entrance, LocationProgressType, MultiWorld, Region, Item, Location, \
|
||||||
ItemClassification
|
ItemClassification
|
||||||
from worlds.generic.Rules import CollectionRule, add_item_rule, locality_rules, set_rule
|
from worlds.generic.Rules import CollectionRule, add_item_rule, locality_rules, set_rule
|
||||||
|
|
||||||
|
@ -17,8 +17,7 @@ def generate_multi_world(players: int = 1) -> MultiWorld:
|
||||||
multi_world.game[player_id] = f"Game {player_id}"
|
multi_world.game[player_id] = f"Game {player_id}"
|
||||||
multi_world.worlds[player_id] = world
|
multi_world.worlds[player_id] = world
|
||||||
multi_world.player_name[player_id] = "Test Player " + str(player_id)
|
multi_world.player_name[player_id] = "Test Player " + str(player_id)
|
||||||
region = Region("Menu", RegionType.Generic,
|
region = Region("Menu", player_id, multi_world, "Menu Region Hint")
|
||||||
"Menu Region Hint", player_id, multi_world)
|
|
||||||
multi_world.regions.append(region)
|
multi_world.regions.append(region)
|
||||||
|
|
||||||
multi_world.set_seed(0)
|
multi_world.set_seed(0)
|
||||||
|
@ -48,8 +47,7 @@ class PlayerDefinition(object):
|
||||||
def generate_region(self, parent: Region, size: int, access_rule: CollectionRule = lambda state: True) -> Region:
|
def generate_region(self, parent: Region, size: int, access_rule: CollectionRule = lambda state: True) -> Region:
|
||||||
region_tag = "_region" + str(len(self.regions))
|
region_tag = "_region" + str(len(self.regions))
|
||||||
region_name = "player" + str(self.id) + region_tag
|
region_name = "player" + str(self.id) + region_tag
|
||||||
region = Region("player" + str(self.id) + region_tag, RegionType.Generic,
|
region = Region("player" + str(self.id) + region_tag, self.id, self.multiworld)
|
||||||
"Region Hint", self.id, self.multiworld)
|
|
||||||
self.locations += generate_locations(size, self.id, None, region, region_tag)
|
self.locations += generate_locations(size, self.id, None, region, region_tag)
|
||||||
|
|
||||||
entrance = Entrance(self.id, region_name + "_entrance", parent)
|
entrance = Entrance(self.id, region_name + "_entrance", parent)
|
||||||
|
|
|
@ -1,313 +1,531 @@
|
||||||
import collections
|
import collections
|
||||||
from BaseClasses import RegionType
|
|
||||||
from worlds.alttp.Regions import create_lw_region, create_dw_region, create_cave_region, create_dungeon_region
|
from worlds.alttp.Regions import create_lw_region, create_dw_region, create_cave_region, create_dungeon_region
|
||||||
|
from worlds.alttp.SubClasses import LTTPRegionType
|
||||||
|
|
||||||
|
|
||||||
def create_inverted_regions(world, player):
|
def create_inverted_regions(world, player):
|
||||||
|
|
||||||
world.regions += [
|
world.regions += [
|
||||||
create_dw_region(player, 'Menu', None, ['Links House S&Q', 'Dark Sanctuary S&Q', 'Old Man S&Q', 'Castle Ledge S&Q']),
|
create_dw_region(world, player, 'Menu', None,
|
||||||
create_lw_region(player, 'Light World', ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure', 'Purple Chest', 'Bombos Tablet'],
|
['Links House S&Q', 'Dark Sanctuary S&Q', 'Old Man S&Q', 'Castle Ledge S&Q']),
|
||||||
|
create_lw_region(world, player, 'Light World',
|
||||||
|
['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure', 'Purple Chest',
|
||||||
|
'Bombos Tablet'],
|
||||||
["Blinds Hideout", "Hyrule Castle Secret Entrance Drop", 'Kings Grave Outer Rocks', 'Dam',
|
["Blinds Hideout", "Hyrule Castle Secret Entrance Drop", 'Kings Grave Outer Rocks', 'Dam',
|
||||||
'Inverted Big Bomb Shop', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut', 'Kakariko Well Drop', 'Kakariko Well Cave',
|
'Inverted Big Bomb Shop', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut',
|
||||||
'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump',
|
'Kakariko Well Drop', 'Kakariko Well Cave',
|
||||||
'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave', 'Lake Hylia Central Island Pier', 'Lake Hylia Island Pier', 'Lake Hylia Warp',
|
'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge',
|
||||||
'Bonk Rock Cave', 'Library', 'Two Brothers House (East)', 'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow',
|
'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump',
|
||||||
|
'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave',
|
||||||
|
'Lake Hylia Central Island Pier', 'Lake Hylia Island Pier', 'Lake Hylia Warp',
|
||||||
|
'Bonk Rock Cave', 'Library', 'Two Brothers House (East)', 'Desert Palace Stairs',
|
||||||
|
'Eastern Palace', 'Master Sword Meadow',
|
||||||
'Sanctuary', 'Sanctuary Grave', 'Death Mountain Entrance Rock', 'Light World River Drop',
|
'Sanctuary', 'Sanctuary Grave', 'Death Mountain Entrance Rock', 'Light World River Drop',
|
||||||
'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
|
'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop',
|
||||||
'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)',
|
'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
|
||||||
'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game',
|
'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave',
|
||||||
'East Dark World Mirror Spot', 'West Dark World Mirror Spot', 'South Dark World Mirror Spot', 'Cave 45', 'Checkerboard Cave', 'Mire Mirror Spot', 'Hammer Peg Area Mirror Spot',
|
'Cave Shop (Lake Hylia)',
|
||||||
'Shopping Mall Mirror Spot', 'Skull Woods Mirror Spot', 'Inverted Pyramid Entrance','Hyrule Castle Entrance (South)', 'Secret Passage Outer Bushes', 'Bush Covered Lawn Outer Bushes',
|
'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy',
|
||||||
|
'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller',
|
||||||
|
'Kakariko Gamble Game',
|
||||||
|
'East Dark World Mirror Spot', 'West Dark World Mirror Spot', 'South Dark World Mirror Spot',
|
||||||
|
'Cave 45', 'Checkerboard Cave', 'Mire Mirror Spot', 'Hammer Peg Area Mirror Spot',
|
||||||
|
'Shopping Mall Mirror Spot', 'Skull Woods Mirror Spot', 'Inverted Pyramid Entrance',
|
||||||
|
'Hyrule Castle Entrance (South)', 'Secret Passage Outer Bushes',
|
||||||
|
'Bush Covered Lawn Outer Bushes',
|
||||||
'Potion Shop Outer Bushes', 'Graveyard Cave Outer Bushes', 'Bomb Hut Outer Bushes']),
|
'Potion Shop Outer Bushes', 'Graveyard Cave Outer Bushes', 'Bomb Hut Outer Bushes']),
|
||||||
create_lw_region(player, 'Bush Covered Lawn', None, ['Bush Covered House', 'Bush Covered Lawn Inner Bushes', 'Bush Covered Lawn Mirror Spot']),
|
create_lw_region(world, player, 'Bush Covered Lawn', None,
|
||||||
create_lw_region(player, 'Bomb Hut Area', None, ['Light World Bomb Hut', 'Bomb Hut Inner Bushes', 'Bomb Hut Mirror Spot']),
|
['Bush Covered House', 'Bush Covered Lawn Inner Bushes', 'Bush Covered Lawn Mirror Spot']),
|
||||||
create_lw_region(player, 'Hyrule Castle Secret Entrance Area', None, ['Hyrule Castle Secret Entrance Stairs', 'Secret Passage Inner Bushes']),
|
create_lw_region(world, player, 'Bomb Hut Area', None,
|
||||||
create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop', 'Bumper Cave Entrance Mirror Spot']),
|
['Light World Bomb Hut', 'Bomb Hut Inner Bushes', 'Bomb Hut Mirror Spot']),
|
||||||
create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Island Mirror Spot']),
|
create_lw_region(world, player, 'Hyrule Castle Secret Entrance Area', None,
|
||||||
create_cave_region(player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top",
|
['Hyrule Castle Secret Entrance Stairs', 'Secret Passage Inner Bushes']),
|
||||||
"Blind\'s Hideout - Left",
|
create_lw_region(world, player, 'Death Mountain Entrance', None,
|
||||||
"Blind\'s Hideout - Right",
|
['Old Man Cave (West)', 'Death Mountain Entrance Drop', 'Bumper Cave Entrance Mirror Spot']),
|
||||||
"Blind\'s Hideout - Far Left",
|
create_lw_region(world, player, 'Lake Hylia Central Island', None,
|
||||||
"Blind\'s Hideout - Far Right"]),
|
['Capacity Upgrade', 'Lake Hylia Central Island Mirror Spot']),
|
||||||
create_lw_region(player, 'Northeast Light World', None, ['Zoras River', 'Waterfall of Wishing Cave', 'Potion Shop Outer Rock', 'Catfish Mirror Spot', 'Northeast Light World Warp']),
|
create_cave_region(world, player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top",
|
||||||
create_lw_region(player, 'Waterfall of Wishing Cave', None, ['Waterfall of Wishing', 'Northeast Light World Return']),
|
"Blind\'s Hideout - Left",
|
||||||
create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop', 'Potion Shop Inner Bushes', 'Potion Shop Inner Rock', 'Potion Shop Mirror Spot', 'Potion Shop River Drop']),
|
"Blind\'s Hideout - Right",
|
||||||
create_lw_region(player, 'Graveyard Cave Area', None, ['Graveyard Cave', 'Graveyard Cave Inner Bushes', 'Graveyard Cave Mirror Spot']),
|
"Blind\'s Hideout - Far Left",
|
||||||
create_lw_region(player, 'River', None, ['Light World Pier', 'Potion Shop Pier']),
|
"Blind\'s Hideout - Far Right"]),
|
||||||
create_cave_region(player, 'Hyrule Castle Secret Entrance', 'a drop\'s exit', ['Link\'s Uncle', 'Secret Passage'], ['Hyrule Castle Secret Entrance Exit']),
|
create_lw_region(world, player, 'Northeast Light World', None,
|
||||||
create_lw_region(player, 'Zoras River', ['King Zora', 'Zora\'s Ledge']),
|
['Zoras River', 'Waterfall of Wishing Cave', 'Potion Shop Outer Rock', 'Catfish Mirror Spot',
|
||||||
create_cave_region(player, 'Waterfall of Wishing', 'a cave with two chests', ['Waterfall Fairy - Left', 'Waterfall Fairy - Right']),
|
'Northeast Light World Warp']),
|
||||||
create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']),
|
create_lw_region(world, player, 'Waterfall of Wishing Cave', None,
|
||||||
create_cave_region(player, 'Kings Grave', 'a cave with a chest', ['King\'s Tomb']),
|
['Waterfall of Wishing', 'Northeast Light World Return']),
|
||||||
create_cave_region(player, 'North Fairy Cave', 'a drop\'s exit', None, ['North Fairy Cave Exit']),
|
create_lw_region(world, player, 'Potion Shop Area', None,
|
||||||
create_cave_region(player, 'Dam', 'the dam', ['Floodgate', 'Floodgate Chest']),
|
['Potion Shop', 'Potion Shop Inner Bushes', 'Potion Shop Inner Rock',
|
||||||
create_cave_region(player, 'Inverted Links House', 'your house', ['Link\'s House'], ['Inverted Links House Exit']),
|
'Potion Shop Mirror Spot', 'Potion Shop River Drop']),
|
||||||
create_cave_region(player, 'Chris Houlihan Room', 'I AM ERROR', None, ['Chris Houlihan Room Exit']),
|
create_lw_region(world, player, 'Graveyard Cave Area', None,
|
||||||
create_cave_region(player, 'Tavern', 'the tavern', ['Kakariko Tavern']),
|
['Graveyard Cave', 'Graveyard Cave Inner Bushes', 'Graveyard Cave Mirror Spot']),
|
||||||
create_cave_region(player, 'Elder House', 'a connector', None, ['Elder House Exit (East)', 'Elder House Exit (West)']),
|
create_lw_region(world, player, 'River', None, ['Light World Pier', 'Potion Shop Pier']),
|
||||||
create_cave_region(player, 'Snitch Lady (East)', 'a boring house'),
|
create_cave_region(world, player, 'Hyrule Castle Secret Entrance', 'a drop\'s exit',
|
||||||
create_cave_region(player, 'Snitch Lady (West)', 'a boring house'),
|
['Link\'s Uncle', 'Secret Passage'], ['Hyrule Castle Secret Entrance Exit']),
|
||||||
create_cave_region(player, 'Bush Covered House', 'the grass man'),
|
create_lw_region(world, player, 'Zoras River', ['King Zora', 'Zora\'s Ledge']),
|
||||||
create_cave_region(player, 'Tavern (Front)', 'the tavern'),
|
create_cave_region(world, player, 'Waterfall of Wishing', 'a cave with two chests',
|
||||||
create_cave_region(player, 'Light World Bomb Hut', 'a restock room'),
|
['Waterfall Fairy - Left', 'Waterfall Fairy - Right']),
|
||||||
create_cave_region(player, 'Kakariko Shop', 'a common shop'),
|
create_lw_region(world, player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']),
|
||||||
create_cave_region(player, 'Fortune Teller (Light)', 'a fortune teller'),
|
create_cave_region(world, player, 'Kings Grave', 'a cave with a chest', ['King\'s Tomb']),
|
||||||
create_cave_region(player, 'Lake Hylia Fortune Teller', 'a fortune teller'),
|
create_cave_region(world, player, 'North Fairy Cave', 'a drop\'s exit', None, ['North Fairy Cave Exit']),
|
||||||
create_cave_region(player, 'Lumberjack House', 'a boring house'),
|
create_cave_region(world, player, 'Dam', 'the dam', ['Floodgate', 'Floodgate Chest']),
|
||||||
create_cave_region(player, 'Bonk Fairy (Light)', 'a fairy fountain'),
|
create_cave_region(world, player, 'Inverted Links House', 'your house', ['Link\'s House'],
|
||||||
create_cave_region(player, 'Bonk Fairy (Dark)', 'a fairy fountain'),
|
['Inverted Links House Exit']),
|
||||||
create_cave_region(player, 'Lake Hylia Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Chris Houlihan Room', 'I AM ERROR', None, ['Chris Houlihan Room Exit']),
|
||||||
create_cave_region(player, 'Swamp Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Tavern', 'the tavern', ['Kakariko Tavern']),
|
||||||
create_cave_region(player, 'Desert Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Elder House', 'a connector', None,
|
||||||
create_cave_region(player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'),
|
['Elder House Exit (East)', 'Elder House Exit (West)']),
|
||||||
create_cave_region(player, 'Dark Lake Hylia Ledge Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Snitch Lady (East)', 'a boring house'),
|
||||||
create_cave_region(player, 'Dark Desert Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Snitch Lady (West)', 'a boring house'),
|
||||||
create_cave_region(player, 'Dark Death Mountain Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Bush Covered House', 'the grass man'),
|
||||||
create_cave_region(player, 'Chicken House', 'a house with a chest', ['Chicken House']),
|
create_cave_region(world, player, 'Tavern (Front)', 'the tavern'),
|
||||||
create_cave_region(player, 'Aginahs Cave', 'a cave with a chest', ['Aginah\'s Cave']),
|
create_cave_region(world, player, 'Light World Bomb Hut', 'a restock room'),
|
||||||
create_cave_region(player, 'Sahasrahlas Hut', 'Sahasrahla', ['Sahasrahla\'s Hut - Left', 'Sahasrahla\'s Hut - Middle', 'Sahasrahla\'s Hut - Right', 'Sahasrahla']),
|
create_cave_region(world, player, 'Kakariko Shop', 'a common shop'),
|
||||||
create_cave_region(player, 'Kakariko Well (top)', 'a drop\'s exit', ['Kakariko Well - Top', 'Kakariko Well - Left', 'Kakariko Well - Middle',
|
create_cave_region(world, player, 'Fortune Teller (Light)', 'a fortune teller'),
|
||||||
'Kakariko Well - Right', 'Kakariko Well - Bottom'], ['Kakariko Well (top to bottom)']),
|
create_cave_region(world, player, 'Lake Hylia Fortune Teller', 'a fortune teller'),
|
||||||
create_cave_region(player, 'Kakariko Well (bottom)', 'a drop\'s exit', None, ['Kakariko Well Exit']),
|
create_cave_region(world, player, 'Lumberjack House', 'a boring house'),
|
||||||
create_cave_region(player, 'Blacksmiths Hut', 'the smith', ['Blacksmith', 'Missing Smith']),
|
create_cave_region(world, player, 'Bonk Fairy (Light)', 'a fairy fountain'),
|
||||||
create_lw_region(player, 'Bat Cave Drop Ledge', None, ['Bat Cave Drop']),
|
create_cave_region(world, player, 'Bonk Fairy (Dark)', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Bat Cave (right)', 'a drop\'s exit', ['Magic Bat'], ['Bat Cave Door']),
|
create_cave_region(world, player, 'Lake Hylia Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Bat Cave (left)', 'a drop\'s exit', None, ['Bat Cave Exit']),
|
create_cave_region(world, player, 'Swamp Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Sick Kids House', 'the sick kid', ['Sick Kid']),
|
create_cave_region(world, player, 'Desert Healer Fairy', 'a fairy fountain'),
|
||||||
create_lw_region(player, 'Hobo Bridge', ['Hobo']),
|
create_cave_region(world, player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'], ['Lost Woods Hideout (top to bottom)']),
|
create_cave_region(world, player, 'Dark Lake Hylia Ledge Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Lost Woods Hideout (bottom)', 'a drop\'s exit', None, ['Lost Woods Hideout Exit']),
|
create_cave_region(world, player, 'Dark Desert Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Lumberjack Tree (top)', 'a drop\'s exit', ['Lumberjack Tree'], ['Lumberjack Tree (top to bottom)']),
|
create_cave_region(world, player, 'Dark Death Mountain Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Lumberjack Tree (bottom)', 'a drop\'s exit', None, ['Lumberjack Tree Exit']),
|
create_cave_region(world, player, 'Chicken House', 'a house with a chest', ['Chicken House']),
|
||||||
create_cave_region(player, 'Cave 45', 'a cave with an item', ['Cave 45']),
|
create_cave_region(world, player, 'Aginahs Cave', 'a cave with a chest', ['Aginah\'s Cave']),
|
||||||
create_cave_region(player, 'Graveyard Cave', 'a cave with an item', ['Graveyard Cave']),
|
create_cave_region(world, player, 'Sahasrahlas Hut', 'Sahasrahla',
|
||||||
create_cave_region(player, 'Checkerboard Cave', 'a cave with an item', ['Checkerboard Cave']),
|
['Sahasrahla\'s Hut - Left', 'Sahasrahla\'s Hut - Middle', 'Sahasrahla\'s Hut - Right',
|
||||||
create_cave_region(player, 'Long Fairy Cave', 'a fairy fountain'),
|
'Sahasrahla']),
|
||||||
create_cave_region(player, 'Mini Moldorm Cave', 'a bounty of five items', ['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right',
|
create_cave_region(world, player, 'Kakariko Well (top)', 'a drop\'s exit',
|
||||||
'Mini Moldorm Cave - Far Right', 'Mini Moldorm Cave - Generous Guy']),
|
['Kakariko Well - Top', 'Kakariko Well - Left', 'Kakariko Well - Middle',
|
||||||
create_cave_region(player, 'Ice Rod Cave', 'a cave with a chest', ['Ice Rod Cave']),
|
'Kakariko Well - Right', 'Kakariko Well - Bottom'], ['Kakariko Well (top to bottom)']),
|
||||||
create_cave_region(player, 'Good Bee Cave', 'a cold bee'),
|
create_cave_region(world, player, 'Kakariko Well (bottom)', 'a drop\'s exit', None, ['Kakariko Well Exit']),
|
||||||
create_cave_region(player, '20 Rupee Cave', 'a cave with some cash'),
|
create_cave_region(world, player, 'Blacksmiths Hut', 'the smith', ['Blacksmith', 'Missing Smith']),
|
||||||
create_cave_region(player, 'Cave Shop (Lake Hylia)', 'a common shop'),
|
create_lw_region(world, player, 'Bat Cave Drop Ledge', None, ['Bat Cave Drop']),
|
||||||
create_cave_region(player, 'Cave Shop (Dark Death Mountain)', 'a common shop'),
|
create_cave_region(world, player, 'Bat Cave (right)', 'a drop\'s exit', ['Magic Bat'], ['Bat Cave Door']),
|
||||||
create_cave_region(player, 'Bonk Rock Cave', 'a cave with a chest', ['Bonk Rock Cave']),
|
create_cave_region(world, player, 'Bat Cave (left)', 'a drop\'s exit', None, ['Bat Cave Exit']),
|
||||||
create_cave_region(player, 'Library', 'the library', ['Library']),
|
create_cave_region(world, player, 'Sick Kids House', 'the sick kid', ['Sick Kid']),
|
||||||
create_cave_region(player, 'Kakariko Gamble Game', 'a game of chance'),
|
create_lw_region(world, player, 'Hobo Bridge', ['Hobo']),
|
||||||
create_cave_region(player, 'Potion Shop', 'the potion shop', ['Potion Shop']),
|
create_cave_region(world, player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'],
|
||||||
create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island']),
|
['Lost Woods Hideout (top to bottom)']),
|
||||||
create_cave_region(player, 'Capacity Upgrade', 'the queen of fairies'),
|
create_cave_region(world, player, 'Lost Woods Hideout (bottom)', 'a drop\'s exit', None,
|
||||||
create_cave_region(player, 'Two Brothers House', 'a connector', None, ['Two Brothers House Exit (East)', 'Two Brothers House Exit (West)']),
|
['Lost Woods Hideout Exit']),
|
||||||
create_lw_region(player, 'Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)', 'Maze Race Mirror Spot']),
|
create_cave_region(world, player, 'Lumberjack Tree (top)', 'a drop\'s exit', ['Lumberjack Tree'],
|
||||||
create_cave_region(player, '50 Rupee Cave', 'a cave with some cash'),
|
['Lumberjack Tree (top to bottom)']),
|
||||||
create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)', 'Desert Ledge Drop']),
|
create_cave_region(world, player, 'Lumberjack Tree (bottom)', 'a drop\'s exit', None, ['Lumberjack Tree Exit']),
|
||||||
create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)', 'Desert Palace Stairs Mirror Spot']),
|
create_cave_region(world, player, 'Cave 45', 'a cave with an item', ['Cave 45']),
|
||||||
create_lw_region(player, 'Desert Palace Lone Stairs', None, ['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']),
|
create_cave_region(world, player, 'Graveyard Cave', 'a cave with an item', ['Graveyard Cave']),
|
||||||
create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks', 'Desert Palace North Mirror Spot']),
|
create_cave_region(world, player, 'Checkerboard Cave', 'a cave with an item', ['Checkerboard Cave']),
|
||||||
create_dungeon_region(player, 'Desert Palace Main (Outer)', 'Desert Palace', ['Desert Palace - Big Chest', 'Desert Palace - Torch', 'Desert Palace - Map Chest'],
|
create_cave_region(world, player, 'Long Fairy Cave', 'a fairy fountain'),
|
||||||
['Desert Palace Pots (Outer)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)', 'Desert Palace East Wing']),
|
create_cave_region(world, player, 'Mini Moldorm Cave', 'a bounty of five items',
|
||||||
create_dungeon_region(player, 'Desert Palace Main (Inner)', 'Desert Palace', None, ['Desert Palace Exit (South)', 'Desert Palace Pots (Inner)']),
|
['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right',
|
||||||
create_dungeon_region(player, 'Desert Palace East', 'Desert Palace', ['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']),
|
'Mini Moldorm Cave - Far Right', 'Mini Moldorm Cave - Generous Guy']),
|
||||||
create_dungeon_region(player, 'Desert Palace North', 'Desert Palace', ['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
|
create_cave_region(world, player, 'Ice Rod Cave', 'a cave with a chest', ['Ice Rod Cave']),
|
||||||
create_dungeon_region(player, 'Eastern Palace', 'Eastern Palace', ['Eastern Palace - Compass Chest', 'Eastern Palace - Big Chest', 'Eastern Palace - Cannonball Chest',
|
create_cave_region(world, player, 'Good Bee Cave', 'a cold bee'),
|
||||||
'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Boss', 'Eastern Palace - Prize'], ['Eastern Palace Exit']),
|
create_cave_region(world, player, '20 Rupee Cave', 'a cave with some cash'),
|
||||||
create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal']),
|
create_cave_region(world, player, 'Cave Shop (Lake Hylia)', 'a common shop'),
|
||||||
create_cave_region(player, 'Lost Woods Gamble', 'a game of chance'),
|
create_cave_region(world, player, 'Cave Shop (Dark Death Mountain)', 'a common shop'),
|
||||||
create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (East)', 'Hyrule Castle Entrance (West)', 'Inverted Ganons Tower', 'Hyrule Castle Ledge Courtyard Drop', 'Inverted Pyramid Hole']),
|
create_cave_region(world, player, 'Bonk Rock Cave', 'a cave with a chest', ['Bonk Rock Cave']),
|
||||||
create_dungeon_region(player, 'Hyrule Castle', 'Hyrule Castle', ['Hyrule Castle - Boomerang Chest', 'Hyrule Castle - Map Chest', 'Hyrule Castle - Zelda\'s Chest'],
|
create_cave_region(world, player, 'Library', 'the library', ['Library']),
|
||||||
['Hyrule Castle Exit (East)', 'Hyrule Castle Exit (West)', 'Hyrule Castle Exit (South)', 'Throne Room']),
|
create_cave_region(world, player, 'Kakariko Gamble Game', 'a game of chance'),
|
||||||
create_dungeon_region(player, 'Sewer Drop', 'a drop\'s exit', None, ['Sewer Drop']), # This exists only to be referenced for access checks
|
create_cave_region(world, player, 'Potion Shop', 'the potion shop', ['Potion Shop']),
|
||||||
create_dungeon_region(player, 'Sewers (Dark)', 'a drop\'s exit', ['Sewers - Dark Cross'], ['Sewers Door']),
|
create_lw_region(world, player, 'Lake Hylia Island', ['Lake Hylia Island']),
|
||||||
create_dungeon_region(player, 'Sewers', 'a drop\'s exit', ['Sewers - Secret Room - Left', 'Sewers - Secret Room - Middle',
|
create_cave_region(world, player, 'Capacity Upgrade', 'the queen of fairies'),
|
||||||
'Sewers - Secret Room - Right'], ['Sanctuary Push Door', 'Sewers Back Door']),
|
create_cave_region(world, player, 'Two Brothers House', 'a connector', None,
|
||||||
create_dungeon_region(player, 'Sanctuary', 'a drop\'s exit', ['Sanctuary'], ['Sanctuary Exit']),
|
['Two Brothers House Exit (East)', 'Two Brothers House Exit (West)']),
|
||||||
create_dungeon_region(player, 'Inverted Agahnims Tower', 'Castle Tower', ['Castle Tower - Room 03', 'Castle Tower - Dark Maze'], ['Agahnim 1', 'Inverted Agahnims Tower Exit']),
|
create_lw_region(world, player, 'Maze Race Ledge', ['Maze Race'],
|
||||||
create_dungeon_region(player, 'Agahnim 1', 'Castle Tower', ['Agahnim 1'], None),
|
['Two Brothers House (West)', 'Maze Race Mirror Spot']),
|
||||||
create_cave_region(player, 'Old Man Cave', 'a connector', ['Old Man'], ['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']),
|
create_cave_region(world, player, '50 Rupee Cave', 'a cave with some cash'),
|
||||||
create_cave_region(player, 'Old Man House', 'a connector', None, ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']),
|
create_lw_region(world, player, 'Desert Ledge', ['Desert Ledge'],
|
||||||
create_cave_region(player, 'Old Man House Back', 'a connector', None, ['Old Man House Exit (Top)', 'Old Man House Back to Front']),
|
['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)',
|
||||||
create_lw_region(player, 'Death Mountain', None, ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)', 'Death Mountain Return Cave (East)', 'Spectacle Rock Cave',
|
'Desert Ledge Drop']),
|
||||||
'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'Broken Bridge (West)', 'Death Mountain Mirror Spot']),
|
create_lw_region(world, player, 'Desert Palace Stairs', None,
|
||||||
create_cave_region(player, 'Death Mountain Return Cave', 'a connector', None, ['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']),
|
['Desert Palace Entrance (South)', 'Desert Palace Stairs Mirror Spot']),
|
||||||
create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)', 'Bumper Cave Ledge Mirror Spot']),
|
create_lw_region(world, player, 'Desert Palace Lone Stairs', None,
|
||||||
create_cave_region(player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'], ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']),
|
['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']),
|
||||||
create_cave_region(player, 'Spectacle Rock Cave (Bottom)', 'a connector', None, ['Spectacle Rock Cave Exit']),
|
create_lw_region(world, player, 'Desert Palace Entrance (North) Spot', None,
|
||||||
create_cave_region(player, 'Spectacle Rock Cave (Peak)', 'a connector', None, ['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']),
|
['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks',
|
||||||
create_lw_region(player, 'East Death Mountain (Bottom)', None, ['Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'East Death Mountain Mirror Spot (Bottom)', 'Hookshot Fairy',
|
'Desert Palace North Mirror Spot']),
|
||||||
'Fairy Ascension Rocks', 'Spiral Cave (Bottom)']),
|
create_dungeon_region(world, player, 'Desert Palace Main (Outer)', 'Desert Palace',
|
||||||
create_cave_region(player, 'Hookshot Fairy', 'fairies deep in a cave'),
|
['Desert Palace - Big Chest', 'Desert Palace - Torch', 'Desert Palace - Map Chest'],
|
||||||
create_cave_region(player, 'Paradox Cave Front', 'a connector', None, ['Paradox Cave Push Block Reverse', 'Paradox Cave Exit (Bottom)', 'Light World Death Mountain Shop']),
|
['Desert Palace Pots (Outer)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)',
|
||||||
create_cave_region(player, 'Paradox Cave Chest Area', 'a connector', ['Paradox Cave Lower - Far Left',
|
'Desert Palace East Wing']),
|
||||||
'Paradox Cave Lower - Left',
|
create_dungeon_region(world, player, 'Desert Palace Main (Inner)', 'Desert Palace', None,
|
||||||
'Paradox Cave Lower - Right',
|
['Desert Palace Exit (South)', 'Desert Palace Pots (Inner)']),
|
||||||
'Paradox Cave Lower - Far Right',
|
create_dungeon_region(world, player, 'Desert Palace East', 'Desert Palace',
|
||||||
'Paradox Cave Lower - Middle',
|
['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']),
|
||||||
'Paradox Cave Upper - Left',
|
create_dungeon_region(world, player, 'Desert Palace North', 'Desert Palace',
|
||||||
'Paradox Cave Upper - Right'],
|
['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
|
||||||
|
create_dungeon_region(world, player, 'Eastern Palace', 'Eastern Palace',
|
||||||
|
['Eastern Palace - Compass Chest', 'Eastern Palace - Big Chest',
|
||||||
|
'Eastern Palace - Cannonball Chest',
|
||||||
|
'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Boss',
|
||||||
|
'Eastern Palace - Prize'], ['Eastern Palace Exit']),
|
||||||
|
create_lw_region(world, player, 'Master Sword Meadow', ['Master Sword Pedestal']),
|
||||||
|
create_cave_region(world, player, 'Lost Woods Gamble', 'a game of chance'),
|
||||||
|
create_lw_region(world, player, 'Hyrule Castle Ledge', None,
|
||||||
|
['Hyrule Castle Entrance (East)', 'Hyrule Castle Entrance (West)', 'Inverted Ganons Tower',
|
||||||
|
'Hyrule Castle Ledge Courtyard Drop', 'Inverted Pyramid Hole']),
|
||||||
|
create_dungeon_region(world, player, 'Hyrule Castle', 'Hyrule Castle',
|
||||||
|
['Hyrule Castle - Boomerang Chest', 'Hyrule Castle - Map Chest',
|
||||||
|
'Hyrule Castle - Zelda\'s Chest'],
|
||||||
|
['Hyrule Castle Exit (East)', 'Hyrule Castle Exit (West)', 'Hyrule Castle Exit (South)',
|
||||||
|
'Throne Room']),
|
||||||
|
create_dungeon_region(world, player, 'Sewer Drop', 'a drop\'s exit', None, ['Sewer Drop']), # This exists only to be referenced for access checks
|
||||||
|
create_dungeon_region(world, player, 'Sewers (Dark)', 'a drop\'s exit', ['Sewers - Dark Cross'],
|
||||||
|
['Sewers Door']),
|
||||||
|
create_dungeon_region(world, player, 'Sewers', 'a drop\'s exit',
|
||||||
|
['Sewers - Secret Room - Left', 'Sewers - Secret Room - Middle',
|
||||||
|
'Sewers - Secret Room - Right'], ['Sanctuary Push Door', 'Sewers Back Door']),
|
||||||
|
create_dungeon_region(world, player, 'Sanctuary', 'a drop\'s exit', ['Sanctuary'], ['Sanctuary Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Inverted Agahnims Tower', 'Castle Tower',
|
||||||
|
['Castle Tower - Room 03', 'Castle Tower - Dark Maze'],
|
||||||
|
['Agahnim 1', 'Inverted Agahnims Tower Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Agahnim 1', 'Castle Tower', ['Agahnim 1'], None),
|
||||||
|
create_cave_region(world, player, 'Old Man Cave', 'a connector', ['Old Man'],
|
||||||
|
['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']),
|
||||||
|
create_cave_region(world, player, 'Old Man House', 'a connector', None,
|
||||||
|
['Old Man House Exit (Bottom)', 'Old Man House Front to Back']),
|
||||||
|
create_cave_region(world, player, 'Old Man House Back', 'a connector', None,
|
||||||
|
['Old Man House Exit (Top)', 'Old Man House Back to Front']),
|
||||||
|
create_lw_region(world, player, 'Death Mountain', None,
|
||||||
|
['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)',
|
||||||
|
'Death Mountain Return Cave (East)', 'Spectacle Rock Cave',
|
||||||
|
'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'Broken Bridge (West)',
|
||||||
|
'Death Mountain Mirror Spot']),
|
||||||
|
create_cave_region(world, player, 'Death Mountain Return Cave', 'a connector', None,
|
||||||
|
['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']),
|
||||||
|
create_lw_region(world, player, 'Death Mountain Return Ledge', None,
|
||||||
|
['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)',
|
||||||
|
'Bumper Cave Ledge Mirror Spot']),
|
||||||
|
create_cave_region(world, player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'],
|
||||||
|
['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']),
|
||||||
|
create_cave_region(world, player, 'Spectacle Rock Cave (Bottom)', 'a connector', None,
|
||||||
|
['Spectacle Rock Cave Exit']),
|
||||||
|
create_cave_region(world, player, 'Spectacle Rock Cave (Peak)', 'a connector', None,
|
||||||
|
['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']),
|
||||||
|
create_lw_region(world, player, 'East Death Mountain (Bottom)', None,
|
||||||
|
['Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)',
|
||||||
|
'East Death Mountain Mirror Spot (Bottom)', 'Hookshot Fairy',
|
||||||
|
'Fairy Ascension Rocks', 'Spiral Cave (Bottom)']),
|
||||||
|
create_cave_region(world, player, 'Hookshot Fairy', 'fairies deep in a cave'),
|
||||||
|
create_cave_region(world, player, 'Paradox Cave Front', 'a connector', None,
|
||||||
|
['Paradox Cave Push Block Reverse', 'Paradox Cave Exit (Bottom)',
|
||||||
|
'Light World Death Mountain Shop']),
|
||||||
|
create_cave_region(world, player, 'Paradox Cave Chest Area', 'a connector', ['Paradox Cave Lower - Far Left',
|
||||||
|
'Paradox Cave Lower - Left',
|
||||||
|
'Paradox Cave Lower - Right',
|
||||||
|
'Paradox Cave Lower - Far Right',
|
||||||
|
'Paradox Cave Lower - Middle',
|
||||||
|
'Paradox Cave Upper - Left',
|
||||||
|
'Paradox Cave Upper - Right'],
|
||||||
['Paradox Cave Push Block', 'Paradox Cave Bomb Jump']),
|
['Paradox Cave Push Block', 'Paradox Cave Bomb Jump']),
|
||||||
create_cave_region(player, 'Paradox Cave', 'a connector', None, ['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']),
|
create_cave_region(world, player, 'Paradox Cave', 'a connector', None,
|
||||||
create_cave_region(player, 'Light World Death Mountain Shop', 'a common shop'),
|
['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']),
|
||||||
create_lw_region(player, 'East Death Mountain (Top)', ['Floating Island'], ['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access', 'East Death Mountain Drop', 'East Death Mountain Mirror Spot (Top)', 'Fairy Ascension Ledge Access', 'Mimic Cave Ledge Access',
|
create_cave_region(world, player, 'Light World Death Mountain Shop', 'a common shop'),
|
||||||
'Floating Island Mirror Spot']),
|
create_lw_region(world, player, 'East Death Mountain (Top)', ['Floating Island'],
|
||||||
create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (West)']),
|
['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access',
|
||||||
create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave', 'Mimic Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (East)']),
|
'East Death Mountain Drop', 'East Death Mountain Mirror Spot (Top)',
|
||||||
create_cave_region(player, 'Spiral Cave (Top)', 'a connector', ['Spiral Cave'], ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
|
'Fairy Ascension Ledge Access', 'Mimic Cave Ledge Access',
|
||||||
create_cave_region(player, 'Spiral Cave (Bottom)', 'a connector', None, ['Spiral Cave Exit']),
|
'Floating Island Mirror Spot']),
|
||||||
create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Drop', 'Fairy Ascension Cave (Bottom)']),
|
create_lw_region(world, player, 'Spiral Cave Ledge', None,
|
||||||
create_cave_region(player, 'Fairy Ascension Cave (Bottom)', 'a connector', None, ['Fairy Ascension Cave Climb', 'Fairy Ascension Cave Exit (Bottom)']),
|
['Spiral Cave', 'Spiral Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (West)']),
|
||||||
create_cave_region(player, 'Fairy Ascension Cave (Drop)', 'a connector', None, ['Fairy Ascension Cave Pots']),
|
create_lw_region(world, player, 'Mimic Cave Ledge', None,
|
||||||
create_cave_region(player, 'Fairy Ascension Cave (Top)', 'a connector', None, ['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Drop']),
|
['Mimic Cave', 'Mimic Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (East)']),
|
||||||
create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)', 'Laser Bridge Mirror Spot']),
|
create_cave_region(world, player, 'Spiral Cave (Top)', 'a connector', ['Spiral Cave'],
|
||||||
create_lw_region(player, 'Death Mountain (Top)', ['Ether Tablet', 'Spectacle Rock'], ['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop', 'Death Mountain (Top) Mirror Spot']),
|
['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
|
||||||
create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)']),
|
create_cave_region(world, player, 'Spiral Cave (Bottom)', 'a connector', None, ['Spiral Cave Exit']),
|
||||||
create_dungeon_region(player, 'Tower of Hera (Bottom)', 'Tower of Hera', ['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'], ['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
|
create_lw_region(world, player, 'Fairy Ascension Plateau', None,
|
||||||
create_dungeon_region(player, 'Tower of Hera (Basement)', 'Tower of Hera', ['Tower of Hera - Big Key Chest']),
|
['Fairy Ascension Drop', 'Fairy Ascension Cave (Bottom)']),
|
||||||
create_dungeon_region(player, 'Tower of Hera (Top)', 'Tower of Hera', ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss', 'Tower of Hera - Prize']),
|
create_cave_region(world, player, 'Fairy Ascension Cave (Bottom)', 'a connector', None,
|
||||||
|
['Fairy Ascension Cave Climb', 'Fairy Ascension Cave Exit (Bottom)']),
|
||||||
|
create_cave_region(world, player, 'Fairy Ascension Cave (Drop)', 'a connector', None,
|
||||||
|
['Fairy Ascension Cave Pots']),
|
||||||
|
create_cave_region(world, player, 'Fairy Ascension Cave (Top)', 'a connector', None,
|
||||||
|
['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Drop']),
|
||||||
|
create_lw_region(world, player, 'Fairy Ascension Ledge', None,
|
||||||
|
['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)', 'Laser Bridge Mirror Spot']),
|
||||||
|
create_lw_region(world, player, 'Death Mountain (Top)', ['Ether Tablet', 'Spectacle Rock'],
|
||||||
|
['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop',
|
||||||
|
'Death Mountain (Top) Mirror Spot']),
|
||||||
|
create_dw_region(world, player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'],
|
||||||
|
['Bumper Cave Ledge Drop', 'Bumper Cave (Top)']),
|
||||||
|
create_dungeon_region(world, player, 'Tower of Hera (Bottom)', 'Tower of Hera',
|
||||||
|
['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'],
|
||||||
|
['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Tower of Hera (Basement)', 'Tower of Hera',
|
||||||
|
['Tower of Hera - Big Key Chest']),
|
||||||
|
create_dungeon_region(world, player, 'Tower of Hera (Top)', 'Tower of Hera',
|
||||||
|
['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss',
|
||||||
|
'Tower of Hera - Prize']),
|
||||||
|
|
||||||
create_dw_region(player, 'East Dark World', ['Pyramid'], ['Pyramid Fairy', 'South Dark World Bridge', 'Palace of Darkness', 'Dark Lake Hylia Drop (East)',
|
create_dw_region(world, player, 'East Dark World', ['Pyramid'],
|
||||||
'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint', 'Northeast Dark World Broken Bridge Pass', 'East Dark World Teleporter', 'EDW Flute']),
|
['Pyramid Fairy', 'South Dark World Bridge', 'Palace of Darkness',
|
||||||
create_dw_region(player, 'Catfish', ['Catfish'], ['Catfish Exit Rock']),
|
'Dark Lake Hylia Drop (East)',
|
||||||
create_dw_region(player, 'Northeast Dark World', None, ['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass', 'NEDW Flute', 'Dark Lake Hylia Teleporter', 'Catfish Entrance Rock']),
|
'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint',
|
||||||
create_cave_region(player, 'Palace of Darkness Hint', 'a storyteller'),
|
'Northeast Dark World Broken Bridge Pass', 'East Dark World Teleporter', 'EDW Flute']),
|
||||||
create_cave_region(player, 'East Dark World Hint', 'a storyteller'),
|
create_dw_region(world, player, 'Catfish', ['Catfish'], ['Catfish Exit Rock']),
|
||||||
create_dw_region(player, 'South Dark World', ['Stumpy', 'Digging Game'], ['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock', 'East Dark World Bridge', 'Inverted Links House', 'Archery Game', 'Bonk Fairy (Dark)',
|
create_dw_region(world, player, 'Northeast Dark World', None,
|
||||||
'Dark Lake Hylia Shop', 'South Dark World Teleporter', 'Post Aga Teleporter', 'SDW Flute']),
|
['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass',
|
||||||
create_cave_region(player, 'Inverted Big Bomb Shop', 'the bomb shop'),
|
'NEDW Flute', 'Dark Lake Hylia Teleporter', 'Catfish Entrance Rock']),
|
||||||
create_cave_region(player, 'Archery Game', 'a game of skill'),
|
create_cave_region(world, player, 'Palace of Darkness Hint', 'a storyteller'),
|
||||||
create_dw_region(player, 'Dark Lake Hylia', None, ['East Dark World Pier', 'Dark Lake Hylia Ledge Pier', 'Ice Palace Missing Wall']),
|
create_cave_region(world, player, 'East Dark World Hint', 'a storyteller'),
|
||||||
create_dw_region(player, 'Dark Lake Hylia Central Island', None, ['Dark Lake Hylia Shallows', 'Ice Palace', 'Dark Lake Hylia Central Island Teleporter']),
|
create_dw_region(world, player, 'South Dark World', ['Stumpy', 'Digging Game'],
|
||||||
create_dw_region(player, 'Dark Lake Hylia Ledge', None, ['Dark Lake Hylia Ledge Drop', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave', 'DLHL Flute']),
|
['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock',
|
||||||
create_cave_region(player, 'Dark Lake Hylia Ledge Hint', 'a storyteller'),
|
'East Dark World Bridge', 'Inverted Links House', 'Archery Game', 'Bonk Fairy (Dark)',
|
||||||
create_cave_region(player, 'Dark Lake Hylia Ledge Spike Cave', 'a spiky hint'),
|
'Dark Lake Hylia Shop', 'South Dark World Teleporter', 'Post Aga Teleporter', 'SDW Flute']),
|
||||||
create_cave_region(player, 'Hype Cave', 'a bounty of five items', ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
|
create_cave_region(world, player, 'Inverted Big Bomb Shop', 'the bomb shop'),
|
||||||
'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
|
create_cave_region(world, player, 'Archery Game', 'a game of skill'),
|
||||||
create_dw_region(player, 'West Dark World', ['Frog', 'Flute Activation Spot'], ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House', 'Chest Game', 'Thieves Town', 'Bumper Cave Entrance Rock',
|
create_dw_region(world, player, 'Dark Lake Hylia', None,
|
||||||
'Skull Woods Forest', 'Village of Outcasts Pegs', 'Village of Outcasts Eastern Rocks', 'Red Shield Shop', 'Inverted Dark Sanctuary', 'Fortune Teller (Dark)', 'Dark World Lumberjack Shop',
|
['East Dark World Pier', 'Dark Lake Hylia Ledge Pier', 'Ice Palace Missing Wall']),
|
||||||
'West Dark World Teleporter', 'WDW Flute']),
|
create_dw_region(world, player, 'Dark Lake Hylia Central Island', None,
|
||||||
create_dw_region(player, 'Dark Grassy Lawn', None, ['Grassy Lawn Pegs', 'Village of Outcasts Shop', 'Dark Grassy Lawn Flute']),
|
['Dark Lake Hylia Shallows', 'Ice Palace', 'Dark Lake Hylia Central Island Teleporter']),
|
||||||
create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Dark World Hammer Peg Cave', 'Peg Area Rocks', 'Hammer Peg Area Flute']),
|
create_dw_region(world, player, 'Dark Lake Hylia Ledge', None,
|
||||||
create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Drop']),
|
['Dark Lake Hylia Ledge Drop', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint',
|
||||||
create_cave_region(player, 'Fortune Teller (Dark)', 'a fortune teller'),
|
'Dark Lake Hylia Ledge Spike Cave', 'DLHL Flute']),
|
||||||
create_cave_region(player, 'Village of Outcasts Shop', 'a common shop'),
|
create_cave_region(world, player, 'Dark Lake Hylia Ledge Hint', 'a storyteller'),
|
||||||
create_cave_region(player, 'Dark Lake Hylia Shop', 'a common shop'),
|
create_cave_region(world, player, 'Dark Lake Hylia Ledge Spike Cave', 'a spiky hint'),
|
||||||
create_cave_region(player, 'Dark World Lumberjack Shop', 'a common shop'),
|
create_cave_region(world, player, 'Hype Cave', 'a bounty of five items',
|
||||||
create_cave_region(player, 'Dark World Potion Shop', 'a common shop'),
|
['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
|
||||||
create_cave_region(player, 'Dark World Hammer Peg Cave', 'a cave with an item', ['Peg Cave']),
|
'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
|
||||||
create_cave_region(player, 'Pyramid Fairy', 'a cave with two chests', ['Pyramid Fairy - Left', 'Pyramid Fairy - Right']),
|
create_dw_region(world, player, 'West Dark World', ['Frog', 'Flute Activation Spot'],
|
||||||
create_cave_region(player, 'Brewery', 'a house with a chest', ['Brewery']),
|
['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House',
|
||||||
create_cave_region(player, 'C-Shaped House', 'a house with a chest', ['C-Shaped House']),
|
'Chest Game', 'Thieves Town', 'Bumper Cave Entrance Rock',
|
||||||
create_cave_region(player, 'Chest Game', 'a game of 16 chests', ['Chest Game']),
|
'Skull Woods Forest', 'Village of Outcasts Pegs', 'Village of Outcasts Eastern Rocks',
|
||||||
create_cave_region(player, 'Red Shield Shop', 'the rare shop'),
|
'Red Shield Shop', 'Inverted Dark Sanctuary', 'Fortune Teller (Dark)',
|
||||||
create_cave_region(player, 'Inverted Dark Sanctuary', 'a storyteller', None, ['Inverted Dark Sanctuary Exit']),
|
'Dark World Lumberjack Shop',
|
||||||
create_cave_region(player, 'Bumper Cave', 'a connector', None, ['Bumper Cave Exit (Bottom)', 'Bumper Cave Exit (Top)']),
|
'West Dark World Teleporter', 'WDW Flute']),
|
||||||
create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)',
|
create_dw_region(world, player, 'Dark Grassy Lawn', None,
|
||||||
'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']),
|
['Grassy Lawn Pegs', 'Village of Outcasts Shop', 'Dark Grassy Lawn Flute']),
|
||||||
create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section']),
|
create_dw_region(world, player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'],
|
||||||
create_dw_region(player, 'Dark Desert', None, ['Misery Mire', 'Mire Shed', 'Dark Desert Hint', 'Dark Desert Fairy', 'DD Flute']),
|
['Dark World Hammer Peg Cave', 'Peg Area Rocks', 'Hammer Peg Area Flute']),
|
||||||
create_dw_region(player, 'Dark Desert Ledge', None, ['Dark Desert Drop', 'Dark Desert Teleporter']),
|
create_dw_region(world, player, 'Bumper Cave Entrance', None,
|
||||||
create_cave_region(player, 'Mire Shed', 'a cave with two chests', ['Mire Shed - Left', 'Mire Shed - Right']),
|
['Bumper Cave (Bottom)', 'Bumper Cave Entrance Drop']),
|
||||||
create_cave_region(player, 'Dark Desert Hint', 'a storyteller'),
|
create_cave_region(world, player, 'Fortune Teller (Dark)', 'a fortune teller'),
|
||||||
create_dw_region(player, 'Dark Death Mountain', None, ['Dark Death Mountain Drop (East)', 'Inverted Agahnims Tower', 'Superbunny Cave (Top)', 'Hookshot Cave', 'Turtle Rock',
|
create_cave_region(world, player, 'Village of Outcasts Shop', 'a common shop'),
|
||||||
'Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Teleporter (West)', 'Turtle Rock Tail Drop', 'DDM Flute']),
|
create_cave_region(world, player, 'Dark Lake Hylia Shop', 'a common shop'),
|
||||||
create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)']),
|
create_cave_region(world, player, 'Dark World Lumberjack Shop', 'a common shop'),
|
||||||
create_dw_region(player, 'Turtle Rock (Top)', None, ['Dark Death Mountain Teleporter (East)', 'Turtle Rock Drop']),
|
create_cave_region(world, player, 'Dark World Potion Shop', 'a common shop'),
|
||||||
create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance']),
|
create_cave_region(world, player, 'Dark World Hammer Peg Cave', 'a cave with an item', ['Peg Cave']),
|
||||||
create_dw_region(player, 'Dark Death Mountain (East Bottom)', None, ['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)', 'Dark Death Mountain Teleporter (East Bottom)', 'EDDM Flute']),
|
create_cave_region(world, player, 'Pyramid Fairy', 'a cave with two chests',
|
||||||
create_cave_region(player, 'Superbunny Cave (Top)', 'a connector', ['Superbunny Cave - Top', 'Superbunny Cave - Bottom'], ['Superbunny Cave Exit (Top)']),
|
['Pyramid Fairy - Left', 'Pyramid Fairy - Right']),
|
||||||
create_cave_region(player, 'Superbunny Cave (Bottom)', 'a connector', None, ['Superbunny Cave Climb', 'Superbunny Cave Exit (Bottom)']),
|
create_cave_region(world, player, 'Brewery', 'a house with a chest', ['Brewery']),
|
||||||
create_cave_region(player, 'Spike Cave', 'Spike Cave', ['Spike Cave']),
|
create_cave_region(world, player, 'C-Shaped House', 'a house with a chest', ['C-Shaped House']),
|
||||||
create_cave_region(player, 'Hookshot Cave', 'a connector', ['Hookshot Cave - Top Right', 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right', 'Hookshot Cave - Bottom Left'],
|
create_cave_region(world, player, 'Chest Game', 'a game of 16 chests', ['Chest Game']),
|
||||||
|
create_cave_region(world, player, 'Red Shield Shop', 'the rare shop'),
|
||||||
|
create_cave_region(world, player, 'Inverted Dark Sanctuary', 'a storyteller', None,
|
||||||
|
['Inverted Dark Sanctuary Exit']),
|
||||||
|
create_cave_region(world, player, 'Bumper Cave', 'a connector', None,
|
||||||
|
['Bumper Cave Exit (Bottom)', 'Bumper Cave Exit (Top)']),
|
||||||
|
create_dw_region(world, player, 'Skull Woods Forest', None,
|
||||||
|
['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)',
|
||||||
|
'Skull Woods First Section Hole (North)',
|
||||||
|
'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']),
|
||||||
|
create_dw_region(world, player, 'Skull Woods Forest (West)', None,
|
||||||
|
['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)',
|
||||||
|
'Skull Woods Final Section']),
|
||||||
|
create_dw_region(world, player, 'Dark Desert', None,
|
||||||
|
['Misery Mire', 'Mire Shed', 'Dark Desert Hint', 'Dark Desert Fairy', 'DD Flute']),
|
||||||
|
create_dw_region(world, player, 'Dark Desert Ledge', None, ['Dark Desert Drop', 'Dark Desert Teleporter']),
|
||||||
|
create_cave_region(world, player, 'Mire Shed', 'a cave with two chests',
|
||||||
|
['Mire Shed - Left', 'Mire Shed - Right']),
|
||||||
|
create_cave_region(world, player, 'Dark Desert Hint', 'a storyteller'),
|
||||||
|
create_dw_region(world, player, 'Dark Death Mountain', None,
|
||||||
|
['Dark Death Mountain Drop (East)', 'Inverted Agahnims Tower', 'Superbunny Cave (Top)',
|
||||||
|
'Hookshot Cave', 'Turtle Rock',
|
||||||
|
'Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Teleporter (West)',
|
||||||
|
'Turtle Rock Tail Drop', 'DDM Flute']),
|
||||||
|
create_dw_region(world, player, 'Dark Death Mountain Ledge', None,
|
||||||
|
['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)']),
|
||||||
|
create_dw_region(world, player, 'Turtle Rock (Top)', None,
|
||||||
|
['Dark Death Mountain Teleporter (East)', 'Turtle Rock Drop']),
|
||||||
|
create_dw_region(world, player, 'Dark Death Mountain Isolated Ledge', None,
|
||||||
|
['Turtle Rock Isolated Ledge Entrance']),
|
||||||
|
create_dw_region(world, player, 'Dark Death Mountain (East Bottom)', None,
|
||||||
|
['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)',
|
||||||
|
'Dark Death Mountain Teleporter (East Bottom)', 'EDDM Flute']),
|
||||||
|
create_cave_region(world, player, 'Superbunny Cave (Top)', 'a connector',
|
||||||
|
['Superbunny Cave - Top', 'Superbunny Cave - Bottom'], ['Superbunny Cave Exit (Top)']),
|
||||||
|
create_cave_region(world, player, 'Superbunny Cave (Bottom)', 'a connector', None,
|
||||||
|
['Superbunny Cave Climb', 'Superbunny Cave Exit (Bottom)']),
|
||||||
|
create_cave_region(world, player, 'Spike Cave', 'Spike Cave', ['Spike Cave']),
|
||||||
|
create_cave_region(world, player, 'Hookshot Cave', 'a connector',
|
||||||
|
['Hookshot Cave - Top Right', 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right',
|
||||||
|
'Hookshot Cave - Bottom Left'],
|
||||||
['Hookshot Cave Exit (South)', 'Hookshot Cave Exit (North)']),
|
['Hookshot Cave Exit (South)', 'Hookshot Cave Exit (North)']),
|
||||||
create_dw_region(player, 'Death Mountain Floating Island (Dark World)', None, ['Floating Island Drop', 'Hookshot Cave Back Entrance']),
|
create_dw_region(world, player, 'Death Mountain Floating Island (Dark World)', None,
|
||||||
create_cave_region(player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']),
|
['Floating Island Drop', 'Hookshot Cave Back Entrance']),
|
||||||
|
create_cave_region(world, player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']),
|
||||||
|
|
||||||
create_dungeon_region(player, 'Swamp Palace (Entrance)', 'Swamp Palace', None, ['Swamp Palace Moat', 'Swamp Palace Exit']),
|
create_dungeon_region(world, player, 'Swamp Palace (Entrance)', 'Swamp Palace', None,
|
||||||
create_dungeon_region(player, 'Swamp Palace (First Room)', 'Swamp Palace', ['Swamp Palace - Entrance'], ['Swamp Palace Small Key Door']),
|
['Swamp Palace Moat', 'Swamp Palace Exit']),
|
||||||
create_dungeon_region(player, 'Swamp Palace (Starting Area)', 'Swamp Palace', ['Swamp Palace - Map Chest'], ['Swamp Palace (Center)']),
|
create_dungeon_region(world, player, 'Swamp Palace (First Room)', 'Swamp Palace', ['Swamp Palace - Entrance'],
|
||||||
create_dungeon_region(player, 'Swamp Palace (Center)', 'Swamp Palace', ['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest',
|
['Swamp Palace Small Key Door']),
|
||||||
'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']),
|
create_dungeon_region(world, player, 'Swamp Palace (Starting Area)', 'Swamp Palace',
|
||||||
create_dungeon_region(player, 'Swamp Palace (North)', 'Swamp Palace', ['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right',
|
['Swamp Palace - Map Chest'], ['Swamp Palace (Center)']),
|
||||||
'Swamp Palace - Waterfall Room', 'Swamp Palace - Boss', 'Swamp Palace - Prize']),
|
create_dungeon_region(world, player, 'Swamp Palace (Center)', 'Swamp Palace',
|
||||||
create_dungeon_region(player, 'Thieves Town (Entrance)', 'Thieves\' Town', ['Thieves\' Town - Big Key Chest',
|
['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest',
|
||||||
'Thieves\' Town - Map Chest',
|
'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']),
|
||||||
'Thieves\' Town - Compass Chest',
|
create_dungeon_region(world, player, 'Swamp Palace (North)', 'Swamp Palace',
|
||||||
'Thieves\' Town - Ambush Chest'], ['Thieves Town Big Key Door', 'Thieves Town Exit']),
|
['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right',
|
||||||
create_dungeon_region(player, 'Thieves Town (Deep)', 'Thieves\' Town', ['Thieves\' Town - Attic',
|
'Swamp Palace - Waterfall Room', 'Swamp Palace - Boss', 'Swamp Palace - Prize']),
|
||||||
'Thieves\' Town - Big Chest',
|
create_dungeon_region(world, player, 'Thieves Town (Entrance)', 'Thieves\' Town',
|
||||||
'Thieves\' Town - Blind\'s Cell'], ['Blind Fight']),
|
['Thieves\' Town - Big Key Chest',
|
||||||
create_dungeon_region(player, 'Blind Fight', 'Thieves\' Town', ['Thieves\' Town - Boss', 'Thieves\' Town - Prize']),
|
'Thieves\' Town - Map Chest',
|
||||||
create_dungeon_region(player, 'Skull Woods First Section', 'Skull Woods', ['Skull Woods - Map Chest'], ['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump', 'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
|
'Thieves\' Town - Compass Chest',
|
||||||
create_dungeon_region(player, 'Skull Woods First Section (Right)', 'Skull Woods', ['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']),
|
'Thieves\' Town - Ambush Chest'], ['Thieves Town Big Key Door', 'Thieves Town Exit']),
|
||||||
create_dungeon_region(player, 'Skull Woods First Section (Left)', 'Skull Woods', ['Skull Woods - Compass Chest', 'Skull Woods - Pot Prison'], ['Skull Woods First Section (Left) Door to Exit', 'Skull Woods First Section (Left) Door to Right']),
|
create_dungeon_region(world, player, 'Thieves Town (Deep)', 'Thieves\' Town', ['Thieves\' Town - Attic',
|
||||||
create_dungeon_region(player, 'Skull Woods First Section (Top)', 'Skull Woods', ['Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']),
|
'Thieves\' Town - Big Chest',
|
||||||
create_dungeon_region(player, 'Skull Woods Second Section (Drop)', 'Skull Woods', None, ['Skull Woods Second Section (Drop)']),
|
'Thieves\' Town - Blind\'s Cell'],
|
||||||
create_dungeon_region(player, 'Skull Woods Second Section', 'Skull Woods', ['Skull Woods - Big Key Chest'], ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
|
['Blind Fight']),
|
||||||
create_dungeon_region(player, 'Skull Woods Final Section (Entrance)', 'Skull Woods', ['Skull Woods - Bridge Room'], ['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
|
create_dungeon_region(world, player, 'Blind Fight', 'Thieves\' Town',
|
||||||
create_dungeon_region(player, 'Skull Woods Final Section (Mothula)', 'Skull Woods', ['Skull Woods - Boss', 'Skull Woods - Prize']),
|
['Thieves\' Town - Boss', 'Thieves\' Town - Prize']),
|
||||||
create_dungeon_region(player, 'Ice Palace (Entrance)', 'Ice Palace', None, ['Ice Palace Entrance Room', 'Ice Palace Exit']),
|
create_dungeon_region(world, player, 'Skull Woods First Section', 'Skull Woods', ['Skull Woods - Map Chest'],
|
||||||
create_dungeon_region(player, 'Ice Palace (Main)', 'Ice Palace', ['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest',
|
['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump',
|
||||||
'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'], ['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
|
'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
|
||||||
create_dungeon_region(player, 'Ice Palace (East)', 'Ice Palace', ['Ice Palace - Spike Room'], ['Ice Palace (East Top)']),
|
create_dungeon_region(world, player, 'Skull Woods First Section (Right)', 'Skull Woods',
|
||||||
create_dungeon_region(player, 'Ice Palace (East Top)', 'Ice Palace', ['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']),
|
['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']),
|
||||||
create_dungeon_region(player, 'Ice Palace (Kholdstare)', 'Ice Palace', ['Ice Palace - Boss', 'Ice Palace - Prize']),
|
create_dungeon_region(world, player, 'Skull Woods First Section (Left)', 'Skull Woods',
|
||||||
create_dungeon_region(player, 'Misery Mire (Entrance)', 'Misery Mire', None, ['Misery Mire Entrance Gap', 'Misery Mire Exit']),
|
['Skull Woods - Compass Chest', 'Skull Woods - Pot Prison'],
|
||||||
create_dungeon_region(player, 'Misery Mire (Main)', 'Misery Mire', ['Misery Mire - Big Chest', 'Misery Mire - Map Chest', 'Misery Mire - Main Lobby',
|
['Skull Woods First Section (Left) Door to Exit',
|
||||||
'Misery Mire - Bridge Chest', 'Misery Mire - Spike Chest'], ['Misery Mire (West)', 'Misery Mire Big Key Door']),
|
'Skull Woods First Section (Left) Door to Right']),
|
||||||
create_dungeon_region(player, 'Misery Mire (West)', 'Misery Mire', ['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
|
create_dungeon_region(world, player, 'Skull Woods First Section (Top)', 'Skull Woods',
|
||||||
create_dungeon_region(player, 'Misery Mire (Final Area)', 'Misery Mire', None, ['Misery Mire (Vitreous)']),
|
['Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']),
|
||||||
create_dungeon_region(player, 'Misery Mire (Vitreous)', 'Misery Mire', ['Misery Mire - Boss', 'Misery Mire - Prize']),
|
create_dungeon_region(world, player, 'Skull Woods Second Section (Drop)', 'Skull Woods', None,
|
||||||
create_dungeon_region(player, 'Turtle Rock (Entrance)', 'Turtle Rock', None, ['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
|
['Skull Woods Second Section (Drop)']),
|
||||||
create_dungeon_region(player, 'Turtle Rock (First Section)', 'Turtle Rock', ['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left',
|
create_dungeon_region(world, player, 'Skull Woods Second Section', 'Skull Woods',
|
||||||
'Turtle Rock - Roller Room - Right'], ['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
|
['Skull Woods - Big Key Chest'],
|
||||||
create_dungeon_region(player, 'Turtle Rock (Chain Chomp Room)', 'Turtle Rock', ['Turtle Rock - Chain Chomps'], ['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']),
|
['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
|
||||||
create_dungeon_region(player, 'Turtle Rock (Second Section)', 'Turtle Rock', ['Turtle Rock - Big Key Chest'], ['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase', 'Turtle Rock Big Key Door']),
|
create_dungeon_region(world, player, 'Skull Woods Final Section (Entrance)', 'Skull Woods',
|
||||||
create_dungeon_region(player, 'Turtle Rock (Big Chest)', 'Turtle Rock', ['Turtle Rock - Big Chest'], ['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']),
|
['Skull Woods - Bridge Room'],
|
||||||
create_dungeon_region(player, 'Turtle Rock (Crystaroller Room)', 'Turtle Rock', ['Turtle Rock - Crystaroller Room'], ['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']),
|
['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
|
||||||
create_dungeon_region(player, 'Turtle Rock (Dark Room)', 'Turtle Rock', None, ['Turtle Rock (Dark Room) (North)', 'Turtle Rock (Dark Room) (South)']),
|
create_dungeon_region(world, player, 'Skull Woods Final Section (Mothula)', 'Skull Woods',
|
||||||
create_dungeon_region(player, 'Turtle Rock (Eye Bridge)', 'Turtle Rock', ['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right',
|
['Skull Woods - Boss', 'Skull Woods - Prize']),
|
||||||
'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'],
|
create_dungeon_region(world, player, 'Ice Palace (Entrance)', 'Ice Palace', None,
|
||||||
['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)', 'Turtle Rock Isolated Ledge Exit']),
|
['Ice Palace Entrance Room', 'Ice Palace Exit']),
|
||||||
create_dungeon_region(player, 'Turtle Rock (Trinexx)', 'Turtle Rock', ['Turtle Rock - Boss', 'Turtle Rock - Prize']),
|
create_dungeon_region(world, player, 'Ice Palace (Main)', 'Ice Palace',
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Entrance)', 'Palace of Darkness', ['Palace of Darkness - Shooter Room'], ['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall', 'Palace of Darkness Exit']),
|
['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest',
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Center)', 'Palace of Darkness', ['Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - Stalfos Basement'],
|
'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'],
|
||||||
['Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (North)', 'Palace of Darkness Big Key Door']),
|
['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Big Key Chest)', 'Palace of Darkness', ['Palace of Darkness - Big Key Chest']),
|
create_dungeon_region(world, player, 'Ice Palace (East)', 'Ice Palace', ['Ice Palace - Spike Room'],
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Bonk Section)', 'Palace of Darkness', ['Palace of Darkness - The Arena - Ledge', 'Palace of Darkness - Map Chest'], ['Palace of Darkness Hammer Peg Drop']),
|
['Ice Palace (East Top)']),
|
||||||
create_dungeon_region(player, 'Palace of Darkness (North)', 'Palace of Darkness', ['Palace of Darkness - Compass Chest', 'Palace of Darkness - Dark Basement - Left', 'Palace of Darkness - Dark Basement - Right'],
|
create_dungeon_region(world, player, 'Ice Palace (East Top)', 'Ice Palace',
|
||||||
|
['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']),
|
||||||
|
create_dungeon_region(world, player, 'Ice Palace (Kholdstare)', 'Ice Palace',
|
||||||
|
['Ice Palace - Boss', 'Ice Palace - Prize']),
|
||||||
|
create_dungeon_region(world, player, 'Misery Mire (Entrance)', 'Misery Mire', None,
|
||||||
|
['Misery Mire Entrance Gap', 'Misery Mire Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Misery Mire (Main)', 'Misery Mire',
|
||||||
|
['Misery Mire - Big Chest', 'Misery Mire - Map Chest', 'Misery Mire - Main Lobby',
|
||||||
|
'Misery Mire - Bridge Chest', 'Misery Mire - Spike Chest'],
|
||||||
|
['Misery Mire (West)', 'Misery Mire Big Key Door']),
|
||||||
|
create_dungeon_region(world, player, 'Misery Mire (West)', 'Misery Mire',
|
||||||
|
['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
|
||||||
|
create_dungeon_region(world, player, 'Misery Mire (Final Area)', 'Misery Mire', None,
|
||||||
|
['Misery Mire (Vitreous)']),
|
||||||
|
create_dungeon_region(world, player, 'Misery Mire (Vitreous)', 'Misery Mire',
|
||||||
|
['Misery Mire - Boss', 'Misery Mire - Prize']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Entrance)', 'Turtle Rock', None,
|
||||||
|
['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (First Section)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left',
|
||||||
|
'Turtle Rock - Roller Room - Right'],
|
||||||
|
['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Chain Chomp Room)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Chain Chomps'],
|
||||||
|
['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Second Section)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Big Key Chest'],
|
||||||
|
['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase',
|
||||||
|
'Turtle Rock Big Key Door']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Big Chest)', 'Turtle Rock', ['Turtle Rock - Big Chest'],
|
||||||
|
['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Crystaroller Room)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Crystaroller Room'],
|
||||||
|
['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Dark Room)', 'Turtle Rock', None,
|
||||||
|
['Turtle Rock (Dark Room) (North)', 'Turtle Rock (Dark Room) (South)']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Eye Bridge)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right',
|
||||||
|
'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'],
|
||||||
|
['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)',
|
||||||
|
'Turtle Rock Isolated Ledge Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Trinexx)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Boss', 'Turtle Rock - Prize']),
|
||||||
|
create_dungeon_region(world, player, 'Palace of Darkness (Entrance)', 'Palace of Darkness',
|
||||||
|
['Palace of Darkness - Shooter Room'],
|
||||||
|
['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall',
|
||||||
|
'Palace of Darkness Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Palace of Darkness (Center)', 'Palace of Darkness',
|
||||||
|
['Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - Stalfos Basement'],
|
||||||
|
['Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (North)',
|
||||||
|
'Palace of Darkness Big Key Door']),
|
||||||
|
create_dungeon_region(world, player, 'Palace of Darkness (Big Key Chest)', 'Palace of Darkness',
|
||||||
|
['Palace of Darkness - Big Key Chest']),
|
||||||
|
create_dungeon_region(world, player, 'Palace of Darkness (Bonk Section)', 'Palace of Darkness',
|
||||||
|
['Palace of Darkness - The Arena - Ledge', 'Palace of Darkness - Map Chest'],
|
||||||
|
['Palace of Darkness Hammer Peg Drop']),
|
||||||
|
create_dungeon_region(world, player, 'Palace of Darkness (North)', 'Palace of Darkness',
|
||||||
|
['Palace of Darkness - Compass Chest', 'Palace of Darkness - Dark Basement - Left',
|
||||||
|
'Palace of Darkness - Dark Basement - Right'],
|
||||||
['Palace of Darkness Spike Statue Room Door', 'Palace of Darkness Maze Door']),
|
['Palace of Darkness Spike Statue Room Door', 'Palace of Darkness Maze Door']),
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Maze)', 'Palace of Darkness', ['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom', 'Palace of Darkness - Big Chest']),
|
create_dungeon_region(world, player, 'Palace of Darkness (Maze)', 'Palace of Darkness',
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Harmless Hellway)', 'Palace of Darkness', ['Palace of Darkness - Harmless Hellway']),
|
['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom',
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Final Section)', 'Palace of Darkness', ['Palace of Darkness - Boss', 'Palace of Darkness - Prize']),
|
'Palace of Darkness - Big Chest']),
|
||||||
create_dungeon_region(player, 'Inverted Ganons Tower (Entrance)', 'Ganon\'s Tower', ['Ganons Tower - Bob\'s Torch', 'Ganons Tower - Hope Room - Left', 'Ganons Tower - Hope Room - Right'],
|
create_dungeon_region(world, player, 'Palace of Darkness (Harmless Hellway)', 'Palace of Darkness',
|
||||||
['Ganons Tower (Tile Room)', 'Ganons Tower (Hookshot Room)', 'Ganons Tower Big Key Door', 'Inverted Ganons Tower Exit']),
|
['Palace of Darkness - Harmless Hellway']),
|
||||||
create_dungeon_region(player, 'Ganons Tower (Tile Room)', 'Ganon\'s Tower', ['Ganons Tower - Tile Room'], ['Ganons Tower (Tile Room) Key Door']),
|
create_dungeon_region(world, player, 'Palace of Darkness (Final Section)', 'Palace of Darkness',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Compass Room)', 'Ganon\'s Tower', ['Ganons Tower - Compass Room - Top Left', 'Ganons Tower - Compass Room - Top Right',
|
['Palace of Darkness - Boss', 'Palace of Darkness - Prize']),
|
||||||
'Ganons Tower - Compass Room - Bottom Left', 'Ganons Tower - Compass Room - Bottom Right'],
|
create_dungeon_region(world, player, 'Inverted Ganons Tower (Entrance)', 'Ganon\'s Tower',
|
||||||
['Ganons Tower (Bottom) (East)']),
|
['Ganons Tower - Bob\'s Torch', 'Ganons Tower - Hope Room - Left',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Hookshot Room)', 'Ganon\'s Tower', ['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right',
|
'Ganons Tower - Hope Room - Right'],
|
||||||
'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right'],
|
['Ganons Tower (Tile Room)', 'Ganons Tower (Hookshot Room)', 'Ganons Tower Big Key Door',
|
||||||
|
'Inverted Ganons Tower Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Ganons Tower (Tile Room)', 'Ganon\'s Tower', ['Ganons Tower - Tile Room'],
|
||||||
|
['Ganons Tower (Tile Room) Key Door']),
|
||||||
|
create_dungeon_region(world, player, 'Ganons Tower (Compass Room)', 'Ganon\'s Tower',
|
||||||
|
['Ganons Tower - Compass Room - Top Left', 'Ganons Tower - Compass Room - Top Right',
|
||||||
|
'Ganons Tower - Compass Room - Bottom Left',
|
||||||
|
'Ganons Tower - Compass Room - Bottom Right'], ['Ganons Tower (Bottom) (East)']),
|
||||||
|
create_dungeon_region(world, player, 'Ganons Tower (Hookshot Room)', 'Ganon\'s Tower',
|
||||||
|
['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right',
|
||||||
|
'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right'],
|
||||||
['Ganons Tower (Map Room)', 'Ganons Tower (Double Switch Room)']),
|
['Ganons Tower (Map Room)', 'Ganons Tower (Double Switch Room)']),
|
||||||
create_dungeon_region(player, 'Ganons Tower (Map Room)', 'Ganon\'s Tower', ['Ganons Tower - Map Chest']),
|
create_dungeon_region(world, player, 'Ganons Tower (Map Room)', 'Ganon\'s Tower', ['Ganons Tower - Map Chest']),
|
||||||
create_dungeon_region(player, 'Ganons Tower (Firesnake Room)', 'Ganon\'s Tower', ['Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']),
|
create_dungeon_region(world, player, 'Ganons Tower (Firesnake Room)', 'Ganon\'s Tower',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Teleport Room)', 'Ganon\'s Tower', ['Ganons Tower - Randomizer Room - Top Left', 'Ganons Tower - Randomizer Room - Top Right',
|
['Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']),
|
||||||
'Ganons Tower - Randomizer Room - Bottom Left', 'Ganons Tower - Randomizer Room - Bottom Right'],
|
create_dungeon_region(world, player, 'Ganons Tower (Teleport Room)', 'Ganon\'s Tower',
|
||||||
['Ganons Tower (Bottom) (West)']),
|
['Ganons Tower - Randomizer Room - Top Left',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Bottom)', 'Ganon\'s Tower', ['Ganons Tower - Bob\'s Chest', 'Ganons Tower - Big Chest', 'Ganons Tower - Big Key Room - Left',
|
'Ganons Tower - Randomizer Room - Top Right',
|
||||||
'Ganons Tower - Big Key Room - Right', 'Ganons Tower - Big Key Chest']),
|
'Ganons Tower - Randomizer Room - Bottom Left',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Top)', 'Ganon\'s Tower', None, ['Ganons Tower Torch Rooms']),
|
'Ganons Tower - Randomizer Room - Bottom Right'], ['Ganons Tower (Bottom) (West)']),
|
||||||
create_dungeon_region(player, 'Ganons Tower (Before Moldorm)', 'Ganon\'s Tower', ['Ganons Tower - Mini Helmasaur Room - Left', 'Ganons Tower - Mini Helmasaur Room - Right',
|
create_dungeon_region(world, player, 'Ganons Tower (Bottom)', 'Ganon\'s Tower',
|
||||||
'Ganons Tower - Pre-Moldorm Chest'], ['Ganons Tower Moldorm Door']),
|
['Ganons Tower - Bob\'s Chest', 'Ganons Tower - Big Chest',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Moldorm)', 'Ganon\'s Tower', None, ['Ganons Tower Moldorm Gap']),
|
'Ganons Tower - Big Key Room - Left',
|
||||||
create_dungeon_region(player, 'Agahnim 2', 'Ganon\'s Tower', ['Ganons Tower - Validation Chest', 'Agahnim 2'], None),
|
'Ganons Tower - Big Key Room - Right', 'Ganons Tower - Big Key Chest']),
|
||||||
create_cave_region(player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']),
|
create_dungeon_region(world, player, 'Ganons Tower (Top)', 'Ganon\'s Tower', None,
|
||||||
create_cave_region(player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']),
|
['Ganons Tower Torch Rooms']),
|
||||||
create_dw_region(player, 'Pyramid Ledge', None, ['Pyramid Drop']), # houlihan room exits here in inverted
|
create_dungeon_region(world, player, 'Ganons Tower (Before Moldorm)', 'Ganon\'s Tower',
|
||||||
|
['Ganons Tower - Mini Helmasaur Room - Left',
|
||||||
|
'Ganons Tower - Mini Helmasaur Room - Right',
|
||||||
|
'Ganons Tower - Pre-Moldorm Chest'], ['Ganons Tower Moldorm Door']),
|
||||||
|
create_dungeon_region(world, player, 'Ganons Tower (Moldorm)', 'Ganon\'s Tower', None,
|
||||||
|
['Ganons Tower Moldorm Gap']),
|
||||||
|
create_dungeon_region(world, player, 'Agahnim 2', 'Ganon\'s Tower',
|
||||||
|
['Ganons Tower - Validation Chest', 'Agahnim 2'], None),
|
||||||
|
create_cave_region(world, player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']),
|
||||||
|
create_cave_region(world, player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']),
|
||||||
|
create_dw_region(world, player, 'Pyramid Ledge', None, ['Pyramid Drop']), # houlihan room exits here in inverted
|
||||||
|
|
||||||
# to simplify flute connections
|
# to simplify flute connections
|
||||||
create_cave_region(player, 'The Sky', 'A Dark Sky', None, ['DDM Landing','NEDW Landing', 'WDW Landing', 'SDW Landing', 'EDW Landing', 'DD Landing', 'DLHL Landing']),
|
create_cave_region(world, player, 'The Sky', 'A Dark Sky', None,
|
||||||
|
['DDM Landing', 'NEDW Landing', 'WDW Landing', 'SDW Landing', 'EDW Landing', 'DD Landing',
|
||||||
|
'DLHL Landing']),
|
||||||
|
|
||||||
create_lw_region(player, 'Desert Northern Cliffs'),
|
create_lw_region(world, player, 'Desert Northern Cliffs'),
|
||||||
create_lw_region(player, 'Death Mountain Bunny Descent Area')
|
create_lw_region(world, player, 'Death Mountain Bunny Descent Area')
|
||||||
]
|
]
|
||||||
|
|
||||||
world.initialize_regions()
|
world.initialize_regions()
|
||||||
|
@ -316,26 +534,26 @@ def create_inverted_regions(world, player):
|
||||||
def mark_dark_world_regions(world, player):
|
def mark_dark_world_regions(world, player):
|
||||||
# cross world caves may have some sections marked as both in_light_world, and in_dark_work.
|
# cross world caves may have some sections marked as both in_light_world, and in_dark_work.
|
||||||
# That is ok. the bunny logic will check for this case and incorporate special rules.
|
# That is ok. the bunny logic will check for this case and incorporate special rules.
|
||||||
queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.DarkWorld)
|
queue = collections.deque(region for region in world.get_regions(player) if region.type == LTTPRegionType.DarkWorld)
|
||||||
seen = set(queue)
|
seen = set(queue)
|
||||||
while queue:
|
while queue:
|
||||||
current = queue.popleft()
|
current = queue.popleft()
|
||||||
current.is_dark_world = True
|
current.is_dark_world = True
|
||||||
for exit in current.exits:
|
for exit in current.exits:
|
||||||
if exit.connected_region.type == RegionType.LightWorld:
|
if exit.connected_region.type == LTTPRegionType.LightWorld:
|
||||||
# Don't venture into the dark world
|
# Don't venture into the dark world
|
||||||
continue
|
continue
|
||||||
if exit.connected_region not in seen:
|
if exit.connected_region not in seen:
|
||||||
seen.add(exit.connected_region)
|
seen.add(exit.connected_region)
|
||||||
queue.append(exit.connected_region)
|
queue.append(exit.connected_region)
|
||||||
|
|
||||||
queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.LightWorld)
|
queue = collections.deque(region for region in world.get_regions(player) if region.type == LTTPRegionType.LightWorld)
|
||||||
seen = set(queue)
|
seen = set(queue)
|
||||||
while queue:
|
while queue:
|
||||||
current = queue.popleft()
|
current = queue.popleft()
|
||||||
current.is_light_world = True
|
current.is_light_world = True
|
||||||
for exit in current.exits:
|
for exit in current.exits:
|
||||||
if exit.connected_region.type == RegionType.DarkWorld:
|
if exit.connected_region.type == LTTPRegionType.DarkWorld:
|
||||||
# Don't venture into the light world
|
# Don't venture into the light world
|
||||||
continue
|
continue
|
||||||
if exit.connected_region not in seen:
|
if exit.connected_region not in seen:
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from BaseClasses import Region, RegionType, ItemClassification
|
from BaseClasses import ItemClassification
|
||||||
from worlds.alttp.SubClasses import ALttPLocation
|
from worlds.alttp.SubClasses import ALttPLocation, LTTPRegion, LTTPRegionType
|
||||||
from worlds.alttp.Shops import TakeAny, total_shop_slots, set_up_shops, shuffle_shops, create_dynamic_shop_locations
|
from worlds.alttp.Shops import TakeAny, total_shop_slots, set_up_shops, shuffle_shops, create_dynamic_shop_locations
|
||||||
from worlds.alttp.Bosses import place_bosses
|
from worlds.alttp.Bosses import place_bosses
|
||||||
from worlds.alttp.Dungeons import get_dungeon_item_pool_player
|
from worlds.alttp.Dungeons import get_dungeon_item_pool_player
|
||||||
|
@ -471,7 +471,7 @@ def set_up_take_anys(world, player):
|
||||||
|
|
||||||
regions = world.random.sample(take_any_locs, 5)
|
regions = world.random.sample(take_any_locs, 5)
|
||||||
|
|
||||||
old_man_take_any = Region("Old Man Sword Cave", RegionType.Cave, 'the sword cave', player)
|
old_man_take_any = LTTPRegion("Old Man Sword Cave", LTTPRegionType.Cave, 'the sword cave', player, world)
|
||||||
world.regions.append(old_man_take_any)
|
world.regions.append(old_man_take_any)
|
||||||
|
|
||||||
reg = regions.pop()
|
reg = regions.pop()
|
||||||
|
@ -491,7 +491,7 @@ def set_up_take_anys(world, player):
|
||||||
old_man_take_any.shop.add_inventory(0, 'Rupees (300)', 0, 0, create_location=True)
|
old_man_take_any.shop.add_inventory(0, 'Rupees (300)', 0, 0, create_location=True)
|
||||||
|
|
||||||
for num in range(4):
|
for num in range(4):
|
||||||
take_any = Region("Take-Any #{}".format(num+1), RegionType.Cave, 'a cave of choice', player)
|
take_any = LTTPRegion("Take-Any #{}".format(num+1), LTTPRegionType.Cave, 'a cave of choice', player, world)
|
||||||
world.regions.append(take_any)
|
world.regions.append(take_any)
|
||||||
|
|
||||||
target, room_id = world.random.choice([(0x58, 0x0112), (0x60, 0x010F), (0x46, 0x011F)])
|
target, room_id = world.random.choice([(0x58, 0x0112), (0x60, 0x010F), (0x46, 0x011F)])
|
||||||
|
|
|
@ -1,369 +1,566 @@
|
||||||
import collections
|
import collections
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from BaseClasses import Region, Entrance, RegionType
|
from BaseClasses import Entrance, MultiWorld
|
||||||
|
from .SubClasses import LTTPRegion, LTTPRegionType
|
||||||
|
|
||||||
|
|
||||||
def is_main_entrance(entrance: Entrance) -> bool:
|
def is_main_entrance(entrance: Entrance) -> bool:
|
||||||
return entrance.parent_region.type in {RegionType.DarkWorld, RegionType.LightWorld, RegionType.Generic}
|
return entrance.parent_region.type in {LTTPRegionType.DarkWorld, LTTPRegionType.LightWorld} if entrance.parent_region.type else True
|
||||||
|
|
||||||
|
|
||||||
def create_regions(world, player):
|
def create_regions(world, player):
|
||||||
|
|
||||||
world.regions += [
|
world.regions += [
|
||||||
create_lw_region(player, 'Menu', None, ['Links House S&Q', 'Sanctuary S&Q', 'Old Man S&Q']),
|
create_lw_region(world, player, 'Menu', None, ['Links House S&Q', 'Sanctuary S&Q', 'Old Man S&Q']),
|
||||||
create_lw_region(player, 'Light World', ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure',
|
create_lw_region(world, player, 'Light World', ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure',
|
||||||
'Purple Chest', 'Flute Activation Spot'],
|
'Purple Chest', 'Flute Activation Spot'],
|
||||||
["Blinds Hideout", "Hyrule Castle Secret Entrance Drop", 'Zoras River', 'Kings Grave Outer Rocks', 'Dam',
|
["Blinds Hideout", "Hyrule Castle Secret Entrance Drop", 'Zoras River',
|
||||||
'Links House', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut', 'Kakariko Well Drop', 'Kakariko Well Cave',
|
'Kings Grave Outer Rocks', 'Dam',
|
||||||
'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump',
|
'Links House', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut',
|
||||||
'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave', 'Lake Hylia Central Island Pier',
|
'Kakariko Well Drop', 'Kakariko Well Cave',
|
||||||
'Bonk Rock Cave', 'Library', 'Potion Shop', 'Two Brothers House (East)', 'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow',
|
'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge',
|
||||||
'Sanctuary', 'Sanctuary Grave', 'Death Mountain Entrance Rock', 'Flute Spot 1', 'Dark Desert Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter', 'Kakariko Teleporter',
|
'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump',
|
||||||
'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
|
'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave',
|
||||||
'Bush Covered House', 'Light World Bomb Hut', 'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)', 'Waterfall of Wishing', 'Hyrule Castle Main Gate',
|
'Lake Hylia Central Island Pier',
|
||||||
'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game', 'Top of Pyramid']),
|
'Bonk Rock Cave', 'Library', 'Potion Shop', 'Two Brothers House (East)',
|
||||||
create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop']),
|
'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow',
|
||||||
create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Island Teleporter']),
|
'Sanctuary', 'Sanctuary Grave', 'Death Mountain Entrance Rock', 'Flute Spot 1',
|
||||||
create_cave_region(player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top",
|
'Dark Desert Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter',
|
||||||
"Blind\'s Hideout - Left",
|
'Kakariko Teleporter',
|
||||||
"Blind\'s Hideout - Right",
|
'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop',
|
||||||
"Blind\'s Hideout - Far Left",
|
'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
|
||||||
"Blind\'s Hideout - Far Right"]),
|
'Bush Covered House', 'Light World Bomb Hut', 'Kakariko Shop', 'Long Fairy Cave',
|
||||||
create_cave_region(player, 'Hyrule Castle Secret Entrance', 'a drop\'s exit', ['Link\'s Uncle', 'Secret Passage'], ['Hyrule Castle Secret Entrance Exit']),
|
'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)', 'Waterfall of Wishing',
|
||||||
create_lw_region(player, 'Zoras River', ['King Zora', 'Zora\'s Ledge']),
|
'Hyrule Castle Main Gate',
|
||||||
create_cave_region(player, 'Waterfall of Wishing', 'a cave with two chests', ['Waterfall Fairy - Left', 'Waterfall Fairy - Right']),
|
'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy',
|
||||||
create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']),
|
'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller',
|
||||||
create_cave_region(player, 'Kings Grave', 'a cave with a chest', ['King\'s Tomb']),
|
'Kakariko Gamble Game', 'Top of Pyramid']),
|
||||||
create_cave_region(player, 'North Fairy Cave', 'a drop\'s exit', None, ['North Fairy Cave Exit']),
|
create_lw_region(world, player, 'Death Mountain Entrance', None,
|
||||||
create_cave_region(player, 'Dam', 'the dam', ['Floodgate', 'Floodgate Chest']),
|
['Old Man Cave (West)', 'Death Mountain Entrance Drop']),
|
||||||
create_cave_region(player, 'Links House', 'your house', ['Link\'s House'], ['Links House Exit']),
|
create_lw_region(world, player, 'Lake Hylia Central Island', None,
|
||||||
create_cave_region(player, 'Chris Houlihan Room', 'I AM ERROR', None, ['Chris Houlihan Room Exit']),
|
['Capacity Upgrade', 'Lake Hylia Central Island Teleporter']),
|
||||||
create_cave_region(player, 'Tavern', 'the tavern', ['Kakariko Tavern']),
|
create_cave_region(world, player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top",
|
||||||
create_cave_region(player, 'Elder House', 'a connector', None, ['Elder House Exit (East)', 'Elder House Exit (West)']),
|
"Blind\'s Hideout - Left",
|
||||||
create_cave_region(player, 'Snitch Lady (East)', 'a boring house'),
|
"Blind\'s Hideout - Right",
|
||||||
create_cave_region(player, 'Snitch Lady (West)', 'a boring house'),
|
"Blind\'s Hideout - Far Left",
|
||||||
create_cave_region(player, 'Bush Covered House', 'the grass man'),
|
"Blind\'s Hideout - Far Right"]),
|
||||||
create_cave_region(player, 'Tavern (Front)', 'the tavern'),
|
create_cave_region(world, player, 'Hyrule Castle Secret Entrance', 'a drop\'s exit',
|
||||||
create_cave_region(player, 'Light World Bomb Hut', 'a restock room'),
|
['Link\'s Uncle', 'Secret Passage'], ['Hyrule Castle Secret Entrance Exit']),
|
||||||
create_cave_region(player, 'Kakariko Shop', 'a common shop'),
|
create_lw_region(world, player, 'Zoras River', ['King Zora', 'Zora\'s Ledge']),
|
||||||
create_cave_region(player, 'Fortune Teller (Light)', 'a fortune teller'),
|
create_cave_region(world, player, 'Waterfall of Wishing', 'a cave with two chests',
|
||||||
create_cave_region(player, 'Lake Hylia Fortune Teller', 'a fortune teller'),
|
['Waterfall Fairy - Left', 'Waterfall Fairy - Right']),
|
||||||
create_cave_region(player, 'Lumberjack House', 'a boring house'),
|
create_lw_region(world, player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']),
|
||||||
create_cave_region(player, 'Bonk Fairy (Light)', 'a fairy fountain'),
|
create_cave_region(world, player, 'Kings Grave', 'a cave with a chest', ['King\'s Tomb']),
|
||||||
create_cave_region(player, 'Bonk Fairy (Dark)', 'a fairy fountain'),
|
create_cave_region(world, player, 'North Fairy Cave', 'a drop\'s exit', None, ['North Fairy Cave Exit']),
|
||||||
create_cave_region(player, 'Lake Hylia Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Dam', 'the dam', ['Floodgate', 'Floodgate Chest']),
|
||||||
create_cave_region(player, 'Swamp Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Links House', 'your house', ['Link\'s House'], ['Links House Exit']),
|
||||||
create_cave_region(player, 'Desert Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Chris Houlihan Room', 'I AM ERROR', None, ['Chris Houlihan Room Exit']),
|
||||||
create_cave_region(player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Tavern', 'the tavern', ['Kakariko Tavern']),
|
||||||
create_cave_region(player, 'Dark Lake Hylia Ledge Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Elder House', 'a connector', None,
|
||||||
create_cave_region(player, 'Dark Desert Healer Fairy', 'a fairy fountain'),
|
['Elder House Exit (East)', 'Elder House Exit (West)']),
|
||||||
create_cave_region(player, 'Dark Death Mountain Healer Fairy', 'a fairy fountain'),
|
create_cave_region(world, player, 'Snitch Lady (East)', 'a boring house'),
|
||||||
create_cave_region(player, 'Chicken House', 'a house with a chest', ['Chicken House']),
|
create_cave_region(world, player, 'Snitch Lady (West)', 'a boring house'),
|
||||||
create_cave_region(player, 'Aginahs Cave', 'a cave with a chest', ['Aginah\'s Cave']),
|
create_cave_region(world, player, 'Bush Covered House', 'the grass man'),
|
||||||
create_cave_region(player, 'Sahasrahlas Hut', 'Sahasrahla', ['Sahasrahla\'s Hut - Left', 'Sahasrahla\'s Hut - Middle', 'Sahasrahla\'s Hut - Right', 'Sahasrahla']),
|
create_cave_region(world, player, 'Tavern (Front)', 'the tavern'),
|
||||||
create_cave_region(player, 'Kakariko Well (top)', 'a drop\'s exit', ['Kakariko Well - Top', 'Kakariko Well - Left', 'Kakariko Well - Middle',
|
create_cave_region(world, player, 'Light World Bomb Hut', 'a restock room'),
|
||||||
'Kakariko Well - Right', 'Kakariko Well - Bottom'], ['Kakariko Well (top to bottom)']),
|
create_cave_region(world, player, 'Kakariko Shop', 'a common shop'),
|
||||||
create_cave_region(player, 'Kakariko Well (bottom)', 'a drop\'s exit', None, ['Kakariko Well Exit']),
|
create_cave_region(world, player, 'Fortune Teller (Light)', 'a fortune teller'),
|
||||||
create_cave_region(player, 'Blacksmiths Hut', 'the smith', ['Blacksmith', 'Missing Smith']),
|
create_cave_region(world, player, 'Lake Hylia Fortune Teller', 'a fortune teller'),
|
||||||
create_lw_region(player, 'Bat Cave Drop Ledge', None, ['Bat Cave Drop']),
|
create_cave_region(world, player, 'Lumberjack House', 'a boring house'),
|
||||||
create_cave_region(player, 'Bat Cave (right)', 'a drop\'s exit', ['Magic Bat'], ['Bat Cave Door']),
|
create_cave_region(world, player, 'Bonk Fairy (Light)', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Bat Cave (left)', 'a drop\'s exit', None, ['Bat Cave Exit']),
|
create_cave_region(world, player, 'Bonk Fairy (Dark)', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Sick Kids House', 'the sick kid', ['Sick Kid']),
|
create_cave_region(world, player, 'Lake Hylia Healer Fairy', 'a fairy fountain'),
|
||||||
create_lw_region(player, 'Hobo Bridge', ['Hobo']),
|
create_cave_region(world, player, 'Swamp Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'], ['Lost Woods Hideout (top to bottom)']),
|
create_cave_region(world, player, 'Desert Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Lost Woods Hideout (bottom)', 'a drop\'s exit', None, ['Lost Woods Hideout Exit']),
|
create_cave_region(world, player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Lumberjack Tree (top)', 'a drop\'s exit', ['Lumberjack Tree'], ['Lumberjack Tree (top to bottom)']),
|
create_cave_region(world, player, 'Dark Lake Hylia Ledge Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Lumberjack Tree (bottom)', 'a drop\'s exit', None, ['Lumberjack Tree Exit']),
|
create_cave_region(world, player, 'Dark Desert Healer Fairy', 'a fairy fountain'),
|
||||||
create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45']),
|
create_cave_region(world, player, 'Dark Death Mountain Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Cave 45', 'a cave with an item', ['Cave 45']),
|
create_cave_region(world, player, 'Chicken House', 'a house with a chest', ['Chicken House']),
|
||||||
create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Cave']),
|
create_cave_region(world, player, 'Aginahs Cave', 'a cave with a chest', ['Aginah\'s Cave']),
|
||||||
create_cave_region(player, 'Graveyard Cave', 'a cave with an item', ['Graveyard Cave']),
|
create_cave_region(world, player, 'Sahasrahlas Hut', 'Sahasrahla',
|
||||||
create_cave_region(player, 'Checkerboard Cave', 'a cave with an item', ['Checkerboard Cave']),
|
['Sahasrahla\'s Hut - Left', 'Sahasrahla\'s Hut - Middle', 'Sahasrahla\'s Hut - Right',
|
||||||
create_cave_region(player, 'Long Fairy Cave', 'a fairy fountain'),
|
'Sahasrahla']),
|
||||||
create_cave_region(player, 'Mini Moldorm Cave', 'a bounty of five items', ['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right',
|
create_cave_region(world, player, 'Kakariko Well (top)', 'a drop\'s exit',
|
||||||
'Mini Moldorm Cave - Far Right', 'Mini Moldorm Cave - Generous Guy']),
|
['Kakariko Well - Top', 'Kakariko Well - Left', 'Kakariko Well - Middle',
|
||||||
create_cave_region(player, 'Ice Rod Cave', 'a cave with a chest', ['Ice Rod Cave']),
|
'Kakariko Well - Right', 'Kakariko Well - Bottom'], ['Kakariko Well (top to bottom)']),
|
||||||
create_cave_region(player, 'Good Bee Cave', 'a cold bee'),
|
create_cave_region(world, player, 'Kakariko Well (bottom)', 'a drop\'s exit', None, ['Kakariko Well Exit']),
|
||||||
create_cave_region(player, '20 Rupee Cave', 'a cave with some cash'),
|
create_cave_region(world, player, 'Blacksmiths Hut', 'the smith', ['Blacksmith', 'Missing Smith']),
|
||||||
create_cave_region(player, 'Cave Shop (Lake Hylia)', 'a common shop'),
|
create_lw_region(world, player, 'Bat Cave Drop Ledge', None, ['Bat Cave Drop']),
|
||||||
create_cave_region(player, 'Cave Shop (Dark Death Mountain)', 'a common shop'),
|
create_cave_region(world, player, 'Bat Cave (right)', 'a drop\'s exit', ['Magic Bat'], ['Bat Cave Door']),
|
||||||
create_cave_region(player, 'Bonk Rock Cave', 'a cave with a chest', ['Bonk Rock Cave']),
|
create_cave_region(world, player, 'Bat Cave (left)', 'a drop\'s exit', None, ['Bat Cave Exit']),
|
||||||
create_cave_region(player, 'Library', 'the library', ['Library']),
|
create_cave_region(world, player, 'Sick Kids House', 'the sick kid', ['Sick Kid']),
|
||||||
create_cave_region(player, 'Kakariko Gamble Game', 'a game of chance'),
|
create_lw_region(world, player, 'Hobo Bridge', ['Hobo']),
|
||||||
create_cave_region(player, 'Potion Shop', 'the potion shop', ['Potion Shop']),
|
create_cave_region(world, player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'],
|
||||||
create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island']),
|
['Lost Woods Hideout (top to bottom)']),
|
||||||
create_cave_region(player, 'Capacity Upgrade', 'the queen of fairies'),
|
create_cave_region(world, player, 'Lost Woods Hideout (bottom)', 'a drop\'s exit', None,
|
||||||
create_cave_region(player, 'Two Brothers House', 'a connector', None, ['Two Brothers House Exit (East)', 'Two Brothers House Exit (West)']),
|
['Lost Woods Hideout Exit']),
|
||||||
create_lw_region(player, 'Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)']),
|
create_cave_region(world, player, 'Lumberjack Tree (top)', 'a drop\'s exit', ['Lumberjack Tree'],
|
||||||
create_cave_region(player, '50 Rupee Cave', 'a cave with some cash'),
|
['Lumberjack Tree (top to bottom)']),
|
||||||
create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)']),
|
create_cave_region(world, player, 'Lumberjack Tree (bottom)', 'a drop\'s exit', None, ['Lumberjack Tree Exit']),
|
||||||
create_lw_region(player, 'Desert Ledge (Northeast)', None, ['Checkerboard Cave']),
|
create_lw_region(world, player, 'Cave 45 Ledge', None, ['Cave 45']),
|
||||||
create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)']),
|
create_cave_region(world, player, 'Cave 45', 'a cave with an item', ['Cave 45']),
|
||||||
create_lw_region(player, 'Desert Palace Lone Stairs', None, ['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']),
|
create_lw_region(world, player, 'Graveyard Ledge', None, ['Graveyard Cave']),
|
||||||
create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks']),
|
create_cave_region(world, player, 'Graveyard Cave', 'a cave with an item', ['Graveyard Cave']),
|
||||||
create_dungeon_region(player, 'Desert Palace Main (Outer)', 'Desert Palace', ['Desert Palace - Big Chest', 'Desert Palace - Torch', 'Desert Palace - Map Chest'],
|
create_cave_region(world, player, 'Checkerboard Cave', 'a cave with an item', ['Checkerboard Cave']),
|
||||||
['Desert Palace Pots (Outer)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)', 'Desert Palace East Wing']),
|
create_cave_region(world, player, 'Long Fairy Cave', 'a fairy fountain'),
|
||||||
create_dungeon_region(player, 'Desert Palace Main (Inner)', 'Desert Palace', None, ['Desert Palace Exit (South)', 'Desert Palace Pots (Inner)']),
|
create_cave_region(world, player, 'Mini Moldorm Cave', 'a bounty of five items',
|
||||||
create_dungeon_region(player, 'Desert Palace East', 'Desert Palace', ['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']),
|
['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right',
|
||||||
create_dungeon_region(player, 'Desert Palace North', 'Desert Palace', ['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
|
'Mini Moldorm Cave - Far Right', 'Mini Moldorm Cave - Generous Guy']),
|
||||||
create_dungeon_region(player, 'Eastern Palace', 'Eastern Palace', ['Eastern Palace - Compass Chest', 'Eastern Palace - Big Chest', 'Eastern Palace - Cannonball Chest',
|
create_cave_region(world, player, 'Ice Rod Cave', 'a cave with a chest', ['Ice Rod Cave']),
|
||||||
'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Boss', 'Eastern Palace - Prize'], ['Eastern Palace Exit']),
|
create_cave_region(world, player, 'Good Bee Cave', 'a cold bee'),
|
||||||
create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal']),
|
create_cave_region(world, player, '20 Rupee Cave', 'a cave with some cash'),
|
||||||
create_cave_region(player, 'Lost Woods Gamble', 'a game of chance'),
|
create_cave_region(world, player, 'Cave Shop (Lake Hylia)', 'a common shop'),
|
||||||
create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Entrance (South)']),
|
create_cave_region(world, player, 'Cave Shop (Dark Death Mountain)', 'a common shop'),
|
||||||
create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (East)', 'Hyrule Castle Entrance (West)', 'Agahnims Tower', 'Hyrule Castle Ledge Courtyard Drop']),
|
create_cave_region(world, player, 'Bonk Rock Cave', 'a cave with a chest', ['Bonk Rock Cave']),
|
||||||
create_dungeon_region(player, 'Hyrule Castle', 'Hyrule Castle', ['Hyrule Castle - Boomerang Chest', 'Hyrule Castle - Map Chest', 'Hyrule Castle - Zelda\'s Chest'],
|
create_cave_region(world, player, 'Library', 'the library', ['Library']),
|
||||||
['Hyrule Castle Exit (East)', 'Hyrule Castle Exit (West)', 'Hyrule Castle Exit (South)', 'Throne Room']),
|
create_cave_region(world, player, 'Kakariko Gamble Game', 'a game of chance'),
|
||||||
create_dungeon_region(player, 'Sewer Drop', 'a drop\'s exit', None, ['Sewer Drop']), # This exists only to be referenced for access checks
|
create_cave_region(world, player, 'Potion Shop', 'the potion shop', ['Potion Shop']),
|
||||||
create_dungeon_region(player, 'Sewers (Dark)', 'a drop\'s exit', ['Sewers - Dark Cross'], ['Sewers Door']),
|
create_lw_region(world, player, 'Lake Hylia Island', ['Lake Hylia Island']),
|
||||||
create_dungeon_region(player, 'Sewers', 'a drop\'s exit', ['Sewers - Secret Room - Left', 'Sewers - Secret Room - Middle',
|
create_cave_region(world, player, 'Capacity Upgrade', 'the queen of fairies'),
|
||||||
'Sewers - Secret Room - Right'], ['Sanctuary Push Door', 'Sewers Back Door']),
|
create_cave_region(world, player, 'Two Brothers House', 'a connector', None,
|
||||||
create_dungeon_region(player, 'Sanctuary', 'a drop\'s exit', ['Sanctuary'], ['Sanctuary Exit']),
|
['Two Brothers House Exit (East)', 'Two Brothers House Exit (West)']),
|
||||||
create_dungeon_region(player, 'Agahnims Tower', 'Castle Tower', ['Castle Tower - Room 03', 'Castle Tower - Dark Maze'], ['Agahnim 1', 'Agahnims Tower Exit']),
|
create_lw_region(world, player, 'Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)']),
|
||||||
create_dungeon_region(player, 'Agahnim 1', 'Castle Tower', ['Agahnim 1'], None),
|
create_cave_region(world, player, '50 Rupee Cave', 'a cave with some cash'),
|
||||||
create_cave_region(player, 'Old Man Cave', 'a connector', ['Old Man'], ['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']),
|
create_lw_region(world, player, 'Desert Ledge', ['Desert Ledge'],
|
||||||
create_cave_region(player, 'Old Man House', 'a connector', None, ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']),
|
['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)']),
|
||||||
create_cave_region(player, 'Old Man House Back', 'a connector', None, ['Old Man House Exit (Top)', 'Old Man House Back to Front']),
|
create_lw_region(world, player, 'Desert Ledge (Northeast)', None, ['Checkerboard Cave']),
|
||||||
create_lw_region(player, 'Death Mountain', None, ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)', 'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'Broken Bridge (West)', 'Death Mountain Teleporter']),
|
create_lw_region(world, player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)']),
|
||||||
create_cave_region(player, 'Death Mountain Return Cave', 'a connector', None, ['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']),
|
create_lw_region(world, player, 'Desert Palace Lone Stairs', None,
|
||||||
create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)']),
|
['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']),
|
||||||
create_cave_region(player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'], ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']),
|
create_lw_region(world, player, 'Desert Palace Entrance (North) Spot', None,
|
||||||
create_cave_region(player, 'Spectacle Rock Cave (Bottom)', 'a connector', None, ['Spectacle Rock Cave Exit']),
|
['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks']),
|
||||||
create_cave_region(player, 'Spectacle Rock Cave (Peak)', 'a connector', None, ['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']),
|
create_dungeon_region(world, player, 'Desert Palace Main (Outer)', 'Desert Palace',
|
||||||
create_lw_region(player, 'East Death Mountain (Bottom)', None, ['Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'East Death Mountain Teleporter', 'Hookshot Fairy', 'Fairy Ascension Rocks', 'Spiral Cave (Bottom)']),
|
['Desert Palace - Big Chest', 'Desert Palace - Torch', 'Desert Palace - Map Chest'],
|
||||||
create_cave_region(player, 'Hookshot Fairy', 'fairies deep in a cave'),
|
['Desert Palace Pots (Outer)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)',
|
||||||
create_cave_region(player, 'Paradox Cave Front', 'a connector', None, ['Paradox Cave Push Block Reverse', 'Paradox Cave Exit (Bottom)', 'Light World Death Mountain Shop']),
|
'Desert Palace East Wing']),
|
||||||
create_cave_region(player, 'Paradox Cave Chest Area', 'a connector', ['Paradox Cave Lower - Far Left',
|
create_dungeon_region(world, player, 'Desert Palace Main (Inner)', 'Desert Palace', None,
|
||||||
'Paradox Cave Lower - Left',
|
['Desert Palace Exit (South)', 'Desert Palace Pots (Inner)']),
|
||||||
'Paradox Cave Lower - Right',
|
create_dungeon_region(world, player, 'Desert Palace East', 'Desert Palace',
|
||||||
'Paradox Cave Lower - Far Right',
|
['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']),
|
||||||
'Paradox Cave Lower - Middle',
|
create_dungeon_region(world, player, 'Desert Palace North', 'Desert Palace',
|
||||||
'Paradox Cave Upper - Left',
|
['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
|
||||||
'Paradox Cave Upper - Right'],
|
create_dungeon_region(world, player, 'Eastern Palace', 'Eastern Palace',
|
||||||
|
['Eastern Palace - Compass Chest', 'Eastern Palace - Big Chest',
|
||||||
|
'Eastern Palace - Cannonball Chest',
|
||||||
|
'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Boss',
|
||||||
|
'Eastern Palace - Prize'], ['Eastern Palace Exit']),
|
||||||
|
create_lw_region(world, player, 'Master Sword Meadow', ['Master Sword Pedestal']),
|
||||||
|
create_cave_region(world, player, 'Lost Woods Gamble', 'a game of chance'),
|
||||||
|
create_lw_region(world, player, 'Hyrule Castle Courtyard', None,
|
||||||
|
['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Entrance (South)']),
|
||||||
|
create_lw_region(world, player, 'Hyrule Castle Ledge', None,
|
||||||
|
['Hyrule Castle Entrance (East)', 'Hyrule Castle Entrance (West)', 'Agahnims Tower',
|
||||||
|
'Hyrule Castle Ledge Courtyard Drop']),
|
||||||
|
create_dungeon_region(world, player, 'Hyrule Castle', 'Hyrule Castle',
|
||||||
|
['Hyrule Castle - Boomerang Chest', 'Hyrule Castle - Map Chest',
|
||||||
|
'Hyrule Castle - Zelda\'s Chest'],
|
||||||
|
['Hyrule Castle Exit (East)', 'Hyrule Castle Exit (West)', 'Hyrule Castle Exit (South)',
|
||||||
|
'Throne Room']),
|
||||||
|
create_dungeon_region(world, player, 'Sewer Drop', 'a drop\'s exit', None, ['Sewer Drop']), # This exists only to be referenced for access checks
|
||||||
|
create_dungeon_region(world, player, 'Sewers (Dark)', 'a drop\'s exit', ['Sewers - Dark Cross'],
|
||||||
|
['Sewers Door']),
|
||||||
|
create_dungeon_region(world, player, 'Sewers', 'a drop\'s exit',
|
||||||
|
['Sewers - Secret Room - Left', 'Sewers - Secret Room - Middle',
|
||||||
|
'Sewers - Secret Room - Right'], ['Sanctuary Push Door', 'Sewers Back Door']),
|
||||||
|
create_dungeon_region(world, player, 'Sanctuary', 'a drop\'s exit', ['Sanctuary'], ['Sanctuary Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Agahnims Tower', 'Castle Tower',
|
||||||
|
['Castle Tower - Room 03', 'Castle Tower - Dark Maze'],
|
||||||
|
['Agahnim 1', 'Agahnims Tower Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Agahnim 1', 'Castle Tower', ['Agahnim 1'], None),
|
||||||
|
create_cave_region(world, player, 'Old Man Cave', 'a connector', ['Old Man'],
|
||||||
|
['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']),
|
||||||
|
create_cave_region(world, player, 'Old Man House', 'a connector', None,
|
||||||
|
['Old Man House Exit (Bottom)', 'Old Man House Front to Back']),
|
||||||
|
create_cave_region(world, player, 'Old Man House Back', 'a connector', None,
|
||||||
|
['Old Man House Exit (Top)', 'Old Man House Back to Front']),
|
||||||
|
create_lw_region(world, player, 'Death Mountain', None,
|
||||||
|
['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)',
|
||||||
|
'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak',
|
||||||
|
'Spectacle Rock Cave (Bottom)', 'Broken Bridge (West)', 'Death Mountain Teleporter']),
|
||||||
|
create_cave_region(world, player, 'Death Mountain Return Cave', 'a connector', None,
|
||||||
|
['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']),
|
||||||
|
create_lw_region(world, player, 'Death Mountain Return Ledge', None,
|
||||||
|
['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)']),
|
||||||
|
create_cave_region(world, player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'],
|
||||||
|
['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']),
|
||||||
|
create_cave_region(world, player, 'Spectacle Rock Cave (Bottom)', 'a connector', None,
|
||||||
|
['Spectacle Rock Cave Exit']),
|
||||||
|
create_cave_region(world, player, 'Spectacle Rock Cave (Peak)', 'a connector', None,
|
||||||
|
['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']),
|
||||||
|
create_lw_region(world, player, 'East Death Mountain (Bottom)', None,
|
||||||
|
['Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)',
|
||||||
|
'East Death Mountain Teleporter', 'Hookshot Fairy', 'Fairy Ascension Rocks',
|
||||||
|
'Spiral Cave (Bottom)']),
|
||||||
|
create_cave_region(world, player, 'Hookshot Fairy', 'fairies deep in a cave'),
|
||||||
|
create_cave_region(world, player, 'Paradox Cave Front', 'a connector', None,
|
||||||
|
['Paradox Cave Push Block Reverse', 'Paradox Cave Exit (Bottom)',
|
||||||
|
'Light World Death Mountain Shop']),
|
||||||
|
create_cave_region(world, player, 'Paradox Cave Chest Area', 'a connector', ['Paradox Cave Lower - Far Left',
|
||||||
|
'Paradox Cave Lower - Left',
|
||||||
|
'Paradox Cave Lower - Right',
|
||||||
|
'Paradox Cave Lower - Far Right',
|
||||||
|
'Paradox Cave Lower - Middle',
|
||||||
|
'Paradox Cave Upper - Left',
|
||||||
|
'Paradox Cave Upper - Right'],
|
||||||
['Paradox Cave Push Block', 'Paradox Cave Bomb Jump']),
|
['Paradox Cave Push Block', 'Paradox Cave Bomb Jump']),
|
||||||
create_cave_region(player, 'Paradox Cave', 'a connector', None, ['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']),
|
create_cave_region(world, player, 'Paradox Cave', 'a connector', None,
|
||||||
create_cave_region(player, 'Light World Death Mountain Shop', 'a common shop'),
|
['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']),
|
||||||
create_lw_region(player, 'East Death Mountain (Top)', None, ['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access', 'East Death Mountain Drop', 'Turtle Rock Teleporter', 'Fairy Ascension Ledge']),
|
create_cave_region(world, player, 'Light World Death Mountain Shop', 'a common shop'),
|
||||||
create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop']),
|
create_lw_region(world, player, 'East Death Mountain (Top)', None,
|
||||||
create_cave_region(player, 'Spiral Cave (Top)', 'a connector', ['Spiral Cave'], ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
|
['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access',
|
||||||
create_cave_region(player, 'Spiral Cave (Bottom)', 'a connector', None, ['Spiral Cave Exit']),
|
'East Death Mountain Drop', 'Turtle Rock Teleporter', 'Fairy Ascension Ledge']),
|
||||||
create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Drop', 'Fairy Ascension Cave (Bottom)']),
|
create_lw_region(world, player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop']),
|
||||||
create_cave_region(player, 'Fairy Ascension Cave (Bottom)', 'a connector', None, ['Fairy Ascension Cave Climb', 'Fairy Ascension Cave Exit (Bottom)']),
|
create_cave_region(world, player, 'Spiral Cave (Top)', 'a connector', ['Spiral Cave'],
|
||||||
create_cave_region(player, 'Fairy Ascension Cave (Drop)', 'a connector', None, ['Fairy Ascension Cave Pots']),
|
['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
|
||||||
create_cave_region(player, 'Fairy Ascension Cave (Top)', 'a connector', None, ['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Drop']),
|
create_cave_region(world, player, 'Spiral Cave (Bottom)', 'a connector', None, ['Spiral Cave Exit']),
|
||||||
create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)']),
|
create_lw_region(world, player, 'Fairy Ascension Plateau', None,
|
||||||
create_lw_region(player, 'Death Mountain (Top)', ['Ether Tablet'], ['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop']),
|
['Fairy Ascension Drop', 'Fairy Ascension Cave (Bottom)']),
|
||||||
create_lw_region(player, 'Spectacle Rock', ['Spectacle Rock'], ['Spectacle Rock Drop']),
|
create_cave_region(world, player, 'Fairy Ascension Cave (Bottom)', 'a connector', None,
|
||||||
create_dungeon_region(player, 'Tower of Hera (Bottom)', 'Tower of Hera', ['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'], ['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
|
['Fairy Ascension Cave Climb', 'Fairy Ascension Cave Exit (Bottom)']),
|
||||||
create_dungeon_region(player, 'Tower of Hera (Basement)', 'Tower of Hera', ['Tower of Hera - Big Key Chest']),
|
create_cave_region(world, player, 'Fairy Ascension Cave (Drop)', 'a connector', None,
|
||||||
create_dungeon_region(player, 'Tower of Hera (Top)', 'Tower of Hera', ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss', 'Tower of Hera - Prize']),
|
['Fairy Ascension Cave Pots']),
|
||||||
|
create_cave_region(world, player, 'Fairy Ascension Cave (Top)', 'a connector', None,
|
||||||
|
['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Drop']),
|
||||||
|
create_lw_region(world, player, 'Fairy Ascension Ledge', None,
|
||||||
|
['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)']),
|
||||||
|
create_lw_region(world, player, 'Death Mountain (Top)', ['Ether Tablet'],
|
||||||
|
['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop']),
|
||||||
|
create_lw_region(world, player, 'Spectacle Rock', ['Spectacle Rock'], ['Spectacle Rock Drop']),
|
||||||
|
create_dungeon_region(world, player, 'Tower of Hera (Bottom)', 'Tower of Hera',
|
||||||
|
['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'],
|
||||||
|
['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Tower of Hera (Basement)', 'Tower of Hera',
|
||||||
|
['Tower of Hera - Big Key Chest']),
|
||||||
|
create_dungeon_region(world, player, 'Tower of Hera (Top)', 'Tower of Hera',
|
||||||
|
['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss',
|
||||||
|
'Tower of Hera - Prize']),
|
||||||
|
|
||||||
create_dw_region(player, 'East Dark World', ['Pyramid'], ['Pyramid Fairy', 'South Dark World Bridge', 'Palace of Darkness', 'Dark Lake Hylia Drop (East)',
|
create_dw_region(world, player, 'East Dark World', ['Pyramid'],
|
||||||
'Hyrule Castle Ledge Mirror Spot', 'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint', 'Pyramid Hole', 'Northeast Dark World Broken Bridge Pass',]),
|
['Pyramid Fairy', 'South Dark World Bridge', 'Palace of Darkness',
|
||||||
create_dw_region(player, 'Catfish', ['Catfish'], ['Catfish Exit Rock']),
|
'Dark Lake Hylia Drop (East)',
|
||||||
create_dw_region(player, 'Northeast Dark World', None, ['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass', 'Catfish Entrance Rock', 'Dark Lake Hylia Teleporter']),
|
'Hyrule Castle Ledge Mirror Spot', 'Dark Lake Hylia Fairy', 'Palace of Darkness Hint',
|
||||||
create_cave_region(player, 'Palace of Darkness Hint', 'a storyteller'),
|
'East Dark World Hint', 'Pyramid Hole', 'Northeast Dark World Broken Bridge Pass', ]),
|
||||||
create_cave_region(player, 'East Dark World Hint', 'a storyteller'),
|
create_dw_region(world, player, 'Catfish', ['Catfish'], ['Catfish Exit Rock']),
|
||||||
create_dw_region(player, 'South Dark World', ['Stumpy', 'Digging Game'], ['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock', 'Maze Race Mirror Spot',
|
create_dw_region(world, player, 'Northeast Dark World', None,
|
||||||
'Cave 45 Mirror Spot', 'East Dark World Bridge', 'Big Bomb Shop', 'Archery Game', 'Bonk Fairy (Dark)', 'Dark Lake Hylia Shop',
|
['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass',
|
||||||
'Bombos Tablet Mirror Spot']),
|
'Catfish Entrance Rock', 'Dark Lake Hylia Teleporter']),
|
||||||
create_lw_region(player, 'Bombos Tablet Ledge', ['Bombos Tablet']),
|
create_cave_region(world, player, 'Palace of Darkness Hint', 'a storyteller'),
|
||||||
create_cave_region(player, 'Big Bomb Shop', 'the bomb shop'),
|
create_cave_region(world, player, 'East Dark World Hint', 'a storyteller'),
|
||||||
create_cave_region(player, 'Archery Game', 'a game of skill'),
|
create_dw_region(world, player, 'South Dark World', ['Stumpy', 'Digging Game'],
|
||||||
create_dw_region(player, 'Dark Lake Hylia', None, ['Lake Hylia Island Mirror Spot', 'East Dark World Pier', 'Dark Lake Hylia Ledge']),
|
['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock',
|
||||||
create_dw_region(player, 'Dark Lake Hylia Central Island', None, ['Ice Palace', 'Lake Hylia Central Island Mirror Spot']),
|
'Maze Race Mirror Spot',
|
||||||
create_dw_region(player, 'Dark Lake Hylia Ledge', None, ['Dark Lake Hylia Ledge Drop', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave']),
|
'Cave 45 Mirror Spot', 'East Dark World Bridge', 'Big Bomb Shop', 'Archery Game',
|
||||||
create_cave_region(player, 'Dark Lake Hylia Ledge Hint', 'a storyteller'),
|
'Bonk Fairy (Dark)', 'Dark Lake Hylia Shop',
|
||||||
create_cave_region(player, 'Dark Lake Hylia Ledge Spike Cave', 'a spiky hint'),
|
'Bombos Tablet Mirror Spot']),
|
||||||
create_cave_region(player, 'Hype Cave', 'a bounty of five items', ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
|
create_lw_region(world, player, 'Bombos Tablet Ledge', ['Bombos Tablet']),
|
||||||
'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
|
create_cave_region(world, player, 'Big Bomb Shop', 'the bomb shop'),
|
||||||
create_dw_region(player, 'West Dark World', ['Frog'], ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House', 'Chest Game', 'Thieves Town', 'Graveyard Ledge Mirror Spot', 'Kings Grave Mirror Spot', 'Bumper Cave Entrance Rock',
|
create_cave_region(world, player, 'Archery Game', 'a game of skill'),
|
||||||
'Skull Woods Forest', 'Village of Outcasts Pegs', 'Village of Outcasts Eastern Rocks', 'Red Shield Shop', 'Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Dark World Lumberjack Shop']),
|
create_dw_region(world, player, 'Dark Lake Hylia', None,
|
||||||
create_dw_region(player, 'Dark Grassy Lawn', None, ['Grassy Lawn Pegs', 'Village of Outcasts Shop']),
|
['Lake Hylia Island Mirror Spot', 'East Dark World Pier', 'Dark Lake Hylia Ledge']),
|
||||||
create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Bat Cave Drop Ledge Mirror Spot', 'Dark World Hammer Peg Cave', 'Peg Area Rocks']),
|
create_dw_region(world, player, 'Dark Lake Hylia Central Island', None,
|
||||||
create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Mirror Spot', 'Bumper Cave Entrance Drop']),
|
['Ice Palace', 'Lake Hylia Central Island Mirror Spot']),
|
||||||
create_cave_region(player, 'Fortune Teller (Dark)', 'a fortune teller'),
|
create_dw_region(world, player, 'Dark Lake Hylia Ledge', None,
|
||||||
create_cave_region(player, 'Village of Outcasts Shop', 'a common shop'),
|
['Dark Lake Hylia Ledge Drop', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint',
|
||||||
create_cave_region(player, 'Dark Lake Hylia Shop', 'a common shop'),
|
'Dark Lake Hylia Ledge Spike Cave']),
|
||||||
create_cave_region(player, 'Dark World Lumberjack Shop', 'a common shop'),
|
create_cave_region(world, player, 'Dark Lake Hylia Ledge Hint', 'a storyteller'),
|
||||||
create_cave_region(player, 'Dark World Potion Shop', 'a common shop'),
|
create_cave_region(world, player, 'Dark Lake Hylia Ledge Spike Cave', 'a spiky hint'),
|
||||||
create_cave_region(player, 'Dark World Hammer Peg Cave', 'a cave with an item', ['Peg Cave']),
|
create_cave_region(world, player, 'Hype Cave', 'a bounty of five items',
|
||||||
create_cave_region(player, 'Pyramid Fairy', 'a cave with two chests', ['Pyramid Fairy - Left', 'Pyramid Fairy - Right']),
|
['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
|
||||||
create_cave_region(player, 'Brewery', 'a house with a chest', ['Brewery']),
|
'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
|
||||||
create_cave_region(player, 'C-Shaped House', 'a house with a chest', ['C-Shaped House']),
|
create_dw_region(world, player, 'West Dark World', ['Frog'],
|
||||||
create_cave_region(player, 'Chest Game', 'a game of 16 chests', ['Chest Game']),
|
['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House',
|
||||||
create_cave_region(player, 'Red Shield Shop', 'the rare shop'),
|
'Chest Game', 'Thieves Town', 'Graveyard Ledge Mirror Spot', 'Kings Grave Mirror Spot',
|
||||||
create_cave_region(player, 'Dark Sanctuary Hint', 'a storyteller'),
|
'Bumper Cave Entrance Rock',
|
||||||
create_cave_region(player, 'Bumper Cave', 'a connector', None, ['Bumper Cave Exit (Bottom)', 'Bumper Cave Exit (Top)']),
|
'Skull Woods Forest', 'Village of Outcasts Pegs', 'Village of Outcasts Eastern Rocks',
|
||||||
create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)', 'Bumper Cave Ledge Mirror Spot']),
|
'Red Shield Shop', 'Dark Sanctuary Hint', 'Fortune Teller (Dark)',
|
||||||
create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)',
|
'Dark World Lumberjack Shop']),
|
||||||
'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']),
|
create_dw_region(world, player, 'Dark Grassy Lawn', None, ['Grassy Lawn Pegs', 'Village of Outcasts Shop']),
|
||||||
create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section']),
|
create_dw_region(world, player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'],
|
||||||
create_dw_region(player, 'Dark Desert', None, ['Misery Mire', 'Mire Shed', 'Desert Ledge (Northeast) Mirror Spot', 'Desert Ledge Mirror Spot', 'Desert Palace Stairs Mirror Spot',
|
['Bat Cave Drop Ledge Mirror Spot', 'Dark World Hammer Peg Cave', 'Peg Area Rocks']),
|
||||||
'Desert Palace Entrance (North) Mirror Spot', 'Dark Desert Hint', 'Dark Desert Fairy']),
|
create_dw_region(world, player, 'Bumper Cave Entrance', None,
|
||||||
create_cave_region(player, 'Mire Shed', 'a cave with two chests', ['Mire Shed - Left', 'Mire Shed - Right']),
|
['Bumper Cave (Bottom)', 'Bumper Cave Entrance Mirror Spot', 'Bumper Cave Entrance Drop']),
|
||||||
create_cave_region(player, 'Dark Desert Hint', 'a storyteller'),
|
create_cave_region(world, player, 'Fortune Teller (Dark)', 'a fortune teller'),
|
||||||
create_dw_region(player, 'Dark Death Mountain (West Bottom)', None, ['Spike Cave', 'Spectacle Rock Mirror Spot', 'Dark Death Mountain Fairy']),
|
create_cave_region(world, player, 'Village of Outcasts Shop', 'a common shop'),
|
||||||
create_dw_region(player, 'Dark Death Mountain (Top)', None, ['Dark Death Mountain Drop (East)', 'Dark Death Mountain Drop (West)', 'Ganons Tower', 'Superbunny Cave (Top)',
|
create_cave_region(world, player, 'Dark Lake Hylia Shop', 'a common shop'),
|
||||||
'Hookshot Cave', 'East Death Mountain (Top) Mirror Spot', 'Turtle Rock']),
|
create_cave_region(world, player, 'Dark World Lumberjack Shop', 'a common shop'),
|
||||||
create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)', 'Mimic Cave Mirror Spot', 'Spiral Cave Mirror Spot']),
|
create_cave_region(world, player, 'Dark World Potion Shop', 'a common shop'),
|
||||||
create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Isolated Ledge Mirror Spot', 'Turtle Rock Isolated Ledge Entrance']),
|
create_cave_region(world, player, 'Dark World Hammer Peg Cave', 'a cave with an item', ['Peg Cave']),
|
||||||
create_dw_region(player, 'Dark Death Mountain (East Bottom)', None, ['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)', 'Fairy Ascension Mirror Spot']),
|
create_cave_region(world, player, 'Pyramid Fairy', 'a cave with two chests',
|
||||||
create_cave_region(player, 'Superbunny Cave (Top)', 'a connector', ['Superbunny Cave - Top', 'Superbunny Cave - Bottom'], ['Superbunny Cave Exit (Top)']),
|
['Pyramid Fairy - Left', 'Pyramid Fairy - Right']),
|
||||||
create_cave_region(player, 'Superbunny Cave (Bottom)', 'a connector', None, ['Superbunny Cave Climb', 'Superbunny Cave Exit (Bottom)']),
|
create_cave_region(world, player, 'Brewery', 'a house with a chest', ['Brewery']),
|
||||||
create_cave_region(player, 'Spike Cave', 'Spike Cave', ['Spike Cave']),
|
create_cave_region(world, player, 'C-Shaped House', 'a house with a chest', ['C-Shaped House']),
|
||||||
create_cave_region(player, 'Hookshot Cave', 'a connector', ['Hookshot Cave - Top Right', 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right', 'Hookshot Cave - Bottom Left'],
|
create_cave_region(world, player, 'Chest Game', 'a game of 16 chests', ['Chest Game']),
|
||||||
|
create_cave_region(world, player, 'Red Shield Shop', 'the rare shop'),
|
||||||
|
create_cave_region(world, player, 'Dark Sanctuary Hint', 'a storyteller'),
|
||||||
|
create_cave_region(world, player, 'Bumper Cave', 'a connector', None,
|
||||||
|
['Bumper Cave Exit (Bottom)', 'Bumper Cave Exit (Top)']),
|
||||||
|
create_dw_region(world, player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'],
|
||||||
|
['Bumper Cave Ledge Drop', 'Bumper Cave (Top)', 'Bumper Cave Ledge Mirror Spot']),
|
||||||
|
create_dw_region(world, player, 'Skull Woods Forest', None,
|
||||||
|
['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)',
|
||||||
|
'Skull Woods First Section Hole (North)',
|
||||||
|
'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']),
|
||||||
|
create_dw_region(world, player, 'Skull Woods Forest (West)', None,
|
||||||
|
['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)',
|
||||||
|
'Skull Woods Final Section']),
|
||||||
|
create_dw_region(world, player, 'Dark Desert', None,
|
||||||
|
['Misery Mire', 'Mire Shed', 'Desert Ledge (Northeast) Mirror Spot',
|
||||||
|
'Desert Ledge Mirror Spot', 'Desert Palace Stairs Mirror Spot',
|
||||||
|
'Desert Palace Entrance (North) Mirror Spot', 'Dark Desert Hint', 'Dark Desert Fairy']),
|
||||||
|
create_cave_region(world, player, 'Mire Shed', 'a cave with two chests',
|
||||||
|
['Mire Shed - Left', 'Mire Shed - Right']),
|
||||||
|
create_cave_region(world, player, 'Dark Desert Hint', 'a storyteller'),
|
||||||
|
create_dw_region(world, player, 'Dark Death Mountain (West Bottom)', None,
|
||||||
|
['Spike Cave', 'Spectacle Rock Mirror Spot', 'Dark Death Mountain Fairy']),
|
||||||
|
create_dw_region(world, player, 'Dark Death Mountain (Top)', None,
|
||||||
|
['Dark Death Mountain Drop (East)', 'Dark Death Mountain Drop (West)', 'Ganons Tower',
|
||||||
|
'Superbunny Cave (Top)',
|
||||||
|
'Hookshot Cave', 'East Death Mountain (Top) Mirror Spot', 'Turtle Rock']),
|
||||||
|
create_dw_region(world, player, 'Dark Death Mountain Ledge', None,
|
||||||
|
['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)',
|
||||||
|
'Mimic Cave Mirror Spot', 'Spiral Cave Mirror Spot']),
|
||||||
|
create_dw_region(world, player, 'Dark Death Mountain Isolated Ledge', None,
|
||||||
|
['Isolated Ledge Mirror Spot', 'Turtle Rock Isolated Ledge Entrance']),
|
||||||
|
create_dw_region(world, player, 'Dark Death Mountain (East Bottom)', None,
|
||||||
|
['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)',
|
||||||
|
'Fairy Ascension Mirror Spot']),
|
||||||
|
create_cave_region(world, player, 'Superbunny Cave (Top)', 'a connector',
|
||||||
|
['Superbunny Cave - Top', 'Superbunny Cave - Bottom'], ['Superbunny Cave Exit (Top)']),
|
||||||
|
create_cave_region(world, player, 'Superbunny Cave (Bottom)', 'a connector', None,
|
||||||
|
['Superbunny Cave Climb', 'Superbunny Cave Exit (Bottom)']),
|
||||||
|
create_cave_region(world, player, 'Spike Cave', 'Spike Cave', ['Spike Cave']),
|
||||||
|
create_cave_region(world, player, 'Hookshot Cave', 'a connector',
|
||||||
|
['Hookshot Cave - Top Right', 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right',
|
||||||
|
'Hookshot Cave - Bottom Left'],
|
||||||
['Hookshot Cave Exit (South)', 'Hookshot Cave Exit (North)']),
|
['Hookshot Cave Exit (South)', 'Hookshot Cave Exit (North)']),
|
||||||
create_dw_region(player, 'Death Mountain Floating Island (Dark World)', None, ['Floating Island Drop', 'Hookshot Cave Back Entrance', 'Floating Island Mirror Spot']),
|
create_dw_region(world, player, 'Death Mountain Floating Island (Dark World)', None,
|
||||||
create_lw_region(player, 'Death Mountain Floating Island (Light World)', ['Floating Island']),
|
['Floating Island Drop', 'Hookshot Cave Back Entrance', 'Floating Island Mirror Spot']),
|
||||||
create_dw_region(player, 'Turtle Rock (Top)', None, ['Turtle Rock Drop']),
|
create_lw_region(world, player, 'Death Mountain Floating Island (Light World)', ['Floating Island']),
|
||||||
create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave']),
|
create_dw_region(world, player, 'Turtle Rock (Top)', None, ['Turtle Rock Drop']),
|
||||||
create_cave_region(player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']),
|
create_lw_region(world, player, 'Mimic Cave Ledge', None, ['Mimic Cave']),
|
||||||
|
create_cave_region(world, player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']),
|
||||||
|
|
||||||
create_dungeon_region(player, 'Swamp Palace (Entrance)', 'Swamp Palace', None, ['Swamp Palace Moat', 'Swamp Palace Exit']),
|
create_dungeon_region(world, player, 'Swamp Palace (Entrance)', 'Swamp Palace', None,
|
||||||
create_dungeon_region(player, 'Swamp Palace (First Room)', 'Swamp Palace', ['Swamp Palace - Entrance'], ['Swamp Palace Small Key Door']),
|
['Swamp Palace Moat', 'Swamp Palace Exit']),
|
||||||
create_dungeon_region(player, 'Swamp Palace (Starting Area)', 'Swamp Palace', ['Swamp Palace - Map Chest'], ['Swamp Palace (Center)']),
|
create_dungeon_region(world, player, 'Swamp Palace (First Room)', 'Swamp Palace', ['Swamp Palace - Entrance'],
|
||||||
create_dungeon_region(player, 'Swamp Palace (Center)', 'Swamp Palace', ['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest',
|
['Swamp Palace Small Key Door']),
|
||||||
'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']),
|
create_dungeon_region(world, player, 'Swamp Palace (Starting Area)', 'Swamp Palace',
|
||||||
create_dungeon_region(player, 'Swamp Palace (North)', 'Swamp Palace', ['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right',
|
['Swamp Palace - Map Chest'], ['Swamp Palace (Center)']),
|
||||||
'Swamp Palace - Waterfall Room', 'Swamp Palace - Boss', 'Swamp Palace - Prize']),
|
create_dungeon_region(world, player, 'Swamp Palace (Center)', 'Swamp Palace',
|
||||||
create_dungeon_region(player, 'Thieves Town (Entrance)', 'Thieves\' Town', ['Thieves\' Town - Big Key Chest',
|
['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest',
|
||||||
'Thieves\' Town - Map Chest',
|
'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']),
|
||||||
'Thieves\' Town - Compass Chest',
|
create_dungeon_region(world, player, 'Swamp Palace (North)', 'Swamp Palace',
|
||||||
'Thieves\' Town - Ambush Chest'], ['Thieves Town Big Key Door', 'Thieves Town Exit']),
|
['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right',
|
||||||
create_dungeon_region(player, 'Thieves Town (Deep)', 'Thieves\' Town', ['Thieves\' Town - Attic',
|
'Swamp Palace - Waterfall Room', 'Swamp Palace - Boss', 'Swamp Palace - Prize']),
|
||||||
'Thieves\' Town - Big Chest',
|
create_dungeon_region(world, player, 'Thieves Town (Entrance)', 'Thieves\' Town',
|
||||||
'Thieves\' Town - Blind\'s Cell'], ['Blind Fight']),
|
['Thieves\' Town - Big Key Chest',
|
||||||
create_dungeon_region(player, 'Blind Fight', 'Thieves\' Town', ['Thieves\' Town - Boss', 'Thieves\' Town - Prize']),
|
'Thieves\' Town - Map Chest',
|
||||||
create_dungeon_region(player, 'Skull Woods First Section', 'Skull Woods', ['Skull Woods - Map Chest'], ['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump', 'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
|
'Thieves\' Town - Compass Chest',
|
||||||
create_dungeon_region(player, 'Skull Woods First Section (Right)', 'Skull Woods', ['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']),
|
'Thieves\' Town - Ambush Chest'], ['Thieves Town Big Key Door', 'Thieves Town Exit']),
|
||||||
create_dungeon_region(player, 'Skull Woods First Section (Left)', 'Skull Woods', ['Skull Woods - Compass Chest', 'Skull Woods - Pot Prison'], ['Skull Woods First Section (Left) Door to Exit', 'Skull Woods First Section (Left) Door to Right']),
|
create_dungeon_region(world, player, 'Thieves Town (Deep)', 'Thieves\' Town', ['Thieves\' Town - Attic',
|
||||||
create_dungeon_region(player, 'Skull Woods First Section (Top)', 'Skull Woods', ['Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']),
|
'Thieves\' Town - Big Chest',
|
||||||
create_dungeon_region(player, 'Skull Woods Second Section (Drop)', 'Skull Woods', None, ['Skull Woods Second Section (Drop)']),
|
'Thieves\' Town - Blind\'s Cell'],
|
||||||
create_dungeon_region(player, 'Skull Woods Second Section', 'Skull Woods', ['Skull Woods - Big Key Chest'], ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
|
['Blind Fight']),
|
||||||
create_dungeon_region(player, 'Skull Woods Final Section (Entrance)', 'Skull Woods', ['Skull Woods - Bridge Room'], ['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
|
create_dungeon_region(world, player, 'Blind Fight', 'Thieves\' Town',
|
||||||
create_dungeon_region(player, 'Skull Woods Final Section (Mothula)', 'Skull Woods', ['Skull Woods - Boss', 'Skull Woods - Prize']),
|
['Thieves\' Town - Boss', 'Thieves\' Town - Prize']),
|
||||||
create_dungeon_region(player, 'Ice Palace (Entrance)', 'Ice Palace', None, ['Ice Palace Entrance Room', 'Ice Palace Exit']),
|
create_dungeon_region(world, player, 'Skull Woods First Section', 'Skull Woods', ['Skull Woods - Map Chest'],
|
||||||
create_dungeon_region(player, 'Ice Palace (Main)', 'Ice Palace', ['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest',
|
['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump',
|
||||||
'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'], ['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
|
'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
|
||||||
create_dungeon_region(player, 'Ice Palace (East)', 'Ice Palace', ['Ice Palace - Spike Room'], ['Ice Palace (East Top)']),
|
create_dungeon_region(world, player, 'Skull Woods First Section (Right)', 'Skull Woods',
|
||||||
create_dungeon_region(player, 'Ice Palace (East Top)', 'Ice Palace', ['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']),
|
['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']),
|
||||||
create_dungeon_region(player, 'Ice Palace (Kholdstare)', 'Ice Palace', ['Ice Palace - Boss', 'Ice Palace - Prize']),
|
create_dungeon_region(world, player, 'Skull Woods First Section (Left)', 'Skull Woods',
|
||||||
create_dungeon_region(player, 'Misery Mire (Entrance)', 'Misery Mire', None, ['Misery Mire Entrance Gap', 'Misery Mire Exit']),
|
['Skull Woods - Compass Chest', 'Skull Woods - Pot Prison'],
|
||||||
create_dungeon_region(player, 'Misery Mire (Main)', 'Misery Mire', ['Misery Mire - Big Chest', 'Misery Mire - Map Chest', 'Misery Mire - Main Lobby',
|
['Skull Woods First Section (Left) Door to Exit',
|
||||||
'Misery Mire - Bridge Chest', 'Misery Mire - Spike Chest'], ['Misery Mire (West)', 'Misery Mire Big Key Door']),
|
'Skull Woods First Section (Left) Door to Right']),
|
||||||
create_dungeon_region(player, 'Misery Mire (West)', 'Misery Mire', ['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
|
create_dungeon_region(world, player, 'Skull Woods First Section (Top)', 'Skull Woods',
|
||||||
create_dungeon_region(player, 'Misery Mire (Final Area)', 'Misery Mire', None, ['Misery Mire (Vitreous)']),
|
['Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']),
|
||||||
create_dungeon_region(player, 'Misery Mire (Vitreous)', 'Misery Mire', ['Misery Mire - Boss', 'Misery Mire - Prize']),
|
create_dungeon_region(world, player, 'Skull Woods Second Section (Drop)', 'Skull Woods', None,
|
||||||
create_dungeon_region(player, 'Turtle Rock (Entrance)', 'Turtle Rock', None, ['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
|
['Skull Woods Second Section (Drop)']),
|
||||||
create_dungeon_region(player, 'Turtle Rock (First Section)', 'Turtle Rock', ['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left',
|
create_dungeon_region(world, player, 'Skull Woods Second Section', 'Skull Woods',
|
||||||
'Turtle Rock - Roller Room - Right'], ['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
|
['Skull Woods - Big Key Chest'],
|
||||||
create_dungeon_region(player, 'Turtle Rock (Chain Chomp Room)', 'Turtle Rock', ['Turtle Rock - Chain Chomps'], ['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']),
|
['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
|
||||||
create_dungeon_region(player, 'Turtle Rock (Second Section)', 'Turtle Rock', ['Turtle Rock - Big Key Chest'], ['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase', 'Turtle Rock Big Key Door']),
|
create_dungeon_region(world, player, 'Skull Woods Final Section (Entrance)', 'Skull Woods',
|
||||||
create_dungeon_region(player, 'Turtle Rock (Big Chest)', 'Turtle Rock', ['Turtle Rock - Big Chest'], ['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']),
|
['Skull Woods - Bridge Room'],
|
||||||
create_dungeon_region(player, 'Turtle Rock (Crystaroller Room)', 'Turtle Rock', ['Turtle Rock - Crystaroller Room'], ['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']),
|
['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
|
||||||
create_dungeon_region(player, 'Turtle Rock (Dark Room)', 'Turtle Rock', None, ['Turtle Rock (Dark Room) (North)', 'Turtle Rock (Dark Room) (South)']),
|
create_dungeon_region(world, player, 'Skull Woods Final Section (Mothula)', 'Skull Woods',
|
||||||
create_dungeon_region(player, 'Turtle Rock (Eye Bridge)', 'Turtle Rock', ['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right',
|
['Skull Woods - Boss', 'Skull Woods - Prize']),
|
||||||
'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'],
|
create_dungeon_region(world, player, 'Ice Palace (Entrance)', 'Ice Palace', None,
|
||||||
['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)', 'Turtle Rock Isolated Ledge Exit']),
|
['Ice Palace Entrance Room', 'Ice Palace Exit']),
|
||||||
create_dungeon_region(player, 'Turtle Rock (Trinexx)', 'Turtle Rock', ['Turtle Rock - Boss', 'Turtle Rock - Prize']),
|
create_dungeon_region(world, player, 'Ice Palace (Main)', 'Ice Palace',
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Entrance)', 'Palace of Darkness', ['Palace of Darkness - Shooter Room'], ['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall', 'Palace of Darkness Exit']),
|
['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest',
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Center)', 'Palace of Darkness', ['Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - Stalfos Basement'],
|
'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'],
|
||||||
['Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (North)', 'Palace of Darkness Big Key Door']),
|
['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Big Key Chest)', 'Palace of Darkness', ['Palace of Darkness - Big Key Chest']),
|
create_dungeon_region(world, player, 'Ice Palace (East)', 'Ice Palace', ['Ice Palace - Spike Room'],
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Bonk Section)', 'Palace of Darkness', ['Palace of Darkness - The Arena - Ledge', 'Palace of Darkness - Map Chest'], ['Palace of Darkness Hammer Peg Drop']),
|
['Ice Palace (East Top)']),
|
||||||
create_dungeon_region(player, 'Palace of Darkness (North)', 'Palace of Darkness', ['Palace of Darkness - Compass Chest', 'Palace of Darkness - Dark Basement - Left', 'Palace of Darkness - Dark Basement - Right'],
|
create_dungeon_region(world, player, 'Ice Palace (East Top)', 'Ice Palace',
|
||||||
|
['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']),
|
||||||
|
create_dungeon_region(world, player, 'Ice Palace (Kholdstare)', 'Ice Palace',
|
||||||
|
['Ice Palace - Boss', 'Ice Palace - Prize']),
|
||||||
|
create_dungeon_region(world, player, 'Misery Mire (Entrance)', 'Misery Mire', None,
|
||||||
|
['Misery Mire Entrance Gap', 'Misery Mire Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Misery Mire (Main)', 'Misery Mire',
|
||||||
|
['Misery Mire - Big Chest', 'Misery Mire - Map Chest', 'Misery Mire - Main Lobby',
|
||||||
|
'Misery Mire - Bridge Chest', 'Misery Mire - Spike Chest'],
|
||||||
|
['Misery Mire (West)', 'Misery Mire Big Key Door']),
|
||||||
|
create_dungeon_region(world, player, 'Misery Mire (West)', 'Misery Mire',
|
||||||
|
['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
|
||||||
|
create_dungeon_region(world, player, 'Misery Mire (Final Area)', 'Misery Mire', None,
|
||||||
|
['Misery Mire (Vitreous)']),
|
||||||
|
create_dungeon_region(world, player, 'Misery Mire (Vitreous)', 'Misery Mire',
|
||||||
|
['Misery Mire - Boss', 'Misery Mire - Prize']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Entrance)', 'Turtle Rock', None,
|
||||||
|
['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (First Section)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left',
|
||||||
|
'Turtle Rock - Roller Room - Right'],
|
||||||
|
['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Chain Chomp Room)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Chain Chomps'],
|
||||||
|
['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Second Section)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Big Key Chest'],
|
||||||
|
['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase',
|
||||||
|
'Turtle Rock Big Key Door']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Big Chest)', 'Turtle Rock', ['Turtle Rock - Big Chest'],
|
||||||
|
['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Crystaroller Room)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Crystaroller Room'],
|
||||||
|
['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Dark Room)', 'Turtle Rock', None,
|
||||||
|
['Turtle Rock (Dark Room) (North)', 'Turtle Rock (Dark Room) (South)']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Eye Bridge)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right',
|
||||||
|
'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'],
|
||||||
|
['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)',
|
||||||
|
'Turtle Rock Isolated Ledge Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Turtle Rock (Trinexx)', 'Turtle Rock',
|
||||||
|
['Turtle Rock - Boss', 'Turtle Rock - Prize']),
|
||||||
|
create_dungeon_region(world, player, 'Palace of Darkness (Entrance)', 'Palace of Darkness',
|
||||||
|
['Palace of Darkness - Shooter Room'],
|
||||||
|
['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall',
|
||||||
|
'Palace of Darkness Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Palace of Darkness (Center)', 'Palace of Darkness',
|
||||||
|
['Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - Stalfos Basement'],
|
||||||
|
['Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (North)',
|
||||||
|
'Palace of Darkness Big Key Door']),
|
||||||
|
create_dungeon_region(world, player, 'Palace of Darkness (Big Key Chest)', 'Palace of Darkness',
|
||||||
|
['Palace of Darkness - Big Key Chest']),
|
||||||
|
create_dungeon_region(world, player, 'Palace of Darkness (Bonk Section)', 'Palace of Darkness',
|
||||||
|
['Palace of Darkness - The Arena - Ledge', 'Palace of Darkness - Map Chest'],
|
||||||
|
['Palace of Darkness Hammer Peg Drop']),
|
||||||
|
create_dungeon_region(world, player, 'Palace of Darkness (North)', 'Palace of Darkness',
|
||||||
|
['Palace of Darkness - Compass Chest', 'Palace of Darkness - Dark Basement - Left',
|
||||||
|
'Palace of Darkness - Dark Basement - Right'],
|
||||||
['Palace of Darkness Spike Statue Room Door', 'Palace of Darkness Maze Door']),
|
['Palace of Darkness Spike Statue Room Door', 'Palace of Darkness Maze Door']),
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Maze)', 'Palace of Darkness', ['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom', 'Palace of Darkness - Big Chest']),
|
create_dungeon_region(world, player, 'Palace of Darkness (Maze)', 'Palace of Darkness',
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Harmless Hellway)', 'Palace of Darkness', ['Palace of Darkness - Harmless Hellway']),
|
['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom',
|
||||||
create_dungeon_region(player, 'Palace of Darkness (Final Section)', 'Palace of Darkness', ['Palace of Darkness - Boss', 'Palace of Darkness - Prize']),
|
'Palace of Darkness - Big Chest']),
|
||||||
create_dungeon_region(player, 'Ganons Tower (Entrance)', 'Ganon\'s Tower', ['Ganons Tower - Bob\'s Torch', 'Ganons Tower - Hope Room - Left', 'Ganons Tower - Hope Room - Right'],
|
create_dungeon_region(world, player, 'Palace of Darkness (Harmless Hellway)', 'Palace of Darkness',
|
||||||
['Ganons Tower (Tile Room)', 'Ganons Tower (Hookshot Room)', 'Ganons Tower Big Key Door', 'Ganons Tower Exit']),
|
['Palace of Darkness - Harmless Hellway']),
|
||||||
create_dungeon_region(player, 'Ganons Tower (Tile Room)', 'Ganon\'s Tower', ['Ganons Tower - Tile Room'], ['Ganons Tower (Tile Room) Key Door']),
|
create_dungeon_region(world, player, 'Palace of Darkness (Final Section)', 'Palace of Darkness',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Compass Room)', 'Ganon\'s Tower', ['Ganons Tower - Compass Room - Top Left', 'Ganons Tower - Compass Room - Top Right',
|
['Palace of Darkness - Boss', 'Palace of Darkness - Prize']),
|
||||||
'Ganons Tower - Compass Room - Bottom Left', 'Ganons Tower - Compass Room - Bottom Right'],
|
create_dungeon_region(world, player, 'Ganons Tower (Entrance)', 'Ganon\'s Tower',
|
||||||
['Ganons Tower (Bottom) (East)']),
|
['Ganons Tower - Bob\'s Torch', 'Ganons Tower - Hope Room - Left',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Hookshot Room)', 'Ganon\'s Tower', ['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right',
|
'Ganons Tower - Hope Room - Right'],
|
||||||
'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right'],
|
['Ganons Tower (Tile Room)', 'Ganons Tower (Hookshot Room)', 'Ganons Tower Big Key Door',
|
||||||
|
'Ganons Tower Exit']),
|
||||||
|
create_dungeon_region(world, player, 'Ganons Tower (Tile Room)', 'Ganon\'s Tower', ['Ganons Tower - Tile Room'],
|
||||||
|
['Ganons Tower (Tile Room) Key Door']),
|
||||||
|
create_dungeon_region(world, player, 'Ganons Tower (Compass Room)', 'Ganon\'s Tower',
|
||||||
|
['Ganons Tower - Compass Room - Top Left', 'Ganons Tower - Compass Room - Top Right',
|
||||||
|
'Ganons Tower - Compass Room - Bottom Left',
|
||||||
|
'Ganons Tower - Compass Room - Bottom Right'], ['Ganons Tower (Bottom) (East)']),
|
||||||
|
create_dungeon_region(world, player, 'Ganons Tower (Hookshot Room)', 'Ganon\'s Tower',
|
||||||
|
['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right',
|
||||||
|
'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right'],
|
||||||
['Ganons Tower (Map Room)', 'Ganons Tower (Double Switch Room)']),
|
['Ganons Tower (Map Room)', 'Ganons Tower (Double Switch Room)']),
|
||||||
create_dungeon_region(player, 'Ganons Tower (Map Room)', 'Ganon\'s Tower', ['Ganons Tower - Map Chest']),
|
create_dungeon_region(world, player, 'Ganons Tower (Map Room)', 'Ganon\'s Tower', ['Ganons Tower - Map Chest']),
|
||||||
create_dungeon_region(player, 'Ganons Tower (Firesnake Room)', 'Ganon\'s Tower', ['Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']),
|
create_dungeon_region(world, player, 'Ganons Tower (Firesnake Room)', 'Ganon\'s Tower',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Teleport Room)', 'Ganon\'s Tower', ['Ganons Tower - Randomizer Room - Top Left', 'Ganons Tower - Randomizer Room - Top Right',
|
['Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']),
|
||||||
'Ganons Tower - Randomizer Room - Bottom Left', 'Ganons Tower - Randomizer Room - Bottom Right'],
|
create_dungeon_region(world, player, 'Ganons Tower (Teleport Room)', 'Ganon\'s Tower',
|
||||||
['Ganons Tower (Bottom) (West)']),
|
['Ganons Tower - Randomizer Room - Top Left',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Bottom)', 'Ganon\'s Tower', ['Ganons Tower - Bob\'s Chest', 'Ganons Tower - Big Chest', 'Ganons Tower - Big Key Room - Left',
|
'Ganons Tower - Randomizer Room - Top Right',
|
||||||
'Ganons Tower - Big Key Room - Right', 'Ganons Tower - Big Key Chest']),
|
'Ganons Tower - Randomizer Room - Bottom Left',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Top)', 'Ganon\'s Tower', None, ['Ganons Tower Torch Rooms']),
|
'Ganons Tower - Randomizer Room - Bottom Right'], ['Ganons Tower (Bottom) (West)']),
|
||||||
create_dungeon_region(player, 'Ganons Tower (Before Moldorm)', 'Ganon\'s Tower', ['Ganons Tower - Mini Helmasaur Room - Left', 'Ganons Tower - Mini Helmasaur Room - Right',
|
create_dungeon_region(world, player, 'Ganons Tower (Bottom)', 'Ganon\'s Tower',
|
||||||
'Ganons Tower - Pre-Moldorm Chest'], ['Ganons Tower Moldorm Door']),
|
['Ganons Tower - Bob\'s Chest', 'Ganons Tower - Big Chest',
|
||||||
create_dungeon_region(player, 'Ganons Tower (Moldorm)', 'Ganon\'s Tower', None, ['Ganons Tower Moldorm Gap']),
|
'Ganons Tower - Big Key Room - Left',
|
||||||
create_dungeon_region(player, 'Agahnim 2', 'Ganon\'s Tower', ['Ganons Tower - Validation Chest', 'Agahnim 2'], None),
|
'Ganons Tower - Big Key Room - Right', 'Ganons Tower - Big Key Chest']),
|
||||||
create_cave_region(player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']),
|
create_dungeon_region(world, player, 'Ganons Tower (Top)', 'Ganon\'s Tower', None,
|
||||||
create_cave_region(player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']),
|
['Ganons Tower Torch Rooms']),
|
||||||
create_dw_region(player, 'Pyramid Ledge', None, ['Pyramid Entrance', 'Pyramid Drop']),
|
create_dungeon_region(world, player, 'Ganons Tower (Before Moldorm)', 'Ganon\'s Tower',
|
||||||
create_lw_region(player, 'Desert Northern Cliffs'),
|
['Ganons Tower - Mini Helmasaur Room - Left',
|
||||||
create_dw_region(player, 'Dark Death Mountain Bunny Descent Area')
|
'Ganons Tower - Mini Helmasaur Room - Right',
|
||||||
|
'Ganons Tower - Pre-Moldorm Chest'], ['Ganons Tower Moldorm Door']),
|
||||||
|
create_dungeon_region(world, player, 'Ganons Tower (Moldorm)', 'Ganon\'s Tower', None,
|
||||||
|
['Ganons Tower Moldorm Gap']),
|
||||||
|
create_dungeon_region(world, player, 'Agahnim 2', 'Ganon\'s Tower',
|
||||||
|
['Ganons Tower - Validation Chest', 'Agahnim 2'], None),
|
||||||
|
create_cave_region(world, player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']),
|
||||||
|
create_cave_region(world, player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']),
|
||||||
|
create_dw_region(world, player, 'Pyramid Ledge', None, ['Pyramid Entrance', 'Pyramid Drop']),
|
||||||
|
create_lw_region(world, player, 'Desert Northern Cliffs'),
|
||||||
|
create_dw_region(world, player, 'Dark Death Mountain Bunny Descent Area')
|
||||||
]
|
]
|
||||||
|
|
||||||
world.initialize_regions()
|
world.initialize_regions()
|
||||||
|
|
||||||
|
|
||||||
def create_lw_region(player: int, name: str, locations=None, exits=None):
|
def create_lw_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
||||||
return _create_region(player, name, RegionType.LightWorld, 'Light World', locations, exits)
|
return _create_region(world, player, name, LTTPRegionType.LightWorld, 'Light World', locations, exits)
|
||||||
|
|
||||||
|
|
||||||
def create_dw_region(player: int, name: str, locations=None, exits=None):
|
def create_dw_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
||||||
return _create_region(player, name, RegionType.DarkWorld, 'Dark World', locations, exits)
|
return _create_region(world, player, name, LTTPRegionType.DarkWorld, 'Dark World', locations, exits)
|
||||||
|
|
||||||
|
|
||||||
def create_cave_region(player: int, name: str, hint: str, locations=None, exits=None):
|
def create_cave_region(world: MultiWorld, player: int, name: str, hint: str, locations=None, exits=None):
|
||||||
return _create_region(player, name, RegionType.Cave, hint, locations, exits)
|
return _create_region(world, player, name, LTTPRegionType.Cave, hint, locations, exits)
|
||||||
|
|
||||||
|
|
||||||
def create_dungeon_region(player: int, name: str, hint: str, locations=None, exits=None):
|
def create_dungeon_region(world: MultiWorld, player: int, name: str, hint: str, locations=None, exits=None):
|
||||||
return _create_region(player, name, RegionType.Dungeon, hint, locations, exits)
|
return _create_region(world, player, name, LTTPRegionType.Dungeon, hint, locations, exits)
|
||||||
|
|
||||||
|
|
||||||
def _create_region(player: int, name: str, type: RegionType, hint: str, locations=None, exits=None):
|
def _create_region(world: MultiWorld, player: int, name: str, type: LTTPRegionType, hint: str, locations=None,
|
||||||
|
exits=None):
|
||||||
from worlds.alttp.SubClasses import ALttPLocation
|
from worlds.alttp.SubClasses import ALttPLocation
|
||||||
ret = Region(name, type, hint, player)
|
ret = LTTPRegion(name, type, hint, player, world)
|
||||||
if locations is None:
|
if exits:
|
||||||
locations = []
|
for exit in exits:
|
||||||
if exits is None:
|
ret.exits.append(Entrance(player, exit, ret))
|
||||||
exits = []
|
if locations:
|
||||||
|
for location in locations:
|
||||||
for exit in exits:
|
address, player_address, crystal, hint_text = location_table[location]
|
||||||
ret.exits.append(Entrance(player, exit, ret))
|
ret.locations.append(ALttPLocation(player, location, address, crystal, hint_text, ret, player_address))
|
||||||
for location in locations:
|
|
||||||
address, player_address, crystal, hint_text = location_table[location]
|
|
||||||
ret.locations.append(ALttPLocation(player, location, address, crystal, hint_text, ret, player_address))
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def mark_light_world_regions(world, player: int):
|
def mark_light_world_regions(world, player: int):
|
||||||
# cross world caves may have some sections marked as both in_light_world, and in_dark_work.
|
# cross world caves may have some sections marked as both in_light_world, and in_dark_work.
|
||||||
# That is ok. the bunny logic will check for this case and incorporate special rules.
|
# That is ok. the bunny logic will check for this case and incorporate special rules.
|
||||||
queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.LightWorld)
|
queue = collections.deque(region for region in world.get_regions(player) if region.type == LTTPRegionType.LightWorld)
|
||||||
seen = set(queue)
|
seen = set(queue)
|
||||||
while queue:
|
while queue:
|
||||||
current = queue.popleft()
|
current = queue.popleft()
|
||||||
current.is_light_world = True
|
current.is_light_world = True
|
||||||
for exit in current.exits:
|
for exit in current.exits:
|
||||||
if exit.connected_region.type == RegionType.DarkWorld:
|
if exit.connected_region.type == LTTPRegionType.DarkWorld:
|
||||||
# Don't venture into the dark world
|
# Don't venture into the dark world
|
||||||
continue
|
continue
|
||||||
if exit.connected_region not in seen:
|
if exit.connected_region not in seen:
|
||||||
seen.add(exit.connected_region)
|
seen.add(exit.connected_region)
|
||||||
queue.append(exit.connected_region)
|
queue.append(exit.connected_region)
|
||||||
|
|
||||||
queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.DarkWorld)
|
queue = collections.deque(region for region in world.get_regions(player) if region.type == LTTPRegionType.DarkWorld)
|
||||||
seen = set(queue)
|
seen = set(queue)
|
||||||
while queue:
|
while queue:
|
||||||
current = queue.popleft()
|
current = queue.popleft()
|
||||||
current.is_dark_world = True
|
current.is_dark_world = True
|
||||||
for exit in current.exits:
|
for exit in current.exits:
|
||||||
if exit.connected_region.type == RegionType.LightWorld:
|
if exit.connected_region.type == LTTPRegionType.LightWorld:
|
||||||
# Don't venture into the light world
|
# Don't venture into the light world
|
||||||
continue
|
continue
|
||||||
if exit.connected_region not in seen:
|
if exit.connected_region not in seen:
|
||||||
|
|
|
@ -3,7 +3,7 @@ import logging
|
||||||
from typing import Iterator, Set
|
from typing import Iterator, Set
|
||||||
|
|
||||||
from worlds.alttp import OverworldGlitchRules
|
from worlds.alttp import OverworldGlitchRules
|
||||||
from BaseClasses import RegionType, MultiWorld, Entrance
|
from BaseClasses import MultiWorld, Entrance
|
||||||
from worlds.alttp.Items import ItemFactory, progression_items, item_name_groups, item_table
|
from worlds.alttp.Items import ItemFactory, progression_items, item_name_groups, item_table
|
||||||
from worlds.alttp.OverworldGlitchRules import overworld_glitches_rules, no_logic_rules
|
from worlds.alttp.OverworldGlitchRules import overworld_glitches_rules, no_logic_rules
|
||||||
from worlds.alttp.Regions import location_table
|
from worlds.alttp.Regions import location_table
|
||||||
|
@ -12,6 +12,7 @@ from worlds.alttp.Bosses import GanonDefeatRule
|
||||||
from worlds.generic.Rules import set_rule, add_rule, forbid_item, add_item_rule, item_in_locations, \
|
from worlds.generic.Rules import set_rule, add_rule, forbid_item, add_item_rule, item_in_locations, \
|
||||||
item_name
|
item_name
|
||||||
from worlds.alttp.Options import smallkey_shuffle
|
from worlds.alttp.Options import smallkey_shuffle
|
||||||
|
from worlds.alttp.Regions import LTTPRegionType
|
||||||
|
|
||||||
|
|
||||||
def set_rules(world):
|
def set_rules(world):
|
||||||
|
@ -1423,7 +1424,7 @@ def set_bunny_rules(world: MultiWorld, player: int, inverted: bool):
|
||||||
return lambda state: state.has('Magic Mirror', player) and state.has_sword(player) or state.has('Moon Pearl', player)
|
return lambda state: state.has('Magic Mirror', player) and state.has_sword(player) or state.has('Moon Pearl', player)
|
||||||
if region.name in OverworldGlitchRules.get_invalid_bunny_revival_dungeons():
|
if region.name in OverworldGlitchRules.get_invalid_bunny_revival_dungeons():
|
||||||
return lambda state: state.has('Magic Mirror', player) or state.has('Moon Pearl', player)
|
return lambda state: state.has('Magic Mirror', player) or state.has('Moon Pearl', player)
|
||||||
if region.type == RegionType.Dungeon:
|
if region.type == LTTPRegionType.Dungeon:
|
||||||
return lambda state: True
|
return lambda state: True
|
||||||
if (((location is None or location.name not in OverworldGlitchRules.get_superbunny_accessible_locations())
|
if (((location is None or location.name not in OverworldGlitchRules.get_superbunny_accessible_locations())
|
||||||
or (connecting_entrance is not None and connecting_entrance.name in OverworldGlitchRules.get_invalid_bunny_revival_dungeons()))
|
or (connecting_entrance is not None and connecting_entrance.name in OverworldGlitchRules.get_invalid_bunny_revival_dungeons()))
|
||||||
|
@ -1467,7 +1468,7 @@ def set_bunny_rules(world: MultiWorld, player: int, inverted: bool):
|
||||||
possible_options.append(lambda state: path_to_access_rule(new_path, entrance))
|
possible_options.append(lambda state: path_to_access_rule(new_path, entrance))
|
||||||
else:
|
else:
|
||||||
possible_options.append(lambda state: path_to_access_rule(new_path, entrance) and state.has('Magic Mirror', player))
|
possible_options.append(lambda state: path_to_access_rule(new_path, entrance) and state.has('Magic Mirror', player))
|
||||||
if new_region.type != RegionType.Cave:
|
if new_region.type != LTTPRegionType.Cave:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
@ -1495,8 +1496,8 @@ def set_bunny_rules(world: MultiWorld, player: int, inverted: bool):
|
||||||
for entrance in world.get_entrances():
|
for entrance in world.get_entrances():
|
||||||
if entrance.player == player and is_bunny(entrance.connected_region):
|
if entrance.player == player and is_bunny(entrance.connected_region):
|
||||||
if world.logic[player] in ['minorglitches', 'owglitches', 'hybridglitches', 'nologic'] :
|
if world.logic[player] in ['minorglitches', 'owglitches', 'hybridglitches', 'nologic'] :
|
||||||
if entrance.connected_region.type == RegionType.Dungeon:
|
if entrance.connected_region.type == LTTPRegionType.Dungeon:
|
||||||
if entrance.parent_region.type != RegionType.Dungeon and entrance.connected_region.name in OverworldGlitchRules.get_invalid_bunny_revival_dungeons():
|
if entrance.parent_region.type != LTTPRegionType.Dungeon and entrance.connected_region.name in OverworldGlitchRules.get_invalid_bunny_revival_dungeons():
|
||||||
add_rule(entrance, get_rule_to_add(entrance.connected_region, None, entrance))
|
add_rule(entrance, get_rule_to_add(entrance.connected_region, None, entrance))
|
||||||
continue
|
continue
|
||||||
if entrance.connected_region.name == 'Turtle Rock (Entrance)':
|
if entrance.connected_region.name == 'Turtle Rock (Entrance)':
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
"""Module extending BaseClasses.py for aLttP"""
|
"""Module extending BaseClasses.py for aLttP"""
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
from enum import IntEnum
|
||||||
|
|
||||||
from BaseClasses import Location, Item, ItemClassification
|
from BaseClasses import Location, Item, ItemClassification, Region, MultiWorld
|
||||||
|
|
||||||
|
|
||||||
class ALttPLocation(Location):
|
class ALttPLocation(Location):
|
||||||
|
@ -63,3 +64,31 @@ class ALttPItem(Item):
|
||||||
@property
|
@property
|
||||||
def locked_dungeon_item(self):
|
def locked_dungeon_item(self):
|
||||||
return self.location.locked and self.dungeon_item
|
return self.location.locked and self.dungeon_item
|
||||||
|
|
||||||
|
|
||||||
|
class LTTPRegionType(IntEnum):
|
||||||
|
LightWorld = 1
|
||||||
|
DarkWorld = 2
|
||||||
|
Cave = 3 # also houses
|
||||||
|
Dungeon = 4
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_indoors(self) -> bool:
|
||||||
|
"""Shorthand for checking if Cave or Dungeon"""
|
||||||
|
return self in (LTTPRegionType.Cave, LTTPRegionType.Dungeon)
|
||||||
|
|
||||||
|
|
||||||
|
class LTTPRegion(Region):
|
||||||
|
type: LTTPRegionType
|
||||||
|
|
||||||
|
def __init__(self, name: str, type_: LTTPRegionType, hint: str, player: int, multiworld: MultiWorld):
|
||||||
|
super().__init__(name, player, multiworld, hint)
|
||||||
|
self.type = type_
|
||||||
|
|
||||||
|
@property
|
||||||
|
def get_entrance(self):
|
||||||
|
for entrance in self.entrances:
|
||||||
|
if entrance.parent_region.type in (LTTPRegionType.DarkWorld, LTTPRegionType.LightWorld):
|
||||||
|
return entrance
|
||||||
|
for entrance in self.entrances:
|
||||||
|
return entrance.parent_region.get_entrance
|
||||||
|
|
|
@ -14,26 +14,20 @@ class ArchipIDLELogic(LogicMixin):
|
||||||
|
|
||||||
|
|
||||||
def set_rules(world: MultiWorld, player: int):
|
def set_rules(world: MultiWorld, player: int):
|
||||||
for i in range(1, 16):
|
|
||||||
set_rule(
|
|
||||||
world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
|
|
||||||
lambda state: state._archipidle_location_is_accessible(player, 0)
|
|
||||||
)
|
|
||||||
|
|
||||||
for i in range(16, 31):
|
for i in range(16, 31):
|
||||||
set_rule(
|
set_rule(
|
||||||
world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
|
world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) else 0} seconds", player),
|
||||||
lambda state: state._archipidle_location_is_accessible(player, 4)
|
lambda state: state._archipidle_location_is_accessible(player, 4)
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(31, 51):
|
for i in range(31, 51):
|
||||||
set_rule(
|
set_rule(
|
||||||
world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
|
world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) else 0} seconds", player),
|
||||||
lambda state: state._archipidle_location_is_accessible(player, 10)
|
lambda state: state._archipidle_location_is_accessible(player, 10)
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(51, 101):
|
for i in range(51, 101):
|
||||||
set_rule(
|
set_rule(
|
||||||
world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
|
world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) else 0} seconds", player),
|
||||||
lambda state: state._archipidle_location_is_accessible(player, 20)
|
lambda state: state._archipidle_location_is_accessible(player, 20)
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from BaseClasses import Item, MultiWorld, Region, Location, Entrance, Tutorial, ItemClassification, RegionType
|
from BaseClasses import Item, MultiWorld, Region, Location, Entrance, Tutorial, ItemClassification
|
||||||
from .Items import item_table
|
from .Items import item_table
|
||||||
from .Rules import set_rules
|
from .Rules import set_rules
|
||||||
from ..AutoWorld import World, WebWorld
|
from ..AutoWorld import World, WebWorld
|
||||||
|
@ -38,7 +38,7 @@ class ArchipIDLEWorld(World):
|
||||||
location_name_to_id = {}
|
location_name_to_id = {}
|
||||||
start_id = 9000
|
start_id = 9000
|
||||||
for i in range(1, 101):
|
for i in range(1, 101):
|
||||||
location_name_to_id[f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds"] = start_id
|
location_name_to_id[f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) else 0} seconds"] = start_id
|
||||||
start_id += 1
|
start_id += 1
|
||||||
|
|
||||||
def generate_basic(self):
|
def generate_basic(self):
|
||||||
|
@ -78,8 +78,7 @@ class ArchipIDLEWorld(World):
|
||||||
|
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
||||||
region = Region(name, RegionType.Generic, name, player)
|
region = Region(name, player, world)
|
||||||
region.multiworld = world
|
|
||||||
if locations:
|
if locations:
|
||||||
for location_name in locations.keys():
|
for location_name in locations.keys():
|
||||||
location = ArchipIDLELocation(player, location_name, locations[location_name], region)
|
location = ArchipIDLELocation(player, location_name, locations[location_name], region)
|
||||||
|
@ -98,6 +97,3 @@ class ArchipIDLEItem(Item):
|
||||||
|
|
||||||
class ArchipIDLELocation(Location):
|
class ArchipIDLELocation(Location):
|
||||||
game: str = "ArchipIDLE"
|
game: str = "ArchipIDLE"
|
||||||
|
|
||||||
def __init__(self, player: int, name: str, address=None, parent=None):
|
|
||||||
super(ArchipIDLELocation, self).__init__(player, name, address, parent)
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
|
|
||||||
def link_checksfinder_structures(world, player):
|
|
||||||
for (exit, region) in mandatory_connections:
|
|
||||||
world.get_entrance(exit, player).connect(world.get_region(region, player))
|
|
||||||
|
|
||||||
# (Region name, list of exits)
|
|
||||||
checksfinder_regions = [
|
|
||||||
('Menu', ['New Board']),
|
|
||||||
('Board',[]),
|
|
||||||
]
|
|
||||||
|
|
||||||
# (Entrance, region pointed to)
|
|
||||||
mandatory_connections = [
|
|
||||||
('New Board', 'Board'),
|
|
||||||
]
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
from BaseClasses import Region, Entrance, Item, Tutorial, ItemClassification, RegionType
|
from BaseClasses import Region, Entrance, Item, Tutorial, ItemClassification
|
||||||
from .Items import ChecksFinderItem, item_table, required_items
|
from .Items import ChecksFinderItem, item_table, required_items
|
||||||
from .Locations import ChecksFinderAdvancement, advancement_table, exclusion_table
|
from .Locations import ChecksFinderAdvancement, advancement_table, exclusion_table
|
||||||
from .Options import checksfinder_options
|
from .Options import checksfinder_options
|
||||||
from .Regions import checksfinder_regions, link_checksfinder_structures
|
|
||||||
from .Rules import set_rules, set_completion_rules
|
from .Rules import set_rules, set_completion_rules
|
||||||
from ..AutoWorld import World, WebWorld
|
from ..AutoWorld import World, WebWorld
|
||||||
|
|
||||||
|
@ -68,17 +67,15 @@ class ChecksFinderWorld(World):
|
||||||
set_completion_rules(self.multiworld, self.player)
|
set_completion_rules(self.multiworld, self.player)
|
||||||
|
|
||||||
def create_regions(self):
|
def create_regions(self):
|
||||||
def ChecksFinderRegion(region_name: str, exits=[]):
|
menu = Region("Menu", self.player, self.multiworld)
|
||||||
ret = Region(region_name, RegionType.Generic, region_name, self.player, self.multiworld)
|
board = Region("Board", self.player, self.multiworld)
|
||||||
ret.locations = [ChecksFinderAdvancement(self.player, loc_name, loc_data.id, ret)
|
board.locations = [ChecksFinderAdvancement(self.player, loc_name, loc_data.id, board)
|
||||||
for loc_name, loc_data in advancement_table.items()
|
for loc_name, loc_data in advancement_table.items() if loc_data.region == board.name]
|
||||||
if loc_data.region == region_name]
|
|
||||||
for exit in exits:
|
|
||||||
ret.exits.append(Entrance(self.player, exit, ret))
|
|
||||||
return ret
|
|
||||||
|
|
||||||
self.multiworld.regions += [ChecksFinderRegion(*r) for r in checksfinder_regions]
|
connection = Entrance(self.player, "New Board", menu)
|
||||||
link_checksfinder_structures(self.multiworld, self.player)
|
menu.exits.append(connection)
|
||||||
|
connection.connect(board)
|
||||||
|
self.multiworld.regions += [menu, board]
|
||||||
|
|
||||||
def fill_slot_data(self):
|
def fill_slot_data(self):
|
||||||
slot_data = self._get_checksfinder_data()
|
slot_data = self._get_checksfinder_data()
|
||||||
|
|
|
@ -14,7 +14,7 @@ from .data.locations_data import location_dictionary, fire_link_shrine_table, \
|
||||||
irithyll_dungeon_table, profaned_capital_table, anor_londo_table, lothric_castle_table, grand_archives_table, \
|
irithyll_dungeon_table, profaned_capital_table, anor_londo_table, lothric_castle_table, grand_archives_table, \
|
||||||
untended_graves_table, archdragon_peak_table, firelink_shrine_bell_tower_table, progressive_locations
|
untended_graves_table, archdragon_peak_table, firelink_shrine_bell_tower_table, progressive_locations
|
||||||
from ..AutoWorld import World, WebWorld
|
from ..AutoWorld import World, WebWorld
|
||||||
from BaseClasses import MultiWorld, Location, Region, Item, RegionType, Entrance, Tutorial, ItemClassification
|
from BaseClasses import MultiWorld, Region, Item, Entrance, Tutorial, ItemClassification
|
||||||
from ..generic.Rules import set_rule, add_item_rule
|
from ..generic.Rules import set_rule, add_item_rule
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,7 +77,6 @@ class DarkSouls3World(World):
|
||||||
return DarkSouls3Item(name, item_classification, data, self.player)
|
return DarkSouls3Item(name, item_classification, data, self.player)
|
||||||
|
|
||||||
def create_regions(self):
|
def create_regions(self):
|
||||||
|
|
||||||
menu_region = self.create_region("Menu", progressive_locations)
|
menu_region = self.create_region("Menu", progressive_locations)
|
||||||
|
|
||||||
# Create all Vanilla regions of Dark Souls III
|
# Create all Vanilla regions of Dark Souls III
|
||||||
|
@ -157,7 +156,7 @@ class DarkSouls3World(World):
|
||||||
|
|
||||||
# For each region, add the associated locations retrieved from the corresponding location_table
|
# For each region, add the associated locations retrieved from the corresponding location_table
|
||||||
def create_region(self, region_name, location_table) -> Region:
|
def create_region(self, region_name, location_table) -> Region:
|
||||||
new_region = Region(region_name, RegionType.Generic, region_name, self.player, self.multiworld)
|
new_region = Region(region_name, self.player, self.multiworld)
|
||||||
if location_table:
|
if location_table:
|
||||||
for name, address in location_table.items():
|
for name, address in location_table.items():
|
||||||
location = DarkSouls3Location(self.player, name, self.location_name_to_id[name], new_region)
|
location = DarkSouls3Location(self.player, name, self.location_name_to_id[name], new_region)
|
||||||
|
|
|
@ -7,35 +7,35 @@ from .Names import LocationName, ItemName
|
||||||
|
|
||||||
|
|
||||||
def create_regions(world, player: int, active_locations):
|
def create_regions(world, player: int, active_locations):
|
||||||
menu_region = create_region(world, player, active_locations, 'Menu', None, None)
|
menu_region = create_region(world, player, active_locations, 'Menu', None)
|
||||||
|
|
||||||
overworld_1_region_locations = {}
|
overworld_1_region_locations = {}
|
||||||
if world.goal[player] != "knautilus":
|
if world.goal[player] != "knautilus":
|
||||||
overworld_1_region_locations.update({LocationName.banana_bird_mother: []})
|
overworld_1_region_locations.update({LocationName.banana_bird_mother: []})
|
||||||
overworld_1_region = create_region(world, player, active_locations, LocationName.overworld_1_region,
|
overworld_1_region = create_region(world, player, active_locations, LocationName.overworld_1_region,
|
||||||
overworld_1_region_locations, None)
|
overworld_1_region_locations)
|
||||||
|
|
||||||
overworld_2_region_locations = {}
|
overworld_2_region_locations = {}
|
||||||
overworld_2_region = create_region(world, player, active_locations, LocationName.overworld_2_region,
|
overworld_2_region = create_region(world, player, active_locations, LocationName.overworld_2_region,
|
||||||
overworld_2_region_locations, None)
|
overworld_2_region_locations)
|
||||||
|
|
||||||
overworld_3_region_locations = {}
|
overworld_3_region_locations = {}
|
||||||
overworld_3_region = create_region(world, player, active_locations, LocationName.overworld_3_region,
|
overworld_3_region = create_region(world, player, active_locations, LocationName.overworld_3_region,
|
||||||
overworld_3_region_locations, None)
|
overworld_3_region_locations)
|
||||||
|
|
||||||
overworld_4_region_locations = {}
|
overworld_4_region_locations = {}
|
||||||
overworld_4_region = create_region(world, player, active_locations, LocationName.overworld_4_region,
|
overworld_4_region = create_region(world, player, active_locations, LocationName.overworld_4_region,
|
||||||
overworld_4_region_locations, None)
|
overworld_4_region_locations)
|
||||||
|
|
||||||
|
|
||||||
lake_orangatanga_region = create_region(world, player, active_locations, LocationName.lake_orangatanga_region, None, None)
|
lake_orangatanga_region = create_region(world, player, active_locations, LocationName.lake_orangatanga_region, None)
|
||||||
kremwood_forest_region = create_region(world, player, active_locations, LocationName.kremwood_forest_region, None, None)
|
kremwood_forest_region = create_region(world, player, active_locations, LocationName.kremwood_forest_region, None)
|
||||||
cotton_top_cove_region = create_region(world, player, active_locations, LocationName.cotton_top_cove_region, None, None)
|
cotton_top_cove_region = create_region(world, player, active_locations, LocationName.cotton_top_cove_region, None)
|
||||||
mekanos_region = create_region(world, player, active_locations, LocationName.mekanos_region, None, None)
|
mekanos_region = create_region(world, player, active_locations, LocationName.mekanos_region, None)
|
||||||
k3_region = create_region(world, player, active_locations, LocationName.k3_region, None, None)
|
k3_region = create_region(world, player, active_locations, LocationName.k3_region, None)
|
||||||
razor_ridge_region = create_region(world, player, active_locations, LocationName.razor_ridge_region, None, None)
|
razor_ridge_region = create_region(world, player, active_locations, LocationName.razor_ridge_region, None)
|
||||||
kaos_kore_region = create_region(world, player, active_locations, LocationName.kaos_kore_region, None, None)
|
kaos_kore_region = create_region(world, player, active_locations, LocationName.kaos_kore_region, None)
|
||||||
krematoa_region = create_region(world, player, active_locations, LocationName.krematoa_region, None, None)
|
krematoa_region = create_region(world, player, active_locations, LocationName.krematoa_region, None)
|
||||||
|
|
||||||
|
|
||||||
lakeside_limbo_region_locations = {
|
lakeside_limbo_region_locations = {
|
||||||
|
@ -47,7 +47,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
lakeside_limbo_region_locations[LocationName.lakeside_limbo_kong] = []
|
lakeside_limbo_region_locations[LocationName.lakeside_limbo_kong] = []
|
||||||
lakeside_limbo_region = create_region(world, player, active_locations, LocationName.lakeside_limbo_region,
|
lakeside_limbo_region = create_region(world, player, active_locations, LocationName.lakeside_limbo_region,
|
||||||
lakeside_limbo_region_locations, None)
|
lakeside_limbo_region_locations)
|
||||||
|
|
||||||
doorstop_dash_region_locations = {
|
doorstop_dash_region_locations = {
|
||||||
LocationName.doorstop_dash_flag : [0x65A, 1],
|
LocationName.doorstop_dash_flag : [0x65A, 1],
|
||||||
|
@ -58,7 +58,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
doorstop_dash_region_locations[LocationName.doorstop_dash_kong] = []
|
doorstop_dash_region_locations[LocationName.doorstop_dash_kong] = []
|
||||||
doorstop_dash_region = create_region(world, player, active_locations, LocationName.doorstop_dash_region,
|
doorstop_dash_region = create_region(world, player, active_locations, LocationName.doorstop_dash_region,
|
||||||
doorstop_dash_region_locations, None)
|
doorstop_dash_region_locations)
|
||||||
|
|
||||||
tidal_trouble_region_locations = {
|
tidal_trouble_region_locations = {
|
||||||
LocationName.tidal_trouble_flag : [0x659, 1],
|
LocationName.tidal_trouble_flag : [0x659, 1],
|
||||||
|
@ -69,7 +69,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
tidal_trouble_region_locations[LocationName.tidal_trouble_kong] = []
|
tidal_trouble_region_locations[LocationName.tidal_trouble_kong] = []
|
||||||
tidal_trouble_region = create_region(world, player, active_locations, LocationName.tidal_trouble_region,
|
tidal_trouble_region = create_region(world, player, active_locations, LocationName.tidal_trouble_region,
|
||||||
tidal_trouble_region_locations, None)
|
tidal_trouble_region_locations)
|
||||||
|
|
||||||
skiddas_row_region_locations = {
|
skiddas_row_region_locations = {
|
||||||
LocationName.skiddas_row_flag : [0x65D, 1],
|
LocationName.skiddas_row_flag : [0x65D, 1],
|
||||||
|
@ -80,7 +80,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
skiddas_row_region_locations[LocationName.skiddas_row_kong] = []
|
skiddas_row_region_locations[LocationName.skiddas_row_kong] = []
|
||||||
skiddas_row_region = create_region(world, player, active_locations, LocationName.skiddas_row_region,
|
skiddas_row_region = create_region(world, player, active_locations, LocationName.skiddas_row_region,
|
||||||
skiddas_row_region_locations, None)
|
skiddas_row_region_locations)
|
||||||
|
|
||||||
murky_mill_region_locations = {
|
murky_mill_region_locations = {
|
||||||
LocationName.murky_mill_flag : [0x65C, 1],
|
LocationName.murky_mill_flag : [0x65C, 1],
|
||||||
|
@ -91,7 +91,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
murky_mill_region_locations[LocationName.murky_mill_kong] = []
|
murky_mill_region_locations[LocationName.murky_mill_kong] = []
|
||||||
murky_mill_region = create_region(world, player, active_locations, LocationName.murky_mill_region,
|
murky_mill_region = create_region(world, player, active_locations, LocationName.murky_mill_region,
|
||||||
murky_mill_region_locations, None)
|
murky_mill_region_locations)
|
||||||
|
|
||||||
barrel_shield_bust_up_region_locations = {
|
barrel_shield_bust_up_region_locations = {
|
||||||
LocationName.barrel_shield_bust_up_flag : [0x662, 1],
|
LocationName.barrel_shield_bust_up_flag : [0x662, 1],
|
||||||
|
@ -101,8 +101,9 @@ def create_regions(world, player: int, active_locations):
|
||||||
}
|
}
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
barrel_shield_bust_up_region_locations[LocationName.barrel_shield_bust_up_kong] = []
|
barrel_shield_bust_up_region_locations[LocationName.barrel_shield_bust_up_kong] = []
|
||||||
barrel_shield_bust_up_region = create_region(world, player, active_locations, LocationName.barrel_shield_bust_up_region,
|
barrel_shield_bust_up_region = create_region(world, player, active_locations,
|
||||||
barrel_shield_bust_up_region_locations, None)
|
LocationName.barrel_shield_bust_up_region,
|
||||||
|
barrel_shield_bust_up_region_locations)
|
||||||
|
|
||||||
riverside_race_region_locations = {
|
riverside_race_region_locations = {
|
||||||
LocationName.riverside_race_flag : [0x664, 1],
|
LocationName.riverside_race_flag : [0x664, 1],
|
||||||
|
@ -113,7 +114,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
riverside_race_region_locations[LocationName.riverside_race_kong] = []
|
riverside_race_region_locations[LocationName.riverside_race_kong] = []
|
||||||
riverside_race_region = create_region(world, player, active_locations, LocationName.riverside_race_region,
|
riverside_race_region = create_region(world, player, active_locations, LocationName.riverside_race_region,
|
||||||
riverside_race_region_locations, None)
|
riverside_race_region_locations)
|
||||||
|
|
||||||
squeals_on_wheels_region_locations = {
|
squeals_on_wheels_region_locations = {
|
||||||
LocationName.squeals_on_wheels_flag : [0x65B, 1],
|
LocationName.squeals_on_wheels_flag : [0x65B, 1],
|
||||||
|
@ -124,7 +125,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
squeals_on_wheels_region_locations[LocationName.squeals_on_wheels_kong] = []
|
squeals_on_wheels_region_locations[LocationName.squeals_on_wheels_kong] = []
|
||||||
squeals_on_wheels_region = create_region(world, player, active_locations, LocationName.squeals_on_wheels_region,
|
squeals_on_wheels_region = create_region(world, player, active_locations, LocationName.squeals_on_wheels_region,
|
||||||
squeals_on_wheels_region_locations, None)
|
squeals_on_wheels_region_locations)
|
||||||
|
|
||||||
springin_spiders_region_locations = {
|
springin_spiders_region_locations = {
|
||||||
LocationName.springin_spiders_flag : [0x661, 1],
|
LocationName.springin_spiders_flag : [0x661, 1],
|
||||||
|
@ -135,7 +136,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
springin_spiders_region_locations[LocationName.springin_spiders_kong] = []
|
springin_spiders_region_locations[LocationName.springin_spiders_kong] = []
|
||||||
springin_spiders_region = create_region(world, player, active_locations, LocationName.springin_spiders_region,
|
springin_spiders_region = create_region(world, player, active_locations, LocationName.springin_spiders_region,
|
||||||
springin_spiders_region_locations, None)
|
springin_spiders_region_locations)
|
||||||
|
|
||||||
bobbing_barrel_brawl_region_locations = {
|
bobbing_barrel_brawl_region_locations = {
|
||||||
LocationName.bobbing_barrel_brawl_flag : [0x666, 1],
|
LocationName.bobbing_barrel_brawl_flag : [0x666, 1],
|
||||||
|
@ -145,8 +146,9 @@ def create_regions(world, player: int, active_locations):
|
||||||
}
|
}
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
bobbing_barrel_brawl_region_locations[LocationName.bobbing_barrel_brawl_kong] = []
|
bobbing_barrel_brawl_region_locations[LocationName.bobbing_barrel_brawl_kong] = []
|
||||||
bobbing_barrel_brawl_region = create_region(world, player, active_locations, LocationName.bobbing_barrel_brawl_region,
|
bobbing_barrel_brawl_region = create_region(world, player, active_locations,
|
||||||
bobbing_barrel_brawl_region_locations, None)
|
LocationName.bobbing_barrel_brawl_region,
|
||||||
|
bobbing_barrel_brawl_region_locations)
|
||||||
|
|
||||||
bazzas_blockade_region_locations = {
|
bazzas_blockade_region_locations = {
|
||||||
LocationName.bazzas_blockade_flag : [0x667, 1],
|
LocationName.bazzas_blockade_flag : [0x667, 1],
|
||||||
|
@ -157,7 +159,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
bazzas_blockade_region_locations[LocationName.bazzas_blockade_kong] = []
|
bazzas_blockade_region_locations[LocationName.bazzas_blockade_kong] = []
|
||||||
bazzas_blockade_region = create_region(world, player, active_locations, LocationName.bazzas_blockade_region,
|
bazzas_blockade_region = create_region(world, player, active_locations, LocationName.bazzas_blockade_region,
|
||||||
bazzas_blockade_region_locations, None)
|
bazzas_blockade_region_locations)
|
||||||
|
|
||||||
rocket_barrel_ride_region_locations = {
|
rocket_barrel_ride_region_locations = {
|
||||||
LocationName.rocket_barrel_ride_flag : [0x66A, 1],
|
LocationName.rocket_barrel_ride_flag : [0x66A, 1],
|
||||||
|
@ -168,7 +170,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
rocket_barrel_ride_region_locations[LocationName.rocket_barrel_ride_kong] = []
|
rocket_barrel_ride_region_locations[LocationName.rocket_barrel_ride_kong] = []
|
||||||
rocket_barrel_ride_region = create_region(world, player, active_locations, LocationName.rocket_barrel_ride_region,
|
rocket_barrel_ride_region = create_region(world, player, active_locations, LocationName.rocket_barrel_ride_region,
|
||||||
rocket_barrel_ride_region_locations, None)
|
rocket_barrel_ride_region_locations)
|
||||||
|
|
||||||
kreeping_klasps_region_locations = {
|
kreeping_klasps_region_locations = {
|
||||||
LocationName.kreeping_klasps_flag : [0x658, 1],
|
LocationName.kreeping_klasps_flag : [0x658, 1],
|
||||||
|
@ -179,7 +181,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
kreeping_klasps_region_locations[LocationName.kreeping_klasps_kong] = []
|
kreeping_klasps_region_locations[LocationName.kreeping_klasps_kong] = []
|
||||||
kreeping_klasps_region = create_region(world, player, active_locations, LocationName.kreeping_klasps_region,
|
kreeping_klasps_region = create_region(world, player, active_locations, LocationName.kreeping_klasps_region,
|
||||||
kreeping_klasps_region_locations, None)
|
kreeping_klasps_region_locations)
|
||||||
|
|
||||||
tracker_barrel_trek_region_locations = {
|
tracker_barrel_trek_region_locations = {
|
||||||
LocationName.tracker_barrel_trek_flag : [0x66B, 1],
|
LocationName.tracker_barrel_trek_flag : [0x66B, 1],
|
||||||
|
@ -190,7 +192,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
tracker_barrel_trek_region_locations[LocationName.tracker_barrel_trek_kong] = []
|
tracker_barrel_trek_region_locations[LocationName.tracker_barrel_trek_kong] = []
|
||||||
tracker_barrel_trek_region = create_region(world, player, active_locations, LocationName.tracker_barrel_trek_region,
|
tracker_barrel_trek_region = create_region(world, player, active_locations, LocationName.tracker_barrel_trek_region,
|
||||||
tracker_barrel_trek_region_locations, None)
|
tracker_barrel_trek_region_locations)
|
||||||
|
|
||||||
fish_food_frenzy_region_locations = {
|
fish_food_frenzy_region_locations = {
|
||||||
LocationName.fish_food_frenzy_flag : [0x668, 1],
|
LocationName.fish_food_frenzy_flag : [0x668, 1],
|
||||||
|
@ -201,7 +203,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
fish_food_frenzy_region_locations[LocationName.fish_food_frenzy_kong] = []
|
fish_food_frenzy_region_locations[LocationName.fish_food_frenzy_kong] = []
|
||||||
fish_food_frenzy_region = create_region(world, player, active_locations, LocationName.fish_food_frenzy_region,
|
fish_food_frenzy_region = create_region(world, player, active_locations, LocationName.fish_food_frenzy_region,
|
||||||
fish_food_frenzy_region_locations, None)
|
fish_food_frenzy_region_locations)
|
||||||
|
|
||||||
fire_ball_frenzy_region_locations = {
|
fire_ball_frenzy_region_locations = {
|
||||||
LocationName.fire_ball_frenzy_flag : [0x66D, 1],
|
LocationName.fire_ball_frenzy_flag : [0x66D, 1],
|
||||||
|
@ -212,7 +214,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
fire_ball_frenzy_region_locations[LocationName.fire_ball_frenzy_kong] = []
|
fire_ball_frenzy_region_locations[LocationName.fire_ball_frenzy_kong] = []
|
||||||
fire_ball_frenzy_region = create_region(world, player, active_locations, LocationName.fire_ball_frenzy_region,
|
fire_ball_frenzy_region = create_region(world, player, active_locations, LocationName.fire_ball_frenzy_region,
|
||||||
fire_ball_frenzy_region_locations, None)
|
fire_ball_frenzy_region_locations)
|
||||||
|
|
||||||
demolition_drain_pipe_region_locations = {
|
demolition_drain_pipe_region_locations = {
|
||||||
LocationName.demolition_drain_pipe_flag : [0x672, 1],
|
LocationName.demolition_drain_pipe_flag : [0x672, 1],
|
||||||
|
@ -222,8 +224,9 @@ def create_regions(world, player: int, active_locations):
|
||||||
}
|
}
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
demolition_drain_pipe_region_locations[LocationName.demolition_drain_pipe_kong] = []
|
demolition_drain_pipe_region_locations[LocationName.demolition_drain_pipe_kong] = []
|
||||||
demolition_drain_pipe_region = create_region(world, player, active_locations, LocationName.demolition_drain_pipe_region,
|
demolition_drain_pipe_region = create_region(world, player, active_locations,
|
||||||
demolition_drain_pipe_region_locations, None)
|
LocationName.demolition_drain_pipe_region,
|
||||||
|
demolition_drain_pipe_region_locations)
|
||||||
|
|
||||||
ripsaw_rage_region_locations = {
|
ripsaw_rage_region_locations = {
|
||||||
LocationName.ripsaw_rage_flag : [0x660, 1],
|
LocationName.ripsaw_rage_flag : [0x660, 1],
|
||||||
|
@ -234,7 +237,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
ripsaw_rage_region_locations[LocationName.ripsaw_rage_kong] = []
|
ripsaw_rage_region_locations[LocationName.ripsaw_rage_kong] = []
|
||||||
ripsaw_rage_region = create_region(world, player, active_locations, LocationName.ripsaw_rage_region,
|
ripsaw_rage_region = create_region(world, player, active_locations, LocationName.ripsaw_rage_region,
|
||||||
ripsaw_rage_region_locations, None)
|
ripsaw_rage_region_locations)
|
||||||
|
|
||||||
blazing_bazookas_region_locations = {
|
blazing_bazookas_region_locations = {
|
||||||
LocationName.blazing_bazookas_flag : [0x66E, 1],
|
LocationName.blazing_bazookas_flag : [0x66E, 1],
|
||||||
|
@ -245,7 +248,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
blazing_bazookas_region_locations[LocationName.blazing_bazookas_kong] = []
|
blazing_bazookas_region_locations[LocationName.blazing_bazookas_kong] = []
|
||||||
blazing_bazookas_region = create_region(world, player, active_locations, LocationName.blazing_bazookas_region,
|
blazing_bazookas_region = create_region(world, player, active_locations, LocationName.blazing_bazookas_region,
|
||||||
blazing_bazookas_region_locations, None)
|
blazing_bazookas_region_locations)
|
||||||
|
|
||||||
low_g_labyrinth_region_locations = {
|
low_g_labyrinth_region_locations = {
|
||||||
LocationName.low_g_labyrinth_flag : [0x670, 1],
|
LocationName.low_g_labyrinth_flag : [0x670, 1],
|
||||||
|
@ -256,7 +259,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
low_g_labyrinth_region_locations[LocationName.low_g_labyrinth_kong] = []
|
low_g_labyrinth_region_locations[LocationName.low_g_labyrinth_kong] = []
|
||||||
low_g_labyrinth_region = create_region(world, player, active_locations, LocationName.low_g_labyrinth_region,
|
low_g_labyrinth_region = create_region(world, player, active_locations, LocationName.low_g_labyrinth_region,
|
||||||
low_g_labyrinth_region_locations, None)
|
low_g_labyrinth_region_locations)
|
||||||
|
|
||||||
krevice_kreepers_region_locations = {
|
krevice_kreepers_region_locations = {
|
||||||
LocationName.krevice_kreepers_flag : [0x673, 1],
|
LocationName.krevice_kreepers_flag : [0x673, 1],
|
||||||
|
@ -267,7 +270,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
krevice_kreepers_region_locations[LocationName.krevice_kreepers_kong] = []
|
krevice_kreepers_region_locations[LocationName.krevice_kreepers_kong] = []
|
||||||
krevice_kreepers_region = create_region(world, player, active_locations, LocationName.krevice_kreepers_region,
|
krevice_kreepers_region = create_region(world, player, active_locations, LocationName.krevice_kreepers_region,
|
||||||
krevice_kreepers_region_locations, None)
|
krevice_kreepers_region_locations)
|
||||||
|
|
||||||
tearaway_toboggan_region_locations = {
|
tearaway_toboggan_region_locations = {
|
||||||
LocationName.tearaway_toboggan_flag : [0x65F, 1],
|
LocationName.tearaway_toboggan_flag : [0x65F, 1],
|
||||||
|
@ -278,7 +281,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
tearaway_toboggan_region_locations[LocationName.tearaway_toboggan_kong] = []
|
tearaway_toboggan_region_locations[LocationName.tearaway_toboggan_kong] = []
|
||||||
tearaway_toboggan_region = create_region(world, player, active_locations, LocationName.tearaway_toboggan_region,
|
tearaway_toboggan_region = create_region(world, player, active_locations, LocationName.tearaway_toboggan_region,
|
||||||
tearaway_toboggan_region_locations, None)
|
tearaway_toboggan_region_locations)
|
||||||
|
|
||||||
barrel_drop_bounce_region_locations = {
|
barrel_drop_bounce_region_locations = {
|
||||||
LocationName.barrel_drop_bounce_flag : [0x66C, 1],
|
LocationName.barrel_drop_bounce_flag : [0x66C, 1],
|
||||||
|
@ -289,7 +292,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
barrel_drop_bounce_region_locations[LocationName.barrel_drop_bounce_kong] = []
|
barrel_drop_bounce_region_locations[LocationName.barrel_drop_bounce_kong] = []
|
||||||
barrel_drop_bounce_region = create_region(world, player, active_locations, LocationName.barrel_drop_bounce_region,
|
barrel_drop_bounce_region = create_region(world, player, active_locations, LocationName.barrel_drop_bounce_region,
|
||||||
barrel_drop_bounce_region_locations, None)
|
barrel_drop_bounce_region_locations)
|
||||||
|
|
||||||
krack_shot_kroc_region_locations = {
|
krack_shot_kroc_region_locations = {
|
||||||
LocationName.krack_shot_kroc_flag : [0x66F, 1],
|
LocationName.krack_shot_kroc_flag : [0x66F, 1],
|
||||||
|
@ -300,7 +303,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
krack_shot_kroc_region_locations[LocationName.krack_shot_kroc_kong] = []
|
krack_shot_kroc_region_locations[LocationName.krack_shot_kroc_kong] = []
|
||||||
krack_shot_kroc_region = create_region(world, player, active_locations, LocationName.krack_shot_kroc_region,
|
krack_shot_kroc_region = create_region(world, player, active_locations, LocationName.krack_shot_kroc_region,
|
||||||
krack_shot_kroc_region_locations, None)
|
krack_shot_kroc_region_locations)
|
||||||
|
|
||||||
lemguin_lunge_region_locations = {
|
lemguin_lunge_region_locations = {
|
||||||
LocationName.lemguin_lunge_flag : [0x65E, 1],
|
LocationName.lemguin_lunge_flag : [0x65E, 1],
|
||||||
|
@ -311,7 +314,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
lemguin_lunge_region_locations[LocationName.lemguin_lunge_kong] = []
|
lemguin_lunge_region_locations[LocationName.lemguin_lunge_kong] = []
|
||||||
lemguin_lunge_region = create_region(world, player, active_locations, LocationName.lemguin_lunge_region,
|
lemguin_lunge_region = create_region(world, player, active_locations, LocationName.lemguin_lunge_region,
|
||||||
lemguin_lunge_region_locations, None)
|
lemguin_lunge_region_locations)
|
||||||
|
|
||||||
buzzer_barrage_region_locations = {
|
buzzer_barrage_region_locations = {
|
||||||
LocationName.buzzer_barrage_flag : [0x676, 1],
|
LocationName.buzzer_barrage_flag : [0x676, 1],
|
||||||
|
@ -322,7 +325,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
buzzer_barrage_region_locations[LocationName.buzzer_barrage_kong] = []
|
buzzer_barrage_region_locations[LocationName.buzzer_barrage_kong] = []
|
||||||
buzzer_barrage_region = create_region(world, player, active_locations, LocationName.buzzer_barrage_region,
|
buzzer_barrage_region = create_region(world, player, active_locations, LocationName.buzzer_barrage_region,
|
||||||
buzzer_barrage_region_locations, None)
|
buzzer_barrage_region_locations)
|
||||||
|
|
||||||
kong_fused_cliffs_region_locations = {
|
kong_fused_cliffs_region_locations = {
|
||||||
LocationName.kong_fused_cliffs_flag : [0x674, 1],
|
LocationName.kong_fused_cliffs_flag : [0x674, 1],
|
||||||
|
@ -333,7 +336,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
kong_fused_cliffs_region_locations[LocationName.kong_fused_cliffs_kong] = []
|
kong_fused_cliffs_region_locations[LocationName.kong_fused_cliffs_kong] = []
|
||||||
kong_fused_cliffs_region = create_region(world, player, active_locations, LocationName.kong_fused_cliffs_region,
|
kong_fused_cliffs_region = create_region(world, player, active_locations, LocationName.kong_fused_cliffs_region,
|
||||||
kong_fused_cliffs_region_locations, None)
|
kong_fused_cliffs_region_locations)
|
||||||
|
|
||||||
floodlit_fish_region_locations = {
|
floodlit_fish_region_locations = {
|
||||||
LocationName.floodlit_fish_flag : [0x669, 1],
|
LocationName.floodlit_fish_flag : [0x669, 1],
|
||||||
|
@ -344,7 +347,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
floodlit_fish_region_locations[LocationName.floodlit_fish_kong] = []
|
floodlit_fish_region_locations[LocationName.floodlit_fish_kong] = []
|
||||||
floodlit_fish_region = create_region(world, player, active_locations, LocationName.floodlit_fish_region,
|
floodlit_fish_region = create_region(world, player, active_locations, LocationName.floodlit_fish_region,
|
||||||
floodlit_fish_region_locations, None)
|
floodlit_fish_region_locations)
|
||||||
|
|
||||||
pothole_panic_region_locations = {
|
pothole_panic_region_locations = {
|
||||||
LocationName.pothole_panic_flag : [0x677, 1],
|
LocationName.pothole_panic_flag : [0x677, 1],
|
||||||
|
@ -355,7 +358,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
pothole_panic_region_locations[LocationName.pothole_panic_kong] = []
|
pothole_panic_region_locations[LocationName.pothole_panic_kong] = []
|
||||||
pothole_panic_region = create_region(world, player, active_locations, LocationName.pothole_panic_region,
|
pothole_panic_region = create_region(world, player, active_locations, LocationName.pothole_panic_region,
|
||||||
pothole_panic_region_locations, None)
|
pothole_panic_region_locations)
|
||||||
|
|
||||||
ropey_rumpus_region_locations = {
|
ropey_rumpus_region_locations = {
|
||||||
LocationName.ropey_rumpus_flag : [0x675, 1],
|
LocationName.ropey_rumpus_flag : [0x675, 1],
|
||||||
|
@ -366,7 +369,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
ropey_rumpus_region_locations[LocationName.ropey_rumpus_kong] = []
|
ropey_rumpus_region_locations[LocationName.ropey_rumpus_kong] = []
|
||||||
ropey_rumpus_region = create_region(world, player, active_locations, LocationName.ropey_rumpus_region,
|
ropey_rumpus_region = create_region(world, player, active_locations, LocationName.ropey_rumpus_region,
|
||||||
ropey_rumpus_region_locations, None)
|
ropey_rumpus_region_locations)
|
||||||
|
|
||||||
konveyor_rope_clash_region_locations = {
|
konveyor_rope_clash_region_locations = {
|
||||||
LocationName.konveyor_rope_clash_flag : [0x657, 1],
|
LocationName.konveyor_rope_clash_flag : [0x657, 1],
|
||||||
|
@ -377,7 +380,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
konveyor_rope_clash_region_locations[LocationName.konveyor_rope_clash_kong] = []
|
konveyor_rope_clash_region_locations[LocationName.konveyor_rope_clash_kong] = []
|
||||||
konveyor_rope_clash_region = create_region(world, player, active_locations, LocationName.konveyor_rope_clash_region,
|
konveyor_rope_clash_region = create_region(world, player, active_locations, LocationName.konveyor_rope_clash_region,
|
||||||
konveyor_rope_clash_region_locations, None)
|
konveyor_rope_clash_region_locations)
|
||||||
|
|
||||||
creepy_caverns_region_locations = {
|
creepy_caverns_region_locations = {
|
||||||
LocationName.creepy_caverns_flag : [0x678, 1],
|
LocationName.creepy_caverns_flag : [0x678, 1],
|
||||||
|
@ -388,7 +391,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
creepy_caverns_region_locations[LocationName.creepy_caverns_kong] = []
|
creepy_caverns_region_locations[LocationName.creepy_caverns_kong] = []
|
||||||
creepy_caverns_region = create_region(world, player, active_locations, LocationName.creepy_caverns_region,
|
creepy_caverns_region = create_region(world, player, active_locations, LocationName.creepy_caverns_region,
|
||||||
creepy_caverns_region_locations, None)
|
creepy_caverns_region_locations)
|
||||||
|
|
||||||
lightning_lookout_region_locations = {
|
lightning_lookout_region_locations = {
|
||||||
LocationName.lightning_lookout_flag : [0x665, 1],
|
LocationName.lightning_lookout_flag : [0x665, 1],
|
||||||
|
@ -399,7 +402,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
lightning_lookout_region_locations[LocationName.lightning_lookout_kong] = []
|
lightning_lookout_region_locations[LocationName.lightning_lookout_kong] = []
|
||||||
lightning_lookout_region = create_region(world, player, active_locations, LocationName.lightning_lookout_region,
|
lightning_lookout_region = create_region(world, player, active_locations, LocationName.lightning_lookout_region,
|
||||||
lightning_lookout_region_locations, None)
|
lightning_lookout_region_locations)
|
||||||
|
|
||||||
koindozer_klamber_region_locations = {
|
koindozer_klamber_region_locations = {
|
||||||
LocationName.koindozer_klamber_flag : [0x679, 1],
|
LocationName.koindozer_klamber_flag : [0x679, 1],
|
||||||
|
@ -410,7 +413,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
koindozer_klamber_region_locations[LocationName.koindozer_klamber_kong] = []
|
koindozer_klamber_region_locations[LocationName.koindozer_klamber_kong] = []
|
||||||
koindozer_klamber_region = create_region(world, player, active_locations, LocationName.koindozer_klamber_region,
|
koindozer_klamber_region = create_region(world, player, active_locations, LocationName.koindozer_klamber_region,
|
||||||
koindozer_klamber_region_locations, None)
|
koindozer_klamber_region_locations)
|
||||||
|
|
||||||
poisonous_pipeline_region_locations = {
|
poisonous_pipeline_region_locations = {
|
||||||
LocationName.poisonous_pipeline_flag : [0x671, 1],
|
LocationName.poisonous_pipeline_flag : [0x671, 1],
|
||||||
|
@ -421,7 +424,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
poisonous_pipeline_region_locations[LocationName.poisonous_pipeline_kong] = []
|
poisonous_pipeline_region_locations[LocationName.poisonous_pipeline_kong] = []
|
||||||
poisonous_pipeline_region = create_region(world, player, active_locations, LocationName.poisonous_pipeline_region,
|
poisonous_pipeline_region = create_region(world, player, active_locations, LocationName.poisonous_pipeline_region,
|
||||||
poisonous_pipeline_region_locations, None)
|
poisonous_pipeline_region_locations)
|
||||||
|
|
||||||
stampede_sprint_region_locations = {
|
stampede_sprint_region_locations = {
|
||||||
LocationName.stampede_sprint_flag : [0x67B, 1],
|
LocationName.stampede_sprint_flag : [0x67B, 1],
|
||||||
|
@ -433,7 +436,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
stampede_sprint_region_locations[LocationName.stampede_sprint_kong] = []
|
stampede_sprint_region_locations[LocationName.stampede_sprint_kong] = []
|
||||||
stampede_sprint_region = create_region(world, player, active_locations, LocationName.stampede_sprint_region,
|
stampede_sprint_region = create_region(world, player, active_locations, LocationName.stampede_sprint_region,
|
||||||
stampede_sprint_region_locations, None)
|
stampede_sprint_region_locations)
|
||||||
|
|
||||||
criss_cross_cliffs_region_locations = {
|
criss_cross_cliffs_region_locations = {
|
||||||
LocationName.criss_cross_cliffs_flag : [0x67C, 1],
|
LocationName.criss_cross_cliffs_flag : [0x67C, 1],
|
||||||
|
@ -444,7 +447,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
criss_cross_cliffs_region_locations[LocationName.criss_cross_cliffs_kong] = []
|
criss_cross_cliffs_region_locations[LocationName.criss_cross_cliffs_kong] = []
|
||||||
criss_cross_cliffs_region = create_region(world, player, active_locations, LocationName.criss_cross_cliffs_region,
|
criss_cross_cliffs_region = create_region(world, player, active_locations, LocationName.criss_cross_cliffs_region,
|
||||||
criss_cross_cliffs_region_locations, None)
|
criss_cross_cliffs_region_locations)
|
||||||
|
|
||||||
tyrant_twin_tussle_region_locations = {
|
tyrant_twin_tussle_region_locations = {
|
||||||
LocationName.tyrant_twin_tussle_flag : [0x67D, 1],
|
LocationName.tyrant_twin_tussle_flag : [0x67D, 1],
|
||||||
|
@ -456,7 +459,7 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
tyrant_twin_tussle_region_locations[LocationName.tyrant_twin_tussle_kong] = []
|
tyrant_twin_tussle_region_locations[LocationName.tyrant_twin_tussle_kong] = []
|
||||||
tyrant_twin_tussle_region = create_region(world, player, active_locations, LocationName.tyrant_twin_tussle_region,
|
tyrant_twin_tussle_region = create_region(world, player, active_locations, LocationName.tyrant_twin_tussle_region,
|
||||||
tyrant_twin_tussle_region_locations, None)
|
tyrant_twin_tussle_region_locations)
|
||||||
|
|
||||||
swoopy_salvo_region_locations = {
|
swoopy_salvo_region_locations = {
|
||||||
LocationName.swoopy_salvo_flag : [0x663, 1],
|
LocationName.swoopy_salvo_flag : [0x663, 1],
|
||||||
|
@ -468,140 +471,140 @@ def create_regions(world, player: int, active_locations):
|
||||||
if world.kongsanity[player]:
|
if world.kongsanity[player]:
|
||||||
swoopy_salvo_region_locations[LocationName.swoopy_salvo_kong] = []
|
swoopy_salvo_region_locations[LocationName.swoopy_salvo_kong] = []
|
||||||
swoopy_salvo_region = create_region(world, player, active_locations, LocationName.swoopy_salvo_region,
|
swoopy_salvo_region = create_region(world, player, active_locations, LocationName.swoopy_salvo_region,
|
||||||
swoopy_salvo_region_locations, None)
|
swoopy_salvo_region_locations)
|
||||||
|
|
||||||
rocket_rush_region_locations = {
|
rocket_rush_region_locations = {
|
||||||
LocationName.rocket_rush_flag : [0x67E, 1],
|
LocationName.rocket_rush_flag : [0x67E, 1],
|
||||||
LocationName.rocket_rush_dk : [0x67E, 5],
|
LocationName.rocket_rush_dk : [0x67E, 5],
|
||||||
}
|
}
|
||||||
rocket_rush_region = create_region(world, player, active_locations, LocationName.rocket_rush_region,
|
rocket_rush_region = create_region(world, player, active_locations, LocationName.rocket_rush_region,
|
||||||
rocket_rush_region_locations, None)
|
rocket_rush_region_locations)
|
||||||
|
|
||||||
belchas_barn_region_locations = {
|
belchas_barn_region_locations = {
|
||||||
LocationName.belchas_barn: [0x64F, 1],
|
LocationName.belchas_barn: [0x64F, 1],
|
||||||
}
|
}
|
||||||
belchas_barn_region = create_region(world, player, active_locations, LocationName.belchas_barn_region,
|
belchas_barn_region = create_region(world, player, active_locations, LocationName.belchas_barn_region,
|
||||||
belchas_barn_region_locations, None)
|
belchas_barn_region_locations)
|
||||||
|
|
||||||
arichs_ambush_region_locations = {
|
arichs_ambush_region_locations = {
|
||||||
LocationName.arichs_ambush: [0x650, 1],
|
LocationName.arichs_ambush: [0x650, 1],
|
||||||
}
|
}
|
||||||
arichs_ambush_region = create_region(world, player, active_locations, LocationName.arichs_ambush_region,
|
arichs_ambush_region = create_region(world, player, active_locations, LocationName.arichs_ambush_region,
|
||||||
arichs_ambush_region_locations, None)
|
arichs_ambush_region_locations)
|
||||||
|
|
||||||
squirts_showdown_region_locations = {
|
squirts_showdown_region_locations = {
|
||||||
LocationName.squirts_showdown: [0x651, 1],
|
LocationName.squirts_showdown: [0x651, 1],
|
||||||
}
|
}
|
||||||
squirts_showdown_region = create_region(world, player, active_locations, LocationName.squirts_showdown_region,
|
squirts_showdown_region = create_region(world, player, active_locations, LocationName.squirts_showdown_region,
|
||||||
squirts_showdown_region_locations, None)
|
squirts_showdown_region_locations)
|
||||||
|
|
||||||
kaos_karnage_region_locations = {
|
kaos_karnage_region_locations = {
|
||||||
LocationName.kaos_karnage: [0x652, 1],
|
LocationName.kaos_karnage: [0x652, 1],
|
||||||
}
|
}
|
||||||
kaos_karnage_region = create_region(world, player, active_locations, LocationName.kaos_karnage_region,
|
kaos_karnage_region = create_region(world, player, active_locations, LocationName.kaos_karnage_region,
|
||||||
kaos_karnage_region_locations, None)
|
kaos_karnage_region_locations)
|
||||||
|
|
||||||
bleaks_house_region_locations = {
|
bleaks_house_region_locations = {
|
||||||
LocationName.bleaks_house: [0x653, 1],
|
LocationName.bleaks_house: [0x653, 1],
|
||||||
}
|
}
|
||||||
bleaks_house_region = create_region(world, player, active_locations, LocationName.bleaks_house_region,
|
bleaks_house_region = create_region(world, player, active_locations, LocationName.bleaks_house_region,
|
||||||
bleaks_house_region_locations, None)
|
bleaks_house_region_locations)
|
||||||
|
|
||||||
barboss_barrier_region_locations = {
|
barboss_barrier_region_locations = {
|
||||||
LocationName.barboss_barrier: [0x654, 1],
|
LocationName.barboss_barrier: [0x654, 1],
|
||||||
}
|
}
|
||||||
barboss_barrier_region = create_region(world, player, active_locations, LocationName.barboss_barrier_region,
|
barboss_barrier_region = create_region(world, player, active_locations, LocationName.barboss_barrier_region,
|
||||||
barboss_barrier_region_locations, None)
|
barboss_barrier_region_locations)
|
||||||
|
|
||||||
kastle_kaos_region_locations = {
|
kastle_kaos_region_locations = {
|
||||||
LocationName.kastle_kaos: [0x655, 1],
|
LocationName.kastle_kaos: [0x655, 1],
|
||||||
}
|
}
|
||||||
kastle_kaos_region = create_region(world, player, active_locations, LocationName.kastle_kaos_region,
|
kastle_kaos_region = create_region(world, player, active_locations, LocationName.kastle_kaos_region,
|
||||||
kastle_kaos_region_locations, None)
|
kastle_kaos_region_locations)
|
||||||
|
|
||||||
knautilus_region_locations = {
|
knautilus_region_locations = {
|
||||||
LocationName.knautilus: [0x656, 1],
|
LocationName.knautilus: [0x656, 1],
|
||||||
}
|
}
|
||||||
knautilus_region = create_region(world, player, active_locations, LocationName.knautilus_region,
|
knautilus_region = create_region(world, player, active_locations, LocationName.knautilus_region,
|
||||||
knautilus_region_locations, None)
|
knautilus_region_locations)
|
||||||
|
|
||||||
belchas_burrow_region_locations = {
|
belchas_burrow_region_locations = {
|
||||||
LocationName.belchas_burrow: [0x647, 1],
|
LocationName.belchas_burrow: [0x647, 1],
|
||||||
}
|
}
|
||||||
belchas_burrow_region = create_region(world, player, active_locations, LocationName.belchas_burrow_region,
|
belchas_burrow_region = create_region(world, player, active_locations, LocationName.belchas_burrow_region,
|
||||||
belchas_burrow_region_locations, None)
|
belchas_burrow_region_locations)
|
||||||
|
|
||||||
kong_cave_region_locations = {
|
kong_cave_region_locations = {
|
||||||
LocationName.kong_cave: [0x645, 1],
|
LocationName.kong_cave: [0x645, 1],
|
||||||
}
|
}
|
||||||
kong_cave_region = create_region(world, player, active_locations, LocationName.kong_cave_region,
|
kong_cave_region = create_region(world, player, active_locations, LocationName.kong_cave_region,
|
||||||
kong_cave_region_locations, None)
|
kong_cave_region_locations)
|
||||||
|
|
||||||
undercover_cove_region_locations = {
|
undercover_cove_region_locations = {
|
||||||
LocationName.undercover_cove: [0x644, 1],
|
LocationName.undercover_cove: [0x644, 1],
|
||||||
}
|
}
|
||||||
undercover_cove_region = create_region(world, player, active_locations, LocationName.undercover_cove_region,
|
undercover_cove_region = create_region(world, player, active_locations, LocationName.undercover_cove_region,
|
||||||
undercover_cove_region_locations, None)
|
undercover_cove_region_locations)
|
||||||
|
|
||||||
ks_cache_region_locations = {
|
ks_cache_region_locations = {
|
||||||
LocationName.ks_cache: [0x642, 1],
|
LocationName.ks_cache: [0x642, 1],
|
||||||
}
|
}
|
||||||
ks_cache_region = create_region(world, player, active_locations, LocationName.ks_cache_region,
|
ks_cache_region = create_region(world, player, active_locations, LocationName.ks_cache_region,
|
||||||
ks_cache_region_locations, None)
|
ks_cache_region_locations)
|
||||||
|
|
||||||
hill_top_hoard_region_locations = {
|
hill_top_hoard_region_locations = {
|
||||||
LocationName.hill_top_hoard: [0x643, 1],
|
LocationName.hill_top_hoard: [0x643, 1],
|
||||||
}
|
}
|
||||||
hill_top_hoard_region = create_region(world, player, active_locations, LocationName.hill_top_hoard_region,
|
hill_top_hoard_region = create_region(world, player, active_locations, LocationName.hill_top_hoard_region,
|
||||||
hill_top_hoard_region_locations, None)
|
hill_top_hoard_region_locations)
|
||||||
|
|
||||||
bounty_beach_region_locations = {
|
bounty_beach_region_locations = {
|
||||||
LocationName.bounty_beach: [0x646, 1],
|
LocationName.bounty_beach: [0x646, 1],
|
||||||
}
|
}
|
||||||
bounty_beach_region = create_region(world, player, active_locations, LocationName.bounty_beach_region,
|
bounty_beach_region = create_region(world, player, active_locations, LocationName.bounty_beach_region,
|
||||||
bounty_beach_region_locations, None)
|
bounty_beach_region_locations)
|
||||||
|
|
||||||
smugglers_cove_region_locations = {
|
smugglers_cove_region_locations = {
|
||||||
LocationName.smugglers_cove: [0x648, 1],
|
LocationName.smugglers_cove: [0x648, 1],
|
||||||
}
|
}
|
||||||
smugglers_cove_region = create_region(world, player, active_locations, LocationName.smugglers_cove_region,
|
smugglers_cove_region = create_region(world, player, active_locations, LocationName.smugglers_cove_region,
|
||||||
smugglers_cove_region_locations, None)
|
smugglers_cove_region_locations)
|
||||||
|
|
||||||
arichs_hoard_region_locations = {
|
arichs_hoard_region_locations = {
|
||||||
LocationName.arichs_hoard: [0x649, 1],
|
LocationName.arichs_hoard: [0x649, 1],
|
||||||
}
|
}
|
||||||
arichs_hoard_region = create_region(world, player, active_locations, LocationName.arichs_hoard_region,
|
arichs_hoard_region = create_region(world, player, active_locations, LocationName.arichs_hoard_region,
|
||||||
arichs_hoard_region_locations, None)
|
arichs_hoard_region_locations)
|
||||||
|
|
||||||
bounty_bay_region_locations = {
|
bounty_bay_region_locations = {
|
||||||
LocationName.bounty_bay: [0x64A, 1],
|
LocationName.bounty_bay: [0x64A, 1],
|
||||||
}
|
}
|
||||||
bounty_bay_region = create_region(world, player, active_locations, LocationName.bounty_bay_region,
|
bounty_bay_region = create_region(world, player, active_locations, LocationName.bounty_bay_region,
|
||||||
bounty_bay_region_locations, None)
|
bounty_bay_region_locations)
|
||||||
|
|
||||||
sky_high_secret_region_locations = {}
|
sky_high_secret_region_locations = {}
|
||||||
if False:#world.include_trade_sequence[player]:
|
if False:#world.include_trade_sequence[player]:
|
||||||
sky_high_secret_region_locations[LocationName.sky_high_secret] = [0x64B, 1]
|
sky_high_secret_region_locations[LocationName.sky_high_secret] = [0x64B, 1]
|
||||||
sky_high_secret_region = create_region(world, player, active_locations, LocationName.sky_high_secret_region,
|
sky_high_secret_region = create_region(world, player, active_locations, LocationName.sky_high_secret_region,
|
||||||
sky_high_secret_region_locations, None)
|
sky_high_secret_region_locations)
|
||||||
|
|
||||||
glacial_grotto_region_locations = {
|
glacial_grotto_region_locations = {
|
||||||
LocationName.glacial_grotto: [0x64C, 1],
|
LocationName.glacial_grotto: [0x64C, 1],
|
||||||
}
|
}
|
||||||
glacial_grotto_region = create_region(world, player, active_locations, LocationName.glacial_grotto_region,
|
glacial_grotto_region = create_region(world, player, active_locations, LocationName.glacial_grotto_region,
|
||||||
glacial_grotto_region_locations, None)
|
glacial_grotto_region_locations)
|
||||||
|
|
||||||
cifftop_cache_region_locations = {}
|
cifftop_cache_region_locations = {}
|
||||||
if False:#world.include_trade_sequence[player]:
|
if False:#world.include_trade_sequence[player]:
|
||||||
cifftop_cache_region_locations[LocationName.cifftop_cache] = [0x64D, 1]
|
cifftop_cache_region_locations[LocationName.cifftop_cache] = [0x64D, 1]
|
||||||
cifftop_cache_region = create_region(world, player, active_locations, LocationName.cifftop_cache_region,
|
cifftop_cache_region = create_region(world, player, active_locations, LocationName.cifftop_cache_region,
|
||||||
cifftop_cache_region_locations, None)
|
cifftop_cache_region_locations)
|
||||||
|
|
||||||
sewer_stockpile_region_locations = {
|
sewer_stockpile_region_locations = {
|
||||||
LocationName.sewer_stockpile: [0x64E, 1],
|
LocationName.sewer_stockpile: [0x64E, 1],
|
||||||
}
|
}
|
||||||
sewer_stockpile_region = create_region(world, player, active_locations, LocationName.sewer_stockpile_region,
|
sewer_stockpile_region = create_region(world, player, active_locations, LocationName.sewer_stockpile_region,
|
||||||
sewer_stockpile_region_locations, None)
|
sewer_stockpile_region_locations)
|
||||||
|
|
||||||
|
|
||||||
# Set up the regions correctly.
|
# Set up the regions correctly.
|
||||||
|
@ -710,20 +713,17 @@ def create_regions(world, player: int, active_locations):
|
||||||
|
|
||||||
blizzard_region_locations[LocationName.blizzards_basecamp] = [0x625, 4, True]
|
blizzard_region_locations[LocationName.blizzards_basecamp] = [0x625, 4, True]
|
||||||
|
|
||||||
bazaar_region = create_region(world, player, active_locations, LocationName.bazaar_region,
|
bazaar_region = create_region(world, player, active_locations, LocationName.bazaar_region, bazaar_region_locations)
|
||||||
bazaar_region_locations, None)
|
|
||||||
bramble_region = create_region(world, player, active_locations, LocationName.bramble_region,
|
bramble_region = create_region(world, player, active_locations, LocationName.bramble_region,
|
||||||
bramble_region_locations, None)
|
bramble_region_locations)
|
||||||
flower_spot_region = create_region(world, player, active_locations, LocationName.flower_spot_region,
|
flower_spot_region = create_region(world, player, active_locations, LocationName.flower_spot_region,
|
||||||
flower_spot_region_locations, None)
|
flower_spot_region_locations)
|
||||||
barter_region = create_region(world, player, active_locations, LocationName.barter_region,
|
barter_region = create_region(world, player, active_locations, LocationName.barter_region, barter_region_locations)
|
||||||
barter_region_locations, None)
|
|
||||||
barnacle_region = create_region(world, player, active_locations, LocationName.barnacle_region,
|
barnacle_region = create_region(world, player, active_locations, LocationName.barnacle_region,
|
||||||
barnacle_region_locations, None)
|
barnacle_region_locations)
|
||||||
blue_region = create_region(world, player, active_locations, LocationName.blue_region,
|
blue_region = create_region(world, player, active_locations, LocationName.blue_region, blue_region_locations)
|
||||||
blue_region_locations, None)
|
|
||||||
blizzard_region = create_region(world, player, active_locations, LocationName.blizzard_region,
|
blizzard_region = create_region(world, player, active_locations, LocationName.blizzard_region,
|
||||||
blizzard_region_locations, None)
|
blizzard_region_locations)
|
||||||
|
|
||||||
world.regions += [
|
world.regions += [
|
||||||
bazaar_region,
|
bazaar_region,
|
||||||
|
@ -910,10 +910,9 @@ def connect_regions(world, player, level_list):
|
||||||
lambda state: (state.has(ItemName.krematoa_cog, player, 5)))
|
lambda state: (state.has(ItemName.krematoa_cog, player, 5)))
|
||||||
|
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None, exits=None):
|
def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
|
||||||
# Shamelessly stolen from the ROR2 definition
|
# Shamelessly stolen from the ROR2 definition
|
||||||
ret = Region(name, None, name, player)
|
ret = Region(name, player, world)
|
||||||
ret.multiworld = world
|
|
||||||
if locations:
|
if locations:
|
||||||
for locationName, locationData in locations.items():
|
for locationName, locationData in locations.items():
|
||||||
loc_id = active_locations.get(locationName, 0)
|
loc_id = active_locations.get(locationName, 0)
|
||||||
|
@ -924,9 +923,6 @@ def create_region(world: MultiWorld, player: int, active_locations, name: str, l
|
||||||
|
|
||||||
location = DKC3Location(player, locationName, loc_id, ret, loc_byte, loc_bit, loc_invert)
|
location = DKC3Location(player, locationName, loc_id, ret, loc_byte, loc_bit, loc_invert)
|
||||||
ret.locations.append(location)
|
ret.locations.append(location)
|
||||||
if exits:
|
|
||||||
for exit in exits:
|
|
||||||
ret.exits.append(Entrance(player, exit, ret))
|
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ import collections
|
||||||
import logging
|
import logging
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from BaseClasses import Region, Entrance, Location, Item, RegionType, Tutorial, ItemClassification
|
from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification
|
||||||
from worlds.AutoWorld import World, WebWorld
|
from worlds.AutoWorld import World, WebWorld
|
||||||
from .Mod import generate_mod
|
from .Mod import generate_mod
|
||||||
from .Options import factorio_options, MaxSciencePack, Silo, Satellite, TechTreeInformation, Goal, TechCostDistribution
|
from .Options import factorio_options, MaxSciencePack, Silo, Satellite, TechTreeInformation, Goal, TechCostDistribution
|
||||||
|
@ -81,10 +81,10 @@ class Factorio(World):
|
||||||
def create_regions(self):
|
def create_regions(self):
|
||||||
player = self.player
|
player = self.player
|
||||||
random = self.multiworld.random
|
random = self.multiworld.random
|
||||||
menu = Region("Menu", RegionType.Generic, "Menu", player, self.multiworld)
|
menu = Region("Menu", player, self.multiworld)
|
||||||
crash = Entrance(player, "Crash Land", menu)
|
crash = Entrance(player, "Crash Land", menu)
|
||||||
menu.exits.append(crash)
|
menu.exits.append(crash)
|
||||||
nauvis = Region("Nauvis", RegionType.Generic, "Nauvis", player, self.multiworld)
|
nauvis = Region("Nauvis", player, self.multiworld)
|
||||||
|
|
||||||
location_count = len(base_tech_table) - len(useless_technologies) - self.skip_silo + \
|
location_count = len(base_tech_table) - len(useless_technologies) - self.skip_silo + \
|
||||||
self.multiworld.evolution_traps[player].value + self.multiworld.attack_traps[player].value
|
self.multiworld.evolution_traps[player].value + self.multiworld.attack_traps[player].value
|
||||||
|
|
|
@ -2,7 +2,7 @@ import json
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict, NamedTuple, List, Optional
|
from typing import Dict, NamedTuple, List, Optional
|
||||||
|
|
||||||
from BaseClasses import Region, RegionType, Location
|
from BaseClasses import Region, Location, MultiWorld
|
||||||
|
|
||||||
EventId: Optional[int] = None
|
EventId: Optional[int] = None
|
||||||
CHAOS_TERMINATED_EVENT = 'Terminated Chaos'
|
CHAOS_TERMINATED_EVENT = 'Terminated Chaos'
|
||||||
|
@ -43,8 +43,8 @@ class FF1Locations:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_menu_region(player: int, locations: Dict[str, int],
|
def create_menu_region(player: int, locations: Dict[str, int],
|
||||||
rules: Dict[str, List[List[str]]]) -> Region:
|
rules: Dict[str, List[List[str]]], world: MultiWorld) -> Region:
|
||||||
menu_region = Region("Menu", RegionType.Generic, "Menu", player)
|
menu_region = Region("Menu", player, world)
|
||||||
for name, address in locations.items():
|
for name, address in locations.items():
|
||||||
location = Location(player, name, address, menu_region)
|
location = Location(player, name, address, menu_region)
|
||||||
## TODO REMOVE WHEN LOGIC FOR TOFR IS CORRECT
|
## TODO REMOVE WHEN LOGIC FOR TOFR IS CORRECT
|
||||||
|
|
|
@ -51,8 +51,7 @@ class FF1World(World):
|
||||||
def create_regions(self):
|
def create_regions(self):
|
||||||
locations = get_options(self.multiworld, 'locations', self.player)
|
locations = get_options(self.multiworld, 'locations', self.player)
|
||||||
rules = get_options(self.multiworld, 'rules', self.player)
|
rules = get_options(self.multiworld, 'rules', self.player)
|
||||||
menu_region = self.ff1_locations.create_menu_region(self.player, locations, rules)
|
menu_region = self.ff1_locations.create_menu_region(self.player, locations, rules, self.multiworld)
|
||||||
menu_region.multiworld = self.multiworld
|
|
||||||
terminated_event = Location(self.player, CHAOS_TERMINATED_EVENT, EventId, menu_region)
|
terminated_event = Location(self.player, CHAOS_TERMINATED_EVENT, EventId, menu_region)
|
||||||
terminated_item = Item(CHAOS_TERMINATED_EVENT, ItemClassification.progression, EventId, self.player)
|
terminated_item = Item(CHAOS_TERMINATED_EVENT, ItemClassification.progression, EventId, self.player)
|
||||||
terminated_event.place_locked_item(terminated_item)
|
terminated_event.place_locked_item(terminated_item)
|
||||||
|
|
|
@ -17,7 +17,7 @@ from .ExtractedData import locations, starts, multi_locations, location_to_regio
|
||||||
event_names, item_effects, connectors, one_ways, vanilla_shop_costs, vanilla_location_costs
|
event_names, item_effects, connectors, one_ways, vanilla_shop_costs, vanilla_location_costs
|
||||||
from .Charms import names as charm_names
|
from .Charms import names as charm_names
|
||||||
|
|
||||||
from BaseClasses import Region, Entrance, Location, MultiWorld, Item, RegionType, LocationProgressType, Tutorial, ItemClassification
|
from BaseClasses import Region, Entrance, Location, MultiWorld, Item, LocationProgressType, Tutorial, ItemClassification
|
||||||
from ..AutoWorld import World, LogicMixin, WebWorld
|
from ..AutoWorld import World, LogicMixin, WebWorld
|
||||||
|
|
||||||
path_of_pain_locations = {
|
path_of_pain_locations = {
|
||||||
|
@ -585,17 +585,13 @@ class HKWorld(World):
|
||||||
return self.multiworld.random.choice(self.cached_filler_items[self.player])
|
return self.multiworld.random.choice(self.cached_filler_items[self.player])
|
||||||
|
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, name: str, location_names=None, exits=None) -> Region:
|
def create_region(world: MultiWorld, player: int, name: str, location_names=None) -> Region:
|
||||||
ret = Region(name, RegionType.Generic, name, player)
|
ret = Region(name, player, world)
|
||||||
ret.multiworld = world
|
|
||||||
if location_names:
|
if location_names:
|
||||||
for location in location_names:
|
for location in location_names:
|
||||||
loc_id = HKWorld.location_name_to_id.get(location, None)
|
loc_id = HKWorld.location_name_to_id.get(location, None)
|
||||||
location = HKLocation(player, location, loc_id, ret)
|
location = HKLocation(player, location, loc_id, ret)
|
||||||
ret.locations.append(location)
|
ret.locations.append(location)
|
||||||
if exits:
|
|
||||||
for exit in exits:
|
|
||||||
ret.exits.append(Entrance(player, exit, ret))
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import random
|
import random
|
||||||
from typing import Dict, Any
|
from typing import Dict, Any
|
||||||
from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification, RegionType
|
from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification
|
||||||
from worlds.generic.Rules import set_rule
|
from worlds.generic.Rules import set_rule
|
||||||
from ..AutoWorld import World, WebWorld
|
from ..AutoWorld import World, WebWorld
|
||||||
from . import Items, Locations, Options, Rules, Exits
|
from . import Items, Locations, Options, Rules, Exits
|
||||||
|
@ -163,24 +163,24 @@ class Hylics2World(World):
|
||||||
def create_regions(self) -> None:
|
def create_regions(self) -> None:
|
||||||
|
|
||||||
region_table: Dict[int, Region] = {
|
region_table: Dict[int, Region] = {
|
||||||
0: Region("Menu", RegionType.Generic, "Menu", self.player, self.multiworld),
|
0: Region("Menu", self.player, self.multiworld),
|
||||||
1: Region("Afterlife", RegionType.Generic, "Afterlife", self.player, self.multiworld),
|
1: Region("Afterlife", self.player, self.multiworld),
|
||||||
2: Region("Waynehouse", RegionType.Generic, "Waynehouse", self.player, self.multiworld),
|
2: Region("Waynehouse", self.player, self.multiworld),
|
||||||
3: Region("World", RegionType.Generic, "World", self.player, self.multiworld),
|
3: Region("World", self.player, self.multiworld),
|
||||||
4: Region("New Muldul", RegionType.Generic, "New Muldul", self.player, self.multiworld),
|
4: Region("New Muldul", self.player, self.multiworld),
|
||||||
5: Region("New Muldul Vault", RegionType.Generic, "New Muldul Vault", self.player, self.multiworld),
|
5: Region("New Muldul Vault", self.player, self.multiworld),
|
||||||
6: Region("Viewax", RegionType.Generic, "Viewax's Edifice", self.player, self.multiworld),
|
6: Region("Viewax", self.player, self.multiworld, "Viewax's Edifice"),
|
||||||
7: Region("Airship", RegionType.Generic, "Airship", self.player, self.multiworld),
|
7: Region("Airship", self.player, self.multiworld),
|
||||||
8: Region("Arcade Island", RegionType.Generic, "Arcade Island", self.player, self.multiworld),
|
8: Region("Arcade Island", self.player, self.multiworld),
|
||||||
9: Region("TV Island", RegionType.Generic, "TV Island", self.player, self.multiworld),
|
9: Region("TV Island", self.player, self.multiworld),
|
||||||
10: Region("Juice Ranch", RegionType.Generic, "Juice Ranch", self.player, self.multiworld),
|
10: Region("Juice Ranch", self.player, self.multiworld),
|
||||||
11: Region("Shield Facility", RegionType.Generic, "Shield Facility", self.player, self.multiworld),
|
11: Region("Shield Facility", self.player, self.multiworld),
|
||||||
12: Region("Worm Pod", RegionType.Generic, "Worm Pod", self.player, self.multiworld),
|
12: Region("Worm Pod", self.player, self.multiworld),
|
||||||
13: Region("Foglast", RegionType.Generic, "Foglast", self.player, self.multiworld),
|
13: Region("Foglast", self.player, self.multiworld),
|
||||||
14: Region("Drill Castle", RegionType.Generic, "Drill Castle", self.player, self.multiworld),
|
14: Region("Drill Castle", self.player, self.multiworld),
|
||||||
15: Region("Sage Labyrinth", RegionType.Generic, "Sage Labyrinth", self.player, self.multiworld),
|
15: Region("Sage Labyrinth", self.player, self.multiworld),
|
||||||
16: Region("Sage Airship", RegionType.Generic, "Sage Airship", self.player, self.multiworld),
|
16: Region("Sage Airship", self.player, self.multiworld),
|
||||||
17: Region("Hylemxylem", RegionType.Generic, "Hylemxylem", self.player, self.multiworld)
|
17: Region("Hylemxylem", self.player, self.multiworld)
|
||||||
}
|
}
|
||||||
|
|
||||||
# create regions from table
|
# create regions from table
|
||||||
|
|
|
@ -4,7 +4,7 @@ import os
|
||||||
from enum import IntFlag
|
from enum import IntFlag
|
||||||
from typing import Any, ClassVar, Dict, List, Optional, Set, Tuple
|
from typing import Any, ClassVar, Dict, List, Optional, Set, Tuple
|
||||||
|
|
||||||
from BaseClasses import Entrance, Item, ItemClassification, MultiWorld, Region, RegionType, Tutorial
|
from BaseClasses import Entrance, Item, ItemClassification, MultiWorld, Region, Tutorial
|
||||||
from Main import __version__
|
from Main import __version__
|
||||||
from Options import AssembleOptions
|
from Options import AssembleOptions
|
||||||
from worlds.AutoWorld import WebWorld, World
|
from worlds.AutoWorld import WebWorld, World
|
||||||
|
@ -128,11 +128,11 @@ class L2ACWorld(World):
|
||||||
self.default_party.value = DefaultParty.default
|
self.default_party.value = DefaultParty.default
|
||||||
|
|
||||||
def create_regions(self) -> None:
|
def create_regions(self) -> None:
|
||||||
menu = Region("Menu", RegionType.Generic, "Menu", self.player, self.multiworld)
|
menu = Region("Menu", self.player, self.multiworld)
|
||||||
menu.exits.append(Entrance(self.player, "AncientDungeonEntrance", menu))
|
menu.exits.append(Entrance(self.player, "AncientDungeonEntrance", menu))
|
||||||
self.multiworld.regions.append(menu)
|
self.multiworld.regions.append(menu)
|
||||||
|
|
||||||
ancient_dungeon = Region("AncientDungeon", RegionType.Generic, "Ancient Dungeon", self.player, self.multiworld)
|
ancient_dungeon = Region("AncientDungeon", self.player, self.multiworld, "Ancient Dungeon")
|
||||||
ancient_dungeon.exits.append(Entrance(self.player, "FinalFloorEntrance", ancient_dungeon))
|
ancient_dungeon.exits.append(Entrance(self.player, "FinalFloorEntrance", ancient_dungeon))
|
||||||
item_count: int = self.blue_chest_count
|
item_count: int = self.blue_chest_count
|
||||||
if self.shuffle_capsule_monsters:
|
if self.shuffle_capsule_monsters:
|
||||||
|
@ -152,7 +152,7 @@ class L2ACWorld(World):
|
||||||
ancient_dungeon.locations.append(treasures)
|
ancient_dungeon.locations.append(treasures)
|
||||||
self.multiworld.regions.append(ancient_dungeon)
|
self.multiworld.regions.append(ancient_dungeon)
|
||||||
|
|
||||||
final_floor = Region("FinalFloor", RegionType.Generic, "Ancient Cave Final Floor", self.player, self.multiworld)
|
final_floor = Region("FinalFloor", self.player, self.multiworld, "Ancient Cave Final Floor")
|
||||||
ff_reached = L2ACLocation(self.player, "Final Floor reached", None, final_floor)
|
ff_reached = L2ACLocation(self.player, "Final Floor reached", None, final_floor)
|
||||||
ff_reached.place_locked_item(L2ACItem("Final Floor access", ItemClassification.progression, None, self.player))
|
ff_reached.place_locked_item(L2ACItem("Final Floor access", ItemClassification.progression, None, self.player))
|
||||||
final_floor.locations.append(ff_reached)
|
final_floor.locations.append(ff_reached)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
# This software is released under the MIT License.
|
# This software is released under the MIT License.
|
||||||
# https://opensource.org/licenses/MIT
|
# https://opensource.org/licenses/MIT
|
||||||
|
|
||||||
from BaseClasses import MultiWorld, Region, Entrance, RegionType
|
from BaseClasses import MultiWorld, Region, Entrance
|
||||||
from .Locations import MeritousLocation, location_table
|
from .Locations import MeritousLocation, location_table
|
||||||
|
|
||||||
meritous_regions = ["Meridian", "Ataraxia", "Merodach", "Endgame"]
|
meritous_regions = ["Meridian", "Ataraxia", "Merodach", "Endgame"]
|
||||||
|
@ -23,7 +23,7 @@ def create_regions(world: MultiWorld, player: int):
|
||||||
if x == 0:
|
if x == 0:
|
||||||
insidename = "Menu"
|
insidename = "Menu"
|
||||||
|
|
||||||
region = Region(insidename, RegionType.Generic, fullname, player, world)
|
region = Region(insidename, player, world)
|
||||||
for store in ["Alpha Cache", "Beta Cache", "Gamma Cache", "Reward Chest"]:
|
for store in ["Alpha Cache", "Beta Cache", "Gamma Cache", "Reward Chest"]:
|
||||||
for y in range(1, 7):
|
for y in range(1, 7):
|
||||||
loc_name = f"{store} {(x * 6) + y}"
|
loc_name = f"{store} {(x * 6) + y}"
|
||||||
|
@ -45,7 +45,7 @@ def create_regions(world: MultiWorld, player: int):
|
||||||
world.regions += [region]
|
world.regions += [region]
|
||||||
|
|
||||||
for x, boss in enumerate(bosses):
|
for x, boss in enumerate(bosses):
|
||||||
boss_region = Region(boss, RegionType.Generic, boss, player, world)
|
boss_region = Region(boss, player, world)
|
||||||
boss_region.locations += [
|
boss_region.locations += [
|
||||||
MeritousLocation(player, boss, location_table[boss], boss_region),
|
MeritousLocation(player, boss, location_table[boss], boss_region),
|
||||||
MeritousLocation(player, f"{boss} Defeat", None, boss_region)
|
MeritousLocation(player, f"{boss} Defeat", None, boss_region)
|
||||||
|
@ -53,14 +53,12 @@ def create_regions(world: MultiWorld, player: int):
|
||||||
boss_region.exits = _generate_entrances(player, [f"To {regions[x + 1]} Quarter"], boss_region)
|
boss_region.exits = _generate_entrances(player, [f"To {regions[x + 1]} Quarter"], boss_region)
|
||||||
world.regions.append(boss_region)
|
world.regions.append(boss_region)
|
||||||
|
|
||||||
region_final_boss = Region(
|
region_final_boss = Region("Final Boss", player, world)
|
||||||
"Final Boss", RegionType.Generic, "Final Boss", player, world)
|
|
||||||
region_final_boss.locations = [MeritousLocation(
|
region_final_boss.locations = [MeritousLocation(
|
||||||
player, "Wervyn Anixil", None, region_final_boss)]
|
player, "Wervyn Anixil", None, region_final_boss)]
|
||||||
world.regions.append(region_final_boss)
|
world.regions.append(region_final_boss)
|
||||||
|
|
||||||
region_tfb = Region("True Final Boss", RegionType.Generic,
|
region_tfb = Region("True Final Boss", player, world)
|
||||||
"True Final Boss", player, world)
|
|
||||||
region_tfb.locations = [MeritousLocation(
|
region_tfb.locations = [MeritousLocation(
|
||||||
player, "Wervyn Anixil?", None, region_tfb)]
|
player, "Wervyn Anixil?", None, region_tfb)]
|
||||||
world.regions.append(region_tfb)
|
world.regions.append(region_tfb)
|
||||||
|
|
|
@ -137,7 +137,7 @@ class MinecraftWorld(World):
|
||||||
|
|
||||||
def create_regions(self):
|
def create_regions(self):
|
||||||
def MCRegion(region_name: str, exits=[]):
|
def MCRegion(region_name: str, exits=[]):
|
||||||
ret = Region(region_name, None, region_name, self.player, self.multiworld)
|
ret = Region(region_name, self.player, self.multiworld)
|
||||||
ret.locations = [MinecraftAdvancement(self.player, loc_name, loc_data.id, ret)
|
ret.locations = [MinecraftAdvancement(self.player, loc_name, loc_data.id, ret)
|
||||||
for loc_name, loc_data in advancement_table.items()
|
for loc_name, loc_data in advancement_table.items()
|
||||||
if loc_data.region == region_name]
|
if loc_data.region == region_name]
|
||||||
|
|
|
@ -460,7 +460,7 @@ def get_hint_area(spot):
|
||||||
|
|
||||||
if parent_region.dungeon:
|
if parent_region.dungeon:
|
||||||
return parent_region.dungeon.hint_text
|
return parent_region.dungeon.hint_text
|
||||||
elif parent_region.hint_text and (spot.parent_region.name == 'Root' or parent_region.name != 'Root'):
|
elif parent_region.hint and (spot.parent_region.name == 'Root' or parent_region.name != 'Root'):
|
||||||
return parent_region.hint_text
|
return parent_region.hint_text
|
||||||
|
|
||||||
spot_queue.extend(list(filter(lambda ent: ent not in already_checked, parent_region.entrances)))
|
spot_queue.extend(list(filter(lambda ent: ent not in already_checked, parent_region.entrances)))
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from enum import unique, Enum
|
from enum import unique, Enum
|
||||||
|
|
||||||
from BaseClasses import Region
|
from BaseClasses import Region, MultiWorld
|
||||||
from .Hints import HintArea
|
from .Hints import HintArea
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,8 +32,8 @@ class TimeOfDay(object):
|
||||||
class OOTRegion(Region):
|
class OOTRegion(Region):
|
||||||
game: str = "Ocarina of Time"
|
game: str = "Ocarina of Time"
|
||||||
|
|
||||||
def __init__(self, name: str, type, hint, player: int):
|
def __init__(self, name: str, player: int, multiworld: MultiWorld):
|
||||||
super(OOTRegion, self).__init__(name, type, hint, player)
|
super(OOTRegion, self).__init__(name, player, multiworld)
|
||||||
self._oot_hint = None
|
self._oot_hint = None
|
||||||
self.alt_hint = None
|
self.alt_hint = None
|
||||||
self.price = None
|
self.price = None
|
||||||
|
@ -45,6 +45,16 @@ class OOTRegion(Region):
|
||||||
self.font_color = None
|
self.font_color = None
|
||||||
self.is_boss_room = False
|
self.is_boss_room = False
|
||||||
|
|
||||||
|
# This is too generic of a name to risk not breaking in the future.
|
||||||
|
# This lets us possibly switch it out later if AP starts using it.
|
||||||
|
@property
|
||||||
|
def hint(self):
|
||||||
|
return self._oot_hint
|
||||||
|
|
||||||
|
@hint.setter
|
||||||
|
def hint(self, value):
|
||||||
|
self._oot_hint = value
|
||||||
|
|
||||||
def get_scene(self):
|
def get_scene(self):
|
||||||
if self.scene:
|
if self.scene:
|
||||||
return self.scene
|
return self.scene
|
||||||
|
@ -70,10 +80,4 @@ class OOTRegion(Region):
|
||||||
self._oot_hint = HintArea.for_dungeon(self.dungeon)
|
self._oot_hint = HintArea.for_dungeon(self.dungeon)
|
||||||
else:
|
else:
|
||||||
self._oot_hint = HintArea[hint]
|
self._oot_hint = HintArea[hint]
|
||||||
self.hint_text = str(self._oot_hint)
|
self._hint_text = str(self._oot_hint)
|
||||||
|
|
||||||
# This is too generic of a name to risk not breaking in the future.
|
|
||||||
# This lets us possibly switch it out later if AP starts using it.
|
|
||||||
@property
|
|
||||||
def hint(self):
|
|
||||||
return self._oot_hint
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ from .N64Patch import create_patch_file
|
||||||
from .Cosmetics import patch_cosmetics
|
from .Cosmetics import patch_cosmetics
|
||||||
|
|
||||||
from Utils import get_options
|
from Utils import get_options
|
||||||
from BaseClasses import MultiWorld, CollectionState, RegionType, Tutorial, LocationProgressType
|
from BaseClasses import MultiWorld, CollectionState, Tutorial, LocationProgressType
|
||||||
from Options import Range, Toggle, VerifyKeys
|
from Options import Range, Toggle, VerifyKeys
|
||||||
from Fill import fill_restrictive, fast_fill, FillError
|
from Fill import fill_restrictive, fast_fill, FillError
|
||||||
from worlds.generic.Rules import exclusion_rules, add_item_rule
|
from worlds.generic.Rules import exclusion_rules, add_item_rule
|
||||||
|
@ -453,8 +453,7 @@ class OOTWorld(World):
|
||||||
region_json = read_json(file_path)
|
region_json = read_json(file_path)
|
||||||
|
|
||||||
for region in region_json:
|
for region in region_json:
|
||||||
new_region = OOTRegion(region['region_name'], RegionType.Generic, None, self.player)
|
new_region = OOTRegion(region['region_name'], self.player, self.multiworld)
|
||||||
new_region.multiworld = self.multiworld
|
|
||||||
if 'pretty_name' in region:
|
if 'pretty_name' in region:
|
||||||
new_region.pretty_name = region['pretty_name']
|
new_region.pretty_name = region['pretty_name']
|
||||||
if 'font_color' in region:
|
if 'font_color' in region:
|
||||||
|
@ -624,7 +623,7 @@ class OOTWorld(World):
|
||||||
world_type = 'Glitched World'
|
world_type = 'Glitched World'
|
||||||
overworld_data_path = data_path(world_type, 'Overworld.json')
|
overworld_data_path = data_path(world_type, 'Overworld.json')
|
||||||
bosses_data_path = data_path(world_type, 'Bosses.json')
|
bosses_data_path = data_path(world_type, 'Bosses.json')
|
||||||
menu = OOTRegion('Menu', None, None, self.player)
|
menu = OOTRegion('Menu', self.player, self.multiworld)
|
||||||
start = OOTEntrance(self.player, self.multiworld, 'New Game', menu)
|
start = OOTEntrance(self.player, self.multiworld, 'New Game', menu)
|
||||||
menu.exits.append(start)
|
menu.exits.append(start)
|
||||||
self.multiworld.regions.append(menu)
|
self.multiworld.regions.append(menu)
|
||||||
|
@ -1029,7 +1028,7 @@ class OOTWorld(World):
|
||||||
for player in barren_hint_players:
|
for player in barren_hint_players:
|
||||||
items_by_region[player] = {}
|
items_by_region[player] = {}
|
||||||
for r in multiworld.worlds[player].regions:
|
for r in multiworld.worlds[player].regions:
|
||||||
items_by_region[player][r.hint_text] = {'dungeon': False, 'weight': 0, 'is_barren': True}
|
items_by_region[player][r._hint_text] = {'dungeon': False, 'weight': 0, 'is_barren': True}
|
||||||
for d in multiworld.worlds[player].dungeons:
|
for d in multiworld.worlds[player].dungeons:
|
||||||
items_by_region[player][d.hint_text] = {'dungeon': True, 'weight': 0, 'is_barren': True}
|
items_by_region[player][d.hint_text] = {'dungeon': True, 'weight': 0, 'is_barren': True}
|
||||||
del (items_by_region[player]["Link's pocket"])
|
del (items_by_region[player]["Link's pocket"])
|
||||||
|
|
|
@ -6,7 +6,7 @@ from .Locations import lookup_name_to_id
|
||||||
from .Rules import set_rules, location_rules
|
from .Rules import set_rules, location_rules
|
||||||
from .Regions import locations_by_region, connectors
|
from .Regions import locations_by_region, connectors
|
||||||
from .Options import options
|
from .Options import options
|
||||||
from BaseClasses import Region, Item, Location, RegionType, Entrance, ItemClassification
|
from BaseClasses import Region, Item, Location, Entrance, ItemClassification
|
||||||
|
|
||||||
|
|
||||||
class OriBlindForest(World):
|
class OriBlindForest(World):
|
||||||
|
@ -31,7 +31,7 @@ class OriBlindForest(World):
|
||||||
set_rules = set_rules
|
set_rules = set_rules
|
||||||
|
|
||||||
def create_region(self, name: str):
|
def create_region(self, name: str):
|
||||||
return Region(name, RegionType.Generic, name, self.player, self.multiworld)
|
return Region(name, self.player, self.multiworld)
|
||||||
|
|
||||||
def create_regions(self):
|
def create_regions(self):
|
||||||
world = self.multiworld
|
world = self.multiworld
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Callable, Dict, Any, List, Optional
|
from typing import Callable, Dict, Any, List, Optional
|
||||||
|
|
||||||
from BaseClasses import ItemClassification, CollectionState, Region, Entrance, Location, RegionType, Tutorial
|
from BaseClasses import ItemClassification, CollectionState, Region, Entrance, Location, Tutorial
|
||||||
from worlds.AutoWorld import World, WebWorld
|
from worlds.AutoWorld import World, WebWorld
|
||||||
|
|
||||||
from .Overcooked2Levels import Overcooked2Level, Overcooked2GenericLevel, ITEMS_TO_EXCLUDE_IF_NO_DLC
|
from .Overcooked2Levels import Overcooked2Level, Overcooked2GenericLevel, ITEMS_TO_EXCLUDE_IF_NO_DLC
|
||||||
|
@ -82,8 +82,6 @@ class Overcooked2World(World):
|
||||||
|
|
||||||
def add_region(self, region_name: str):
|
def add_region(self, region_name: str):
|
||||||
region = Region(
|
region = Region(
|
||||||
region_name,
|
|
||||||
RegionType.Generic,
|
|
||||||
region_name,
|
region_name,
|
||||||
self.player,
|
self.player,
|
||||||
self.multiworld,
|
self.multiworld,
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
|
|
||||||
from BaseClasses import MultiWorld, Region, Entrance, RegionType, LocationProgressType
|
from BaseClasses import MultiWorld, Region, Entrance, LocationProgressType
|
||||||
from .locations import location_data, PokemonRBLocation
|
from .locations import location_data, PokemonRBLocation
|
||||||
|
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, name: str, locations_per_region=None, exits=None):
|
def create_region(world: MultiWorld, player: int, name: str, locations_per_region=None, exits=None):
|
||||||
ret = Region(name, RegionType.Generic, name, player, world)
|
ret = Region(name, player, world)
|
||||||
for location in locations_per_region.get(name, []):
|
for location in locations_per_region.get(name, []):
|
||||||
location.parent_region = ret
|
location.parent_region = ret
|
||||||
ret.locations.append(location)
|
ret.locations.append(location)
|
||||||
|
|
|
@ -9,7 +9,7 @@ from .Regions import create_regions, getConnectionName
|
||||||
from .Rules import set_rules
|
from .Rules import set_rules
|
||||||
from .Options import raft_options
|
from .Options import raft_options
|
||||||
|
|
||||||
from BaseClasses import Region, RegionType, Entrance, Location, MultiWorld, Item, ItemClassification, Tutorial
|
from BaseClasses import Region, Entrance, Location, MultiWorld, Item, ItemClassification, Tutorial
|
||||||
from ..AutoWorld import World, WebWorld
|
from ..AutoWorld import World, WebWorld
|
||||||
|
|
||||||
|
|
||||||
|
@ -201,8 +201,7 @@ class RaftWorld(World):
|
||||||
}
|
}
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
||||||
ret = Region(name, RegionType.Generic, name, player)
|
ret = Region(name, player, world)
|
||||||
ret.multiworld = world
|
|
||||||
if locations:
|
if locations:
|
||||||
for location in locations:
|
for location in locations:
|
||||||
loc_id = locations_lookup_name_to_id.get(location, 0)
|
loc_id = locations_lookup_name_to_id.get(location, 0)
|
||||||
|
@ -211,7 +210,6 @@ def create_region(world: MultiWorld, player: int, name: str, locations=None, exi
|
||||||
if exits:
|
if exits:
|
||||||
for exit in exits:
|
for exit in exits:
|
||||||
ret.exits.append(Entrance(player, getConnectionName(name, exit), ret))
|
ret.exits.append(Entrance(player, getConnectionName(name, exit), ret))
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
class RaftLocation(Location):
|
class RaftLocation(Location):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from typing import Dict, List, NamedTuple, Optional
|
from typing import Dict, List, NamedTuple, Optional
|
||||||
|
|
||||||
from BaseClasses import MultiWorld, Region, RegionType, Entrance
|
from BaseClasses import MultiWorld, Region, Entrance
|
||||||
from .Locations import RLLocation, location_table, get_locations_by_category
|
from .Locations import RLLocation, location_table, get_locations_by_category
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ def create_regions(multiworld: MultiWorld, player: int):
|
||||||
|
|
||||||
|
|
||||||
def create_region(multiworld: MultiWorld, player: int, name: str, data: RLRegionData):
|
def create_region(multiworld: MultiWorld, player: int, name: str, data: RLRegionData):
|
||||||
region = Region(name, RegionType.Generic, name, player, multiworld)
|
region = Region(name, player, multiworld)
|
||||||
if data.locations:
|
if data.locations:
|
||||||
for loc_name in data.locations:
|
for loc_name in data.locations:
|
||||||
loc_data = location_table.get(loc_name)
|
loc_data = location_table.get(loc_name)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from typing import Dict, List, NamedTuple, Optional
|
from typing import Dict, List, NamedTuple, Optional
|
||||||
|
|
||||||
from BaseClasses import MultiWorld, Region, RegionType, Entrance
|
from BaseClasses import MultiWorld, Region, Entrance
|
||||||
from .Locations import location_table, RiskOfRainLocation
|
from .Locations import location_table, RiskOfRainLocation
|
||||||
|
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ def create_regions(multiworld: MultiWorld, player: int):
|
||||||
|
|
||||||
|
|
||||||
def create_region(multiworld: MultiWorld, player: int, name: str, data: RoRRegionData):
|
def create_region(multiworld: MultiWorld, player: int, name: str, data: RoRRegionData):
|
||||||
region = Region(name, RegionType.Generic, name, player, multiworld)
|
region = Region(name, player, multiworld)
|
||||||
if data.locations:
|
if data.locations:
|
||||||
for location_name in data.locations:
|
for location_name in data.locations:
|
||||||
location_data = location_table.get(location_name)
|
location_data = location_table.get(location_name)
|
||||||
|
|
|
@ -5,7 +5,7 @@ from .Locations import RiskOfRainLocation, get_classic_item_pickups, item_pickup
|
||||||
from .Rules import set_rules
|
from .Rules import set_rules
|
||||||
from .RoR2Environments import *
|
from .RoR2Environments import *
|
||||||
|
|
||||||
from BaseClasses import Region, RegionType, Entrance, Item, ItemClassification, MultiWorld, Tutorial
|
from BaseClasses import Region, Entrance, Item, ItemClassification, MultiWorld, Tutorial
|
||||||
from .Options import ror2_options, ItemWeights
|
from .Options import ror2_options, ItemWeights
|
||||||
from worlds.AutoWorld import World, WebWorld
|
from worlds.AutoWorld import World, WebWorld
|
||||||
from .Regions import create_regions
|
from .Regions import create_regions
|
||||||
|
@ -256,7 +256,7 @@ def create_events(world: MultiWorld, player: int) -> None:
|
||||||
|
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, name: str, locations: Dict[str, int] = {}) -> Region:
|
def create_region(world: MultiWorld, player: int, name: str, locations: Dict[str, int] = {}) -> Region:
|
||||||
ret = Region(name, RegionType.Generic, name, player, world)
|
ret = Region(name, player, world)
|
||||||
for location_name, location_id in locations.items():
|
for location_name, location_id in locations.items():
|
||||||
ret.locations.append(RiskOfRainLocation(player, location_name, location_id, ret))
|
ret.locations.append(RiskOfRainLocation(player, location_name, location_id, ret))
|
||||||
return ret
|
return ret
|
||||||
|
|
|
@ -964,8 +964,7 @@ def connect_regions(world, player, gates: typing.List[LevelGate], cannon_core_em
|
||||||
|
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
|
def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
|
||||||
ret = Region(name, None, name, player)
|
ret = Region(name, player, world)
|
||||||
ret.multiworld = world
|
|
||||||
if locations:
|
if locations:
|
||||||
for location in locations:
|
for location in locations:
|
||||||
loc_id = active_locations.get(location, 0)
|
loc_id = active_locations.get(location, 0)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from typing import List, Set, Dict, Tuple, Optional, Callable
|
from typing import List, Set, Dict, Tuple, Optional, Callable
|
||||||
from BaseClasses import MultiWorld, Region, Entrance, Location, RegionType
|
from BaseClasses import MultiWorld, Region, Entrance, Location
|
||||||
from .Locations import LocationData
|
from .Locations import LocationData
|
||||||
from .Options import get_option_value
|
from .Options import get_option_value
|
||||||
from .MissionTables import MissionInfo, mission_orders, vanilla_mission_req_table, alt_final_mission_locations
|
from .MissionTables import MissionInfo, mission_orders, vanilla_mission_req_table, alt_final_mission_locations
|
||||||
|
@ -234,8 +234,7 @@ def create_location(player: int, location_data: LocationData, region: Region,
|
||||||
|
|
||||||
def create_region(multiworld: MultiWorld, player: int, locations_per_region: Dict[str, List[LocationData]],
|
def create_region(multiworld: MultiWorld, player: int, locations_per_region: Dict[str, List[LocationData]],
|
||||||
location_cache: List[Location], name: str) -> Region:
|
location_cache: List[Location], name: str) -> Region:
|
||||||
region = Region(name, RegionType.Generic, name, player)
|
region = Region(name, player, multiworld)
|
||||||
region.multiworld = multiworld
|
|
||||||
|
|
||||||
if name in locations_per_region:
|
if name in locations_per_region:
|
||||||
for location_data in locations_per_region[name]:
|
for location_data in locations_per_region[name]:
|
||||||
|
|
|
@ -18,7 +18,7 @@ from .Client import SMSNIClient
|
||||||
from .Rom import get_base_rom_path, SM_ROM_MAX_PLAYERID, SM_ROM_PLAYERDATA_COUNT, SMDeltaPatch, get_sm_symbols
|
from .Rom import get_base_rom_path, SM_ROM_MAX_PLAYERID, SM_ROM_PLAYERDATA_COUNT, SMDeltaPatch, get_sm_symbols
|
||||||
import Utils
|
import Utils
|
||||||
|
|
||||||
from BaseClasses import Region, Entrance, Location, MultiWorld, Item, ItemClassification, RegionType, CollectionState, Tutorial
|
from BaseClasses import Region, Entrance, Location, MultiWorld, Item, ItemClassification, CollectionState, Tutorial
|
||||||
from ..AutoWorld import World, AutoLogicRegister, WebWorld
|
from ..AutoWorld import World, AutoLogicRegister, WebWorld
|
||||||
|
|
||||||
from logic.smboolmanager import SMBoolManager
|
from logic.smboolmanager import SMBoolManager
|
||||||
|
@ -721,8 +721,7 @@ def create_locations(self, player: int):
|
||||||
|
|
||||||
|
|
||||||
def create_region(self, world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
def create_region(self, world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
||||||
ret = Region(name, RegionType.LightWorld, name, player)
|
ret = Region(name, player, world)
|
||||||
ret.multiworld = world
|
|
||||||
if locations:
|
if locations:
|
||||||
for loc in locations:
|
for loc in locations:
|
||||||
location = self.locations[loc]
|
location = self.locations[loc]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import typing
|
import typing
|
||||||
from BaseClasses import MultiWorld, Region, Entrance, Location, RegionType
|
from BaseClasses import MultiWorld, Region, Entrance, Location
|
||||||
from .Locations import SM64Location, location_table, locBoB_table, locWhomp_table, locJRB_table, locCCM_table, \
|
from .Locations import SM64Location, location_table, locBoB_table, locWhomp_table, locJRB_table, locCCM_table, \
|
||||||
locBBH_table, \
|
locBBH_table, \
|
||||||
locHMC_table, locLLL_table, locSSL_table, locDDD_table, locSL_table, \
|
locHMC_table, locLLL_table, locSSL_table, locDDD_table, locSL_table, \
|
||||||
|
@ -27,7 +27,7 @@ sm64_internalloc_to_string = dict(zip(sm64paintings+sm64secrets, sm64entrances_s
|
||||||
sm64_internalloc_to_regionid = dict(zip(sm64paintings+sm64secrets, list(range(13)) + [12,13,14] + list(range(15,15+len(sm64secrets)))))
|
sm64_internalloc_to_regionid = dict(zip(sm64paintings+sm64secrets, list(range(13)) + [12,13,14] + list(range(15,15+len(sm64secrets)))))
|
||||||
|
|
||||||
def create_regions(world: MultiWorld, player: int):
|
def create_regions(world: MultiWorld, player: int):
|
||||||
regSS = Region("Menu", RegionType.Generic, "Castle Area", player, world)
|
regSS = Region("Menu", player, world, "Castle Area")
|
||||||
create_default_locs(regSS, locSS_table, player)
|
create_default_locs(regSS, locSS_table, player)
|
||||||
world.regions.append(regSS)
|
world.regions.append(regSS)
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@ def connect_regions(world: MultiWorld, player: int, source: str, target: str, ru
|
||||||
connection.connect(targetRegion)
|
connection.connect(targetRegion)
|
||||||
|
|
||||||
def create_region(name: str, player: int, world: MultiWorld) -> Region:
|
def create_region(name: str, player: int, world: MultiWorld) -> Region:
|
||||||
return Region(name, RegionType.Generic, name, player, world)
|
return Region(name, player, world)
|
||||||
|
|
||||||
def create_default_locs(reg: Region, locs, player):
|
def create_default_locs(reg: Region, locs, player):
|
||||||
reg_names = [name for name, id in locs.items()]
|
reg_names = [name for name, id in locs.items()]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from BaseClasses import MultiWorld, Region, RegionType, Entrance
|
from BaseClasses import MultiWorld, Region, Entrance
|
||||||
from .Locations import SMWLocation
|
from .Locations import SMWLocation
|
||||||
from .Levels import level_info_dict
|
from .Levels import level_info_dict
|
||||||
from .Names import LocationName, ItemName
|
from .Names import LocationName, ItemName
|
||||||
|
@ -1130,8 +1130,7 @@ def connect_regions(world, player, level_to_tile_dict):
|
||||||
|
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
|
def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
|
||||||
ret = Region(name, RegionType.Generic, name, player)
|
ret = Region(name, player, world)
|
||||||
ret.world = world
|
|
||||||
if locations:
|
if locations:
|
||||||
for locationName in locations:
|
for locationName in locations:
|
||||||
loc_id = active_locations.get(locationName, 0)
|
loc_id = active_locations.get(locationName, 0)
|
||||||
|
|
|
@ -723,7 +723,7 @@ def handle_swap_donut_gh_exits(rom):
|
||||||
rom.write_bytes(0x26371, bytes([0x32]))
|
rom.write_bytes(0x26371, bytes([0x32]))
|
||||||
|
|
||||||
|
|
||||||
def handle_bowser_rooms(rom, world, player):
|
def handle_bowser_rooms(rom, world, player: int):
|
||||||
if world.bowser_castle_rooms[player] == "random_two_room":
|
if world.bowser_castle_rooms[player] == "random_two_room":
|
||||||
chosen_rooms = world.random.sample(standard_bowser_rooms, 2)
|
chosen_rooms = world.random.sample(standard_bowser_rooms, 2)
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import random
|
||||||
import threading
|
import threading
|
||||||
from typing import Dict, Set, TextIO
|
from typing import Dict, Set, TextIO
|
||||||
|
|
||||||
from BaseClasses import Region, Entrance, Location, MultiWorld, Item, ItemClassification, RegionType, CollectionState, \
|
from BaseClasses import Region, Entrance, Location, MultiWorld, Item, ItemClassification, CollectionState, \
|
||||||
Tutorial
|
Tutorial
|
||||||
from worlds.generic.Rules import set_rule
|
from worlds.generic.Rules import set_rule
|
||||||
from worlds.smz3.TotalSMZ3.Item import ItemType
|
from worlds.smz3.TotalSMZ3.Item import ItemType
|
||||||
|
@ -637,8 +637,7 @@ class SMZ3World(World):
|
||||||
self.smz3World.locationLookup[name].APLocation = newLoc
|
self.smz3World.locationLookup[name].APLocation = newLoc
|
||||||
|
|
||||||
def create_region(self, world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
def create_region(self, world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
||||||
ret = Region(name, RegionType.LightWorld, name, player)
|
ret = Region(name, player, world)
|
||||||
ret.multiworld = world
|
|
||||||
if locations:
|
if locations:
|
||||||
for loc in locations:
|
for loc in locations:
|
||||||
location = self.locations[loc]
|
location = self.locations[loc]
|
||||||
|
|
|
@ -5,7 +5,7 @@ import threading
|
||||||
import typing
|
import typing
|
||||||
from worlds.AutoWorld import WebWorld, World
|
from worlds.AutoWorld import WebWorld, World
|
||||||
from worlds.generic.Rules import add_item_rule, set_rule
|
from worlds.generic.Rules import add_item_rule, set_rule
|
||||||
from BaseClasses import Entrance, Item, ItemClassification, Location, LocationProgressType, Region, RegionType, Tutorial
|
from BaseClasses import Entrance, Item, ItemClassification, Location, LocationProgressType, Region, Tutorial
|
||||||
from Utils import output_path
|
from Utils import output_path
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -211,7 +211,7 @@ class SoEWorld(World):
|
||||||
max_difficulty = 1 if self.multiworld.difficulty[self.player] == Difficulty.option_easy else 256
|
max_difficulty = 1 if self.multiworld.difficulty[self.player] == Difficulty.option_easy else 256
|
||||||
|
|
||||||
# TODO: generate *some* regions from locations' requirements?
|
# TODO: generate *some* regions from locations' requirements?
|
||||||
r = Region('Menu', RegionType.Generic, 'Menu', self.player, self.multiworld)
|
r = Region('Menu', self.player, self.multiworld)
|
||||||
r.exits = [Entrance(self.player, 'New Game', r)]
|
r.exits = [Entrance(self.player, 'New Game', r)]
|
||||||
self.multiworld.regions += [r]
|
self.multiworld.regions += [r]
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ class SoEWorld(World):
|
||||||
late_locations = self.multiworld.random.sample(late_bosses, late_count)
|
late_locations = self.multiworld.random.sample(late_bosses, late_count)
|
||||||
|
|
||||||
# add locations to the world
|
# add locations to the world
|
||||||
r = Region('Ingame', RegionType.Generic, 'Ingame', self.player, self.multiworld)
|
r = Region('Ingame', self.player, self.multiworld)
|
||||||
for sphere in spheres.values():
|
for sphere in spheres.values():
|
||||||
for locations in sphere.values():
|
for locations in sphere.values():
|
||||||
for location in locations:
|
for location in locations:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import string
|
import string
|
||||||
|
|
||||||
from BaseClasses import Entrance, Item, ItemClassification, Location, MultiWorld, Region, RegionType, Tutorial
|
from BaseClasses import Entrance, Item, ItemClassification, Location, MultiWorld, Region, Tutorial
|
||||||
from .Items import event_item_pairs, item_pool, item_table
|
from .Items import event_item_pairs, item_pool, item_table
|
||||||
from .Locations import location_table
|
from .Locations import location_table
|
||||||
from .Options import spire_options
|
from .Options import spire_options
|
||||||
|
@ -85,8 +85,7 @@ class SpireWorld(World):
|
||||||
|
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
||||||
ret = Region(name, RegionType.Generic, name, player)
|
ret = Region(name, player, world)
|
||||||
ret.multiworld = world
|
|
||||||
if locations:
|
if locations:
|
||||||
for location in locations:
|
for location in locations:
|
||||||
loc_id = location_table.get(location, 0)
|
loc_id = location_table.get(location, 0)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
from typing import List, Dict, Any
|
from typing import List, Dict, Any
|
||||||
|
|
||||||
from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification, RegionType
|
from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification
|
||||||
from worlds.AutoWorld import World, WebWorld
|
from worlds.AutoWorld import World, WebWorld
|
||||||
from . import Items
|
from . import Items
|
||||||
from . import Locations
|
from . import Locations
|
||||||
|
@ -135,8 +135,7 @@ class SubnauticaWorld(World):
|
||||||
item_id, player=self.player)
|
item_id, player=self.player)
|
||||||
|
|
||||||
def create_region(self, name: str, locations=None, exits=None):
|
def create_region(self, name: str, locations=None, exits=None):
|
||||||
ret = Region(name, RegionType.Generic, name, self.player)
|
ret = Region(name, self.player, self.multiworld)
|
||||||
ret.multiworld = self.multiworld
|
|
||||||
if locations:
|
if locations:
|
||||||
for location in locations:
|
for location in locations:
|
||||||
loc_id = self.location_name_to_id.get(location, None)
|
loc_id = self.location_name_to_id.get(location, None)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from typing import List, Set, Dict, Tuple, Optional, Callable
|
from typing import List, Set, Dict, Tuple, Optional, Callable
|
||||||
from BaseClasses import MultiWorld, Region, Entrance, Location, RegionType
|
from BaseClasses import MultiWorld, Region, Entrance, Location
|
||||||
from .Options import is_option_enabled
|
from .Options import is_option_enabled
|
||||||
from .Locations import LocationData
|
from .Locations import LocationData
|
||||||
|
|
||||||
|
@ -200,8 +200,7 @@ def create_location(player: int, location_data: LocationData, region: Region, lo
|
||||||
|
|
||||||
|
|
||||||
def create_region(world: MultiWorld, player: int, locations_per_region: Dict[str, List[LocationData]], location_cache: List[Location], name: str) -> Region:
|
def create_region(world: MultiWorld, player: int, locations_per_region: Dict[str, List[LocationData]], location_cache: List[Location], name: str) -> Region:
|
||||||
region = Region(name, RegionType.Generic, name, player)
|
region = Region(name, player, world)
|
||||||
region.multiworld = world
|
|
||||||
|
|
||||||
if name in locations_per_region:
|
if name in locations_per_region:
|
||||||
for location_data in locations_per_region[name]:
|
for location_data in locations_per_region[name]:
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
import typing
|
import typing
|
||||||
from BaseClasses import MultiWorld, Region, Entrance, Location, RegionType
|
from BaseClasses import MultiWorld, Region, Entrance, Location
|
||||||
from .Locations import V6Location, location_table
|
from .Locations import V6Location, location_table
|
||||||
|
|
||||||
v6areas = ["Laboratory", "The Tower", "Space Station 2", "Warp Zone"]
|
v6areas = ["Laboratory", "The Tower", "Space Station 2", "Warp Zone"]
|
||||||
|
|
||||||
|
|
||||||
def create_regions(world: MultiWorld, player: int):
|
def create_regions(world: MultiWorld, player: int):
|
||||||
regOvr = Region("Menu", RegionType.Generic, "Dimension VVVVVV", player, world)
|
regOvr = Region("Menu", player, world, "Dimension VVVVVV")
|
||||||
locOvr_names = ["Overworld (Pipe-shaped Segment)", "Overworld (Left of Ship)", "Overworld (Square Room)", "Overworld (Sad Elephant)",
|
locOvr_names = ["Overworld (Pipe-shaped Segment)", "Overworld (Left of Ship)", "Overworld (Square Room)", "Overworld (Sad Elephant)",
|
||||||
"It's a Secret to Nobody", "Trench Warfare", "NPC Trinket", "V"]
|
"It's a Secret to Nobody", "Trench Warfare", "NPC Trinket", "V"]
|
||||||
regOvr.locations += [V6Location(player, loc_name, location_table[loc_name], regOvr) for loc_name in locOvr_names]
|
regOvr.locations += [V6Location(player, loc_name, location_table[loc_name], regOvr) for loc_name in locOvr_names]
|
||||||
world.regions.append(regOvr)
|
world.regions.append(regOvr)
|
||||||
|
|
||||||
regLab = Region("Laboratory", RegionType.Generic, "Laboratory", player, world)
|
regLab = Region("Laboratory", player, world)
|
||||||
locLab_names = ["Young Man, It's Worth the Challenge", "Overworld (Outside Entanglement Generator)", "The Tantalizing Trinket", "Purest Unobtainium"]
|
locLab_names = ["Young Man, It's Worth the Challenge", "Overworld (Outside Entanglement Generator)", "The Tantalizing Trinket", "Purest Unobtainium"]
|
||||||
regLab.locations += [V6Location(player, loc_name, location_table[loc_name], regLab) for loc_name in locLab_names]
|
regLab.locations += [V6Location(player, loc_name, location_table[loc_name], regLab) for loc_name in locLab_names]
|
||||||
world.regions.append(regLab)
|
world.regions.append(regLab)
|
||||||
|
|
||||||
regTow = Region("The Tower", RegionType.Generic, "The Tower", player, world)
|
regTow = Region("The Tower", player, world)
|
||||||
locTow_names = ["The Tower 1", "The Tower 2"]
|
locTow_names = ["The Tower 1", "The Tower 2"]
|
||||||
regTow.locations += [V6Location(player, loc_name, location_table[loc_name], regTow) for loc_name in locTow_names]
|
regTow.locations += [V6Location(player, loc_name, location_table[loc_name], regTow) for loc_name in locTow_names]
|
||||||
world.regions.append(regTow)
|
world.regions.append(regTow)
|
||||||
|
|
||||||
regSp2 = Region("Space Station 2", RegionType.Generic, "Space Station 2", player, world)
|
regSp2 = Region("Space Station 2", player, world)
|
||||||
locSp2_names = ["One Way Room", "You Just Keep Coming Back", "Clarion Call", "Prize for the Reckless", "Doing things the hard way"]
|
locSp2_names = ["One Way Room", "You Just Keep Coming Back", "Clarion Call", "Prize for the Reckless", "Doing things the hard way"]
|
||||||
regSp2.locations += [V6Location(player, loc_name, location_table[loc_name], regSp2) for loc_name in locSp2_names]
|
regSp2.locations += [V6Location(player, loc_name, location_table[loc_name], regSp2) for loc_name in locSp2_names]
|
||||||
world.regions.append(regSp2)
|
world.regions.append(regSp2)
|
||||||
|
|
||||||
regWrp = Region("Warp Zone", RegionType.Generic, "Warp Zone", player, world)
|
regWrp = Region("Warp Zone", player, world)
|
||||||
locWrp_names = ["Edge Games"]
|
locWrp_names = ["Edge Games"]
|
||||||
regWrp.locations += [V6Location(player, loc_name, location_table[loc_name], regWrp) for loc_name in locWrp_names]
|
regWrp.locations += [V6Location(player, loc_name, location_table[loc_name], regWrp) for loc_name in locWrp_names]
|
||||||
world.regions.append(regWrp)
|
world.regions.append(regWrp)
|
||||||
|
|
|
@ -3,7 +3,7 @@ Archipelago init file for The Witness
|
||||||
"""
|
"""
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from BaseClasses import Region, RegionType, Location, MultiWorld, Item, Entrance, Tutorial, ItemClassification
|
from BaseClasses import Region, Location, MultiWorld, Item, Entrance, Tutorial, ItemClassification
|
||||||
from .hints import get_always_hint_locations, get_always_hint_items, get_priority_hint_locations, \
|
from .hints import get_always_hint_locations, get_always_hint_items, get_priority_hint_locations, \
|
||||||
get_priority_hint_items, make_hints, generate_joke_hints
|
get_priority_hint_items, make_hints, generate_joke_hints
|
||||||
from ..AutoWorld import World, WebWorld
|
from ..AutoWorld import World, WebWorld
|
||||||
|
@ -268,8 +268,7 @@ def create_region(world: MultiWorld, player: int, name: str,
|
||||||
Create an Archipelago Region for The Witness
|
Create an Archipelago Region for The Witness
|
||||||
"""
|
"""
|
||||||
|
|
||||||
ret = Region(name, RegionType.Generic, name, player)
|
ret = Region(name, player, world)
|
||||||
ret.multiworld = world
|
|
||||||
if region_locations:
|
if region_locations:
|
||||||
for location in region_locations:
|
for location in region_locations:
|
||||||
loc_id = locat.CHECK_LOCATION_TABLE[location]
|
loc_id = locat.CHECK_LOCATION_TABLE[location]
|
||||||
|
|
|
@ -7,8 +7,7 @@ import os
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from BaseClasses import ItemClassification, LocationProgressType, \
|
from BaseClasses import ItemClassification, LocationProgressType, \
|
||||||
MultiWorld, Item, CollectionState, RegionType, \
|
MultiWorld, Item, CollectionState, Entrance, Tutorial
|
||||||
Entrance, Tutorial
|
|
||||||
from Options import AssembleOptions
|
from Options import AssembleOptions
|
||||||
from .logic import cs_to_zz_locs
|
from .logic import cs_to_zz_locs
|
||||||
from .region import ZillionLocation, ZillionRegion
|
from .region import ZillionLocation, ZillionRegion
|
||||||
|
@ -155,7 +154,7 @@ class ZillionWorld(World):
|
||||||
all: Dict[str, ZillionRegion] = {}
|
all: Dict[str, ZillionRegion] = {}
|
||||||
for here_zz_name, zz_r in self.zz_system.randomizer.regions.items():
|
for here_zz_name, zz_r in self.zz_system.randomizer.regions.items():
|
||||||
here_name = "Menu" if here_zz_name == "start" else zz_reg_name_to_reg_name(here_zz_name)
|
here_name = "Menu" if here_zz_name == "start" else zz_reg_name_to_reg_name(here_zz_name)
|
||||||
all[here_name] = ZillionRegion(zz_r, here_name, RegionType.Generic, here_name, p, w)
|
all[here_name] = ZillionRegion(zz_r, here_name, here_name, p, w)
|
||||||
self.multiworld.regions.append(all[here_name])
|
self.multiworld.regions.append(all[here_name])
|
||||||
|
|
||||||
limited_skill = Req(gun=3, jump=3, skill=self.zz_system.randomizer.options.skill, hp=940, red=1, floppy=126)
|
limited_skill = Req(gun=3, jump=3, skill=self.zz_system.randomizer.options.skill, hp=940, red=1, floppy=126)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from BaseClasses import MultiWorld, Region, RegionType, Location, Item, CollectionState
|
from BaseClasses import MultiWorld, Region, Location, Item, CollectionState
|
||||||
from zilliandomizer.logic_components.regions import Region as ZzRegion
|
from zilliandomizer.logic_components.regions import Region as ZzRegion
|
||||||
from zilliandomizer.logic_components.locations import Location as ZzLocation
|
from zilliandomizer.logic_components.locations import Location as ZzLocation
|
||||||
from zilliandomizer.logic_components.items import RESCUE
|
from zilliandomizer.logic_components.items import RESCUE
|
||||||
|
@ -11,14 +11,12 @@ from .item import ZillionItem
|
||||||
class ZillionRegion(Region):
|
class ZillionRegion(Region):
|
||||||
zz_r: ZzRegion
|
zz_r: ZzRegion
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self, zz_r: ZzRegion,
|
||||||
zz_r: ZzRegion,
|
|
||||||
name: str,
|
name: str,
|
||||||
type_: RegionType,
|
|
||||||
hint: str,
|
hint: str,
|
||||||
player: int,
|
player: int,
|
||||||
world: Optional[MultiWorld] = None) -> None:
|
multiworld: Optional[MultiWorld] = None) -> None:
|
||||||
super().__init__(name, type_, hint, player, world)
|
super().__init__(name, player, multiworld, hint)
|
||||||
self.zz_r = zz_r
|
self.zz_r = zz_r
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue