forked from mirror/Archipelago
DKC3: Long-overdue World code cleanup (#2820)
Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
This commit is contained in:
@@ -2,6 +2,7 @@ import typing
|
||||
|
||||
from BaseClasses import Location
|
||||
from .Names import LocationName
|
||||
from worlds.AutoWorld import World
|
||||
|
||||
|
||||
class DKC3Location(Location):
|
||||
@@ -321,13 +322,13 @@ all_locations = {
|
||||
location_table = {}
|
||||
|
||||
|
||||
def setup_locations(world, player: int):
|
||||
def setup_locations(world: World):
|
||||
location_table = {**level_location_table, **boss_location_table, **secret_cave_location_table}
|
||||
|
||||
if False:#world.include_trade_sequence[player].value:
|
||||
if False:#world.options.include_trade_sequence:
|
||||
location_table.update({**brothers_bear_location_table})
|
||||
|
||||
if world.kongsanity[player].value:
|
||||
if world.options.kongsanity:
|
||||
location_table.update({**kong_location_table})
|
||||
|
||||
return location_table
|
||||
|
||||
+20
-19
@@ -1,6 +1,7 @@
|
||||
from dataclasses import dataclass
|
||||
import typing
|
||||
|
||||
from Options import Choice, Range, Option, Toggle, DeathLink, DefaultOnToggle, OptionList
|
||||
from Options import Choice, Range, Option, Toggle, DeathLink, DefaultOnToggle, OptionList, PerGameCommonOptions
|
||||
|
||||
|
||||
class Goal(Choice):
|
||||
@@ -158,21 +159,21 @@ class StartingLifeCount(Range):
|
||||
default = 5
|
||||
|
||||
|
||||
dkc3_options: typing.Dict[str, type(Option)] = {
|
||||
#"death_link": DeathLink, # Disabled
|
||||
"goal": Goal,
|
||||
#"include_trade_sequence": IncludeTradeSequence, # Disabled
|
||||
"dk_coins_for_gyrocopter": DKCoinsForGyrocopter,
|
||||
"krematoa_bonus_coin_cost": KrematoaBonusCoinCost,
|
||||
"percentage_of_extra_bonus_coins": PercentageOfExtraBonusCoins,
|
||||
"number_of_banana_birds": NumberOfBananaBirds,
|
||||
"percentage_of_banana_birds": PercentageOfBananaBirds,
|
||||
"kongsanity": KONGsanity,
|
||||
"level_shuffle": LevelShuffle,
|
||||
"difficulty": Difficulty,
|
||||
"autosave": Autosave,
|
||||
"merry": MERRY,
|
||||
"music_shuffle": MusicShuffle,
|
||||
"kong_palette_swap": KongPaletteSwap,
|
||||
"starting_life_count": StartingLifeCount,
|
||||
}
|
||||
@dataclass
|
||||
class DKC3Options(PerGameCommonOptions):
|
||||
#death_link: DeathLink # Disabled
|
||||
goal: Goal
|
||||
#include_trade_sequence: IncludeTradeSequence # Disabled
|
||||
dk_coins_for_gyrocopter: DKCoinsForGyrocopter
|
||||
krematoa_bonus_coin_cost: KrematoaBonusCoinCost
|
||||
percentage_of_extra_bonus_coins: PercentageOfExtraBonusCoins
|
||||
number_of_banana_birds: NumberOfBananaBirds
|
||||
percentage_of_banana_birds: PercentageOfBananaBirds
|
||||
kongsanity: KONGsanity
|
||||
level_shuffle: LevelShuffle
|
||||
difficulty: Difficulty
|
||||
autosave: Autosave
|
||||
merry: MERRY
|
||||
music_shuffle: MusicShuffle
|
||||
kong_palette_swap: KongPaletteSwap
|
||||
starting_life_count: StartingLifeCount
|
||||
|
||||
+188
-187
@@ -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
|
||||
|
||||
+28
-28
@@ -1,5 +1,6 @@
|
||||
import Utils
|
||||
from Utils import read_snes_rom
|
||||
from worlds.AutoWorld import World
|
||||
from worlds.Files import APDeltaPatch
|
||||
from .Locations import lookup_id_to_name, all_locations
|
||||
from .Levels import level_list, level_dict
|
||||
@@ -475,11 +476,10 @@ class LocalRom(object):
|
||||
|
||||
|
||||
|
||||
def patch_rom(world, rom, player, active_level_list):
|
||||
local_random = world.per_slot_randoms[player]
|
||||
def patch_rom(world: World, rom: LocalRom, active_level_list):
|
||||
|
||||
# Boomer Costs
|
||||
bonus_coin_cost = world.krematoa_bonus_coin_cost[player]
|
||||
bonus_coin_cost = world.options.krematoa_bonus_coin_cost
|
||||
inverted_bonus_coin_cost = 0x100 - bonus_coin_cost
|
||||
rom.write_byte(0x3498B9, inverted_bonus_coin_cost)
|
||||
rom.write_byte(0x3498BA, inverted_bonus_coin_cost)
|
||||
@@ -491,7 +491,7 @@ def patch_rom(world, rom, player, active_level_list):
|
||||
rom.write_byte(0x349862, bonus_coin_cost)
|
||||
|
||||
# Gyrocopter Costs
|
||||
dk_coin_cost = world.dk_coins_for_gyrocopter[player]
|
||||
dk_coin_cost = world.options.dk_coins_for_gyrocopter
|
||||
rom.write_byte(0x3484A6, dk_coin_cost)
|
||||
rom.write_byte(0x3484D5, dk_coin_cost)
|
||||
rom.write_byte(0x3484D7, 0x90)
|
||||
@@ -508,8 +508,8 @@ def patch_rom(world, rom, player, active_level_list):
|
||||
rom.write_bytes(0x34ACD0, bytearray([0xEA, 0xEA]))
|
||||
|
||||
# Banana Bird Costs
|
||||
if world.goal[player] == "banana_bird_hunt":
|
||||
banana_bird_cost = math.floor(world.number_of_banana_birds[player] * world.percentage_of_banana_birds[player] / 100.0)
|
||||
if world.options.goal == "banana_bird_hunt":
|
||||
banana_bird_cost = math.floor(world.options.number_of_banana_birds * world.options.percentage_of_banana_birds / 100.0)
|
||||
rom.write_byte(0x34AB85, banana_bird_cost)
|
||||
rom.write_byte(0x329FD8, banana_bird_cost)
|
||||
rom.write_byte(0x32A025, banana_bird_cost)
|
||||
@@ -528,65 +528,65 @@ def patch_rom(world, rom, player, active_level_list):
|
||||
|
||||
# Palette Swap
|
||||
rom.write_byte(0x3B96A5, 0xD0)
|
||||
if world.kong_palette_swap[player] == "default":
|
||||
if world.options.kong_palette_swap == "default":
|
||||
rom.write_byte(0x3B96A9, 0x00)
|
||||
rom.write_byte(0x3B96A8, 0x00)
|
||||
elif world.kong_palette_swap[player] == "purple":
|
||||
elif world.options.kong_palette_swap == "purple":
|
||||
rom.write_byte(0x3B96A9, 0x00)
|
||||
rom.write_byte(0x3B96A8, 0x3C)
|
||||
elif world.kong_palette_swap[player] == "spooky":
|
||||
elif world.options.kong_palette_swap == "spooky":
|
||||
rom.write_byte(0x3B96A9, 0x00)
|
||||
rom.write_byte(0x3B96A8, 0xA0)
|
||||
elif world.kong_palette_swap[player] == "dark":
|
||||
elif world.options.kong_palette_swap == "dark":
|
||||
rom.write_byte(0x3B96A9, 0x05)
|
||||
rom.write_byte(0x3B96A8, 0xA0)
|
||||
elif world.kong_palette_swap[player] == "chocolate":
|
||||
elif world.options.kong_palette_swap == "chocolate":
|
||||
rom.write_byte(0x3B96A9, 0x1D)
|
||||
rom.write_byte(0x3B96A8, 0xA0)
|
||||
elif world.kong_palette_swap[player] == "shadow":
|
||||
elif world.options.kong_palette_swap == "shadow":
|
||||
rom.write_byte(0x3B96A9, 0x45)
|
||||
rom.write_byte(0x3B96A8, 0xA0)
|
||||
elif world.kong_palette_swap[player] == "red_gold":
|
||||
elif world.options.kong_palette_swap == "red_gold":
|
||||
rom.write_byte(0x3B96A9, 0x5D)
|
||||
rom.write_byte(0x3B96A8, 0xA0)
|
||||
elif world.kong_palette_swap[player] == "gbc":
|
||||
elif world.options.kong_palette_swap == "gbc":
|
||||
rom.write_byte(0x3B96A9, 0x20)
|
||||
rom.write_byte(0x3B96A8, 0x3C)
|
||||
elif world.kong_palette_swap[player] == "halloween":
|
||||
elif world.options.kong_palette_swap == "halloween":
|
||||
rom.write_byte(0x3B96A9, 0x70)
|
||||
rom.write_byte(0x3B96A8, 0x3C)
|
||||
|
||||
if world.music_shuffle[player]:
|
||||
if world.options.music_shuffle:
|
||||
for address in music_rom_data:
|
||||
rand_song = local_random.choice(level_music_ids)
|
||||
rand_song = world.random.choice(level_music_ids)
|
||||
rom.write_byte(address, rand_song)
|
||||
|
||||
# Starting Lives
|
||||
rom.write_byte(0x9130, world.starting_life_count[player].value)
|
||||
rom.write_byte(0x913B, world.starting_life_count[player].value)
|
||||
rom.write_byte(0x9130, world.options.starting_life_count.value)
|
||||
rom.write_byte(0x913B, world.options.starting_life_count.value)
|
||||
|
||||
# Cheat options
|
||||
cheat_bytes = [0x00, 0x00]
|
||||
|
||||
if world.merry[player]:
|
||||
if world.options.merry:
|
||||
cheat_bytes[0] |= 0x01
|
||||
|
||||
if world.autosave[player]:
|
||||
if world.options.autosave:
|
||||
cheat_bytes[0] |= 0x02
|
||||
|
||||
if world.difficulty[player] == "tufst":
|
||||
if world.options.difficulty == "tufst":
|
||||
cheat_bytes[0] |= 0x80
|
||||
cheat_bytes[1] |= 0x80
|
||||
elif world.difficulty[player] == "hardr":
|
||||
elif world.options.difficulty == "hardr":
|
||||
cheat_bytes[0] |= 0x00
|
||||
cheat_bytes[1] |= 0x00
|
||||
elif world.difficulty[player] == "norml":
|
||||
elif world.options.difficulty == "norml":
|
||||
cheat_bytes[1] |= 0x40
|
||||
|
||||
rom.write_bytes(0x8303, bytearray(cheat_bytes))
|
||||
|
||||
# Handle Level Shuffle Here
|
||||
if world.level_shuffle[player]:
|
||||
if world.options.level_shuffle:
|
||||
for i in range(len(active_level_list)):
|
||||
rom.write_byte(level_dict[level_list[i]].nameIDAddress, level_dict[active_level_list[i]].nameID)
|
||||
rom.write_byte(level_dict[level_list[i]].levelIDAddress, level_dict[active_level_list[i]].levelID)
|
||||
@@ -611,7 +611,7 @@ def patch_rom(world, rom, player, active_level_list):
|
||||
rom.write_byte(0x34C213, (0x32 + level_dict[active_level_list[25]].levelID))
|
||||
rom.write_byte(0x34C21B, (0x32 + level_dict[active_level_list[26]].levelID))
|
||||
|
||||
if world.goal[player] == "knautilus":
|
||||
if world.options.goal == "knautilus":
|
||||
# Swap Kastle KAOS and Knautilus
|
||||
rom.write_byte(0x34D4E1, 0xC2)
|
||||
rom.write_byte(0x34D4E2, 0x24)
|
||||
@@ -621,7 +621,7 @@ def patch_rom(world, rom, player, active_level_list):
|
||||
rom.write_byte(0x32F339, 0x55)
|
||||
|
||||
# Handle KONGsanity Here
|
||||
if world.kongsanity[player]:
|
||||
if world.options.kongsanity:
|
||||
# Arich's Hoard KONGsanity fix
|
||||
rom.write_bytes(0x34BA8C, bytearray([0xEA, 0xEA]))
|
||||
|
||||
@@ -668,7 +668,7 @@ def patch_rom(world, rom, player, active_level_list):
|
||||
rom.write_bytes(0x32A5EE, bytearray([0x00, 0x03, 0x50, 0x4F, 0x52, 0x59, 0x47, 0x4F, 0x4E, 0xC5])) # "PORYGONE"
|
||||
|
||||
from Utils import __version__
|
||||
rom.name = bytearray(f'D3{__version__.replace(".", "")[0:3]}_{player}_{world.seed:11}\0', 'utf8')[:21]
|
||||
rom.name = bytearray(f'D3{__version__.replace(".", "")[0:3]}_{world.player}_{world.multiworld.seed:11}\0', 'utf8')[:21]
|
||||
rom.name.extend([0] * (21 - len(rom.name)))
|
||||
rom.write_bytes(0x7FC0, rom.name)
|
||||
|
||||
|
||||
+16
-17
@@ -1,32 +1,31 @@
|
||||
import math
|
||||
|
||||
from BaseClasses import MultiWorld
|
||||
from .Names import LocationName, ItemName
|
||||
from worlds.AutoWorld import LogicMixin
|
||||
from worlds.AutoWorld import LogicMixin, World
|
||||
from worlds.generic.Rules import add_rule, set_rule
|
||||
|
||||
|
||||
def set_rules(world: MultiWorld, player: int):
|
||||
def set_rules(world: World):
|
||||
|
||||
if False:#world.include_trade_sequence[player]:
|
||||
add_rule(world.get_location(LocationName.barnacles_island, player),
|
||||
lambda state: state.has(ItemName.shell, player))
|
||||
if False:#world.options.include_trade_sequence:
|
||||
add_rule(world.multiworld.get_location(LocationName.barnacles_island, world.player),
|
||||
lambda state: state.has(ItemName.shell, world.player))
|
||||
|
||||
add_rule(world.get_location(LocationName.blues_beach_hut, player),
|
||||
lambda state: state.has(ItemName.present, player))
|
||||
add_rule(world.multiworld.get_location(LocationName.blues_beach_hut, world.player),
|
||||
lambda state: state.has(ItemName.present, world.player))
|
||||
|
||||
add_rule(world.get_location(LocationName.brambles_bungalow, player),
|
||||
lambda state: state.has(ItemName.flower, player))
|
||||
add_rule(world.multiworld.get_location(LocationName.brambles_bungalow, world.player),
|
||||
lambda state: state.has(ItemName.flower, world.player))
|
||||
|
||||
add_rule(world.get_location(LocationName.barters_swap_shop, player),
|
||||
lambda state: state.has(ItemName.mirror, player))
|
||||
add_rule(world.multiworld.get_location(LocationName.barters_swap_shop, world.player),
|
||||
lambda state: state.has(ItemName.mirror, world.player))
|
||||
|
||||
|
||||
if world.goal[player] != "knautilus":
|
||||
if world.options.goal != "knautilus":
|
||||
required_banana_birds = math.floor(
|
||||
world.number_of_banana_birds[player].value * (world.percentage_of_banana_birds[player].value / 100.0))
|
||||
world.options.number_of_banana_birds.value * (world.options.percentage_of_banana_birds.value / 100.0))
|
||||
|
||||
add_rule(world.get_location(LocationName.banana_bird_mother, player),
|
||||
lambda state: state.has(ItemName.banana_bird, player, required_banana_birds))
|
||||
add_rule(world.multiworld.get_location(LocationName.banana_bird_mother, world.player),
|
||||
lambda state: state.has(ItemName.banana_bird, world.player, required_banana_birds))
|
||||
|
||||
world.completion_condition[player] = lambda state: state.has(ItemName.victory, player)
|
||||
world.multiworld.completion_condition[world.player] = lambda state: state.has(ItemName.victory, world.player)
|
||||
|
||||
+31
-26
@@ -1,3 +1,4 @@
|
||||
import dataclasses
|
||||
import os
|
||||
import typing
|
||||
import math
|
||||
@@ -5,9 +6,10 @@ import threading
|
||||
|
||||
import settings
|
||||
from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification
|
||||
from Options import PerGameCommonOptions
|
||||
from .Items import DKC3Item, ItemData, item_table, inventory_table, junk_table
|
||||
from .Locations import DKC3Location, all_locations, setup_locations
|
||||
from .Options import dkc3_options
|
||||
from .Options import DKC3Options
|
||||
from .Regions import create_regions, connect_regions
|
||||
from .Levels import level_list
|
||||
from .Rules import set_rules
|
||||
@@ -50,8 +52,11 @@ class DKC3World(World):
|
||||
mystery of why Donkey Kong and Diddy disappeared while on vacation.
|
||||
"""
|
||||
game: str = "Donkey Kong Country 3"
|
||||
option_definitions = dkc3_options
|
||||
settings: typing.ClassVar[DK3Settings]
|
||||
|
||||
options_dataclass = DKC3Options
|
||||
options: DKC3Options
|
||||
|
||||
topology_present = False
|
||||
data_version = 2
|
||||
#hint_blacklist = {LocationName.rocket_rush_flag}
|
||||
@@ -74,24 +79,25 @@ class DKC3World(World):
|
||||
|
||||
def _get_slot_data(self):
|
||||
return {
|
||||
#"death_link": self.world.death_link[self.player].value,
|
||||
#"death_link": self.options.death_link.value,
|
||||
"active_levels": self.active_level_list,
|
||||
}
|
||||
|
||||
def fill_slot_data(self) -> dict:
|
||||
slot_data = self._get_slot_data()
|
||||
for option_name in dkc3_options:
|
||||
option = getattr(self.multiworld, option_name)[self.player]
|
||||
for option_name in (attr.name for attr in dataclasses.fields(DKC3Options)
|
||||
if attr not in dataclasses.fields(PerGameCommonOptions)):
|
||||
option = getattr(self.options, option_name)
|
||||
slot_data[option_name] = option.value
|
||||
|
||||
return slot_data
|
||||
|
||||
def create_regions(self):
|
||||
location_table = setup_locations(self.multiworld, self.player)
|
||||
create_regions(self.multiworld, self.player, location_table)
|
||||
location_table = setup_locations(self)
|
||||
create_regions(self, location_table)
|
||||
|
||||
# Not generate basic
|
||||
self.topology_present = self.multiworld.level_shuffle[self.player].value
|
||||
self.topology_present = self.options.level_shuffle.value
|
||||
itempool: typing.List[DKC3Item] = []
|
||||
|
||||
# Levels
|
||||
@@ -103,12 +109,12 @@ class DKC3World(World):
|
||||
number_of_cogs = 4
|
||||
self.multiworld.get_location(LocationName.rocket_rush_flag, self.player).place_locked_item(self.create_item(ItemName.krematoa_cog))
|
||||
number_of_bosses = 8
|
||||
if self.multiworld.goal[self.player] == "knautilus":
|
||||
if self.options.goal == "knautilus":
|
||||
self.multiworld.get_location(LocationName.kastle_kaos, self.player).place_locked_item(self.create_item(ItemName.victory))
|
||||
number_of_bosses = 7
|
||||
else:
|
||||
self.multiworld.get_location(LocationName.banana_bird_mother, self.player).place_locked_item(self.create_item(ItemName.victory))
|
||||
number_of_banana_birds = self.multiworld.number_of_banana_birds[self.player]
|
||||
number_of_banana_birds = self.options.number_of_banana_birds
|
||||
|
||||
# Bosses
|
||||
total_required_locations += number_of_bosses
|
||||
@@ -116,15 +122,15 @@ class DKC3World(World):
|
||||
# Secret Caves
|
||||
total_required_locations += 13
|
||||
|
||||
if self.multiworld.kongsanity[self.player]:
|
||||
if self.options.kongsanity:
|
||||
total_required_locations += 39
|
||||
|
||||
## Brothers Bear
|
||||
if False:#self.world.include_trade_sequence[self.player]:
|
||||
if False:#self.options.include_trade_sequence:
|
||||
total_required_locations += 10
|
||||
|
||||
number_of_bonus_coins = (self.multiworld.krematoa_bonus_coin_cost[self.player] * 5)
|
||||
number_of_bonus_coins += math.ceil((85 - number_of_bonus_coins) * self.multiworld.percentage_of_extra_bonus_coins[self.player] / 100)
|
||||
number_of_bonus_coins = (self.options.krematoa_bonus_coin_cost * 5)
|
||||
number_of_bonus_coins += math.ceil((85 - number_of_bonus_coins) * self.options.percentage_of_extra_bonus_coins / 100)
|
||||
|
||||
itempool += [self.create_item(ItemName.bonus_coin) for _ in range(number_of_bonus_coins)]
|
||||
itempool += [self.create_item(ItemName.dk_coin) for _ in range(41)]
|
||||
@@ -142,20 +148,17 @@ class DKC3World(World):
|
||||
|
||||
self.active_level_list = level_list.copy()
|
||||
|
||||
if self.multiworld.level_shuffle[self.player]:
|
||||
self.multiworld.random.shuffle(self.active_level_list)
|
||||
if self.options.level_shuffle:
|
||||
self.random.shuffle(self.active_level_list)
|
||||
|
||||
connect_regions(self.multiworld, self.player, self.active_level_list)
|
||||
connect_regions(self, self.active_level_list)
|
||||
|
||||
self.multiworld.itempool += itempool
|
||||
|
||||
def generate_output(self, output_directory: str):
|
||||
try:
|
||||
world = self.multiworld
|
||||
player = self.player
|
||||
|
||||
rom = LocalRom(get_base_rom_path())
|
||||
patch_rom(self.multiworld, rom, self.player, self.active_level_list)
|
||||
patch_rom(self, rom, self.active_level_list)
|
||||
|
||||
self.active_level_list.append(LocationName.rocket_rush_region)
|
||||
|
||||
@@ -163,15 +166,15 @@ class DKC3World(World):
|
||||
rom.write_to_file(rompath)
|
||||
self.rom_name = rom.name
|
||||
|
||||
patch = DKC3DeltaPatch(os.path.splitext(rompath)[0]+DKC3DeltaPatch.patch_file_ending, player=player,
|
||||
player_name=world.player_name[player], patched_path=rompath)
|
||||
patch = DKC3DeltaPatch(os.path.splitext(rompath)[0]+DKC3DeltaPatch.patch_file_ending, player=self.player,
|
||||
player_name=self.multiworld.player_name[self.player], patched_path=rompath)
|
||||
patch.write()
|
||||
except:
|
||||
raise
|
||||
finally:
|
||||
self.rom_name_available_event.set() # make sure threading continues and errors are collected
|
||||
if os.path.exists(rompath):
|
||||
os.unlink(rompath)
|
||||
self.rom_name_available_event.set() # make sure threading continues and errors are collected
|
||||
|
||||
def modify_multidata(self, multidata: dict):
|
||||
import base64
|
||||
@@ -183,6 +186,7 @@ class DKC3World(World):
|
||||
new_name = base64.b64encode(bytes(self.rom_name)).decode()
|
||||
multidata["connect_names"][new_name] = multidata["connect_names"][self.multiworld.player_name[self.player]]
|
||||
|
||||
def extend_hint_information(self, hint_data: typing.Dict[int, typing.Dict[int, str]]):
|
||||
if self.topology_present:
|
||||
world_names = [
|
||||
LocationName.lake_orangatanga_region,
|
||||
@@ -200,7 +204,8 @@ class DKC3World(World):
|
||||
level_region = self.multiworld.get_region(self.active_level_list[world_index * 5 + level_index], self.player)
|
||||
for location in level_region.locations:
|
||||
er_hint_data[location.address] = world_names[world_index]
|
||||
multidata['er_hint_data'][self.player] = er_hint_data
|
||||
|
||||
hint_data[self.player] = er_hint_data
|
||||
|
||||
def create_item(self, name: str, force_non_progression=False) -> Item:
|
||||
data = item_table[name]
|
||||
@@ -220,4 +225,4 @@ class DKC3World(World):
|
||||
return self.multiworld.random.choice(list(junk_table.keys()))
|
||||
|
||||
def set_rules(self):
|
||||
set_rules(self.multiworld, self.player)
|
||||
set_rules(self)
|
||||
|
||||
Reference in New Issue
Block a user