Implemented mire
This commit is contained in:
@@ -174,7 +174,7 @@ def fix_big_key_doors_with_ugly_smalls(world, player):
|
||||
|
||||
|
||||
def remove_ugly_small_key_doors(world, player):
|
||||
for d in ['Eastern Hint Tile Blocked Path SE', 'Eastern Darkness S', 'Thieves Hallway SE']:
|
||||
for d in ['Eastern Hint Tile Blocked Path SE', 'Eastern Darkness S', 'Thieves Hallway SE', 'Mire Left Bridge S']:
|
||||
door = world.get_door(d, player)
|
||||
room = world.get_room(door.roomIndex, player)
|
||||
room.change(door.doorListPos, DoorKind.Normal)
|
||||
@@ -183,7 +183,7 @@ def remove_ugly_small_key_doors(world, player):
|
||||
|
||||
|
||||
def unpair_big_key_doors(world, player):
|
||||
problematic_bk_doors = ['Eastern Courtyard N', 'Eastern Big Key NE', 'Thieves BK Corner NE']
|
||||
problematic_bk_doors = ['Eastern Courtyard N', 'Eastern Big Key NE', 'Thieves BK Corner NE', 'Mire BK Door Room N']
|
||||
for paired_door in world.paired_doors[player]:
|
||||
if paired_door.door_a in problematic_bk_doors or paired_door.door_b in problematic_bk_doors:
|
||||
paired_door.pair = False
|
||||
@@ -1232,7 +1232,28 @@ logical_connections = [
|
||||
('Ice Crystal Left Blue Barrier', 'Ice Crystal Block'),
|
||||
('Ice Crystal Block Exit', 'Ice Crystal Left'),
|
||||
('Ice Big Chest Landing Push Blocks', 'Ice Big Chest View'),
|
||||
# ('', ''),
|
||||
('Mire Lobby Gap', 'Mire Post-Gap'),
|
||||
('Mire Post-Gap Gap', 'Mire Lobby'),
|
||||
('Mire Hub Upper Blue Barrier', 'Mire Hub Top'),
|
||||
('Mire Hub Lower Blue Barrier', 'Mire Hub Right'),
|
||||
('Mire Hub Right Blue Barrier', 'Mire Hub'),
|
||||
('Mire Hub Top Blue Barrier', 'Mire Hub'),
|
||||
('Mire Map Spike Side Drop Down', 'Mire Lone Shooter'),
|
||||
('Mire Map Spike Side Blue Barrier', 'Mire Crystal Dead End'),
|
||||
('Mire Map Spot Blue Barrier', 'Mire Crystal Dead End'),
|
||||
('Mire Crystal Dead End Left Barrier', 'Mire Map Spot'),
|
||||
('Mire Crystal Dead End Right Barrier', 'Mire Map Spike Side'),
|
||||
('Mire Left Bridge Hook Path', 'Mire Right Bridge'),
|
||||
('Mire Crystal Right Orange Barrier', 'Mire Crystal Mid'),
|
||||
('Mire Crystal Mid Orange Barrier', 'Mire Crystal Right'),
|
||||
('Mire Crystal Mid Blue Barrier', 'Mire Crystal Left'),
|
||||
('Mire Crystal Left Blue Barrier', 'Mire Crystal Mid'),
|
||||
('Mire Firesnake Skip Orange Barrier', 'Mire Antechamber'),
|
||||
('Mire Antechamber Orange Barrier', 'Mire Firesnake Skip'),
|
||||
('Mire Compass Blue Barrier', 'Mire Compass Chest'),
|
||||
('Mire Compass Chest Exit', 'Mire Compass Room'),
|
||||
('Mire South Fish Blue Barrier', 'Mire Fishbone'),
|
||||
('Mire Fishbone Blue Barrier', 'Mire South Fish'),
|
||||
# ('', ''),
|
||||
]
|
||||
|
||||
@@ -1273,6 +1294,10 @@ spiral_staircases = [
|
||||
('Ice Spike Room Down Stairs', 'Ice Spikeball Up Stairs'),
|
||||
('Ice Lonely Freezor Down Stairs', 'Iced T Up Stairs'),
|
||||
('Ice Backwards Room Down Stairs', 'Ice Anti-Fairy Up Stairs'),
|
||||
('Mire Post-Gap Down Stairs', 'Mire 2 Up Stairs'),
|
||||
('Mire Left Bridge Down Stairs', 'Mire Dark Shooters Up Stairs'),
|
||||
('Mire Conveyor Barrier Up Stairs', 'Mire Torches Top Down Stairs'),
|
||||
('Mire Falling Foes Up Stairs', 'Mire Firesnake Skip Down Stairs'),
|
||||
# ('', ''),
|
||||
]
|
||||
|
||||
@@ -1333,6 +1358,7 @@ falldown_pits = [
|
||||
('Ice Crystal Right Blue Hole', 'Ice Switch Room'),
|
||||
('Ice Backwards Room Hole', 'Ice Fairy'),
|
||||
('Ice Antechamber Hole', 'Ice Boss'),
|
||||
('Mire Attic Hint Hole', 'Mire BK Chest Ledge'),
|
||||
# ('', ''),
|
||||
]
|
||||
|
||||
@@ -1344,6 +1370,8 @@ dungeon_warps = [
|
||||
('PoD Stalfos Basement Warp', 'PoD Warp Room'),
|
||||
('PoD Callback Warp', 'PoD Dark Alley'),
|
||||
('Ice Fairy Warp', 'Ice Anti-Fairy'),
|
||||
('Mire Lone Warp Warp', 'Mire BK Door Room'),
|
||||
('Mire Warping Pool Warp', 'Mire Square Rail'),
|
||||
# ('', ''),
|
||||
]
|
||||
|
||||
@@ -1468,6 +1496,27 @@ interior_doors = [
|
||||
('Ice Crystal Right NE', 'Ice Backwards Room SE'),
|
||||
('Ice Crystal Left WS', 'Ice Big Chest View ES'),
|
||||
('Ice Anti-Fairy SE', 'Ice Switch Room NE'),
|
||||
('Mire Lone Shooter ES', 'Mire Falling Bridge WS'), # technically one-way
|
||||
('Mire Falling Bridge W', 'Mire Failure Bridge E'), # technically one-way
|
||||
('Mire Falling Bridge WN', 'Mire Map Spike Side EN'), # technically one-way
|
||||
('Mire Hidden Shooters WS', 'Mire Cross ES'), # technically one-way
|
||||
('Mire Hidden Shooters NE', 'Mire Minibridge SE'),
|
||||
('Mire Spikes NW', 'Mire Ledgehop SW'),
|
||||
('Mire Spike Barrier ES', 'Mire Square Rail WS'),
|
||||
('Mire Square Rail NW', 'Mire Lone Warp SW'),
|
||||
('Mire Wizzrobe Bypass WN', 'Mire Compass Room EN'), # technically one-way
|
||||
('Mire Conveyor Crystal WS', 'Mire Tile Room ES'),
|
||||
('Mire Tile Room NW', 'Mire Compass Room SW'),
|
||||
('Mire Neglected Room SE', 'Mire Chest View NE'),
|
||||
('Mire BK Chest Ledge WS', 'Mire Warping Pool ES'), # technically one-way
|
||||
('Mire Torches Top SW', 'Mire Torches Bottom NW'),
|
||||
('Mire Torches Bottom WS', 'Mire Attic Hint ES'),
|
||||
('Mire Dark Shooters SE', 'Mire Key Rupees NE'),
|
||||
('Mire Dark Shooters SW', 'Mire Block X NW'),
|
||||
('Mire Tall Dark and Roomy WS', 'Mire Crystal Right ES'),
|
||||
('Mire Tall Dark and Roomy WN', 'Mire Shooter Rupees EN'),
|
||||
('Mire Crystal Mid NW', 'Mire Crystal Top SW'),
|
||||
# ('', ''),
|
||||
# ('', ''),
|
||||
]
|
||||
|
||||
@@ -1568,6 +1617,31 @@ default_door_connections = [
|
||||
('Ice Many Pots WS', 'Ice Crystal Right ES'),
|
||||
('Ice Switch Room ES', 'Ice Refill WS'),
|
||||
('Ice Switch Room SE', 'Ice Antechamber NE'),
|
||||
('Mire 2 NE', 'Mire Hub SE'),
|
||||
('Mire Hub ES', 'Mire Lone Shooter WS'),
|
||||
('Mire Hub E', 'Mire Failure Bridge W'),
|
||||
('Mire Hub NE', 'Mire Hidden Shooters SE'),
|
||||
('Mire Hub WN', 'Mire Wizzrobe Bypass EN'),
|
||||
('Mire Hub WS', 'Mire Conveyor Crystal ES'),
|
||||
('Mire Hub Right EN', 'Mire Map Spot WN'),
|
||||
('Mire Hub Top NW', 'Mire Cross SW'),
|
||||
('Mire Hidden Shooters ES', 'Mire Spikes WS'),
|
||||
('Mire Minibridge NE', 'Mire Right Bridge SE'),
|
||||
('Mire BK Door Room EN', 'Mire Ledgehop WN'),
|
||||
('Mire BK Door Room N', 'Mire Left Bridge S'),
|
||||
('Mire Spikes SW', 'Mire Crystal Dead End NE'),
|
||||
('Mire Ledgehop NW', 'Mire Bent Bridge SW'),
|
||||
('Mire Bent Bridge W', 'Mire Over Bridge E'),
|
||||
('Mire Over Bridge W', 'Mire Fishbone E'),
|
||||
('Mire Fishbone SE', 'Mire Spike Barrier NE'),
|
||||
('Mire Spike Barrier SE', 'Mire Wizzrobe Bypass NE'),
|
||||
('Mire Conveyor Crystal SE', 'Mire Neglected Room NE'),
|
||||
('Mire Tile Room SW', 'Mire Conveyor Barrier NW'),
|
||||
('Mire Block X WS', 'Mire Tall Dark and Roomy ES'),
|
||||
('Mire Crystal Left WS', 'Mire Falling Foes ES'),
|
||||
# ('', ''),
|
||||
# ('', ''),
|
||||
# ('', ''),
|
||||
# ('', ''),
|
||||
]
|
||||
|
||||
@@ -1581,6 +1655,7 @@ default_one_way_connections = [
|
||||
('PoD Dark Alley NE', 'PoD Boss SE'),
|
||||
('Swamp T NW', 'Swamp Boss SW'),
|
||||
('Thieves Hallway NE', 'Thieves Boss SE'),
|
||||
('Mire Antechamber NW', 'Mire Boss SW'),
|
||||
# ('', ''),
|
||||
]
|
||||
|
||||
|
||||
157
Doors.py
157
Doors.py
@@ -694,6 +694,126 @@ def create_doors(world, player):
|
||||
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, 'Mire Lobby Gap', Lgcl),
|
||||
create_door(player, 'Mire Post-Gap Gap', Lgcl),
|
||||
create_door(player, 'Mire Post-Gap Down Stairs', Sprl).dir(Up, 0x98, 0, HTH).ss(X, 0x11, 0x90, False, True),
|
||||
create_door(player, 'Mire 2 Up Stairs', Sprl).dir(Up, 0xd2, 0, HTH).ss(X, 0x0, 0x0, False, True),
|
||||
create_door(player, 'Mire 2 NE', Nrml).dir(No, 0xd2, Right, High).trap(0x4).pos(0),
|
||||
create_door(player, 'Mire Hub SE', Nrml).dir(So, 0xc2, Right, High).pos(5),
|
||||
create_door(player, 'Mire Hub ES', Nrml).dir(Ea, 0xc2, Bot, High).pos(6),
|
||||
create_door(player, 'Mire Hub E', Nrml).dir(Ea, 0xc2, Mid, High).pos(4),
|
||||
create_door(player, 'Mire Hub NE', Nrml).dir(No, 0xc2, Right, High).pos(7),
|
||||
create_door(player, 'Mire Hub WN', Nrml).dir(We, 0xc2, Top, High).pos(3),
|
||||
create_door(player, 'Mire Hub WS', Nrml).dir(We, 0xc2, Bot, High).small_key().pos(1),
|
||||
create_door(player, 'Mire Hub Upper Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire Hub Lower Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire Hub Right Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire Hub Top Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire Hub Right EN', Nrml).dir(Ea, 0xc2, Top, High).small_key().pos(0),
|
||||
create_door(player, 'Mire Hub Top NW', Nrml).dir(No, 0xc2, Left, High).pos(2),
|
||||
create_door(player, 'Mire Lone Shooter WS', Nrml).dir(We, 0xc3, Bot, High).pos(6),
|
||||
create_door(player, 'Mire Lone Shooter ES', Intr).dir(Ea, 0xc3, Bot, High).pos(3),
|
||||
create_door(player, 'Mire Falling Bridge WS', Intr).dir(We, 0xc3, Bot, High).no_exit().pos(3),
|
||||
create_door(player, 'Mire Falling Bridge W', Intr).dir(We, 0xc3, Mid, High).pos(2),
|
||||
create_door(player, 'Mire Failure Bridge E', Intr).dir(Ea, 0xc3, Mid, High).no_exit().pos(2),
|
||||
create_door(player, 'Mire Failure Bridge W', Nrml).dir(We, 0xc3, Mid, High).pos(5),
|
||||
create_door(player, 'Mire Falling Bridge WN', Intr).dir(We, 0xc3, Top, High).pos(1),
|
||||
create_door(player, 'Mire Map Spike Side EN', Intr).dir(Ea, 0xc3, Top, High).no_exit().pos(1),
|
||||
create_door(player, 'Mire Map Spot WN', Nrml).dir(We, 0xc3, Top, High).small_key().pos(0),
|
||||
create_door(player, 'Mire Crystal Dead End NE', Nrml).dir(No, 0xc3, Right, High).pos(4),
|
||||
create_door(player, 'Mire Map Spike Side Drop Down', Lgcl),
|
||||
create_door(player, 'Mire Map Spike Side Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire Map Spot Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire Crystal Dead End Left Barrier', Lgcl),
|
||||
create_door(player, 'Mire Crystal Dead End Right Barrier', Lgcl),
|
||||
create_door(player, 'Mire Hidden Shooters SE', Nrml).dir(So, 0xb2, Right, High).pos(6),
|
||||
create_door(player, 'Mire Hidden Shooters ES', Nrml).dir(Ea, 0xb2, Bot, High).pos(7),
|
||||
create_door(player, 'Mire Hidden Shooters WS', Intr).dir(We, 0xb2, Bot, High).pos(1),
|
||||
create_door(player, 'Mire Cross ES', Intr).dir(Ea, 0xb2, Bot, High).pos(1),
|
||||
create_door(player, 'Mire Hidden Shooters NE', Intr).dir(No, 0xb2, Right, High).pos(2),
|
||||
create_door(player, 'Mire Minibridge SE', Intr).dir(So, 0xb2, Right, High).pos(2),
|
||||
create_door(player, 'Mire Cross SW', Nrml).dir(So, 0xb2, Left, High).pos(5),
|
||||
create_door(player, 'Mire Minibridge NE', Nrml).dir(No, 0xb2, Right, High).pos(4),
|
||||
create_door(player, 'Mire BK Door Room EN', Nrml).dir(Ea, 0xb2, Top, Low).pos(3),
|
||||
create_door(player, 'Mire BK Door Room N', Nrml).dir(No, 0xb2, Mid, High).big_key().pos(0),
|
||||
create_door(player, 'Mire Spikes WS', Nrml).dir(We, 0xb3, Bot, High).pos(3),
|
||||
create_door(player, 'Mire Spikes SW', Nrml).dir(So, 0xb3, Left, High).pos(4),
|
||||
create_door(player, 'Mire Spikes NW', Intr).dir(No, 0xb3, Left, High).small_key().pos(0),
|
||||
create_door(player, 'Mire Ledgehop SW', Intr).dir(So, 0xb3, Left, High).small_key().pos(0),
|
||||
create_door(player, 'Mire Ledgehop WN', Nrml).dir(We, 0xb3, Top, Low).pos(1),
|
||||
create_door(player, 'Mire Ledgehop NW', Nrml).dir(No, 0xb3, Left, High).pos(2),
|
||||
create_door(player, 'Mire Bent Bridge SW', Nrml).dir(So, 0xa3, Left, High).pos(1),
|
||||
create_door(player, 'Mire Bent Bridge W', Nrml).dir(We, 0xa3, Mid, High).pos(0),
|
||||
create_door(player, 'Mire Over Bridge E', Nrml).dir(Ea, 0xa2, Mid, High).pos(2),
|
||||
create_door(player, 'Mire Over Bridge W', Nrml).dir(We, 0xa2, Mid, High).pos(1),
|
||||
create_door(player, 'Mire Right Bridge SE', Nrml).dir(So, 0xa2, Right, High).pos(3),
|
||||
create_door(player, 'Mire Left Bridge S', Nrml).dir(So, 0xa2, Mid, High).small_key().pos(0),
|
||||
create_door(player, 'Mire Left Bridge Hook Path', Lgcl),
|
||||
create_door(player, 'Mire Left Bridge Down Stairs', Sprl).dir(Dn, 0xa2, 0, LTH).ss(A, 0x12, 0x00),
|
||||
create_door(player, 'Mire Fishbone E', Nrml).dir(Ea, 0xa1, Mid, High).pos(1),
|
||||
create_door(player, 'Mire Fishbone Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire South Fish Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire Fishbone SE', Nrml).dir(So, 0xa1, Right, High).small_key().pos(0),
|
||||
create_door(player, 'Mire Spike Barrier NE', Nrml).dir(No, 0xb1, Right, High).small_key().pos(1),
|
||||
create_door(player, 'Mire Spike Barrier SE', Nrml).dir(So, 0xb1, Right, High).pos(2),
|
||||
create_door(player, 'Mire Spike Barrier ES', Intr).dir(Ea, 0xb1, Bot, High).pos(3),
|
||||
create_door(player, 'Mire Square Rail WS', Intr).dir(We, 0xb1, Bot, High).pos(3),
|
||||
create_door(player, 'Mire Square Rail NW', Intr).dir(No, 0xb1, Left, High).big_key().pos(0),
|
||||
create_door(player, 'Mire Lone Warp SW', Intr).dir(So, 0xb1, Left, High).pos(0),
|
||||
create_door(player, 'Mire Lone Warp Warp', Warp),
|
||||
create_door(player, 'Mire Wizzrobe Bypass EN', Nrml).dir(Ea, 0xc1, Top, High).pos(5),
|
||||
create_door(player, 'Mire Wizzrobe Bypass NE', Nrml).dir(No, 0xc1, Right, High).pos(6),
|
||||
create_door(player, 'Mire Conveyor Crystal ES', Nrml).dir(Ea, 0xc1, Bot, High).small_key().pos(1),
|
||||
create_door(player, 'Mire Conveyor Crystal SE', Nrml).dir(So, 0xc1, Right, High).pos(7),
|
||||
create_door(player, 'Mire Conveyor Crystal WS', Intr).dir(We, 0xc1, Bot, High).small_key().pos(0),
|
||||
create_door(player, 'Mire Tile Room ES', Intr).dir(Ea, 0xc1, Bot, High).small_key().pos(0),
|
||||
create_door(player, 'Mire Tile Room SW', Nrml).dir(So, 0xc1, Left, High).pos(4),
|
||||
create_door(player, 'Mire Tile Room NW', Intr).dir(No, 0xc1, Left, High).pos(3),
|
||||
create_door(player, 'Mire Compass Room SW', Intr).dir(So, 0xc1, Left, High).pos(3),
|
||||
create_door(player, 'Mire Compass Room EN', Intr).dir(Ea, 0xc1, Top, High).pos(2),
|
||||
create_door(player, 'Mire Wizzrobe Bypass WN', Intr).dir(We, 0xc1, Top, High).no_exit().pos(2),
|
||||
create_door(player, 'Mire Compass Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire Compass Chest Exit', Lgcl),
|
||||
create_door(player, 'Mire Neglected Room NE', Nrml).dir(No, 0xd1, Right, High).pos(2),
|
||||
create_door(player, 'Mire Conveyor Barrier NW', Nrml).dir(No, 0xd1, Left, High).pos(1),
|
||||
create_door(player, 'Mire Conveyor Barrier Up Stairs', Sprl).dir(Up, 0xd1, 0, HTH).ss(A, 0x1a, 0x9c, True),
|
||||
create_door(player, 'Mire Neglected Room SE', Intr).dir(So, 0xd1, Right, High).pos(3),
|
||||
create_door(player, 'Mire Chest View NE', Intr).dir(No, 0xd1, Right, High).pos(3),
|
||||
create_door(player, 'Mire BK Chest Ledge WS', Intr).dir(We, 0xd1, Bot, High).pos(0),
|
||||
create_door(player, 'Mire Warping Pool ES', Intr).dir(Ea, 0xd1, Bot, High).no_exit().pos(0),
|
||||
create_door(player, 'Mire Warping Pool Warp', Warp),
|
||||
create_door(player, 'Mire Torches Top Down Stairs', Sprl).dir(Dn, 0x97, 0, HTH).ss(A, 0x11, 0xb0, True),
|
||||
create_door(player, 'Mire Torches Top SW', Intr).dir(So, 0x97, Left, High).pos(1),
|
||||
create_door(player, 'Mire Torches Bottom NW', Intr).dir(No, 0x97, Left, High).pos(1),
|
||||
create_door(player, 'Mire Torches Bottom WS', Intr).dir(We, 0x97, Bot, High).pos(0),
|
||||
create_door(player, 'Mire Attic Hint ES', Intr).dir(Ea, 0x97, Bot, High).pos(0),
|
||||
create_door(player, 'Mire Attic Hint Hole', Hole),
|
||||
create_door(player, 'Mire Dark Shooters Up Stairs', Sprl).dir(Up, 0x93, 0, HTL).ss(A, 0x32, 0xec),
|
||||
create_door(player, 'Mire Dark Shooters SW', Intr).dir(So, 0x93, Left, High).pos(0),
|
||||
create_door(player, 'Mire Block X NW', Intr).dir(No, 0x93, Left, High).pos(0),
|
||||
create_door(player, 'Mire Dark Shooters SE', Intr).dir(So, 0x93, Right, High).small_key().pos(1),
|
||||
create_door(player, 'Mire Key Rupees NE', Intr).dir(No, 0x93, Right, High).small_key().pos(1),
|
||||
create_door(player, 'Mire Block X WS', Nrml).dir(We, 0x93, Bot, High).pos(2),
|
||||
create_door(player, 'Mire Tall Dark and Roomy ES', Nrml).dir(Ea, 0x92, Bot, High).pos(4),
|
||||
create_door(player, 'Mire Tall Dark and Roomy WN', Intr).dir(We, 0x92, Top, High).pos(0),
|
||||
create_door(player, 'Mire Shooter Rupees EN', Intr).dir(Ea, 0x92, Top, High).pos(0),
|
||||
create_door(player, 'Mire Tall Dark and Roomy WS', Intr).dir(We, 0x92, Bot, High).pos(3),
|
||||
create_door(player, 'Mire Crystal Right ES', Intr).dir(Ea, 0x92, Bot, High).pos(3),
|
||||
create_door(player, 'Mire Crystal Mid NW', Intr).dir(No, 0x92, Left, High).pos(1),
|
||||
create_door(player, 'Mire Crystal Top SW', Intr).dir(So, 0x92, Left, High).pos(1),
|
||||
create_door(player, 'Mire Crystal Right Orange Barrier', Lgcl),
|
||||
create_door(player, 'Mire Crystal Mid Orange Barrier', Lgcl),
|
||||
create_door(player, 'Mire Crystal Mid Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire Crystal Left Blue Barrier', Lgcl),
|
||||
create_door(player, 'Mire Crystal Left WS', Nrml).dir(We, 0x92, Bot, High).pos(2),
|
||||
create_door(player, 'Mire Falling Foes ES', Nrml).dir(Ea, 0x91, Bot, High).pos(0),
|
||||
create_door(player, 'Mire Falling Foes Up Stairs', Sprl).dir(Up, 0x91, 0, HTH).ss(S, 0x9b, 0x6c, True),
|
||||
create_door(player, 'Mire Firesnake Skip Down Stairs', Sprl).dir(Dn, 0xa0, 0, HTH).ss(S, 0x92, 0x80, True, True),
|
||||
create_door(player, 'Mire Firesnake Skip Orange Barrier', Lgcl),
|
||||
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),
|
||||
|
||||
# Door Templates
|
||||
# create_door(player, '', Nrml).dir(No, 0x00, Right, High).pos(),
|
||||
# create_door(player, '', Intr).dir(No, 0x00, Right, High).pos(),
|
||||
@@ -718,7 +838,6 @@ def create_doors(world, player):
|
||||
world.get_door('Swamp Drain Right Switch', player).event('Swamp Drain')
|
||||
world.get_door('Swamp Flooded Room Ladder', player).event('Swamp Drain')
|
||||
|
||||
|
||||
# crystal switches and barriers
|
||||
world.get_door('Hera Lobby Down Stairs', player).c_switch()
|
||||
world.get_door('Hera Lobby Key Stairs', player).c_switch()
|
||||
@@ -779,6 +898,34 @@ def create_doors(world, player):
|
||||
world.get_door('Ice Crystal Left Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Ice Backwards Room Hole', player).barrier(CrystalBarrier.Blue)
|
||||
|
||||
world.get_door('Mire Fishbone E', player).c_switch()
|
||||
world.get_door('Mire Conveyor Crystal ES', player).c_switch()
|
||||
world.get_door('Mire Conveyor Crystal SE', player).c_switch()
|
||||
world.get_door('Mire Conveyor Crystal WS', player).c_switch()
|
||||
world.get_door('Mire Tall Dark and Roomy ES', player).c_switch()
|
||||
world.get_door('Mire Tall Dark and Roomy WN', player).c_switch()
|
||||
world.get_door('Mire Tall Dark and Roomy WS', player).c_switch()
|
||||
world.get_door('Mire Crystal Top SW', player).c_switch()
|
||||
world.get_door('Mire Falling Foes ES', player).c_switch()
|
||||
world.get_door('Mire Falling Foes Up Stairs', player).c_switch()
|
||||
world.get_door('Mire Hub Upper Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Hub Lower Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Hub Right Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Hub Top Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Map Spike Side Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Map Spot Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Crystal Dead End Left Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Crystal Dead End Right Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Fishbone Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire South Fish Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Compass Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Crystal Mid Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Crystal Left Blue Barrier', player).barrier(CrystalBarrier.Blue)
|
||||
world.get_door('Mire Crystal Right Orange Barrier', player).barrier(CrystalBarrier.Orange)
|
||||
world.get_door('Mire Crystal Mid Orange Barrier', player).barrier(CrystalBarrier.Orange)
|
||||
world.get_door('Mire Firesnake Skip Orange Barrier', player).barrier(CrystalBarrier.Orange)
|
||||
world.get_door('Mire Antechamber Orange Barrier', player).barrier(CrystalBarrier.Orange)
|
||||
|
||||
# nifty dynamic logical doors:
|
||||
south_controller = world.get_door('Ice Cross Bottom SE', player)
|
||||
east_controller = world.get_door('Ice Cross Right ES', player)
|
||||
@@ -816,16 +963,16 @@ def create_paired_doors(world, player):
|
||||
# PairedDoor('', ''), # gt bombable to rando room
|
||||
PairedDoor('Ice Tall Hint SE', 'Ice Lonely Freezor NE'), # ice's big icy room key door to lonely freezor
|
||||
PairedDoor('Eastern Courtyard N', 'Eastern Darkness S'),
|
||||
# PairedDoor('', ''), # mire fishbone key door
|
||||
# PairedDoor('', ''), # mire big key door to bridges
|
||||
PairedDoor('Mire Fishbone SE', 'Mire Spike Barrier NE'), # mire fishbone key door
|
||||
PairedDoor('Mire BK Door Room N', 'Mire Left Bridge S'), # mire big key door to bridges
|
||||
PairedDoor('Eastern Big Key NE', 'Eastern Hint Tile Blocked Path SE'),
|
||||
# PairedDoor('', ''), # TR somaria hub to pokey
|
||||
PairedDoor('Eastern Dark Square Key Door WN', 'Eastern Cannonball Ledge Key Door EN'),
|
||||
PairedDoor('Thieves Rail Ledge NW', 'Thieves Pot Alcove Bottom SW'), # TT random bomb to pots
|
||||
PairedDoor('Thieves BK Corner NE', 'Thieves Hallway SE'), # TT big key door
|
||||
PairedDoor('Ice Switch Room ES', 'Ice Refill WS'), # Ice last key door to crystal switch
|
||||
# PairedDoor('', ''), # mire hub key door to attic
|
||||
# PairedDoor('', ''), # mire hub key door to map
|
||||
PairedDoor('Mire Hub WS', 'Mire Conveyor Crystal ES'), # mire hub key door to attic
|
||||
PairedDoor('Mire Hub Right EN', 'Mire Map Spot WN'), # mire hub key door to map
|
||||
# PairedDoor('', ''), # tr last key door to switch maze
|
||||
PairedDoor('Thieves Ambush E', 'Thieves Rail Ledge W') # TT dashable above
|
||||
]
|
||||
|
||||
21
Dungeons.py
21
Dungeons.py
@@ -24,7 +24,7 @@ def create_dungeons(world, player):
|
||||
SW = make_dungeon('Skull Woods', 'Mothula', skull_regions, ItemFactory('Big Key (Skull Woods)', player), ItemFactory(['Small Key (Skull Woods)'] * 2, player), ItemFactory(['Map (Skull Woods)', 'Compass (Skull Woods)'], player))
|
||||
SP = make_dungeon('Swamp Palace', 'Arrghus', swamp_regions, ItemFactory('Big Key (Swamp Palace)', player), [ItemFactory('Small Key (Swamp Palace)', player)], ItemFactory(['Map (Swamp Palace)', 'Compass (Swamp Palace)'], player))
|
||||
IP = make_dungeon('Ice Palace', 'Kholdstare', ice_regions, ItemFactory('Big Key (Ice Palace)', player), ItemFactory(['Small Key (Ice Palace)'] * 2, player), ItemFactory(['Map (Ice Palace)', 'Compass (Ice Palace)'], player))
|
||||
MM = make_dungeon('Misery Mire', 'Vitreous', ['Misery Mire (Entrance)', 'Misery Mire (Main)', 'Misery Mire (West)', 'Misery Mire (Final Area)', 'Misery Mire (Vitreous)'], ItemFactory('Big Key (Misery Mire)', player), ItemFactory(['Small Key (Misery Mire)'] * 3, player), ItemFactory(['Map (Misery Mire)', 'Compass (Misery Mire)'], player))
|
||||
MM = make_dungeon('Misery Mire', 'Vitreous', mire_regions, ItemFactory('Big Key (Misery Mire)', player), ItemFactory(['Small Key (Misery Mire)'] * 3, player), ItemFactory(['Map (Misery Mire)', 'Compass (Misery Mire)'], player))
|
||||
TR = make_dungeon('Turtle Rock', 'Trinexx', ['Turtle Rock (Entrance)', 'Turtle Rock (First Section)', 'Turtle Rock (Chain Chomp Room)', 'Turtle Rock (Second Section)', 'Turtle Rock (Big Chest)', 'Turtle Rock (Crystaroller Room)', 'Turtle Rock (Dark Room)', 'Turtle Rock (Eye Bridge)', 'Turtle Rock (Trinexx)'], ItemFactory('Big Key (Turtle Rock)', player), ItemFactory(['Small Key (Turtle Rock)'] * 4, player), ItemFactory(['Map (Turtle Rock)', 'Compass (Turtle Rock)'], player))
|
||||
|
||||
if world.mode != 'inverted':
|
||||
@@ -256,6 +256,19 @@ ice_regions = [
|
||||
'Ice Backwards Room', 'Ice Anti-Fairy', 'Ice Switch Room', 'Ice Refill', 'Ice Fairy', 'Ice Antechamber', 'Ice Boss'
|
||||
]
|
||||
|
||||
mire_regions = [
|
||||
'Mire Lobby', 'Mire Post-Gap', 'Mire 2', 'Mire Hub', 'Mire Hub Right', 'Mire Hub Top', 'Mire Lone Shooter',
|
||||
'Mire Failure Bridge', 'Mire Falling Bridge', 'Mire Map Spike Side', 'Mire Map Spot', 'Mire Crystal Dead End',
|
||||
'Mire Hidden Shooters', 'Mire Cross', 'Mire Minibridge', 'Mire BK Door Room', 'Mire Spikes', 'Mire Ledgehop',
|
||||
'Mire Bent Bridge', 'Mire Over Bridge', 'Mire Right Bridge', 'Mire Left Bridge', 'Mire Fishbone', 'Mire South Fish',
|
||||
'Mire Spike Barrier', 'Mire Square Rail', 'Mire Lone Warp', 'Mire Wizzrobe Bypass', 'Mire Conveyor Crystal',
|
||||
'Mire Tile Room', 'Mire Compass Room', 'Mire Compass Chest', 'Mire Neglected Room', 'Mire Chest View',
|
||||
'Mire Conveyor Barrier', 'Mire BK Chest Ledge', 'Mire Warping Pool', 'Mire Torches Top', 'Mire Torches Bottom',
|
||||
'Mire Attic Hint', 'Mire Dark Shooters', 'Mire Key Rupees', 'Mire Block X', 'Mire Tall Dark and Roomy',
|
||||
'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'
|
||||
]
|
||||
|
||||
dungeon_regions = {
|
||||
'Hyrule Castle': hyrule_castle_regions,
|
||||
'Eastern Palace': eastern_regions,
|
||||
@@ -267,7 +280,7 @@ dungeon_regions = {
|
||||
'Skull Woods': skull_regions,
|
||||
'Thieves Town': thieves_regions,
|
||||
'Ice Palace': ice_regions,
|
||||
# 'Mire':
|
||||
'Misery Mire': mire_regions,
|
||||
# 'TR':
|
||||
# 'GT':
|
||||
}
|
||||
@@ -284,7 +297,7 @@ region_starts = {
|
||||
'Skull Pinball', 'Skull Left Drop', 'Skull Back Drop'],
|
||||
'Thieves Town': ['Thieves Lobby'],
|
||||
'Ice Palace': ['Ice Lobby'],
|
||||
# ['Mire Lobby'],
|
||||
'Misery Mire': ['Mire Lobby'],
|
||||
# ['TR Main Lobby', 'TR Eye Trap', 'TR Big Chest', 'TR Laser Bridge'],
|
||||
# ['GT Lobby']
|
||||
}
|
||||
@@ -312,6 +325,7 @@ dungeon_keys = {
|
||||
'Skull Woods': 'Small Key (Skull Woods)',
|
||||
'Thieves Town': 'Small Key (Thieves Town)',
|
||||
'Ice Palace': 'Small Key (Ice Palace)',
|
||||
'Misery Mire': 'Small Key (Misery Mire)',
|
||||
}
|
||||
|
||||
dungeon_bigs = {
|
||||
@@ -325,5 +339,6 @@ dungeon_bigs = {
|
||||
'Skull Woods': 'Big Key (Skull Woods)',
|
||||
'Thieves Town': 'Big Key (Thieves Town)',
|
||||
'Ice Palace': 'Big Key (Ice Palace)',
|
||||
'Misery Mire': 'Big Key (Misery Mire)',
|
||||
}
|
||||
|
||||
|
||||
@@ -2947,10 +2947,6 @@ mandatory_connections = [('Lake Hylia Central Island Pier', 'Lake Hylia Central
|
||||
('Cave 45 Mirror Spot', 'Cave 45 Ledge'),
|
||||
('Graveyard Ledge Mirror Spot', 'Graveyard Ledge'),
|
||||
|
||||
('Misery Mire Entrance Gap', 'Misery Mire (Main)'),
|
||||
('Misery Mire (West)', 'Misery Mire (West)'),
|
||||
('Misery Mire Big Key Door', 'Misery Mire (Final Area)'),
|
||||
('Misery Mire (Vitreous)', 'Misery Mire (Vitreous)'),
|
||||
('Turtle Rock Entrance Gap', 'Turtle Rock (First Section)'),
|
||||
('Turtle Rock Entrance Gap Reverse', 'Turtle Rock (Entrance)'),
|
||||
('Turtle Rock Pokey Room', 'Turtle Rock (Chain Chomp Room)'),
|
||||
@@ -3514,7 +3510,7 @@ default_dungeon_connections = [('Desert Palace Entrance (South)', 'Desert Main L
|
||||
('Skull Woods Final Section Exit', 'Skull Woods Forest (West)'),
|
||||
('Ice Palace', 'Ice Lobby'),
|
||||
('Ice Palace Exit', 'Dark Lake Hylia Central Island'),
|
||||
('Misery Mire', 'Misery Mire (Entrance)'),
|
||||
('Misery Mire', 'Mire Lobby'),
|
||||
('Misery Mire Exit', 'Dark Desert'),
|
||||
('Palace of Darkness', 'PoD Lobby'),
|
||||
('Palace of Darkness Exit', 'East Dark World'),
|
||||
|
||||
63
Regions.py
63
Regions.py
@@ -193,12 +193,6 @@ def create_regions(world, player):
|
||||
create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave']),
|
||||
create_cave_region(player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']),
|
||||
|
||||
create_dungeon_region(player, 'Misery Mire (Entrance)', 'Misery Mire', None, ['Misery Mire Entrance Gap', 'Misery Mire Exit']),
|
||||
create_dungeon_region(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(player, 'Misery Mire (West)', 'Misery Mire', ['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
|
||||
create_dungeon_region(player, 'Misery Mire (Final Area)', 'Misery Mire', None, ['Misery Mire (Vitreous)']),
|
||||
create_dungeon_region(player, 'Misery Mire (Vitreous)', 'Misery Mire', ['Misery Mire - Boss', 'Misery Mire - Prize']),
|
||||
create_dungeon_region(player, 'Turtle Rock (Entrance)', 'Turtle Rock', None, ['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
|
||||
create_dungeon_region(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']),
|
||||
@@ -563,6 +557,60 @@ def create_regions(world, player):
|
||||
create_dungeon_region(player, 'Ice Boss', 'Ice Palace', ['Ice Palace - Boss', 'Ice Palace - Prize']),
|
||||
|
||||
# mire
|
||||
create_dungeon_region(player, 'Mire Lobby', 'Misery Mire', None, ['Misery Mire Exit', 'Mire Lobby Gap']),
|
||||
create_dungeon_region(player, 'Mire Post-Gap', 'Misery Mire', None, ['Mire Post-Gap Gap', 'Mire Post-Gap Down Stairs']),
|
||||
create_dungeon_region(player, 'Mire 2', 'Misery Mire', None, ['Mire 2 Up Stairs', 'Mire 2 NE']),
|
||||
create_dungeon_region(player, 'Mire Hub', 'Misery Mire', None, ['Mire Hub SE', 'Mire Hub ES', 'Mire Hub E', 'Mire Hub NE', 'Mire Hub WN', 'Mire Hub WS', 'Mire Hub Upper Blue Barrier', 'Mire Hub Lower Blue Barrier']),
|
||||
create_dungeon_region(player, 'Mire Hub Right', 'Misery Mire', None, ['Mire Hub Right EN', 'Mire Hub Right Blue Barrier']),
|
||||
create_dungeon_region(player, 'Mire Hub Top', 'Misery Mire', ['Misery Mire - Main Lobby'], ['Mire Hub Top NW', 'Mire Hub Top Blue Barrier']),
|
||||
create_dungeon_region(player, 'Mire Lone Shooter', 'Misery Mire', None, ['Mire Lone Shooter WS', 'Mire Lone Shooter ES']),
|
||||
create_dungeon_region(player, 'Mire Failure Bridge', 'Misery Mire', None, ['Mire Failure Bridge W', 'Mire Failure Bridge E']),
|
||||
create_dungeon_region(player, 'Mire Falling Bridge', 'Misery Mire', ['Misery Mire - Big Chest'], ['Mire Falling Bridge WS', 'Mire Falling Bridge W', 'Mire Falling Bridge WN']),
|
||||
create_dungeon_region(player, 'Mire Map Spike Side', 'Misery Mire', None, ['Mire Map Spike Side EN', 'Mire Map Spike Side Drop Down', 'Mire Map Spike Side Blue Barrier']),
|
||||
create_dungeon_region(player, 'Mire Map Spot', 'Misery Mire', ['Misery Mire - Map Chest'], ['Mire Map Spot WN', 'Mire Map Spot Blue Barrier']),
|
||||
create_dungeon_region(player, 'Mire Crystal Dead End', 'Misery Mire', None, ['Mire Crystal Dead End Left Barrier', 'Mire Crystal Dead End Right Barrier', 'Mire Crystal Dead End NE']),
|
||||
create_dungeon_region(player, 'Mire Hidden Shooters', 'Misery Mire', None, ['Mire Hidden Shooters SE', 'Mire Hidden Shooters WS', 'Mire Hidden Shooters ES', 'Mire Hidden Shooters NE']),
|
||||
create_dungeon_region(player, 'Mire Cross', 'Misery Mire', None, ['Mire Cross ES', 'Mire Cross SW']),
|
||||
create_dungeon_region(player, 'Mire Minibridge', 'Misery Mire', None, ['Mire Minibridge SE', 'Mire Minibridge NE']),
|
||||
create_dungeon_region(player, 'Mire BK Door Room', 'Misery Mire', None, ['Mire BK Door Room EN', 'Mire BK Door Room N']),
|
||||
create_dungeon_region(player, 'Mire Spikes', 'Misery Mire', ['Misery Mire - Spike Chest', 'Misery Mire - Spikes Pot Key'], ['Mire Spikes WS', 'Mire Spikes SW', 'Mire Spikes NW']),
|
||||
create_dungeon_region(player, 'Mire Ledgehop', 'Misery Mire', None, ['Mire Ledgehop SW', 'Mire Ledgehop WN', 'Mire Ledgehop NW']),
|
||||
create_dungeon_region(player, 'Mire Bent Bridge', 'Misery Mire', None, ['Mire Bent Bridge SW', 'Mire Bent Bridge W']),
|
||||
create_dungeon_region(player, 'Mire Over Bridge', 'Misery Mire', None, ['Mire Over Bridge E', 'Mire Over Bridge W']),
|
||||
create_dungeon_region(player, 'Mire Right Bridge', 'Misery Mire', ['Misery Mire - Bridge Chest'], ['Mire Right Bridge SE']),
|
||||
create_dungeon_region(player, 'Mire Left Bridge', 'Misery Mire', None, ['Mire Left Bridge S', 'Mire Left Bridge Down Stairs', 'Mire Left Bridge Hook Path']),
|
||||
create_dungeon_region(player, 'Mire Fishbone', 'Misery Mire', ['Misery Mire - Fishbone Pot Key'], ['Mire Fishbone E', 'Mire Fishbone Blue Barrier']),
|
||||
create_dungeon_region(player, 'Mire South Fish', 'Misery Mire', None, ['Mire South Fish Blue Barrier', 'Mire Fishbone SE']),
|
||||
create_dungeon_region(player, 'Mire Spike Barrier', 'Misery Mire', None, ['Mire Spike Barrier NE', 'Mire Spike Barrier SE', 'Mire Spike Barrier ES']),
|
||||
create_dungeon_region(player, 'Mire Square Rail', 'Misery Mire', None, ['Mire Square Rail WS', 'Mire Square Rail NW']),
|
||||
create_dungeon_region(player, 'Mire Lone Warp', 'Misery Mire', None, ['Mire Lone Warp SW', 'Mire Lone Warp Warp']),
|
||||
create_dungeon_region(player, 'Mire Wizzrobe Bypass', 'Misery Mire', None, ['Mire Wizzrobe Bypass WN', 'Mire Wizzrobe Bypass EN', 'Mire Wizzrobe Bypass NE']),
|
||||
create_dungeon_region(player, 'Mire Conveyor Crystal', 'Misery Mire', ['Misery Mire - Conveyor Crystal Key Drop'], ['Mire Conveyor Crystal WS', 'Mire Conveyor Crystal ES', 'Mire Conveyor Crystal SE']),
|
||||
create_dungeon_region(player, 'Mire Tile Room', 'Misery Mire', None, ['Mire Tile Room ES', 'Mire Tile Room NW', 'Mire Tile Room SW']),
|
||||
create_dungeon_region(player, 'Mire Compass Room', 'Misery Mire', None, ['Mire Compass Room SW', 'Mire Compass Room EN', 'Mire Compass Blue Barrier']),
|
||||
create_dungeon_region(player, 'Mire Compass Chest', 'Misery Mire', ['Misery Mire - Compass Chest'], ['Mire Compass Chest Exit']),
|
||||
create_dungeon_region(player, 'Mire Neglected Room', 'Misery Mire', None, ['Mire Neglected Room SE', 'Mire Neglected Room NE']),
|
||||
create_dungeon_region(player, 'Mire Chest View', 'Misery Mire', None, ['Mire Chest View NE']),
|
||||
create_dungeon_region(player, 'Mire Conveyor Barrier', 'Misery Mire', None, ['Mire Conveyor Barrier NW', 'Mire Conveyor Barrier Up Stairs']),
|
||||
create_dungeon_region(player, 'Mire BK Chest Ledge', 'Misery Mire', ['Misery Mire - Big Key Chest'], ['Mire BK Chest Ledge WS']),
|
||||
create_dungeon_region(player, 'Mire Warping Pool', 'Misery Mire', None, ['Mire Warping Pool ES', 'Mire Warping Pool Warp']),
|
||||
create_dungeon_region(player, 'Mire Torches Top', 'Misery Mire', None, ['Mire Torches Top Down Stairs', 'Mire Torches Top SW']),
|
||||
create_dungeon_region(player, 'Mire Torches Bottom', 'Misery Mire', None, ['Mire Torches Bottom NW', 'Mire Torches Bottom WS']),
|
||||
create_dungeon_region(player, 'Mire Attic Hint', 'Misery Mire', None, ['Mire Attic Hint ES', 'Mire Attic Hint Hole']),
|
||||
create_dungeon_region(player, 'Mire Dark Shooters', 'Misery Mire', None, ['Mire Dark Shooters Up Stairs', 'Mire Dark Shooters SW', 'Mire Dark Shooters SE']),
|
||||
create_dungeon_region(player, 'Mire Key Rupees', 'Misery Mire', None, ['Mire Key Rupees NE']),
|
||||
create_dungeon_region(player, 'Mire Block X', 'Misery Mire', None, ['Mire Block X NW', 'Mire Block X WS']),
|
||||
create_dungeon_region(player, 'Mire Tall Dark and Roomy', 'Misery Mire', None, ['Mire Tall Dark and Roomy ES', 'Mire Tall Dark and Roomy WS', 'Mire Tall Dark and Roomy WN']),
|
||||
create_dungeon_region(player, 'Mire Crystal Right', 'Misery Mire', None, ['Mire Crystal Right ES', 'Mire Crystal Right Orange Barrier']),
|
||||
create_dungeon_region(player, 'Mire Crystal Mid', 'Misery Mire', None, ['Mire Crystal Mid Orange Barrier', 'Mire Crystal Mid Blue Barrier', 'Mire Crystal Mid NW']),
|
||||
create_dungeon_region(player, 'Mire Crystal Left', 'Misery Mire', None, ['Mire Crystal Left Blue Barrier', 'Mire Crystal Left WS']),
|
||||
create_dungeon_region(player, 'Mire Crystal Top', 'Misery Mire', None, ['Mire Crystal Top SW']),
|
||||
create_dungeon_region(player, 'Mire Shooter Rupees', 'Misery Mire', None, ['Mire Shooter Rupees EN']),
|
||||
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']),
|
||||
|
||||
# tr
|
||||
# gt
|
||||
]
|
||||
@@ -699,6 +747,9 @@ key_only_locations = {
|
||||
'Ice Palace - Conveyor Key Drop': 'Small Key (Ice Palace)',
|
||||
'Ice Palace - Hammer Block Key Drop': 'Small Key (Ice Palace)',
|
||||
'Ice Palace - Many Pots Pot Key': 'Small Key (Ice Palace)',
|
||||
'Misery Mire - Spikes Pot Key': 'Small Key (Misery Mire)',
|
||||
'Misery Mire - Fishbone Pot Key': 'Small Key (Misery Mire)',
|
||||
'Misery Mire - Conveyor Crystal Key Drop': 'Small Key (Misery Mire)',
|
||||
}
|
||||
|
||||
dungeon_events = [
|
||||
|
||||
2
Rom.py
2
Rom.py
@@ -18,7 +18,7 @@ from EntranceShuffle import door_addresses
|
||||
|
||||
|
||||
JAP10HASH = '03a63945398191337e896e5771f77173'
|
||||
RANDOMIZERBASEHASH = 'c6f57f505c5b96642ba6ffe5ed9b94df'
|
||||
RANDOMIZERBASEHASH = 'd5905bee86bf7c2c4964a61fdff057e9'
|
||||
|
||||
|
||||
class JsonRom(object):
|
||||
|
||||
60
Rules.py
60
Rules.py
@@ -1,8 +1,6 @@
|
||||
import collections
|
||||
from collections import defaultdict
|
||||
import logging
|
||||
from BaseClasses import CollectionState, DoorType
|
||||
from DungeonGenerator import ExplorationState
|
||||
from BaseClasses import CollectionState
|
||||
from Regions import key_only_locations
|
||||
|
||||
|
||||
@@ -387,34 +385,29 @@ def global_rules(world, 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_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))
|
||||
set_rule(world.get_entrance('Mire Falling Bridge WN', player), lambda state: state.has_Boots(player) or state.has('Hookshot', player)) # this is due to the fact the the door opposite is blocked
|
||||
set_rule(world.get_entrance('Mire 2 NE', player), lambda state: state.has_sword(player) or state.has('Fire Rod', player) or state.has('Ice Rod', player) or state.has('Hammer', player) or state.has('Cane of Somaria', player) or state.can_shoot_arrows(player)) # need to defeat wizzrobes, bombs don't work ...
|
||||
set_rule(world.get_location('Misery Mire - Big Chest', player), lambda state: state.has('Big Key (Misery Mire)', player) and (state.has_Boots(player) or state.has('Hookshot', player)))
|
||||
if world.accessibility == 'locations':
|
||||
forbid_item(world.get_location('Misery Mire - Big Chest', player), 'Big Key (Misery Mire)', player)
|
||||
set_rule(world.get_location('Misery Mire - Spike Chest', player), lambda state: (state.world.can_take_damage and state.has_hearts(player, 4)) or state.has('Cane of Byrna', player) or state.has('Cape', player))
|
||||
set_rule(world.get_entrance('Mire BK Door Room N', player), lambda state: state.has('Big Key (Misery Mire)', player))
|
||||
set_rule(world.get_entrance('Mire Square Rail NW', player), lambda state: state.has('Big Key (Misery Mire)', player))
|
||||
set_rule(world.get_entrance('Mire Antechamber NW', player), lambda state: state.has('Big Key (Misery Mire)', player))
|
||||
set_rule(world.get_entrance('Mire Left Bridge Hook Path', player), lambda state: state.has('Hookshot', player))
|
||||
set_rule(world.get_entrance('Mire Tile Room NW', player), lambda state: state.has_fire_source(player))
|
||||
set_rule(world.get_entrance('Mire Attic Hint Hole', player), lambda state: state.has_fire_source(player))
|
||||
set_rule(world.get_entrance('Mire Dark Shooters SW', 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))
|
||||
|
||||
add_key_logic_rules(world, player) # todo - vanilla shuffle rules
|
||||
# End of door rando rules.
|
||||
|
||||
add_rule(world.get_location('Sunken Treasure', player), lambda state: state.has('Open Floodgate', player))
|
||||
|
||||
for location in ['Ice Palace - Big Chest', 'Ice Palace - Boss']:
|
||||
forbid_item(world.get_location(location, player), 'Big Key (Ice Palace)', player)
|
||||
|
||||
set_rule(world.get_entrance('Misery Mire Entrance Gap', player), lambda state: (state.has_Boots(player) or state.has('Hookshot', player)) and (state.has_sword(player) or state.has('Fire Rod', player) or state.has('Ice Rod', player) or state.has('Hammer', player) or state.has('Cane of Somaria', player) or state.can_shoot_arrows(player))) # need to defeat wizzrobes, bombs don't work ...
|
||||
set_rule(world.get_location('Misery Mire - Big Chest', player), lambda state: state.has('Big Key (Misery Mire)', player))
|
||||
set_rule(world.get_location('Misery Mire - Spike Chest', player), lambda state: (state.world.can_take_damage and state.has_hearts(player, 4)) or state.has('Cane of Byrna', player) or state.has('Cape', player))
|
||||
set_rule(world.get_entrance('Misery Mire Big Key Door', player), lambda state: state.has('Big Key (Misery Mire)', player))
|
||||
# you can squander the free small key from the pot by opening the south door to the north west switch room, locking you out of accessing a color switch ...
|
||||
# big key gives backdoor access to that from the teleporter in the north west
|
||||
set_rule(world.get_location('Misery Mire - Map Chest', player), lambda state: state.has_key('Small Key (Misery Mire)', player, 1) or state.has('Big Key (Misery Mire)', player))
|
||||
# in addition, you can open the door to the map room before getting access to a color switch, so this is locked behing 2 small keys or the big key...
|
||||
set_rule(world.get_location('Misery Mire - Main Lobby', player), lambda state: state.has_key('Small Key (Misery Mire)', player, 2) or state.has_key('Big Key (Misery Mire)', player))
|
||||
# we can place a small key in the West wing iff it also contains/blocks the Big Key, as we cannot reach and softlock with the basement key door yet
|
||||
set_rule(world.get_entrance('Misery Mire (West)', player), lambda state: state.has_key('Small Key (Misery Mire)', player, 2) if ((item_name(state, 'Misery Mire - Compass Chest', player) in [('Big Key (Misery Mire)', player)]) or
|
||||
(item_name(state, 'Misery Mire - Big Key Chest', player) in [('Big Key (Misery Mire)', player)])) else state.has_key('Small Key (Misery Mire)', player, 3))
|
||||
set_rule(world.get_location('Misery Mire - Compass Chest', player), lambda state: state.has_fire_source(player))
|
||||
set_rule(world.get_location('Misery Mire - Big Key Chest', player), lambda state: state.has_fire_source(player))
|
||||
set_rule(world.get_entrance('Misery Mire (Vitreous)', 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))
|
||||
for location in ['Misery Mire - Big Chest', 'Misery Mire - Boss']:
|
||||
forbid_item(world.get_location(location, player), 'Big Key (Misery Mire)', player)
|
||||
|
||||
set_rule(world.get_entrance('Turtle Rock Entrance Gap', player), lambda state: state.has('Cane of Somaria', player))
|
||||
set_rule(world.get_entrance('Turtle Rock Entrance Gap Reverse', player), lambda state: state.has('Cane of Somaria', player))
|
||||
set_rule(world.get_location('Turtle Rock - Compass Chest', player), lambda state: state.has('Cane of Somaria', player)) # We could get here from the middle section without Cane as we don't cross the entrance gap!
|
||||
@@ -927,10 +920,23 @@ def no_glitches_rules(world, player):
|
||||
if (not world.dark_world_light_cone and check_is_dark_world(world.get_region(region, player))) or (not world.light_world_light_cone and not check_is_dark_world(world.get_region(region, player))):
|
||||
add_lamp_requirement(spot, player)
|
||||
|
||||
add_conditional_lamp('Misery Mire (Vitreous)', 'Misery Mire (Entrance)', 'Entrance')
|
||||
add_conditional_lamp('Turtle Rock (Dark Room) (North)', 'Turtle Rock (Entrance)', 'Entrance')
|
||||
add_conditional_lamp('Turtle Rock (Dark Room) (South)', 'Turtle Rock (Entrance)', 'Entrance')
|
||||
|
||||
add_conditional_lamp('Mire Dark Shooters Up Stairs', 'Mire Dark Shooters', 'Entrance')
|
||||
add_conditional_lamp('Mire Dark Shooters SW', 'Mire Dark Shooters', 'Entrance')
|
||||
add_conditional_lamp('Mire Dark Shooters SE', 'Mire Dark Shooters', 'Entrance')
|
||||
add_conditional_lamp('Mire Key Rupees NE', 'Mire Key Rupees', 'Entrance')
|
||||
add_conditional_lamp('Mire Block X NW', 'Mire Block X', 'Entrance')
|
||||
add_conditional_lamp('Mire Block X WS', 'Mire Block X', 'Entrance')
|
||||
add_conditional_lamp('Mire Tall Dark and Roomy ES', 'Mire Tall Dark and Roomy', 'Entrance')
|
||||
add_conditional_lamp('Mire Tall Dark and Roomy WS', 'Mire Tall Dark and Roomy', 'Entrance')
|
||||
add_conditional_lamp('Mire Tall Dark and Roomy WN', 'Mire Tall Dark and Roomy', 'Entrance')
|
||||
add_conditional_lamp('Mire Crystal Right ES', 'Mire Crystal Right', 'Entrance')
|
||||
add_conditional_lamp('Mire Crystal Mid NW', 'Mire Crystal Mid', 'Entrance')
|
||||
add_conditional_lamp('Mire Crystal Left WS', 'Mire Crystal Left', 'Entrance')
|
||||
add_conditional_lamp('Mire Crystal Top SW', 'Mire Crystal Top', 'Entrance')
|
||||
add_conditional_lamp('Mire Shooter Rupees EN', 'Mire Shooter Rupees', 'Entrance')
|
||||
add_conditional_lamp('PoD Dark Alley NE', 'PoD Dark Alley', 'Entrance')
|
||||
add_conditional_lamp('PoD Callback WS', 'PoD Callback', 'Entrance')
|
||||
add_conditional_lamp('PoD Callback Warp', 'PoD Callback', 'Entrance')
|
||||
|
||||
@@ -7,7 +7,6 @@ RecordStairType: {
|
||||
|
||||
SpiralWarp: {
|
||||
lda $040c : cmp.b #$ff : beq .abort ; abort if not in dungeon
|
||||
cmp #$0e : beq .abort ; mire is not okay
|
||||
cmp #$18 : bcs .abort ; abort if not supported yet -- todo: this needs to be altered/removed as more dungeons are implemented
|
||||
.check
|
||||
lda $045e : cmp #$5e : beq .gtg ; abort if not spiral - intended room is in A!
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user