Skip to content

Commit 276037b

Browse files
Slip Glide Ride rework; also caught some errors with Northern Cave connections
1 parent 04fe397 commit 276037b

4 files changed

Lines changed: 32 additions & 21 deletions

File tree

worlds/crystal_project/constants/ap_regions.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,10 @@
285285
#Slip Glide Ride start
286286
SLIP_GLIDE_RIDE_ENTRANCE_AP_REGION = "Slip Glide Ride Entrance"
287287
SLIP_GLIDE_RIDE_ENTRANCE_AP_REGION_TELEPORT_LOCATION = "119,182,-520"
288-
SLIP_GLIDE_RIDE_AP_REGION = "Slip Glide Ride"
288+
SLIP_GLIDE_RIDE_ROOM_ONE_AP_REGION = "Slip Glide Ride 1st Room"
289+
SLIP_GLIDE_RIDE_ROOM_TWO_AP_REGION = "Slip Glide Ride Through the Locked Red Door"
290+
SLIP_GLIDE_RIDE_ROOM_THREE_AP_REGION = "Slip Gide Ride Through the 2nd Locked Red Door"
291+
RED_GUARDIAN_AP_REGION = "Red Guardian's Icy Chamber Above the Tar"
289292
#Slip Glide Ride end
290293
SEQUOIA_ATHENAEUM_AP_REGION = "Sequoia Athenaeum"
291294
SEQUOIA_ATHENAEUM_AP_REGION_TELEPORT_LOCATION = "415,196,-546"

worlds/crystal_project/constants/display_regions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
LANDS_END_DISPLAY_NAME = "Land's End"
9797
LANDS_END_DISPLAY_SUBREGIONS = [LANDS_END_AP_REGION, LANDS_END_NORTHERN_PEAK_AP_REGION, OWL_TREE_AP_REGION]
9898
SLIP_GLIDE_RIDE_DISPLAY_NAME = "Slip Glide Ride"
99-
SLIP_GLIDE_RIDE_DISPLAY_SUBREGIONS = [SLIP_GLIDE_RIDE_ENTRANCE_AP_REGION, SLIP_GLIDE_RIDE_AP_REGION]
99+
SLIP_GLIDE_RIDE_DISPLAY_SUBREGIONS = [SLIP_GLIDE_RIDE_ENTRANCE_AP_REGION, SLIP_GLIDE_RIDE_ROOM_ONE_AP_REGION, SLIP_GLIDE_RIDE_ROOM_TWO_AP_REGION, SLIP_GLIDE_RIDE_ROOM_THREE_AP_REGION, RED_GUARDIAN_AP_REGION]
100100
SEQUOIA_ATHENAEUM_DISPLAY_NAME = "Sequoia Athenaeum"
101101
SEQUOIA_ATHENAEUM_DISPLAY_SUBREGIONS = [SEQUOIA_ATHENAEUM_AP_REGION]
102102
NORTHERN_STRETCH_DISPLAY_NAME = "Northern Stretch"

