|
|
|
@ -4,38 +4,39 @@ from BaseClasses import MultiWorld, Region, Entrance
|
|
|
|
|
from .Items import DKC3Item
|
|
|
|
|
from .Locations import DKC3Location
|
|
|
|
|
from .Names import LocationName, ItemName
|
|
|
|
|
from worlds.AutoWorld import World
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_regions(world, player: int, active_locations):
|
|
|
|
|
menu_region = create_region(world, player, active_locations, 'Menu', None)
|
|
|
|
|
def create_regions(world: World, active_locations):
|
|
|
|
|
menu_region = create_region(world, active_locations, 'Menu', None)
|
|
|
|
|
|
|
|
|
|
overworld_1_region_locations = {}
|
|
|
|
|
if world.goal[player] != "knautilus":
|
|
|
|
|
if world.options.goal != "knautilus":
|
|
|
|
|
overworld_1_region_locations.update({LocationName.banana_bird_mother: []})
|
|
|
|
|
overworld_1_region = create_region(world, player, active_locations, LocationName.overworld_1_region,
|
|
|
|
|
overworld_1_region = create_region(world, active_locations, LocationName.overworld_1_region,
|
|
|
|
|
overworld_1_region_locations)
|
|
|
|
|
|
|
|
|
|
overworld_2_region_locations = {}
|
|
|
|
|
overworld_2_region = create_region(world, player, active_locations, LocationName.overworld_2_region,
|
|
|
|
|
overworld_2_region = create_region(world, active_locations, LocationName.overworld_2_region,
|
|
|
|
|
overworld_2_region_locations)
|
|
|
|
|
|
|
|
|
|
overworld_3_region_locations = {}
|
|
|
|
|
overworld_3_region = create_region(world, player, active_locations, LocationName.overworld_3_region,
|
|
|
|
|
overworld_3_region = create_region(world, active_locations, LocationName.overworld_3_region,
|
|
|
|
|
overworld_3_region_locations)
|
|
|
|
|
|
|
|
|
|
overworld_4_region_locations = {}
|
|
|
|
|
overworld_4_region = create_region(world, player, active_locations, LocationName.overworld_4_region,
|
|
|
|
|
overworld_4_region = create_region(world, active_locations, LocationName.overworld_4_region,
|
|
|
|
|
overworld_4_region_locations)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lake_orangatanga_region = create_region(world, player, active_locations, LocationName.lake_orangatanga_region, None)
|
|
|
|
|
kremwood_forest_region = create_region(world, player, active_locations, LocationName.kremwood_forest_region, None)
|
|
|
|
|
cotton_top_cove_region = create_region(world, player, active_locations, LocationName.cotton_top_cove_region, None)
|
|
|
|
|
mekanos_region = create_region(world, player, active_locations, LocationName.mekanos_region, None)
|
|
|
|
|
k3_region = create_region(world, player, active_locations, LocationName.k3_region, None)
|
|
|
|
|
razor_ridge_region = create_region(world, player, active_locations, LocationName.razor_ridge_region, None)
|
|
|
|
|
kaos_kore_region = create_region(world, player, active_locations, LocationName.kaos_kore_region, None)
|
|
|
|
|
krematoa_region = create_region(world, player, active_locations, LocationName.krematoa_region, None)
|
|
|
|
|
lake_orangatanga_region = create_region(world, active_locations, LocationName.lake_orangatanga_region, None)
|
|
|
|
|
kremwood_forest_region = create_region(world, active_locations, LocationName.kremwood_forest_region, None)
|
|
|
|
|
cotton_top_cove_region = create_region(world, active_locations, LocationName.cotton_top_cove_region, None)
|
|
|
|
|
mekanos_region = create_region(world, active_locations, LocationName.mekanos_region, None)
|
|
|
|
|
k3_region = create_region(world, active_locations, LocationName.k3_region, None)
|
|
|
|
|
razor_ridge_region = create_region(world, active_locations, LocationName.razor_ridge_region, None)
|
|
|
|
|
kaos_kore_region = create_region(world, active_locations, LocationName.kaos_kore_region, None)
|
|
|
|
|
krematoa_region = create_region(world, active_locations, LocationName.krematoa_region, None)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lakeside_limbo_region_locations = {
|
|
|
|
@ -44,9 +45,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.lakeside_limbo_bonus_2 : [0x657, 3],
|
|
|
|
|
LocationName.lakeside_limbo_dk : [0x657, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
lakeside_limbo_region_locations[LocationName.lakeside_limbo_kong] = []
|
|
|
|
|
lakeside_limbo_region = create_region(world, player, active_locations, LocationName.lakeside_limbo_region,
|
|
|
|
|
lakeside_limbo_region = create_region(world, active_locations, LocationName.lakeside_limbo_region,
|
|
|
|
|
lakeside_limbo_region_locations)
|
|
|
|
|
|
|
|
|
|
doorstop_dash_region_locations = {
|
|
|
|
@ -55,9 +56,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.doorstop_dash_bonus_2 : [0x65A, 3],
|
|
|
|
|
LocationName.doorstop_dash_dk : [0x65A, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
doorstop_dash_region_locations[LocationName.doorstop_dash_kong] = []
|
|
|
|
|
doorstop_dash_region = create_region(world, player, active_locations, LocationName.doorstop_dash_region,
|
|
|
|
|
doorstop_dash_region = create_region(world, active_locations, LocationName.doorstop_dash_region,
|
|
|
|
|
doorstop_dash_region_locations)
|
|
|
|
|
|
|
|
|
|
tidal_trouble_region_locations = {
|
|
|
|
@ -66,9 +67,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.tidal_trouble_bonus_2 : [0x659, 3],
|
|
|
|
|
LocationName.tidal_trouble_dk : [0x659, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
tidal_trouble_region_locations[LocationName.tidal_trouble_kong] = []
|
|
|
|
|
tidal_trouble_region = create_region(world, player, active_locations, LocationName.tidal_trouble_region,
|
|
|
|
|
tidal_trouble_region = create_region(world, active_locations, LocationName.tidal_trouble_region,
|
|
|
|
|
tidal_trouble_region_locations)
|
|
|
|
|
|
|
|
|
|
skiddas_row_region_locations = {
|
|
|
|
@ -77,9 +78,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.skiddas_row_bonus_2 : [0x65D, 3],
|
|
|
|
|
LocationName.skiddas_row_dk : [0x65D, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
skiddas_row_region_locations[LocationName.skiddas_row_kong] = []
|
|
|
|
|
skiddas_row_region = create_region(world, player, active_locations, LocationName.skiddas_row_region,
|
|
|
|
|
skiddas_row_region = create_region(world, active_locations, LocationName.skiddas_row_region,
|
|
|
|
|
skiddas_row_region_locations)
|
|
|
|
|
|
|
|
|
|
murky_mill_region_locations = {
|
|
|
|
@ -88,9 +89,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.murky_mill_bonus_2 : [0x65C, 3],
|
|
|
|
|
LocationName.murky_mill_dk : [0x65C, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
murky_mill_region_locations[LocationName.murky_mill_kong] = []
|
|
|
|
|
murky_mill_region = create_region(world, player, active_locations, LocationName.murky_mill_region,
|
|
|
|
|
murky_mill_region = create_region(world, active_locations, LocationName.murky_mill_region,
|
|
|
|
|
murky_mill_region_locations)
|
|
|
|
|
|
|
|
|
|
barrel_shield_bust_up_region_locations = {
|
|
|
|
@ -99,9 +100,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.barrel_shield_bust_up_bonus_2 : [0x662, 3],
|
|
|
|
|
LocationName.barrel_shield_bust_up_dk : [0x662, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
barrel_shield_bust_up_region_locations[LocationName.barrel_shield_bust_up_kong] = []
|
|
|
|
|
barrel_shield_bust_up_region = create_region(world, player, active_locations,
|
|
|
|
|
barrel_shield_bust_up_region = create_region(world, active_locations,
|
|
|
|
|
LocationName.barrel_shield_bust_up_region,
|
|
|
|
|
barrel_shield_bust_up_region_locations)
|
|
|
|
|
|
|
|
|
@ -111,9 +112,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.riverside_race_bonus_2 : [0x664, 3],
|
|
|
|
|
LocationName.riverside_race_dk : [0x664, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
riverside_race_region_locations[LocationName.riverside_race_kong] = []
|
|
|
|
|
riverside_race_region = create_region(world, player, active_locations, LocationName.riverside_race_region,
|
|
|
|
|
riverside_race_region = create_region(world, active_locations, LocationName.riverside_race_region,
|
|
|
|
|
riverside_race_region_locations)
|
|
|
|
|
|
|
|
|
|
squeals_on_wheels_region_locations = {
|
|
|
|
@ -122,9 +123,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.squeals_on_wheels_bonus_2 : [0x65B, 3],
|
|
|
|
|
LocationName.squeals_on_wheels_dk : [0x65B, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
squeals_on_wheels_region_locations[LocationName.squeals_on_wheels_kong] = []
|
|
|
|
|
squeals_on_wheels_region = create_region(world, player, active_locations, LocationName.squeals_on_wheels_region,
|
|
|
|
|
squeals_on_wheels_region = create_region(world, active_locations, LocationName.squeals_on_wheels_region,
|
|
|
|
|
squeals_on_wheels_region_locations)
|
|
|
|
|
|
|
|
|
|
springin_spiders_region_locations = {
|
|
|
|
@ -133,9 +134,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.springin_spiders_bonus_2 : [0x661, 3],
|
|
|
|
|
LocationName.springin_spiders_dk : [0x661, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
springin_spiders_region_locations[LocationName.springin_spiders_kong] = []
|
|
|
|
|
springin_spiders_region = create_region(world, player, active_locations, LocationName.springin_spiders_region,
|
|
|
|
|
springin_spiders_region = create_region(world, active_locations, LocationName.springin_spiders_region,
|
|
|
|
|
springin_spiders_region_locations)
|
|
|
|
|
|
|
|
|
|
bobbing_barrel_brawl_region_locations = {
|
|
|
|
@ -144,9 +145,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.bobbing_barrel_brawl_bonus_2 : [0x666, 3],
|
|
|
|
|
LocationName.bobbing_barrel_brawl_dk : [0x666, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
bobbing_barrel_brawl_region_locations[LocationName.bobbing_barrel_brawl_kong] = []
|
|
|
|
|
bobbing_barrel_brawl_region = create_region(world, player, active_locations,
|
|
|
|
|
bobbing_barrel_brawl_region = create_region(world, active_locations,
|
|
|
|
|
LocationName.bobbing_barrel_brawl_region,
|
|
|
|
|
bobbing_barrel_brawl_region_locations)
|
|
|
|
|
|
|
|
|
@ -156,9 +157,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.bazzas_blockade_bonus_2 : [0x667, 3],
|
|
|
|
|
LocationName.bazzas_blockade_dk : [0x667, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
bazzas_blockade_region_locations[LocationName.bazzas_blockade_kong] = []
|
|
|
|
|
bazzas_blockade_region = create_region(world, player, active_locations, LocationName.bazzas_blockade_region,
|
|
|
|
|
bazzas_blockade_region = create_region(world, active_locations, LocationName.bazzas_blockade_region,
|
|
|
|
|
bazzas_blockade_region_locations)
|
|
|
|
|
|
|
|
|
|
rocket_barrel_ride_region_locations = {
|
|
|
|
@ -167,9 +168,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.rocket_barrel_ride_bonus_2 : [0x66A, 3],
|
|
|
|
|
LocationName.rocket_barrel_ride_dk : [0x66A, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
rocket_barrel_ride_region_locations[LocationName.rocket_barrel_ride_kong] = []
|
|
|
|
|
rocket_barrel_ride_region = create_region(world, player, active_locations, LocationName.rocket_barrel_ride_region,
|
|
|
|
|
rocket_barrel_ride_region = create_region(world, active_locations, LocationName.rocket_barrel_ride_region,
|
|
|
|
|
rocket_barrel_ride_region_locations)
|
|
|
|
|
|
|
|
|
|
kreeping_klasps_region_locations = {
|
|
|
|
@ -178,9 +179,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.kreeping_klasps_bonus_2 : [0x658, 3],
|
|
|
|
|
LocationName.kreeping_klasps_dk : [0x658, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
kreeping_klasps_region_locations[LocationName.kreeping_klasps_kong] = []
|
|
|
|
|
kreeping_klasps_region = create_region(world, player, active_locations, LocationName.kreeping_klasps_region,
|
|
|
|
|
kreeping_klasps_region = create_region(world, active_locations, LocationName.kreeping_klasps_region,
|
|
|
|
|
kreeping_klasps_region_locations)
|
|
|
|
|
|
|
|
|
|
tracker_barrel_trek_region_locations = {
|
|
|
|
@ -189,9 +190,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.tracker_barrel_trek_bonus_2 : [0x66B, 3],
|
|
|
|
|
LocationName.tracker_barrel_trek_dk : [0x66B, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
tracker_barrel_trek_region_locations[LocationName.tracker_barrel_trek_kong] = []
|
|
|
|
|
tracker_barrel_trek_region = create_region(world, player, active_locations, LocationName.tracker_barrel_trek_region,
|
|
|
|
|
tracker_barrel_trek_region = create_region(world, active_locations, LocationName.tracker_barrel_trek_region,
|
|
|
|
|
tracker_barrel_trek_region_locations)
|
|
|
|
|
|
|
|
|
|
fish_food_frenzy_region_locations = {
|
|
|
|
@ -200,9 +201,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.fish_food_frenzy_bonus_2 : [0x668, 3],
|
|
|
|
|
LocationName.fish_food_frenzy_dk : [0x668, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
fish_food_frenzy_region_locations[LocationName.fish_food_frenzy_kong] = []
|
|
|
|
|
fish_food_frenzy_region = create_region(world, player, active_locations, LocationName.fish_food_frenzy_region,
|
|
|
|
|
fish_food_frenzy_region = create_region(world, active_locations, LocationName.fish_food_frenzy_region,
|
|
|
|
|
fish_food_frenzy_region_locations)
|
|
|
|
|
|
|
|
|
|
fire_ball_frenzy_region_locations = {
|
|
|
|
@ -211,9 +212,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.fire_ball_frenzy_bonus_2 : [0x66D, 3],
|
|
|
|
|
LocationName.fire_ball_frenzy_dk : [0x66D, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
fire_ball_frenzy_region_locations[LocationName.fire_ball_frenzy_kong] = []
|
|
|
|
|
fire_ball_frenzy_region = create_region(world, player, active_locations, LocationName.fire_ball_frenzy_region,
|
|
|
|
|
fire_ball_frenzy_region = create_region(world, active_locations, LocationName.fire_ball_frenzy_region,
|
|
|
|
|
fire_ball_frenzy_region_locations)
|
|
|
|
|
|
|
|
|
|
demolition_drain_pipe_region_locations = {
|
|
|
|
@ -222,9 +223,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.demolition_drain_pipe_bonus_2 : [0x672, 3],
|
|
|
|
|
LocationName.demolition_drain_pipe_dk : [0x672, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
demolition_drain_pipe_region_locations[LocationName.demolition_drain_pipe_kong] = []
|
|
|
|
|
demolition_drain_pipe_region = create_region(world, player, active_locations,
|
|
|
|
|
demolition_drain_pipe_region = create_region(world, active_locations,
|
|
|
|
|
LocationName.demolition_drain_pipe_region,
|
|
|
|
|
demolition_drain_pipe_region_locations)
|
|
|
|
|
|
|
|
|
@ -234,9 +235,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.ripsaw_rage_bonus_2 : [0x660, 3],
|
|
|
|
|
LocationName.ripsaw_rage_dk : [0x660, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
ripsaw_rage_region_locations[LocationName.ripsaw_rage_kong] = []
|
|
|
|
|
ripsaw_rage_region = create_region(world, player, active_locations, LocationName.ripsaw_rage_region,
|
|
|
|
|
ripsaw_rage_region = create_region(world, active_locations, LocationName.ripsaw_rage_region,
|
|
|
|
|
ripsaw_rage_region_locations)
|
|
|
|
|
|
|
|
|
|
blazing_bazookas_region_locations = {
|
|
|
|
@ -245,9 +246,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.blazing_bazookas_bonus_2 : [0x66E, 3],
|
|
|
|
|
LocationName.blazing_bazookas_dk : [0x66E, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
blazing_bazookas_region_locations[LocationName.blazing_bazookas_kong] = []
|
|
|
|
|
blazing_bazookas_region = create_region(world, player, active_locations, LocationName.blazing_bazookas_region,
|
|
|
|
|
blazing_bazookas_region = create_region(world, active_locations, LocationName.blazing_bazookas_region,
|
|
|
|
|
blazing_bazookas_region_locations)
|
|
|
|
|
|
|
|
|
|
low_g_labyrinth_region_locations = {
|
|
|
|
@ -256,9 +257,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.low_g_labyrinth_bonus_2 : [0x670, 3],
|
|
|
|
|
LocationName.low_g_labyrinth_dk : [0x670, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
low_g_labyrinth_region_locations[LocationName.low_g_labyrinth_kong] = []
|
|
|
|
|
low_g_labyrinth_region = create_region(world, player, active_locations, LocationName.low_g_labyrinth_region,
|
|
|
|
|
low_g_labyrinth_region = create_region(world, active_locations, LocationName.low_g_labyrinth_region,
|
|
|
|
|
low_g_labyrinth_region_locations)
|
|
|
|
|
|
|
|
|
|
krevice_kreepers_region_locations = {
|
|
|
|
@ -267,9 +268,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.krevice_kreepers_bonus_2 : [0x673, 3],
|
|
|
|
|
LocationName.krevice_kreepers_dk : [0x673, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
krevice_kreepers_region_locations[LocationName.krevice_kreepers_kong] = []
|
|
|
|
|
krevice_kreepers_region = create_region(world, player, active_locations, LocationName.krevice_kreepers_region,
|
|
|
|
|
krevice_kreepers_region = create_region(world, active_locations, LocationName.krevice_kreepers_region,
|
|
|
|
|
krevice_kreepers_region_locations)
|
|
|
|
|
|
|
|
|
|
tearaway_toboggan_region_locations = {
|
|
|
|
@ -278,9 +279,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.tearaway_toboggan_bonus_2 : [0x65F, 3],
|
|
|
|
|
LocationName.tearaway_toboggan_dk : [0x65F, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
tearaway_toboggan_region_locations[LocationName.tearaway_toboggan_kong] = []
|
|
|
|
|
tearaway_toboggan_region = create_region(world, player, active_locations, LocationName.tearaway_toboggan_region,
|
|
|
|
|
tearaway_toboggan_region = create_region(world, active_locations, LocationName.tearaway_toboggan_region,
|
|
|
|
|
tearaway_toboggan_region_locations)
|
|
|
|
|
|
|
|
|
|
barrel_drop_bounce_region_locations = {
|
|
|
|
@ -289,9 +290,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.barrel_drop_bounce_bonus_2 : [0x66C, 3],
|
|
|
|
|
LocationName.barrel_drop_bounce_dk : [0x66C, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
barrel_drop_bounce_region_locations[LocationName.barrel_drop_bounce_kong] = []
|
|
|
|
|
barrel_drop_bounce_region = create_region(world, player, active_locations, LocationName.barrel_drop_bounce_region,
|
|
|
|
|
barrel_drop_bounce_region = create_region(world, active_locations, LocationName.barrel_drop_bounce_region,
|
|
|
|
|
barrel_drop_bounce_region_locations)
|
|
|
|
|
|
|
|
|
|
krack_shot_kroc_region_locations = {
|
|
|
|
@ -300,9 +301,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.krack_shot_kroc_bonus_2 : [0x66F, 3],
|
|
|
|
|
LocationName.krack_shot_kroc_dk : [0x66F, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
krack_shot_kroc_region_locations[LocationName.krack_shot_kroc_kong] = []
|
|
|
|
|
krack_shot_kroc_region = create_region(world, player, active_locations, LocationName.krack_shot_kroc_region,
|
|
|
|
|
krack_shot_kroc_region = create_region(world, active_locations, LocationName.krack_shot_kroc_region,
|
|
|
|
|
krack_shot_kroc_region_locations)
|
|
|
|
|
|
|
|
|
|
lemguin_lunge_region_locations = {
|
|
|
|
@ -311,9 +312,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.lemguin_lunge_bonus_2 : [0x65E, 3],
|
|
|
|
|
LocationName.lemguin_lunge_dk : [0x65E, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
lemguin_lunge_region_locations[LocationName.lemguin_lunge_kong] = []
|
|
|
|
|
lemguin_lunge_region = create_region(world, player, active_locations, LocationName.lemguin_lunge_region,
|
|
|
|
|
lemguin_lunge_region = create_region(world, active_locations, LocationName.lemguin_lunge_region,
|
|
|
|
|
lemguin_lunge_region_locations)
|
|
|
|
|
|
|
|
|
|
buzzer_barrage_region_locations = {
|
|
|
|
@ -322,9 +323,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.buzzer_barrage_bonus_2 : [0x676, 3],
|
|
|
|
|
LocationName.buzzer_barrage_dk : [0x676, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
buzzer_barrage_region_locations[LocationName.buzzer_barrage_kong] = []
|
|
|
|
|
buzzer_barrage_region = create_region(world, player, active_locations, LocationName.buzzer_barrage_region,
|
|
|
|
|
buzzer_barrage_region = create_region(world, active_locations, LocationName.buzzer_barrage_region,
|
|
|
|
|
buzzer_barrage_region_locations)
|
|
|
|
|
|
|
|
|
|
kong_fused_cliffs_region_locations = {
|
|
|
|
@ -333,9 +334,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.kong_fused_cliffs_bonus_2 : [0x674, 3],
|
|
|
|
|
LocationName.kong_fused_cliffs_dk : [0x674, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
kong_fused_cliffs_region_locations[LocationName.kong_fused_cliffs_kong] = []
|
|
|
|
|
kong_fused_cliffs_region = create_region(world, player, active_locations, LocationName.kong_fused_cliffs_region,
|
|
|
|
|
kong_fused_cliffs_region = create_region(world, active_locations, LocationName.kong_fused_cliffs_region,
|
|
|
|
|
kong_fused_cliffs_region_locations)
|
|
|
|
|
|
|
|
|
|
floodlit_fish_region_locations = {
|
|
|
|
@ -344,9 +345,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.floodlit_fish_bonus_2 : [0x669, 3],
|
|
|
|
|
LocationName.floodlit_fish_dk : [0x669, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
floodlit_fish_region_locations[LocationName.floodlit_fish_kong] = []
|
|
|
|
|
floodlit_fish_region = create_region(world, player, active_locations, LocationName.floodlit_fish_region,
|
|
|
|
|
floodlit_fish_region = create_region(world, active_locations, LocationName.floodlit_fish_region,
|
|
|
|
|
floodlit_fish_region_locations)
|
|
|
|
|
|
|
|
|
|
pothole_panic_region_locations = {
|
|
|
|
@ -355,9 +356,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.pothole_panic_bonus_2 : [0x677, 3],
|
|
|
|
|
LocationName.pothole_panic_dk : [0x677, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
pothole_panic_region_locations[LocationName.pothole_panic_kong] = []
|
|
|
|
|
pothole_panic_region = create_region(world, player, active_locations, LocationName.pothole_panic_region,
|
|
|
|
|
pothole_panic_region = create_region(world, active_locations, LocationName.pothole_panic_region,
|
|
|
|
|
pothole_panic_region_locations)
|
|
|
|
|
|
|
|
|
|
ropey_rumpus_region_locations = {
|
|
|
|
@ -366,9 +367,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.ropey_rumpus_bonus_2 : [0x675, 3],
|
|
|
|
|
LocationName.ropey_rumpus_dk : [0x675, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
ropey_rumpus_region_locations[LocationName.ropey_rumpus_kong] = []
|
|
|
|
|
ropey_rumpus_region = create_region(world, player, active_locations, LocationName.ropey_rumpus_region,
|
|
|
|
|
ropey_rumpus_region = create_region(world, active_locations, LocationName.ropey_rumpus_region,
|
|
|
|
|
ropey_rumpus_region_locations)
|
|
|
|
|
|
|
|
|
|
konveyor_rope_clash_region_locations = {
|
|
|
|
@ -377,9 +378,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.konveyor_rope_clash_bonus_2 : [0x657, 3],
|
|
|
|
|
LocationName.konveyor_rope_clash_dk : [0x657, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
konveyor_rope_clash_region_locations[LocationName.konveyor_rope_clash_kong] = []
|
|
|
|
|
konveyor_rope_clash_region = create_region(world, player, active_locations, LocationName.konveyor_rope_clash_region,
|
|
|
|
|
konveyor_rope_clash_region = create_region(world, active_locations, LocationName.konveyor_rope_clash_region,
|
|
|
|
|
konveyor_rope_clash_region_locations)
|
|
|
|
|
|
|
|
|
|
creepy_caverns_region_locations = {
|
|
|
|
@ -388,9 +389,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.creepy_caverns_bonus_2 : [0x678, 3],
|
|
|
|
|
LocationName.creepy_caverns_dk : [0x678, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
creepy_caverns_region_locations[LocationName.creepy_caverns_kong] = []
|
|
|
|
|
creepy_caverns_region = create_region(world, player, active_locations, LocationName.creepy_caverns_region,
|
|
|
|
|
creepy_caverns_region = create_region(world, active_locations, LocationName.creepy_caverns_region,
|
|
|
|
|
creepy_caverns_region_locations)
|
|
|
|
|
|
|
|
|
|
lightning_lookout_region_locations = {
|
|
|
|
@ -399,9 +400,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.lightning_lookout_bonus_2 : [0x665, 3],
|
|
|
|
|
LocationName.lightning_lookout_dk : [0x665, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
lightning_lookout_region_locations[LocationName.lightning_lookout_kong] = []
|
|
|
|
|
lightning_lookout_region = create_region(world, player, active_locations, LocationName.lightning_lookout_region,
|
|
|
|
|
lightning_lookout_region = create_region(world, active_locations, LocationName.lightning_lookout_region,
|
|
|
|
|
lightning_lookout_region_locations)
|
|
|
|
|
|
|
|
|
|
koindozer_klamber_region_locations = {
|
|
|
|
@ -410,9 +411,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.koindozer_klamber_bonus_2 : [0x679, 3],
|
|
|
|
|
LocationName.koindozer_klamber_dk : [0x679, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
koindozer_klamber_region_locations[LocationName.koindozer_klamber_kong] = []
|
|
|
|
|
koindozer_klamber_region = create_region(world, player, active_locations, LocationName.koindozer_klamber_region,
|
|
|
|
|
koindozer_klamber_region = create_region(world, active_locations, LocationName.koindozer_klamber_region,
|
|
|
|
|
koindozer_klamber_region_locations)
|
|
|
|
|
|
|
|
|
|
poisonous_pipeline_region_locations = {
|
|
|
|
@ -421,9 +422,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.poisonous_pipeline_bonus_2 : [0x671, 3],
|
|
|
|
|
LocationName.poisonous_pipeline_dk : [0x671, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
poisonous_pipeline_region_locations[LocationName.poisonous_pipeline_kong] = []
|
|
|
|
|
poisonous_pipeline_region = create_region(world, player, active_locations, LocationName.poisonous_pipeline_region,
|
|
|
|
|
poisonous_pipeline_region = create_region(world, active_locations, LocationName.poisonous_pipeline_region,
|
|
|
|
|
poisonous_pipeline_region_locations)
|
|
|
|
|
|
|
|
|
|
stampede_sprint_region_locations = {
|
|
|
|
@ -433,9 +434,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.stampede_sprint_bonus_3 : [0x67B, 4],
|
|
|
|
|
LocationName.stampede_sprint_dk : [0x67B, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
stampede_sprint_region_locations[LocationName.stampede_sprint_kong] = []
|
|
|
|
|
stampede_sprint_region = create_region(world, player, active_locations, LocationName.stampede_sprint_region,
|
|
|
|
|
stampede_sprint_region = create_region(world, active_locations, LocationName.stampede_sprint_region,
|
|
|
|
|
stampede_sprint_region_locations)
|
|
|
|
|
|
|
|
|
|
criss_cross_cliffs_region_locations = {
|
|
|
|
@ -444,9 +445,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.criss_cross_cliffs_bonus_2 : [0x67C, 3],
|
|
|
|
|
LocationName.criss_cross_cliffs_dk : [0x67C, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
criss_cross_cliffs_region_locations[LocationName.criss_cross_cliffs_kong] = []
|
|
|
|
|
criss_cross_cliffs_region = create_region(world, player, active_locations, LocationName.criss_cross_cliffs_region,
|
|
|
|
|
criss_cross_cliffs_region = create_region(world, active_locations, LocationName.criss_cross_cliffs_region,
|
|
|
|
|
criss_cross_cliffs_region_locations)
|
|
|
|
|
|
|
|
|
|
tyrant_twin_tussle_region_locations = {
|
|
|
|
@ -456,9 +457,9 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.tyrant_twin_tussle_bonus_3 : [0x67D, 4],
|
|
|
|
|
LocationName.tyrant_twin_tussle_dk : [0x67D, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
tyrant_twin_tussle_region_locations[LocationName.tyrant_twin_tussle_kong] = []
|
|
|
|
|
tyrant_twin_tussle_region = create_region(world, player, active_locations, LocationName.tyrant_twin_tussle_region,
|
|
|
|
|
tyrant_twin_tussle_region = create_region(world, active_locations, LocationName.tyrant_twin_tussle_region,
|
|
|
|
|
tyrant_twin_tussle_region_locations)
|
|
|
|
|
|
|
|
|
|
swoopy_salvo_region_locations = {
|
|
|
|
@ -468,147 +469,147 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
LocationName.swoopy_salvo_bonus_3 : [0x663, 4],
|
|
|
|
|
LocationName.swoopy_salvo_dk : [0x663, 5],
|
|
|
|
|
}
|
|
|
|
|
if world.kongsanity[player]:
|
|
|
|
|
if world.options.kongsanity:
|
|
|
|
|
swoopy_salvo_region_locations[LocationName.swoopy_salvo_kong] = []
|
|
|
|
|
swoopy_salvo_region = create_region(world, player, active_locations, LocationName.swoopy_salvo_region,
|
|
|
|
|
swoopy_salvo_region = create_region(world, active_locations, LocationName.swoopy_salvo_region,
|
|
|
|
|
swoopy_salvo_region_locations)
|
|
|
|
|
|
|
|
|
|
rocket_rush_region_locations = {
|
|
|
|
|
LocationName.rocket_rush_flag : [0x67E, 1],
|
|
|
|
|
LocationName.rocket_rush_dk : [0x67E, 5],
|
|
|
|
|
}
|
|
|
|
|
rocket_rush_region = create_region(world, player, active_locations, LocationName.rocket_rush_region,
|
|
|
|
|
rocket_rush_region = create_region(world, active_locations, LocationName.rocket_rush_region,
|
|
|
|
|
rocket_rush_region_locations)
|
|
|
|
|
|
|
|
|
|
belchas_barn_region_locations = {
|
|
|
|
|
LocationName.belchas_barn: [0x64F, 1],
|
|
|
|
|
}
|
|
|
|
|
belchas_barn_region = create_region(world, player, active_locations, LocationName.belchas_barn_region,
|
|
|
|
|
belchas_barn_region = create_region(world, active_locations, LocationName.belchas_barn_region,
|
|
|
|
|
belchas_barn_region_locations)
|
|
|
|
|
|
|
|
|
|
arichs_ambush_region_locations = {
|
|
|
|
|
LocationName.arichs_ambush: [0x650, 1],
|
|
|
|
|
}
|
|
|
|
|
arichs_ambush_region = create_region(world, player, active_locations, LocationName.arichs_ambush_region,
|
|
|
|
|
arichs_ambush_region = create_region(world, active_locations, LocationName.arichs_ambush_region,
|
|
|
|
|
arichs_ambush_region_locations)
|
|
|
|
|
|
|
|
|
|
squirts_showdown_region_locations = {
|
|
|
|
|
LocationName.squirts_showdown: [0x651, 1],
|
|
|
|
|
}
|
|
|
|
|
squirts_showdown_region = create_region(world, player, active_locations, LocationName.squirts_showdown_region,
|
|
|
|
|
squirts_showdown_region = create_region(world, active_locations, LocationName.squirts_showdown_region,
|
|
|
|
|
squirts_showdown_region_locations)
|
|
|
|
|
|
|
|
|
|
kaos_karnage_region_locations = {
|
|
|
|
|
LocationName.kaos_karnage: [0x652, 1],
|
|
|
|
|
}
|
|
|
|
|
kaos_karnage_region = create_region(world, player, active_locations, LocationName.kaos_karnage_region,
|
|
|
|
|
kaos_karnage_region = create_region(world, active_locations, LocationName.kaos_karnage_region,
|
|
|
|
|
kaos_karnage_region_locations)
|
|
|
|
|
|
|
|
|
|
bleaks_house_region_locations = {
|
|
|
|
|
LocationName.bleaks_house: [0x653, 1],
|
|
|
|
|
}
|
|
|
|
|
bleaks_house_region = create_region(world, player, active_locations, LocationName.bleaks_house_region,
|
|
|
|
|
bleaks_house_region = create_region(world, active_locations, LocationName.bleaks_house_region,
|
|
|
|
|
bleaks_house_region_locations)
|
|
|
|
|
|
|
|
|
|
barboss_barrier_region_locations = {
|
|
|
|
|
LocationName.barboss_barrier: [0x654, 1],
|
|
|
|
|
}
|
|
|
|
|
barboss_barrier_region = create_region(world, player, active_locations, LocationName.barboss_barrier_region,
|
|
|
|
|
barboss_barrier_region = create_region(world, active_locations, LocationName.barboss_barrier_region,
|
|
|
|
|
barboss_barrier_region_locations)
|
|
|
|
|
|
|
|
|
|
kastle_kaos_region_locations = {
|
|
|
|
|
LocationName.kastle_kaos: [0x655, 1],
|
|
|
|
|
}
|
|
|
|
|
kastle_kaos_region = create_region(world, player, active_locations, LocationName.kastle_kaos_region,
|
|
|
|
|
kastle_kaos_region = create_region(world, active_locations, LocationName.kastle_kaos_region,
|
|
|
|
|
kastle_kaos_region_locations)
|
|
|
|
|
|
|
|
|
|
knautilus_region_locations = {
|
|
|
|
|
LocationName.knautilus: [0x656, 1],
|
|
|
|
|
}
|
|
|
|
|
knautilus_region = create_region(world, player, active_locations, LocationName.knautilus_region,
|
|
|
|
|
knautilus_region = create_region(world, active_locations, LocationName.knautilus_region,
|
|
|
|
|
knautilus_region_locations)
|
|
|
|
|
|
|
|
|
|
belchas_burrow_region_locations = {
|
|
|
|
|
LocationName.belchas_burrow: [0x647, 1],
|
|
|
|
|
}
|
|
|
|
|
belchas_burrow_region = create_region(world, player, active_locations, LocationName.belchas_burrow_region,
|
|
|
|
|
belchas_burrow_region = create_region(world, active_locations, LocationName.belchas_burrow_region,
|
|
|
|
|
belchas_burrow_region_locations)
|
|
|
|
|
|
|
|
|
|
kong_cave_region_locations = {
|
|
|
|
|
LocationName.kong_cave: [0x645, 1],
|
|
|
|
|
}
|
|
|
|
|
kong_cave_region = create_region(world, player, active_locations, LocationName.kong_cave_region,
|
|
|
|
|
kong_cave_region = create_region(world, active_locations, LocationName.kong_cave_region,
|
|
|
|
|
kong_cave_region_locations)
|
|
|
|
|
|
|
|
|
|
undercover_cove_region_locations = {
|
|
|
|
|
LocationName.undercover_cove: [0x644, 1],
|
|
|
|
|
}
|
|
|
|
|
undercover_cove_region = create_region(world, player, active_locations, LocationName.undercover_cove_region,
|
|
|
|
|
undercover_cove_region = create_region(world, active_locations, LocationName.undercover_cove_region,
|
|
|
|
|
undercover_cove_region_locations)
|
|
|
|
|
|
|
|
|
|
ks_cache_region_locations = {
|
|
|
|
|
LocationName.ks_cache: [0x642, 1],
|
|
|
|
|
}
|
|
|
|
|
ks_cache_region = create_region(world, player, active_locations, LocationName.ks_cache_region,
|
|
|
|
|
ks_cache_region = create_region(world, active_locations, LocationName.ks_cache_region,
|
|
|
|
|
ks_cache_region_locations)
|
|
|
|
|
|
|
|
|
|
hill_top_hoard_region_locations = {
|
|
|
|
|
LocationName.hill_top_hoard: [0x643, 1],
|
|
|
|
|
}
|
|
|
|
|
hill_top_hoard_region = create_region(world, player, active_locations, LocationName.hill_top_hoard_region,
|
|
|
|
|
hill_top_hoard_region = create_region(world, active_locations, LocationName.hill_top_hoard_region,
|
|
|
|
|
hill_top_hoard_region_locations)
|
|
|
|
|
|
|
|
|
|
bounty_beach_region_locations = {
|
|
|
|
|
LocationName.bounty_beach: [0x646, 1],
|
|
|
|
|
}
|
|
|
|
|
bounty_beach_region = create_region(world, player, active_locations, LocationName.bounty_beach_region,
|
|
|
|
|
bounty_beach_region = create_region(world, active_locations, LocationName.bounty_beach_region,
|
|
|
|
|
bounty_beach_region_locations)
|
|
|
|
|
|
|
|
|
|
smugglers_cove_region_locations = {
|
|
|
|
|
LocationName.smugglers_cove: [0x648, 1],
|
|
|
|
|
}
|
|
|
|
|
smugglers_cove_region = create_region(world, player, active_locations, LocationName.smugglers_cove_region,
|
|
|
|
|
smugglers_cove_region = create_region(world, active_locations, LocationName.smugglers_cove_region,
|
|
|
|
|
smugglers_cove_region_locations)
|
|
|
|
|
|
|
|
|
|
arichs_hoard_region_locations = {
|
|
|
|
|
LocationName.arichs_hoard: [0x649, 1],
|
|
|
|
|
}
|
|
|
|
|
arichs_hoard_region = create_region(world, player, active_locations, LocationName.arichs_hoard_region,
|
|
|
|
|
arichs_hoard_region = create_region(world, active_locations, LocationName.arichs_hoard_region,
|
|
|
|
|
arichs_hoard_region_locations)
|
|
|
|
|
|
|
|
|
|
bounty_bay_region_locations = {
|
|
|
|
|
LocationName.bounty_bay: [0x64A, 1],
|
|
|
|
|
}
|
|
|
|
|
bounty_bay_region = create_region(world, player, active_locations, LocationName.bounty_bay_region,
|
|
|
|
|
bounty_bay_region = create_region(world, active_locations, LocationName.bounty_bay_region,
|
|
|
|
|
bounty_bay_region_locations)
|
|
|
|
|
|
|
|
|
|
sky_high_secret_region_locations = {}
|
|
|
|
|
if False:#world.include_trade_sequence[player]:
|
|
|
|
|
if False:#world.options.include_trade_sequence:
|
|
|
|
|
sky_high_secret_region_locations[LocationName.sky_high_secret] = [0x64B, 1]
|
|
|
|
|
sky_high_secret_region = create_region(world, player, active_locations, LocationName.sky_high_secret_region,
|
|
|
|
|
sky_high_secret_region = create_region(world, active_locations, LocationName.sky_high_secret_region,
|
|
|
|
|
sky_high_secret_region_locations)
|
|
|
|
|
|
|
|
|
|
glacial_grotto_region_locations = {
|
|
|
|
|
LocationName.glacial_grotto: [0x64C, 1],
|
|
|
|
|
}
|
|
|
|
|
glacial_grotto_region = create_region(world, player, active_locations, LocationName.glacial_grotto_region,
|
|
|
|
|
glacial_grotto_region = create_region(world, active_locations, LocationName.glacial_grotto_region,
|
|
|
|
|
glacial_grotto_region_locations)
|
|
|
|
|
|
|
|
|
|
cifftop_cache_region_locations = {}
|
|
|
|
|
if False:#world.include_trade_sequence[player]:
|
|
|
|
|
if False:#world.options.include_trade_sequence:
|
|
|
|
|
cifftop_cache_region_locations[LocationName.cifftop_cache] = [0x64D, 1]
|
|
|
|
|
cifftop_cache_region = create_region(world, player, active_locations, LocationName.cifftop_cache_region,
|
|
|
|
|
cifftop_cache_region = create_region(world, active_locations, LocationName.cifftop_cache_region,
|
|
|
|
|
cifftop_cache_region_locations)
|
|
|
|
|
|
|
|
|
|
sewer_stockpile_region_locations = {
|
|
|
|
|
LocationName.sewer_stockpile: [0x64E, 1],
|
|
|
|
|
}
|
|
|
|
|
sewer_stockpile_region = create_region(world, player, active_locations, LocationName.sewer_stockpile_region,
|
|
|
|
|
sewer_stockpile_region = create_region(world, active_locations, LocationName.sewer_stockpile_region,
|
|
|
|
|
sewer_stockpile_region_locations)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Set up the regions correctly.
|
|
|
|
|
world.regions += [
|
|
|
|
|
world.multiworld.regions += [
|
|
|
|
|
menu_region,
|
|
|
|
|
overworld_1_region,
|
|
|
|
|
overworld_2_region,
|
|
|
|
@ -693,7 +694,7 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
blue_region_locations = {}
|
|
|
|
|
blizzard_region_locations = {}
|
|
|
|
|
|
|
|
|
|
if False:#world.include_trade_sequence[player]:
|
|
|
|
|
if False:#world.options.include_trade_sequence:
|
|
|
|
|
bazaar_region_locations.update({
|
|
|
|
|
LocationName.bazaars_general_store_1: [0x615, 2, True],
|
|
|
|
|
LocationName.bazaars_general_store_2: [0x615, 3, True],
|
|
|
|
@ -713,19 +714,19 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
|
|
|
|
|
blizzard_region_locations[LocationName.blizzards_basecamp] = [0x625, 4, True]
|
|
|
|
|
|
|
|
|
|
bazaar_region = create_region(world, player, active_locations, LocationName.bazaar_region, bazaar_region_locations)
|
|
|
|
|
bramble_region = create_region(world, player, active_locations, LocationName.bramble_region,
|
|
|
|
|
bazaar_region = create_region(world, active_locations, LocationName.bazaar_region, bazaar_region_locations)
|
|
|
|
|
bramble_region = create_region(world, active_locations, LocationName.bramble_region,
|
|
|
|
|
bramble_region_locations)
|
|
|
|
|
flower_spot_region = create_region(world, player, active_locations, LocationName.flower_spot_region,
|
|
|
|
|
flower_spot_region = create_region(world, active_locations, LocationName.flower_spot_region,
|
|
|
|
|
flower_spot_region_locations)
|
|
|
|
|
barter_region = create_region(world, player, active_locations, LocationName.barter_region, barter_region_locations)
|
|
|
|
|
barnacle_region = create_region(world, player, active_locations, LocationName.barnacle_region,
|
|
|
|
|
barter_region = create_region(world, active_locations, LocationName.barter_region, barter_region_locations)
|
|
|
|
|
barnacle_region = create_region(world, active_locations, LocationName.barnacle_region,
|
|
|
|
|
barnacle_region_locations)
|
|
|
|
|
blue_region = create_region(world, player, active_locations, LocationName.blue_region, blue_region_locations)
|
|
|
|
|
blizzard_region = create_region(world, player, active_locations, LocationName.blizzard_region,
|
|
|
|
|
blue_region = create_region(world, active_locations, LocationName.blue_region, blue_region_locations)
|
|
|
|
|
blizzard_region = create_region(world, active_locations, LocationName.blizzard_region,
|
|
|
|
|
blizzard_region_locations)
|
|
|
|
|
|
|
|
|
|
world.regions += [
|
|
|
|
|
world.multiworld.regions += [
|
|
|
|
|
bazaar_region,
|
|
|
|
|
bramble_region,
|
|
|
|
|
flower_spot_region,
|
|
|
|
@ -736,41 +737,41 @@ def create_regions(world, player: int, active_locations):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def connect_regions(world, player, level_list):
|
|
|
|
|
def connect_regions(world: World, level_list):
|
|
|
|
|
names: typing.Dict[str, int] = {}
|
|
|
|
|
|
|
|
|
|
# Overworld
|
|
|
|
|
connect(world, player, names, 'Menu', LocationName.overworld_1_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_1_region, LocationName.overworld_2_region,
|
|
|
|
|
lambda state: (state.has(ItemName.progressive_boat, player, 1)))
|
|
|
|
|
connect(world, player, names, LocationName.overworld_2_region, LocationName.overworld_3_region,
|
|
|
|
|
lambda state: (state.has(ItemName.progressive_boat, player, 3)))
|
|
|
|
|
connect(world, player, names, LocationName.overworld_1_region, LocationName.overworld_4_region,
|
|
|
|
|
lambda state: (state.has(ItemName.dk_coin, player, world.dk_coins_for_gyrocopter[player].value) and
|
|
|
|
|
state.has(ItemName.progressive_boat, player, 3)))
|
|
|
|
|
connect(world, world.player, names, 'Menu', LocationName.overworld_1_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_1_region, LocationName.overworld_2_region,
|
|
|
|
|
lambda state: (state.has(ItemName.progressive_boat, world.player, 1)))
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_2_region, LocationName.overworld_3_region,
|
|
|
|
|
lambda state: (state.has(ItemName.progressive_boat, world.player, 3)))
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_1_region, LocationName.overworld_4_region,
|
|
|
|
|
lambda state: (state.has(ItemName.dk_coin, world.player, world.options.dk_coins_for_gyrocopter.value) and
|
|
|
|
|
state.has(ItemName.progressive_boat, world.player, 3)))
|
|
|
|
|
|
|
|
|
|
# World Connections
|
|
|
|
|
connect(world, player, names, LocationName.overworld_1_region, LocationName.lake_orangatanga_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_1_region, LocationName.kremwood_forest_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_1_region, LocationName.bounty_beach_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_1_region, LocationName.bazaar_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_1_region, LocationName.lake_orangatanga_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_1_region, LocationName.kremwood_forest_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_1_region, LocationName.bounty_beach_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_1_region, LocationName.bazaar_region)
|
|
|
|
|
|
|
|
|
|
connect(world, player, names, LocationName.overworld_2_region, LocationName.cotton_top_cove_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_2_region, LocationName.mekanos_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_2_region, LocationName.kong_cave_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_2_region, LocationName.bramble_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_2_region, LocationName.cotton_top_cove_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_2_region, LocationName.mekanos_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_2_region, LocationName.kong_cave_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_2_region, LocationName.bramble_region)
|
|
|
|
|
|
|
|
|
|
connect(world, player, names, LocationName.overworld_3_region, LocationName.k3_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_3_region, LocationName.razor_ridge_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_3_region, LocationName.kaos_kore_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_3_region, LocationName.krematoa_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_3_region, LocationName.undercover_cove_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_3_region, LocationName.flower_spot_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_3_region, LocationName.barter_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_3_region, LocationName.k3_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_3_region, LocationName.razor_ridge_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_3_region, LocationName.kaos_kore_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_3_region, LocationName.krematoa_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_3_region, LocationName.undercover_cove_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_3_region, LocationName.flower_spot_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_3_region, LocationName.barter_region)
|
|
|
|
|
|
|
|
|
|
connect(world, player, names, LocationName.overworld_4_region, LocationName.belchas_burrow_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_4_region, LocationName.ks_cache_region)
|
|
|
|
|
connect(world, player, names, LocationName.overworld_4_region, LocationName.hill_top_hoard_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_4_region, LocationName.belchas_burrow_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_4_region, LocationName.ks_cache_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.overworld_4_region, LocationName.hill_top_hoard_region)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Lake Orangatanga Connections
|
|
|
|
@ -786,7 +787,7 @@ def connect_regions(world, player, level_list):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for i in range(0, len(lake_orangatanga_levels)):
|
|
|
|
|
connect(world, player, names, LocationName.lake_orangatanga_region, lake_orangatanga_levels[i])
|
|
|
|
|
connect(world, world.player, names, LocationName.lake_orangatanga_region, lake_orangatanga_levels[i])
|
|
|
|
|
|
|
|
|
|
# Kremwood Forest Connections
|
|
|
|
|
kremwood_forest_levels = [
|
|
|
|
@ -800,10 +801,10 @@ def connect_regions(world, player, level_list):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for i in range(0, len(kremwood_forest_levels) - 1):
|
|
|
|
|
connect(world, player, names, LocationName.kremwood_forest_region, kremwood_forest_levels[i])
|
|
|
|
|
connect(world, world.player, names, LocationName.kremwood_forest_region, kremwood_forest_levels[i])
|
|
|
|
|
|
|
|
|
|
connect(world, player, names, LocationName.kremwood_forest_region, kremwood_forest_levels[-1],
|
|
|
|
|
lambda state: (state.can_reach(LocationName.riverside_race_flag, "Location", player)))
|
|
|
|
|
connect(world, world.player, names, LocationName.kremwood_forest_region, kremwood_forest_levels[-1],
|
|
|
|
|
lambda state: (state.can_reach(LocationName.riverside_race_flag, "Location", world.player)))
|
|
|
|
|
|
|
|
|
|
# Cotton-Top Cove Connections
|
|
|
|
|
cotton_top_cove_levels = [
|
|
|
|
@ -818,7 +819,7 @@ def connect_regions(world, player, level_list):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for i in range(0, len(cotton_top_cove_levels)):
|
|
|
|
|
connect(world, player, names, LocationName.cotton_top_cove_region, cotton_top_cove_levels[i])
|
|
|
|
|
connect(world, world.player, names, LocationName.cotton_top_cove_region, cotton_top_cove_levels[i])
|
|
|
|
|
|
|
|
|
|
# Mekanos Connections
|
|
|
|
|
mekanos_levels = [
|
|
|
|
@ -831,14 +832,14 @@ def connect_regions(world, player, level_list):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for i in range(0, len(mekanos_levels)):
|
|
|
|
|
connect(world, player, names, LocationName.mekanos_region, mekanos_levels[i])
|
|
|
|
|
connect(world, world.player, names, LocationName.mekanos_region, mekanos_levels[i])
|
|
|
|
|
|
|
|
|
|
if False:#world.include_trade_sequence[player]:
|
|
|
|
|
connect(world, player, names, LocationName.mekanos_region, LocationName.sky_high_secret_region,
|
|
|
|
|
lambda state: (state.has(ItemName.bowling_ball, player, 1)))
|
|
|
|
|
if False:#world.options.include_trade_sequence:
|
|
|
|
|
connect(world, world.player, names, LocationName.mekanos_region, LocationName.sky_high_secret_region,
|
|
|
|
|
lambda state: (state.has(ItemName.bowling_ball, world.player, 1)))
|
|
|
|
|
else:
|
|
|
|
|
connect(world, player, names, LocationName.mekanos_region, LocationName.sky_high_secret_region,
|
|
|
|
|
lambda state: (state.can_reach(LocationName.bleaks_house, "Location", player)))
|
|
|
|
|
connect(world, world.player, names, LocationName.mekanos_region, LocationName.sky_high_secret_region,
|
|
|
|
|
lambda state: (state.can_reach(LocationName.bleaks_house, "Location", world.player)))
|
|
|
|
|
|
|
|
|
|
# K3 Connections
|
|
|
|
|
k3_levels = [
|
|
|
|
@ -853,7 +854,7 @@ def connect_regions(world, player, level_list):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for i in range(0, len(k3_levels)):
|
|
|
|
|
connect(world, player, names, LocationName.k3_region, k3_levels[i])
|
|
|
|
|
connect(world, world.player, names, LocationName.k3_region, k3_levels[i])
|
|
|
|
|
|
|
|
|
|
# Razor Ridge Connections
|
|
|
|
|
razor_ridge_levels = [
|
|
|
|
@ -866,13 +867,13 @@ def connect_regions(world, player, level_list):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for i in range(0, len(razor_ridge_levels)):
|
|
|
|
|
connect(world, player, names, LocationName.razor_ridge_region, razor_ridge_levels[i])
|
|
|
|
|
connect(world, world.player, names, LocationName.razor_ridge_region, razor_ridge_levels[i])
|
|
|
|
|
|
|
|
|
|
if False:#world.include_trade_sequence[player]:
|
|
|
|
|
connect(world, player, names, LocationName.razor_ridge_region, LocationName.cifftop_cache_region,
|
|
|
|
|
lambda state: (state.has(ItemName.wrench, player, 1)))
|
|
|
|
|
if False:#world.options.include_trade_sequence:
|
|
|
|
|
connect(world, world.player, names, LocationName.razor_ridge_region, LocationName.cifftop_cache_region,
|
|
|
|
|
lambda state: (state.has(ItemName.wrench, world.player, 1)))
|
|
|
|
|
else:
|
|
|
|
|
connect(world, player, names, LocationName.razor_ridge_region, LocationName.cifftop_cache_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.razor_ridge_region, LocationName.cifftop_cache_region)
|
|
|
|
|
|
|
|
|
|
# KAOS Kore Connections
|
|
|
|
|
kaos_kore_levels = [
|
|
|
|
@ -885,7 +886,7 @@ def connect_regions(world, player, level_list):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for i in range(0, len(kaos_kore_levels)):
|
|
|
|
|
connect(world, player, names, LocationName.kaos_kore_region, kaos_kore_levels[i])
|
|
|
|
|
connect(world, world.player, names, LocationName.kaos_kore_region, kaos_kore_levels[i])
|
|
|
|
|
|
|
|
|
|
# Krematoa Connections
|
|
|
|
|
krematoa_levels = [
|
|
|
|
@ -897,22 +898,22 @@ def connect_regions(world, player, level_list):
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
for i in range(0, len(krematoa_levels)):
|
|
|
|
|
connect(world, player, names, LocationName.krematoa_region, krematoa_levels[i],
|
|
|
|
|
lambda state, i=i: (state.has(ItemName.bonus_coin, player, world.krematoa_bonus_coin_cost[player].value * (i+1))))
|
|
|
|
|
connect(world, world.player, names, LocationName.krematoa_region, krematoa_levels[i],
|
|
|
|
|
lambda state, i=i: (state.has(ItemName.bonus_coin, world.player, world.options.krematoa_bonus_coin_cost.value * (i+1))))
|
|
|
|
|
|
|
|
|
|
if world.goal[player] == "knautilus":
|
|
|
|
|
connect(world, player, names, LocationName.kaos_kore_region, LocationName.knautilus_region)
|
|
|
|
|
connect(world, player, names, LocationName.krematoa_region, LocationName.kastle_kaos_region,
|
|
|
|
|
lambda state: (state.has(ItemName.krematoa_cog, player, 5)))
|
|
|
|
|
if world.options.goal == "knautilus":
|
|
|
|
|
connect(world, world.player, names, LocationName.kaos_kore_region, LocationName.knautilus_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.krematoa_region, LocationName.kastle_kaos_region,
|
|
|
|
|
lambda state: (state.has(ItemName.krematoa_cog, world.player, 5)))
|
|
|
|
|
else:
|
|
|
|
|
connect(world, player, names, LocationName.kaos_kore_region, LocationName.kastle_kaos_region)
|
|
|
|
|
connect(world, player, names, LocationName.krematoa_region, LocationName.knautilus_region,
|
|
|
|
|
lambda state: (state.has(ItemName.krematoa_cog, player, 5)))
|
|
|
|
|
connect(world, world.player, names, LocationName.kaos_kore_region, LocationName.kastle_kaos_region)
|
|
|
|
|
connect(world, world.player, names, LocationName.krematoa_region, LocationName.knautilus_region,
|
|
|
|
|
lambda state: (state.has(ItemName.krematoa_cog, world.player, 5)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
|
|
|
|
|
def create_region(world: World, active_locations, name: str, locations=None):
|
|
|
|
|
# Shamelessly stolen from the ROR2 definition
|
|
|
|
|
ret = Region(name, player, world)
|
|
|
|
|
ret = Region(name, world.player, world.multiworld)
|
|
|
|
|
if locations:
|
|
|
|
|
for locationName, locationData in locations.items():
|
|
|
|
|
loc_id = active_locations.get(locationName, 0)
|
|
|
|
@ -921,16 +922,16 @@ def create_region(world: MultiWorld, player: int, active_locations, name: str, l
|
|
|
|
|
loc_bit = locationData[1] if (len(locationData) > 1) else 0
|
|
|
|
|
loc_invert = locationData[2] if (len(locationData) > 2) else False
|
|
|
|
|
|
|
|
|
|
location = DKC3Location(player, locationName, loc_id, ret, loc_byte, loc_bit, loc_invert)
|
|
|
|
|
location = DKC3Location(world.player, locationName, loc_id, ret, loc_byte, loc_bit, loc_invert)
|
|
|
|
|
ret.locations.append(location)
|
|
|
|
|
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def connect(world: MultiWorld, player: int, used_names: typing.Dict[str, int], source: str, target: str,
|
|
|
|
|
def connect(world: World, player: int, used_names: typing.Dict[str, int], source: str, target: str,
|
|
|
|
|
rule: typing.Optional[typing.Callable] = None):
|
|
|
|
|
source_region = world.get_region(source, player)
|
|
|
|
|
target_region = world.get_region(target, player)
|
|
|
|
|
source_region = world.multiworld.get_region(source, player)
|
|
|
|
|
target_region = world.multiworld.get_region(target, player)
|
|
|
|
|
|
|
|
|
|
if target not in used_names:
|
|
|
|
|
used_names[target] = 1
|
|
|
|
|