518 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			518 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | 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) |