Archipelago/worlds/cv64/regions.py

518 lines
28 KiB
Python
Raw Normal View History

from .data import lname, rname, ename
from typing import List, Union
# # # KEY # # #
# "stage" = What stage the Region is a part of. The Region and its corresponding Locations and Entrances will only be
# put in if its stage is active.
# "locations" = The Locations to add to that Region when putting in said Region (provided their add conditions pass).
# "entrances" = The Entrances to add to that Region when putting in said Region (provided their add conditions pass).
region_info = {
"Menu": {},
rname.forest_start: {"stage": rname.forest_of_silence,
"locations": [lname.forest_pillars_right,
lname.forest_pillars_left,
lname.forest_pillars_top,
lname.forest_king_skeleton,
lname.forest_boss_one,
lname.forest_lgaz_in,
lname.forest_lgaz_top,
lname.forest_hgaz_in,
lname.forest_hgaz_top,
lname.forest_weretiger_sw,
lname.forest_boss_two,
lname.forest_weretiger_gate,
lname.forest_dirge_tomb_l,
lname.forest_dirge_tomb_u,
lname.forest_dirge_plaque,
lname.forest_dirge_ped,
lname.forest_dirge_rock1,
lname.forest_dirge_rock2,
lname.forest_dirge_rock3,
lname.forest_dirge_rock4,
lname.forest_dirge_rock5,
lname.forest_corpse_save,
lname.forest_dbridge_wall,
lname.forest_dbridge_sw],
"entrances": [ename.forest_dbridge_gate]},
rname.forest_mid: {"stage": rname.forest_of_silence,
"locations": [lname.forest_dbridge_gate_l,
lname.forest_dbridge_gate_r,
lname.forest_dbridge_tomb_l,
lname.forest_dbridge_tomb_ur,
lname.forest_dbridge_tomb_uf,
lname.forest_bface_tomb_lf,
lname.forest_bface_tomb_lr,
lname.forest_bface_tomb_u,
lname.forest_ibridge,
lname.forest_bridge_rock1,
lname.forest_bridge_rock2,
lname.forest_bridge_rock3,
lname.forest_bridge_rock4,
lname.forest_werewolf_tomb_lf,
lname.forest_werewolf_tomb_lr,
lname.forest_werewolf_tomb_r,
lname.forest_werewolf_plaque,
lname.forest_werewolf_tree,
lname.forest_werewolf_island,
lname.forest_final_sw],
"entrances": [ename.forest_werewolf_gate]},
rname.forest_end: {"stage": rname.forest_of_silence,
"locations": [lname.forest_boss_three],
"entrances": [ename.forest_end]},
rname.cw_start: {"stage": rname.castle_wall,
"locations": [lname.cwr_bottom,
lname.cw_dragon_sw,
lname.cw_boss,
lname.cw_save_slab1,
lname.cw_save_slab2,
lname.cw_save_slab3,
lname.cw_save_slab4,
lname.cw_save_slab5,
lname.cw_rrampart,
lname.cw_lrampart,
lname.cw_pillar,
lname.cw_shelf_visible,
lname.cw_shelf_sandbags,
lname.cw_shelf_torch],
"entrances": [ename.cw_portcullis_c,
ename.cw_lt_skip,
ename.cw_lt_door]},
rname.cw_exit: {"stage": rname.castle_wall,
"locations": [lname.cw_ground_left,
lname.cw_ground_middle,
lname.cw_ground_right]},
rname.cw_ltower: {"stage": rname.castle_wall,
"locations": [lname.cwl_bottom,
lname.cwl_bridge,
lname.cw_drac_sw,
lname.cw_drac_slab1,
lname.cw_drac_slab2,
lname.cw_drac_slab3,
lname.cw_drac_slab4,
lname.cw_drac_slab5],
"entrances": [ename.cw_end]},
rname.villa_start: {"stage": rname.villa,
"locations": [lname.villafy_outer_gate_l,
lname.villafy_outer_gate_r,
lname.villafy_dog_platform,
lname.villafy_inner_gate],
"entrances": [ename.villa_dog_gates]},
rname.villa_main: {"stage": rname.villa,
"locations": [lname.villafy_gate_marker,
lname.villafy_villa_marker,
lname.villafy_tombstone,
lname.villafy_fountain_fl,
lname.villafy_fountain_fr,
lname.villafy_fountain_ml,
lname.villafy_fountain_mr,
lname.villafy_fountain_rl,
lname.villafy_fountain_rr,
lname.villafo_front_r,
lname.villafo_front_l,
lname.villafo_mid_l,
lname.villafo_mid_r,
lname.villafo_rear_r,
lname.villafo_rear_l,
lname.villafo_pot_r,
lname.villafo_pot_l,
lname.villafo_sofa,
lname.villafo_chandelier1,
lname.villafo_chandelier2,
lname.villafo_chandelier3,
lname.villafo_chandelier4,
lname.villafo_chandelier5,
lname.villala_hallway_stairs,
lname.villala_hallway_l,
lname.villala_hallway_r,
lname.villala_bedroom_chairs,
lname.villala_bedroom_bed,
lname.villala_vincent,
lname.villala_slivingroom_table,
lname.villala_slivingroom_mirror,
lname.villala_diningroom_roses,
lname.villala_llivingroom_pot_r,
lname.villala_llivingroom_pot_l,
lname.villala_llivingroom_painting,
lname.villala_llivingroom_light,
lname.villala_llivingroom_lion,
lname.villala_exit_knight],
"entrances": [ename.villa_snipe_dogs,
ename.villa_renon,
ename.villa_to_storeroom,
ename.villa_to_archives,
ename.villa_to_maze]},
rname.villa_storeroom: {"stage": rname.villa,
"locations": [lname.villala_storeroom_l,
lname.villala_storeroom_r,
lname.villala_storeroom_s],
"entrances": [ename.villa_from_storeroom]},
rname.villa_archives: {"stage": rname.villa,
"locations": [lname.villala_archives_entrance,
lname.villala_archives_table,
lname.villala_archives_rear]},
rname.villa_maze: {"stage": rname.villa,
"locations": [lname.villam_malus_torch,
lname.villam_malus_bush,
lname.villam_fplatform,
lname.villam_frankieturf_l,
lname.villam_frankieturf_r,
lname.villam_frankieturf_ru,
lname.villam_fgarden_f,
lname.villam_fgarden_mf,
lname.villam_fgarden_mr,
lname.villam_fgarden_r,
lname.villam_rplatform,
lname.villam_rplatform_de,
lname.villam_exit_de,
lname.villam_serv_path],
"entrances": [ename.villa_from_maze,
ename.villa_copper_door,
ename.villa_copper_skip]},
rname.villa_servants: {"stage": rname.villa,
"locations": [lname.villafo_serv_ent],
"entrances": [ename.villa_servant_door]},
rname.villa_crypt: {"stage": rname.villa,
"locations": [lname.villam_crypt_ent,
lname.villam_crypt_upstream,
lname.villac_ent_l,
lname.villac_ent_r,
lname.villac_wall_l,
lname.villac_wall_r,
lname.villac_coffin_l,
lname.villac_coffin_r,
lname.villa_boss_one,
lname.villa_boss_two],
"entrances": [ename.villa_bridge_door,
ename.villa_end_r,
ename.villa_end_c]},
rname.tunnel_start: {"stage": rname.tunnel,
"locations": [lname.tunnel_landing,
lname.tunnel_landing_rc,
lname.tunnel_stone_alcove_r,
lname.tunnel_stone_alcove_l,
lname.tunnel_twin_arrows,
lname.tunnel_arrows_rock1,
lname.tunnel_arrows_rock2,
lname.tunnel_arrows_rock3,
lname.tunnel_arrows_rock4,
lname.tunnel_arrows_rock5,
lname.tunnel_lonesome_bucket,
lname.tunnel_lbucket_mdoor_l,
lname.tunnel_lbucket_quag,
lname.tunnel_bucket_quag_rock1,
lname.tunnel_bucket_quag_rock2,
lname.tunnel_bucket_quag_rock3,
lname.tunnel_lbucket_albert,
lname.tunnel_albert_camp,
lname.tunnel_albert_quag,
lname.tunnel_gondola_rc_sdoor_l,
lname.tunnel_gondola_rc_sdoor_m,
lname.tunnel_gondola_rc_sdoor_r,
lname.tunnel_gondola_rc,
lname.tunnel_rgondola_station,
lname.tunnel_gondola_transfer],
"entrances": [ename.tunnel_start_renon,
ename.tunnel_gondolas]},
rname.tunnel_end: {"stage": rname.tunnel,
"locations": [lname.tunnel_corpse_bucket_quag,
lname.tunnel_corpse_bucket_mdoor_l,
lname.tunnel_corpse_bucket_mdoor_r,
lname.tunnel_shovel_quag_start,
lname.tunnel_exit_quag_start,
lname.tunnel_shovel_quag_end,
lname.tunnel_exit_quag_end,
lname.tunnel_shovel,
lname.tunnel_shovel_save,
lname.tunnel_shovel_mdoor_l,
lname.tunnel_shovel_mdoor_r,
lname.tunnel_shovel_sdoor_l,
lname.tunnel_shovel_sdoor_m,
lname.tunnel_shovel_sdoor_r],
"entrances": [ename.tunnel_end_renon,
ename.tunnel_end]},
rname.uw_main: {"stage": rname.underground_waterway,
"locations": [lname.uw_near_ent,
lname.uw_across_ent,
lname.uw_first_ledge1,
lname.uw_first_ledge2,
lname.uw_first_ledge3,
lname.uw_first_ledge4,
lname.uw_first_ledge5,
lname.uw_first_ledge6,
lname.uw_poison_parkour,
lname.uw_boss,
lname.uw_waterfall_alcove,
lname.uw_carrie1,
lname.uw_carrie2,
lname.uw_bricks_save,
lname.uw_above_skel_ledge,
lname.uw_in_skel_ledge1,
lname.uw_in_skel_ledge2,
lname.uw_in_skel_ledge3],
"entrances": [ename.uw_final_waterfall,
ename.uw_renon]},
rname.uw_end: {"stage": rname.underground_waterway,
"entrances": [ename.uw_waterfall_skip,
ename.uw_end]},
rname.cc_main: {"stage": rname.castle_center,
"locations": [lname.ccb_skel_hallway_ent,
lname.ccb_skel_hallway_jun,
lname.ccb_skel_hallway_tc,
lname.ccb_skel_hallway_ba,
lname.ccb_behemoth_l_ff,
lname.ccb_behemoth_l_mf,
lname.ccb_behemoth_l_mr,
lname.ccb_behemoth_l_fr,
lname.ccb_behemoth_r_ff,
lname.ccb_behemoth_r_mf,
lname.ccb_behemoth_r_mr,
lname.ccb_behemoth_r_fr,
lname.ccb_behemoth_crate1,
lname.ccb_behemoth_crate2,
lname.ccb_behemoth_crate3,
lname.ccb_behemoth_crate4,
lname.ccb_behemoth_crate5,
lname.ccelv_near_machine,
lname.ccelv_atop_machine,
lname.ccelv_stand1,
lname.ccelv_stand2,
lname.ccelv_stand3,
lname.ccelv_pipes,
lname.ccelv_switch,
lname.ccelv_staircase,
lname.ccff_redcarpet_knight,
lname.ccff_gears_side,
lname.ccff_gears_mid,
lname.ccff_gears_corner,
lname.ccff_lizard_knight,
lname.ccff_lizard_near_knight,
lname.ccff_lizard_pit,
lname.ccff_lizard_corner,
lname.ccff_lizard_locker_nfr,
lname.ccff_lizard_locker_nmr,
lname.ccff_lizard_locker_nml,
lname.ccff_lizard_locker_nfl,
lname.ccff_lizard_locker_fl,
lname.ccff_lizard_locker_fr,
lname.ccff_lizard_slab1,
lname.ccff_lizard_slab2,
lname.ccff_lizard_slab3,
lname.ccff_lizard_slab4,
lname.ccll_brokenstairs_floor,
lname.ccll_brokenstairs_knight,
lname.ccll_brokenstairs_save,
lname.ccll_glassknight_l,
lname.ccll_glassknight_r,
lname.ccll_butlers_door,
lname.ccll_butlers_side,
lname.ccll_cwhall_butlerflames_past,
lname.ccll_cwhall_flamethrower,
lname.ccll_cwhall_cwflames,
lname.ccll_heinrich,
lname.ccia_nitro_crates,
lname.ccia_nitro_shelf_h,
lname.ccia_stairs_knight,
lname.ccia_maids_vase,
lname.ccia_maids_outer,
lname.ccia_maids_inner,
lname.ccia_inventions_maids,
lname.ccia_inventions_crusher,
lname.ccia_inventions_famicart,
lname.ccia_inventions_zeppelin,
lname.ccia_inventions_round,
lname.ccia_nitrohall_flamethrower,
lname.ccia_nitrohall_torch,
lname.ccia_nitro_shelf_i],
"entrances": [ename.cc_tc_door,
ename.cc_lower_wall,
ename.cc_renon,
ename.cc_upper_wall]},
rname.cc_torture_chamber: {"stage": rname.castle_center,
"locations": [lname.ccb_mandrag_shelf_l,
lname.ccb_mandrag_shelf_r,
lname.ccb_torture_rack,
lname.ccb_torture_rafters]},
rname.cc_library: {"stage": rname.castle_center,
"locations": [lname.ccll_cwhall_wall,
lname.ccl_bookcase]},
rname.cc_crystal: {"stage": rname.castle_center,
"locations": [lname.cc_behind_the_seal,
lname.cc_boss_one,
lname.cc_boss_two],
"entrances": [ename.cc_elevator]},
rname.cc_elev_top: {"stage": rname.castle_center,
"entrances": [ename.cc_exit_r,
ename.cc_exit_c]},
rname.dt_main: {"stage": rname.duel_tower,
"locations": [lname.dt_boss_one,
lname.dt_boss_two,
lname.dt_ibridge_l,
lname.dt_ibridge_r,
lname.dt_stones_start,
lname.dt_stones_end,
lname.dt_werebull_arena,
lname.dt_boss_three,
lname.dt_boss_four],
"entrances": [ename.dt_start,
ename.dt_end]},
rname.toe_main: {"stage": rname.tower_of_execution,
"locations": [lname.toe_ledge1,
lname.toe_ledge2,
lname.toe_ledge3,
lname.toe_ledge4,
lname.toe_ledge5,
lname.toe_midsavespikes_r,
lname.toe_midsavespikes_l,
lname.toe_elec_grate,
lname.toe_ibridge,
lname.toe_top],
"entrances": [ename.toe_start,
ename.toe_gate,
ename.toe_gate_skip,
ename.toe_end]},
rname.toe_ledge: {"stage": rname.tower_of_execution,
"locations": [lname.toe_keygate_l,
lname.toe_keygate_r]},
rname.tosci_start: {"stage": rname.tower_of_science,
"locations": [lname.tosci_elevator,
lname.tosci_plain_sr,
lname.tosci_stairs_sr],
"entrances": [ename.tosci_start,
ename.tosci_key1_door,
ename.tosci_to_key2_door]},
rname.tosci_three_doors: {"stage": rname.tower_of_science,
"locations": [lname.tosci_three_door_hall]},
rname.tosci_conveyors: {"stage": rname.tower_of_science,
"locations": [lname.tosci_ibridge_t,
lname.tosci_ibridge_b1,
lname.tosci_ibridge_b2,
lname.tosci_ibridge_b3,
lname.tosci_ibridge_b4,
lname.tosci_ibridge_b5,
lname.tosci_ibridge_b6,
lname.tosci_conveyor_sr,
lname.tosci_exit],
"entrances": [ename.tosci_from_key2_door,
ename.tosci_key3_door,
ename.tosci_end]},
rname.tosci_key3: {"stage": rname.tower_of_science,
"locations": [lname.tosci_key3_r,
lname.tosci_key3_m,
lname.tosci_key3_l]},
rname.tosor_main: {"stage": rname.tower_of_sorcery,
"locations": [lname.tosor_stained_tower,
lname.tosor_savepoint,
lname.tosor_trickshot,
lname.tosor_yellow_bubble,
lname.tosor_blue_platforms,
lname.tosor_side_isle,
lname.tosor_ibridge],
"entrances": [ename.tosor_start,
ename.tosor_end]},
rname.roc_main: {"stage": rname.room_of_clocks,
"locations": [lname.roc_ent_l,
lname.roc_ent_r,
lname.roc_elev_r,
lname.roc_elev_l,
lname.roc_cont_r,
lname.roc_cont_l,
lname.roc_exit,
lname.roc_boss],
"entrances": [ename.roc_gate]},
rname.ct_start: {"stage": rname.clock_tower,
"locations": [lname.ct_gearclimb_battery_slab1,
lname.ct_gearclimb_battery_slab2,
lname.ct_gearclimb_battery_slab3,
lname.ct_gearclimb_side,
lname.ct_gearclimb_corner,
lname.ct_gearclimb_door_slab1,
lname.ct_gearclimb_door_slab2,
lname.ct_gearclimb_door_slab3],
"entrances": [ename.ct_to_door1]},
rname.ct_middle: {"stage": rname.clock_tower,
"locations": [lname.ct_bp_chasm_fl,
lname.ct_bp_chasm_fr,
lname.ct_bp_chasm_rl,
lname.ct_bp_chasm_k],
"entrances": [ename.ct_from_door1,
ename.ct_to_door2]},
rname.ct_end: {"stage": rname.clock_tower,
"locations": [lname.ct_finalroom_door_slab1,
lname.ct_finalroom_door_slab2,
lname.ct_finalroom_fl,
lname.ct_finalroom_fr,
lname.ct_finalroom_rl,
lname.ct_finalroom_rr,
lname.ct_finalroom_platform,
lname.ct_finalroom_renon_slab1,
lname.ct_finalroom_renon_slab2,
lname.ct_finalroom_renon_slab3,
lname.ct_finalroom_renon_slab4,
lname.ct_finalroom_renon_slab5,
lname.ct_finalroom_renon_slab6,
lname.ct_finalroom_renon_slab7,
lname.ct_finalroom_renon_slab8],
"entrances": [ename.ct_from_door2,
ename.ct_renon,
ename.ct_door_3]},
rname.ck_main: {"stage": rname.castle_keep,
"locations": [lname.ck_boss_one,
lname.ck_boss_two,
lname.ck_flame_l,
lname.ck_flame_r,
lname.ck_behind_drac,
lname.ck_cube],
"entrances": [ename.ck_slope_jump,
ename.ck_drac_door]},
rname.renon: {"locations": [lname.renon1,
lname.renon2,
lname.renon3,
lname.renon4,
lname.renon5,
lname.renon6,
lname.renon7]},
rname.ck_drac_chamber: {"locations": [lname.the_end]}
}
def get_region_info(region: str, info: str) -> Union[str, List[str], None]:
return region_info[region].get(info, None)