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)