worlds/crystal_project/locations.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,14 +1129,16 @@ def get_treasure_and_npc_locations(player: int, options: CrystalProjectOptions |
11291129
LocationData(OWL_TREE_AP_REGION, LANDS_END_DISPLAY_NAME + " NPC - Owl Drum", 1176 + npc_index_offset),
11301130

11311131
#Slip Glide Ride
1132-
#Treasure chests
1133-
LocationData(SLIP_GLIDE_RIDE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Back out to 1st room", 2554 + treasure_index_offset, lambda state: logic.has_key(state, RED_DOOR_KEY)), #Money chest
1134-
LocationData(SLIP_GLIDE_RIDE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Climb up and fall down", 1172 + treasure_index_offset), #Plate of Lion chest
1135-
LocationData(SLIP_GLIDE_RIDE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Sparks and tar", 1298 + treasure_index_offset), #Red Door Key chest
1136-
LocationData(SLIP_GLIDE_RIDE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - To the left through 2nd red lock", 1698 + treasure_index_offset, lambda state: logic.has_key(state, RED_DOOR_KEY, 2)), #Red Door Key chest
1137-
LocationData(SLIP_GLIDE_RIDE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Through 1st red lock", 1716 + treasure_index_offset, lambda state: logic.has_key(state, RED_DOOR_KEY)), #Red Door Key chest
1138-
LocationData(SLIP_GLIDE_RIDE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Past the mean Ibek jump", 1282 + treasure_index_offset, lambda state: logic.has_key(state, RED_DOOR_KEY)), #Sages Walker chest
1139-
LocationData(SLIP_GLIDE_RIDE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Nickelodeon slime time :)", 1269 + treasure_index_offset), #Seekers Garb chest
1132+
#1st Room
1133+
LocationData(SLIP_GLIDE_RIDE_ROOM_ONE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Nickelodeon slime time :)", 1269 + treasure_index_offset, lambda state: logic.has_glide(state)), #Seekers Garb chest
1134+
LocationData(SLIP_GLIDE_RIDE_ROOM_ONE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Sparks and tar", 1298 + treasure_index_offset, lambda state: logic.has_vertical_movement(state) or logic.has_glide(state)), #Red Door Key chest
1135+
LocationData(SLIP_GLIDE_RIDE_ROOM_ONE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Climb up and fall down", 1172 + treasure_index_offset, lambda state: logic.has_vertical_movement(state) and logic.has_glide(state)), #Plate of Lion chest
1136+
#2nd Room
1137+
LocationData(SLIP_GLIDE_RIDE_ROOM_TWO_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Through 1st red lock", 1716 + treasure_index_offset), #Red Door Key chest
1138+
LocationData(SLIP_GLIDE_RIDE_ROOM_TWO_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Back out to 1st room", 2554 + treasure_index_offset), #Money chest
1139+
LocationData(SLIP_GLIDE_RIDE_ROOM_TWO_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - Past the mean Ibek jump", 1282 + treasure_index_offset, lambda state: logic.has_vertical_movement(state)), #Sages Walker chest
1140+
#3rd Room
1141+
LocationData(SLIP_GLIDE_RIDE_ROOM_THREE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Chest - To the left through 2nd red lock", 1698 + treasure_index_offset, lambda state: logic.has_glide(state)), #Red Door Key chest
11401142

11411143
#Sequoia Athenaeum
11421144
#Treasure chests
@@ -1444,7 +1446,7 @@ def get_crystal_locations(player: int, options: CrystalProjectOptions | None) ->
14441446
# Can just swim or defeat the Undercity Masters; Blade Master: Ibek or Owl, Shadow Master: Horizontal or Fish, Duel Master: Ibek or Owl; to defeat all masters, you either need both ibek + quintar, owl, or fish
14451447
LocationData(THE_UNDERCITY_HOMEPOINT_AND_BLADE_MASTER_AP_REGION, THE_UNDERCITY_DISPLAY_NAME + ASSASSIN_JOB_CRYSTAL_LOCATION, 1204 + crystal_index_offset, lambda state: (logic.has_horizontal_movement(state) and logic.has_vertical_movement(state)) or logic.has_glide(state) or logic.has_swimming(state)),
14461448
LocationData(VOLCANO_PEAK_AP_REGION, BEAURIOR_VOLCANO_DISPLAY_NAME + VALKYRIE_JOB_CRYSTAL_LOCATION, 1086 + crystal_index_offset),
1447-
LocationData(SLIP_GLIDE_RIDE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + SUMMONER_JOB_CRYSTAL_LOCATION, 1714 + crystal_index_offset, lambda state: logic.has_key(state, RED_DOOR_KEY, 3)),
1449+
LocationData(RED_GUARDIAN_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + SUMMONER_JOB_CRYSTAL_LOCATION, 1714 + crystal_index_offset, lambda state: logic.has_glide(state)),
14481450
# (404, 243, -386)
14491451
LocationData(PEAK_RAMPARTS_AP_REGION, CASTLE_RAMPARTS_DISPLAY_NAME + BEASTMASTER_JOB_CRYSTAL_LOCATION, 1370 + crystal_index_offset, lambda state: logic.has_glide(state)),
14501452
LocationData(CHALICE_RIM_AP_REGION, THE_CHALICE_OF_TAR_DISPLAY_NAME + MIMIC_JOB_CRYSTAL_LOCATION, 3701 + crystal_index_offset, lambda state: logic.has_glide(state)),
@@ -1499,7 +1501,7 @@ def get_boss_locations(player: int, options: CrystalProjectOptions | None) -> Li
14991501
LocationData(EASTERN_CHASM_AP_REGION, EASTERN_CHASM_DISPLAY_NAME + " Boss - Undergrowth", 3476 + boss_index_offset, lambda state: logic.is_area_in_level_range(state, UNDERGROWTH_FIGHT_LEVEL)), #Monster ID: 293
15001502
LocationData(SEQUOIA_ATHENAEUM_ENTRANCE_AP_REGION, TALL_TALL_HEIGHTS_DISPLAY_NAME + " Boss - Hermetic", 3637 + boss_index_offset, lambda state: logic.is_area_in_level_range(state, HERMETIC_FIGHT_LEVEL)), #Monster ID: 309
15011503
LocationData(LANDS_END_AP_REGION, LANDS_END_DISPLAY_NAME + " Boss - The Owlbear", 2104 + boss_index_offset, lambda state: logic.is_area_in_level_range(state, OWLBEAR_FIGHT_LEVEL)), #Monster ID: 143
1502-
LocationData(SLIP_GLIDE_RIDE_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Boss - Red Guardian", 1713 + boss_index_offset, lambda state: logic.has_key(state, RED_DOOR_KEY, 3) and logic.is_area_in_level_range(state, RED_GUARDIAN_FIGHT_LEVEL)), #Monster ID: 224
1504+
LocationData(RED_GUARDIAN_AP_REGION, SLIP_GLIDE_RIDE_DISPLAY_NAME + " Boss - Red Guardian", 1713 + boss_index_offset, lambda state: logic.is_area_in_level_range(state, RED_GUARDIAN_FIGHT_LEVEL)), #Monster ID: 224
15031505
LocationData(PEAK_RAMPARTS_AP_REGION, CASTLE_RAMPARTS_DISPLAY_NAME + " Boss - Rampart Demon", 1373 + boss_index_offset, lambda state: logic.has_glide(state) and logic.is_area_in_level_range(state, RAMPART_DEMON_FIGHT_LEVEL)), #Monster ID: 222
15041506
LocationData(CONTINENTAL_TRAM_AP_REGION, CONTINENTAL_TRAM_DISPLAY_NAME + " Boss - Conscript", 1621 + boss_index_offset, lambda state: logic.is_area_in_level_range(state, CONSCRIPT_FIGHT_LEVEL)), #Monster ID: 242
15051507
LocationData(LABYRINTH_CORE_AP_REGION, ANCIENT_LABYRINTH_DISPLAY_NAME + " Boss - Anubis", 2473 + boss_index_offset, lambda state: logic.is_area_in_level_range(state, ANUBIS_FIGHT_LEVEL)), #Monster ID: 117

worlds/crystal_project/regions.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -934,14 +934,13 @@ def init_areas(world: "CrystalProjectWorld", locations: List[LocationData], opti
934934
CHALICE_FOOT_AP_REGION: lambda state: logic.has_glide(state)})
935935
#Tall, Tall Heights end
936936
#Northern Cave start
937-
fancy_add_exits(world, UPPER_NORTHERN_CAVE_AP_REGION, [SLIP_TO_CAVE_OR_SOUVENIRS_AP_REGION, SLIP_GLIDE_RIDE_AP_REGION],
938-
{SLIP_GLIDE_RIDE_AP_REGION: lambda state: logic.has_glide(state) and logic.has_vertical_movement(state),
939-
SLIP_TO_CAVE_OR_SOUVENIRS_AP_REGION: lambda state: logic.has_vertical_movement(state)})
937+
fancy_add_exits(world, UPPER_NORTHERN_CAVE_AP_REGION, [UPPER_ICE_LAKES_AP_REGION, SLIP_TO_CAVE_OR_SOUVENIRS_AP_REGION, MIDDLE_NORTHERN_CAVE_AP_REGION])
940938
fancy_add_exits(world, MIDDLE_NORTHERN_CAVE_AP_REGION, [ICE_CELL_AP_REGION, LOWER_NORTHERN_CAVE_AP_REGION])
941939
fancy_add_exits(world, ICE_CELL_AP_REGION, [LOWER_NORTHERN_CAVE_AP_REGION, SLIP_GLIDE_RIDE_ENTRANCE_AP_REGION],
942940
{LOWER_NORTHERN_CAVE_AP_REGION: lambda state: logic.has_key(state, ICE_CELL_KEY),
943-
SLIP_GLIDE_RIDE_ENTRANCE_AP_REGION: lambda state: logic.can_push_ice_block_and_goat(state, NORTHERN_CAVE_DISPLAY_NAME) or logic.has_glide(state)})
944-
fancy_add_exits(world, LOWER_NORTHERN_CAVE_AP_REGION, [ICE_CELL_AP_REGION, LOWER_ICE_LAKES_AP_REGION])
941+
SLIP_GLIDE_RIDE_ENTRANCE_AP_REGION: lambda state: logic.has_glide(state)})
942+
fancy_add_exits(world, LOWER_NORTHERN_CAVE_AP_REGION, [ICE_CELL_AP_REGION, LOWER_ICE_LAKES_AP_REGION],
943+
{ICE_CELL_AP_REGION: lambda state: logic.has_key(state, ICE_CELL_KEY)})
945944
#Northern Cave end
946945
#Land's End start
947946
fancy_add_exits(world, LANDS_END_AP_REGION, [LANDS_END_NORTHERN_PEAK_AP_REGION, OWL_TREE_AP_REGION, ATOP_FISH_HATCHERY_AP_REGION, HEART_TARN_AP_REGION, SOUTH_SALMON_RIVER_AP_REGION, ATOP_DAM_AP_REGION, LOWER_ICE_LAKES_AP_REGION, LANDS_END_COTTAGE_RIDGE_AP_REGION, THE_OPEN_SEA_AP_REGION, VOLCANO_PEAK_AP_REGION],
@@ -960,11 +959,18 @@ def init_areas(world: "CrystalProjectWorld", locations: List[LocationData], opti
960959
fancy_add_exits(world, OWL_TREE_AP_REGION, [LANDS_END_AP_REGION])
961960
#Land's End end
962961
#Slip Glide Ride start
963-
fancy_add_exits(world, SLIP_GLIDE_RIDE_ENTRANCE_AP_REGION, [ICE_CELL_AP_REGION, SLIP_GLIDE_RIDE_AP_REGION],
962+
fancy_add_exits(world, SLIP_GLIDE_RIDE_ENTRANCE_AP_REGION, [ICE_CELL_AP_REGION, SLIP_GLIDE_RIDE_ROOM_ONE_AP_REGION, SLIP_GLIDE_RIDE_ROOM_TWO_AP_REGION, SLIP_GLIDE_RIDE_ROOM_THREE_AP_REGION],
964963
{ICE_CELL_AP_REGION: lambda state: logic.has_glide(state),
965-
SLIP_GLIDE_RIDE_AP_REGION: lambda state: logic.has_glide(state)})
966-
fancy_add_exits(world, SLIP_GLIDE_RIDE_AP_REGION, [SLIP_GLIDE_RIDE_EXIT_AP_REGION],
967-
{SLIP_GLIDE_RIDE_EXIT_AP_REGION: lambda state: logic.has_vertical_movement(state) and logic.has_glide(state) and logic.has_key(state, RED_DOOR_KEY, 3)})
964+
SLIP_GLIDE_RIDE_ROOM_ONE_AP_REGION: lambda state: logic.has_vertical_movement(state),
965+
SLIP_GLIDE_RIDE_ROOM_TWO_AP_REGION: lambda state: logic.has_key(state, RED_DOOR_KEY, 1) and logic.has_glide(state),
966+
SLIP_GLIDE_RIDE_ROOM_THREE_AP_REGION: lambda state: logic.has_key(state, RED_DOOR_KEY, 2)})
967+
fancy_add_exits(world, SLIP_GLIDE_RIDE_ROOM_ONE_AP_REGION, [MENU_AP_REGION])
968+
fancy_add_exits(world, SLIP_GLIDE_RIDE_ROOM_TWO_AP_REGION, [SLIP_GLIDE_RIDE_ROOM_ONE_AP_REGION],
969+
{SLIP_GLIDE_RIDE_ROOM_ONE_AP_REGION: lambda state: logic.has_glide(state)})
970+
fancy_add_exits(world, SLIP_GLIDE_RIDE_ROOM_THREE_AP_REGION, [RED_GUARDIAN_AP_REGION],
971+
{RED_GUARDIAN_AP_REGION: lambda state: logic.has_key(state, RED_DOOR_KEY, 3) and (logic.has_horizontal_movement(state) or logic.has_vertical_movement(state))})
972+
fancy_add_exits(world, RED_GUARDIAN_AP_REGION, [SLIP_GLIDE_RIDE_EXIT_AP_REGION],
973+
{SLIP_GLIDE_RIDE_EXIT_AP_REGION: lambda state: logic.has_glide(state)})
968974
#Slip Glide Ride end
969975
#Regionsanity: can't get out of Athenaeum because you can't reach the duck through the door
970976
fancy_add_exits(world, SEQUOIA_ATHENAEUM_AP_REGION, [MENU_AP_REGION])

0 commit comments

Comments
 (0)