Added new logical boss defeated items for AD
This commit is contained in:
@@ -3630,13 +3630,17 @@ logical_connections = [
|
||||
('Hyrule Castle Throne Room Tapestry', 'Hyrule Castle Behind Tapestry'),
|
||||
('Hyrule Castle Tapestry Backwards', 'Hyrule Castle Throne Room'),
|
||||
('Sewers Secret Room Push Block', 'Sewers Secret Room Blocked Path'),
|
||||
|
||||
('Eastern Hint Tile Push Block', 'Eastern Hint Tile'),
|
||||
('Eastern Map Balcony Hook Path', 'Eastern Map Room'),
|
||||
('Eastern Map Room Drop Down', 'Eastern Map Balcony'),
|
||||
('Eastern Palace Boss', 'Eastern Boss Spoils'),
|
||||
|
||||
('Desert Main Lobby Left Path', 'Desert Left Alcove'),
|
||||
('Desert Main Lobby Right Path', 'Desert Right Alcove'),
|
||||
('Desert Left Alcove Path', 'Desert Main Lobby'),
|
||||
('Desert Right Alcove Path', 'Desert Main Lobby'),
|
||||
('Desert Palace Boss', 'Desert Boss Spoils'),
|
||||
|
||||
('Hera Lobby to Front Barrier - Blue', 'Hera Front'),
|
||||
('Hera Front to Lobby Barrier - Blue', 'Hera Lobby'),
|
||||
@@ -3666,6 +3670,7 @@ logical_connections = [
|
||||
('Hera Big Chest Hook Path', 'Hera Big Chest Landing'),
|
||||
('Hera Big Chest Landing Exit', 'Hera 4F'),
|
||||
('Hera 5F Orange Path', 'Hera 5F Pot Block'),
|
||||
('Tower of Hera Boss', 'Hera Boss Spoils'),
|
||||
|
||||
('PoD Pit Room Block Path N', 'PoD Pit Room Blocked'),
|
||||
('PoD Pit Room Block Path S', 'PoD Pit Room'),
|
||||
@@ -3717,6 +3722,8 @@ logical_connections = [
|
||||
('PoD Dark Pegs Middle Ranged Crystal Exit', 'PoD Dark Pegs Middle'),
|
||||
('PoD Dark Pegs Middle to Left Bypass', 'PoD Dark Pegs Left'),
|
||||
('PoD Dark Pegs Left Ranged Crystal Exit', 'PoD Dark Pegs Left'),
|
||||
('Palace of Darkness Boss', 'PoD Boss Spoils'),
|
||||
|
||||
('Swamp Lobby Moat', 'Swamp Entrance'),
|
||||
('Swamp Entrance Moat', 'Swamp Lobby'),
|
||||
('Swamp Trench 1 Approach Dry', 'Swamp Trench 1 Nexus'),
|
||||
@@ -3759,12 +3766,15 @@ logical_connections = [
|
||||
('Swamp Drain Right Switch', 'Swamp Drain Left'),
|
||||
('Swamp Flooded Spot Ladder', 'Swamp Flooded Room'),
|
||||
('Swamp Flooded Room Ladder', 'Swamp Flooded Spot'),
|
||||
('Swamp Palace Boss', 'Swamp Boss Spoils'),
|
||||
|
||||
('Skull Pot Circle Star Path', 'Skull Map Room'),
|
||||
('Skull Big Chest Hookpath', 'Skull 1 Lobby'),
|
||||
('Skull Back Drop Star Path', 'Skull Small Hall'),
|
||||
('Skull 2 West Lobby Pits', 'Skull 2 West Lobby Ledge'),
|
||||
('Skull 2 West Lobby Ledge Pits', 'Skull 2 West Lobby'),
|
||||
('Skull Woods Boss', 'Skull Boss Spoils'),
|
||||
|
||||
('Thieves Rail Ledge Drop Down', 'Thieves BK Corner'),
|
||||
('Thieves Hellway Orange Barrier', 'Thieves Hellway S Crystal'),
|
||||
('Thieves Hellway Crystal Orange Barrier', 'Thieves Hellway'),
|
||||
@@ -3780,6 +3790,7 @@ logical_connections = [
|
||||
('Thieves Conveyor Block Path', 'Thieves Conveyor Bridge'),
|
||||
("Thieves Blind's Cell Door", "Thieves Blind's Cell Interior"),
|
||||
("Thieves Blind's Cell Exit", "Thieves Blind's Cell"),
|
||||
('Thieves Town Boss', 'Thieves Boss Spoils'),
|
||||
|
||||
('Ice Cross Bottom Push Block Left', 'Ice Floor Switch'),
|
||||
('Ice Cross Right Push Block Top', 'Ice Bomb Drop'),
|
||||
@@ -3800,6 +3811,7 @@ logical_connections = [
|
||||
('Ice Big Chest Landing Push Blocks', 'Ice Big Chest View'),
|
||||
('Ice Refill to Crystal', 'Ice Refill - Crystal'),
|
||||
('Ice Refill Crystal Exit', 'Ice Refill'),
|
||||
('Ice Palace Boss', 'Ice Boss Spoils'),
|
||||
|
||||
('Mire Lobby Gap', 'Mire Post-Gap'),
|
||||
('Mire Post-Gap Gap', 'Mire Lobby'),
|
||||
@@ -3835,6 +3847,7 @@ logical_connections = [
|
||||
('Mire South Fish Blue Barrier', 'Mire Fishbone'),
|
||||
('Mire Fishbone Blue Barrier', 'Mire South Fish'),
|
||||
('Mire Fishbone Blue Barrier Bypass', 'Mire South Fish'),
|
||||
('Misery Mire Boss', 'Mire Boss Spoils'),
|
||||
|
||||
('TR Main Lobby Gap', 'TR Lobby Ledge'),
|
||||
('TR Lobby Ledge Gap', 'TR Main Lobby'),
|
||||
@@ -3882,6 +3895,7 @@ logical_connections = [
|
||||
('TR Crystal Maze End Ranged Crystal Exit', 'TR Crystal Maze End'),
|
||||
('TR Final Abyss Balcony Path', 'TR Final Abyss Ledge'),
|
||||
('TR Final Abyss Ledge Path', 'TR Final Abyss Balcony'),
|
||||
('Turtle Rock Boss', 'TR Boss Spoils'),
|
||||
|
||||
('GT Blocked Stairs Block Path', 'GT Big Chest'),
|
||||
('GT Speed Torch South Path', 'GT Speed Torch'),
|
||||
|
||||
10
Doors.py
10
Doors.py
@@ -188,6 +188,7 @@ def create_doors(world, player):
|
||||
create_door(player, 'Eastern Duo Eyegores SE', Intr).dir(So, 0xd8, Right, High).pos(1),
|
||||
create_door(player, 'Eastern Duo Eyegores NE', Nrml).dir(No, 0xd8, Right, High).trap(0x4).pos(0),
|
||||
create_door(player, 'Eastern Boss SE', Nrml).dir(So, 0xc8, Right, High).no_exit().trap(0x4).pos(0),
|
||||
create_door(player, 'Eastern Palace Boss', Lgcl),
|
||||
|
||||
# Desert Palace
|
||||
create_door(player, 'Desert Main Lobby S', Nrml).dir(So, 0x84, Mid, High).pos(0).portal(Z, 0x22),
|
||||
@@ -251,6 +252,7 @@ def create_doors(world, player):
|
||||
create_door(player, 'Desert Wall Slide SE', Intr).dir(So, 0x43, Right, High).small_key().pos(1),
|
||||
create_door(player, 'Desert Wall Slide NW', Nrml).dir(No, 0x43, Left, High).big_key().pos(0).no_entrance(),
|
||||
create_door(player, 'Desert Boss SW', Nrml).dir(So, 0x33, Left, High).no_exit().trap(0x4).pos(0).portal(Z, 0x00),
|
||||
create_door(player, 'Desert Palace Boss', Lgcl),
|
||||
|
||||
# Hera
|
||||
create_door(player, 'Hera Lobby S', Nrml).dir(So, 0x77, Mid, Low).pos(0).portal(Z, 0x22, 1),
|
||||
@@ -316,6 +318,7 @@ def create_doors(world, player):
|
||||
create_door(player, 'Hera Boss Down Stairs', Sprl).dir(Dn, 0x07, 0, HTH).ss(S, 0x61, 0xb0).kill(),
|
||||
create_door(player, 'Hera Boss Outer Hole', Hole),
|
||||
create_door(player, 'Hera Boss Inner Hole', Hole),
|
||||
create_door(player, 'Tower of Hera Boss', Lgcl),
|
||||
|
||||
# Castle Tower
|
||||
create_door(player, 'Tower Lobby S', Nrml).dir(So, 0xe0, Left, High).pos(3).portal(Z, 0x00),
|
||||
@@ -475,6 +478,7 @@ def create_doors(world, player):
|
||||
create_door(player, 'PoD Callback WS', Intr).dir(We, 0x0b, Mid, High).pos(1),
|
||||
create_door(player, 'PoD Callback Warp', Warp),
|
||||
create_door(player, 'PoD Boss SE', Nrml).dir(So, 0x5a, Right, High).no_exit().trap(0x4).pos(0),
|
||||
create_door(player, 'Palace of Darkness Boss', Lgcl),
|
||||
|
||||
create_door(player, 'Swamp Lobby S', Nrml).dir(So, 0x28, Mid, High).pos(1).portal(Z, 0x22),
|
||||
create_door(player, 'Swamp Lobby Moat', Lgcl),
|
||||
@@ -589,6 +593,7 @@ def create_doors(world, player):
|
||||
create_door(player, 'Swamp T SW', Intr).dir(So, 0x16, Left, High).small_key().pos(1),
|
||||
create_door(player, 'Swamp T NW', Nrml).dir(No, 0x16, Left, High).pos(3),
|
||||
create_door(player, 'Swamp Boss SW', Nrml).dir(So, 0x06, Left, High).no_exit().trap(0x4).pos(0),
|
||||
create_door(player, 'Swamp Palace Boss', Lgcl),
|
||||
|
||||
create_door(player, 'Skull 1 Lobby S', Nrml).dir(So, 0x58, Left, High).pos(4).portal(Z, 0x00),
|
||||
create_door(player, 'Skull 1 Lobby WS', Nrml).dir(We, 0x58, Bot, High).small_key().pos(1),
|
||||
@@ -640,6 +645,7 @@ def create_doors(world, player):
|
||||
create_door(player, 'Skull Spike Corner ES', Intr).dir(Ea, 0x39, Bot, High).small_key().pos(1),
|
||||
create_door(player, 'Skull Final Drop WS', Intr).dir(We, 0x39, Bot, High).small_key().pos(1),
|
||||
create_door(player, 'Skull Final Drop Hole', Hole),
|
||||
create_door(player, 'Skull Woods Boss', Lgcl),
|
||||
|
||||
create_door(player, 'Thieves Lobby S', Nrml).dir(So, 0xdb, Mid, High).pos(1).portal(Z, 0x22),
|
||||
create_door(player, 'Thieves Lobby N Edge', Open).dir(No, 0xdb, None, Low).edge(7, A, 0x10),
|
||||
@@ -721,6 +727,7 @@ def create_doors(world, player):
|
||||
create_door(player, 'Thieves Big Chest Room ES', Intr).dir(Ea, 0x44, Bot, High).small_key().pos(1),
|
||||
create_door(player, 'Thieves Conveyor Block WN', Intr).dir(We, 0x44, Top, High).pos(0),
|
||||
create_door(player, 'Thieves Trap EN', Intr).dir(Ea, 0x44, Left, Top).pos(0),
|
||||
create_door(player, 'Thieves Town Boss', Lgcl),
|
||||
|
||||
create_door(player, 'Ice Lobby SE', Nrml).dir(So, 0x0e, Right, High).pos(2).portal(X, 0x00),
|
||||
create_door(player, 'Ice Lobby WS', Intr).dir(We, 0x0e, Bot, High).pos(1),
|
||||
@@ -826,6 +833,7 @@ def create_doors(world, player):
|
||||
create_door(player, 'Ice Fairy Warp', Warp),
|
||||
create_door(player, 'Ice Antechamber NE', Nrml).dir(No, 0xce, Right, High).trap(0x4).pos(0),
|
||||
create_door(player, 'Ice Antechamber Hole', Hole),
|
||||
create_door(player, 'Ice Palace Boss', Lgcl),
|
||||
|
||||
create_door(player, 'Mire Lobby S', Nrml).dir(So, 0x98, Left, High).pos(0).portal(Z, 0x20),
|
||||
create_door(player, 'Mire Lobby Gap', Lgcl),
|
||||
@@ -962,6 +970,7 @@ def create_doors(world, player):
|
||||
create_door(player, 'Mire Antechamber Orange Barrier', Lgcl),
|
||||
create_door(player, 'Mire Antechamber NW', Nrml).dir(No, 0xa0, Left, High).big_key().pos(0),
|
||||
create_door(player, 'Mire Boss SW', Nrml).dir(So, 0x90, Left, High).no_exit().trap(0x4).pos(0),
|
||||
create_door(player, 'Misery Mire Boss', Lgcl),
|
||||
|
||||
create_door(player, 'TR Main Lobby SE', Nrml).dir(So, 0xd6, Right, High).pos(1).portal(X, 0x02),
|
||||
create_door(player, 'TR Lobby Ledge NE', Nrml).dir(No, 0xd6, Right, High).pos(2),
|
||||
@@ -1075,6 +1084,7 @@ def create_doors(world, player):
|
||||
create_door(player, 'TR Final Abyss Ledge Path', Lgcl),
|
||||
create_door(player, 'TR Final Abyss NW', Nrml).dir(No, 0xb4, Left, High).big_key().pos(0),
|
||||
create_door(player, 'TR Boss SW', Nrml).dir(So, 0xa4, Left, High).no_exit().trap(0x4).pos(0).portal(Z, 0x00),
|
||||
create_door(player, 'Turtle Rock Boss', Lgcl),
|
||||
|
||||
create_door(player, 'GT Lobby S', Nrml).dir(So, 0x0c, Mid, High).pos(0).portal(Z, 0x22),
|
||||
create_door(player, 'GT Lobby Left Down Stairs', Sprl).dir(Dn, 0x0c, 1, HTL).ss(A, 0x0f, 0x80),
|
||||
|
||||
20
Dungeons.py
20
Dungeons.py
@@ -65,7 +65,7 @@ eastern_regions = [
|
||||
'Eastern Compass Room', 'Eastern Hint Tile', 'Eastern Hint Tile Blocked Path', 'Eastern Courtyard',
|
||||
'Eastern Fairies', 'Eastern Map Valley', 'Eastern Dark Square', 'Eastern Dark Pots', 'Eastern Big Key',
|
||||
'Eastern Darkness', 'Eastern Rupees', 'Eastern Attic Start', 'Eastern False Switches', 'Eastern Cannonball Hell',
|
||||
'Eastern Single Eyegore', 'Eastern Duo Eyegores', 'Eastern Boss', 'Eastern Portal'
|
||||
'Eastern Single Eyegore', 'Eastern Duo Eyegores', 'Eastern Boss', 'Eastern Boss Spoils', 'Eastern Portal'
|
||||
]
|
||||
|
||||
desert_regions = [
|
||||
@@ -74,7 +74,7 @@ desert_regions = [
|
||||
'Desert North Hall', 'Desert Map Room', 'Desert Sandworm Corner', 'Desert Bonk Torch', 'Desert Circle of Pots',
|
||||
'Desert Big Chest Room', 'Desert West Wing', 'Desert West Lobby', 'Desert Fairy Fountain', 'Desert Back Lobby',
|
||||
'Desert Tiles 1', 'Desert Bridge', 'Desert Four Statues', 'Desert Beamos Hall', 'Desert Tiles 2',
|
||||
'Desert Wall Slide', 'Desert Boss', 'Desert West Portal', 'Desert South Portal', 'Desert East Portal',
|
||||
'Desert Wall Slide', 'Desert Boss', 'Desert Boss Spoils', 'Desert West Portal', 'Desert South Portal', 'Desert East Portal',
|
||||
'Desert Back Portal'
|
||||
]
|
||||
|
||||
@@ -84,7 +84,7 @@ hera_regions = [
|
||||
'Hera Back - Ranged Crystal', 'Hera Basement Cage', 'Hera Basement Cage - Crystal', 'Hera Tile Room',
|
||||
'Hera Tridorm', 'Hera Tridorm - Crystal', 'Hera Torches', 'Hera Beetles', 'Hera Startile Corner',
|
||||
'Hera Startile Wide', 'Hera Startile Wide - Crystal', 'Hera 4F', 'Hera Big Chest Landing', 'Hera 5F',
|
||||
'Hera 5F Pot Block', 'Hera Fairies', 'Hera Boss', 'Hera Portal'
|
||||
'Hera 5F Pot Block', 'Hera Fairies', 'Hera Boss', 'Hera Boss Spoils', 'Hera Portal'
|
||||
]
|
||||
|
||||
tower_regions = [
|
||||
@@ -105,7 +105,7 @@ pod_regions = [
|
||||
'PoD Bow Statue Left', 'PoD Bow Statue Left - Crystal', 'PoD Bow Statue Right', 'PoD Bow Statue Right - Ranged Crystal',
|
||||
'PoD Dark Pegs Landing', 'PoD Dark Pegs Right', 'PoD Dark Pegs Middle', 'PoD Dark Pegs Left', 'PoD Dark Pegs Landing - Ranged Crystal',
|
||||
'PoD Dark Pegs Middle - Ranged Crystal', 'PoD Dark Pegs Left - Ranged Crystal', 'PoD Lonely Turtle', 'PoD Turtle Party',
|
||||
'PoD Dark Alley', 'PoD Callback', 'PoD Boss', 'Palace of Darkness Portal'
|
||||
'PoD Dark Alley', 'PoD Callback', 'PoD Boss', 'PoD Boss Spoils', 'Palace of Darkness Portal'
|
||||
]
|
||||
|
||||
swamp_regions = [
|
||||
@@ -119,7 +119,7 @@ swamp_regions = [
|
||||
'Swamp West Ledge', 'Swamp Barrier Ledge', 'Swamp Barrier', 'Swamp Attic', 'Swamp Push Statue', 'Swamp Shooters',
|
||||
'Swamp Left Elbow', 'Swamp Right Elbow', 'Swamp Drain Left', 'Swamp Drain Right', 'Swamp Flooded Room',
|
||||
'Swamp Flooded Spot', 'Swamp Basement Shallows', 'Swamp Waterfall Room', 'Swamp Refill', 'Swamp Behind Waterfall',
|
||||
'Swamp C', 'Swamp Waterway', 'Swamp I', 'Swamp T', 'Swamp Boss', 'Swamp Portal'
|
||||
'Swamp C', 'Swamp Waterway', 'Swamp I', 'Swamp T', 'Swamp Boss', 'Swamp Boss Spoils', 'Swamp Portal'
|
||||
]
|
||||
|
||||
skull_regions = [
|
||||
@@ -127,7 +127,7 @@ skull_regions = [
|
||||
'Skull Pot Prison', 'Skull Compass Room', 'Skull Left Drop', 'Skull 2 East Lobby', 'Skull Big Key',
|
||||
'Skull Lone Pot', 'Skull Small Hall', 'Skull Back Drop', 'Skull 2 West Lobby', 'Skull 2 West Lobby Ledge',
|
||||
'Skull X Room', 'Skull 3 Lobby', 'Skull East Bridge', 'Skull West Bridge Nook', 'Skull Star Pits',
|
||||
'Skull Torch Room', 'Skull Vines', 'Skull Spike Corner', 'Skull Final Drop', 'Skull Boss',
|
||||
'Skull Torch Room', 'Skull Vines', 'Skull Spike Corner', 'Skull Final Drop', 'Skull Boss', 'Skull Boss Spoils',
|
||||
'Skull 1 Portal', 'Skull 2 East Portal', 'Skull 2 West Portal', 'Skull 3 Portal'
|
||||
]
|
||||
|
||||
@@ -139,7 +139,7 @@ thieves_regions = [
|
||||
'Thieves Attic', 'Thieves Attic Hint', 'Thieves Attic Switch', 'Thieves Cricket Hall Left',
|
||||
'Thieves Cricket Hall Right', 'Thieves Attic Window', 'Thieves Basement Block', 'Thieves Blocked Entry',
|
||||
'Thieves Lonely Zazak', "Thieves Blind's Cell", "Thieves Blind's Cell Interior", 'Thieves Conveyor Bridge',
|
||||
'Thieves Conveyor Block', 'Thieves Big Chest Room', 'Thieves Trap', 'Thieves Town Portal'
|
||||
'Thieves Conveyor Block', 'Thieves Big Chest Room', 'Thieves Trap', 'Thieves Boss Spoils', 'Thieves Town Portal'
|
||||
]
|
||||
|
||||
ice_regions = [
|
||||
@@ -152,7 +152,7 @@ ice_regions = [
|
||||
'Ice Hookshot Balcony', 'Ice Spikeball', 'Ice Lonely Freezor', 'Iced T', 'Ice Catwalk', 'Ice Many Pots',
|
||||
'Ice Crystal Right', 'Ice Crystal Left', 'Ice Crystal Block', 'Ice Big Chest View', 'Ice Big Chest Landing',
|
||||
'Ice Backwards Room', 'Ice Anti-Fairy', 'Ice Switch Room', 'Ice Refill', 'Ice Refill - Crystal',
|
||||
'Ice Fairy', 'Ice Antechamber', 'Ice Boss', 'Ice Portal'
|
||||
'Ice Fairy', 'Ice Antechamber', 'Ice Boss', 'Ice Boss Spoils', 'Ice Portal'
|
||||
]
|
||||
|
||||
mire_regions = [
|
||||
@@ -168,7 +168,7 @@ mire_regions = [
|
||||
'Mire Key Rupees', 'Mire Block X', 'Mire Tall Dark and Roomy', 'Mire Tall Dark and Roomy - Ranged Crystal',
|
||||
'Mire Crystal Right', 'Mire Crystal Mid', 'Mire Crystal Left',
|
||||
'Mire Crystal Top', 'Mire Shooter Rupees', 'Mire Falling Foes', 'Mire Firesnake Skip', 'Mire Antechamber',
|
||||
'Mire Boss', 'Mire Portal'
|
||||
'Mire Boss', 'Mire Boss Spoils', 'Mire Portal'
|
||||
]
|
||||
|
||||
tr_regions = [
|
||||
@@ -182,7 +182,7 @@ tr_regions = [
|
||||
'TR Crystaroller Top - Crystal', 'TR Crystaroller Chest', 'TR Crystaroller Middle - Ranged Crystal',
|
||||
'TR Crystaroller Bottom - Ranged Crystal', 'TR Dark Ride', 'TR Dark Ride Ledges', 'TR Dash Bridge', 'TR Eye Bridge',
|
||||
'TR Crystal Maze Start', 'TR Crystal Maze Start - Crystal', 'TR Crystal Maze Interior', 'TR Crystal Maze End',
|
||||
'TR Crystal Maze End - Ranged Crystal', 'TR Final Abyss Balcony', 'TR Final Abyss Ledge', 'TR Boss',
|
||||
'TR Crystal Maze End - Ranged Crystal', 'TR Final Abyss Balcony', 'TR Final Abyss Ledge', 'TR Boss', 'TR Boss Spoils',
|
||||
'Turtle Rock Main Portal', 'Turtle Rock Lazy Eyes Portal', 'Turtle Rock Chest Portal',
|
||||
'Turtle Rock Eye Bridge Portal'
|
||||
]
|
||||
|
||||
117
ItemList.py
117
ItemList.py
@@ -194,10 +194,17 @@ def generate_itempool(world, player):
|
||||
if world.timer in ['ohko', 'timed-ohko']:
|
||||
world.can_take_damage = False
|
||||
|
||||
def set_event_item(location_name, item_name=None):
|
||||
location = world.get_location(location_name, player)
|
||||
if item_name:
|
||||
world.push_item(location, ItemFactory(item_name, player), False)
|
||||
location.event = True
|
||||
location.locked = True
|
||||
|
||||
if world.goal[player] in ['pedestal', 'triforcehunt']:
|
||||
world.push_item(world.get_location('Ganon', player), ItemFactory('Nothing', player), False)
|
||||
set_event_item('Ganon', 'Nothing')
|
||||
else:
|
||||
world.push_item(world.get_location('Ganon', player), ItemFactory('Triforce', player), False)
|
||||
set_event_item('Ganon', 'Triforce')
|
||||
|
||||
if world.goal[player] in ['triforcehunt', 'trinity']:
|
||||
region = world.get_region('Hyrule Castle Courtyard', player)
|
||||
@@ -233,75 +240,45 @@ def generate_itempool(world, player):
|
||||
old_man.forced_item = old_man.item
|
||||
old_man.skip = True
|
||||
|
||||
world.get_location('Ganon', player).event = True
|
||||
world.get_location('Ganon', player).locked = True
|
||||
world.push_item(world.get_location('Agahnim 1', player), ItemFactory('Beat Agahnim 1', player), False)
|
||||
world.get_location('Agahnim 1', player).event = True
|
||||
world.get_location('Agahnim 1', player).locked = True
|
||||
world.push_item(world.get_location('Agahnim 2', player), ItemFactory('Beat Agahnim 2', player), False)
|
||||
world.get_location('Agahnim 2', player).event = True
|
||||
world.get_location('Agahnim 2', player).locked = True
|
||||
world.push_item(world.get_location('Lost Old Man', player), ItemFactory('Escort Old Man', player), False)
|
||||
world.get_location('Lost Old Man', player).event = True
|
||||
world.get_location('Lost Old Man', player).locked = True
|
||||
world.push_item(world.get_location('Old Man Drop Off', player), ItemFactory('Return Old Man', player), False)
|
||||
world.get_location('Old Man Drop Off', player).event = True
|
||||
world.get_location('Old Man Drop Off', player).locked = True
|
||||
world.push_item(world.get_location('Dark Blacksmith Ruins', player), ItemFactory('Pick Up Purple Chest', player), False)
|
||||
world.get_location('Dark Blacksmith Ruins', player).event = True
|
||||
world.get_location('Dark Blacksmith Ruins', player).locked = True
|
||||
world.push_item(world.get_location('Middle Aged Man', player), ItemFactory('Deliver Purple Chest', player), False)
|
||||
world.get_location('Middle Aged Man', player).event = True
|
||||
world.get_location('Middle Aged Man', player).locked = True
|
||||
world.push_item(world.get_location('Frog', player), ItemFactory('Get Frog', player), False)
|
||||
world.get_location('Frog', player).event = True
|
||||
world.get_location('Frog', player).locked = True
|
||||
world.push_item(world.get_location('Missing Smith', player), ItemFactory('Return Smith', player), False)
|
||||
world.get_location('Missing Smith', player).event = True
|
||||
world.get_location('Missing Smith', player).locked = True
|
||||
world.push_item(world.get_location('Floodgate', player), ItemFactory('Open Floodgate', player), False)
|
||||
world.get_location('Floodgate', player).event = True
|
||||
world.get_location('Floodgate', player).locked = True
|
||||
world.push_item(world.get_location('Big Bomb', player), ItemFactory('Pick Up Big Bomb', player), False)
|
||||
world.get_location('Big Bomb', player).event = True
|
||||
world.get_location('Big Bomb', player).locked = True
|
||||
world.push_item(world.get_location('Pyramid Crack', player), ItemFactory('Detonate Big Bomb', player), False)
|
||||
world.get_location('Pyramid Crack', player).event = True
|
||||
world.get_location('Pyramid Crack', player).locked = True
|
||||
world.push_item(world.get_location('Trench 1 Switch', player), ItemFactory('Trench 1 Filled', player), False)
|
||||
world.get_location('Trench 1 Switch', player).event = True
|
||||
world.get_location('Trench 1 Switch', player).locked = True
|
||||
world.push_item(world.get_location('Trench 2 Switch', player), ItemFactory('Trench 2 Filled', player), False)
|
||||
world.get_location('Trench 2 Switch', player).event = True
|
||||
world.get_location('Trench 2 Switch', player).locked = True
|
||||
world.push_item(world.get_location('Swamp Drain', player), ItemFactory('Drained Swamp', player), False)
|
||||
world.get_location('Swamp Drain', player).event = True
|
||||
world.get_location('Swamp Drain', player).locked = True
|
||||
world.push_item(world.get_location('Turtle Medallion Pad', player), ItemFactory('Turtle Opened', player), False)
|
||||
world.get_location('Turtle Medallion Pad', player).event = True
|
||||
world.get_location('Turtle Medallion Pad', player).locked = True
|
||||
world.push_item(world.get_location('Attic Cracked Floor', player), ItemFactory('Shining Light', player), False)
|
||||
world.get_location('Attic Cracked Floor', player).event = True
|
||||
world.get_location('Attic Cracked Floor', player).locked = True
|
||||
world.push_item(world.get_location('Suspicious Maiden', player), ItemFactory('Maiden Rescued', player), False)
|
||||
world.get_location('Suspicious Maiden', player).event = True
|
||||
world.get_location('Suspicious Maiden', player).locked = True
|
||||
world.push_item(world.get_location('Revealing Light', player), ItemFactory('Maiden Unmasked', player), False)
|
||||
world.get_location('Revealing Light', player).event = True
|
||||
world.get_location('Revealing Light', player).locked = True
|
||||
world.push_item(world.get_location('Ice Block Drop', player), ItemFactory('Convenient Block', player), False)
|
||||
world.get_location('Ice Block Drop', player).event = True
|
||||
world.get_location('Ice Block Drop', player).locked = True
|
||||
world.push_item(world.get_location('Skull Star Tile', player), ItemFactory('Hidden Pits', player), False)
|
||||
world.get_location('Skull Star Tile', player).event = True
|
||||
world.get_location('Skull Star Tile', player).locked = True
|
||||
event_items = {
|
||||
'Agahnim 1': 'Beat Agahnim 1',
|
||||
'Agahnim 2': 'Beat Agahnim 2',
|
||||
'Eastern Palace - Boss Kill': 'Beat Boss',
|
||||
'Desert Palace - Boss Kill': 'Beat Boss',
|
||||
'Tower of Hera - Boss Kill': 'Beat Boss',
|
||||
'Palace of Darkness - Boss Kill': 'Beat Boss',
|
||||
'Swamp Palace - Boss Kill': 'Beat Boss',
|
||||
'Skull Woods - Boss Kill': 'Beat Boss',
|
||||
'Thieves\' Town - Boss Kill': 'Beat Boss',
|
||||
'Ice Palace - Boss Kill': 'Beat Boss',
|
||||
'Misery Mire - Boss Kill': 'Beat Boss',
|
||||
'Turtle Rock - Boss Kill': 'Beat Boss',
|
||||
'Lost Old Man': 'Escort Old Man',
|
||||
'Old Man Drop Off': 'Return Old Man',
|
||||
'Floodgate': 'Open Floodgate',
|
||||
'Big Bomb': 'Pick Up Big Bomb',
|
||||
'Pyramid Crack': 'Detonate Big Bomb',
|
||||
'Frog': 'Get Frog',
|
||||
'Missing Smith': 'Return Smith',
|
||||
'Dark Blacksmith Ruins': 'Pick Up Purple Chest',
|
||||
'Middle Aged Man': 'Deliver Purple Chest',
|
||||
'Trench 1 Switch': 'Trench 1 Filled',
|
||||
'Trench 2 Switch': 'Trench 2 Filled',
|
||||
'Swamp Drain': 'Drained Swamp',
|
||||
'Turtle Medallion Pad': 'Turtle Opened',
|
||||
'Attic Cracked Floor': 'Shining Light',
|
||||
'Suspicious Maiden': 'Maiden Rescued',
|
||||
'Revealing Light': 'Maiden Unmasked',
|
||||
'Ice Block Drop': 'Convenient Block',
|
||||
'Skull Star Tile': 'Hidden Pits'
|
||||
}
|
||||
|
||||
for loc, item in event_items.items():
|
||||
set_event_item(loc, item)
|
||||
|
||||
if world.mode[player] == 'standard':
|
||||
world.push_item(world.get_location('Zelda Pickup', player), ItemFactory('Zelda Herself', player), False)
|
||||
world.get_location('Zelda Pickup', player).event = True
|
||||
world.get_location('Zelda Pickup', player).locked = True
|
||||
world.push_item(world.get_location('Zelda Drop Off', player), ItemFactory('Zelda Delivered', player), False)
|
||||
world.get_location('Zelda Drop Off', player).event = True
|
||||
world.get_location('Zelda Drop Off', player).locked = True
|
||||
set_event_item('Zelda Pickup', 'Zelda Herself')
|
||||
set_event_item('Zelda Drop Off', 'Zelda Delivered')
|
||||
|
||||
# set up item pool
|
||||
skip_pool_adjustments = False
|
||||
|
||||
1
Items.py
1
Items.py
@@ -177,6 +177,7 @@ item_table = {'Bow': (True, False, None, 0x0B, 200, 'You have\nchosen the\narche
|
||||
'Small Heart': (False, False, None, 0x42, 10, 'Just a little\npiece of love!', 'and the heart', 'the life-giving kid', 'little love for sale', 'fungus for life', 'life boy feels some love again', 'a heart'),
|
||||
'Apples': (False, False, None, 0xD1, 30, 'Just a few pieces of fruit!', 'and the juicy fruit', 'the fruity kid', 'the fruit stand', 'expired fruit', 'bottle boy has fruit again', 'an apple hoard'),
|
||||
'Fairy': (False, False, None, 0xD2, 50, 'Just a pixie!', 'and the pixie', 'the pixie kid', 'pixie for sale', 'pixie fungus', 'bottle boy has pixie again', 'a pixie'),
|
||||
'Beat Boss': (True, False, 'Event', 999, None, None, None, None, None, None, None, None),
|
||||
'Beat Agahnim 1': (True, False, 'Event', 999, None, None, None, None, None, None, None, None),
|
||||
'Beat Agahnim 2': (True, False, 'Event', 999, None, None, None, None, None, None, None, None),
|
||||
'Get Frog': (True, False, 'Event', 999, None, None, None, None, None, None, None, None),
|
||||
|
||||
45
Regions.py
45
Regions.py
@@ -489,7 +489,8 @@ def create_dungeon_regions(world, player):
|
||||
create_dungeon_region(player, 'Eastern Cannonball Hell', 'Eastern Palace', None, ['Eastern Cannonball Hell ES', 'Eastern Cannonball Hell WS']),
|
||||
create_dungeon_region(player, 'Eastern Single Eyegore', 'Eastern Palace', None, ['Eastern Single Eyegore ES', 'Eastern Single Eyegore NE']),
|
||||
create_dungeon_region(player, 'Eastern Duo Eyegores', 'Eastern Palace', None, ['Eastern Duo Eyegores SE', 'Eastern Duo Eyegores NE']),
|
||||
create_dungeon_region(player, 'Eastern Boss', 'Eastern Palace', ['Eastern Palace - Boss', 'Eastern Palace - Prize'], ['Eastern Boss SE']),
|
||||
create_dungeon_region(player, 'Eastern Boss', 'Eastern Palace', None, ['Eastern Boss SE', 'Eastern Palace Boss']),
|
||||
create_dungeon_region(player, 'Eastern Boss Spoils', 'Eastern Palace', ['Eastern Palace - Boss', 'Eastern Palace - Prize', 'Eastern Palace - Boss Kill']),
|
||||
|
||||
# Desert Palace
|
||||
create_dungeon_region(player, 'Desert Main Lobby', 'Desert Palace', None, ['Desert Main Lobby S', 'Desert Main Lobby N Edge', 'Desert Main Lobby Left Path', 'Desert Main Lobby Right Path']),
|
||||
@@ -518,7 +519,8 @@ def create_dungeon_regions(world, player):
|
||||
create_dungeon_region(player, 'Desert Beamos Hall', 'Desert Palace', ['Desert Palace - Beamos Hall Pot Key'], ['Desert Beamos Hall WS', 'Desert Beamos Hall NE']),
|
||||
create_dungeon_region(player, 'Desert Tiles 2', 'Desert Palace', ['Desert Palace - Desert Tiles 2 Pot Key'], ['Desert Tiles 2 SE', 'Desert Tiles 2 NE']),
|
||||
create_dungeon_region(player, 'Desert Wall Slide', 'Desert Palace', None, ['Desert Wall Slide SE', 'Desert Wall Slide NW']),
|
||||
create_dungeon_region(player, 'Desert Boss', 'Desert Palace', ['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Boss SW']),
|
||||
create_dungeon_region(player, 'Desert Boss', 'Desert Palace', None, ['Desert Boss SW', 'Desert Palace Boss']),
|
||||
create_dungeon_region(player, 'Desert Boss Spoils', 'Desert Palace', ['Desert Palace - Boss', 'Desert Palace - Prize', 'Desert Palace - Boss Kill']),
|
||||
|
||||
# Hera
|
||||
create_dungeon_region(player, 'Hera Lobby', 'Tower of Hera', None, ['Hera Lobby S', 'Hera Lobby to Crystal', 'Hera Lobby to Front Barrier - Blue']),
|
||||
@@ -546,7 +548,8 @@ def create_dungeon_regions(world, player):
|
||||
create_dungeon_region(player, 'Hera 5F', 'Tower of Hera', None, ['Hera 5F Down Stairs', 'Hera 5F Up Stairs', 'Hera 5F Star Hole', 'Hera 5F Pothole Chain', 'Hera 5F Normal Holes', 'Hera 5F Orange Path']),
|
||||
create_dungeon_region(player, 'Hera 5F Pot Block', 'Tower of Hera', None),
|
||||
create_dungeon_region(player, 'Hera Fairies', 'Tower of Hera', None, ['Hera Fairies\' Warp']),
|
||||
create_dungeon_region(player, 'Hera Boss', 'Tower of Hera', ['Tower of Hera - Boss', 'Tower of Hera - Prize'], ['Hera Boss Down Stairs', 'Hera Boss Outer Hole', 'Hera Boss Inner Hole']),
|
||||
create_dungeon_region(player, 'Hera Boss', 'Tower of Hera', None, ['Hera Boss Down Stairs', 'Hera Boss Outer Hole', 'Hera Boss Inner Hole', 'Tower of Hera Boss']),
|
||||
create_dungeon_region(player, 'Hera Boss Spoils', 'Tower of Hera', ['Tower of Hera - Boss', 'Tower of Hera - Prize', 'Tower of Hera - Boss Kill']),
|
||||
|
||||
# AgaTower
|
||||
create_dungeon_region(player, 'Tower Lobby', 'Castle Tower', None, ['Tower Lobby NW', 'Tower Lobby S']),
|
||||
@@ -621,7 +624,8 @@ def create_dungeon_regions(world, player):
|
||||
create_dungeon_region(player, 'PoD Turtle Party', 'Palace of Darkness', None, ['PoD Turtle Party ES', 'PoD Turtle Party NW']),
|
||||
create_dungeon_region(player, 'PoD Dark Alley', 'Palace of Darkness', None, ['PoD Dark Alley NE']),
|
||||
create_dungeon_region(player, 'PoD Callback', 'Palace of Darkness', None, ['PoD Callback WS', 'PoD Callback Warp']),
|
||||
create_dungeon_region(player, 'PoD Boss', 'Palace of Darkness', ['Palace of Darkness - Boss', 'Palace of Darkness - Prize'], ['PoD Boss SE']),
|
||||
create_dungeon_region(player, 'PoD Boss', 'Palace of Darkness', None, ['PoD Boss SE', 'Palace of Darkness Boss']),
|
||||
create_dungeon_region(player, 'PoD Boss Spoils', 'Palace of Darkness', ['Palace of Darkness - Boss', 'Palace of Darkness - Prize', 'Palace of Darkness - Boss Kill']),
|
||||
|
||||
# swamp
|
||||
create_dungeon_region(player, 'Swamp Lobby', 'Swamp Palace', None, ['Swamp Lobby S', 'Swamp Lobby Moat']),
|
||||
@@ -674,7 +678,8 @@ def create_dungeon_regions(world, player):
|
||||
create_dungeon_region(player, 'Swamp Waterway', 'Swamp Palace', ['Swamp Palace - Waterway Pot Key'], ['Swamp Waterway NE', 'Swamp Waterway N', 'Swamp Waterway NW']),
|
||||
create_dungeon_region(player, 'Swamp I', 'Swamp Palace', None, ['Swamp I S']),
|
||||
create_dungeon_region(player, 'Swamp T', 'Swamp Palace', None, ['Swamp T SW', 'Swamp T NW']),
|
||||
create_dungeon_region(player, 'Swamp Boss', 'Swamp Palace', ['Swamp Palace - Boss', 'Swamp Palace - Prize'], ['Swamp Boss SW']),
|
||||
create_dungeon_region(player, 'Swamp Boss', 'Swamp Palace', None, ['Swamp Boss SW', 'Swamp Palace Boss']),
|
||||
create_dungeon_region(player, 'Swamp Boss Spoils', 'Swamp Palace', ['Swamp Palace - Boss', 'Swamp Palace - Prize', 'Swamp Palace - Boss Kill']),
|
||||
|
||||
# sw
|
||||
create_dungeon_region(player, 'Skull 1 Lobby', 'Skull Woods', None, ['Skull 1 Lobby S', 'Skull 1 Lobby WS', 'Skull 1 Lobby ES']),
|
||||
@@ -702,7 +707,8 @@ def create_dungeon_regions(world, player):
|
||||
create_dungeon_region(player, 'Skull Vines', 'Skull Woods', None, ['Skull Vines EN', 'Skull Vines NW']),
|
||||
create_dungeon_region(player, 'Skull Spike Corner', 'Skull Woods', ['Skull Woods - Spike Corner Key Drop'], ['Skull Spike Corner SW', 'Skull Spike Corner ES']),
|
||||
create_dungeon_region(player, 'Skull Final Drop', 'Skull Woods', None, ['Skull Final Drop WS', 'Skull Final Drop Hole']),
|
||||
create_dungeon_region(player, 'Skull Boss', 'Skull Woods', ['Skull Woods - Boss', 'Skull Woods - Prize']),
|
||||
create_dungeon_region(player, 'Skull Boss', 'Skull Woods', None, ['Skull Woods Boss']),
|
||||
create_dungeon_region(player, 'Skull Boss Spoils', 'Skull Woods', ['Skull Woods - Boss', 'Skull Woods - Prize', 'Skull Woods - Boss Kill']),
|
||||
|
||||
# tt
|
||||
create_dungeon_region(player, 'Thieves Lobby', 'Thieves\' Town', ['Thieves\' Town - Map Chest'], ['Thieves Lobby S', 'Thieves Lobby N Edge', 'Thieves Lobby NE Edge', 'Thieves Lobby E']),
|
||||
@@ -712,8 +718,9 @@ def create_dungeon_regions(world, player):
|
||||
create_dungeon_region(player, 'Thieves Compass Room', 'Thieves\' Town', ['Thieves\' Town - Compass Chest'], ['Thieves Compass Room NW Edge', 'Thieves Compass Room N Edge', 'Thieves Compass Room WS Edge', 'Thieves Compass Room W']),
|
||||
create_dungeon_region(player, 'Thieves Big Chest Nook', 'Thieves\' Town', ['Thieves\' Town - Big Key Chest'], ['Thieves Big Chest Nook ES Edge']),
|
||||
create_dungeon_region(player, 'Thieves Hallway', 'Thieves\' Town', ['Thieves\' Town - Hallway Pot Key'], ['Thieves Hallway SE', 'Thieves Hallway NE', 'Thieves Hallway WN', 'Thieves Hallway WS']),
|
||||
create_dungeon_region(player, 'Thieves Boss', 'Thieves\' Town', ['Revealing Light', 'Thieves\' Town - Boss', 'Thieves\' Town - Prize'], ['Thieves Boss SE']),
|
||||
#create_dungeon_region(player, 'Thieves Boss', 'Thieves\' Town', ['Thieves\' Town - Boss', 'Thieves\' Town - Prize'], ['Revealing Light', 'Thieves Boss SE']),
|
||||
create_dungeon_region(player, 'Thieves Boss', 'Thieves\' Town', ['Revealing Light'], ['Thieves Boss SE', 'Thieves Town Boss']),
|
||||
create_dungeon_region(player, 'Thieves Boss Spoils', 'Thieves\' Town', ['Thieves\' Town - Boss', 'Thieves\' Town - Prize', 'Thieves\' Town - Boss Kill']),
|
||||
#create_dungeon_region(player, 'Thieves Revealing Light', 'Thieves\' Town', ['Revealing Light'], ['Thieves Boss Room']),
|
||||
create_dungeon_region(player, 'Thieves Pot Alcove Mid', 'Thieves\' Town', None, ['Thieves Pot Alcove Mid ES', 'Thieves Pot Alcove Mid WS']),
|
||||
create_dungeon_region(player, 'Thieves Pot Alcove Bottom', 'Thieves\' Town', None, ['Thieves Pot Alcove Bottom SW']),
|
||||
@@ -791,7 +798,8 @@ def create_dungeon_regions(world, player):
|
||||
create_dungeon_region(player, 'Ice Refill - Crystal', 'Ice Palace', None, ['Ice Refill Crystal Exit']),
|
||||
create_dungeon_region(player, 'Ice Fairy', 'Ice Palace', None, ['Ice Fairy Warp']),
|
||||
create_dungeon_region(player, 'Ice Antechamber', 'Ice Palace', None, ['Ice Antechamber NE', 'Ice Antechamber Hole']),
|
||||
create_dungeon_region(player, 'Ice Boss', 'Ice Palace', ['Ice Palace - Boss', 'Ice Palace - Prize']),
|
||||
create_dungeon_region(player, 'Ice Boss', 'Ice Palace', None, ['Ice Palace Boss']),
|
||||
create_dungeon_region(player, 'Ice Boss Spoils', 'Ice Palace', ['Ice Palace - Boss', 'Ice Palace - Prize', 'Ice Palace - Boss Kill']),
|
||||
|
||||
# mire
|
||||
create_dungeon_region(player, 'Mire Lobby', 'Misery Mire', None, ['Mire Lobby S', 'Mire Lobby Gap']),
|
||||
@@ -855,7 +863,8 @@ def create_dungeon_regions(world, player):
|
||||
create_dungeon_region(player, 'Mire Falling Foes', 'Misery Mire', None, ['Mire Falling Foes ES', 'Mire Falling Foes Up Stairs']),
|
||||
create_dungeon_region(player, 'Mire Firesnake Skip', 'Misery Mire', None, ['Mire Firesnake Skip Down Stairs', 'Mire Firesnake Skip Orange Barrier']),
|
||||
create_dungeon_region(player, 'Mire Antechamber', 'Misery Mire', None, ['Mire Antechamber Orange Barrier', 'Mire Antechamber NW']),
|
||||
create_dungeon_region(player, 'Mire Boss', 'Misery Mire', ['Misery Mire - Boss', 'Misery Mire - Prize'], ['Mire Boss SW']),
|
||||
create_dungeon_region(player, 'Mire Boss', 'Misery Mire', None, ['Mire Boss SW', 'Misery Mire Boss']),
|
||||
create_dungeon_region(player, 'Mire Boss Spoils', 'Misery Mire', ['Misery Mire - Boss', 'Misery Mire - Prize', 'Misery Mire - Boss Kill']),
|
||||
|
||||
# tr
|
||||
create_dungeon_region(player, 'TR Main Lobby', 'Turtle Rock', None, ['TR Main Lobby Gap', 'TR Main Lobby SE']),
|
||||
@@ -912,7 +921,8 @@ def create_dungeon_regions(world, player):
|
||||
create_dungeon_region(player, 'TR Crystal Maze End - Ranged Crystal', 'Turtle Rock', None, ['TR Crystal Maze End Ranged Crystal Exit']),
|
||||
create_dungeon_region(player, 'TR Final Abyss Balcony', 'Turtle Rock', None, ['TR Final Abyss South Stairs', 'TR Final Abyss Balcony Path']),
|
||||
create_dungeon_region(player, 'TR Final Abyss Ledge', 'Turtle Rock', None, ['TR Final Abyss NW', 'TR Final Abyss Ledge Path']),
|
||||
create_dungeon_region(player, 'TR Boss', 'Turtle Rock', ['Turtle Rock - Boss', 'Turtle Rock - Prize'], ['TR Boss SW']),
|
||||
create_dungeon_region(player, 'TR Boss', 'Turtle Rock', None, ['TR Boss SW', 'Turtle Rock Boss']),
|
||||
create_dungeon_region(player, 'TR Boss Spoils', 'Turtle Rock', ['Turtle Rock - Boss', 'Turtle Rock - Prize', 'Turtle Rock - Boss Kill']),
|
||||
|
||||
# gt
|
||||
create_dungeon_region(player, 'GT Lobby', 'Ganon\'s Tower', None, ['GT Lobby Left Down Stairs', 'GT Lobby Up Stairs', 'GT Lobby Right Down Stairs', 'GT Lobby S']),
|
||||
@@ -1235,7 +1245,10 @@ def adjust_locations(world, player):
|
||||
for l in ['Ganon', 'Agahnim 1', 'Agahnim 2', 'Frog', 'Missing Smith', 'Dark Blacksmith Ruins', 'Middle Aged Man',
|
||||
'Floodgate', 'Trench 1 Switch', 'Trench 2 Switch', 'Swamp Drain', 'Turtle Medallion Pad',
|
||||
'Attic Cracked Floor', 'Suspicious Maiden', 'Revealing Light', 'Big Bomb', 'Pyramid Crack',
|
||||
'Ice Block Drop', 'Lost Old Man', 'Old Man Drop Off', 'Zelda Pickup', 'Zelda Drop Off', 'Skull Star Tile']:
|
||||
'Ice Block Drop', 'Lost Old Man', 'Old Man Drop Off', 'Zelda Pickup', 'Zelda Drop Off', 'Skull Star Tile',
|
||||
'Eastern Palace - Boss Kill', 'Desert Palace - Boss Kill', 'Tower of Hera - Boss Kill',
|
||||
'Palace of Darkness - Boss Kill', 'Swamp Palace - Boss Kill', 'Skull Woods - Boss Kill',
|
||||
'Thieves\' Town - Boss Kill', 'Ice Palace - Boss Kill', 'Misery Mire - Boss Kill', 'Turtle Rock - Boss Kill']:
|
||||
location = world.get_location_unsafe(l, player)
|
||||
if location:
|
||||
location.type = LocationType.Logical
|
||||
@@ -1623,6 +1636,16 @@ location_table = {'Mushroom': (0x180013, 0x186df8, False, 'in the woods'),
|
||||
'Ganon': (None, None, False, 'from me'),
|
||||
'Agahnim 1': (None, None, False, 'from Ganon\'s wizardry form'),
|
||||
'Agahnim 2': (None, None, False, 'from Ganon\'s wizardry form'),
|
||||
'Eastern Palace - Boss Kill': (None, None, False, None),
|
||||
'Desert Palace - Boss Kill': (None, None, False, None),
|
||||
'Tower of Hera - Boss Kill': (None, None, False, None),
|
||||
'Palace of Darkness - Boss Kill': (None, None, False, None),
|
||||
'Swamp Palace - Boss Kill': (None, None, False, None),
|
||||
'Thieves\' Town - Boss Kill': (None, None, False, None),
|
||||
'Skull Woods - Boss Kill': (None, None, False, None),
|
||||
'Ice Palace - Boss Kill': (None, None, False, None),
|
||||
'Misery Mire - Boss Kill': (None, None, False, None),
|
||||
'Turtle Rock - Boss Kill': (None, None, False, None),
|
||||
'Lost Old Man': (None, None, False, None),
|
||||
'Old Man Drop Off': (None, None, False, None),
|
||||
'Floodgate': (None, None, False, None),
|
||||
|
||||
40
Rules.py
40
Rules.py
@@ -63,7 +63,7 @@ def set_rules(world, player):
|
||||
|
||||
if world.goal[player] == 'dungeons':
|
||||
# require all dungeons to beat ganon
|
||||
add_rule(world.get_location('Ganon', player), lambda state: state.can_reach('Master Sword Pedestal', 'Location', player) and state.has_beaten_aga(player) and state.has('Beat Agahnim 2', player) and state.has_crystals(7, player))
|
||||
add_rule(world.get_location('Ganon', player), lambda state: state.has_beaten_aga(player) and state.has('Beat Agahnim 2', player) and state.has('Beat Boss', player, 10))
|
||||
elif world.goal[player] in ['crystals', 'ganon']:
|
||||
add_rule(world.get_location('Ganon', player), lambda state: state.has_crystals(world.crystals_needed_for_ganon[player], player))
|
||||
if world.goal[player] == 'ganon':
|
||||
@@ -148,9 +148,11 @@ def set_rule(spot, rule):
|
||||
spot.access_rule = rule
|
||||
|
||||
|
||||
def set_defeat_dungeon_boss_rule(location):
|
||||
# Lambda required to defer evaluation of dungeon.boss since it will change later if boos shuffle is used
|
||||
set_rule(location, lambda state: location.parent_region.dungeon.boss.can_defeat(state))
|
||||
def set_defeat_dungeon_boss_rule(entrance):
|
||||
# Lambda required to defer evaluation of dungeon.boss since it will change later if boss shuffle is used
|
||||
set_rule(entrance, lambda state: entrance.parent_region.dungeon.boss.can_defeat(state))
|
||||
if entrance.parent_region.dungeon.name == 'Thieves Town':
|
||||
add_rule(entrance, lambda state: entrance.parent_region.dungeon.boss.name != 'Blind' or state.has('Maiden Unmasked', entrance.player))
|
||||
|
||||
|
||||
def set_always_allow(spot, rule):
|
||||
@@ -424,20 +426,17 @@ def global_rules(world, player):
|
||||
set_rule(world.get_entrance('Eastern Map Balcony Hook Path', player), lambda state: state.has('Hookshot', player))
|
||||
|
||||
# Boss rules. Same as below but no BK or arrow requirement.
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Eastern Palace - Prize', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Eastern Palace - Boss', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_entrance('Eastern Palace Boss', player))
|
||||
|
||||
# Desert
|
||||
set_rule(world.get_location('Desert Palace - Torch', player), lambda state: state.has_Boots(player))
|
||||
set_rule(world.get_entrance('Desert Wall Slide NW', player), lambda state: state.has_fire_source(player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Desert Palace - Prize', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Desert Palace - Boss', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_entrance('Desert Palace Boss', player))
|
||||
|
||||
# Tower of Hera
|
||||
set_rule(world.get_location('Tower of Hera - Big Key Chest', player), lambda state: state.has_fire_source(player))
|
||||
set_rule(world.get_entrance('Hera Big Chest Hook Path', player), lambda state: state.has('Hookshot', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Tower of Hera - Boss', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Tower of Hera - Prize', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_entrance('Tower of Hera Boss', player))
|
||||
|
||||
# Castle Tower
|
||||
set_rule(world.get_entrance('Tower Altar NW', player), lambda state: state.has_sword(player))
|
||||
@@ -452,8 +451,7 @@ def global_rules(world, player):
|
||||
set_rule(world.get_entrance('PoD Dark Pegs Right to Landing', player), lambda state: state.has('Hammer', player))
|
||||
set_rule(world.get_entrance('PoD Turtle Party NW', player), lambda state: state.has('Hammer', player))
|
||||
set_rule(world.get_entrance('PoD Turtle Party ES', player), lambda state: state.has('Hammer', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Palace of Darkness - Boss', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Palace of Darkness - Prize', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_entrance('Palace of Darkness Boss', player))
|
||||
|
||||
set_rule(world.get_entrance('Swamp Lobby Moat', player), lambda state: state.has('Flippers', player) and state.has('Open Floodgate', player))
|
||||
set_rule(world.get_entrance('Swamp Entrance Moat', player), lambda state: state.has('Flippers', player) and state.has('Open Floodgate', player))
|
||||
@@ -489,8 +487,7 @@ def global_rules(world, player):
|
||||
set_rule(world.get_entrance('Swamp Waterway N', player), lambda state: state.has('Flippers', player))
|
||||
set_rule(world.get_entrance('Swamp Waterway NE', player), lambda state: state.has('Flippers', player))
|
||||
set_rule(world.get_location('Swamp Palace - Waterway Pot Key', player), lambda state: state.has('Flippers', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Swamp Palace - Boss', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Swamp Palace - Prize', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_entrance('Swamp Palace Boss', player))
|
||||
|
||||
set_rule(world.get_entrance('Skull Big Chest Hookpath', player), lambda state: state.has('Hookshot', player))
|
||||
set_rule(world.get_entrance('Skull Torch Room WN', player), lambda state: state.has('Fire Rod', player))
|
||||
@@ -513,8 +510,7 @@ def global_rules(world, player):
|
||||
set_rule(world.get_entrance('Skull 2 West Lobby Pits', player), lambda state: state.has_Boots(player)
|
||||
or hidden_pits_rule(state))
|
||||
set_rule(world.get_entrance('Skull 2 West Lobby Ledge Pits', player), hidden_pits_rule)
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Skull Woods - Boss', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Skull Woods - Prize', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_entrance('Skull Woods Boss', player))
|
||||
|
||||
# blind can't have the small key? - not necessarily true anymore - but likely still
|
||||
|
||||
@@ -529,8 +525,7 @@ def global_rules(world, player):
|
||||
# for location in ['Suspicious Maiden', 'Thieves\' Town - Blind\'s Cell']:
|
||||
# set_rule(world.get_location(location, player), lambda state: state.has('Big Key (Thieves Town)', player))
|
||||
set_rule(world.get_location('Revealing Light', player), lambda state: state.has('Shining Light', player) and state.has('Maiden Rescued', player))
|
||||
set_rule(world.get_location('Thieves\' Town - Boss', player), lambda state: state.has('Maiden Unmasked', player) and world.get_location('Thieves\' Town - Boss', player).parent_region.dungeon.boss.can_defeat(state))
|
||||
set_rule(world.get_location('Thieves\' Town - Prize', player), lambda state: state.has('Maiden Unmasked', player) and world.get_location('Thieves\' Town - Prize', player).parent_region.dungeon.boss.can_defeat(state))
|
||||
set_defeat_dungeon_boss_rule(world.get_entrance('Thieves Town Boss', player))
|
||||
|
||||
set_rule(world.get_entrance('Ice Lobby WS', player), lambda state: state.can_melt_things(player))
|
||||
if is_trapped('Ice Lobby SE'):
|
||||
@@ -556,8 +551,7 @@ def global_rules(world, player):
|
||||
if is_trapped('Ice Switch Room NE'):
|
||||
set_rule(world.get_entrance('Ice Switch Room NE', player),
|
||||
lambda state: state.has('Cane of Somaria', player) or state.has('Convenient Block', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Ice Palace - Boss', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Ice Palace - Prize', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_entrance('Ice Palace Boss', player))
|
||||
|
||||
set_rule(world.get_entrance('Mire Lobby Gap', player), lambda state: state.has_Boots(player) or state.has('Hookshot', player))
|
||||
set_rule(world.get_entrance('Mire Post-Gap Gap', player), lambda state: state.has_Boots(player) or state.has('Hookshot', player))
|
||||
@@ -587,8 +581,7 @@ def global_rules(world, player):
|
||||
# set_rule(world.get_entrance('Mire Dark Shooters SE', player),
|
||||
# lambda state: state.has('Cane of Somaria', player))
|
||||
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Misery Mire - Boss', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Misery Mire - Prize', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_entrance('Misery Mire Boss', player))
|
||||
|
||||
set_rule(world.get_entrance('TR Main Lobby Gap', player), lambda state: state.has('Cane of Somaria', player))
|
||||
set_rule(world.get_entrance('TR Lobby Ledge Gap', player), lambda state: state.has('Cane of Somaria', player))
|
||||
@@ -618,8 +611,7 @@ def global_rules(world, player):
|
||||
set_rule(world.get_location('Turtle Rock - Eye Bridge - Bottom Right', player), lambda state: state.can_avoid_lasers(player))
|
||||
set_rule(world.get_location('Turtle Rock - Eye Bridge - Top Left', player), lambda state: state.can_avoid_lasers(player))
|
||||
set_rule(world.get_location('Turtle Rock - Eye Bridge - Top Right', player), lambda state: state.can_avoid_lasers(player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Turtle Rock - Boss', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Turtle Rock - Prize', player))
|
||||
set_defeat_dungeon_boss_rule(world.get_entrance('Turtle Rock Boss', player))
|
||||
|
||||
set_rule(world.get_location('Ganons Tower - Bob\'s Torch', player), lambda state: state.has_Boots(player))
|
||||
set_rule(world.get_entrance('GT Hope Room EN', player), lambda state: state.has('Cane of Somaria', player))
|
||||
|
||||
Reference in New Issue
Block a user