Files
2026-03-22 10:53:12 -06:00

828 lines
23 KiB
Python

import sys
## All that needs to change to change modes is this INPUT_NAME
## If you are using 3.0 files, change it to "3.0Input"
## Otherwise just set it to "input"
if len(sys.argv) > 1:
if sys.argv[1] == "3.0":
INPUT_NAME = "3.0Input"
print("Running in 3.0 mode")
elif sys.argv[1] == "2.0":
INPUT_NAME = "input"
print("Running in 2.0F mode")
elif sys.argv[1] == "vanilla":
INPUT_NAME = "vanilla_input"
print("Running in Vanilla Mode")
else:
INPUT_NAME = "input"
GAME_MODE_VANILLA = "vanilla"
GAME_MODE_2 = "2.0"
GAME_MODE_3 = "3.0"
### This is a temporary constant to keep track of trainers that have been tracked
INVALID_TRAINER_ABILITIES = {}
if INPUT_NAME == "vanilla_input":
GAME_MODE = GAME_MODE_VANILLA
DEBUG_NAME = "DebugVanilla"
OUTPUT_NAME = "outputVanilla"
TRAINER_DOC_PATH = "trainer_docs_vanilla"
POKEDEX_LENGTH = 493
NAT_DEX_LENGTH = 493
TROUBLE_MONS_NAMES = {}
SCRIPT_DATA = "vanillaScripts"
TRAINER_BATTLE = '_TRAINER_BTL_SET'
MULTI_TRAINER_BATTLE = '_TRAINER_MULTI_BTL_SET'
TRAINER_BATTLE_SUBSTRINGS = [
TRAINER_BATTLE,
MULTI_TRAINER_BATTLE
]
if INPUT_NAME == "input":
GAME_MODE = GAME_MODE_2
DEBUG_NAME = "Debug"
OUTPUT_NAME = "output"
TRAINER_DOC_PATH = "trainer_docs"
POKEDEX_LENGTH = 1010
NAT_DEX_LENGTH = 1455
TROUBLE_MONS_NAMES = {
1067: "Galarian Farfetch'd",
1242: 'Ash-Greninja',
1285: 'Meowstic-F',
1310: 'Rockruff Own-Tempo',
1441: 'Indeedee-F',
1454: 'Basculegion-F',
1456: 'Oinkologne-F',
}
SCRIPT_DATA = "scriptdata"
TRAINER_BATTLE = '_TRAINER_BTL_SET'
MULTI_TRAINER_BATTLE = '_TRAINER_MULTI_BTL_SET'
TRAINER_BATTLE_SUBSTRINGS = [
TRAINER_BATTLE,
MULTI_TRAINER_BATTLE
]
elif INPUT_NAME == "3.0Input":
GAME_MODE = GAME_MODE_3
DEBUG_NAME = "3.0Debug"
OUTPUT_NAME = "3.0Output"
TRAINER_DOC_PATH = "trainer_docs_3.0"
POKEDEX_LENGTH = 1025
NAT_DEX_LENGTH = 1528
TROUBLE_MONS_NAMES = {
1074: "Galarian Farfetch'd",
1260: 'Partner Greninja',
1302: 'Meowstic-F',
1326: 'Rockruff Own-Tempo',
1396: 'Indeedee-F',
1410: 'Basculegion-F',
1412: 'Oinkologne-F',
}
SCRIPT_DATA = "relumi_scripts"
## The names of these can be found at the end of the trainer.ev file
TRAINER_BATTLE_SINGLES_SCRIPT = "ev_set_trainer_id_for_current_gamemode_scripted_battle"
TRAINER_BATTLE_DOUBLES_SCRIPT = "ev_set_trainer_id_for_current_gamemode_scripted_double_battle"
TRAINER_BATTLE_MULTI_SCRIPT = "ev_set_trainer_id_for_current_gamemode_scripted_multi_battle"
TRAINER_BATTLE_MULTI_SUPPORT_SCRIPT = "ev_set_trainer_id_for_current_gamemode_partner_id"
TRAINER_BATTLE_SUBSTRINGS = [
TRAINER_BATTLE_SINGLES_SCRIPT,
TRAINER_BATTLE_DOUBLES_SCRIPT,
TRAINER_BATTLE_MULTI_SCRIPT
]
GYM_AREA_NAME = "GYM"
E4_AREA_NAME = "C10"
ROOM_AREA_NAME = "R0101"
PEARL_SPEAR_PILLAR = "d05r0115"
EVE_AREA_NAME = "SODATEYA"
MORIMOTO = "MORIMOTO_01"
SUPPORT_AREA_NAME = "SUPPORT"
MAP_FILE_PREFIX = "SP_"
# Gym Leader lookup based on the file name
GYM_LEADER_LOOKUP = {
"c03gym0101":"roark",
"c04gym0102":"gardenia",
"c05gym0113":"fantina",
"c07gym0101":"maylene",
"c06gym0101":"wake",
"c02gym0101":"byron",
"c09gym0101":"candice",
"c08gym0103":"volkner",
"c10r0111":"cynthia",
"c10r0109":"lucian",
"c10r0107":"flint",
"c10r0105":"bertha",
"c10r0103":"aaron",
}
# Formats for the different battles
SINGLE_FORMAT = "Single Battle"
DOUBLE_FORMAT = "Double Battle"
MULTI_FORMAT = "Multi Battle Enemy"
MULTI_PARTNER_FORMAT = "Multi Battle Partner"
EVIL_TYPE = "Evil"
# Needed to hard code Wurmple's and Goomy's target evos
WURMPLE = 265
SILCOON = 266
CASCOON = 268
GOOMY = 704
SLIGGOO = 705
HISUI_SLIGGOO = 1287
SMEARGLE = 235
ENCOUNTER_TABLE_MAX_BUFFER = 2000
ENCOUNTER_VARIANT_JSON_HANDLER = 255
# Tracker Variables
GALACTIC_HQ = "Galactic HQ"
GALACTIC_HQ_TRACKER_VAR = "lmpt-33"
LEAGUE = 'Pokemon League'
LEAGUE_TRACKER_VAR = 'lmpt-61'
RENEGADE = "Renegade Park"
RENEGADE_TRACKER_VAR = "lmpt-45" #This is Route 221 since there are no encounters in Renegade Park
DISTORTION = "Distortion Room"
DISTORTION_TRACKER_VAR = 'lmpt-56' #This is for Spear Pillar bc no encounters in Distortion Room
TROPHY_GARDEN_NAME = 'urayama'
TROPHY_GARDEN_TRACKER_VAR = 'lmpt-39'
TG_ETERNA_BUILDING = 'T.G. Eterna Bldg'
TG_ETERNA_BUILDING_TRACKER_VAR = 'lmpt-19'
POKEMON_LEAGUE = "Pokémon League"
POKEMON_LEAGUE_TRACKER_VAR = 'lmpt-61'
TRAINER_SCHOOL = 'Trainers\u2019 School'
TRAINER_SCHOOL_TRACKER_VAR = 'lmpt-7'
MANSION = "Pokémon Mansion"
MANSION_TRACKER_VAR = "lmpt-65"
TRACKER_VARS = {
GALACTIC_HQ: GALACTIC_HQ_TRACKER_VAR,
LEAGUE: LEAGUE_TRACKER_VAR,
RENEGADE: RENEGADE_TRACKER_VAR,
DISTORTION: DISTORTION_TRACKER_VAR,
TG_ETERNA_BUILDING: TG_ETERNA_BUILDING_TRACKER_VAR,
POKEMON_LEAGUE: POKEMON_LEAGUE_TRACKER_VAR,
TRAINER_SCHOOL: TRAINER_SCHOOL_TRACKER_VAR,
MANSION: MANSION_TRACKER_VAR,
}
EGG_GROUPS = {
0: "None",
1: "Monster",
2: "Water 1",
3: "Bug",
4: "Flying",
5: "Field",
6: "Fairy",
7: "Grass",
8: "Human-Like",
9: "Water 3",
10: "Mineral",
11: "Amorphous",
12: "Water 2",
13: "Ditto",
14: "Dragon",
15: "No Eggs",
}
SMEARGLE_NO_SKETCH_LIST = [ 0, 119, 165, 166, 214, 448 ]
HIGHEST_EGG_GROUP_ID = 15
BAD_ENCOUNTER_LIST = ["Gigantamax", "Eternamax", "Mega ", "Totem "]
STARTERS = ["piplup", "turtwig", "chimchar"]
MASTER_TRAINER_TYPES = [
"fire",
"water",
"electric",
"grass",
"ice",
"fighting",
"poison",
"ground",
"flying",
"psychic",
"bug",
"rock",
"ghost",
"dragon",
"dark",
"steel",
"fairy"
]
CELEBI = "Celebi"
AMPHAROS_PLACE_HOLDER = "AMPHAROS"
WRONG_FARFETCHD = "FARFETCHD"
RIGHT_FARFETCHD = "Farfetch\u2019d"
PLACE_DATA_METHOD = "Place Data"
SCRIPTED_METHOD = "Scripted"
TRACKER_METHOD = "Tracker"
E4_METHOD = "Elite Four Trainers"
DOCS_METHOD = "Docs"
GENDER = {"0": "MALE", "1": "FEMALE", "2": "NEUTRAL"}
MALE = "male"
FEMALE = "female"
MALE_GENDER_CONSTANT = 0
FEMALE_GENDER_CONSTANT = 254
GENDERLESS_CONSTANT = 255
MASTER_TRAINER = "Master"
ROUTE_224 = "R224"
ROUTE_210 = "R210B"
BAD_SUPPORT_LOOKUP1 = "ev_r207_func_17" ### These bad lookups are for Lucas and Dawn on Route 207
BAD_SUPPORT_LOOKUP2 = "ev_r207_func_20"
R224_BAD_SUPPORT_LOOKUP1 = "ev_r224_support_dawn_battle_party"
R224_BAD_SUPPORT_LOOKUP2 = "ev_r224_support_lucas_battle_party"
R210B_BAD_SUPPORT_LOOKUP1 = "ev_r210b_support_set_dawn_party_1"
R210B_BAD_SUPPORT_LOOKUP2 = "ev_r210b_support_set_lucas_party_1"
MULTI_PARTNER_BATTLE = "MultiPartner"
MULTI_BATTLE = "MultiBattle"
DOUBLE_BATTLE = "DoubleBattle"
SINGLE_BATTLE_CALLBACK = "SingleCallback"
SINGLE_BATTLE = "SingleBattle"
SUPPORT_LINK = "Support"
CITY_TRAINER = 'City'
LEAGUE_TRAINER = "League"
#Lookup values for ev_script
LDVAL_LOOKUP = "LDVAL"
MASTER_TRAINER_LOOKUP = "_LDVAL(@SCWK_PARAM1"
CELEBI_LOOKUP = "_LDVAL(@CON_TEMP05"
EVIL_LOOKUP = "LDVAL(@SCWK_TEMP"
REMATCH_SUBSTRING = "rematch"
DESIRED_ORDER = [ 'areaName', 'zoneName', 'zoneId', 'trainerId', 'rematch', 'name', 'type', 'method', 'format', 'link' ]
BARRY = "barry"
CEDRIC = "Cedric"
REPEAT_TRAINERS_LIST = ["Grunt", "Lucas", "Dawn", "Barry"]
STAGE_1_GRASS_KNOT_WEIGHT = 25
STAGE_2_GRASS_KNOT_WEIGHT = 25
STAGE_3_GRASS_KNOT_WEIGHT = 50
STAGE_4_GRASS_KNOT_WEIGHT = 100
MAX_GRASS_KNOT_WEIGHT = 200
MIN_GRASS_KNOT_POWER = 20
STAGE_1_GRASS_KNOT_POWER = 40
STAGE_2_GRASS_KNOT_POWER = 60
STAGE_3_GRASS_KNOT_POWER = 80
STAGE_4_GRASS_KNOT_POWER = 100
MAX_GRASS_KNOT_POWER = 120
KG_TO_LBS_CONSTANT = 0.453592
FT_TO_CM_CONSTANT = 30.48
IN_TO_CM_CONSTANT = 2.54
TEAM_REGEX = "Team \d+"
LDVAL_PATTERN = r"_LDVAL\(@(.*),\s?([1-9][0-9]*)\)"
TRAINER_PATTERN = r"_TRAINER_BTL_SET\s*\(\s*('?[^']+'?|@\w+|\d+)\s*,\s*('?[^']+'?|@\w+|\d+)\s*\)"
MULTI_TRAINER_PATTERN = r"_TRAINER_MULTI_BTL_SET\s*\(\s*((?:'[^']*'|@\w+|\d+)\s*(?:,\s*(?:'[^']*'|@\w+|\d+)\s*)*)\)"
CALL_PATTERN = r"_CALL\('([^']*)'\)" # Returns the string that is contained within the single quotes of a CALL function
HONEY_TREE_MATCH_REGEX = r"\[(.*?)\]\s*=\s*\{(.*?)\}"
HONEY_TREE_CONST_REGEX = r"const\s+int32_t\s+HONEY_TREES\[\s*NUM_ZONE_ID\s*\]\[\s*10\s*\]\s*=\s*\{\s*([\s\S]*?)\};"
HONEY_TREE = "Honey Tree"
# Format for getting Fixed Shop items
FIXED_SHOP = "_SHOP_OPEN_FIXED"
FIXED_SHOP_PATTERN = r"_SHOP_OPEN_FIXED\((\d{1,2})\)"
TROPHY_GARDEN = "Daily Trophy Garden"
TROPHY_GARDEN_RATE = "5%"
TROPHY_GARDEN_LEVEL = 26
TROPHY_GARDEN_ZONE_ID = 297
POKEMON_MANSION_ZONE_ID = 380
SURFING_INCENSE = "Surfing Incense"
INCENSE = "Incense"
SWARM = "tairyo"
RADAR = "swayGrass"
REGULAR_ENC = "ground_mons"
DAY_ENC = "day"
NIGHT_ENC = "night"
SURF_ENC = "water_mons"
OLD_ENC = "boro_mons"
GOOD_ENC = "ii_mons"
SUPER_ENC = "sugoi_mons"
REGULAR_ENC_LIST = [REGULAR_ENC, DAY_ENC, NIGHT_ENC]
ROD_ENC_LIST = [OLD_ENC, GOOD_ENC, SUPER_ENC]
INCENSE_LIST = ["gbaRuby", "gbaSapp", "gbaEme", "gbaFire", "gbaLeaf"]
OG_TOP_10 = ["Magikarp", "Gyarados", "Golbat", "Graveler", "Tentacruel", "Nosepass","Steelix","Golduck","Lunatone","Solrock"]
NEW_TOP_10 = ["Golbat", 54,
"Magikarp", 50,
"Gyarados", 49,
"Haunter", 35,
"Lunatone", 33,
"Solrock", 33,
"Chimecho", 32,
"Graveler", 28,
"Dusclops", 27,
"Bronzong", 27,
]
ZONE_ORDER = [
"Route 201",
"Lake Verity (Before)",
"Route 202",
"Jubilife City",
"Route 204 South",
"Route 203",
"Oreburgh Gate 1F",
"Oreburgh Gate B1F",
"Oreburgh City",
"Oreburgh Mine",
"Oreburgh Mine B1F",
"Oreburgh Gym",
"Route 204 North",
"Floaroma Town",
"Floaroma Meadow",
"Valley Windworks",
"Route 205 South",
"Eterna Forest",
"Eterna Forest (Cut Tree Path)",
"Route 205 North",
"Route 211 West",
"Route 211 East",
"Route 216",
"Route 206",
"Eterna Gym",
"Eterna City",
"Route 207",
"Wayward Cave",
"Route 208",
"Hearthome City",
"Amity Square",
"Hearthome Gym",
"Route 212 North",
"Route 209",
"Lost Tower",
"Lost Tower 1F",
"Lost Tower 2F",
"Lost Tower 3F",
"Lost Tower 4F",
"Lost Tower 5F",
"Solaceon Town",
"Solaceon Ruins",
"Route 210 South",
"Route 215",
"Veilstone Gym",
"Veilstone City",
"Route 214",
"Seven Starts Restaurant",
"Route 213",
"Route 212 South",
"Pastoria City",
"Pastoria Gym",
"Route 210 North",
"Celestic Town",
"Route 218",
"Fuego Ironworks (Outside)",
"Fuego Ironworks (Inside)",
"Route 219",
"Route 220",
"Route 221",
"Ramanas Park",
"Canalave City",
"Iron Island (Outside)",
"Iron Island 1F",
"Iron Island B1F Left Cave",
"Iron Island B1F Right Cave",
"Iron Island B2F Left Cave",
"Iron Island B3F Right Cave",
"Iron Island B3F",
"Canalave Gym",
"Valor Lakefront",
"Lake Valor (Before)",
"Valor Cavern",
"Lake Verity (After)",
"Route 217",
"Snowpoint City",
"Snowpoint Gym",
"Galactic HQ",
"Team Galactic HQ 1F",
"Team Galactic HQ 2F",
"Team Galactic HQ 3F",
"Team Galactic HQ 4F",
"Team Galactic HQ B1F",
"Team Galactic HQ B2F",
"Mt. Coronet 3F",
"Mt. Coronet 4F",
"Mt. Coronet Route 211 Entrance",
"Mt. Coronet 6F",
"Mt. Coronet 7F",
"Mt. Coronet Summit",
"Spear Pillar",
"Distortion Room",
"Route 222",
"Sunyshore City",
"Sunyshore Gym",
"Route 223",
"Route 224",
"Victory Road 1F",
"Victory Road 2F",
"Victory Road B1F",
"Victory Road 1F Back 1",
"Victory Road 1F Back 2",
"Victory Road 1F Back 3",
"Pokemon League",
"Fight Area",
"Route 225",
"Route 226",
"Route 227",
"Route 228",
"Route 229",
"Route 230",
"Stark Mountain (Outside)",
"Stark Mountain (Entrance)",
"Stark Mountain (Interior)",
"Sandgem",
"Sandgem Town",
]
DOCS_ZONE_ORDER = [
"Twinleaf Town",
"Route 201",
"Lake Verity (Before)",
"Route 202",
"Jubilife City",
"Route 204 (South)",
"Ravaged Path",
"Route 203",
"Oreburgh Gate - 1F",
"Oreburgh Gate - B1F",
"Oreburgh City",
"Oreburgh Mine B1F",
"Oreburgh Mine B2F",
"Oreburgh - Gym",
"Route 204 (North)",
"Floaroma Town",
"Valley Windworks (Outside)",
"Floaroma Meadow",
"Valley Windworks (Inside)",
"Route 205 (South)",
"Eterna Forest",
"Eterna Forest (Overworld)",
"Old Chateau - Lobby",
"Old Chateau - Dining Room",
"Old Chateau - 2F Small Rooms",
"Old Chateau - 2F Hallway",
"Old Chateau - Hallway Room 1",
"Old Chateau - Hallway Room 2",
"Old Chateau - Hallway Room 3",
"Old Chateau - Hallway Room 4",
"Old Chateau - Hallway Room 5",
"Route 205 (North)",
"Eterna City",
"Route 211 (West)",
"Mt. Coronet - Route 211 Entrance",
"Route 211 (East)",
"Mt. Coronet - Tunnel to Route 211 Entrance",
"Mt. Coronet - B1F",
"Mt. Coronet - Route 216 Entrance",
"Route 216",
"Eterna - Gym Main Room",
"T.G. Building 1F",
"T.G. Building 2F",
"T.G. Building 3F",
"T.G. Building 4F",
"Route 206",
"Route 207",
"Wayward Cave - Main Area",
"Wayward Cave - Secret Area",
"Mt. Coronet - Route 207 Entrance",
"Route 208",
"Hearthome City",
"Amity Square",
"Hearthome - Gym Lobby",
"Hearthome - Gym Trainer Room 1",
"Hearthome - Gym Trainer Room 2",
"Hearthome - Gym Question 2",
"Hearthome - Gym Trainer Room 3",
"Hearthome - Gym Question 3",
"Hearthome - Gym Trainer Room 4",
"Hearthome - Gym Question 4",
"Hearthome - Gym Trainer Room 5",
"Hearthome - Gym Trainer Room 6",
"Hearthome - Gym Trainer Room 7",
"Hearthome - Gym Trainer Room 8",
"Hearthome - Gym Leader Room",
"Route 212 (North)",
"Pokémon Mansion - Lobby",
"Pokémon Mansion - Rooms (Left)",
"Pokémon Mansion - Backlot Room",
"Trophy Garden",
"Route 209",
"Lost Tower - 1F",
"Lost Tower - 2F",
"Lost Tower - 3F",
"Lost Tower - 4F",
"Lost Tower - 5F",
"Solaceon Town",
"Solaceon Ruins - 2F",
"Solaceon Ruins - 1F",
"Solaceon Ruins - F Room Dead End (NE)",
"Solaceon Ruins - 1F Dead End (NW)",
"Solaceon Ruins - F Room",
"Solaceon Ruins - 1F Dead End (SE)",
"Solaceon Ruins - R Room",
"Solaceon Ruins - F Room Dead End (SE)",
"Solaceon Ruins - N Room Dead End (SE)",
"Solaceon Ruins - E Room Dead End (SW)",
"Solaceon Ruins - R Room Dead End (NW)",
"Solaceon Ruins - R Room Dead End (SW)",
"Solaceon Ruins - I Room",
"Solaceon Ruins - N Room",
"Solaceon Ruins - E Room",
"Solaceon Ruins - D Room",
"Solaceon Ruins - I Room Dead End (SE)",
"Solaceon Ruins - N Room Dead End (NW)",
"Solaceon Ruins - E Room Dead End (SE)",
"Route 210 (South)",
"Route 210 - Café Cabin",
"Route 215",
"Veilstone - Gym",
"Veilstone City",
"Route 214",
"Ruin Maniac Cave - Small",
"Ruin Maniac Cave - Large",
"Maniac Tunnel",
"Valor Lakefront",
"Valor Lakefront - House 2 (NW)",
"Route 213",
"Pastoria City",
"Great Marsh - Area 1",
"Great Marsh - Area 2",
"Great Marsh - Area 3",
"Great Marsh - Area 4",
"Great Marsh - Area 5",
"Great Marsh - Area 6",
"Route 212 (South)",
"Pastoria - Gym",
"Route 210 (North)",
"Celestic Town",
"Route 219",
"Route 220",
"Route 221",
"Ramanas Park",
"Route 218",
"Fuego Ironworks (Outside)",
"Fuego Ironworks (Inside)",
"Canalave City",
"Iron Island (Overworld)",
"Iron Island - 1F",
"Iron Island - B1F Left",
"Iron Island - B1F Right",
"Iron Island - B2F Left (Riley's Room)",
"Iron Island - B2F Right",
"Iron Island - B3F",
"Iron Island - B3F Right",
"Canalave - Gym",
"Valor Lakefront",
"Valor Lakefront - Restaurant",
"Lake Valor (Before)",
"Valor Cavern",
"Lake Verity (After)",
"Route 217",
"Snowpoint City",
"Snowpoint - Gym",
"Galactic HQ",
"Team Galactic HQ - 1F",
"Team Galactic HQ - 2F",
"Team Galactic HQ - 3F",
"Team Galactic HQ - 4F",
"Team Galactic HQ - B1F",
"Team Galactic HQ - B2F",
"Team Galactic HQ - Lake Trio Room",
"Acuity Lakefront",
"Snowpoint Temple - 1F",
"Snowpoint Temple - B1F",
"Snowpoint Temple - B2F",
"Snowpoint Temple - B3F",
"Snowpoint Temple - B4F",
"Snowpoint Temple - B5F",
"Lake Acuity (After)",
"Mt. Coronet - 2F",
"Mt. Coronet - 3F",
"Mt. Coronet - Snow Area",
"Mt. Coronet - 4F (Waterfall)",
"Mt. Coronet - 4F (Towards Spear Pillar)",
"Mt. Coronet - Summit",
"Mt. Coronet - 5F",
"Mt. Coronet - 6F",
"Spear Pillar",
"Sendoff Spring",
"Lake Valor (After)",
"Turnback Cave - Entrance",
"Route 222",
"Route 222 - House 1 (Left)",
"Sunyshore City",
"Sunyshore - Gym",
"Sunyshore - Gym Room 1",
"Sunyshore - Gym Room 2",
"Sunyshore - Gym Room 3",
"Route 223",
"Victory Road - 1F",
"Victory Road - 2F",
"Victory Road - B1F",
"Victory Road - 1F Back (Marley)",
"Victory Road - 1F Back (Entrance)",
"Victory Road - 1F Back (214 Exit)",
"Pokemon League",
"Fight Area",
"Route 224",
"Turnback Cave - d17r0103",
"Turnback Cave - d17r0104",
"Turnback Cave - d17r0105",
"Turnback Cave - d17r0106",
"Turnback Cave - d17r0107",
"Turnback Cave - d17r0108",
"Turnback Cave - d17r0109",
"Turnback Cave - d17r0110",
"Turnback Cave - d17r0111",
"Turnback Cave - d17r0112",
"Turnback Cave - d17r0113",
"Turnback Cave - d17r0114",
"Turnback Cave - d17r0115",
"Turnback Cave - d17r0116",
"Turnback Cave - d17r0117",
"Turnback Cave - d17r0118",
"Turnback Cave - d17r0119",
"Turnback Cave - d17r0120",
"Turnback Cave - d17r0121",
"Turnback Cave - d17r0122",
"Route 225",
"Route 226",
"Route 227",
"Route 228",
"Route 229",
"Resort Area",
"Route 230",
"Stark Mountain (Overworld)",
"Stark Mountain - Entrance",
"Stark Mountain - Interior",
"Sandgem",
"Sandgem Town",
]
# This will make sure that defined locations in the mapper won't get grouped together incorrectly
EXCLUSIVE_ZONE_IDS = [
0, # Jubilife City
355, # Route 202
429, # Sandgem Town
346, # Verity Lakefront
326, # Lake Verity Cavern
328, # Lake Valor Cavern
331, # Lake Acuity Cavern
265, # Turnback Cave
211, # Mt. Coronet 6F
216, # Spear Pillar
624, # Distortion Room
218, # Hall of Origin
354, # Route 201
422, # Twinleaf Town
323, # Lake Verity
400, # Route 218
24, # Canalave City
446, # Solaceon Town
225, # Solaceon Ruins
368, # Lost Tower
367, # Route 209
252, # Ravaged Path
358, # Route 204 (North)
357, # Route 204 (South)
438, # Floaroma Town
253, # Floaroma Meadow
201, # Fuego Ironworks (Outside)
202, # Fuego Ironworks (Inside)
359, # Route 205 South
361, # Route 205 North
197, # Valley Windworks (Outside)
198, # Valley Windworks (Inside)
200, # Eterna Forest
199, # Eterna Forest (Outside)
306, # Old Chateau (Lobby)
307, # Old Chateau (Dining Room)
308, # Old Chateau (2F Side Rooms)
309, # Old Chateau (2F Hallway)
310, # Old Chateau (Room 1 Hallway)
311, # Old Chateau (Room 2 Hallway)
312, # Old Chateau (Room 3 Hallway)
313, # Old Chateau (Room 4 Hallway)
314, # Old Chateau (Room 5 Hallway)
54, # Eterna City
62, # T.G. Building (1F)
63, # T.G. Building (2F)
64, # T.G. Building (3F)
65, # T.G. Building (4F)
362, # Route 206
292, # Wayward Cave
293, # Wayward Cave (Secret Area)
364, # Route 207
356, # Route 203
255, # Oreburgh Gate (1F)
256, # Oreburgh Gate (B1F)
38, # Oreburgh City
195, # Oreburgh Mine (B1F)
196, # Oreburgh Mine (B2F)
250, # Renegade Park
404, # Route 221
485, # Route 220
403, # Route 219
365, # Route 208
74, # Hearthome City
96, # Amity Square
377, # Route 211 (West)
379, # Route 212 (North)
383, # Route 212 (South)
380, # Pokémon Mansion
205, # Mt. Coronet 3F
204, # Mt. Coronet 2F
203, # Mt. Coronet Route 207
213, # Mt. Coronet 216 Entrance
215, # Mt. Coronet B1F
214, # Mt. Coronet 211 Entrance
212, # Mt. Coronet Tunnel To 211 Entrance
208, # Mt. Coronet 4F
207, # Mt. Coronet Summit
999, # Regice Ruins
210, # Mt. Coronet 5F
209, # Mt. Coronet 4F To Spear Pillar
206, # Mt. Coronet Snow Area
378, # Route 211 (East)
456, # Celestic Town
375, # Route 210 (North)
373, # Route 210 (South)
395, # Route 216
397, # Route 217
351, # Acuity Lakefront
330, # Lake Acuity
286, # Snowpoint Temple (1F)
287, # Snowpoint Temple (B1F)
288, # Snowpoint Temple (B2F)
289, # Snowpoint Temple (B3F)
290, # Snowpoint Temple (B4F)
291, # Snowpoint Temple (B5F)
159, # Snowpoint City
394, # Route 215
315, # T.G. H.Q. (1F)
316, # T.G. H.Q. (2F)
317, # T.G. H.Q. (3F)
318, # T.G. H.Q. (4F)
319, # T.G. H.Q. (B1F)
320, # T.G. H.Q. (B2F)
315, # T.G. H.Q. Lake Trio
315, # T.G. H.Q. Hall To Lake Trio
123, # Veilstone City
392, # Route 214
296, # Maniac Tunnel
352, # Spring Path
263, # Sendoff Spring
998, # Distortion World
327, # Lake Valor
385, # Route 213
347, # Valor Lakefront
219, # The Great Marsh (Area 1-2)
221, # The Great Marsh (Area 3-4)
223, # The Great Marsh (Area 5-6)
110, # Pastoria City
407, # Route 222
486, # Route 223
142, # Sunyshore City
169, # Pokémon League (Pre-Victory Road)
411, # Route 224
244, # Victory Road (1F)
245, # Victory Road (2F)
246, # Victory Road (B1F)
247, # Victory Road (1F Back Marley)
248, # Victory Road (1F Back Entrance)
249, # Victory Road (1F Back 214 Exit)
167, # Pokémon League (Outside)
490, # Seabreak Path
285, # Flower Paradise
336, # Battle Tower
186, # Fight Area
412, # Route 225
465, # Survival Area
472, # Battle House
487, # Route 226
414, # Route 227
416, # Route 228
997, # Regirock Ruins
420, # Route 229
489, # Route 230
473, # Resort Area
259, # Stark Mountain (Outside)
260, # Stark Mountain (Entrance)
261, # Stark Mountain (Interior)
262, # Stark Mountain (Heatran Room)
996, # Registeel Ruins
298, # Iron Island (Outside)
299, # Iron Island (1F)
300, # Iron Island (B1F Left)
301, # Iron Island (B1F Right)
302, # Iron Island (B2F Right)
303, # Iron Island (B2F Left)
304, # Iron Island (B3F)
257, # Fullmoon Island
332, # Newmoon Island
]