949 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			949 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			Python
		
	
	
	
import typing
 | 
						|
 | 
						|
from BaseClasses import MultiWorld, Region, Entrance
 | 
						|
from .Items import DKC3Item
 | 
						|
from .Locations import DKC3Location
 | 
						|
from .Names import LocationName, ItemName
 | 
						|
 | 
						|
 | 
						|
def create_regions(world, player: int, active_locations):
 | 
						|
    menu_region = create_region(world, player, active_locations, 'Menu', None)
 | 
						|
 | 
						|
    overworld_1_region_locations = {}
 | 
						|
    if world.goal[player] != "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_locations)
 | 
						|
 | 
						|
    overworld_2_region_locations = {}
 | 
						|
    overworld_2_region = create_region(world, player, 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_locations)
 | 
						|
 | 
						|
    overworld_4_region_locations = {}
 | 
						|
    overworld_4_region = create_region(world, player, 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)
 | 
						|
 | 
						|
 | 
						|
    lakeside_limbo_region_locations = {
 | 
						|
        LocationName.lakeside_limbo_flag    : [0x657, 1],
 | 
						|
        LocationName.lakeside_limbo_bonus_1 : [0x657, 2],
 | 
						|
        LocationName.lakeside_limbo_bonus_2 : [0x657, 3],
 | 
						|
        LocationName.lakeside_limbo_dk      : [0x657, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        lakeside_limbo_region_locations[LocationName.lakeside_limbo_kong] = []
 | 
						|
    lakeside_limbo_region = create_region(world, player, active_locations, LocationName.lakeside_limbo_region,
 | 
						|
                                          lakeside_limbo_region_locations)
 | 
						|
 | 
						|
    doorstop_dash_region_locations = {
 | 
						|
        LocationName.doorstop_dash_flag    : [0x65A, 1],
 | 
						|
        LocationName.doorstop_dash_bonus_1 : [0x65A, 2],
 | 
						|
        LocationName.doorstop_dash_bonus_2 : [0x65A, 3],
 | 
						|
        LocationName.doorstop_dash_dk      : [0x65A, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        doorstop_dash_region_locations[LocationName.doorstop_dash_kong] = []
 | 
						|
    doorstop_dash_region = create_region(world, player, active_locations, LocationName.doorstop_dash_region,
 | 
						|
                                         doorstop_dash_region_locations)
 | 
						|
 | 
						|
    tidal_trouble_region_locations = {
 | 
						|
        LocationName.tidal_trouble_flag    : [0x659, 1],
 | 
						|
        LocationName.tidal_trouble_bonus_1 : [0x659, 2],
 | 
						|
        LocationName.tidal_trouble_bonus_2 : [0x659, 3],
 | 
						|
        LocationName.tidal_trouble_dk      : [0x659, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        tidal_trouble_region_locations[LocationName.tidal_trouble_kong] = []
 | 
						|
    tidal_trouble_region = create_region(world, player, active_locations, LocationName.tidal_trouble_region,
 | 
						|
                                         tidal_trouble_region_locations)
 | 
						|
 | 
						|
    skiddas_row_region_locations = {
 | 
						|
        LocationName.skiddas_row_flag    : [0x65D, 1],
 | 
						|
        LocationName.skiddas_row_bonus_1 : [0x65D, 2],
 | 
						|
        LocationName.skiddas_row_bonus_2 : [0x65D, 3],
 | 
						|
        LocationName.skiddas_row_dk      : [0x65D, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        skiddas_row_region_locations[LocationName.skiddas_row_kong] = []
 | 
						|
    skiddas_row_region = create_region(world, player, active_locations, LocationName.skiddas_row_region,
 | 
						|
                                       skiddas_row_region_locations)
 | 
						|
 | 
						|
    murky_mill_region_locations = {
 | 
						|
        LocationName.murky_mill_flag    : [0x65C, 1],
 | 
						|
        LocationName.murky_mill_bonus_1 : [0x65C, 2],
 | 
						|
        LocationName.murky_mill_bonus_2 : [0x65C, 3],
 | 
						|
        LocationName.murky_mill_dk      : [0x65C, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        murky_mill_region_locations[LocationName.murky_mill_kong] = []
 | 
						|
    murky_mill_region = create_region(world, player, active_locations, LocationName.murky_mill_region,
 | 
						|
                                      murky_mill_region_locations)
 | 
						|
 | 
						|
    barrel_shield_bust_up_region_locations = {
 | 
						|
        LocationName.barrel_shield_bust_up_flag     : [0x662, 1],
 | 
						|
        LocationName.barrel_shield_bust_up_bonus_1  : [0x662, 2],
 | 
						|
        LocationName.barrel_shield_bust_up_bonus_2  : [0x662, 3],
 | 
						|
        LocationName.barrel_shield_bust_up_dk       : [0x662, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        barrel_shield_bust_up_region_locations[LocationName.barrel_shield_bust_up_kong] = []
 | 
						|
    barrel_shield_bust_up_region = create_region(world, player, active_locations,
 | 
						|
                                                 LocationName.barrel_shield_bust_up_region,
 | 
						|
                                                 barrel_shield_bust_up_region_locations)
 | 
						|
 | 
						|
    riverside_race_region_locations = {
 | 
						|
        LocationName.riverside_race_flag    : [0x664, 1],
 | 
						|
        LocationName.riverside_race_bonus_1 : [0x664, 2],
 | 
						|
        LocationName.riverside_race_bonus_2 : [0x664, 3],
 | 
						|
        LocationName.riverside_race_dk      : [0x664, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        riverside_race_region_locations[LocationName.riverside_race_kong] = []
 | 
						|
    riverside_race_region = create_region(world, player, active_locations, LocationName.riverside_race_region,
 | 
						|
                                          riverside_race_region_locations)
 | 
						|
 | 
						|
    squeals_on_wheels_region_locations = {
 | 
						|
        LocationName.squeals_on_wheels_flag    : [0x65B, 1],
 | 
						|
        LocationName.squeals_on_wheels_bonus_1 : [0x65B, 2],
 | 
						|
        LocationName.squeals_on_wheels_bonus_2 : [0x65B, 3],
 | 
						|
        LocationName.squeals_on_wheels_dk      : [0x65B, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    springin_spiders_region_locations = {
 | 
						|
        LocationName.springin_spiders_flag    : [0x661, 1],
 | 
						|
        LocationName.springin_spiders_bonus_1 : [0x661, 2],
 | 
						|
        LocationName.springin_spiders_bonus_2 : [0x661, 3],
 | 
						|
        LocationName.springin_spiders_dk      : [0x661, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        springin_spiders_region_locations[LocationName.springin_spiders_kong] = []
 | 
						|
    springin_spiders_region = create_region(world, player, active_locations, LocationName.springin_spiders_region,
 | 
						|
                                            springin_spiders_region_locations)
 | 
						|
 | 
						|
    bobbing_barrel_brawl_region_locations = {
 | 
						|
        LocationName.bobbing_barrel_brawl_flag     : [0x666, 1],
 | 
						|
        LocationName.bobbing_barrel_brawl_bonus_1  : [0x666, 2],
 | 
						|
        LocationName.bobbing_barrel_brawl_bonus_2  : [0x666, 3],
 | 
						|
        LocationName.bobbing_barrel_brawl_dk       : [0x666, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        bobbing_barrel_brawl_region_locations[LocationName.bobbing_barrel_brawl_kong] = []
 | 
						|
    bobbing_barrel_brawl_region = create_region(world, player, active_locations,
 | 
						|
                                                LocationName.bobbing_barrel_brawl_region,
 | 
						|
                                                bobbing_barrel_brawl_region_locations)
 | 
						|
 | 
						|
    bazzas_blockade_region_locations = {
 | 
						|
        LocationName.bazzas_blockade_flag    : [0x667, 1],
 | 
						|
        LocationName.bazzas_blockade_bonus_1 : [0x667, 2],
 | 
						|
        LocationName.bazzas_blockade_bonus_2 : [0x667, 3],
 | 
						|
        LocationName.bazzas_blockade_dk      : [0x667, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        bazzas_blockade_region_locations[LocationName.bazzas_blockade_kong] = []
 | 
						|
    bazzas_blockade_region = create_region(world, player, active_locations, LocationName.bazzas_blockade_region,
 | 
						|
                                           bazzas_blockade_region_locations)
 | 
						|
 | 
						|
    rocket_barrel_ride_region_locations = {
 | 
						|
        LocationName.rocket_barrel_ride_flag    : [0x66A, 1],
 | 
						|
        LocationName.rocket_barrel_ride_bonus_1 : [0x66A, 2],
 | 
						|
        LocationName.rocket_barrel_ride_bonus_2 : [0x66A, 3],
 | 
						|
        LocationName.rocket_barrel_ride_dk      : [0x66A, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    kreeping_klasps_region_locations = {
 | 
						|
        LocationName.kreeping_klasps_flag     : [0x658, 1],
 | 
						|
        LocationName.kreeping_klasps_bonus_1  : [0x658, 2],
 | 
						|
        LocationName.kreeping_klasps_bonus_2  : [0x658, 3],
 | 
						|
        LocationName.kreeping_klasps_dk       : [0x658, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        kreeping_klasps_region_locations[LocationName.kreeping_klasps_kong] = []
 | 
						|
    kreeping_klasps_region = create_region(world, player, active_locations, LocationName.kreeping_klasps_region,
 | 
						|
                                           kreeping_klasps_region_locations)
 | 
						|
 | 
						|
    tracker_barrel_trek_region_locations = {
 | 
						|
        LocationName.tracker_barrel_trek_flag    : [0x66B, 1],
 | 
						|
        LocationName.tracker_barrel_trek_bonus_1 : [0x66B, 2],
 | 
						|
        LocationName.tracker_barrel_trek_bonus_2 : [0x66B, 3],
 | 
						|
        LocationName.tracker_barrel_trek_dk      : [0x66B, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    fish_food_frenzy_region_locations = {
 | 
						|
        LocationName.fish_food_frenzy_flag    : [0x668, 1],
 | 
						|
        LocationName.fish_food_frenzy_bonus_1 : [0x668, 2],
 | 
						|
        LocationName.fish_food_frenzy_bonus_2 : [0x668, 3],
 | 
						|
        LocationName.fish_food_frenzy_dk      : [0x668, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    fire_ball_frenzy_region_locations = {
 | 
						|
        LocationName.fire_ball_frenzy_flag    : [0x66D, 1],
 | 
						|
        LocationName.fire_ball_frenzy_bonus_1 : [0x66D, 2],
 | 
						|
        LocationName.fire_ball_frenzy_bonus_2 : [0x66D, 3],
 | 
						|
        LocationName.fire_ball_frenzy_dk      : [0x66D, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    demolition_drain_pipe_region_locations = {
 | 
						|
        LocationName.demolition_drain_pipe_flag    : [0x672, 1],
 | 
						|
        LocationName.demolition_drain_pipe_bonus_1 : [0x672, 2],
 | 
						|
        LocationName.demolition_drain_pipe_bonus_2 : [0x672, 3],
 | 
						|
        LocationName.demolition_drain_pipe_dk      : [0x672, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        demolition_drain_pipe_region_locations[LocationName.demolition_drain_pipe_kong] = []
 | 
						|
    demolition_drain_pipe_region = create_region(world, player, active_locations,
 | 
						|
                                                 LocationName.demolition_drain_pipe_region,
 | 
						|
                                                 demolition_drain_pipe_region_locations)
 | 
						|
 | 
						|
    ripsaw_rage_region_locations = {
 | 
						|
        LocationName.ripsaw_rage_flag    : [0x660, 1],
 | 
						|
        LocationName.ripsaw_rage_bonus_1 : [0x660, 2],
 | 
						|
        LocationName.ripsaw_rage_bonus_2 : [0x660, 3],
 | 
						|
        LocationName.ripsaw_rage_dk      : [0x660, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        ripsaw_rage_region_locations[LocationName.ripsaw_rage_kong] = []
 | 
						|
    ripsaw_rage_region = create_region(world, player, active_locations, LocationName.ripsaw_rage_region,
 | 
						|
                                       ripsaw_rage_region_locations)
 | 
						|
 | 
						|
    blazing_bazookas_region_locations = {
 | 
						|
        LocationName.blazing_bazookas_flag    : [0x66E, 1],
 | 
						|
        LocationName.blazing_bazookas_bonus_1 : [0x66E, 2],
 | 
						|
        LocationName.blazing_bazookas_bonus_2 : [0x66E, 3],
 | 
						|
        LocationName.blazing_bazookas_dk      : [0x66E, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        blazing_bazookas_region_locations[LocationName.blazing_bazookas_kong] = []
 | 
						|
    blazing_bazookas_region = create_region(world, player, active_locations, LocationName.blazing_bazookas_region,
 | 
						|
                                            blazing_bazookas_region_locations)
 | 
						|
 | 
						|
    low_g_labyrinth_region_locations = {
 | 
						|
        LocationName.low_g_labyrinth_flag     : [0x670, 1],
 | 
						|
        LocationName.low_g_labyrinth_bonus_1  : [0x670, 2],
 | 
						|
        LocationName.low_g_labyrinth_bonus_2  : [0x670, 3],
 | 
						|
        LocationName.low_g_labyrinth_dk       : [0x670, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    krevice_kreepers_region_locations = {
 | 
						|
        LocationName.krevice_kreepers_flag    : [0x673, 1],
 | 
						|
        LocationName.krevice_kreepers_bonus_1 : [0x673, 2],
 | 
						|
        LocationName.krevice_kreepers_bonus_2 : [0x673, 3],
 | 
						|
        LocationName.krevice_kreepers_dk      : [0x673, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        krevice_kreepers_region_locations[LocationName.krevice_kreepers_kong] = []
 | 
						|
    krevice_kreepers_region = create_region(world, player, active_locations, LocationName.krevice_kreepers_region,
 | 
						|
                                            krevice_kreepers_region_locations)
 | 
						|
 | 
						|
    tearaway_toboggan_region_locations = {
 | 
						|
        LocationName.tearaway_toboggan_flag    : [0x65F, 1],
 | 
						|
        LocationName.tearaway_toboggan_bonus_1 : [0x65F, 2],
 | 
						|
        LocationName.tearaway_toboggan_bonus_2 : [0x65F, 3],
 | 
						|
        LocationName.tearaway_toboggan_dk      : [0x65F, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        tearaway_toboggan_region_locations[LocationName.tearaway_toboggan_kong] = []
 | 
						|
    tearaway_toboggan_region = create_region(world, player, active_locations, LocationName.tearaway_toboggan_region,
 | 
						|
                                             tearaway_toboggan_region_locations)
 | 
						|
 | 
						|
    barrel_drop_bounce_region_locations = {
 | 
						|
        LocationName.barrel_drop_bounce_flag    : [0x66C, 1],
 | 
						|
        LocationName.barrel_drop_bounce_bonus_1 : [0x66C, 2],
 | 
						|
        LocationName.barrel_drop_bounce_bonus_2 : [0x66C, 3],
 | 
						|
        LocationName.barrel_drop_bounce_dk      : [0x66C, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    krack_shot_kroc_region_locations = {
 | 
						|
        LocationName.krack_shot_kroc_flag    : [0x66F, 1],
 | 
						|
        LocationName.krack_shot_kroc_bonus_1 : [0x66F, 2],
 | 
						|
        LocationName.krack_shot_kroc_bonus_2 : [0x66F, 3],
 | 
						|
        LocationName.krack_shot_kroc_dk      : [0x66F, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    lemguin_lunge_region_locations = {
 | 
						|
        LocationName.lemguin_lunge_flag    : [0x65E, 1],
 | 
						|
        LocationName.lemguin_lunge_bonus_1 : [0x65E, 2],
 | 
						|
        LocationName.lemguin_lunge_bonus_2 : [0x65E, 3],
 | 
						|
        LocationName.lemguin_lunge_dk      : [0x65E, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        lemguin_lunge_region_locations[LocationName.lemguin_lunge_kong] = []
 | 
						|
    lemguin_lunge_region = create_region(world, player, active_locations, LocationName.lemguin_lunge_region,
 | 
						|
                                         lemguin_lunge_region_locations)
 | 
						|
 | 
						|
    buzzer_barrage_region_locations = {
 | 
						|
        LocationName.buzzer_barrage_flag    : [0x676, 1],
 | 
						|
        LocationName.buzzer_barrage_bonus_1 : [0x676, 2],
 | 
						|
        LocationName.buzzer_barrage_bonus_2 : [0x676, 3],
 | 
						|
        LocationName.buzzer_barrage_dk      : [0x676, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        buzzer_barrage_region_locations[LocationName.buzzer_barrage_kong] = []
 | 
						|
    buzzer_barrage_region = create_region(world, player, active_locations, LocationName.buzzer_barrage_region,
 | 
						|
                                          buzzer_barrage_region_locations)
 | 
						|
 | 
						|
    kong_fused_cliffs_region_locations = {
 | 
						|
        LocationName.kong_fused_cliffs_flag    : [0x674, 1],
 | 
						|
        LocationName.kong_fused_cliffs_bonus_1 : [0x674, 2],
 | 
						|
        LocationName.kong_fused_cliffs_bonus_2 : [0x674, 3],
 | 
						|
        LocationName.kong_fused_cliffs_dk      : [0x674, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    floodlit_fish_region_locations = {
 | 
						|
        LocationName.floodlit_fish_flag    : [0x669, 1],
 | 
						|
        LocationName.floodlit_fish_bonus_1 : [0x669, 2],
 | 
						|
        LocationName.floodlit_fish_bonus_2 : [0x669, 3],
 | 
						|
        LocationName.floodlit_fish_dk      : [0x669, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        floodlit_fish_region_locations[LocationName.floodlit_fish_kong] = []
 | 
						|
    floodlit_fish_region = create_region(world, player, active_locations, LocationName.floodlit_fish_region,
 | 
						|
                                         floodlit_fish_region_locations)
 | 
						|
 | 
						|
    pothole_panic_region_locations = {
 | 
						|
        LocationName.pothole_panic_flag    : [0x677, 1],
 | 
						|
        LocationName.pothole_panic_bonus_1 : [0x677, 2],
 | 
						|
        LocationName.pothole_panic_bonus_2 : [0x677, 3],
 | 
						|
        LocationName.pothole_panic_dk      : [0x677, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        pothole_panic_region_locations[LocationName.pothole_panic_kong] = []
 | 
						|
    pothole_panic_region = create_region(world, player, active_locations, LocationName.pothole_panic_region,
 | 
						|
                                         pothole_panic_region_locations)
 | 
						|
 | 
						|
    ropey_rumpus_region_locations = {
 | 
						|
        LocationName.ropey_rumpus_flag    : [0x675, 1],
 | 
						|
        LocationName.ropey_rumpus_bonus_1 : [0x675, 2],
 | 
						|
        LocationName.ropey_rumpus_bonus_2 : [0x675, 3],
 | 
						|
        LocationName.ropey_rumpus_dk      : [0x675, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        ropey_rumpus_region_locations[LocationName.ropey_rumpus_kong] = []
 | 
						|
    ropey_rumpus_region = create_region(world, player, active_locations, LocationName.ropey_rumpus_region,
 | 
						|
                                        ropey_rumpus_region_locations)
 | 
						|
 | 
						|
    konveyor_rope_clash_region_locations = {
 | 
						|
        LocationName.konveyor_rope_clash_flag     : [0x657, 1],
 | 
						|
        LocationName.konveyor_rope_clash_bonus_1  : [0x657, 2],
 | 
						|
        LocationName.konveyor_rope_clash_bonus_2  : [0x657, 3],
 | 
						|
        LocationName.konveyor_rope_clash_dk       : [0x657, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    creepy_caverns_region_locations = {
 | 
						|
        LocationName.creepy_caverns_flag    : [0x678, 1],
 | 
						|
        LocationName.creepy_caverns_bonus_1 : [0x678, 2],
 | 
						|
        LocationName.creepy_caverns_bonus_2 : [0x678, 3],
 | 
						|
        LocationName.creepy_caverns_dk      : [0x678, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        creepy_caverns_region_locations[LocationName.creepy_caverns_kong] = []
 | 
						|
    creepy_caverns_region = create_region(world, player, active_locations, LocationName.creepy_caverns_region,
 | 
						|
                                          creepy_caverns_region_locations)
 | 
						|
 | 
						|
    lightning_lookout_region_locations = {
 | 
						|
        LocationName.lightning_lookout_flag     : [0x665, 1],
 | 
						|
        LocationName.lightning_lookout_bonus_1  : [0x665, 2],
 | 
						|
        LocationName.lightning_lookout_bonus_2  : [0x665, 3],
 | 
						|
        LocationName.lightning_lookout_dk       : [0x665, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        lightning_lookout_region_locations[LocationName.lightning_lookout_kong] = []
 | 
						|
    lightning_lookout_region = create_region(world, player, active_locations, LocationName.lightning_lookout_region,
 | 
						|
                                             lightning_lookout_region_locations)
 | 
						|
 | 
						|
    koindozer_klamber_region_locations = {
 | 
						|
        LocationName.koindozer_klamber_flag     : [0x679, 1],
 | 
						|
        LocationName.koindozer_klamber_bonus_1  : [0x679, 2],
 | 
						|
        LocationName.koindozer_klamber_bonus_2  : [0x679, 3],
 | 
						|
        LocationName.koindozer_klamber_dk       : [0x679, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        koindozer_klamber_region_locations[LocationName.koindozer_klamber_kong] = []
 | 
						|
    koindozer_klamber_region = create_region(world, player, active_locations, LocationName.koindozer_klamber_region,
 | 
						|
                                             koindozer_klamber_region_locations)
 | 
						|
 | 
						|
    poisonous_pipeline_region_locations = {
 | 
						|
        LocationName.poisonous_pipeline_flag    : [0x671, 1],
 | 
						|
        LocationName.poisonous_pipeline_bonus_1 : [0x671, 2],
 | 
						|
        LocationName.poisonous_pipeline_bonus_2 : [0x671, 3],
 | 
						|
        LocationName.poisonous_pipeline_dk      : [0x671, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        poisonous_pipeline_region_locations[LocationName.poisonous_pipeline_kong] = []
 | 
						|
    poisonous_pipeline_region = create_region(world, player, active_locations, LocationName.poisonous_pipeline_region,
 | 
						|
                                              poisonous_pipeline_region_locations)
 | 
						|
 | 
						|
    stampede_sprint_region_locations = {
 | 
						|
        LocationName.stampede_sprint_flag     : [0x67B, 1],
 | 
						|
        LocationName.stampede_sprint_bonus_1  : [0x67B, 2],
 | 
						|
        LocationName.stampede_sprint_bonus_2  : [0x67B, 3],
 | 
						|
        LocationName.stampede_sprint_bonus_3  : [0x67B, 4],
 | 
						|
        LocationName.stampede_sprint_dk       : [0x67B, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        stampede_sprint_region_locations[LocationName.stampede_sprint_kong] = []
 | 
						|
    stampede_sprint_region = create_region(world, player, active_locations, LocationName.stampede_sprint_region,
 | 
						|
                                           stampede_sprint_region_locations)
 | 
						|
 | 
						|
    criss_cross_cliffs_region_locations = {
 | 
						|
        LocationName.criss_cross_cliffs_flag    : [0x67C, 1],
 | 
						|
        LocationName.criss_cross_cliffs_bonus_1 : [0x67C, 2],
 | 
						|
        LocationName.criss_cross_cliffs_bonus_2 : [0x67C, 3],
 | 
						|
        LocationName.criss_cross_cliffs_dk      : [0x67C, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    tyrant_twin_tussle_region_locations = {
 | 
						|
        LocationName.tyrant_twin_tussle_flag    : [0x67D, 1],
 | 
						|
        LocationName.tyrant_twin_tussle_bonus_1 : [0x67D, 2],
 | 
						|
        LocationName.tyrant_twin_tussle_bonus_2 : [0x67D, 3],
 | 
						|
        LocationName.tyrant_twin_tussle_bonus_3 : [0x67D, 4],
 | 
						|
        LocationName.tyrant_twin_tussle_dk      : [0x67D, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        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_locations)
 | 
						|
 | 
						|
    swoopy_salvo_region_locations = {
 | 
						|
        LocationName.swoopy_salvo_flag    : [0x663, 1],
 | 
						|
        LocationName.swoopy_salvo_bonus_1 : [0x663, 2],
 | 
						|
        LocationName.swoopy_salvo_bonus_2 : [0x663, 3],
 | 
						|
        LocationName.swoopy_salvo_bonus_3 : [0x663, 4],
 | 
						|
        LocationName.swoopy_salvo_dk      : [0x663, 5],
 | 
						|
    }
 | 
						|
    if world.kongsanity[player]:
 | 
						|
        swoopy_salvo_region_locations[LocationName.swoopy_salvo_kong] = []
 | 
						|
    swoopy_salvo_region = create_region(world, player, 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_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_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_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_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_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_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_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_locations)
 | 
						|
 | 
						|
    knautilus_region_locations = {
 | 
						|
        LocationName.knautilus: [0x656, 1],
 | 
						|
    }
 | 
						|
    knautilus_region = create_region(world, player, 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_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_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_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_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_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_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_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_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_locations)
 | 
						|
 | 
						|
    sky_high_secret_region_locations = {}
 | 
						|
    if False:#world.include_trade_sequence[player]:
 | 
						|
        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_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_locations)
 | 
						|
 | 
						|
    cifftop_cache_region_locations = {}
 | 
						|
    if False:#world.include_trade_sequence[player]:
 | 
						|
        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_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_locations)
 | 
						|
 | 
						|
 | 
						|
    # Set up the regions correctly.
 | 
						|
    world.regions += [
 | 
						|
        menu_region,
 | 
						|
        overworld_1_region,
 | 
						|
        overworld_2_region,
 | 
						|
        overworld_3_region,
 | 
						|
        overworld_4_region,
 | 
						|
        lake_orangatanga_region,
 | 
						|
        kremwood_forest_region,
 | 
						|
        cotton_top_cove_region,
 | 
						|
        mekanos_region,
 | 
						|
        k3_region,
 | 
						|
        razor_ridge_region,
 | 
						|
        kaos_kore_region,
 | 
						|
        krematoa_region,
 | 
						|
        lakeside_limbo_region,
 | 
						|
        doorstop_dash_region,
 | 
						|
        tidal_trouble_region,
 | 
						|
        skiddas_row_region,
 | 
						|
        murky_mill_region,
 | 
						|
        barrel_shield_bust_up_region,
 | 
						|
        riverside_race_region,
 | 
						|
        squeals_on_wheels_region,
 | 
						|
        springin_spiders_region,
 | 
						|
        bobbing_barrel_brawl_region,
 | 
						|
        bazzas_blockade_region,
 | 
						|
        rocket_barrel_ride_region,
 | 
						|
        kreeping_klasps_region,
 | 
						|
        tracker_barrel_trek_region,
 | 
						|
        fish_food_frenzy_region,
 | 
						|
        fire_ball_frenzy_region,
 | 
						|
        demolition_drain_pipe_region,
 | 
						|
        ripsaw_rage_region,
 | 
						|
        blazing_bazookas_region,
 | 
						|
        low_g_labyrinth_region,
 | 
						|
        krevice_kreepers_region,
 | 
						|
        tearaway_toboggan_region,
 | 
						|
        barrel_drop_bounce_region,
 | 
						|
        krack_shot_kroc_region,
 | 
						|
        lemguin_lunge_region,
 | 
						|
        buzzer_barrage_region,
 | 
						|
        kong_fused_cliffs_region,
 | 
						|
        floodlit_fish_region,
 | 
						|
        pothole_panic_region,
 | 
						|
        ropey_rumpus_region,
 | 
						|
        konveyor_rope_clash_region,
 | 
						|
        creepy_caverns_region,
 | 
						|
        lightning_lookout_region,
 | 
						|
        koindozer_klamber_region,
 | 
						|
        poisonous_pipeline_region,
 | 
						|
        stampede_sprint_region,
 | 
						|
        criss_cross_cliffs_region,
 | 
						|
        tyrant_twin_tussle_region,
 | 
						|
        swoopy_salvo_region,
 | 
						|
        rocket_rush_region,
 | 
						|
        belchas_barn_region,
 | 
						|
        arichs_ambush_region,
 | 
						|
        squirts_showdown_region,
 | 
						|
        kaos_karnage_region,
 | 
						|
        bleaks_house_region,
 | 
						|
        barboss_barrier_region,
 | 
						|
        kastle_kaos_region,
 | 
						|
        knautilus_region,
 | 
						|
        belchas_burrow_region,
 | 
						|
        kong_cave_region,
 | 
						|
        undercover_cove_region,
 | 
						|
        ks_cache_region,
 | 
						|
        hill_top_hoard_region,
 | 
						|
        bounty_beach_region,
 | 
						|
        smugglers_cove_region,
 | 
						|
        arichs_hoard_region,
 | 
						|
        bounty_bay_region,
 | 
						|
        sky_high_secret_region,
 | 
						|
        glacial_grotto_region,
 | 
						|
        cifftop_cache_region,
 | 
						|
        sewer_stockpile_region,
 | 
						|
    ]
 | 
						|
    
 | 
						|
    bazaar_region_locations = {}
 | 
						|
    bramble_region_locations = {}
 | 
						|
    flower_spot_region_locations = {}
 | 
						|
    barter_region_locations = {}
 | 
						|
    barnacle_region_locations = {}
 | 
						|
    blue_region_locations = {}
 | 
						|
    blizzard_region_locations = {}
 | 
						|
 | 
						|
    if False:#world.include_trade_sequence[player]:
 | 
						|
        bazaar_region_locations.update({
 | 
						|
            LocationName.bazaars_general_store_1: [0x615, 2, True],
 | 
						|
            LocationName.bazaars_general_store_2: [0x615, 3, True],
 | 
						|
        })
 | 
						|
 | 
						|
        bramble_region_locations[LocationName.brambles_bungalow] = [0x619, 2]
 | 
						|
 | 
						|
        #flower_spot_region_locations.update({
 | 
						|
        #    LocationName.flower_spot: [0x615, 3, True],
 | 
						|
        #})
 | 
						|
 | 
						|
        barter_region_locations[LocationName.barters_swap_shop] = [0x61B, 3]
 | 
						|
 | 
						|
        barnacle_region_locations[LocationName.barnacles_island] = [0x61D, 2]
 | 
						|
 | 
						|
        blue_region_locations[LocationName.blues_beach_hut] = [0x621, 4]
 | 
						|
 | 
						|
        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,
 | 
						|
                                   bramble_region_locations)
 | 
						|
    flower_spot_region = create_region(world, player, 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,
 | 
						|
                                    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,
 | 
						|
                                    blizzard_region_locations)
 | 
						|
 | 
						|
    world.regions += [
 | 
						|
        bazaar_region,
 | 
						|
        bramble_region,
 | 
						|
        flower_spot_region,
 | 
						|
        barter_region,
 | 
						|
        barnacle_region,
 | 
						|
        blue_region,
 | 
						|
        blizzard_region,
 | 
						|
    ]
 | 
						|
 | 
						|
 | 
						|
def connect_regions(world, player, 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)))
 | 
						|
 | 
						|
    # 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, 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, 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, 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)
 | 
						|
 | 
						|
 | 
						|
    # Lake Orangatanga Connections
 | 
						|
    lake_orangatanga_levels = [
 | 
						|
        level_list[0],
 | 
						|
        level_list[1],
 | 
						|
        level_list[2],
 | 
						|
        level_list[3],
 | 
						|
        level_list[4],
 | 
						|
        LocationName.belchas_barn_region,
 | 
						|
        LocationName.barnacle_region,
 | 
						|
        LocationName.smugglers_cove_region,
 | 
						|
    ]
 | 
						|
 | 
						|
    for i in range(0, len(lake_orangatanga_levels)):
 | 
						|
        connect(world, player, names, LocationName.lake_orangatanga_region, lake_orangatanga_levels[i])
 | 
						|
 | 
						|
    # Kremwood Forest Connections
 | 
						|
    kremwood_forest_levels = [
 | 
						|
        level_list[5],
 | 
						|
        level_list[6],
 | 
						|
        level_list[7],
 | 
						|
        level_list[8],
 | 
						|
        level_list[9],
 | 
						|
        LocationName.arichs_ambush_region,
 | 
						|
        LocationName.arichs_hoard_region,
 | 
						|
    ]
 | 
						|
 | 
						|
    for i in range(0, len(kremwood_forest_levels) - 1):
 | 
						|
        connect(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)))
 | 
						|
 | 
						|
    # Cotton-Top Cove Connections
 | 
						|
    cotton_top_cove_levels = [
 | 
						|
        LocationName.blue_region,
 | 
						|
        level_list[10],
 | 
						|
        level_list[11],
 | 
						|
        level_list[12],
 | 
						|
        level_list[13],
 | 
						|
        level_list[14],
 | 
						|
        LocationName.squirts_showdown_region,
 | 
						|
        LocationName.bounty_bay_region,
 | 
						|
    ]
 | 
						|
 | 
						|
    for i in range(0, len(cotton_top_cove_levels)):
 | 
						|
        connect(world, player, names, LocationName.cotton_top_cove_region, cotton_top_cove_levels[i])
 | 
						|
 | 
						|
    # Mekanos Connections
 | 
						|
    mekanos_levels = [
 | 
						|
        level_list[15],
 | 
						|
        level_list[16],
 | 
						|
        level_list[17],
 | 
						|
        level_list[18],
 | 
						|
        level_list[19],
 | 
						|
        LocationName.kaos_karnage_region,
 | 
						|
    ]
 | 
						|
 | 
						|
    for i in range(0, len(mekanos_levels)):
 | 
						|
        connect(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)))
 | 
						|
    else:
 | 
						|
        connect(world, player, names, LocationName.mekanos_region, LocationName.sky_high_secret_region,
 | 
						|
                lambda state: (state.can_reach(LocationName.bleaks_house, "Location", player)))
 | 
						|
 | 
						|
    # K3 Connections
 | 
						|
    k3_levels = [
 | 
						|
        level_list[20],
 | 
						|
        level_list[21],
 | 
						|
        level_list[22],
 | 
						|
        level_list[23],
 | 
						|
        level_list[24],
 | 
						|
        LocationName.bleaks_house_region,
 | 
						|
        LocationName.blizzard_region,
 | 
						|
        LocationName.glacial_grotto_region,
 | 
						|
    ]
 | 
						|
 | 
						|
    for i in range(0, len(k3_levels)):
 | 
						|
        connect(world, player, names, LocationName.k3_region, k3_levels[i])
 | 
						|
 | 
						|
    # Razor Ridge Connections
 | 
						|
    razor_ridge_levels = [
 | 
						|
        level_list[25],
 | 
						|
        level_list[26],
 | 
						|
        level_list[27],
 | 
						|
        level_list[28],
 | 
						|
        level_list[29],
 | 
						|
        LocationName.barboss_barrier_region,
 | 
						|
    ]
 | 
						|
 | 
						|
    for i in range(0, len(razor_ridge_levels)):
 | 
						|
        connect(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)))
 | 
						|
    else:
 | 
						|
        connect(world, player, names, LocationName.razor_ridge_region, LocationName.cifftop_cache_region)
 | 
						|
 | 
						|
    # KAOS Kore Connections
 | 
						|
    kaos_kore_levels = [
 | 
						|
        level_list[30],
 | 
						|
        level_list[31],
 | 
						|
        level_list[32],
 | 
						|
        level_list[33],
 | 
						|
        level_list[34],
 | 
						|
        LocationName.sewer_stockpile_region,
 | 
						|
    ]
 | 
						|
 | 
						|
    for i in range(0, len(kaos_kore_levels)):
 | 
						|
        connect(world, player, names, LocationName.kaos_kore_region, kaos_kore_levels[i])
 | 
						|
 | 
						|
    # Krematoa Connections
 | 
						|
    krematoa_levels = [
 | 
						|
        level_list[35],
 | 
						|
        level_list[36],
 | 
						|
        level_list[37],
 | 
						|
        level_list[38],
 | 
						|
        LocationName.rocket_rush_region,
 | 
						|
    ]
 | 
						|
 | 
						|
    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))))
 | 
						|
 | 
						|
    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)))
 | 
						|
    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)))
 | 
						|
 | 
						|
 | 
						|
def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
 | 
						|
    # Shamelessly stolen from the ROR2 definition
 | 
						|
    ret = Region(name, player, world)
 | 
						|
    if locations:
 | 
						|
        for locationName, locationData in locations.items():
 | 
						|
            loc_id = active_locations.get(locationName, 0)
 | 
						|
            if loc_id:
 | 
						|
                loc_byte   = locationData[0] if (len(locationData) > 0) else 0
 | 
						|
                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)
 | 
						|
                ret.locations.append(location)
 | 
						|
 | 
						|
    return ret
 | 
						|
 | 
						|
 | 
						|
def connect(world: MultiWorld, 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)
 | 
						|
 | 
						|
    if target not in used_names:
 | 
						|
        used_names[target] = 1
 | 
						|
        name = target
 | 
						|
    else:
 | 
						|
        used_names[target] += 1
 | 
						|
        name = target + (' ' * used_names[target])
 | 
						|
 | 
						|
    connection = Entrance(player, name, source_region)
 | 
						|
 | 
						|
    if rule:
 | 
						|
        connection.access_rule = rule
 | 
						|
 | 
						|
    source_region.exits.append(connection)
 | 
						|
    connection.connect(target_region)
 |