summaryrefslogtreecommitdiff
path: root/include/constants
diff options
context:
space:
mode:
Diffstat (limited to 'include/constants')
-rw-r--r--include/constants/apprentice.h102
-rw-r--r--include/constants/battle_anim.h2
-rw-r--r--include/constants/battle_arena.h20
-rw-r--r--include/constants/battle_dome.h163
-rw-r--r--include/constants/battle_factory.h37
-rw-r--r--include/constants/battle_frontier.h94
-rw-r--r--include/constants/battle_frontier_mons.h899
-rw-r--r--include/constants/battle_frontier_trainers.h309
-rw-r--r--include/constants/battle_palace.h19
-rw-r--r--include/constants/battle_pike.h72
-rw-r--r--include/constants/battle_pyramid.h61
-rw-r--r--include/constants/battle_script_commands.h79
-rw-r--r--include/constants/battle_setup.h2
-rw-r--r--include/constants/battle_tent.h32
-rw-r--r--include/constants/battle_tent_mons.h173
-rw-r--r--include/constants/battle_tent_trainers.h99
-rw-r--r--include/constants/battle_tower.h41
-rw-r--r--include/constants/berry.h28
-rw-r--r--include/constants/cable_club.h15
-rw-r--r--include/constants/coins.h6
-rw-r--r--include/constants/contest.h19
-rw-r--r--include/constants/daycare.h27
-rw-r--r--include/constants/easy_chat.h9
-rwxr-xr-xinclude/constants/event_object_movement_constants.h4
-rw-r--r--include/constants/field_poison.h12
-rw-r--r--include/constants/field_specials.h78
-rw-r--r--include/constants/field_tasks.h13
-rw-r--r--include/constants/field_weather.h24
-rw-r--r--include/constants/flags.h430
-rw-r--r--include/constants/frontier_util.h75
-rw-r--r--include/constants/global.h34
-rw-r--r--include/constants/item.h20
-rw-r--r--include/constants/item_effects.h4
-rw-r--r--include/constants/items.h23
-rwxr-xr-xinclude/constants/layouts.h30
-rwxr-xr-xinclude/constants/map_groups.h202
-rw-r--r--include/constants/mauville_man.h10
-rw-r--r--include/constants/mauville_old_man.h12
-rwxr-xr-xinclude/constants/metatile_behaviors.h2
-rw-r--r--include/constants/metatile_labels.h250
-rw-r--r--include/constants/mevent.h15
-rw-r--r--include/constants/opponents.h1716
-rw-r--r--include/constants/party_menu.h132
-rw-r--r--include/constants/pokemon.h335
-rw-r--r--include/constants/script_menu.h168
-rw-r--r--include/constants/trade.h116
-rw-r--r--include/constants/trainer_hill.h61
-rw-r--r--include/constants/trainers.h86
-rw-r--r--include/constants/tv.h137
-rw-r--r--include/constants/union_room.h28
-rw-r--r--include/constants/vars.h92
-rw-r--r--include/constants/weather.h104
52 files changed, 5054 insertions, 1467 deletions
diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h
index 9db58bb8e..f1bea5e8c 100644
--- a/include/constants/apprentice.h
+++ b/include/constants/apprentice.h
@@ -1,22 +1,90 @@
#ifndef GUARD_CONSTANTS_APPRENTICE_H
#define GUARD_CONSTANTS_APPRENTICE_H
-#define APPRENTICE_ASK_WHICH_LEVEL 0
-#define APPRENTICE_ASK_3SPECIES 1
-#define APPRENTICE_ASK_2SPECIES 2
-#define APPRENTICE_ASK_MOVES 3
-#define APPRENTICE_ASK_GIVE 4
-#define APPRENTICE_ASK_YES_NO 6
-
-#define APPRENTICE_BUFF_SPECIES1 0
-#define APPRENTICE_BUFF_SPECIES2 1
-#define APPRENTICE_BUFF_SPECIES3 2
-#define APPRENTICE_BUFF_MOVE1 3
-#define APPRENTICE_BUFF_MOVE2 4
-#define APPRENTICE_BUFF_ITEM 5
-#define APPRENTICE_BUFF_NAME 6
-#define APPRENTICE_BUFF_EASY_CHAT 7
-#define APPRENTICE_BUFF_LEVEL 8
-#define APPRENTICE_BUFF_SPECIES4 9
+#define NUM_APPRENTICES 16
+#define APPRENTICE_SPECIES_COUNT 10
+
+#define NUM_WHICH_MON_QUESTIONS MULTI_PARTY_SIZE
+#define NUM_WHICH_MOVE_QUESTIONS 5
+// + 2 below is 1 each for the lead mon question and the win speech question
+#define MAX_APPRENTICE_QUESTIONS NUM_WHICH_MON_QUESTIONS + NUM_WHICH_MOVE_QUESTIONS + 2
+
+#define APPRENTICE_LVL_MODE_50 (FRONTIER_LVL_50 + 1)
+#define APPRENTICE_LVL_MODE_OPEN (FRONTIER_LVL_OPEN + 1)
+
+#define APPRENTICE_FUNC_GAVE_LVLMODE 0
+#define APPRENTICE_FUNC_SET_LVLMODE 1
+#define APPRENTICE_FUNC_SET_ID 2
+#define APPRENTICE_FUNC_SHUFFLE_SPECIES 3
+#define APPRENTICE_FUNC_RANDOMIZE_QUESTIONS 4
+#define APPRENTICE_FUNC_ANSWERED_QUESTION 5
+#define APPRENTICE_FUNC_IS_FINAL_QUESTION 6
+#define APPRENTICE_FUNC_MENU 7
+#define APPRENTICE_FUNC_PRINT_MSG 8
+#define APPRENTICE_FUNC_RESET 9
+#define APPRENTICE_FUNC_CHECK_GONE 10
+#define APPRENTICE_FUNC_GET_QUESTION 11
+#define APPRENTICE_FUNC_GET_NUM_PARTY_MONS 12
+#define APPRENTICE_FUNC_SET_PARTY_MON 13
+#define APPRENTICE_FUNC_INIT_QUESTION_DATA 14
+#define APPRENTICE_FUNC_FREE_QUESTION_DATA 15
+#define APPRENTICE_FUNC_BUFFER_STRING 16
+#define APPRENTICE_FUNC_SET_MOVE 17
+#define APPRENTICE_FUNC_SET_LEAD_MON 18
+#define APPRENTICE_FUNC_OPEN_BAG 19
+#define APPRENTICE_FUNC_TRY_SET_HELD_ITEM 20
+#define APPRENTICE_FUNC_SAVE 21
+#define APPRENTICE_FUNC_SET_GFX_SAVED 22
+#define APPRENTICE_FUNC_SET_GFX 23
+#define APPRENTICE_FUNC_SHOULD_LEAVE 24
+#define APPRENTICE_FUNC_SHIFT_SAVED 25
+
+#define APPRENTICE_MSG_PLEASE_TEACH 0
+#define APPRENTICE_MSG_REJECT 1
+#define APPRENTICE_MSG_WHICH_LVL_MODE 2
+#define APPRENTICE_MSG_THANKS_LVL_MODE 3
+#define APPRENTICE_MSG_WHICH_MON_FIRST 4
+#define APPRENTICE_MSG_THANKS_MON_FIRST 5
+#define APPRENTICE_MSG_WHICH_MON 6
+#define APPRENTICE_MSG_THANKS_MON 7
+#define APPRENTICE_MSG_WHICH_MOVE 8
+#define APPRENTICE_MSG_THANKS_MOVE 9
+#define APPRENTICE_MSG_WHAT_HELD_ITEM 10
+#define APPRENTICE_MSG_PICK_WIN_SPEECH 11
+#define APPRENTICE_MSG_THANKS_HELD_ITEM 12
+#define APPRENTICE_MSG_HOLD_NOTHING 13
+#define APPRENTICE_MSG_THANKS_NO_HELD_ITEM 14
+#define APPRENTICE_MSG_THANKS_WIN_SPEECH 15
+#define APPRENTICE_MSG_ITEM_ALREADY_SUGGESTED 16
+
+#define APPRENTICE_QUESTION_WHICH_FIRST 1
+#define APPRENTICE_QUESTION_WHICH_MON 2
+#define APPRENTICE_QUESTION_WHICH_MOVE 3
+#define APPRENTICE_QUESTION_WHAT_ITEM 4
+#define APPRENTICE_QUESTION_WIN_SPEECH 5
+
+// Would be redundant with the above set if they used the same values
+#define QUESTION_ID_WIN_SPEECH 0
+#define QUESTION_ID_WHAT_ITEM 1
+#define QUESTION_ID_WHICH_MOVE 2
+#define QUESTION_ID_WHICH_FIRST 3
+
+#define APPRENTICE_ASK_WHICH_LEVEL 0
+#define APPRENTICE_ASK_3SPECIES 1
+#define APPRENTICE_ASK_2SPECIES 2
+#define APPRENTICE_ASK_MOVES 3
+#define APPRENTICE_ASK_GIVE 4
+#define APPRENTICE_ASK_YES_NO 6
+
+#define APPRENTICE_BUFF_SPECIES1 0
+#define APPRENTICE_BUFF_SPECIES2 1
+#define APPRENTICE_BUFF_SPECIES3 2
+#define APPRENTICE_BUFF_MOVE1 3
+#define APPRENTICE_BUFF_MOVE2 4
+#define APPRENTICE_BUFF_ITEM 5
+#define APPRENTICE_BUFF_NAME 6
+#define APPRENTICE_BUFF_WIN_SPEECH 7
+#define APPRENTICE_BUFF_LEVEL 8
+#define APPRENTICE_BUFF_LEAD_MON_SPECIES 9
#endif // GUARD_CONSTANTS_APPRENTICE_H
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
index 0a023f0c2..0fe231cdc 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -237,7 +237,7 @@
#define ANIM_TAG_SPOTLIGHT (ANIM_SPRITES_START + 227)
#define ANIM_TAG_LETTER_Z (ANIM_SPRITES_START + 228)
#define ANIM_TAG_RAPID_SPIN (ANIM_SPRITES_START + 229)
-#define ANIM_TAG_TRI_FORCE_TRIANGLE (ANIM_SPRITES_START + 230)
+#define ANIM_TAG_TRI_ATTACK_TRIANGLE (ANIM_SPRITES_START + 230)
#define ANIM_TAG_WISP_ORB (ANIM_SPRITES_START + 231)
#define ANIM_TAG_WISP_FIRE (ANIM_SPRITES_START + 232)
#define ANIM_TAG_GOLD_STARS (ANIM_SPRITES_START + 233)
diff --git a/include/constants/battle_arena.h b/include/constants/battle_arena.h
new file mode 100644
index 000000000..e04211115
--- /dev/null
+++ b/include/constants/battle_arena.h
@@ -0,0 +1,20 @@
+#ifndef GUARD_CONSTANTS_BATTLE_ARENA_H
+#define GUARD_CONSTANTS_BATTLE_ARENA_H
+
+#define BATTLE_ARENA_FUNC_INIT 0
+#define BATTLE_ARENA_FUNC_GET_DATA 1
+#define BATTLE_ARENA_FUNC_SET_DATA 2
+#define BATTLE_ARENA_FUNC_SAVE 3
+#define BATTLE_ARENA_FUNC_SET_PRIZE 4
+#define BATTLE_ARENA_FUNC_GIVE_PRIZE 5
+#define BATTLE_ARENA_FUNC_GET_TRAINER_NAME 6
+
+#define ARENA_DATA_PRIZE 0
+#define ARENA_DATA_WIN_STREAK 1
+#define ARENA_DATA_WIN_STREAK_ACTIVE 2
+
+#define ARENA_CATEGORY_MIND 0
+#define ARENA_CATEGORY_SKILL 1
+#define ARENA_CATEGORY_BODY 2
+
+#endif //GUARD_CONSTANTS_BATTLE_ARENA_H
diff --git a/include/constants/battle_dome.h b/include/constants/battle_dome.h
new file mode 100644
index 000000000..ea7310e55
--- /dev/null
+++ b/include/constants/battle_dome.h
@@ -0,0 +1,163 @@
+#ifndef GUARD_CONSTANTS_BATTLE_DOME_H
+#define GUARD_CONSTANTS_BATTLE_DOME_H
+
+#define DOME_ROUND1 0
+#define DOME_ROUND2 1
+#define DOME_SEMIFINAL 2
+#define DOME_FINAL 3
+#define DOME_ROUNDS_COUNT 4
+
+//#define DOME_TOURNAMENT_TRAINERS_COUNT 16 -- defined in global
+#define DOME_TOURNAMENT_MATCHES_COUNT DOME_TOURNAMENT_TRAINERS_COUNT - 1
+
+#define DOME_BATTLE_PARTY_SIZE 2
+
+#define DOME_PLAYER_WON_MATCH 1
+#define DOME_PLAYER_LOST_MATCH 2
+#define DOME_PLAYER_RETIRED 9
+
+#define BATTLE_DOME_FUNC_INIT 0
+#define BATTLE_DOME_FUNC_GET_DATA 1
+#define BATTLE_DOME_FUNC_SET_DATA 2
+#define BATTLE_DOME_FUNC_GET_ROUND_TEXT 3
+#define BATTLE_DOME_FUNC_GET_OPPONENT_NAME 4
+#define BATTLE_DOME_FUNC_INIT_OPPONENT_PARTY 5
+#define BATTLE_DOME_FUNC_SHOW_OPPONENT_INFO 6
+#define BATTLE_DOME_FUNC_SHOW_TOURNEY_TREE 7
+#define BATTLE_DOME_FUNC_SHOW_PREV_TOURNEY_TREE 8
+#define BATTLE_DOME_FUNC_SET_OPPONENT_ID 9
+#define BATTLE_DOME_FUNC_SET_OPPONENT_GFX 10
+#define BATTLE_DOME_FUNC_SHOW_STATIC_TOURNEY_TREE 11
+#define BATTLE_DOME_FUNC_RESOLVE_WINNERS 12
+#define BATTLE_DOME_FUNC_SAVE 13
+#define BATTLE_DOME_FUNC_INCREMENT_STREAK 14
+#define BATTLE_DOME_FUNC_SET_TRAINERS 15
+#define BATTLE_DOME_FUNC_RESET_SKETCH 16
+#define BATTLE_DOME_FUNC_RESTORE_HELD_ITEMS 17
+#define BATTLE_DOME_FUNC_REDUCE_PARTY 18
+#define BATTLE_DOME_FUNC_COMPARE_SEEDS 19
+#define BATTLE_DOME_FUNC_GET_WINNER_NAME 20
+#define BATTLE_DOME_FUNC_INIT_RESULTS_TREE 21
+#define BATTLE_DOME_FUNC_INIT_TRAINERS 22
+
+#define DOME_DATA_WIN_STREAK 0
+#define DOME_DATA_WIN_STREAK_ACTIVE 1
+#define DOME_DATA_ATTEMPTED_SINGLES_50 2
+#define DOME_DATA_ATTEMPTED_SINGLES_OPEN 3
+#define DOME_DATA_HAS_WON_SINGLES_50 4
+#define DOME_DATA_HAS_WON_SINGLES_OPEN 5
+#define DOME_DATA_ATTEMPTED_CHALLENGE 6
+#define DOME_DATA_HAS_WON_CHALLENGE 7
+#define DOME_DATA_SELECTED_MONS 8
+#define DOME_DATA_PREV_TOURNEY_TYPE 9
+
+// ID for Exit/Cancel on the tourney tree
+#define TOURNEY_TREE_CLOSE_BUTTON 31
+
+// Input IDs on the tourney tree
+#define TOURNEY_TREE_SELECTED_CLOSE 0
+#define TOURNEY_TREE_NO_SELECTION 1
+#define TOURNEY_TREE_SELECTED_TRAINER 2
+#define TOURNEY_TREE_SELECTED_MATCH 3
+
+// Modes for showing the tourney tree info card
+#define INFOCARD_NEXT_OPPONENT 0
+#define INFOCARD_TRAINER 1
+#define INFOCARD_MATCH 2
+
+// Input IDs for the info cards
+#define INFOCARD_INPUT_NONE 0
+#define TRAINERCARD_INPUT_UP 1
+#define TRAINERCARD_INPUT_DOWN 2
+#define TRAINERCARD_INPUT_LEFT 3
+#define TRAINERCARD_INPUT_RIGHT 4
+#define MATCHCARD_INPUT_UP 5
+#define MATCHCARD_INPUT_DOWN 6
+#define MATCHCARD_INPUT_LEFT 7
+#define MATCHCARD_INPUT_RIGHT 8
+#define INFOCARD_INPUT_AB 9
+
+#define CARD_ALTERNATE_SLOT (1 << 0) // When set, uses an alternate slot to store the incoming card sprites
+#define MOVE_CARD_RIGHT (1 << 1)
+#define MOVE_CARD_DOWN (1 << 2)
+#define MOVE_CARD_LEFT (1 << 3)
+#define MOVE_CARD_UP (1 << 4)
+#define MOVE_CARD (MOVE_CARD_RIGHT | MOVE_CARD_DOWN | MOVE_CARD_LEFT | MOVE_CARD_UP)
+
+// Text IDs for sBattleDomeWinTexts
+#define DOME_TEXT_NO_WINNER_YET 0
+#define DOME_TEXT_WON_USING_MOVE 1
+#define DOME_TEXT_CHAMP_USING_MOVE 2
+#define DOME_TEXT_WON_ON_FORFEIT 3
+#define DOME_TEXT_CHAMP_ON_FORFEIT 4
+#define DOME_TEXT_WON_NO_MOVES 5
+#define DOME_TEXT_CHAMP_NO_MOVES 6
+
+// Offsets/start positions within sBattleDomeOpponentStatsTexts
+#define DOME_TEXT_TWO_GOOD_STATS 0
+#define DOME_TEXT_ONE_GOOD_STAT 15
+#define DOME_TEXT_TWO_BAD_STATS 21
+#define DOME_TEXT_ONE_BAD_STAT 36
+#define DOME_TEXT_WELL_BALANCED 42
+#define DOME_TEXT_HP 0
+#define DOME_TEXT_ATK 5
+#define DOME_TEXT_DEF 9
+#define DOME_TEXT_SPEED 12
+#define DOME_TEXT_SPATK 14
+
+// Move point indexes for sBattleStyleMovePoints[][], to determine Battle Dome trainers battle styles
+#define MOVE_POINTS_COMBO 0 // Moves that work well in combination (e.g. Rain Dance + Hydro Pump)
+#define MOVE_POINTS_STAT_RAISE 1
+#define MOVE_POINTS_STAT_LOWER 2
+#define MOVE_POINTS_RARE 3 // Uncommon moves. Mostly arbitrary
+#define MOVE_POINTS_HEAL 4
+#define MOVE_POINTS_RISKY 5
+#define MOVE_POINTS_STATUS 6
+#define MOVE_POINTS_DMG 7
+#define MOVE_POINTS_DEF 8 // Defensive moves, like Amnesia, Light Screen, or accuracy-lowers
+#define MOVE_POINTS_ACCURATE 9
+#define MOVE_POINTS_POWERFUL 10 // Most of the moves that are >= 100 power
+#define MOVE_POINTS_POPULAR 11 // Group seems arbitrary. All using it are TM/HMs, but its only 11/58
+#define MOVE_POINTS_LUCK 12
+#define MOVE_POINTS_STRONG 13 // Most of the moves that are >= 90 power
+#define MOVE_POINTS_LOW_PP 14
+#define MOVE_POINTS_EFFECT 15 // Moves with additional effects
+#define NUM_MOVE_POINT_TYPES 16
+
+// Battle style IDs for sBattleDomeOpponentStyleTexts
+#define DOME_BATTLE_STYLE_RISKY 0
+#define DOME_BATTLE_STYLE_STALL 1
+#define DOME_BATTLE_STYLE_VARIED 2
+#define DOME_BATTLE_STYLE_COMBO_HIGH 3
+#define DOME_BATTLE_STYLE_RARE_MOVES 4
+#define DOME_BATTLE_STYLE_RARE_MOVE 5
+#define DOME_BATTLE_STYLE_HP 6
+#define DOME_BATTLE_STYLE_STORE_POWER 7
+#define DOME_BATTLE_STYLE_ENFEEBLE_LOW 8
+#define DOME_BATTLE_STYLE_LUCK 9
+#define DOME_BATTLE_STYLE_REGAL 10
+#define DOME_BATTLE_STYLE_LOW_PP 11
+#define DOME_BATTLE_STYLE_STATUS_ATK 12
+#define DOME_BATTLE_STYLE_ENDURE 13
+#define DOME_BATTLE_STYLE_STATUS 14
+#define DOME_BATTLE_STYLE_STRAIGHTFORWARD 15
+#define DOME_BATTLE_STYLE_AGGRESSIVE 16
+#define DOME_BATTLE_STYLE_DEF 17
+#define DOME_BATTLE_STYLE_ENFEEBLE_HIGH 18
+#define DOME_BATTLE_STYLE_POPULAR_POWER 19
+#define DOME_BATTLE_STYLE_COMBO_LOW 20
+#define DOME_BATTLE_STYLE_ACCURATE 21
+#define DOME_BATTLE_STYLE_POWERFUL 22
+#define DOME_BATTLE_STYLE_ATK_OVER_DEF 23
+#define DOME_BATTLE_STYLE_DEF_OVER_ATK 24
+#define DOME_BATTLE_STYLE_POPULAR_STRONG 25
+#define DOME_BATTLE_STYLE_EFFECTS 26
+#define DOME_BATTLE_STYLE_BALANCED 27
+#define DOME_BATTLE_STYLE_UNUSED1 28
+#define DOME_BATTLE_STYLE_UNUSED2 29
+#define DOME_BATTLE_STYLE_UNUSED3 30
+#define DOME_BATTLE_STYLE_UNUSED4 31
+#define NUM_BATTLE_STYLES 32
+
+
+#endif //GUARD_CONSTANTS_BATTLE_DOME_H
diff --git a/include/constants/battle_factory.h b/include/constants/battle_factory.h
new file mode 100644
index 000000000..b3aa57449
--- /dev/null
+++ b/include/constants/battle_factory.h
@@ -0,0 +1,37 @@
+#ifndef GUARD_CONSTANTS_BATTLE_FACTORY_H
+#define GUARD_CONSTANTS_BATTLE_FACTORY_H
+
+#define FACTORY_STYLE_NONE 0
+#define FACTORY_STYLE_PREPARATION 1
+#define FACTORY_STYLE_SLOW_STEADY 2
+#define FACTORY_STYLE_ENDURANCE 3
+#define FACTORY_STYLE_HIGH_RISK 4
+#define FACTORY_STYLE_WEAKENING 5
+#define FACTORY_STYLE_UNPREDICTABLE 6
+#define FACTORY_STYLE_WEATHER 7
+#define FACTORY_NUM_STYLES 8
+
+
+#define BATTLE_FACTORY_FUNC_INIT 0
+#define BATTLE_FACTORY_FUNC_GET_DATA 1
+#define BATTLE_FACTORY_FUNC_SET_DATA 2
+#define BATTLE_FACTORY_FUNC_SAVE 3
+#define BATTLE_FACTORY_FUNC_NULL 4
+#define BATTLE_FACTORY_FUNC_NULL2 5
+#define BATTLE_FACTORY_FUNC_SELECT_RENT_MONS 6
+#define BATTLE_FACTORY_FUNC_SWAP_RENT_MONS 7
+#define BATTLE_FACTORY_FUNC_SET_SWAPPED 8
+#define BATTLE_FACTORY_FUNC_SET_OPPONENT_MONS 9
+#define BATTLE_FACTORY_FUNC_SET_PARTIES 10
+#define BATTLE_FACTORY_FUNC_SET_OPPONENT_GFX 11
+#define BATTLE_FACTORY_FUNC_GENERATE_OPPONENT_MONS 12
+#define BATTLE_FACTORY_FUNC_GENERATE_RENTAL_MONS 13
+#define BATTLE_FACTORY_FUNC_GET_OPPONENT_MON_TYPE 14
+#define BATTLE_FACTORY_FUNC_GET_OPPONENT_STYLE 15
+#define BATTLE_FACTORY_FUNC_RESET_HELD_ITEMS 16
+
+#define FACTORY_DATA_WIN_STREAK 1
+#define FACTORY_DATA_WIN_STREAK_ACTIVE 2
+#define FACTORY_DATA_WIN_STREAK_SWAPS 3
+
+#endif // GUARD_CONSTANTS_BATTLE_FACTORY_H
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index 1224c0f31..1a60714e8 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -1,32 +1,39 @@
#ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_H
#define GUARD_CONSTANTS_BATTLE_FRONTIER_H
+#define FRONTIER_CHALLENGE(facility, mode) ((facility << 8) + mode)
+
// Battle Frontier facility ids.
-#define FRONTIER_FACILITY_TOWER 0
-#define FRONTIER_FACILITY_DOME 1
-#define FRONTIER_FACILITY_PALACE 2
-#define FRONTIER_FACILITY_ARENA 3
-#define FRONTIER_FACILITY_FACTORY 4
-#define FRONTIER_FACILITY_PIKE 5
-#define FRONTIER_FACILITY_PYRAMID 6
-#define NUM_FRONTIER_FACILITIES 7
-// The multiplayer battle colosseum rooms re-use VAR_FRONTIER_FACILITY.
-#define FRONTIER_FACILITY_DOUBLE_COLOSSEUM 9
-
-#define TENT_VERDANTURF 2
-#define TENT_FALLARBOR 3
-#define TENT_SLATEPORT 4
+#define FRONTIER_FACILITY_TOWER 0
+#define FRONTIER_FACILITY_DOME 1
+#define FRONTIER_FACILITY_PALACE 2 // also Verdanturf Tent
+#define FRONTIER_FACILITY_ARENA 3 // also Fallarbor Tent
+#define FRONTIER_FACILITY_FACTORY 4 // also Slateport Tent
+#define FRONTIER_FACILITY_PIKE 5
+#define FRONTIER_FACILITY_PYRAMID 6
+#define NUM_FRONTIER_FACILITIES 7
+// VAR_FRONTIER_FACILITY is re-used for the below facilities as well
+#define FACILITY_LINK_CONTEST 7
+#define FACILITY_UNION_ROOM 8
+#define FACILITY_MULTI_OR_EREADER 9 // Direct Corner multi battles, multi battle with Steven, and e-Reader battles
// Battle Frontier lvl modes.
-#define FRONTIER_LVL_50 0
+#define FRONTIER_LVL_50 0
#define FRONTIER_LVL_OPEN 1
#define FRONTIER_LVL_TENT 2
// Battle Frontier battle modes.
-#define FRONTIER_MODE_SINGLES 0
-#define FRONTIER_MODE_DOUBLES 1
-#define FRONTIER_MODE_MULTIS 2
-#define FRONTIER_MODE_LINK_MULTIS 3
+#define FRONTIER_MODE_SINGLES 0
+#define FRONTIER_MODE_DOUBLES 1
+#define FRONTIER_MODE_MULTIS 2
+#define FRONTIER_MODE_LINK_MULTIS 3
+#define FRONTIER_MODE_COUNT 4
+
+// Challenge Statuses
+#define CHALLENGE_STATUS_SAVING 1
+#define CHALLENGE_STATUS_PAUSED 2
+#define CHALLENGE_STATUS_WON 3
+#define CHALLENGE_STATUS_LOST 4
// Special trainer battles.
#define SPECIAL_BATTLE_TOWER 0
@@ -41,8 +48,53 @@
#define SPECIAL_BATTLE_PIKE_DOUBLE 9
#define SPECIAL_BATTLE_PYRAMID 10
-// For 'ShowFacilityResultsWindow' function which is a part of the 'CallFrontierUtilFunc' special.
-#define RESULTS_LINK_CONTEST 7
+#define MAX_BATTLE_FRONTIER_POINTS 9999
+#define MAX_STREAK 9999
+
+// These sets of facility ids would be redunant if the order was consistent
+// The order is important for this set so that all the non-link records can be continuous
+#define RANKING_HALL_BATTLE_TOWER_SINGLES 0
+#define RANKING_HALL_BATTLE_TOWER_DOUBLES 1
+#define RANKING_HALL_BATTLE_TOWER_MULTIS 2
+#define RANKING_HALL_BATTLE_DOME 3
+#define RANKING_HALL_BATTLE_PALACE 4
+#define RANKING_HALL_BATTLE_ARENA 5
+#define RANKING_HALL_BATTLE_FACTORY 6
+#define RANKING_HALL_BATTLE_PIKE 7
+#define RANKING_HALL_BATTLE_PYRAMID 8
+#define RANKING_HALL_BATTLE_TOWER_LINK 9
+
+#define FRONTIER_MANIAC_BATTLE_TOWER_SINGLES 0
+#define FRONTIER_MANIAC_BATTLE_TOWER_DOUBLES 1
+#define FRONTIER_MANIAC_BATTLE_TOWER_MULTIS 2
+#define FRONTIER_MANIAC_BATTLE_TOWER_LINK 3
+#define FRONTIER_MANIAC_BATTLE_DOME 4
+#define FRONTIER_MANIAC_BATTLE_FACTORY 5
+#define FRONTIER_MANIAC_BATTLE_PALACE 6
+#define FRONTIER_MANIAC_BATTLE_ARENA 7
+#define FRONTIER_MANIAC_BATTLE_PIKE 8
+#define FRONTIER_MANIAC_BATTLE_PYRAMID 9
+#define FRONTIER_MANIAC_FACILITY_COUNT 10
+
+#define FRONTIER_MANIAC_MESSAGE_COUNT 3
+
+// Frontier Gambler
+#define FRONTIER_GAMBLER_WAITING 0
+#define FRONTIER_GAMBLER_PLACED_BET 1
+#define FRONTIER_GAMBLER_WON 2
+#define FRONTIER_GAMBLER_LOST 3
+
+#define FRONTIER_GAMBLER_BET_5 0
+#define FRONTIER_GAMBLER_BET_10 1
+#define FRONTIER_GAMBLER_BET_15 2
+#define FRONTIER_GAMBLER_BET_CANCEL 3
+
+#define FRONTIER_GAMBLER_CHALLENGE_COUNT 12
+
+#define EXCHANGE_CORNER_DECOR1_CLERK 0
+#define EXCHANGE_CORNER_DECOR2_CLERK 1
+#define EXCHANGE_CORNER_VITAMIN_CLERK 2
+#define EXCHANGE_CORNER_HOLD_ITEM_CLERK 3
#define F_EV_SPREAD_HP (1 << 0)
#define F_EV_SPREAD_ATTACK (1 << 1)
diff --git a/include/constants/battle_frontier_mons.h b/include/constants/battle_frontier_mons.h
new file mode 100644
index 000000000..10e68980a
--- /dev/null
+++ b/include/constants/battle_frontier_mons.h
@@ -0,0 +1,899 @@
+#ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_MONS_H
+#define GUARD_CONSTANTS_BATTLE_FRONTIER_MONS_H
+
+#define FRONTIER_MON_SUNKERN 0
+#define FRONTIER_MON_AZURILL 1
+#define FRONTIER_MON_CATERPIE 2
+#define FRONTIER_MON_WEEDLE 3
+#define FRONTIER_MON_WURMPLE 4
+#define FRONTIER_MON_RALTS 5
+#define FRONTIER_MON_MAGIKARP 6
+#define FRONTIER_MON_FEEBAS 7
+#define FRONTIER_MON_METAPOD 8
+#define FRONTIER_MON_KAKUNA 9
+#define FRONTIER_MON_PICHU 10
+#define FRONTIER_MON_SILCOON 11
+#define FRONTIER_MON_CASCOON 12
+#define FRONTIER_MON_IGGLYBUFF 13
+#define FRONTIER_MON_WOOPER 14
+#define FRONTIER_MON_TYROGUE 15
+#define FRONTIER_MON_SENTRET 16
+#define FRONTIER_MON_CLEFFA 17
+#define FRONTIER_MON_SEEDOT 18
+#define FRONTIER_MON_LOTAD 19
+#define FRONTIER_MON_POOCHYENA 20
+#define FRONTIER_MON_SHEDINJA 21
+#define FRONTIER_MON_MAKUHITA 22
+#define FRONTIER_MON_WHISMUR 23
+#define FRONTIER_MON_ZIGZAGOON 24
+#define FRONTIER_MON_ZUBAT 25
+#define FRONTIER_MON_TOGEPI 26
+#define FRONTIER_MON_SPINARAK 27
+#define FRONTIER_MON_MARILL 28
+#define FRONTIER_MON_HOPPIP 29
+#define FRONTIER_MON_SLUGMA 30
+#define FRONTIER_MON_SWINUB 31
+#define FRONTIER_MON_SMEARGLE 32
+#define FRONTIER_MON_PIDGEY 33
+#define FRONTIER_MON_RATTATA 34
+#define FRONTIER_MON_WYNAUT 35
+#define FRONTIER_MON_SKITTY 36
+#define FRONTIER_MON_SPEAROW 37
+#define FRONTIER_MON_HOOTHOOT 38
+#define FRONTIER_MON_DIGLETT 39
+#define FRONTIER_MON_LEDYBA 40
+#define FRONTIER_MON_NINCADA 41
+#define FRONTIER_MON_SURSKIT 42
+#define FRONTIER_MON_JIGGLYPUFF 43
+#define FRONTIER_MON_TAILLOW 44
+#define FRONTIER_MON_WINGULL 45
+#define FRONTIER_MON_NIDORAN_M 46
+#define FRONTIER_MON_NIDORAN_F 47
+#define FRONTIER_MON_KIRLIA 48
+#define FRONTIER_MON_MAREEP 49
+#define FRONTIER_MON_MEDITITE 50
+#define FRONTIER_MON_SLAKOTH 51
+#define FRONTIER_MON_PARAS 52
+#define FRONTIER_MON_EKANS 53
+#define FRONTIER_MON_DITTO 54
+#define FRONTIER_MON_BARBOACH 55
+#define FRONTIER_MON_MEOWTH 56
+#define FRONTIER_MON_PINECO 57
+#define FRONTIER_MON_TRAPINCH 58
+#define FRONTIER_MON_SPHEAL 59
+#define FRONTIER_MON_HORSEA 60
+#define FRONTIER_MON_SHROOMISH 61
+#define FRONTIER_MON_SHUPPET 62
+#define FRONTIER_MON_DUSKULL 63
+#define FRONTIER_MON_ELECTRIKE 64
+#define FRONTIER_MON_VULPIX 65
+#define FRONTIER_MON_PIKACHU 66
+#define FRONTIER_MON_SANDSHREW 67
+#define FRONTIER_MON_POLIWAG 68
+#define FRONTIER_MON_BELLSPROUT 69
+#define FRONTIER_MON_GEODUDE 70
+#define FRONTIER_MON_DRATINI 71
+#define FRONTIER_MON_SNUBBULL 72
+#define FRONTIER_MON_REMORAID 73
+#define FRONTIER_MON_LARVITAR 74
+#define FRONTIER_MON_BALTOY 75
+#define FRONTIER_MON_SNORUNT 76
+#define FRONTIER_MON_BAGON 77
+#define FRONTIER_MON_BELDUM 78
+#define FRONTIER_MON_GULPIN 79
+#define FRONTIER_MON_VENONAT 80
+#define FRONTIER_MON_MANKEY 81
+#define FRONTIER_MON_MACHOP 82
+#define FRONTIER_MON_SHELLDER 83
+#define FRONTIER_MON_SMOOCHUM 84
+#define FRONTIER_MON_NUMEL 85
+#define FRONTIER_MON_CARVANHA 86
+#define FRONTIER_MON_CORPHISH 87
+#define FRONTIER_MON_CHARMANDER 88
+#define FRONTIER_MON_CYNDAQUIL 89
+#define FRONTIER_MON_ABRA 90
+#define FRONTIER_MON_DODUO 91
+#define FRONTIER_MON_GASTLY 92
+#define FRONTIER_MON_SWABLU 93
+#define FRONTIER_MON_TREECKO 94
+#define FRONTIER_MON_TORCHIC 95
+#define FRONTIER_MON_MUDKIP 96
+#define FRONTIER_MON_SQUIRTLE 97
+#define FRONTIER_MON_TOTODILE 98
+#define FRONTIER_MON_SLOWPOKE 99
+#define FRONTIER_MON_BULBASAUR 100
+#define FRONTIER_MON_CHIKORITA 101
+#define FRONTIER_MON_ODDISH 102
+#define FRONTIER_MON_PSYDUCK 103
+#define FRONTIER_MON_CUBONE 104
+#define FRONTIER_MON_GOLDEEN 105
+#define FRONTIER_MON_NATU 106
+#define FRONTIER_MON_CLEFAIRY 107
+#define FRONTIER_MON_MAGNEMITE 108
+#define FRONTIER_MON_SEEL 109
+#define FRONTIER_MON_GRIMER 110
+#define FRONTIER_MON_KRABBY 111
+#define FRONTIER_MON_EXEGGCUTE 112
+#define FRONTIER_MON_EEVEE 113
+#define FRONTIER_MON_DROWZEE 114
+#define FRONTIER_MON_VOLTORB 115
+#define FRONTIER_MON_CHINCHOU 116
+#define FRONTIER_MON_TEDDIURSA 117
+#define FRONTIER_MON_DELIBIRD 118
+#define FRONTIER_MON_HOUNDOUR 119
+#define FRONTIER_MON_PHANPY 120
+#define FRONTIER_MON_SPOINK 121
+#define FRONTIER_MON_ARON 122
+#define FRONTIER_MON_LUVDISC 123
+#define FRONTIER_MON_TENTACOOL 124
+#define FRONTIER_MON_CACNEA 125
+#define FRONTIER_MON_UNOWN 126
+#define FRONTIER_MON_KOFFING 127
+#define FRONTIER_MON_STARYU 128
+#define FRONTIER_MON_SKIPLOOM 129
+#define FRONTIER_MON_NUZLEAF 130
+#define FRONTIER_MON_LOMBRE 131
+#define FRONTIER_MON_VIBRAVA 132
+#define FRONTIER_MON_RHYHORN 133
+#define FRONTIER_MON_CLAMPERL 134
+#define FRONTIER_MON_PIDGEOTTO 135
+#define FRONTIER_MON_GROWLITHE 136
+#define FRONTIER_MON_FARFETCHD 137
+#define FRONTIER_MON_OMANYTE 138
+#define FRONTIER_MON_KABUTO 139
+#define FRONTIER_MON_LILEEP 140
+#define FRONTIER_MON_ANORITH 141
+#define FRONTIER_MON_AIPOM 142
+#define FRONTIER_MON_ELEKID 143
+#define FRONTIER_MON_LOUDRED 144
+#define FRONTIER_MON_SPINDA 145
+#define FRONTIER_MON_NIDORINA 146
+#define FRONTIER_MON_NIDORINO 147
+#define FRONTIER_MON_FLAAFFY 148
+#define FRONTIER_MON_MAGBY 149
+#define FRONTIER_MON_NOSEPASS 150
+#define FRONTIER_MON_CORSOLA 151
+#define FRONTIER_MON_MAWILE 152
+#define FRONTIER_MON_BUTTERFREE 153
+#define FRONTIER_MON_BEEDRILL 154
+#define FRONTIER_MON_POLIWHIRL 155
+#define FRONTIER_MON_ONIX 156
+#define FRONTIER_MON_BEAUTIFLY 157
+#define FRONTIER_MON_DUSTOX 158
+#define FRONTIER_MON_LEDIAN 159
+#define FRONTIER_MON_ARIADOS 160
+#define FRONTIER_MON_YANMA 161
+
+#define FRONTIER_MON_DELCATTY_1 162
+#define FRONTIER_MON_SABLEYE_1 163
+#define FRONTIER_MON_LICKITUNG_1 164
+#define FRONTIER_MON_WEEPINBELL_1 165
+#define FRONTIER_MON_GRAVELER_1 166
+#define FRONTIER_MON_GLOOM_1 167
+#define FRONTIER_MON_PORYGON_1 168
+#define FRONTIER_MON_KADABRA_1 169
+#define FRONTIER_MON_WAILMER_1 170
+#define FRONTIER_MON_ROSELIA_1 171
+#define FRONTIER_MON_VOLBEAT_1 172
+#define FRONTIER_MON_ILLUMISE_1 173
+#define FRONTIER_MON_IVYSAUR_1 174
+#define FRONTIER_MON_CHARMELEON_1 175
+#define FRONTIER_MON_WARTORTLE_1 176
+#define FRONTIER_MON_PARASECT_1 177
+#define FRONTIER_MON_MACHOKE_1 178
+#define FRONTIER_MON_HAUNTER_1 179
+#define FRONTIER_MON_BAYLEEF_1 180
+#define FRONTIER_MON_QUILAVA_1 181
+#define FRONTIER_MON_CROCONAW_1 182
+#define FRONTIER_MON_TOGETIC_1 183
+#define FRONTIER_MON_MURKROW_1 184
+#define FRONTIER_MON_WOBBUFFET_1 185
+#define FRONTIER_MON_PLUSLE_1 186
+#define FRONTIER_MON_MINUN_1 187
+#define FRONTIER_MON_GROVYLE_1 188
+#define FRONTIER_MON_COMBUSKEN_1 189
+#define FRONTIER_MON_MARSHTOMP_1 190
+#define FRONTIER_MON_PONYTA_1 191
+#define FRONTIER_MON_AZUMARILL_1 192
+#define FRONTIER_MON_SUDOWOODO_1 193
+#define FRONTIER_MON_MAGCARGO_1 194
+#define FRONTIER_MON_PUPITAR_1 195
+#define FRONTIER_MON_SEALEO_1 196
+#define FRONTIER_MON_RATICATE_1 197
+#define FRONTIER_MON_MASQUERAIN_1 198
+#define FRONTIER_MON_FURRET_1 199
+#define FRONTIER_MON_DUNSPARCE_1 200
+#define FRONTIER_MON_DRAGONAIR_1 201
+#define FRONTIER_MON_MIGHTYENA_1 202
+#define FRONTIER_MON_LINOONE_1 203
+#define FRONTIER_MON_CASTFORM_1 204
+#define FRONTIER_MON_SHELGON_1 205
+#define FRONTIER_MON_METANG_1 206
+#define FRONTIER_MON_WIGGLYTUFF_1 207
+#define FRONTIER_MON_SUNFLORA_1 208
+#define FRONTIER_MON_CHIMECHO_1 209
+#define FRONTIER_MON_GLIGAR_1 210
+#define FRONTIER_MON_QWILFISH_1 211
+#define FRONTIER_MON_SNEASEL_1 212
+#define FRONTIER_MON_PELIPPER_1 213
+#define FRONTIER_MON_SWELLOW_1 214
+#define FRONTIER_MON_LAIRON_1 215
+#define FRONTIER_MON_TANGELA_1 216
+#define FRONTIER_MON_ARBOK_1 217
+#define FRONTIER_MON_PERSIAN_1 218
+#define FRONTIER_MON_SEADRA_1 219
+#define FRONTIER_MON_KECLEON_1 220
+#define FRONTIER_MON_VIGOROTH_1 221
+#define FRONTIER_MON_LUNATONE_1 222
+#define FRONTIER_MON_SOLROCK_1 223
+#define FRONTIER_MON_NOCTOWL_1 224
+#define FRONTIER_MON_SANDSLASH_1 225
+#define FRONTIER_MON_VENOMOTH_1 226
+#define FRONTIER_MON_CHANSEY_1 227
+#define FRONTIER_MON_SEAKING_1 228
+#define FRONTIER_MON_JUMPLUFF_1 229
+#define FRONTIER_MON_PILOSWINE_1 230
+#define FRONTIER_MON_GOLBAT_1 231
+#define FRONTIER_MON_PRIMEAPE_1 232
+#define FRONTIER_MON_HITMONLEE_1 233
+#define FRONTIER_MON_HITMONCHAN_1 234
+#define FRONTIER_MON_GIRAFARIG_1 235
+#define FRONTIER_MON_HITMONTOP_1 236
+#define FRONTIER_MON_BANETTE_1 237
+#define FRONTIER_MON_NINJASK_1 238
+#define FRONTIER_MON_SEVIPER_1 239
+#define FRONTIER_MON_ZANGOOSE_1 240
+#define FRONTIER_MON_CAMERUPT_1 241
+#define FRONTIER_MON_SHARPEDO_1 242
+#define FRONTIER_MON_TROPIUS_1 243
+#define FRONTIER_MON_MAGNETON_1 244
+#define FRONTIER_MON_MANTINE_1 245
+#define FRONTIER_MON_STANTLER_1 246
+#define FRONTIER_MON_ABSOL_1 247
+#define FRONTIER_MON_SWALOT_1 248
+#define FRONTIER_MON_CRAWDAUNT_1 249
+#define FRONTIER_MON_PIDGEOT_1 250
+#define FRONTIER_MON_GRUMPIG_1 251
+#define FRONTIER_MON_TORKOAL_1 252
+#define FRONTIER_MON_KINGLER_1 253
+#define FRONTIER_MON_CACTURNE_1 254
+#define FRONTIER_MON_BELLOSSOM_1 255
+#define FRONTIER_MON_OCTILLERY_1 256
+#define FRONTIER_MON_HUNTAIL_1 257
+#define FRONTIER_MON_GOREBYSS_1 258
+#define FRONTIER_MON_RELICANTH_1 259
+#define FRONTIER_MON_OMASTAR_1 260
+#define FRONTIER_MON_KABUTOPS_1 261
+#define FRONTIER_MON_POLIWRATH_1 262
+#define FRONTIER_MON_SCYTHER_1 263
+#define FRONTIER_MON_PINSIR_1 264
+#define FRONTIER_MON_POLITOED_1 265
+#define FRONTIER_MON_CLOYSTER_1 266
+
+#define FRONTIER_MON_DELCATTY_2 267
+#define FRONTIER_MON_SABLEYE_2 268
+#define FRONTIER_MON_LICKITUNG_2 269
+#define FRONTIER_MON_WEEPINBELL_2 270
+#define FRONTIER_MON_GRAVELER_2 271
+#define FRONTIER_MON_GLOOM_2 272
+#define FRONTIER_MON_PORYGON_2 273
+#define FRONTIER_MON_KADABRA_2 274
+#define FRONTIER_MON_WAILMER_2 275
+#define FRONTIER_MON_ROSELIA_2 276
+#define FRONTIER_MON_VOLBEAT_2 277
+#define FRONTIER_MON_ILLUMISE_2 278
+#define FRONTIER_MON_IVYSAUR_2 279
+#define FRONTIER_MON_CHARMELEON_2 280
+#define FRONTIER_MON_WARTORTLE_2 281
+#define FRONTIER_MON_PARASECT_2 282
+#define FRONTIER_MON_MACHOKE_2 283
+#define FRONTIER_MON_HAUNTER_2 284
+#define FRONTIER_MON_BAYLEEF_2 285
+#define FRONTIER_MON_QUILAVA_2 286
+#define FRONTIER_MON_CROCONAW_2 287
+#define FRONTIER_MON_TOGETIC_2 288
+#define FRONTIER_MON_MURKROW_2 289
+#define FRONTIER_MON_WOBBUFFET_2 290
+#define FRONTIER_MON_PLUSLE_2 291
+#define FRONTIER_MON_MINUN_2 292
+#define FRONTIER_MON_GROVYLE_2 293
+#define FRONTIER_MON_COMBUSKEN_2 294
+#define FRONTIER_MON_MARSHTOMP_2 295
+#define FRONTIER_MON_PONYTA_2 296
+#define FRONTIER_MON_AZUMARILL_2 297
+#define FRONTIER_MON_SUDOWOODO_2 298
+#define FRONTIER_MON_MAGCARGO_2 299
+#define FRONTIER_MON_PUPITAR_2 300
+#define FRONTIER_MON_SEALEO_2 301
+#define FRONTIER_MON_RATICATE_2 302
+#define FRONTIER_MON_MASQUERAIN_2 303
+#define FRONTIER_MON_FURRET_2 304
+#define FRONTIER_MON_DUNSPARCE_2 305
+#define FRONTIER_MON_DRAGONAIR_2 306
+#define FRONTIER_MON_MIGHTYENA_2 307
+#define FRONTIER_MON_LINOONE_2 308
+#define FRONTIER_MON_CASTFORM_2 309
+#define FRONTIER_MON_SHELGON_2 310
+#define FRONTIER_MON_METANG_2 311
+#define FRONTIER_MON_WIGGLYTUFF_2 312
+#define FRONTIER_MON_SUNFLORA_2 313
+#define FRONTIER_MON_CHIMECHO_2 314
+#define FRONTIER_MON_GLIGAR_2 315
+#define FRONTIER_MON_QWILFISH_2 316
+#define FRONTIER_MON_SNEASEL_2 317
+#define FRONTIER_MON_PELIPPER_2 318
+#define FRONTIER_MON_SWELLOW_2 319
+#define FRONTIER_MON_LAIRON_2 320
+#define FRONTIER_MON_TANGELA_2 321
+#define FRONTIER_MON_ARBOK_2 322
+#define FRONTIER_MON_PERSIAN_2 323
+#define FRONTIER_MON_SEADRA_2 324
+#define FRONTIER_MON_KECLEON_2 325
+#define FRONTIER_MON_VIGOROTH_2 326
+#define FRONTIER_MON_LUNATONE_2 327
+#define FRONTIER_MON_SOLROCK_2 328
+#define FRONTIER_MON_NOCTOWL_2 329
+#define FRONTIER_MON_SANDSLASH_2 330
+#define FRONTIER_MON_VENOMOTH_2 331
+#define FRONTIER_MON_CHANSEY_2 332
+#define FRONTIER_MON_SEAKING_2 333
+#define FRONTIER_MON_JUMPLUFF_2 334
+#define FRONTIER_MON_PILOSWINE_2 335
+#define FRONTIER_MON_GOLBAT_2 336
+#define FRONTIER_MON_PRIMEAPE_2 337
+#define FRONTIER_MON_HITMONLEE_2 338
+#define FRONTIER_MON_HITMONCHAN_2 339
+#define FRONTIER_MON_GIRAFARIG_2 340
+#define FRONTIER_MON_HITMONTOP_2 341
+#define FRONTIER_MON_BANETTE_2 342
+#define FRONTIER_MON_NINJASK_2 343
+#define FRONTIER_MON_SEVIPER_2 344
+#define FRONTIER_MON_ZANGOOSE_2 345
+#define FRONTIER_MON_CAMERUPT_2 346
+#define FRONTIER_MON_SHARPEDO_2 347
+#define FRONTIER_MON_TROPIUS_2 348
+#define FRONTIER_MON_MAGNETON_2 349
+#define FRONTIER_MON_MANTINE_2 350
+#define FRONTIER_MON_STANTLER_2 351
+#define FRONTIER_MON_ABSOL_2 352
+#define FRONTIER_MON_SWALOT_2 353
+#define FRONTIER_MON_CRAWDAUNT_2 354
+#define FRONTIER_MON_PIDGEOT_2 355
+#define FRONTIER_MON_GRUMPIG_2 356
+#define FRONTIER_MON_TORKOAL_2 357
+#define FRONTIER_MON_KINGLER_2 358
+#define FRONTIER_MON_CACTURNE_2 359
+#define FRONTIER_MON_BELLOSSOM_2 360
+#define FRONTIER_MON_OCTILLERY_2 361
+#define FRONTIER_MON_HUNTAIL_2 362
+#define FRONTIER_MON_GOREBYSS_2 363
+#define FRONTIER_MON_RELICANTH_2 364
+#define FRONTIER_MON_OMASTAR_2 365
+#define FRONTIER_MON_KABUTOPS_2 366
+#define FRONTIER_MON_POLIWRATH_2 367
+#define FRONTIER_MON_SCYTHER_2 368
+#define FRONTIER_MON_PINSIR_2 369
+#define FRONTIER_MON_POLITOED_2 370
+#define FRONTIER_MON_CLOYSTER_2 371
+
+#define FRONTIER_MON_DUGTRIO_1 372
+#define FRONTIER_MON_MEDICHAM_1 373
+#define FRONTIER_MON_MISDREAVUS_1 374
+#define FRONTIER_MON_FEAROW_1 375
+#define FRONTIER_MON_GRANBULL_1 376
+#define FRONTIER_MON_JYNX_1 377
+#define FRONTIER_MON_DUSCLOPS_1 378
+#define FRONTIER_MON_DODRIO_1 379
+#define FRONTIER_MON_MR_MIME_1 380
+#define FRONTIER_MON_LANTURN_1 381
+#define FRONTIER_MON_BRELOOM_1 382
+#define FRONTIER_MON_FORRETRESS_1 383
+#define FRONTIER_MON_WHISCASH_1 384
+#define FRONTIER_MON_XATU_1 385
+#define FRONTIER_MON_SKARMORY_1 386
+#define FRONTIER_MON_MAROWAK_1 387
+#define FRONTIER_MON_QUAGSIRE_1 388
+#define FRONTIER_MON_CLEFABLE_1 389
+#define FRONTIER_MON_HARIYAMA_1 390
+#define FRONTIER_MON_RAICHU_1 391
+#define FRONTIER_MON_DEWGONG_1 392
+#define FRONTIER_MON_MANECTRIC_1 393
+#define FRONTIER_MON_VILEPLUME_1 394
+#define FRONTIER_MON_VICTREEBEL_1 395
+#define FRONTIER_MON_ELECTRODE_1 396
+#define FRONTIER_MON_EXPLOUD_1 397
+#define FRONTIER_MON_SHIFTRY_1 398
+#define FRONTIER_MON_GLALIE_1 399
+#define FRONTIER_MON_LUDICOLO_1 400
+#define FRONTIER_MON_HYPNO_1 401
+#define FRONTIER_MON_GOLEM_1 402
+#define FRONTIER_MON_RHYDON_1 403
+#define FRONTIER_MON_ALAKAZAM_1 404
+#define FRONTIER_MON_WEEZING_1 405
+#define FRONTIER_MON_KANGASKHAN_1 406
+#define FRONTIER_MON_ELECTABUZZ_1 407
+#define FRONTIER_MON_TAUROS_1 408
+#define FRONTIER_MON_SLOWBRO_1 409
+#define FRONTIER_MON_SLOWKING_1 410
+#define FRONTIER_MON_MILTANK_1 411
+#define FRONTIER_MON_ALTARIA_1 412
+#define FRONTIER_MON_NIDOQUEEN_1 413
+#define FRONTIER_MON_NIDOKING_1 414
+#define FRONTIER_MON_MAGMAR_1 415
+#define FRONTIER_MON_CRADILY_1 416
+#define FRONTIER_MON_ARMALDO_1 417
+#define FRONTIER_MON_GOLDUCK_1 418
+#define FRONTIER_MON_RAPIDASH_1 419
+#define FRONTIER_MON_MUK_1 420
+#define FRONTIER_MON_GENGAR_1 421
+#define FRONTIER_MON_AMPHAROS_1 422
+#define FRONTIER_MON_SCIZOR_1 423
+#define FRONTIER_MON_HERACROSS_1 424
+#define FRONTIER_MON_URSARING_1 425
+#define FRONTIER_MON_HOUNDOOM_1 426
+#define FRONTIER_MON_DONPHAN_1 427
+#define FRONTIER_MON_CLAYDOL_1 428
+#define FRONTIER_MON_WAILORD_1 429
+#define FRONTIER_MON_NINETALES_1 430
+#define FRONTIER_MON_MACHAMP_1 431
+#define FRONTIER_MON_SHUCKLE_1 432
+#define FRONTIER_MON_STEELIX_1 433
+#define FRONTIER_MON_TENTACRUEL_1 434
+#define FRONTIER_MON_AERODACTYL_1 435
+#define FRONTIER_MON_PORYGON2_1 436
+#define FRONTIER_MON_GARDEVOIR_1 437
+#define FRONTIER_MON_EXEGGUTOR_1 438
+#define FRONTIER_MON_STARMIE_1 439
+#define FRONTIER_MON_FLYGON_1 440
+#define FRONTIER_MON_VENUSAUR_1 441
+#define FRONTIER_MON_VAPOREON_1 442
+#define FRONTIER_MON_JOLTEON_1 443
+#define FRONTIER_MON_FLAREON_1 444
+#define FRONTIER_MON_MEGANIUM_1 445
+#define FRONTIER_MON_ESPEON_1 446
+#define FRONTIER_MON_UMBREON_1 447
+#define FRONTIER_MON_BLASTOISE_1 448
+#define FRONTIER_MON_FERALIGATR_1 449
+#define FRONTIER_MON_AGGRON_1 450
+#define FRONTIER_MON_BLAZIKEN_1 451
+#define FRONTIER_MON_WALREIN_1 452
+#define FRONTIER_MON_SCEPTILE_1 453
+#define FRONTIER_MON_CHARIZARD_1 454
+#define FRONTIER_MON_TYPHLOSION_1 455
+#define FRONTIER_MON_LAPRAS_1 456
+#define FRONTIER_MON_CROBAT_1 457
+#define FRONTIER_MON_SWAMPERT_1 458
+#define FRONTIER_MON_GYARADOS_1 459
+#define FRONTIER_MON_SNORLAX_1 460
+#define FRONTIER_MON_KINGDRA_1 461
+#define FRONTIER_MON_BLISSEY_1 462
+#define FRONTIER_MON_MILOTIC_1 463
+#define FRONTIER_MON_ARCANINE_1 464
+#define FRONTIER_MON_SALAMENCE_1 465
+#define FRONTIER_MON_METAGROSS_1 466
+#define FRONTIER_MON_SLAKING_1 467
+
+#define FRONTIER_MON_DUGTRIO_2 468
+#define FRONTIER_MON_MEDICHAM_2 469
+#define FRONTIER_MON_MAROWAK_2 470
+#define FRONTIER_MON_QUAGSIRE_2 471
+#define FRONTIER_MON_MISDREAVUS_2 472
+#define FRONTIER_MON_FEAROW_2 473
+#define FRONTIER_MON_GRANBULL_2 474
+#define FRONTIER_MON_JYNX_2 475
+#define FRONTIER_MON_DUSCLOPS_2 476
+#define FRONTIER_MON_DODRIO_2 477
+#define FRONTIER_MON_MR_MIME_2 478
+#define FRONTIER_MON_LANTURN_2 479
+#define FRONTIER_MON_BRELOOM_2 480
+#define FRONTIER_MON_FORRETRESS_2 481
+#define FRONTIER_MON_SKARMORY_2 482
+#define FRONTIER_MON_WHISCASH_2 483
+#define FRONTIER_MON_XATU_2 484
+#define FRONTIER_MON_CLEFABLE_2 485
+#define FRONTIER_MON_HARIYAMA_2 486
+#define FRONTIER_MON_RAICHU_2 487
+#define FRONTIER_MON_DEWGONG_2 488
+#define FRONTIER_MON_MANECTRIC_2 489
+#define FRONTIER_MON_VILEPLUME_2 490
+#define FRONTIER_MON_VICTREEBEL_2 491
+#define FRONTIER_MON_ELECTRODE_2 492
+#define FRONTIER_MON_EXPLOUD_2 493
+#define FRONTIER_MON_SHIFTRY_2 494
+#define FRONTIER_MON_GLALIE_2 495
+#define FRONTIER_MON_LUDICOLO_2 496
+#define FRONTIER_MON_HYPNO_2 497
+#define FRONTIER_MON_GOLEM_2 498
+#define FRONTIER_MON_RHYDON_2 499
+#define FRONTIER_MON_ALAKAZAM_2 500
+#define FRONTIER_MON_WEEZING_2 501
+#define FRONTIER_MON_KANGASKHAN_2 502
+#define FRONTIER_MON_ELECTABUZZ_2 503
+#define FRONTIER_MON_TAUROS_2 504
+#define FRONTIER_MON_SLOWBRO_2 505
+#define FRONTIER_MON_SLOWKING_2 506
+#define FRONTIER_MON_MILTANK_2 507
+#define FRONTIER_MON_ALTARIA_2 508
+#define FRONTIER_MON_NIDOQUEEN_2 509
+#define FRONTIER_MON_NIDOKING_2 510
+#define FRONTIER_MON_MAGMAR_2 511
+#define FRONTIER_MON_CRADILY_2 512
+#define FRONTIER_MON_ARMALDO_2 513
+#define FRONTIER_MON_GOLDUCK_2 514
+#define FRONTIER_MON_RAPIDASH_2 515
+#define FRONTIER_MON_MUK_2 516
+#define FRONTIER_MON_GENGAR_2 517
+#define FRONTIER_MON_AMPHAROS_2 518
+#define FRONTIER_MON_SCIZOR_2 519
+#define FRONTIER_MON_HERACROSS_2 520
+#define FRONTIER_MON_URSARING_2 521
+#define FRONTIER_MON_HOUNDOOM_2 522
+#define FRONTIER_MON_DONPHAN_2 523
+#define FRONTIER_MON_CLAYDOL_2 524
+#define FRONTIER_MON_WAILORD_2 525
+#define FRONTIER_MON_NINETALES_2 526
+#define FRONTIER_MON_MACHAMP_2 527
+#define FRONTIER_MON_SHUCKLE_2 528
+#define FRONTIER_MON_STEELIX_2 529
+#define FRONTIER_MON_TENTACRUEL_2 530
+#define FRONTIER_MON_AERODACTYL_2 531
+#define FRONTIER_MON_PORYGON2_2 532
+#define FRONTIER_MON_GARDEVOIR_2 533
+#define FRONTIER_MON_EXEGGUTOR_2 534
+#define FRONTIER_MON_STARMIE_2 535
+#define FRONTIER_MON_FLYGON_2 536
+#define FRONTIER_MON_VENUSAUR_2 537
+#define FRONTIER_MON_VAPOREON_2 538
+#define FRONTIER_MON_JOLTEON_2 539
+#define FRONTIER_MON_FLAREON_2 540
+#define FRONTIER_MON_MEGANIUM_2 541
+#define FRONTIER_MON_ESPEON_2 542
+#define FRONTIER_MON_UMBREON_2 543
+#define FRONTIER_MON_BLASTOISE_2 544
+#define FRONTIER_MON_FERALIGATR_2 545
+#define FRONTIER_MON_AGGRON_2 546
+#define FRONTIER_MON_BLAZIKEN_2 547
+#define FRONTIER_MON_WALREIN_2 548
+#define FRONTIER_MON_SCEPTILE_2 549
+#define FRONTIER_MON_CHARIZARD_2 550
+#define FRONTIER_MON_TYPHLOSION_2 551
+#define FRONTIER_MON_LAPRAS_2 552
+#define FRONTIER_MON_CROBAT_2 553
+#define FRONTIER_MON_SWAMPERT_2 554
+#define FRONTIER_MON_GYARADOS_2 555
+#define FRONTIER_MON_SNORLAX_2 556
+#define FRONTIER_MON_KINGDRA_2 557
+#define FRONTIER_MON_BLISSEY_2 558
+#define FRONTIER_MON_MILOTIC_2 559
+#define FRONTIER_MON_ARCANINE_2 560
+#define FRONTIER_MON_SALAMENCE_2 561
+#define FRONTIER_MON_METAGROSS_2 562
+#define FRONTIER_MON_SLAKING_2 563
+
+#define FRONTIER_MON_DUGTRIO_3 564
+#define FRONTIER_MON_MEDICHAM_3 565
+#define FRONTIER_MON_MISDREAVUS_3 566
+#define FRONTIER_MON_FEAROW_3 567
+#define FRONTIER_MON_GRANBULL_3 568
+#define FRONTIER_MON_JYNX_3 569
+#define FRONTIER_MON_DUSCLOPS_3 570
+#define FRONTIER_MON_DODRIO_3 571
+#define FRONTIER_MON_MR_MIME_3 572
+#define FRONTIER_MON_LANTURN_3 573
+#define FRONTIER_MON_BRELOOM_3 574
+#define FRONTIER_MON_FORRETRESS_3 575
+#define FRONTIER_MON_WHISCASH_3 576
+#define FRONTIER_MON_XATU_3 577
+#define FRONTIER_MON_SKARMORY_3 578
+#define FRONTIER_MON_MAROWAK_3 579
+#define FRONTIER_MON_QUAGSIRE_3 580
+#define FRONTIER_MON_CLEFABLE_3 581
+#define FRONTIER_MON_HARIYAMA_3 582
+#define FRONTIER_MON_RAICHU_3 583
+#define FRONTIER_MON_DEWGONG_3 584
+#define FRONTIER_MON_MANECTRIC_3 585
+#define FRONTIER_MON_VILEPLUME_3 586
+#define FRONTIER_MON_VICTREEBEL_3 587
+#define FRONTIER_MON_ELECTRODE_3 588
+#define FRONTIER_MON_EXPLOUD_3 589
+#define FRONTIER_MON_SHIFTRY_3 590
+#define FRONTIER_MON_GLALIE_3 591
+#define FRONTIER_MON_LUDICOLO_3 592
+#define FRONTIER_MON_HYPNO_3 593
+#define FRONTIER_MON_GOLEM_3 594
+#define FRONTIER_MON_RHYDON_3 595
+#define FRONTIER_MON_ALAKAZAM_3 596
+#define FRONTIER_MON_WEEZING_3 597
+#define FRONTIER_MON_KANGASKHAN_3 598
+#define FRONTIER_MON_ELECTABUZZ_3 599
+#define FRONTIER_MON_TAUROS_3 600
+#define FRONTIER_MON_SLOWBRO_3 601
+#define FRONTIER_MON_SLOWKING_3 602
+#define FRONTIER_MON_MILTANK_3 603
+#define FRONTIER_MON_ALTARIA_3 604
+#define FRONTIER_MON_NIDOQUEEN_3 605
+#define FRONTIER_MON_NIDOKING_3 606
+#define FRONTIER_MON_MAGMAR_3 607
+#define FRONTIER_MON_CRADILY_3 608
+#define FRONTIER_MON_ARMALDO_3 609
+#define FRONTIER_MON_GOLDUCK_3 610
+#define FRONTIER_MON_RAPIDASH_3 611
+#define FRONTIER_MON_MUK_3 612
+#define FRONTIER_MON_GENGAR_3 613
+#define FRONTIER_MON_AMPHAROS_3 614
+#define FRONTIER_MON_SCIZOR_3 615
+#define FRONTIER_MON_HERACROSS_3 616
+#define FRONTIER_MON_URSARING_3 617
+#define FRONTIER_MON_HOUNDOOM_3 618
+#define FRONTIER_MON_DONPHAN_3 619
+#define FRONTIER_MON_CLAYDOL_3 620
+#define FRONTIER_MON_WAILORD_3 621
+#define FRONTIER_MON_NINETALES_3 622
+#define FRONTIER_MON_MACHAMP_3 623
+#define FRONTIER_MON_SHUCKLE_3 624
+#define FRONTIER_MON_STEELIX_3 625
+#define FRONTIER_MON_TENTACRUEL_3 626
+#define FRONTIER_MON_AERODACTYL_3 627
+#define FRONTIER_MON_PORYGON2_3 628
+#define FRONTIER_MON_GARDEVOIR_3 629
+#define FRONTIER_MON_EXEGGUTOR_3 630
+#define FRONTIER_MON_STARMIE_3 631
+#define FRONTIER_MON_FLYGON_3 632
+#define FRONTIER_MON_VENUSAUR_3 633
+#define FRONTIER_MON_VAPOREON_3 634
+#define FRONTIER_MON_JOLTEON_3 635
+#define FRONTIER_MON_FLAREON_3 636
+#define FRONTIER_MON_MEGANIUM_3 637
+#define FRONTIER_MON_ESPEON_3 638
+#define FRONTIER_MON_UMBREON_3 639
+#define FRONTIER_MON_BLASTOISE_3 640
+#define FRONTIER_MON_FERALIGATR_3 641
+#define FRONTIER_MON_AGGRON_3 642
+#define FRONTIER_MON_BLAZIKEN_3 643
+#define FRONTIER_MON_WALREIN_3 644
+#define FRONTIER_MON_SCEPTILE_3 645
+#define FRONTIER_MON_CHARIZARD_3 646
+#define FRONTIER_MON_TYPHLOSION_3 647
+#define FRONTIER_MON_LAPRAS_3 648
+#define FRONTIER_MON_CROBAT_3 649
+#define FRONTIER_MON_SWAMPERT_3 650
+#define FRONTIER_MON_GYARADOS_3 651
+#define FRONTIER_MON_SNORLAX_3 652
+#define FRONTIER_MON_KINGDRA_3 653
+#define FRONTIER_MON_BLISSEY_3 654
+#define FRONTIER_MON_MILOTIC_3 655
+#define FRONTIER_MON_ARCANINE_3 656
+#define FRONTIER_MON_SALAMENCE_3 657
+#define FRONTIER_MON_METAGROSS_3 658
+#define FRONTIER_MON_SLAKING_3 659
+
+#define FRONTIER_MON_DUGTRIO_4 660
+#define FRONTIER_MON_MEDICHAM_4 661
+#define FRONTIER_MON_MISDREAVUS_4 662
+#define FRONTIER_MON_FEAROW_4 663
+#define FRONTIER_MON_GRANBULL_4 664
+#define FRONTIER_MON_JYNX_4 665
+#define FRONTIER_MON_DUSCLOPS_4 666
+#define FRONTIER_MON_DODRIO_4 667
+#define FRONTIER_MON_MR_MIME_4 668
+#define FRONTIER_MON_LANTURN_4 669
+#define FRONTIER_MON_BRELOOM_4 670
+#define FRONTIER_MON_FORRETRESS_4 671
+#define FRONTIER_MON_WHISCASH_4 672
+#define FRONTIER_MON_XATU_4 673
+#define FRONTIER_MON_SKARMORY_4 674
+#define FRONTIER_MON_MAROWAK_4 675
+#define FRONTIER_MON_QUAGSIRE_4 676
+#define FRONTIER_MON_CLEFABLE_4 677
+#define FRONTIER_MON_HARIYAMA_4 678
+#define FRONTIER_MON_RAICHU_4 679
+#define FRONTIER_MON_DEWGONG_4 680
+#define FRONTIER_MON_MANECTRIC_4 681
+#define FRONTIER_MON_VILEPLUME_4 682
+#define FRONTIER_MON_VICTREEBEL_4 683
+#define FRONTIER_MON_ELECTRODE_4 684
+#define FRONTIER_MON_EXPLOUD_4 685
+#define FRONTIER_MON_SHIFTRY_4 686
+#define FRONTIER_MON_GLALIE_4 687
+#define FRONTIER_MON_LUDICOLO_4 688
+#define FRONTIER_MON_HYPNO_4 689
+#define FRONTIER_MON_GOLEM_4 690
+#define FRONTIER_MON_RHYDON_4 691
+#define FRONTIER_MON_ALAKAZAM_4 692
+#define FRONTIER_MON_WEEZING_4 693
+#define FRONTIER_MON_KANGASKHAN_4 694
+#define FRONTIER_MON_ELECTABUZZ_4 695
+#define FRONTIER_MON_TAUROS_4 696
+#define FRONTIER_MON_SLOWBRO_4 697
+#define FRONTIER_MON_SLOWKING_4 698
+#define FRONTIER_MON_MILTANK_4 699
+#define FRONTIER_MON_ALTARIA_4 700
+#define FRONTIER_MON_NIDOQUEEN_4 701
+#define FRONTIER_MON_NIDOKING_4 702
+#define FRONTIER_MON_MAGMAR_4 703
+#define FRONTIER_MON_CRADILY_4 704
+#define FRONTIER_MON_ARMALDO_4 705
+#define FRONTIER_MON_GOLDUCK_4 706
+#define FRONTIER_MON_RAPIDASH_4 707
+#define FRONTIER_MON_MUK_4 708
+#define FRONTIER_MON_GENGAR_4 709
+#define FRONTIER_MON_AMPHAROS_4 710
+#define FRONTIER_MON_SCIZOR_4 711
+#define FRONTIER_MON_HERACROSS_4 712
+#define FRONTIER_MON_URSARING_4 713
+#define FRONTIER_MON_HOUNDOOM_4 714
+#define FRONTIER_MON_DONPHAN_4 715
+#define FRONTIER_MON_CLAYDOL_4 716
+#define FRONTIER_MON_WAILORD_4 717
+#define FRONTIER_MON_NINETALES_4 718
+#define FRONTIER_MON_MACHAMP_4 719
+#define FRONTIER_MON_SHUCKLE_4 720
+#define FRONTIER_MON_STEELIX_4 721
+#define FRONTIER_MON_TENTACRUEL_4 722
+#define FRONTIER_MON_AERODACTYL_4 723
+#define FRONTIER_MON_PORYGON2_4 724
+#define FRONTIER_MON_GARDEVOIR_4 725
+#define FRONTIER_MON_EXEGGUTOR_4 726
+#define FRONTIER_MON_STARMIE_4 727
+#define FRONTIER_MON_FLYGON_4 728
+#define FRONTIER_MON_VENUSAUR_4 729
+#define FRONTIER_MON_VAPOREON_4 730
+#define FRONTIER_MON_JOLTEON_4 731
+#define FRONTIER_MON_FLAREON_4 732
+#define FRONTIER_MON_MEGANIUM_4 733
+#define FRONTIER_MON_ESPEON_4 734
+#define FRONTIER_MON_UMBREON_4 735
+#define FRONTIER_MON_BLASTOISE_4 736
+#define FRONTIER_MON_FERALIGATR_4 737
+#define FRONTIER_MON_AGGRON_4 738
+#define FRONTIER_MON_BLAZIKEN_4 739
+#define FRONTIER_MON_WALREIN_4 740
+#define FRONTIER_MON_SCEPTILE_4 741
+#define FRONTIER_MON_CHARIZARD_4 742
+#define FRONTIER_MON_TYPHLOSION_4 743
+#define FRONTIER_MON_LAPRAS_4 744
+#define FRONTIER_MON_CROBAT_4 745
+#define FRONTIER_MON_SWAMPERT_4 746
+#define FRONTIER_MON_GYARADOS_4 747
+#define FRONTIER_MON_SNORLAX_4 748
+#define FRONTIER_MON_KINGDRA_4 749
+#define FRONTIER_MON_BLISSEY_4 750
+#define FRONTIER_MON_MILOTIC_4 751
+#define FRONTIER_MON_ARCANINE_4 752
+#define FRONTIER_MON_SALAMENCE_4 753
+#define FRONTIER_MON_METAGROSS_4 754
+#define FRONTIER_MON_SLAKING_4 755
+
+#define FRONTIER_MON_ARTICUNO_1 756
+#define FRONTIER_MON_ZAPDOS_1 757
+#define FRONTIER_MON_MOLTRES_1 758
+#define FRONTIER_MON_RAIKOU_1 759
+#define FRONTIER_MON_ENTEI_1 760
+#define FRONTIER_MON_SUICUNE_1 761
+#define FRONTIER_MON_REGIROCK_1 762
+#define FRONTIER_MON_REGICE_1 763
+#define FRONTIER_MON_REGISTEEL_1 764
+#define FRONTIER_MON_LATIAS_1 765
+#define FRONTIER_MON_LATIOS_1 766
+#define FRONTIER_MON_ARTICUNO_2 767
+#define FRONTIER_MON_ZAPDOS_2 768
+#define FRONTIER_MON_MOLTRES_2 769
+#define FRONTIER_MON_RAIKOU_2 770
+#define FRONTIER_MON_ENTEI_2 771
+#define FRONTIER_MON_SUICUNE_2 772
+#define FRONTIER_MON_REGIROCK_2 773
+#define FRONTIER_MON_REGICE_2 774
+#define FRONTIER_MON_REGISTEEL_2 775
+#define FRONTIER_MON_LATIAS_2 776
+#define FRONTIER_MON_LATIOS_2 777
+#define FRONTIER_MON_ARTICUNO_3 778
+#define FRONTIER_MON_ZAPDOS_3 779
+#define FRONTIER_MON_MOLTRES_3 780
+#define FRONTIER_MON_RAIKOU_3 781
+#define FRONTIER_MON_ENTEI_3 782
+#define FRONTIER_MON_SUICUNE_3 783
+#define FRONTIER_MON_REGIROCK_3 784
+#define FRONTIER_MON_REGICE_3 785
+#define FRONTIER_MON_REGISTEEL_3 786
+#define FRONTIER_MON_LATIAS_3 787
+#define FRONTIER_MON_LATIOS_3 788
+#define FRONTIER_MON_ARTICUNO_4 789
+#define FRONTIER_MON_ZAPDOS_4 790
+#define FRONTIER_MON_MOLTRES_4 791
+#define FRONTIER_MON_RAIKOU_4 792
+#define FRONTIER_MON_ENTEI_4 793
+#define FRONTIER_MON_SUICUNE_4 794
+#define FRONTIER_MON_REGIROCK_4 795
+#define FRONTIER_MON_REGICE_4 796
+#define FRONTIER_MON_REGISTEEL_4 797
+#define FRONTIER_MON_LATIAS_4 798
+#define FRONTIER_MON_LATIOS_4 799
+#define FRONTIER_MON_GENGAR_5 800
+#define FRONTIER_MON_GENGAR_6 801
+#define FRONTIER_MON_GENGAR_7 802
+#define FRONTIER_MON_GENGAR_8 803
+#define FRONTIER_MON_URSARING_5 804
+#define FRONTIER_MON_URSARING_6 805
+#define FRONTIER_MON_URSARING_7 806
+#define FRONTIER_MON_URSARING_8 807
+#define FRONTIER_MON_MACHAMP_5 808
+#define FRONTIER_MON_MACHAMP_6 809
+#define FRONTIER_MON_MACHAMP_7 810
+#define FRONTIER_MON_MACHAMP_8 811
+#define FRONTIER_MON_GARDEVOIR_5 812
+#define FRONTIER_MON_GARDEVOIR_6 813
+#define FRONTIER_MON_GARDEVOIR_7 814
+#define FRONTIER_MON_GARDEVOIR_8 815
+#define FRONTIER_MON_STARMIE_5 816
+#define FRONTIER_MON_STARMIE_6 817
+#define FRONTIER_MON_STARMIE_7 818
+#define FRONTIER_MON_STARMIE_8 819
+#define FRONTIER_MON_LAPRAS_5 820
+#define FRONTIER_MON_LAPRAS_6 821
+#define FRONTIER_MON_LAPRAS_7 822
+#define FRONTIER_MON_LAPRAS_8 823
+#define FRONTIER_MON_SNORLAX_5 824
+#define FRONTIER_MON_SNORLAX_6 825
+#define FRONTIER_MON_SNORLAX_7 826
+#define FRONTIER_MON_SNORLAX_8 827
+#define FRONTIER_MON_SALAMENCE_5 828
+#define FRONTIER_MON_SALAMENCE_6 829
+#define FRONTIER_MON_SALAMENCE_7 830
+#define FRONTIER_MON_SALAMENCE_8 831
+#define FRONTIER_MON_METAGROSS_5 832
+#define FRONTIER_MON_METAGROSS_6 833
+#define FRONTIER_MON_METAGROSS_7 834
+#define FRONTIER_MON_METAGROSS_8 835
+#define FRONTIER_MON_REGIROCK_5 836
+#define FRONTIER_MON_REGIROCK_6 837
+#define FRONTIER_MON_REGICE_5 838
+#define FRONTIER_MON_REGICE_6 839
+#define FRONTIER_MON_REGISTEEL_5 840
+#define FRONTIER_MON_REGISTEEL_6 841
+#define FRONTIER_MON_LATIAS_5 842
+#define FRONTIER_MON_LATIAS_6 843
+#define FRONTIER_MON_LATIAS_7 844
+#define FRONTIER_MON_LATIAS_8 845
+#define FRONTIER_MON_LATIOS_5 846
+#define FRONTIER_MON_LATIOS_6 847
+#define FRONTIER_MON_LATIOS_7 848
+#define FRONTIER_MON_LATIOS_8 849
+
+#define FRONTIER_MONS_HIGH_TIER 849 // Mons above this point can only appear > level 50
+
+#define FRONTIER_MON_DRAGONITE_1 850
+#define FRONTIER_MON_DRAGONITE_2 851
+#define FRONTIER_MON_DRAGONITE_3 852
+#define FRONTIER_MON_DRAGONITE_4 853
+#define FRONTIER_MON_DRAGONITE_5 854
+#define FRONTIER_MON_DRAGONITE_6 855
+#define FRONTIER_MON_DRAGONITE_7 856
+#define FRONTIER_MON_DRAGONITE_8 857
+#define FRONTIER_MON_DRAGONITE_9 858
+#define FRONTIER_MON_DRAGONITE_10 859
+#define FRONTIER_MON_TYRANITAR_1 860
+#define FRONTIER_MON_TYRANITAR_2 861
+#define FRONTIER_MON_TYRANITAR_3 862
+#define FRONTIER_MON_TYRANITAR_4 863
+#define FRONTIER_MON_TYRANITAR_5 864
+#define FRONTIER_MON_TYRANITAR_6 865
+#define FRONTIER_MON_TYRANITAR_7 866
+#define FRONTIER_MON_TYRANITAR_8 867
+#define FRONTIER_MON_TYRANITAR_9 868
+#define FRONTIER_MON_TYRANITAR_10 869
+#define FRONTIER_MON_ARTICUNO_5 870
+#define FRONTIER_MON_ARTICUNO_6 871
+#define FRONTIER_MON_ZAPDOS_5 872
+#define FRONTIER_MON_ZAPDOS_6 873
+#define FRONTIER_MON_MOLTRES_5 874
+#define FRONTIER_MON_MOLTRES_6 875
+#define FRONTIER_MON_RAIKOU_5 876
+#define FRONTIER_MON_RAIKOU_6 877
+#define FRONTIER_MON_ENTEI_5 878
+#define FRONTIER_MON_ENTEI_6 879
+#define FRONTIER_MON_SUICUNE_5 880
+#define FRONTIER_MON_SUICUNE_6 881
+
+#define NUM_FRONTIER_MONS 882
+
+#endif //GUARD_CONSTANTS_BATTLE_FRONTIER_MONS_H
diff --git a/include/constants/battle_frontier_trainers.h b/include/constants/battle_frontier_trainers.h
new file mode 100644
index 000000000..2914b153f
--- /dev/null
+++ b/include/constants/battle_frontier_trainers.h
@@ -0,0 +1,309 @@
+#ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_TRAINERS_H
+#define GUARD_CONSTANTS_BATTLE_FRONTIER_TRAINERS_H
+
+#define FRONTIER_TRAINER_BRADY 0
+#define FRONTIER_TRAINER_CONNER 1
+#define FRONTIER_TRAINER_BRADLEY 2
+#define FRONTIER_TRAINER_CYBIL 3
+#define FRONTIER_TRAINER_RODETTE 4
+#define FRONTIER_TRAINER_PEGGY 5
+#define FRONTIER_TRAINER_KEITH 6
+#define FRONTIER_TRAINER_GRAYSON 7
+#define FRONTIER_TRAINER_GLENN 8
+#define FRONTIER_TRAINER_LILIANA 9
+#define FRONTIER_TRAINER_ELISE 10
+#define FRONTIER_TRAINER_ZOEY 11
+#define FRONTIER_TRAINER_MANUEL 12
+#define FRONTIER_TRAINER_RUSS 13
+#define FRONTIER_TRAINER_DUSTIN 14
+#define FRONTIER_TRAINER_TINA 15
+#define FRONTIER_TRAINER_GILLIAN1 16
+#define FRONTIER_TRAINER_ZOE 17
+#define FRONTIER_TRAINER_CHEN 18
+#define FRONTIER_TRAINER_AL 19
+#define FRONTIER_TRAINER_MITCH 20
+#define FRONTIER_TRAINER_ANNE 21
+#define FRONTIER_TRAINER_ALIZE 22
+#define FRONTIER_TRAINER_LAUREN 23
+#define FRONTIER_TRAINER_KIPP 24
+#define FRONTIER_TRAINER_JASON 25
+#define FRONTIER_TRAINER_JOHN 26
+#define FRONTIER_TRAINER_ANN 27
+#define FRONTIER_TRAINER_EILEEN 28
+#define FRONTIER_TRAINER_CARLIE 29
+#define FRONTIER_TRAINER_GORDON 30
+#define FRONTIER_TRAINER_AYDEN 31
+#define FRONTIER_TRAINER_MARCO 32
+#define FRONTIER_TRAINER_CIERRA 33
+#define FRONTIER_TRAINER_MARCY 34
+#define FRONTIER_TRAINER_KATHY 35
+#define FRONTIER_TRAINER_PEYTON 36
+#define FRONTIER_TRAINER_JULIAN 37
+#define FRONTIER_TRAINER_QUINN 38
+#define FRONTIER_TRAINER_HAYLEE 39
+#define FRONTIER_TRAINER_AMANDA 40
+#define FRONTIER_TRAINER_STACY 41
+#define FRONTIER_TRAINER_RAFAEL 42
+#define FRONTIER_TRAINER_OLIVER 43
+#define FRONTIER_TRAINER_PAYTON 44
+#define FRONTIER_TRAINER_PAMELA 45
+#define FRONTIER_TRAINER_ELIZA 46
+#define FRONTIER_TRAINER_MARISA 47
+#define FRONTIER_TRAINER_LEWIS 48
+#define FRONTIER_TRAINER_YOSHI 49
+#define FRONTIER_TRAINER_DESTIN 50
+#define FRONTIER_TRAINER_KEON 51
+#define FRONTIER_TRAINER_STUART 52
+#define FRONTIER_TRAINER_NESTOR 53
+#define FRONTIER_TRAINER_DERRICK 54
+#define FRONTIER_TRAINER_BRYSON 55
+#define FRONTIER_TRAINER_CLAYTON 56
+#define FRONTIER_TRAINER_TRENTON 57
+#define FRONTIER_TRAINER_JENSON 58
+#define FRONTIER_TRAINER_WESLEY 59
+#define FRONTIER_TRAINER_ANTON 60
+#define FRONTIER_TRAINER_LAWSON 61
+#define FRONTIER_TRAINER_SAMMY 62
+#define FRONTIER_TRAINER_ARNIE 63
+#define FRONTIER_TRAINER_ADRIAN 64
+#define FRONTIER_TRAINER_TRISTAN 65
+#define FRONTIER_TRAINER_JULIANA 66
+#define FRONTIER_TRAINER_RYLEE 67
+#define FRONTIER_TRAINER_CHELSEA 68
+#define FRONTIER_TRAINER_DANELA 69
+#define FRONTIER_TRAINER_LIZBETH 70
+#define FRONTIER_TRAINER_AMELIA 71
+#define FRONTIER_TRAINER_JILLIAN 72
+#define FRONTIER_TRAINER_ABBIE 73
+#define FRONTIER_TRAINER_BRIANA 74
+#define FRONTIER_TRAINER_ANTONIO 75
+#define FRONTIER_TRAINER_JADEN 76
+#define FRONTIER_TRAINER_DAKOTA 77
+#define FRONTIER_TRAINER_BRAYDEN 78
+#define FRONTIER_TRAINER_CORSON 79
+#define FRONTIER_TRAINER_TREVIN 80
+#define FRONTIER_TRAINER_PATRICK 81
+#define FRONTIER_TRAINER_KADEN 82
+#define FRONTIER_TRAINER_MAXWELL 83
+#define FRONTIER_TRAINER_DARYL 84
+#define FRONTIER_TRAINER_KENNETH 85
+#define FRONTIER_TRAINER_RICH 86
+#define FRONTIER_TRAINER_CADEN 87
+#define FRONTIER_TRAINER_MARLON 88
+#define FRONTIER_TRAINER_NASH 89
+#define FRONTIER_TRAINER_ROBBY 90
+#define FRONTIER_TRAINER_REECE 91
+#define FRONTIER_TRAINER_KATHRYN 92
+#define FRONTIER_TRAINER_ELLEN 93
+#define FRONTIER_TRAINER_RAMON 94
+#define FRONTIER_TRAINER_ARTHUR 95
+#define FRONTIER_TRAINER_ALONDRA 96
+#define FRONTIER_TRAINER_ADRIANA 97
+#define FRONTIER_TRAINER_MALIK 98
+#define FRONTIER_TRAINER_JILL 99
+#define FRONTIER_TRAINER_ERIK 100
+#define FRONTIER_TRAINER_YAZMIN 101
+#define FRONTIER_TRAINER_JAMAL 102
+#define FRONTIER_TRAINER_LESLIE 103
+#define FRONTIER_TRAINER_DAVE 104
+#define FRONTIER_TRAINER_CARLO 105
+#define FRONTIER_TRAINER_EMILIA 106
+#define FRONTIER_TRAINER_DALIA 107
+#define FRONTIER_TRAINER_HITOMI 108
+#define FRONTIER_TRAINER_RICARDO 109
+#define FRONTIER_TRAINER_SHIZUKA 110
+#define FRONTIER_TRAINER_JOANA 111
+#define FRONTIER_TRAINER_KELLY 112
+#define FRONTIER_TRAINER_RAYNA 113
+#define FRONTIER_TRAINER_EVAN 114
+#define FRONTIER_TRAINER_JORDAN 115
+#define FRONTIER_TRAINER_JOEL 116
+#define FRONTIER_TRAINER_KRISTEN 117
+#define FRONTIER_TRAINER_SELPHY 118
+#define FRONTIER_TRAINER_CHLOE 119
+#define FRONTIER_TRAINER_NORTON 120
+#define FRONTIER_TRAINER_LUKAS 121
+#define FRONTIER_TRAINER_ZACH 122
+#define FRONTIER_TRAINER_KAITLYN 123
+#define FRONTIER_TRAINER_BREANNA 124
+#define FRONTIER_TRAINER_KENDRA 125
+#define FRONTIER_TRAINER_MOLLY 126
+#define FRONTIER_TRAINER_JAZMIN 127
+#define FRONTIER_TRAINER_KELSEY 128
+#define FRONTIER_TRAINER_JALEN 129
+#define FRONTIER_TRAINER_GRIFFEN 130
+#define FRONTIER_TRAINER_XANDER 131
+#define FRONTIER_TRAINER_MARVIN 132
+#define FRONTIER_TRAINER_BRENNAN 133
+#define FRONTIER_TRAINER_BALEY 134
+#define FRONTIER_TRAINER_ZACKARY 135
+#define FRONTIER_TRAINER_GABRIEL 136
+#define FRONTIER_TRAINER_EMILY 137
+#define FRONTIER_TRAINER_JORDYN 138
+#define FRONTIER_TRAINER_SOFIA 139
+#define FRONTIER_TRAINER_BRADEN 140
+#define FRONTIER_TRAINER_KAYDEN 141
+#define FRONTIER_TRAINER_COOPER 142
+#define FRONTIER_TRAINER_JULIA 143
+#define FRONTIER_TRAINER_AMARA 144
+#define FRONTIER_TRAINER_LYNN 145
+#define FRONTIER_TRAINER_JOVAN 146
+#define FRONTIER_TRAINER_DOMINIC 147
+#define FRONTIER_TRAINER_NIKOLAS 148
+#define FRONTIER_TRAINER_VALERIA 149
+#define FRONTIER_TRAINER_DELANEY 150
+#define FRONTIER_TRAINER_MEGHAN 151
+#define FRONTIER_TRAINER_ROBERTO 152
+#define FRONTIER_TRAINER_DAMIAN 153
+#define FRONTIER_TRAINER_BRODY 154
+#define FRONTIER_TRAINER_GRAHAM 155
+#define FRONTIER_TRAINER_TYLOR 156
+#define FRONTIER_TRAINER_JAREN 157
+#define FRONTIER_TRAINER_CORDELL 158
+#define FRONTIER_TRAINER_JAZLYN 159
+#define FRONTIER_TRAINER_ZACHERY 160
+#define FRONTIER_TRAINER_JOHAN 161
+#define FRONTIER_TRAINER_SHEA 162
+#define FRONTIER_TRAINER_KAILA 163
+#define FRONTIER_TRAINER_ISIAH 164
+#define FRONTIER_TRAINER_GARRETT 165
+#define FRONTIER_TRAINER_HAYLIE 166
+#define FRONTIER_TRAINER_MEGAN 167
+#define FRONTIER_TRAINER_ISSAC 168
+#define FRONTIER_TRAINER_QUINTON 169
+#define FRONTIER_TRAINER_SALMA 170
+#define FRONTIER_TRAINER_ANSLEY 171
+#define FRONTIER_TRAINER_HOLDEN 172
+#define FRONTIER_TRAINER_LUCA 173
+#define FRONTIER_TRAINER_JAMISON 174
+#define FRONTIER_TRAINER_GUNNAR 175
+#define FRONTIER_TRAINER_CRAIG 176
+#define FRONTIER_TRAINER_PIERCE 177
+#define FRONTIER_TRAINER_REGINA 178
+#define FRONTIER_TRAINER_ALISON 179
+#define FRONTIER_TRAINER_HANK 180
+#define FRONTIER_TRAINER_EARL 181
+#define FRONTIER_TRAINER_RAMIRO 182
+#define FRONTIER_TRAINER_HUNTER 183
+#define FRONTIER_TRAINER_AIDEN 184
+#define FRONTIER_TRAINER_XAVIER 185
+#define FRONTIER_TRAINER_CLINTON 186
+#define FRONTIER_TRAINER_JESSE 187
+#define FRONTIER_TRAINER_EDUARDO 188
+#define FRONTIER_TRAINER_HAL 189
+#define FRONTIER_TRAINER_GAGE 190
+#define FRONTIER_TRAINER_ARNOLD 191
+#define FRONTIER_TRAINER_JARRETT 192
+#define FRONTIER_TRAINER_GARETT 193
+#define FRONTIER_TRAINER_EMANUEL 194
+#define FRONTIER_TRAINER_GUSTAVO 195
+#define FRONTIER_TRAINER_KAMERON 196
+#define FRONTIER_TRAINER_ALFREDO 197
+#define FRONTIER_TRAINER_RUBEN 198
+#define FRONTIER_TRAINER_LAMAR 199
+#define FRONTIER_TRAINER_JAXON 200
+#define FRONTIER_TRAINER_LOGAN 201
+#define FRONTIER_TRAINER_EMILEE 202
+#define FRONTIER_TRAINER_JOSIE 203
+#define FRONTIER_TRAINER_ARMANDO 204
+#define FRONTIER_TRAINER_SKYLER 205
+#define FRONTIER_TRAINER_RUTH 206
+#define FRONTIER_TRAINER_MELODY 207
+#define FRONTIER_TRAINER_PEDRO 208
+#define FRONTIER_TRAINER_ERICK 209
+#define FRONTIER_TRAINER_ELAINE 210
+#define FRONTIER_TRAINER_JOYCE 211
+#define FRONTIER_TRAINER_TODD 212
+#define FRONTIER_TRAINER_GAVIN 213
+#define FRONTIER_TRAINER_MALORY 214
+#define FRONTIER_TRAINER_ESTHER 215
+#define FRONTIER_TRAINER_OSCAR 216
+#define FRONTIER_TRAINER_WILSON 217
+#define FRONTIER_TRAINER_CLARE 218
+#define FRONTIER_TRAINER_TESS 219
+#define FRONTIER_TRAINER_LEON 220
+#define FRONTIER_TRAINER_ALONZO 221
+#define FRONTIER_TRAINER_VINCE 222
+#define FRONTIER_TRAINER_BRYON 223
+#define FRONTIER_TRAINER_AVA 224
+#define FRONTIER_TRAINER_MIRIAM 225
+#define FRONTIER_TRAINER_CARRIE 226
+#define FRONTIER_TRAINER_GILLIAN2 227
+#define FRONTIER_TRAINER_TYLER 228
+#define FRONTIER_TRAINER_CHAZ 229
+#define FRONTIER_TRAINER_NELSON 230
+#define FRONTIER_TRAINER_SHANIA 231
+#define FRONTIER_TRAINER_STELLA 232
+#define FRONTIER_TRAINER_DORINE 233
+#define FRONTIER_TRAINER_MADDOX 234
+#define FRONTIER_TRAINER_DAVIN 235
+#define FRONTIER_TRAINER_TREVON 236
+#define FRONTIER_TRAINER_MATEO 237
+#define FRONTIER_TRAINER_BRET 238
+#define FRONTIER_TRAINER_RAUL 239
+#define FRONTIER_TRAINER_KAY 240
+#define FRONTIER_TRAINER_ELENA 241
+#define FRONTIER_TRAINER_ALANA 242
+#define FRONTIER_TRAINER_ALEXAS 243
+#define FRONTIER_TRAINER_WESTON 244
+#define FRONTIER_TRAINER_JASPER 245
+#define FRONTIER_TRAINER_NADIA 246
+#define FRONTIER_TRAINER_MIRANDA 247
+#define FRONTIER_TRAINER_EMMA 248
+#define FRONTIER_TRAINER_ROLANDO 249
+#define FRONTIER_TRAINER_STANLY 250
+#define FRONTIER_TRAINER_DARIO 251
+#define FRONTIER_TRAINER_KARLEE 252
+#define FRONTIER_TRAINER_JAYLIN 253
+#define FRONTIER_TRAINER_INGRID 254
+#define FRONTIER_TRAINER_DELILAH 255
+#define FRONTIER_TRAINER_CARLY 256
+#define FRONTIER_TRAINER_LEXIE 257
+#define FRONTIER_TRAINER_MILLER 258
+#define FRONTIER_TRAINER_MARV 259
+#define FRONTIER_TRAINER_LAYTON 260
+#define FRONTIER_TRAINER_BROOKS 261
+#define FRONTIER_TRAINER_GREGORY 262
+#define FRONTIER_TRAINER_REESE 263
+#define FRONTIER_TRAINER_MASON 264
+#define FRONTIER_TRAINER_TOBY 265
+#define FRONTIER_TRAINER_DOROTHY 266
+#define FRONTIER_TRAINER_PIPER 267
+#define FRONTIER_TRAINER_FINN 268
+#define FRONTIER_TRAINER_SAMIR 269
+#define FRONTIER_TRAINER_FIONA 270
+#define FRONTIER_TRAINER_GLORIA 271
+#define FRONTIER_TRAINER_NICO 272
+#define FRONTIER_TRAINER_JEREMY 273
+#define FRONTIER_TRAINER_CAITLIN 274
+#define FRONTIER_TRAINER_REENA 275
+#define FRONTIER_TRAINER_AVERY 276
+#define FRONTIER_TRAINER_LIAM 277
+#define FRONTIER_TRAINER_THEO 278
+#define FRONTIER_TRAINER_BAILEY 279
+#define FRONTIER_TRAINER_HUGO 280
+#define FRONTIER_TRAINER_BRYCE 281
+#define FRONTIER_TRAINER_GIDEON 282
+#define FRONTIER_TRAINER_TRISTON 283
+#define FRONTIER_TRAINER_CHARLES 284
+#define FRONTIER_TRAINER_RAYMOND 285
+#define FRONTIER_TRAINER_DIRK 286
+#define FRONTIER_TRAINER_HAROLD 287
+#define FRONTIER_TRAINER_OMAR 288
+#define FRONTIER_TRAINER_PETER 289
+#define FRONTIER_TRAINER_DEV 290
+#define FRONTIER_TRAINER_COREY 291
+#define FRONTIER_TRAINER_ANDRE 292
+#define FRONTIER_TRAINER_FERRIS 293
+#define FRONTIER_TRAINER_ALIVIA 294
+#define FRONTIER_TRAINER_PAIGE 295
+#define FRONTIER_TRAINER_ANYA 296
+#define FRONTIER_TRAINER_DAWN 297
+#define FRONTIER_TRAINER_ABBY 298
+#define FRONTIER_TRAINER_GRETEL 299
+
+#define FRONTIER_TRAINERS_COUNT 300
+
+// special trainer IDs begin at 300, see constants/trainers.h
+
+#endif // GUARD_CONSTANTS_BATTLE_FRONTIER_TRAINERS_H
diff --git a/include/constants/battle_palace.h b/include/constants/battle_palace.h
new file mode 100644
index 000000000..db9855101
--- /dev/null
+++ b/include/constants/battle_palace.h
@@ -0,0 +1,19 @@
+#ifndef GUARD_CONSTANTS_BATTLE_PALACE_H
+#define GUARD_CONSTANTS_BATTLE_PALACE_H
+
+#define BATTLE_PALACE_FUNC_INIT 0
+#define BATTLE_PALACE_FUNC_GET_DATA 1
+#define BATTLE_PALACE_FUNC_SET_DATA 2
+#define BATTLE_PALACE_FUNC_GET_COMMENT_ID 3
+#define BATTLE_PALACE_FUNC_SET_OPPONENT 4
+#define BATTLE_PALACE_FUNC_GET_OPPONENT_INTRO 5
+#define BATTLE_PALACE_FUNC_INCREMENT_STREAK 6
+#define BATTLE_PALACE_FUNC_SAVE 7
+#define BATTLE_PALACE_FUNC_SET_PRIZE 8
+#define BATTLE_PALACE_FUNC_GIVE_PRIZE 9
+
+#define PALACE_DATA_PRIZE 0
+#define PALACE_DATA_WIN_STREAK 1
+#define PALACE_DATA_WIN_STREAK_ACTIVE 2
+
+#endif //GUARD_CONSTANTS_BATTLE_PALACE_H
diff --git a/include/constants/battle_pike.h b/include/constants/battle_pike.h
new file mode 100644
index 000000000..9187ae28c
--- /dev/null
+++ b/include/constants/battle_pike.h
@@ -0,0 +1,72 @@
+#ifndef GUARD_CONSTANTS_BATTLE_PIKE_H
+#define GUARD_CONSTANTS_BATTLE_PIKE_H
+
+#define PIKE_ROOM_SINGLE_BATTLE 0
+#define PIKE_ROOM_HEAL_FULL 1
+#define PIKE_ROOM_NPC 2
+#define PIKE_ROOM_STATUS 3
+#define PIKE_ROOM_HEAL_PART 4
+#define PIKE_ROOM_WILD_MONS 5
+#define PIKE_ROOM_HARD_BATTLE 6
+#define PIKE_ROOM_DOUBLE_BATTLE 7
+#define PIKE_ROOM_BRAIN 8
+#define NUM_PIKE_ROOM_TYPES 9
+
+#define PIKE_ROOM_LEFT 0
+#define PIKE_ROOM_CENTER 1
+#define PIKE_ROOM_RIGHT 2
+
+#define PIKE_HINT_NOSTALGIA 0
+#define PIKE_HINT_WHISPERING 1
+#define PIKE_HINT_POKEMON 2
+#define PIKE_HINT_PEOPLE 3
+#define PIKE_HINT_BRAIN 4
+
+// For the room with a status effect.
+#define PIKE_STATUSMON_KIRLIA 0
+#define PIKE_STATUSMON_DUSCLOPS 1
+
+#define PIKE_STATUS_FREEZE 0
+#define PIKE_STATUS_BURN 1
+#define PIKE_STATUS_TOXIC 2
+#define PIKE_STATUS_PARALYSIS 3
+#define PIKE_STATUS_SLEEP 4
+
+// Function IDs for sBattlePikeFunctions / CallBattlePikeFunction
+#define BATTLE_PIKE_FUNC_SET_ROOM_TYPE 0
+#define BATTLE_PIKE_FUNC_GET_DATA 1
+#define BATTLE_PIKE_FUNC_SET_DATA 2
+#define BATTLE_PIKE_FUNC_IS_FINAL_ROOM 3
+#define BATTLE_PIKE_FUNC_SET_ROOM_OBJECTS 4
+#define BATTLE_PIKE_FUNC_GET_ROOM_TYPE 5
+#define BATTLE_PIKE_FUNC_SET_IN_WILD_MON_ROOM 6
+#define BATTLE_PIKE_FUNC_CLEAR_IN_WILD_MON_ROOM 7
+#define BATTLE_PIKE_FUNC_SAVE 8
+#define BATTLE_PIKE_FUNC_NULL_9 9
+#define BATTLE_PIKE_FUNC_NULL_10 10
+#define BATTLE_PIKE_FUNC_GET_ROOM_STATUS 11
+#define BATTLE_PIKE_FUNC_GET_ROOM_STATUS_MON 12
+#define BATTLE_PIKE_FUNC_HEAL_ONE_TWO_MONS 13
+#define BATTLE_PIKE_FUNC_BUFFER_NPC_MSG 14
+#define BATTLE_PIKE_FUNC_STATUS_SCREEN_FLASH 15
+#define BATTLE_PIKE_FUNC_IS_IN 16
+#define BATTLE_PIKE_FUNC_SET_HINT_ROOM 17
+#define BATTLE_PIKE_FUNC_GET_HINT_ROOM_ID 18
+#define BATTLE_PIKE_FUNC_GET_ROOM_TYPE_HINT 19
+#define BATTLE_PIKE_FUNC_CLEAR_TRAINER_IDS 20
+#define BATTLE_PIKE_FUNC_GET_TRAINER_INTRO 21
+#define BATTLE_PIKE_FUNC_GET_QUEEN_FIGHT_TYPE 22
+#define BATTLE_PIKE_FUNC_HEAL_MONS_BEFORE_QUEEN 23
+#define BATTLE_PIKE_FUNC_SET_HEAL_ROOMS_DISABLED 24
+#define BATTLE_PIKE_FUNC_IS_PARTY_FULL_HEALTH 25
+#define BATTLE_PIKE_FUNC_SAVE_HELD_ITEMS 26
+#define BATTLE_PIKE_FUNC_RESET_HELD_ITEMS 27
+#define BATTLE_PIKE_FUNC_INIT 28
+
+#define PIKE_DATA_PRIZE 0
+#define PIKE_DATA_WIN_STREAK 1
+#define PIKE_DATA_RECORD_STREAK 2
+#define PIKE_DATA_TOTAL_STREAKS 3
+#define PIKE_DATA_WIN_STREAK_ACTIVE 4
+
+#endif // GUARD_CONSTANTS_BATTLE_PIKE_H
diff --git a/include/constants/battle_pyramid.h b/include/constants/battle_pyramid.h
new file mode 100644
index 000000000..004df7155
--- /dev/null
+++ b/include/constants/battle_pyramid.h
@@ -0,0 +1,61 @@
+#ifndef GUARD_CONSTANTS_BATTLE_PYRAMID_H
+#define GUARD_CONSTANTS_BATTLE_PYRAMID_H
+
+#define TOTAL_ROUNDS 20
+#define PICKUP_ITEMS_PER_ROUND 10
+
+#define FLOOR_WALKABLE_METATILE 0x28D
+#define FLOOR_EXIT_METATILE 0x28E
+
+#define HINT_EXIT_DIRECTION 0
+#define HINT_REMAINING_ITEMS 1
+#define HINT_REMAINING_TRAINERS 2
+#define HINT_EXIT_SHORT_REMAINING_TRAINERS 3
+#define HINT_EXIT_SHORT_REMAINING_ITEMS 4
+#define HINT_EXIT_MEDIUM_REMAINING_TRAINERS 5
+#define HINT_EXIT_MEDIUM_REMAINING_ITEMS 6
+#define HINT_EXIT_FAR_REMAINING_TRAINERS 7
+#define HINT_EXIT_FAR_REMAINING_ITEMS 8
+
+#define OBJ_TRAINERS 0
+#define OBJ_ITEMS 1
+
+#define OBJ_POSITIONS_UNIFORM 0
+#define OBJ_POSITIONS_IN_AND_NEAR_ENTRANCE 1
+#define OBJ_POSITIONS_IN_AND_NEAR_EXIT 2
+#define OBJ_POSITIONS_NEAR_ENTRANCE 3
+#define OBJ_POSITIONS_NEAR_EXIT 4
+
+// Functions IDs for sBattlePyramidFunctions / CallBattlePyramidFunction
+#define BATTLE_PYRAMID_FUNC_INIT 0
+#define BATTLE_PYRAMID_FUNC_GET_DATA 1
+#define BATTLE_PYRAMID_FUNC_SET_DATA 2
+#define BATTLE_PYRAMID_FUNC_SAVE 3
+#define BATTLE_PYRAMID_FUNC_SET_PRIZE 4
+#define BATTLE_PYRAMID_FUNC_GIVE_PRIZE 5 // unused
+#define BATTLE_PYRAMID_FUNC_SEED_FLOOR 6
+#define BATTLE_PYRAMID_FUNC_SET_ITEM 7
+#define BATTLE_PYRAMID_FUNC_HIDE_ITEM 8
+#define BATTLE_PYRAMID_FUNC_SET_TRAINERS 9
+#define BATTLE_PYRAMID_FUNC_SHOW_HINT_TEXT 10
+#define BATTLE_PYRAMID_FUNC_UPDATE_STREAK 11 // unused
+#define BATTLE_PYRAMID_FUNC_IS_IN 12
+#define BATTLE_PYRAMID_FUNC_UPDATE_LIGHT 13
+#define BATTLE_PYRAMID_FUNC_CLEAR_HELD_ITEMS 14
+#define BATTLE_PYRAMID_FUNC_SET_FLOOR_PALETTE 15
+#define BATTLE_PYRAMID_FUNC_START_MENU 16 // unused
+#define BATTLE_PYRAMID_FUNC_RESTORE_PARTY 17
+
+#define PYRAMID_DATA_PRIZE 0
+#define PYRAMID_DATA_WIN_STREAK 1
+#define PYRAMID_DATA_WIN_STREAK_ACTIVE 2
+#define PYRAMID_DATA_WIN_STREAK_50 3 // the below streak data are redundant with the above when frontier.lvlMode is correct
+#define PYRAMID_DATA_WIN_STREAK_OPEN 4
+#define PYRAMID_DATA_WIN_STREAK_ACTIVE_50 5
+#define PYRAMID_DATA_WIN_STREAK_ACTIVE_OPEN 6
+#define PYRAMID_DATA_TRAINER_FLAGS 7
+
+#define PYRAMID_LIGHT_SET_RADIUS 0
+#define PYRAMID_LIGHT_INCR_RADIUS 1
+
+#endif // GUARD_CONSTANTS_BATTLE_PYRAMID_H
diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h
index 894bd13b6..dfcf79128 100644
--- a/include/constants/battle_script_commands.h
+++ b/include/constants/battle_script_commands.h
@@ -39,16 +39,16 @@
#define BS_EFFECT_BATTLER 2
#define BS_FAINTED 3
#define BS_BATTLER_0 7
-#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
-#define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability
-#define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
+#define BS_ATTACKER_WITH_PARTNER 4 // for Cmd_updatestatusicon
+#define BS_ATTACKER_SIDE 8 // for Cmd_jumpifability
+#define BS_NOT_ATTACKER_SIDE 9 // for Cmd_jumpifability
#define BS_SCRIPTING 10
#define BS_PLAYER1 11
#define BS_OPPONENT1 12
#define BS_PLAYER2 13
#define BS_OPPONENT2 14
-// atk 01, accuracy calc
+// Cmd_accuracycheck
#define NO_ACC_CALC 0xFFFE
#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF
#define ACC_CURR_MOVE 0
@@ -61,7 +61,7 @@
#define CMP_COMMON_BITS 0x4
#define CMP_NO_COMMON_BITS 0x5
-// atk76, various
+// Cmd_various
#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
@@ -84,44 +84,25 @@
#define VARIOUS_SET_TELEPORT_OUTCOME 25
#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
-// atk80, dmg manipulation
-#define ATK80_DMG_CHANGE_SIGN 0
-#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
-#define ATK80_DMG_DOUBLED 2
+// Cmd_manipulatedmg
+#define DMG_CHANGE_SIGN 0
+#define DMG_RECOIL_FROM_MISS 1
+#define DMG_DOUBLED 2
-// atk4F, a flag used for the jumpifcantswitch command
-#define ATK4F_DONT_CHECK_STATUSES 0x80
+// Cmd_jumpifcantswitch
+#define SWITCH_IGNORE_ESCAPE_PREVENTION 0x80
-// statchange defines
-#define STAT_CHANGE_BS_PTR 0x1
-#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
+// Cmd_statbuffchange
+#define STAT_BUFF_ALLOW_PTR 0x1 // If set, allow use of jumpptr. Set in every use of statbuffchange
+#define STAT_BUFF_NOT_PROTECT_AFFECTED 0x20
-// atk48
-#define ATK48_STAT_NEGATIVE 0x1
-#define ATK48_STAT_BY_TWO 0x2
-#define ATK48_ONLY_MULTIPLE 0x4
-#define ATK48_DONT_CHECK_LOWER 0x8
-
-// atk49, moveend cases
-#define ATK49_RAGE 0
-#define ATK49_DEFROST 1
-#define ATK49_SYNCHRONIZE_TARGET 2
-#define ATK49_MOVE_END_ABILITIES 3
-#define ATK49_STATUS_IMMUNITY_ABILITIES 4
-#define ATK49_SYNCHRONIZE_ATTACKER 5
-#define ATK49_CHOICE_MOVE 6
-#define ATK49_CHANGED_ITEMS 7
-#define ATK49_ATTACKER_INVISIBLE 8
-#define ATK49_ATTACKER_VISIBLE 9
-#define ATK49_TARGET_VISIBLE 10
-#define ATK49_ITEM_EFFECTS_ALL 11
-#define ATK49_KINGSROCK_SHELLBELL 12
-#define ATK49_SUBSTITUTE 13
-#define ATK49_UPDATE_LAST_MOVES 14
-#define ATK49_MIRROR_MOVE 15
-#define ATK49_NEXT_TARGET 16
-#define ATK49_COUNT 17
+// stat change flags for Cmd_playstatchangeanimation
+#define STAT_CHANGE_NEGATIVE 0x1
+#define STAT_CHANGE_BY_TWO 0x2
+#define STAT_CHANGE_MULTIPLE_STATS 0x4
+#define STAT_CHANGE_CANT_PREVENT 0x8
+// stat flags for Cmd_playstatchangeanimation
#define BIT_HP 0x1
#define BIT_ATK 0x2
#define BIT_DEF 0x4
@@ -131,4 +112,24 @@
#define BIT_ACC 0x40
#define BIT_EVASION 0x80
+// cases for Cmd_moveend
+#define MOVEEND_RAGE 0
+#define MOVEEND_DEFROST 1
+#define MOVEEND_SYNCHRONIZE_TARGET 2
+#define MOVEEND_ON_DAMAGE_ABILITIES 3
+#define MOVEEND_IMMUNITY_ABILITIES 4
+#define MOVEEND_SYNCHRONIZE_ATTACKER 5
+#define MOVEEND_CHOICE_MOVE 6
+#define MOVEEND_CHANGED_ITEMS 7
+#define MOVEEND_ATTACKER_INVISIBLE 8
+#define MOVEEND_ATTACKER_VISIBLE 9
+#define MOVEEND_TARGET_VISIBLE 10
+#define MOVEEND_ITEM_EFFECTS_ALL 11
+#define MOVEEND_KINGSROCK_SHELLBELL 12
+#define MOVEEND_SUBSTITUTE 13
+#define MOVEEND_UPDATE_LAST_MOVES 14
+#define MOVEEND_MIRROR_MOVE 15
+#define MOVEEND_NEXT_TARGET 16
+#define MOVEEND_COUNT 17
+
#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
diff --git a/include/constants/battle_setup.h b/include/constants/battle_setup.h
index d98e1762f..d825c88bc 100644
--- a/include/constants/battle_setup.h
+++ b/include/constants/battle_setup.h
@@ -13,6 +13,6 @@
#define TRAINER_BATTLE_PYRAMID 9
#define TRAINER_BATTLE_SET_TRAINER_A 10
#define TRAINER_BATTLE_SET_TRAINER_B 11
-#define TRAINER_BATTLE_12 12
+#define TRAINER_BATTLE_HILL 12
#endif // GUARD_CONSTANTS_BATTLE_SETUP_H
diff --git a/include/constants/battle_tent.h b/include/constants/battle_tent.h
new file mode 100644
index 000000000..666ada6bd
--- /dev/null
+++ b/include/constants/battle_tent.h
@@ -0,0 +1,32 @@
+#ifndef GUARD_CONSTANTS_BATTLE_TENT_H
+#define GUARD_CONSTANTS_BATTLE_TENT_H
+
+#define VERDANTURF_TENT_FUNC_INIT 0
+#define VERDANTURF_TENT_FUNC_GET_PRIZE 1
+#define VERDANTURF_TENT_FUNC_SET_PRIZE 2
+#define VERDANTURF_TENT_FUNC_SET_OPPONENT_GFX 3
+#define VERDANTURF_TENT_FUNC_GET_OPPONENT_INTRO 4
+#define VERDANTURF_TENT_FUNC_SAVE 5
+#define VERDANTURF_TENT_FUNC_SET_RANDOM_PRIZE 6
+#define VERDANTURF_TENT_FUNC_GIVE_PRIZE 7
+
+#define FALLARBOR_TENT_FUNC_INIT 0
+#define FALLARBOR_TENT_FUNC_GET_PRIZE 1
+#define FALLARBOR_TENT_FUNC_SET_PRIZE 2
+#define FALLARBOR_TENT_FUNC_SAVE 3
+#define FALLARBOR_TENT_FUNC_SET_RANDOM_PRIZE 4
+#define FALLARBOR_TENT_FUNC_GIVE_PRIZE 5
+#define FALLARBOR_TENT_FUNC_GET_OPPONENT_NAME 6
+
+#define SLATEPORT_TENT_FUNC_INIT 0
+#define SLATEPORT_TENT_FUNC_GET_PRIZE 1
+#define SLATEPORT_TENT_FUNC_SET_PRIZE 2
+#define SLATEPORT_TENT_FUNC_SAVE 3
+#define SLATEPORT_TENT_FUNC_SET_RANDOM_PRIZE 4
+#define SLATEPORT_TENT_FUNC_GIVE_PRIZE 5
+#define SLATEPORT_TENT_FUNC_SELECT_RENT_MONS 6
+#define SLATEPORT_TENT_FUNC_SWAP_RENT_MONS 7
+#define SLATEPORT_TENT_FUNC_GENERATE_OPPONENT_MONS 8
+#define SLATEPORT_TENT_FUNC_GENERATE_RENTAL_MONS 9
+
+#endif // GUARD_CONSTANTS_BATTLE_TENT_H
diff --git a/include/constants/battle_tent_mons.h b/include/constants/battle_tent_mons.h
new file mode 100644
index 000000000..d9fc89a20
--- /dev/null
+++ b/include/constants/battle_tent_mons.h
@@ -0,0 +1,173 @@
+#ifndef GUARD_CONSTANTS_BATTLE_TENT_MONS_H
+#define GUARD_CONSTANTS_BATTLE_TENT_MONS_H
+
+#define SLATEPORT_TENT_MON_ZIGZAGOON_1 0
+#define SLATEPORT_TENT_MON_ZIGZAGOON_2 1
+#define SLATEPORT_TENT_MON_BEAUTIFLY 2
+#define SLATEPORT_TENT_MON_DUSTOX 3
+#define SLATEPORT_TENT_MON_WAILMER_1 4
+#define SLATEPORT_TENT_MON_WAILMER_2 5
+#define SLATEPORT_TENT_MON_MARILL_1 6
+#define SLATEPORT_TENT_MON_WINGULL_1 7
+#define SLATEPORT_TENT_MON_PELIPPER_1 8
+#define SLATEPORT_TENT_MON_CACNEA_1 9
+#define SLATEPORT_TENT_MON_LOMBRE_1 10
+#define SLATEPORT_TENT_MON_LOTAD 11
+#define SLATEPORT_TENT_MON_SEEDOT 12
+#define SLATEPORT_TENT_MON_NUZLEAF 13
+#define SLATEPORT_TENT_MON_NINJASK_1 14
+#define SLATEPORT_TENT_MON_NINJASK_2 15
+#define SLATEPORT_TENT_MON_GRAVELER 16
+#define SLATEPORT_TENT_MON_BALTOY 17
+#define SLATEPORT_TENT_MON_MIGHTYENA_1 18
+#define SLATEPORT_TENT_MON_MIGHTYENA_2 19
+#define SLATEPORT_TENT_MON_LINOONE 20
+#define SLATEPORT_TENT_MON_GOLDEEN 21
+#define SLATEPORT_TENT_MON_ELECTRIKE_1 22
+#define SLATEPORT_TENT_MON_VOLTORB 23
+#define SLATEPORT_TENT_MON_ARON_1 24
+#define SLATEPORT_TENT_MON_ARON_2 25
+#define SLATEPORT_TENT_MON_TRAPINCH_1 26
+#define SLATEPORT_TENT_MON_CACNEA_2 27
+#define SLATEPORT_TENT_MON_TAILLOW 28
+#define SLATEPORT_TENT_MON_SWELLOW 29
+#define SLATEPORT_TENT_MON_GOLBAT_1 30
+#define SLATEPORT_TENT_MON_LOUDRED 31
+#define SLATEPORT_TENT_MON_SPINDA 32
+#define SLATEPORT_TENT_MON_MAGNEMITE 33
+#define SLATEPORT_TENT_MON_WHISMUR 34
+#define SLATEPORT_TENT_MON_MAKUHITA 35
+#define SLATEPORT_TENT_MON_NUMEL_1 36
+#define SLATEPORT_TENT_MON_BARBOACH 37
+#define SLATEPORT_TENT_MON_TENTACOOL 38
+#define SLATEPORT_TENT_MON_VIGOROTH 39
+#define SLATEPORT_TENT_MON_MAGIKARP 40
+#define SLATEPORT_TENT_MON_SEVIPER_1 41
+#define SLATEPORT_TENT_MON_SOLROCK 42
+#define SLATEPORT_TENT_MON_KECLEON_1 43
+#define SLATEPORT_TENT_MON_KECLEON_2 44
+#define SLATEPORT_TENT_MON_SHROOMISH_1 45
+#define SLATEPORT_TENT_MON_SHROOMISH_2 46
+#define SLATEPORT_TENT_MON_LOMBRE_2 47
+#define SLATEPORT_TENT_MON_NUMEL_2 48
+#define SLATEPORT_TENT_MON_TRAPINCH_2 49
+#define SLATEPORT_TENT_MON_PELIPPER_2 50
+#define SLATEPORT_TENT_MON_WINGULL_2 51
+#define SLATEPORT_TENT_MON_MARILL_2 52
+#define SLATEPORT_TENT_MON_SKITTY 53
+#define SLATEPORT_TENT_MON_SEVIPER_2 54
+#define SLATEPORT_TENT_MON_GOLBAT_2 55
+#define SLATEPORT_TENT_MON_RALTS 56
+#define SLATEPORT_TENT_MON_SANDSHREW 57
+#define SLATEPORT_TENT_MON_SWALOT 58
+#define SLATEPORT_TENT_MON_VOLBEAT 59
+#define SLATEPORT_TENT_MON_ILLUMISE 60
+#define SLATEPORT_TENT_MON_KADABRA 61
+#define SLATEPORT_TENT_MON_KIRLIA 62
+#define SLATEPORT_TENT_MON_BRELOOM 63
+#define SLATEPORT_TENT_MON_PLUSLE_1 64
+#define SLATEPORT_TENT_MON_PLUSLE_2 65
+#define SLATEPORT_TENT_MON_ELECTRIKE_2 66
+#define SLATEPORT_TENT_MON_SWABLU 67
+#define SLATEPORT_TENT_MON_MACHOP 68
+#define SLATEPORT_TENT_MON_MACHOKE 69
+
+#define NUM_SLATEPORT_TENT_MONS 70
+
+#define VERDANTURF_TENT_MON_POOCHYENA 0
+#define VERDANTURF_TENT_MON_ZIGZAGOON 1
+#define VERDANTURF_TENT_MON_DUSTOX 2
+#define VERDANTURF_TENT_MON_TAILLOW 3
+#define VERDANTURF_TENT_MON_SHROOMISH 4
+#define VERDANTURF_TENT_MON_MACHOP 5
+#define VERDANTURF_TENT_MON_MAGIKARP 6
+#define VERDANTURF_TENT_MON_BARBOACH 7
+#define VERDANTURF_TENT_MON_WINGULL 8
+#define VERDANTURF_TENT_MON_ARON_1 9
+#define VERDANTURF_TENT_MON_NUMEL_1 10
+#define VERDANTURF_TENT_MON_SWALOT 11
+#define VERDANTURF_TENT_MON_KECLEON 12
+#define VERDANTURF_TENT_MON_BALTOY 13
+#define VERDANTURF_TENT_MON_NINJASK 14
+#define VERDANTURF_TENT_MON_MAKUHITA 15
+#define VERDANTURF_TENT_MON_SWABLU 16
+#define VERDANTURF_TENT_MON_GOLDEEN_1 17
+#define VERDANTURF_TENT_MON_LOTAD 18
+#define VERDANTURF_TENT_MON_NUMEL_2 19
+#define VERDANTURF_TENT_MON_LINOONE 20
+#define VERDANTURF_TENT_MON_SEVIPER 21
+#define VERDANTURF_TENT_MON_SKARMORY 22
+#define VERDANTURF_TENT_MON_SWELLOW 23
+#define VERDANTURF_TENT_MON_GOLDEEN_2 24
+#define VERDANTURF_TENT_MON_ELECTRIKE 25
+#define VERDANTURF_TENT_MON_NUZLEAF 26
+#define VERDANTURF_TENT_MON_ARON_2 27
+#define VERDANTURF_TENT_MON_MIGHTYENA 28
+#define VERDANTURF_TENT_MON_SOLROCK 29
+#define VERDANTURF_TENT_MON_GRAVELER 30
+#define VERDANTURF_TENT_MON_KADABRA 31
+#define VERDANTURF_TENT_MON_VOLTORB 32
+#define VERDANTURF_TENT_MON_MAGNEMITE 33
+#define VERDANTURF_TENT_MON_PELIPPER 34
+#define VERDANTURF_TENT_MON_LOUDRED 35
+#define VERDANTURF_TENT_MON_MARILL 36
+#define VERDANTURF_TENT_MON_TRAPINCH 37
+#define VERDANTURF_TENT_MON_TENTACOOL 38
+#define VERDANTURF_TENT_MON_VIGOROTH 39
+#define VERDANTURF_TENT_MON_WAILMER 40
+#define VERDANTURF_TENT_MON_ILLUMISE 41
+#define VERDANTURF_TENT_MON_MACHOKE 42
+#define VERDANTURF_TENT_MON_WHISMUR 43
+#define VERDANTURF_TENT_MON_CACNEA 44
+
+#define NUM_VERDANTURF_TENT_MONS 45
+
+#define FALLARBOR_TENT_MON_NUMEL 0
+#define FALLARBOR_TENT_MON_LINOONE_1 1
+#define FALLARBOR_TENT_MON_PLUSLE 2
+#define FALLARBOR_TENT_MON_POOCHYENA 3
+#define FALLARBOR_TENT_MON_KECLEON 4
+#define FALLARBOR_TENT_MON_MAGIKARP 5
+#define FALLARBOR_TENT_MON_SOLROCK 6
+#define FALLARBOR_TENT_MON_MAKUHITA 7
+#define FALLARBOR_TENT_MON_MACHOKE 8
+#define FALLARBOR_TENT_MON_NINCADA 9
+#define FALLARBOR_TENT_MON_BEAUTIFLY 10
+#define FALLARBOR_TENT_MON_DUSTOX 11
+#define FALLARBOR_TENT_MON_ILLUMISE 12
+#define FALLARBOR_TENT_MON_VOLBEAT 13
+#define FALLARBOR_TENT_MON_NINJASK_1 14
+#define FALLARBOR_TENT_MON_NINJASK_2 15
+#define FALLARBOR_TENT_MON_ARON_1 16
+#define FALLARBOR_TENT_MON_ARON_2 17
+#define FALLARBOR_TENT_MON_ELECTRIKE 18
+#define FALLARBOR_TENT_MON_MAGNEMITE 19
+#define FALLARBOR_TENT_MON_VOLTORB 20
+#define FALLARBOR_TENT_MON_WHISMUR 21
+#define FALLARBOR_TENT_MON_LOUDRED 22
+#define FALLARBOR_TENT_MON_LINOONE_2 23
+#define FALLARBOR_TENT_MON_MIGHTYENA 24
+#define FALLARBOR_TENT_MON_SWABLU 25
+#define FALLARBOR_TENT_MON_SKARMORY 26
+#define FALLARBOR_TENT_MON_GOLBAT 27
+#define FALLARBOR_TENT_MON_WINGULL 28
+#define FALLARBOR_TENT_MON_PELIPPER 29
+#define FALLARBOR_TENT_MON_BARBOACH 30
+#define FALLARBOR_TENT_MON_WAILMER 31
+#define FALLARBOR_TENT_MON_MARILL 32
+#define FALLARBOR_TENT_MON_GOLDEEN_1 33
+#define FALLARBOR_TENT_MON_GOLDEEN_2 34
+#define FALLARBOR_TENT_MON_TRAPINCH 35
+#define FALLARBOR_TENT_MON_BALTOY 36
+#define FALLARBOR_TENT_MON_GRAVELER 37
+#define FALLARBOR_TENT_MON_SANDSHREW 38
+#define FALLARBOR_TENT_MON_SWALOT 39
+#define FALLARBOR_TENT_MON_SHROOMISH 40
+#define FALLARBOR_TENT_MON_KIRLIA 41
+#define FALLARBOR_TENT_MON_LOMBRE 42
+#define FALLARBOR_TENT_MON_NUZLEAF 43
+#define FALLARBOR_TENT_MON_CACNEA 44
+
+#define NUM_FALLARBOR_TENT_MONS 45
+
+#endif // GUARD_CONSTANTS_BATTLE_TENT_MONS_H
diff --git a/include/constants/battle_tent_trainers.h b/include/constants/battle_tent_trainers.h
new file mode 100644
index 000000000..3629da0ca
--- /dev/null
+++ b/include/constants/battle_tent_trainers.h
@@ -0,0 +1,99 @@
+#ifndef GUARD_CONSTANTS_BATTLE_TENT_TRAINERS_H
+#define GUARD_CONSTANTS_BATTLE_TENT_TRAINERS_H
+
+#define SLATEPORT_TENT_TRAINER_JOLIE 0
+#define SLATEPORT_TENT_TRAINER_MALACHI 1
+#define SLATEPORT_TENT_TRAINER_KELSIE 2
+#define SLATEPORT_TENT_TRAINER_DAVON 3
+#define SLATEPORT_TENT_TRAINER_GLENDA 4
+#define SLATEPORT_TENT_TRAINER_HELENA 5
+#define SLATEPORT_TENT_TRAINER_RODOLFO 6
+#define SLATEPORT_TENT_TRAINER_DAVION 7
+#define SLATEPORT_TENT_TRAINER_KENDALL 8
+#define SLATEPORT_TENT_TRAINER_COLTEN 9
+#define SLATEPORT_TENT_TRAINER_IRVIN 10
+#define SLATEPORT_TENT_TRAINER_SHAUN 11
+#define SLATEPORT_TENT_TRAINER_KYLER 12
+#define SLATEPORT_TENT_TRAINER_MAGGIE 13
+#define SLATEPORT_TENT_TRAINER_STEPHON 14
+#define SLATEPORT_TENT_TRAINER_REBECCA 15
+#define SLATEPORT_TENT_TRAINER_REGGIE 16
+#define SLATEPORT_TENT_TRAINER_JANAE 17
+#define SLATEPORT_TENT_TRAINER_CAIDEN 18
+#define SLATEPORT_TENT_TRAINER_KIRSTEN 19
+#define SLATEPORT_TENT_TRAINER_KURTIS 20
+#define SLATEPORT_TENT_TRAINER_STEFAN 21
+#define SLATEPORT_TENT_TRAINER_AVERY 22
+#define SLATEPORT_TENT_TRAINER_DWANE 23
+#define SLATEPORT_TENT_TRAINER_MCKENNA 24
+#define SLATEPORT_TENT_TRAINER_CAMRYN 25
+#define SLATEPORT_TENT_TRAINER_NATASHA 26
+#define SLATEPORT_TENT_TRAINER_AUSTYN 27
+#define SLATEPORT_TENT_TRAINER_DONOVAN 28
+#define SLATEPORT_TENT_TRAINER_TAMIA 29
+
+#define VERDANTURF_TENT_TRAINER_BRENNA 0
+#define VERDANTURF_TENT_TRAINER_DILAN 1
+#define VERDANTURF_TENT_TRAINER_ELIANA 2
+#define VERDANTURF_TENT_TRAINER_MARKUS 3
+#define VERDANTURF_TENT_TRAINER_CAITLYN 4
+#define VERDANTURF_TENT_TRAINER_DESIREE 5
+#define VERDANTURF_TENT_TRAINER_RONALD 6
+#define VERDANTURF_TENT_TRAINER_ASHTEN 7
+#define VERDANTURF_TENT_TRAINER_GERARD 8
+#define VERDANTURF_TENT_TRAINER_BRADLY 9
+#define VERDANTURF_TENT_TRAINER_DENNIS 10
+#define VERDANTURF_TENT_TRAINER_PRESTIN 11
+#define VERDANTURF_TENT_TRAINER_ERNESTO 12
+#define VERDANTURF_TENT_TRAINER_NALA 13
+#define VERDANTURF_TENT_TRAINER_DARNELL 14
+#define VERDANTURF_TENT_TRAINER_ASHLYN 15
+#define VERDANTURF_TENT_TRAINER_ADDISON 16
+#define VERDANTURF_TENT_TRAINER_JUSTINE 17
+#define VERDANTURF_TENT_TRAINER_TYSON 18
+#define VERDANTURF_TENT_TRAINER_LAILA 19
+#define VERDANTURF_TENT_TRAINER_WAREN 20
+#define VERDANTURF_TENT_TRAINER_TOBIAS 21
+#define VERDANTURF_TENT_TRAINER_JOSIAH 22
+#define VERDANTURF_TENT_TRAINER_DION 23
+#define VERDANTURF_TENT_TRAINER_KENZIE 24
+#define VERDANTURF_TENT_TRAINER_LILLIAN 25
+#define VERDANTURF_TENT_TRAINER_LESLEY 26
+#define VERDANTURF_TENT_TRAINER_MARQUIS 27
+#define VERDANTURF_TENT_TRAINER_FREDDY 28
+#define VERDANTURF_TENT_TRAINER_CECILIA 29
+
+#define FALLARBOR_TENT_TRAINER_AMBER 0
+#define FALLARBOR_TENT_TRAINER_JAVIER 1
+#define FALLARBOR_TENT_TRAINER_NATALIA 2
+#define FALLARBOR_TENT_TRAINER_TREVE 3
+#define FALLARBOR_TENT_TRAINER_ARIANNA 4
+#define FALLARBOR_TENT_TRAINER_JADYN 5
+#define FALLARBOR_TENT_TRAINER_GERARDO 6
+#define FALLARBOR_TENT_TRAINER_JONN 7
+#define FALLARBOR_TENT_TRAINER_ESTEBAN 8
+#define FALLARBOR_TENT_TRAINER_JAMESON 9
+#define FALLARBOR_TENT_TRAINER_ALANZO 10
+#define FALLARBOR_TENT_TRAINER_HOWARD 11
+#define FALLARBOR_TENT_TRAINER_CONRAD 12
+#define FALLARBOR_TENT_TRAINER_MAKENNA 13
+#define FALLARBOR_TENT_TRAINER_BRAYAN 14
+#define FALLARBOR_TENT_TRAINER_MARIANA 15
+#define FALLARBOR_TENT_TRAINER_SHELDON 16
+#define FALLARBOR_TENT_TRAINER_GIANNA 17
+#define FALLARBOR_TENT_TRAINER_YAHIR 18
+#define FALLARBOR_TENT_TRAINER_BRITNEY 19
+#define FALLARBOR_TENT_TRAINER_HECTER 20
+#define FALLARBOR_TENT_TRAINER_TANNOR 21
+#define FALLARBOR_TENT_TRAINER_BENJI 22
+#define FALLARBOR_TENT_TRAINER_RORY 23
+#define FALLARBOR_TENT_TRAINER_ELEANOR 24
+#define FALLARBOR_TENT_TRAINER_EVELYN 25
+#define FALLARBOR_TENT_TRAINER_ARIELLE 26
+#define FALLARBOR_TENT_TRAINER_CONNAR 27
+#define FALLARBOR_TENT_TRAINER_MAURICE 28
+#define FALLARBOR_TENT_TRAINER_KIANNA 29
+
+#define NUM_BATTLE_TENT_TRAINERS 30
+
+#endif // GUARD_CONSTANTS_BATTLE_TENT_TRAINERS_H
diff --git a/include/constants/battle_tower.h b/include/constants/battle_tower.h
new file mode 100644
index 000000000..b372c3ad5
--- /dev/null
+++ b/include/constants/battle_tower.h
@@ -0,0 +1,41 @@
+#ifndef GUARD_CONSTANTS_BATTLE_TOWER_H
+#define GUARD_CONSTANTS_BATTLE_TOWER_H
+
+#define BATTLE_TOWER_FUNC_INIT 0
+#define BATTLE_TOWER_FUNC_GET_DATA 1
+#define BATTLE_TOWER_FUNC_SET_DATA 2
+#define BATTLE_TOWER_FUNC_SET_OPPONENT 3
+#define BATTLE_TOWER_FUNC_SET_BATTLE_WON 4
+#define BATTLE_TOWER_FUNC_GIVE_RIBBONS 5
+#define BATTLE_TOWER_FUNC_SAVE 6
+#define BATTLE_TOWER_FUNC_GET_OPPONENT_INTRO 7
+#define BATTLE_TOWER_FUNC_NOP 8
+#define BATTLE_TOWER_FUNC_NOP2 9
+#define BATTLE_TOWER_FUNC_LOAD_PARTNERS 10
+#define BATTLE_TOWER_FUNC_PARTNER_MSG 11
+#define BATTLE_TOWER_FUNC_LOAD_LINK_OPPONENTS 12
+#define BATTLE_TOWER_FUNC_13 13
+#define BATTLE_TOWER_FUNC_SET_PARTNER_GFX 14
+#define BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA 15
+
+#define TOWER_DATA_WIN_STREAK 1
+#define TOWER_DATA_WIN_STREAK_ACTIVE 2
+#define TOWER_DATA_LVL_MODE 3
+
+// IDs for the messages printed by potential partners in the Battle Tower Multi Partner Room
+#define PARTNER_MSGID_INTRO 0
+#define PARTNER_MSGID_MON1 1
+#define PARTNER_MSGID_MON2_ASK 2
+#define PARTNER_MSGID_ACCEPT 3
+#define PARTNER_MSGID_REJECT 4
+
+// IDs for communicating with the Link Multi partner
+#define BATTLE_TOWER_LINK_CONTINUE 0
+#define BATTLE_TOWER_LINK_RETIRE 1
+
+#define BATTLE_TOWER_LINKSTAT_CONTINUE 0
+#define BATTLE_TOWER_LINKSTAT_BOTH_RETIRE 1
+#define BATTLE_TOWER_LINKSTAT_PARTNER_RETIRE 2
+#define BATTLE_TOWER_LINKSTAT_PLAYER_RETIRE 3
+
+#endif //GUARD_CONSTANTS_BATTLE_TOWER_H
diff --git a/include/constants/berry.h b/include/constants/berry.h
new file mode 100644
index 000000000..d413b9947
--- /dev/null
+++ b/include/constants/berry.h
@@ -0,0 +1,28 @@
+#ifndef GUARD_CONSTANTS_BERRY_H
+#define GUARD_CONSTANTS_BERRY_H
+
+#define BERRY_NONE 0
+
+#define BERRY_FIRMNESS_UNKNOWN 0
+#define BERRY_FIRMNESS_VERY_SOFT 1
+#define BERRY_FIRMNESS_SOFT 2
+#define BERRY_FIRMNESS_HARD 3
+#define BERRY_FIRMNESS_VERY_HARD 4
+#define BERRY_FIRMNESS_SUPER_HARD 5
+
+#define FLAVOR_SPICY 0
+#define FLAVOR_DRY 1
+#define FLAVOR_SWEET 2
+#define FLAVOR_BITTER 3
+#define FLAVOR_SOUR 4
+#define FLAVOR_COUNT 5
+
+#define BERRY_STAGE_NO_BERRY 0 // there is no tree planted and the soil is completely flat.
+#define BERRY_STAGE_PLANTED 1
+#define BERRY_STAGE_SPROUTED 2
+#define BERRY_STAGE_TALLER 3
+#define BERRY_STAGE_FLOWERING 4
+#define BERRY_STAGE_BERRIES 5
+#define BERRY_STAGE_SPARKLING 255
+
+#endif // GUARD_CONSTANTS_BERRY_H
diff --git a/include/constants/cable_club.h b/include/constants/cable_club.h
new file mode 100644
index 000000000..f2aa4120c
--- /dev/null
+++ b/include/constants/cable_club.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_CONSTANTS_CABLE_CLUB_H
+#define GUARD_CONSTANTS_CABLE_CLUB_H
+
+// States for VAR_CABLE_CLUB_STATE
+#define USING_SINGLE_BATTLE 1
+#define USING_DOUBLE_BATTLE 2
+#define USING_TRADE_CENTER 3
+#define USING_RECORD_CORNER 4
+#define USING_MULTI_BATTLE 5
+#define USING_UNION_ROOM 6
+#define USING_BERRY_CRUSH 7
+#define USING_MINIGAME 8
+#define USING_BATTLE_TOWER 9
+
+#endif //GUARD_CONSTANTS_CABLE_CLUB_H
diff --git a/include/constants/coins.h b/include/constants/coins.h
new file mode 100644
index 000000000..fd68f3f9e
--- /dev/null
+++ b/include/constants/coins.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_CONSTANTS_COINS_H
+#define GUARD_CONSTANTS_COINS_H
+
+#define MAX_COINS 9999
+
+#endif // GUARD_CONSTANTS_COINS_H \ No newline at end of file
diff --git a/include/constants/contest.h b/include/constants/contest.h
index d3296222b..186c56e2b 100644
--- a/include/constants/contest.h
+++ b/include/constants/contest.h
@@ -9,6 +9,19 @@
#define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1)
#define LINK_CONTEST_FLAG_HAS_RS_PLAYER (1 << 2)
+#define CONTEST_RANK_NORMAL 0
+#define CONTEST_RANK_SUPER 1
+#define CONTEST_RANK_HYPER 2
+#define CONTEST_RANK_MASTER 3
+#define CONTEST_RANK_LINK 4
+
+// States for VAR_CONTEST_TYPE
+#define CONTEST_TYPE_NPC_NORMAL (CONTEST_RANK_NORMAL + 1)
+#define CONTEST_TYPE_NPC_SUPER (CONTEST_RANK_SUPER + 1)
+#define CONTEST_TYPE_NPC_HYPER (CONTEST_RANK_HYPER + 1)
+#define CONTEST_TYPE_NPC_MASTER (CONTEST_RANK_MASTER + 1)
+#define CONTEST_TYPE_LINK (CONTEST_RANK_LINK + 1)
+
#define CONTEST_CATEGORY_COOL 0
#define CONTEST_CATEGORY_BEAUTY 1
#define CONTEST_CATEGORY_CUTE 2
@@ -16,4 +29,10 @@
#define CONTEST_CATEGORY_TOUGH 4
#define CONTEST_CATEGORIES_COUNT 5
+#define CANT_ENTER_CONTEST 0
+#define CAN_ENTER_CONTEST_EQUAL_RANK 1
+#define CAN_ENTER_CONTEST_HIGH_RANK 2
+#define CANT_ENTER_CONTEST_EGG 3
+#define CANT_ENTER_CONTEST_FAINTED 4
+
#endif // GUARD_CONSTANTS_CONTEST_H
diff --git a/include/constants/daycare.h b/include/constants/daycare.h
new file mode 100644
index 000000000..103f920f2
--- /dev/null
+++ b/include/constants/daycare.h
@@ -0,0 +1,27 @@
+#ifndef GUARD_DAYCARE_CONSTANTS_H
+#define GUARD_DAYCARE_CONSTANTS_H
+
+// Parent compatability scores
+#define PARENTS_INCOMPATIBLE 0
+#define PARENTS_LOW_COMPATIBILITY 20
+#define PARENTS_MED_COMPATABILITY 50
+#define PARENTS_MAX_COMPATABILITY 70
+
+// Daycare state
+#define DAYCARE_NO_MONS 0
+#define DAYCARE_EGG_WAITING 1
+#define DAYCARE_ONE_MON 2
+#define DAYCARE_TWO_MONS 3
+
+#define INHERITED_IV_COUNT 3
+#define EGG_HATCH_LEVEL 5
+#define EGG_GENDER_MALE 0x8000 // used to create a male egg from a female-only parent species (e.g. Nidoran)
+
+#define DAYCARE_LEVEL_MENU_EXIT 5
+#define DAYCARE_EXITED_LEVEL_MENU 2 // would be redundant with above if GF had used the same value
+
+// Array buffers
+#define EGG_MOVES_ARRAY_COUNT 10
+#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50
+
+#endif //GUARD_DAYCARE_CONSTANTS_H
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 50f5994f4..8e82cfef0 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -1095,6 +1095,15 @@
#define EC_WORD_OLD (EC_GROUP_TRENDY_SAYING << 9) | 0x1e
#define EC_WORD_YOUNG (EC_GROUP_TRENDY_SAYING << 9) | 0x1f
#define EC_WORD_UGLY (EC_GROUP_TRENDY_SAYING << 9) | 0x20
+#define NUM_ADDITIONAL_PHRASES 33
+
+// Special Berry Masters Wife phrases
+#define NOT_SPECIAL_PHRASE 0
+#define PHRASE_GREAT_BATTLE 1
+#define PHRASE_CHALLENGE_CONTEST 2
+#define PHRASE_OVERWHELMING_LATIAS 3
+#define PHRASE_COOL_LATIOS 4
+#define PHRASE_SUPER_HUSTLE 5
#define EC_POKEMON(mon) ((EC_GROUP_POKEMON << 9) | SPECIES_##mon)
#define EC_POKEMON2(mon) ((EC_GROUP_POKEMON_2 << 9) | SPECIES_##mon)
diff --git a/include/constants/event_object_movement_constants.h b/include/constants/event_object_movement_constants.h
index b1f9b4cb5..ed6f6c7fb 100755
--- a/include/constants/event_object_movement_constants.h
+++ b/include/constants/event_object_movement_constants.h
@@ -179,8 +179,8 @@
#define MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY 0x5D
#define MOVEMENT_ACTION_INIT_AFFINE_ANIM 0x5E
#define MOVEMENT_ACTION_CLEAR_AFFINE_ANIM 0x5F
-#define MOVEMENT_ACTION_UNKNOWN1 0x60
-#define MOVEMENT_ACTION_UNKNOWN2 0x61
+#define MOVEMENT_ACTION_HIDE_REFLECTION 0x60
+#define MOVEMENT_ACTION_SHOW_REFLECTION 0x61
#define MOVEMENT_ACTION_WALK_DOWN_START_AFFINE 0x62
#define MOVEMENT_ACTION_WALK_DOWN_AFFINE 0x63
#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN 0x64
diff --git a/include/constants/field_poison.h b/include/constants/field_poison.h
new file mode 100644
index 000000000..19b91e7c2
--- /dev/null
+++ b/include/constants/field_poison.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_CONSTANTS_FIELD_POISON_H
+#define GUARD_CONSTANTS_FIELD_POISON_H
+
+#define FLDPSN_NONE 0
+#define FLDPSN_PSN 1
+#define FLDPSN_FNT 2
+
+#define FLDPSN_NO_WHITEOUT 0
+#define FLDPSN_WHITEOUT 1
+#define FLDPSN_FRONTIER_WHITEOUT 2
+
+#endif //GUARD_CONSTANTS_FIELD_POISON_H
diff --git a/include/constants/field_specials.h b/include/constants/field_specials.h
new file mode 100644
index 000000000..a2dc117e4
--- /dev/null
+++ b/include/constants/field_specials.h
@@ -0,0 +1,78 @@
+#ifndef GUARD_CONSTANTS_FIELD_SPECIALS_H
+#define GUARD_CONSTANTS_FIELD_SPECIALS_H
+
+// PC Locations
+#define PC_LOCATION_OTHER 0
+#define PC_LOCATION_BRENDANS_HOUSE 1
+#define PC_LOCATION_MAYS_HOUSE 2
+
+// SS Tidal Locations
+#define SS_TIDAL_LOCATION_CURRENTS 0
+#define SS_TIDAL_LOCATION_SLATEPORT 1
+#define SS_TIDAL_LOCATION_LILYCOVE 2
+#define SS_TIDAL_LOCATION_ROUTE124 3
+#define SS_TIDAL_LOCATION_ROUTE131 4
+
+#define SS_TIDAL_BOARD_SLATEPORT 1
+#define SS_TIDAL_DEPART_SLATEPORT 2
+#define SS_TIDAL_HALFWAY_LILYCOVE 3
+#define SS_TIDAL_LAND_LILYCOVE 4
+#define SS_TIDAL_BOARD_LILYCOVE 5
+#define SS_TIDAL_DEPART_LILYCOVE 6
+#define SS_TIDAL_HALFWAY_SLATEPORT 7
+#define SS_TIDAL_LAND_SLATEPORT 8
+#define SS_TIDAL_EXIT_CURRENTS_RIGHT 9
+#define SS_TIDAL_EXIT_CURRENTS_LEFT 10
+
+#define SS_TIDAL_MAX_STEPS 205
+
+// Scrollable Multichoice Menus
+#define SCROLL_MULTI_NONE 0
+#define SCROLL_MULTI_GLASS_WORKSHOP_VENDOR 1
+#define SCROLL_MULTI_POKEMON_FAN_CLUB_RATER 2
+#define SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1 3
+#define SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2 4
+#define SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR 5
+#define SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR 6
+#define SCROLL_MULTI_BERRY_POWDER_VENDOR 7
+#define SCROLL_MULTI_BF_RECEPTIONIST 8
+#define SCROLL_MULTI_BF_MOVE_TUTOR_1 9
+#define SCROLL_MULTI_BF_MOVE_TUTOR_2 10
+#define SCROLL_MULTI_SS_TIDAL_DESTINATION 11
+#define SCROLL_MULTI_BATTLE_TENT_RULES 12
+
+#define MAX_SCROLL_MULTI_ON_SCREEN 6
+#define MAX_SCROLL_MULTI_LENGTH 16
+
+// Dept Store Floor Numbers
+#define DEPT_STORE_FLOORNUM_B4F 0
+#define DEPT_STORE_FLOORNUM_B3F 1
+#define DEPT_STORE_FLOORNUM_B2F 2
+#define DEPT_STORE_FLOORNUM_B1F 3
+#define DEPT_STORE_FLOORNUM_1F 4
+#define DEPT_STORE_FLOORNUM_2F 5
+#define DEPT_STORE_FLOORNUM_3F 6
+#define DEPT_STORE_FLOORNUM_4F 7
+#define DEPT_STORE_FLOORNUM_5F 8
+#define DEPT_STORE_FLOORNUM_6F 9
+#define DEPT_STORE_FLOORNUM_7F 10
+#define DEPT_STORE_FLOORNUM_8F 11
+#define DEPT_STORE_FLOORNUM_9F 12
+#define DEPT_STORE_FLOORNUM_10F 13
+#define DEPT_STORE_FLOORNUM_11F 14
+#define DEPT_STORE_FLOORNUM_ROOFTOP 15
+
+// Lilycove Pokemon Trainer Fan Club
+#define NUM_TRAINER_FAN_CLUB_MEMBERS 8
+
+#define FANCLUB_GOT_FIRST_FANS 7
+#define FANCLUB_MEMBER1 8
+#define FANCLUB_MEMBER2 9
+#define FANCLUB_MEMBER3 10
+#define FANCLUB_MEMBER4 11
+#define FANCLUB_MEMBER5 12
+#define FANCLUB_MEMBER6 13
+#define FANCLUB_MEMBER7 14
+#define FANCLUB_MEMBER8 15
+
+#endif // GUARD_CONSTANTS_FIELD_SPECIALS_H
diff --git a/include/constants/field_tasks.h b/include/constants/field_tasks.h
new file mode 100644
index 000000000..7f773855d
--- /dev/null
+++ b/include/constants/field_tasks.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_CONSTANTS_FIELD_TASKS_H
+#define GUARD_CONSTANTS_FIELD_TASKS_H
+
+#define STEP_CB_DUMMY 0
+#define STEP_CB_ASH 1
+#define STEP_CB_FORTREE_BRIDGE 2
+#define STEP_CB_PACIFIDLOG_BRIDGE 3
+#define STEP_CB_SOOTOPOLIS_ICE 4
+#define STEP_CB_TRUCK 5
+#define STEP_CB_SECRET_BASE 6
+#define STEP_CB_CRACKED_FLOOR 7
+
+#endif // GUARD_CONSTANTS_FIELD_TASKS_H
diff --git a/include/constants/field_weather.h b/include/constants/field_weather.h
new file mode 100644
index 000000000..e84dbc48c
--- /dev/null
+++ b/include/constants/field_weather.h
@@ -0,0 +1,24 @@
+#ifndef GUARD_CONSTANTS_FIELD_WEATHER_H
+#define GUARD_CONSTANTS_FIELD_WEATHER_H
+
+#define MAX_RAIN_SPRITES 24
+#define NUM_CLOUD_SPRITES 3
+#define NUM_FOG_HORIZONTAL_SPRITES 20
+#define NUM_ASH_SPRITES 20
+#define NUM_FOG_DIAGONAL_SPRITES 20
+#define NUM_SANDSTORM_SPRITES 20
+#define NUM_SWIRL_SANDSTORM_SPRITES 5
+
+// Controls how the weather should be changing the screen palettes.
+#define WEATHER_PAL_STATE_CHANGING_WEATHER 0
+#define WEATHER_PAL_STATE_SCREEN_FADING_IN 1
+#define WEATHER_PAL_STATE_SCREEN_FADING_OUT 2
+#define WEATHER_PAL_STATE_IDLE 3
+
+// Modes for FadeScreen
+#define FADE_FROM_BLACK 0
+#define FADE_TO_BLACK 1
+#define FADE_FROM_WHITE 2
+#define FADE_TO_WHITE 3
+
+#endif // GUARD_CONSTANTS_FIELD_WEATHER_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 7aa5c3ed3..1163e394f 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1,41 +1,45 @@
#ifndef GUARD_CONSTANTS_FLAGS_H
#define GUARD_CONSTANTS_FLAGS_H
+#include "constants/opponents.h"
+
// Temporary Flags
// These temporary flags are are cleared every time a map is loaded. They are used
// for things like shortening an NPCs introduction text if the player already spoke
// to them once.
-#define FLAG_TEMP_1 0x1
-#define FLAG_TEMP_2 0x2
-#define FLAG_TEMP_3 0x3
-#define FLAG_TEMP_4 0x4
-#define FLAG_TEMP_5 0x5 // Unused Flag
-#define FLAG_TEMP_6 0x6 // Unused Flag
-#define FLAG_TEMP_7 0x7 // Unused Flag
-#define FLAG_TEMP_8 0x8 // Unused Flag
-#define FLAG_TEMP_9 0x9 // Unused Flag
-#define FLAG_TEMP_A 0xA // Unused Flag
-#define FLAG_TEMP_B 0xB // Unused Flag
-#define FLAG_TEMP_C 0xC // Unused Flag
-#define FLAG_TEMP_D 0xD // Unused Flag
-#define FLAG_TEMP_E 0xE // Unused Flag
-#define FLAG_TEMP_F 0xF // Unused Flag
-#define FLAG_TEMP_10 0x10 // Unused Flag
-#define FLAG_TEMP_11 0x11
-#define FLAG_TEMP_12 0x12
-#define FLAG_TEMP_13 0x13
-#define FLAG_TEMP_14 0x14
-#define FLAG_TEMP_15 0x15
-#define FLAG_TEMP_16 0x16
-#define FLAG_TEMP_17 0x17
-#define FLAG_TEMP_18 0x18
-#define FLAG_TEMP_19 0x19
-#define FLAG_TEMP_1A 0x1A
-#define FLAG_TEMP_1B 0x1B
-#define FLAG_TEMP_1C 0x1C
-#define FLAG_TEMP_1D 0x1D
-#define FLAG_TEMP_1E 0x1E
-#define FLAG_TEMP_1F 0x1F
+#define TEMP_FLAGS_START 0x0
+#define FLAG_TEMP_1 (TEMP_FLAGS_START + 0x1)
+#define FLAG_TEMP_2 (TEMP_FLAGS_START + 0x2)
+#define FLAG_TEMP_3 (TEMP_FLAGS_START + 0x3)
+#define FLAG_TEMP_4 (TEMP_FLAGS_START + 0x4)
+#define FLAG_TEMP_5 (TEMP_FLAGS_START + 0x5) // Unused Flag
+#define FLAG_TEMP_6 (TEMP_FLAGS_START + 0x6) // Unused Flag
+#define FLAG_TEMP_7 (TEMP_FLAGS_START + 0x7) // Unused Flag
+#define FLAG_TEMP_8 (TEMP_FLAGS_START + 0x8) // Unused Flag
+#define FLAG_TEMP_9 (TEMP_FLAGS_START + 0x9) // Unused Flag
+#define FLAG_TEMP_A (TEMP_FLAGS_START + 0xA) // Unused Flag
+#define FLAG_TEMP_B (TEMP_FLAGS_START + 0xB) // Unused Flag
+#define FLAG_TEMP_C (TEMP_FLAGS_START + 0xC) // Unused Flag
+#define FLAG_TEMP_D (TEMP_FLAGS_START + 0xD) // Unused Flag
+#define FLAG_TEMP_E (TEMP_FLAGS_START + 0xE) // Unused Flag
+#define FLAG_TEMP_F (TEMP_FLAGS_START + 0xF) // Unused Flag
+#define FLAG_TEMP_10 (TEMP_FLAGS_START + 0x10) // Unused Flag
+#define FLAG_TEMP_11 (TEMP_FLAGS_START + 0x11)
+#define FLAG_TEMP_12 (TEMP_FLAGS_START + 0x12)
+#define FLAG_TEMP_13 (TEMP_FLAGS_START + 0x13)
+#define FLAG_TEMP_14 (TEMP_FLAGS_START + 0x14)
+#define FLAG_TEMP_15 (TEMP_FLAGS_START + 0x15)
+#define FLAG_TEMP_16 (TEMP_FLAGS_START + 0x16)
+#define FLAG_TEMP_17 (TEMP_FLAGS_START + 0x17)
+#define FLAG_TEMP_18 (TEMP_FLAGS_START + 0x18)
+#define FLAG_TEMP_19 (TEMP_FLAGS_START + 0x19)
+#define FLAG_TEMP_1A (TEMP_FLAGS_START + 0x1A)
+#define FLAG_TEMP_1B (TEMP_FLAGS_START + 0x1B)
+#define FLAG_TEMP_1C (TEMP_FLAGS_START + 0x1C)
+#define FLAG_TEMP_1D (TEMP_FLAGS_START + 0x1D)
+#define FLAG_TEMP_1E (TEMP_FLAGS_START + 0x1E)
+#define FLAG_TEMP_1F (TEMP_FLAGS_START + 0x1F)
+#define TEMP_FLAGS_END FLAG_TEMP_1F
#define FLAG_UNUSED_0x020 0x20 // Unused Flag
#define FLAG_UNUSED_0x021 0x21 // Unused Flag
@@ -87,7 +91,7 @@
#define FLAG_UNUSED_0x04F 0x4F // Unused Flag
// Scripts
-#define FLAG_RAYQUAZA_ON_SKY_TOWER_SUMMIT 0x50
+#define FLAG_HIDE_RAYQUAZA_SKY_TOWER_SUMMIT 0x50
#define FLAG_SET_WALL_CLOCK 0x51
#define FLAG_RESCUED_BIRCH 0x52
#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53
@@ -95,7 +99,7 @@
#define FLAG_UNUSED_0x054 0x54 // Unused Flag
#define FLAG_UNUSED_0x055 0x55 // Unused Flag
-#define FLAG_LINK_CONTEST_POKE_BALL 0x56
+#define FLAG_HIDE_CONTEST_POKE_BALL 0x56 // Always set after new game, object it hides is added directly
#define FLAG_MET_RIVAL_MOM 0x57
#define FLAG_BIRCH_AIDE_MET 0x58
#define FLAG_DECLINED_BIKE 0x59
@@ -109,23 +113,23 @@
#define FLAG_MET_TEAM_AQUA_HARBOR 0x61
#define FLAG_TV_EXPLAINED 0x62
#define FLAG_MAUVILLE_GYM_BARRIERS_STATE 0x63
-#define FLAG_MOSSDEEP_GYM_SWITCH_1 0x64
-#define FLAG_MOSSDEEP_GYM_SWITCH_2 0x65
-#define FLAG_MOSSDEEP_GYM_SWITCH_3 0x66
-#define FLAG_MOSSDEEP_GYM_SWITCH_4 0x67
+#define FLAG_MOSSDEEP_GYM_SWITCH_1 0x64 // Leftover from the RS version of Mossdeep Gym, functionally unused
+#define FLAG_MOSSDEEP_GYM_SWITCH_2 0x65 //
+#define FLAG_MOSSDEEP_GYM_SWITCH_3 0x66 //
+#define FLAG_MOSSDEEP_GYM_SWITCH_4 0x67 //
#define FLAG_UNUSED_0x068 0x68 // Unused Flag
#define FLAG_OCEANIC_MUSEUM_MET_REPORTER 0x69
#define FLAG_RECEIVED_HM04 0x6A
#define FLAG_RECEIVED_HM06 0x6B
-#define FLAG_FLANNERY_GIVES_BADGE_INFO 0x6C
+#define FLAG_WHITEOUT_TO_LAVARIDGE 0x6C // Set after defeating Flannery, so the player cant white out from poison before receiving Go Goggles
#define FLAG_RECEIVED_HM05 0x6D
#define FLAG_RECEIVED_HM02 0x6E
#define FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT 0x6F
#define FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE 0x70
#define FLAG_UNUSED_RS_LEGENDARY_BATTLE_DONE 0x71 // Unused Flag. Used in R/S to indicate whether player defeated or caught Groudon/Kyogre in Cave of Origin.
-#define FLAG_SCOTT_CALL_NATIONAL_DEX 0x72 // Used in order to activate a phone call from Scott, inviting the player to the SS Tidal.
+#define FLAG_SCOTT_CALL_BATTLE_FRONTIER 0x72 // Used in order to activate a phone call from Scott, inviting the player to the SS Tidal.
#define FLAG_RECEIVED_METEORITE 0x73
#define FLAG_ADVENTURE_STARTED 0x74 // RECEIVED Pokédex.
#define FLAG_DEFEATED_MAGMA_SPACE_CENTER 0x75 // Set when Team Magma is defeated at Mossdeep's Space Center.
@@ -146,12 +150,12 @@
#define FLAG_DEFEATED_RIVAL_ROUTE103 0x82
#define FLAG_RECEIVED_DOLL_LANETTE 0x83
#define FLAG_RECEIVED_POTION_OLDALE 0x84
-#define FLAG_MOM_SAYS_GOODBYE 0x85
+#define FLAG_RECEIVED_AMULET_COIN 0x85
#define FLAG_PENDING_DAYCARE_EGG 0x86
#define FLAG_THANKED_FOR_PLAYING_WITH_WALLY 0x87
#define FLAG_ENABLE_FIRST_WALLY_POKENAV_CALL 0x88 // Set after defeating Wally outside Mauville Gym. Will activate a call later to register Wally.
#define FLAG_RECEIVED_HM01 0x89
-#define FLAG_REGISTER_WINONA_POKENAV 0x8A // Set after obtaining registering Winona, and cleared after Scott's call.
+#define FLAG_SCOTT_CALL_FORTREE_GYM 0x8A // Triggers call from Scott after defeating Winona
#define FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY 0x8B
#define FLAG_RECEIVED_6_SODA_POP 0x8C
#define FLAG_DEFEATED_SEASHORE_HOUSE 0x8D
@@ -163,9 +167,7 @@
#define FLAG_MR_BRINEY_SAILING_INTRO 0x93
#define FLAG_DOCK_REJECTED_DEVON_GOODS 0x94
#define FLAG_DELIVERED_DEVON_GOODS 0x95
-
-#define FLAG_UNUSED_0x096 0x96 // Unused Flag
-
+#define FLAG_RECEIVED_CONTEST_PASS 0x96 // Unused, leftover from R/S
#define FLAG_RECEIVED_CASTFORM 0x97
#define FLAG_RECEIVED_SUPER_ROD 0x98
#define FLAG_RUSTBORO_NPC_TRADE_COMPLETED 0x99
@@ -209,11 +211,11 @@
#define FLAG_DEFEATED_GRUNT_SPACE_CENTER_1F 0xBF
#define FLAG_RECEIVED_SUN_STONE_MOSSDEEP 0xC0
#define FLAG_WALLY_SPEECH 0xC1
-#define FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_1 0xC2
-#define FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_2 0xC3
-#define FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_3 0xC4
-#define FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_4 0xC5
-#define FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_5 0xC6
+#define FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_1 0xC2 // Leftover from the RS version of Puzzle Room 7, functionally unused
+#define FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_2 0xC3 //
+#define FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_3 0xC4 //
+#define FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_4 0xC5 //
+#define FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_5 0xC6 //
#define FLAG_RUSTURF_TUNNEL_OPENED 0xC7
#define FLAG_RECEIVED_RED_SCARF 0xC8
#define FLAG_RECEIVED_BLUE_SCARF 0xC9
@@ -263,7 +265,7 @@
#define FLAG_USED_ROOM_2_KEY 0xF1
#define FLAG_USED_ROOM_4_KEY 0xF2
#define FLAG_USED_ROOM_6_KEY 0xF3
-#define FLAG_MET_PROF_COSMO 0xF4
+#define FLAG_MET_PROF_COZMO 0xF4
#define FLAG_RECEIVED_WAILMER_DOLL 0xF5
#define FLAG_RECEIVED_CHESTO_BERRY_ROUTE_104 0xF6
#define FLAG_DEFEATED_SS_TIDAL_TRAINERS 0xF7
@@ -289,7 +291,7 @@
#define FLAG_RECEIVED_REVIVED_FOSSIL_MON 0x10B
#define FLAG_SECRET_BASE_REGISTRY_ENABLED 0x10C
#define FLAG_RECEIVED_TM46 0x10D
-#define FLAG_CONTEST_SKETCH_CREATED 0x10E
+#define FLAG_CONTEST_SKETCH_CREATED 0x10E // Set but never read
#define FLAG_EVIL_TEAM_ESCAPED_STERN_SPOKE 0x10F
#define FLAG_RECEIVED_EXP_SHARE 0x110
#define FLAG_POKERUS_EXPLAINED 0x111
@@ -332,10 +334,10 @@
#define FLAG_MET_SCOTT_RUSTBORO 0x136
#define FLAG_WALLACE_GOES_TO_SKY_PILLAR 0x137 // Set after speaking to Wallace within the Cave of Origin.
#define FLAG_RECEIVED_HM07 0x138
-#define FLAG_BEAT_MAGMA_GRUNT_JAGGED_PASS 0x139 // Beat Magma Grunt blocking Magma Hideout entrance.
-#define FLAG_RECEIVED_AURORA_TICKET 0x13A // RECEIVED Aurora Ticket in Mystery Gift
-#define FLAG_RECEIVED_MYSTIC_TICKET 0x13B // RECEIVED Mystic Ticket in Mystery Gift
-#define FLAG_RECEIVED_OLD_SEA_MAP 0x13C // RECEIVED Old Sea Map in Mystery Gift
+#define FLAG_BEAT_MAGMA_GRUNT_JAGGED_PASS 0x139
+#define FLAG_RECEIVED_AURORA_TICKET 0x13A
+#define FLAG_RECEIVED_MYSTIC_TICKET 0x13B
+#define FLAG_RECEIVED_OLD_SEA_MAP 0x13C
#define FLAG_UNUSED_MYSTERY_GIFT_0x13D 0x13D
#define FLAG_UNUSED_MYSTERY_GIFT_0x13E 0x13E
#define FLAG_UNUSED_MYSTERY_GIFT_0x13F 0x13F
@@ -355,19 +357,19 @@
#define FLAG_UNUSED_MYSTERY_GIFT_0x14D 0x14D
#define FLAG_MIRAGE_TOWER_VISIBLE 0x14E
-#define FLAG_CHOSE_CLAW_FOSSIL 0x14F // Player chose Claw Fossil
-#define FLAG_CHOSE_ROOT_FOSSIL 0x150 // Player chose Root Fossil
+#define FLAG_CHOSE_ROOT_FOSSIL 0x14F
+#define FLAG_CHOSE_CLAW_FOSSIL 0x150
#define FLAG_RECEIVED_POWDER_JAR 0x151
#define FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER 0x152
#define FLAG_MET_BATTLE_FRONTIER_BREEDER 0x153
#define FLAG_MET_BATTLE_FRONTIER_MANIAC 0x154
-#define FLAG_ENTERED_LINK_CONTEST 0x155
+#define FLAG_ENTERED_CONTEST 0x155
#define FLAG_MET_SLATEPORT_FANCLUB_CHAIRMAN 0x156
-#define FLAG_MET_BATTLE_FRONTIER_BETTOR 0x157
+#define FLAG_MET_BATTLE_FRONTIER_GAMBLER 0x157
#define FLAG_ENABLE_MR_STONE_POKENAV 0x158
-#define FLAG_OLDALE_NURSE_MENTIONS_GOLD_CARD 0x159
+#define FLAG_NURSE_MENTIONS_GOLD_CARD 0x159
#define FLAG_MET_FRONTIER_BEAUTY_MOVE_TUTOR 0x15A
#define FLAG_MET_FRONTIER_SWIMMER_MOVE_TUTOR 0x15B
@@ -493,7 +495,7 @@
#define FLAG_MET_SCOTT_IN_EVERGRANDE 0x1CF
#define FLAG_MET_SCOTT_ON_SS_TIDAL 0x1D0
#define FLAG_SCOTT_GIVES_BATTLE_POINTS 0x1D1
-#define FLAG_RECEIVED_STARF_BERRY_FROM_SCOTT 0x1D2
+#define FLAG_COLLECTED_ALL_GOLD_SYMBOLS 0x1D2
#define FLAG_ENABLE_ROXANNE_MATCH_CALL 0x1D3
#define FLAG_ENABLE_BRAWLY_MATCH_CALL 0x1D4
#define FLAG_ENABLE_WATTSON_MATCH_CALL 0x1D5
@@ -533,8 +535,6 @@
#define FLAG_MYSTERY_EVENT_14 0x1F2
#define FLAG_MYSTERY_EVENT_15 0x1F3
-#define FLAG_TRICK_HOUSE_END_ROOM 0x1F5 // Trick House End Room Flag
-
// Hidden Items -- sorted by location
#define FLAG_HIDDEN_ITEMS_START 0x1F4
#define FLAG_HIDDEN_ITEM_TRICK_HOUSE_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x01)
@@ -650,6 +650,95 @@
#define FLAG_HIDDEN_ITEM_ROUTE_128_HEART_SCALE_2 (FLAG_HIDDEN_ITEMS_START + 0x5D)
#define FLAG_HIDDEN_ITEM_ROUTE_128_HEART_SCALE_3 (FLAG_HIDDEN_ITEMS_START + 0x5E)
+#define FLAG_UNUSED_0x264 0x264 // Unused Flag
+#define FLAG_UNUSED_0x265 0x265 // Unused Flag
+#define FLAG_UNUSED_0x266 0x266 // Unused Flag
+#define FLAG_UNUSED_0x267 0x267 // Unused Flag
+#define FLAG_UNUSED_0x268 0x268 // Unused Flag
+#define FLAG_UNUSED_0x269 0x269 // Unused Flag
+#define FLAG_UNUSED_0x26A 0x26A // Unused Flag
+#define FLAG_UNUSED_0x26B 0x26B // Unused Flag
+#define FLAG_UNUSED_0x26C 0x26C // Unused Flag
+#define FLAG_UNUSED_0x26D 0x26D // Unused Flag
+#define FLAG_UNUSED_0x26E 0x26E // Unused Flag
+#define FLAG_UNUSED_0x26F 0x26F // Unused Flag
+#define FLAG_UNUSED_0x270 0x270 // Unused Flag
+#define FLAG_UNUSED_0x271 0x271 // Unused Flag
+#define FLAG_UNUSED_0x272 0x272 // Unused Flag
+#define FLAG_UNUSED_0x273 0x273 // Unused Flag
+#define FLAG_UNUSED_0x274 0x274 // Unused Flag
+#define FLAG_UNUSED_0x275 0x275 // Unused Flag
+#define FLAG_UNUSED_0x276 0x276 // Unused Flag
+#define FLAG_UNUSED_0x277 0x277 // Unused Flag
+#define FLAG_UNUSED_0x278 0x278 // Unused Flag
+#define FLAG_UNUSED_0x279 0x279 // Unused Flag
+#define FLAG_UNUSED_0x27A 0x27A // Unused Flag
+#define FLAG_UNUSED_0x27B 0x27B // Unused Flag
+#define FLAG_UNUSED_0x27C 0x27C // Unused Flag
+#define FLAG_UNUSED_0x27D 0x27D // Unused Flag
+#define FLAG_UNUSED_0x27E 0x27E // Unused Flag
+#define FLAG_UNUSED_0x27F 0x27F // Unused Flag
+#define FLAG_UNUSED_0x280 0x280 // Unused Flag
+#define FLAG_UNUSED_0x281 0x281 // Unused Flag
+#define FLAG_UNUSED_0x282 0x282 // Unused Flag
+#define FLAG_UNUSED_0x283 0x283 // Unused Flag
+#define FLAG_UNUSED_0x284 0x284 // Unused Flag
+#define FLAG_UNUSED_0x285 0x285 // Unused Flag
+#define FLAG_UNUSED_0x286 0x286 // Unused Flag
+#define FLAG_UNUSED_0x287 0x287 // Unused Flag
+#define FLAG_UNUSED_0x288 0x288 // Unused Flag
+#define FLAG_UNUSED_0x289 0x289 // Unused Flag
+#define FLAG_UNUSED_0x28A 0x28A // Unused Flag
+#define FLAG_UNUSED_0x28B 0x28B // Unused Flag
+#define FLAG_UNUSED_0x28C 0x28C // Unused Flag
+#define FLAG_UNUSED_0x28D 0x28D // Unused Flag
+#define FLAG_UNUSED_0x28E 0x28E // Unused Flag
+#define FLAG_UNUSED_0x28F 0x28F // Unused Flag
+#define FLAG_UNUSED_0x290 0x290 // Unused Flag
+#define FLAG_UNUSED_0x291 0x291 // Unused Flag
+#define FLAG_UNUSED_0x292 0x292 // Unused Flag
+#define FLAG_UNUSED_0x293 0x293 // Unused Flag
+#define FLAG_UNUSED_0x294 0x294 // Unused Flag
+#define FLAG_UNUSED_0x295 0x295 // Unused Flag
+#define FLAG_UNUSED_0x296 0x296 // Unused Flag
+#define FLAG_UNUSED_0x297 0x297 // Unused Flag
+#define FLAG_UNUSED_0x298 0x298 // Unused Flag
+#define FLAG_UNUSED_0x299 0x299 // Unused Flag
+#define FLAG_UNUSED_0x29A 0x29A // Unused Flag
+#define FLAG_UNUSED_0x29B 0x29B // Unused Flag
+#define FLAG_UNUSED_0x29C 0x29C // Unused Flag
+#define FLAG_UNUSED_0x29D 0x29D // Unused Flag
+#define FLAG_UNUSED_0x29E 0x29E // Unused Flag
+#define FLAG_UNUSED_0x29F 0x29F // Unused Flag
+#define FLAG_UNUSED_0x2A0 0x2A0 // Unused Flag
+#define FLAG_UNUSED_0x2A1 0x2A1 // Unused Flag
+#define FLAG_UNUSED_0x2A2 0x2A2 // Unused Flag
+#define FLAG_UNUSED_0x2A3 0x2A3 // Unused Flag
+#define FLAG_UNUSED_0x2A4 0x2A4 // Unused Flag
+#define FLAG_UNUSED_0x2A5 0x2A5 // Unused Flag
+#define FLAG_UNUSED_0x2A6 0x2A6 // Unused Flag
+#define FLAG_UNUSED_0x2A7 0x2A7 // Unused Flag
+#define FLAG_UNUSED_0x2A8 0x2A8 // Unused Flag
+#define FLAG_UNUSED_0x2A9 0x2A9 // Unused Flag
+#define FLAG_UNUSED_0x2AA 0x2AA // Unused Flag
+#define FLAG_UNUSED_0x2AB 0x2AB // Unused Flag
+#define FLAG_UNUSED_0x2AC 0x2AC // Unused Flag
+#define FLAG_UNUSED_0x2AD 0x2AD // Unused Flag
+#define FLAG_UNUSED_0x2AE 0x2AE // Unused Flag
+#define FLAG_UNUSED_0x2AF 0x2AF // Unused Flag
+#define FLAG_UNUSED_0x2B0 0x2B0 // Unused Flag
+#define FLAG_UNUSED_0x2B1 0x2B1 // Unused Flag
+#define FLAG_UNUSED_0x2B2 0x2B2 // Unused Flag
+#define FLAG_UNUSED_0x2B3 0x2B3 // Unused Flag
+#define FLAG_UNUSED_0x2B4 0x2B4 // Unused Flag
+#define FLAG_UNUSED_0x2B5 0x2B5 // Unused Flag
+#define FLAG_UNUSED_0x2B6 0x2B6 // Unused Flag
+#define FLAG_UNUSED_0x2B7 0x2B7 // Unused Flag
+#define FLAG_UNUSED_0x2B8 0x2B8 // Unused Flag
+#define FLAG_UNUSED_0x2B9 0x2B9 // Unused Flag
+#define FLAG_UNUSED_0x2BA 0x2BA // Unused Flag
+#define FLAG_UNUSED_0x2BB 0x2BB // Unused Flag
+
// Event Flags
#define FLAG_HIDE_ROUTE_101_BIRCH_STARTERS_BAG 0x2BC
#define FLAG_HIDE_APPRENTICE 0x2BD
@@ -690,18 +779,18 @@
#define FLAG_HIDE_PLAYERS_HOUSE_DAD 0x2DE
#define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_RIVAL_SIBLING 0x2DF
#define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_RIVAL_SIBLING 0x2E0
-#define FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_INVISIBLE_NINJA_BOY 0x2E1
+#define FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_MAGMA_NOTE 0x2E1
#define FLAG_HIDE_ROUTE_104_MR_BRINEY 0x2E2
#define FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY 0x2E3
#define FLAG_HIDE_MR_BRINEY_DEWFORD_TOWN 0x2E4
-#define FLAG_HIDE_ROUTE_108_MR_BRINEY 0x2E5
+#define FLAG_HIDE_ROUTE_109_MR_BRINEY 0x2E5
#define FLAG_HIDE_ROUTE_104_MR_BRINEY_BOAT 0x2E6
#define FLAG_HIDE_MR_BRINEY_BOAT_DEWFORD_TOWN 0x2E7
#define FLAG_HIDE_ROUTE_109_MR_BRINEY_BOAT 0x2E8
#define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_BRENDAN 0x2E9
-#define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_BRENDAN 0x2EA
+#define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_MAY 0x2EA
#define FLAG_HIDE_SAFARI_ZONE_SOUTH_EAST_EXPANSION 0x2EB
-#define FLAG_HIDE_LILYCOVE_HARBOR_EON_TICKET_TAKER 0x2EC
+#define FLAG_HIDE_LILYCOVE_HARBOR_EVENT_TICKET_TAKER 0x2EC
#define FLAG_HIDE_SLATEPORT_CITY_SCOTT 0x2ED
#define FLAG_HIDE_ROUTE_101_ZIGZAGOON 0x2EE
#define FLAG_HIDE_VICTORY_ROAD_EXIT_WALLY 0x2EF
@@ -720,7 +809,7 @@
#define FLAG_HIDE_BIRTH_ISLAND_DEOXYS_TRIANGLE 0x2FC
#define FLAG_HIDE_MAUVILLE_CITY_SCOTT 0x2FD
#define FLAG_HIDE_VERDANTURF_TOWN_SCOTT 0x2FE
-#define FLAG_HIDE_FALLORBOR_TOWN_BATTLE_TENT_SCOTT 0x2FF
+#define FLAG_HIDE_FALLARBOR_TOWN_BATTLE_TENT_SCOTT 0x2FF
#define FLAG_HIDE_ROUTE_111_VICTOR_WINSTRATE 0x300
#define FLAG_HIDE_ROUTE_111_VICTORIA_WINSTRATE 0x301
#define FLAG_HIDE_ROUTE_111_VIVI_WINSTRATE 0x302
@@ -760,14 +849,14 @@
#define FLAG_HIDE_MAUVILLE_CITY_WALLY 0x324
#define FLAG_HIDE_MAUVILLE_CITY_WALLYS_UNCLE 0x325
#define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WALLY 0x326
-#define FLAG_HIDE_RUSTURF_TUNNEL_LOVER_MAN 0x327
-#define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_LOVER_MAN 0x328
+#define FLAG_HIDE_RUSTURF_TUNNEL_WANDAS_BOYFRIEND 0x327
+#define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WANDAS_BOYFRIEND 0x328
#define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WALLYS_UNCLE 0x329
#define FLAG_HIDE_SS_TIDAL_CORRIDOR_SCOTT 0x32A
#define FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_POKEBALL_CYNDAQUIL 0x32B
#define FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_POKEBALL_TOTODILE 0x32C
#define FLAG_HIDE_ROUTE_116_DROPPED_GLASSES_MAN 0x32D
-#define FLAG_HIDE_RUSBORO_CITY_RIVAL 0x32E
+#define FLAG_HIDE_RUSTBORO_CITY_RIVAL 0x32E
#define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F_SWABLU_DOLL 0x32F
#define FLAG_HIDE_SOOTOPOLIS_CITY_WALLACE 0x330
#define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F_POKE_BALL 0x331
@@ -778,16 +867,14 @@
#define FLAG_HIDE_AQUA_HIDEOUT_1F_GRUNT_2_BLOCKING_ENTRANCE 0x336
#define FLAG_HIDE_MOSSDEEP_CITY_TEAM_MAGMA 0x337
#define FLAG_HIDE_PETALBURG_GYM_WALLYS_UNCLE 0x338
-
-#define FLAG_UNUSED_0x339 0x339 // Unused Flag
-
+#define FLAG_HIDE_LEGEND_MON_CAVE_OF_ORIGIN 0x339 // Unused, leftover from R/S
#define FLAG_HIDE_SOOTOPOLIS_CITY_ARCHIE 0x33A
#define FLAG_HIDE_SOOTOPOLIS_CITY_MAXIE 0x33B
#define FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_ARCHIE 0x33C
#define FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_MAXIE 0x33D
#define FLAG_HIDE_PETALBURG_CITY_WALLYS_UNCLE 0x33E
#define FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_MAGMA_GRUNTS 0x33F
-#define FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER_ONLOOKERS 0x340
+#define FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER 0x340
#define FLAG_HIDE_GRANITE_CAVE_STEVEN 0x341
#define FLAG_HIDE_ROUTE_128_STEVEN 0x342
#define FLAG_HIDE_SLATEPORT_CITY_GABBY_AND_TY 0x343
@@ -828,13 +915,13 @@
#define FLAG_HIDE_LANETTES_HOUSE_LANETTE 0x366
#define FLAG_HIDE_FALLORBOR_POKEMON_CENTER_LANETTE 0x367
#define FLAG_HIDE_TRICK_HOUSE_ENTRANCE_MAN 0x368
-#define FLAG_HIDE_LILYCOVE_CONTEST_HALL_POKEBLOCK_EXPERT 0x369
+#define FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER_REPLACEMENT 0x369
#define FLAG_HIDE_DESERT_UNDERPASS_FOSSIL 0x36A
#define FLAG_HIDE_ROUTE_111_PLAYER_DESCENT 0x36B
#define FLAG_HIDE_ROUTE_111_DESERT_FOSSIL 0x36C
#define FLAG_HIDE_MT_CHIMNEY_TRAINERS 0x36D
#define FLAG_HIDE_RUSTURF_TUNNEL_AQUA_GRUNT 0x36E
-#define FLAG_HIDE_RUSTURF_TUNNEL_OLD_MAN 0x36F
+#define FLAG_HIDE_RUSTURF_TUNNEL_BRINEY 0x36F
#define FLAG_HIDE_RUSTURF_TUNNEL_PEEKO 0x370
#define FLAG_HIDE_BRINEYS_HOUSE_PEEKO 0x371
#define FLAG_HIDE_SLATEPORT_CITY_TEAM_AQUA 0x372
@@ -849,7 +936,7 @@
#define FLAG_HIDE_ROUTE_116_MR_BRINEY 0x37B
#define FLAG_HIDE_WEATHER_INSTITUTE_1F_WORKERS 0x37C
#define FLAG_HIDE_WEATHER_INSTITUTE_2F_WORKERS 0x37D
-#define FLAG_HIDE_ROUTE_116_TUNNELER 0x37E
+#define FLAG_HIDE_ROUTE_116_WANDAS_BOYFRIEND 0x37E
#define FLAG_HIDE_LILYCOVE_CONTEST_HALL_CONTEST_ATTENDANT_2 0x37F
#define FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_UNKNOWN_0x380 0x380
#define FLAG_HIDE_ROUTE_101_BIRCH 0x381
@@ -883,9 +970,9 @@
#define FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS 0x39D
#define FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA 0x39E
#define FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA 0x39F
-#define FLAG_HIDE_FALLARBOR_HOUSE_1_PROF_COZMO 0x3A0
-#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_1 0x3A1
-#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_2 0x3A2
+#define FLAG_HIDE_FALLARBOR_HOUSE_PROF_COZMO 0x3A0
+#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL 0x3A1
+#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_ON_BIKE 0x3A2
#define FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1 0x3A3
#define FLAG_HIDE_RUSTURF_TUNNEL_ROCK_2 0x3A4
#define FLAG_HIDE_FORTREE_CITY_HOUSE_4_WINGULL 0x3A5
@@ -925,7 +1012,7 @@
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_STEVEN 0x3C7
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_BELDUM_POKEBALL 0x3C8
#define FLAG_HIDE_FORTREE_CITY_KECLEON 0x3C9
-#define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3CA
+#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_INVISIBLE 0x3CA
#define FLAG_HIDE_LILYCOVE_CITY_RIVAL 0x3CB
#define FLAG_HIDE_ROUTE_120_STEVEN 0x3CC
#define FLAG_HIDE_SOOTOPOLIS_CITY_STEVEN 0x3CD
@@ -936,19 +1023,19 @@
#define FLAG_HIDE_AQUA_HIDEOUT_B1F_ELECTRODE_2 0x3D2
#define FLAG_HIDE_OLDALE_TOWN_RIVAL 0x3D3
#define FLAG_HIDE_UNDERWATER_SEA_FLOOR_CAVERN_STOLEN_SUBMARINE 0x3D4
-#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE 0x3D5
-#define FLAG_HIDE_ROUTE_120_KECLEON_2 0x3D6
-#define FLAG_HIDE_RUSTURF_TUNNEL_LOVER_WOMAN 0x3D7
-#define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_LOVER_WOMAN 0x3D8
-#define FLAG_HIDE_ROUTE_120_KECLEON_3 0x3D9
-#define FLAG_HIDE_ROUTE_120_KECLEON_4 0x3DA
-#define FLAG_HIDE_ROUTE_120_KECLEON_5 0x3DB
-#define FLAG_HIDE_ROUTE_120_KECLEON_6 0x3DC
+#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_VISIBLE 0x3D5
+#define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3D6
+#define FLAG_HIDE_RUSTURF_TUNNEL_WANDA 0x3D7
+#define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WANDA 0x3D8
+#define FLAG_HIDE_ROUTE_120_KECLEON_2 0x3D9
+#define FLAG_HIDE_ROUTE_120_KECLEON_3 0x3DA
+#define FLAG_HIDE_ROUTE_120_KECLEON_4 0x3DB
+#define FLAG_HIDE_ROUTE_120_KECLEON_5 0x3DC
#define FLAG_HIDE_ROUTE_119_KECLEON_1 0x3DD
#define FLAG_HIDE_ROUTE_119_KECLEON_2 0x3DE
#define FLAG_HIDE_ROUTE_101_BOY 0x3DF
#define FLAG_HIDE_WEATHER_INSTITUTE_2F_AQUA_GRUNT_M 0x3E0
-#define FLAG_HIDE_LILYCOVE_POKEMON_CENTER_LADY 0x3E1
+#define FLAG_HIDE_LILYCOVE_POKEMON_CENTER_CONTEST_LADY_MON 0x3E1
#define FLAG_HIDE_MT_CHIMNEY_LAVA_COOKIE_LADY 0x3E2
#define FLAG_HIDE_PETALBURG_CITY_SCOTT 0x3E3
#define FLAG_HIDE_SOOTOPOLIS_CITY_RAYQUAZA 0x3E4
@@ -1255,13 +1342,17 @@
#define FLAG_UNUSED_0x4FF 0x4FF // Unused Flag
-#define FLAG_TRAINER_FLAG_START 0x500
-#define TRAINERS_FLAG_NO 0x356
+// Trainer Flags
+// Trainer flags occupy 0x500 - 0x85F, the last 9 of which are unused
+// See constants/opponents.h. The values there + FLAG_TRAINER_FLAG_START are the flag IDs
-#define SYSTEM_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
+#define TRAINER_FLAGS_START 0x500
+#define TRAINER_FLAGS_END (TRAINER_FLAGS_START + MAX_TRAINERS_COUNT - 1) // 0x85F
// System Flags
+#define SYSTEM_FLAGS (TRAINER_FLAGS_END + 1) // 0x860
+
#define FLAG_SYS_POKEMON_GET (SYSTEM_FLAGS + 0) // FLAG_0x860
#define FLAG_SYS_POKEDEX_GET (SYSTEM_FLAGS + 1)
#define FLAG_SYS_POKENAV_GET (SYSTEM_FLAGS + 2)
@@ -1400,7 +1491,7 @@
#define FLAG_ENABLE_SHIP_BIRTH_ISLAND (SYSTEM_FLAGS + 0x75)
#define FLAG_ENABLE_SHIP_FARAWAY_ISLAND (SYSTEM_FLAGS + 0x76)
-#define FLAG_SYS_STORAGE_UNKNOWN_FLAG (SYSTEM_FLAGS + 0x77)
+#define FLAG_SHOWN_BOX_WAS_FULL_MESSAGE (SYSTEM_FLAGS + 0x77)
#define FLAG_ARRIVED_ON_FARAWAY_ISLAND (SYSTEM_FLAGS + 0x78)
#define FLAG_ARRIVED_AT_MARINE_CAVE_EMERGE_SPOT (SYSTEM_FLAGS + 0x79)
@@ -1481,77 +1572,82 @@
#define FLAG_UNUSED_0x91F (SYSTEM_FLAGS + 0xBF) // Unused Flag
// Daily Flags
-#define FLAG_DAILY_0x920 (SYSTEM_FLAGS + 0xC0)
-#define FLAG_DAILY_CONTEST_LOBBY_RECEIVED_BERRY (SYSTEM_FLAGS + 0xC1)
-#define FLAG_DAILY_SECRET_BASE (SYSTEM_FLAGS + 0xC2)
-#define FLAG_DAILY_0x923 (SYSTEM_FLAGS + 0xC3)
-#define FLAG_DAILY_0x924 (SYSTEM_FLAGS + 0xC4)
-#define FLAG_DAILY_0x925 (SYSTEM_FLAGS + 0xC5)
-#define FLAG_DAILY_0x926 (SYSTEM_FLAGS + 0xC6)
-#define FLAG_DAILY_0x927 (SYSTEM_FLAGS + 0xC7)
-#define FLAG_DAILY_0x928 (SYSTEM_FLAGS + 0xC8)
-#define FLAG_DAILY_0x929 (SYSTEM_FLAGS + 0xC9)
-#define FLAG_DAILY_PICKED_LOTO_TICKET (SYSTEM_FLAGS + 0xCA)
-#define FLAG_DAILY_ROUTE_114_RECEIVED_BERRY (SYSTEM_FLAGS + 0xCB)
-#define FLAG_DAILY_ROUTE_111_RECEIVED_BERRY (SYSTEM_FLAGS + 0xCC)
-#define FLAG_DAILY_BERRY_MASTER_RECEIVED_BERRY (SYSTEM_FLAGS + 0xCD)
-#define FLAG_DAILY_ROUTE_120_RECEIVED_BERRY (SYSTEM_FLAGS + 0xCE)
-#define FLAG_DAILY_LILYCOVE_RECEIVED_BERRY (SYSTEM_FLAGS + 0xCF)
-#define FLAG_DAILY_FLOWER_SHOP_RECEIVED_BERRY (SYSTEM_FLAGS + 0xD0)
-#define FLAG_DAILY_BERRY_MASTERS_WIFE (SYSTEM_FLAGS + 0xD1)
-#define FLAG_DAILY_SOOTOPOLIS_RECEIVED_BERRY (SYSTEM_FLAGS + 0xD2)
-#define FLAG_DAILY_0x933 (SYSTEM_FLAGS + 0xD3)
-#define FLAG_DAILY_APPRENTICE_LEAVES (SYSTEM_FLAGS + 0xD4)
-#define FLAG_0x935 (SYSTEM_FLAGS + 0xD5)
-#define FLAG_0x936 (SYSTEM_FLAGS + 0xD6)
-#define FLAG_0x937 (SYSTEM_FLAGS + 0xD7)
-#define FLAG_0x938 (SYSTEM_FLAGS + 0xD8)
-#define FLAG_0x939 (SYSTEM_FLAGS + 0xD9)
-#define FLAG_0x93A (SYSTEM_FLAGS + 0xDA)
-#define FLAG_0x93B (SYSTEM_FLAGS + 0xDB)
-#define FLAG_0x93C (SYSTEM_FLAGS + 0xDC)
-#define FLAG_0x93D (SYSTEM_FLAGS + 0xDD)
-#define FLAG_0x93E (SYSTEM_FLAGS + 0xDE)
-#define FLAG_0x93F (SYSTEM_FLAGS + 0xDF)
-#define FLAG_0x940 (SYSTEM_FLAGS + 0xE0)
-#define FLAG_0x941 (SYSTEM_FLAGS + 0xE1)
-#define FLAG_0x942 (SYSTEM_FLAGS + 0xE2)
-#define FLAG_0x943 (SYSTEM_FLAGS + 0xE3)
-#define FLAG_0x944 (SYSTEM_FLAGS + 0xE4)
-#define FLAG_0x945 (SYSTEM_FLAGS + 0xE5)
-#define FLAG_0x946 (SYSTEM_FLAGS + 0xE6)
-#define FLAG_0x947 (SYSTEM_FLAGS + 0xE7)
-#define FLAG_0x948 (SYSTEM_FLAGS + 0xE8)
-#define FLAG_0x949 (SYSTEM_FLAGS + 0xE9)
-#define FLAG_0x94A (SYSTEM_FLAGS + 0xEA)
-#define FLAG_0x94B (SYSTEM_FLAGS + 0xEB)
-#define FLAG_0x94C (SYSTEM_FLAGS + 0xEC)
-#define FLAG_0x94D (SYSTEM_FLAGS + 0xED)
-#define FLAG_0x94E (SYSTEM_FLAGS + 0xEE)
-#define FLAG_0x94F (SYSTEM_FLAGS + 0xEF)
-#define FLAG_0x950 (SYSTEM_FLAGS + 0xF0)
-#define FLAG_0x951 (SYSTEM_FLAGS + 0xF1)
-#define FLAG_0x952 (SYSTEM_FLAGS + 0xF2)
-#define FLAG_0x953 (SYSTEM_FLAGS + 0xF3)
-#define FLAG_0x954 (SYSTEM_FLAGS + 0xF4)
-#define FLAG_0x955 (SYSTEM_FLAGS + 0xF5)
-#define FLAG_0x956 (SYSTEM_FLAGS + 0xF6)
-#define FLAG_0x957 (SYSTEM_FLAGS + 0xF7)
-#define FLAG_0x958 (SYSTEM_FLAGS + 0xF8)
-#define FLAG_0x959 (SYSTEM_FLAGS + 0xF9)
-#define FLAG_0x95A (SYSTEM_FLAGS + 0xFA)
-#define FLAG_0x95B (SYSTEM_FLAGS + 0xFB)
-#define FLAG_0x95C (SYSTEM_FLAGS + 0xFC)
-#define FLAG_0x95D (SYSTEM_FLAGS + 0xFD)
-#define FLAG_0x95E (SYSTEM_FLAGS + 0xFE)
-#define FLAG_0x95F (SYSTEM_FLAGS + 0xFF)
-
-// Special Flags (Unknown)
-#define SPECIAL_FLAGS_START 0x4000
-#define FLAG_HIDE_MAP_NAME_POPUP 0x4000
-#define FLAG_SPECIAL_FLAG_0x4001 0x4001
-#define FLAG_SPECIAL_FLAG_0x4002 0x4002
-#define FLAG_SPECIAL_FLAG_0x4003 0x4003
-#define FLAG_SPECIAL_FLAG_0x4004 0x4004
+#define DAILY_FLAGS_START 0x920
+#define FLAG_UNUSED_0x920 (DAILY_FLAGS_START + 0x0) // Unused Flag
+#define FLAG_DAILY_CONTEST_LOBBY_RECEIVED_BERRY (DAILY_FLAGS_START + 0x1)
+#define FLAG_DAILY_SECRET_BASE (DAILY_FLAGS_START + 0x2)
+#define FLAG_UNUSED_0x923 (DAILY_FLAGS_START + 0x3) // Unused Flag
+#define FLAG_UNUSED_0x924 (DAILY_FLAGS_START + 0x4) // Unused Flag
+#define FLAG_UNUSED_0x925 (DAILY_FLAGS_START + 0x5) // Unused Flag
+#define FLAG_UNUSED_0x926 (DAILY_FLAGS_START + 0x6) // Unused Flag
+#define FLAG_UNUSED_0x927 (DAILY_FLAGS_START + 0x7) // Unused Flag
+#define FLAG_UNUSED_0x928 (DAILY_FLAGS_START + 0x8) // Unused Flag
+#define FLAG_UNUSED_0x929 (DAILY_FLAGS_START + 0x9) // Unused Flag
+#define FLAG_DAILY_PICKED_LOTO_TICKET (DAILY_FLAGS_START + 0xA)
+#define FLAG_DAILY_ROUTE_114_RECEIVED_BERRY (DAILY_FLAGS_START + 0xB)
+#define FLAG_DAILY_ROUTE_111_RECEIVED_BERRY (DAILY_FLAGS_START + 0xC)
+#define FLAG_DAILY_BERRY_MASTER_RECEIVED_BERRY (DAILY_FLAGS_START + 0xD)
+#define FLAG_DAILY_ROUTE_120_RECEIVED_BERRY (DAILY_FLAGS_START + 0xE)
+#define FLAG_DAILY_LILYCOVE_RECEIVED_BERRY (DAILY_FLAGS_START + 0xF)
+#define FLAG_DAILY_FLOWER_SHOP_RECEIVED_BERRY (DAILY_FLAGS_START + 0x10)
+#define FLAG_DAILY_BERRY_MASTERS_WIFE (DAILY_FLAGS_START + 0x11)
+#define FLAG_DAILY_SOOTOPOLIS_RECEIVED_BERRY (DAILY_FLAGS_START + 0x12)
+#define FLAG_UNUSED_0x933 (DAILY_FLAGS_START + 0x13) // Unused Flag
+#define FLAG_DAILY_APPRENTICE_LEAVES (DAILY_FLAGS_START + 0x14)
+
+#define FLAG_UNUSED_0x935 (DAILY_FLAGS_START + 0x15) // Unused Flag
+#define FLAG_UNUSED_0x936 (DAILY_FLAGS_START + 0x16) // Unused Flag
+#define FLAG_UNUSED_0x937 (DAILY_FLAGS_START + 0x17) // Unused Flag
+#define FLAG_UNUSED_0x938 (DAILY_FLAGS_START + 0x18) // Unused Flag
+#define FLAG_UNUSED_0x939 (DAILY_FLAGS_START + 0x19) // Unused Flag
+#define FLAG_UNUSED_0x93A (DAILY_FLAGS_START + 0x1A) // Unused Flag
+#define FLAG_UNUSED_0x93B (DAILY_FLAGS_START + 0x1B) // Unused Flag
+#define FLAG_UNUSED_0x93C (DAILY_FLAGS_START + 0x1C) // Unused Flag
+#define FLAG_UNUSED_0x93D (DAILY_FLAGS_START + 0x1D) // Unused Flag
+#define FLAG_UNUSED_0x93E (DAILY_FLAGS_START + 0x1E) // Unused Flag
+#define FLAG_UNUSED_0x93F (DAILY_FLAGS_START + 0x1F) // Unused Flag
+#define FLAG_UNUSED_0x940 (DAILY_FLAGS_START + 0x20) // Unused Flag
+#define FLAG_UNUSED_0x941 (DAILY_FLAGS_START + 0x21) // Unused Flag
+#define FLAG_UNUSED_0x942 (DAILY_FLAGS_START + 0x22) // Unused Flag
+#define FLAG_UNUSED_0x943 (DAILY_FLAGS_START + 0x23) // Unused Flag
+#define FLAG_UNUSED_0x944 (DAILY_FLAGS_START + 0x24) // Unused Flag
+#define FLAG_UNUSED_0x945 (DAILY_FLAGS_START + 0x25) // Unused Flag
+#define FLAG_UNUSED_0x946 (DAILY_FLAGS_START + 0x26) // Unused Flag
+#define FLAG_UNUSED_0x947 (DAILY_FLAGS_START + 0x27) // Unused Flag
+#define FLAG_UNUSED_0x948 (DAILY_FLAGS_START + 0x28) // Unused Flag
+#define FLAG_UNUSED_0x949 (DAILY_FLAGS_START + 0x29) // Unused Flag
+#define FLAG_UNUSED_0x94A (DAILY_FLAGS_START + 0x2A) // Unused Flag
+#define FLAG_UNUSED_0x94B (DAILY_FLAGS_START + 0x2B) // Unused Flag
+#define FLAG_UNUSED_0x94C (DAILY_FLAGS_START + 0x2C) // Unused Flag
+#define FLAG_UNUSED_0x94D (DAILY_FLAGS_START + 0x2D) // Unused Flag
+#define FLAG_UNUSED_0x94E (DAILY_FLAGS_START + 0x2E) // Unused Flag
+#define FLAG_UNUSED_0x94F (DAILY_FLAGS_START + 0x2F) // Unused Flag
+#define FLAG_UNUSED_0x950 (DAILY_FLAGS_START + 0x30) // Unused Flag
+#define FLAG_UNUSED_0x951 (DAILY_FLAGS_START + 0x31) // Unused Flag
+#define FLAG_UNUSED_0x952 (DAILY_FLAGS_START + 0x32) // Unused Flag
+#define FLAG_UNUSED_0x953 (DAILY_FLAGS_START + 0x33) // Unused Flag
+#define FLAG_UNUSED_0x954 (DAILY_FLAGS_START + 0x34) // Unused Flag
+#define FLAG_UNUSED_0x955 (DAILY_FLAGS_START + 0x35) // Unused Flag
+#define FLAG_UNUSED_0x956 (DAILY_FLAGS_START + 0x36) // Unused Flag
+#define FLAG_UNUSED_0x957 (DAILY_FLAGS_START + 0x37) // Unused Flag
+#define FLAG_UNUSED_0x958 (DAILY_FLAGS_START + 0x38) // Unused Flag
+#define FLAG_UNUSED_0x959 (DAILY_FLAGS_START + 0x39) // Unused Flag
+#define FLAG_UNUSED_0x95A (DAILY_FLAGS_START + 0x3A) // Unused Flag
+#define FLAG_UNUSED_0x95B (DAILY_FLAGS_START + 0x3B) // Unused Flag
+#define FLAG_UNUSED_0x95C (DAILY_FLAGS_START + 0x3C) // Unused Flag
+#define FLAG_UNUSED_0x95D (DAILY_FLAGS_START + 0x3D) // Unused Flag
+#define FLAG_UNUSED_0x95E (DAILY_FLAGS_START + 0x3E) // Unused Flag
+#define FLAG_UNUSED_0x95F (DAILY_FLAGS_START + 0x3F) // Unused Flag
+#define DAILY_FLAGS_END FLAG_UNUSED_0x95F
+
+// Special Flags (Stored in EWRAM (gSpecialFlags), not in the SaveBlock)
+#define SPECIAL_FLAGS_START 0x4000
+#define FLAG_HIDE_MAP_NAME_POPUP (SPECIAL_FLAGS_START + 0x0)
+#define FLAG_DONT_TRANSITION_MUSIC (SPECIAL_FLAGS_START + 0x1)
+#define FLAG_ENABLE_MULTI_CORRIDOR_DOOR (SPECIAL_FLAGS_START + 0x2)
+#define FLAG_SPECIAL_FLAG_UNUSED_0x4003 (SPECIAL_FLAGS_START + 0x3) // Unused Flag
+#define FLAG_STORING_ITEMS_IN_PYRAMID_BAG (SPECIAL_FLAGS_START + 0x4)
+// FLAG_SPECIAL_FLAG_0x4005 - 0x407F also exist and are unused
+#define SPECIAL_FLAGS_END (SPECIAL_FLAGS_START + 0x7F)
#endif // GUARD_CONSTANTS_FLAGS_H
diff --git a/include/constants/frontier_util.h b/include/constants/frontier_util.h
new file mode 100644
index 000000000..a310dbb2d
--- /dev/null
+++ b/include/constants/frontier_util.h
@@ -0,0 +1,75 @@
+#ifndef GUARD_CONSTANTS_FRONTIER_UTIL_H
+#define GUARD_CONSTANTS_FRONTIER_UTIL_H
+
+#define FRONTIER_BEFORE_TEXT 0
+#define FRONTIER_PLAYER_LOST_TEXT 1
+#define FRONTIER_PLAYER_WON_TEXT 2
+
+// return values for GetFrontierBrainStatus
+#define FRONTIER_BRAIN_NOT_READY 0
+#define FRONTIER_BRAIN_SILVER 1
+#define FRONTIER_BRAIN_GOLD 2
+#define FRONTIER_BRAIN_STREAK 3 // for encountering the brain after getting both symbols
+#define FRONTIER_BRAIN_STREAK_LONG 4 //
+
+#define FRONTIER_UTIL_FUNC_GET_STATUS 0
+#define FRONTIER_UTIL_FUNC_GET_DATA 1
+#define FRONTIER_UTIL_FUNC_SET_DATA 2
+#define FRONTIER_UTIL_FUNC_SET_PARTY_ORDER 3
+#define FRONTIER_UTIL_FUNC_SOFT_RESET 4
+#define FRONTIER_UTIL_FUNC_SET_TRAINERS 5
+#define FRONTIER_UTIL_FUNC_SAVE_PARTY 6
+#define FRONTIER_UTIL_FUNC_RESULTS_WINDOW 7
+#define FRONTIER_UTIL_FUNC_CHECK_AIR_TV_SHOW 8
+#define FRONTIER_UTIL_FUNC_GET_BRAIN_STATUS 9
+#define FRONTIER_UTIL_FUNC_IS_BRAIN 10
+#define FRONTIER_UTIL_FUNC_GIVE_BATTLE_POINTS 11
+#define FRONTIER_UTIL_FUNC_GET_FACILITY_SYMBOLS 12
+#define FRONTIER_UTIL_FUNC_GIVE_FACILITY_SYMBOL 13
+#define FRONTIER_UTIL_FUNC_CHECK_BATTLE_TYPE 14
+#define FRONTIER_UTIL_FUNC_CHECK_INELIGIBLE 15
+#define FRONTIER_UTIL_FUNC_CHECK_VISIT_TRAINER 16
+#define FRONTIER_UTIL_FUNC_INCREMENT_STREAK 17
+#define FRONTIER_UTIL_FUNC_RESTORE_HELD_ITEMS 18
+#define FRONTIER_UTIL_FUNC_SAVE_BATTLE 19
+#define FRONTIER_UTIL_FUNC_BUFFER_TRAINER_NAME 20
+#define FRONTIER_UTIL_FUNC_RESET_SKETCH_MOVES 21
+#define FRONTIER_UTIL_FUNC_SET_BRAIN_OBJECT 22
+
+#define FRONTIER_DATA_CHALLENGE_STATUS 0
+#define FRONTIER_DATA_LVL_MODE 1
+#define FRONTIER_DATA_BATTLE_NUM 2
+#define FRONTIER_DATA_PAUSED 3
+#define FRONTIER_DATA_SELECTED_MON_ORDER 4
+#define FRONTIER_DATA_BATTLE_OUTCOME 5
+#define FRONTIER_DATA_RECORD_DISABLED 6
+#define FRONTIER_DATA_HEARD_BRAIN_SPEECH 7
+
+#define STREAK_TOWER_SINGLES_50 (1 << 0)
+#define STREAK_TOWER_SINGLES_OPEN (1 << 1)
+#define STREAK_DOME_SINGLES_50 (1 << 2)
+#define STREAK_DOME_SINGLES_OPEN (1 << 3)
+#define STREAK_PALACE_SINGLES_50 (1 << 4)
+#define STREAK_PALACE_SINGLES_OPEN (1 << 5)
+#define STREAK_ARENA_50 (1 << 6)
+#define STREAK_ARENA_OPEN (1 << 7)
+#define STREAK_FACTORY_SINGLES_50 (1 << 8)
+#define STREAK_FACTORY_SINGLES_OPEN (1 << 9)
+#define STREAK_PIKE_50 (1 << 10)
+#define STREAK_PIKE_OPEN (1 << 11)
+#define STREAK_PYRAMID_50 (1 << 12)
+#define STREAK_PYRAMID_OPEN (1 << 13)
+#define STREAK_TOWER_DOUBLES_50 (1 << 14)
+#define STREAK_TOWER_DOUBLES_OPEN (1 << 15)
+#define STREAK_TOWER_MULTIS_50 (1 << 16)
+#define STREAK_TOWER_MULTIS_OPEN (1 << 17)
+#define STREAK_TOWER_LINK_MULTIS_50 (1 << 18)
+#define STREAK_TOWER_LINK_MULTIS_OPEN (1 << 19)
+#define STREAK_DOME_DOUBLES_50 (1 << 20)
+#define STREAK_DOME_DOUBLES_OPEN (1 << 21)
+#define STREAK_PALACE_DOUBLES_50 (1 << 22)
+#define STREAK_PALACE_DOUBLES_OPEN (1 << 23)
+#define STREAK_FACTORY_DOUBLES_50 (1 << 24)
+#define STREAK_FACTORY_DOUBLES_OPEN (1 << 25)
+
+#endif // GUARD_CONSTANTS_FRONTIER_UTIL_H
diff --git a/include/constants/global.h b/include/constants/global.h
index a862ecad2..d57307d9c 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -18,12 +18,13 @@
#define VERSION_GAMECUBE 15
#define LANGUAGE_JAPANESE 1
-#define LANGUAGE_ENGLISH 2
-#define LANGUAGE_FRENCH 3
-#define LANGUAGE_ITALIAN 4
-#define LANGUAGE_GERMAN 5
-#define LANGUAGE_KOREAN 6 // 6 goes unused but the theory is it was meant to be Korean
-#define LANGUAGE_SPANISH 7
+#define LANGUAGE_ENGLISH 2
+#define LANGUAGE_FRENCH 3
+#define LANGUAGE_ITALIAN 4
+#define LANGUAGE_GERMAN 5
+#define LANGUAGE_KOREAN 6 // 6 goes unused but the theory is it was meant to be Korean
+#define LANGUAGE_SPANISH 7
+#define NUM_LANGUAGES 7
#define GAME_VERSION (VERSION_EMERALD)
#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
@@ -46,21 +47,42 @@
#define BAG_TMHM_COUNT 64
#define BAG_BERRIES_COUNT 46
#define EVENT_OBJECT_TEMPLATES_COUNT 64
+#define DECOR_MAX_SECRET_BASE 16
+#define DECOR_MAX_PLAYERS_HOUSE 12
+#define APPRENTICE_COUNT 4
+#define APPRENTICE_MAX_QUESTIONS 9
+#define MAX_REMATCH_ENTRIES 100 // only REMATCH_TABLE_ENTRIES (78) are used
#define PYRAMID_BAG_ITEMS_COUNT 10
#define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode.
#define TRAINER_ID_LENGTH 4
+#define MAX_MON_MOVES 4
+#define NUM_STATS 6
+
+// party sizes
+#define PARTY_SIZE 6
+#define MULTI_PARTY_SIZE PARTY_SIZE / 2
+#define FRONTIER_PARTY_SIZE 3
+#define FRONTIER_DOUBLES_PARTY_SIZE 4
+#define FRONTIER_MULTI_PARTY_SIZE 2
+#define MAX_FRONTIER_PARTY_SIZE FRONTIER_DOUBLES_PARTY_SIZE
// string lengths
#define ITEM_NAME_LENGTH 14
#define POKEMON_NAME_LENGTH 10
#define PLAYER_NAME_LENGTH 7
#define MAIL_WORDS_COUNT 9
+#define EASY_CHAT_BATTLE_WORDS_COUNT 6
#define MOVE_NAME_LENGTH 12
#define MALE 0
#define FEMALE 1
+#define GENDER_COUNT 2
+
+#define BARD_SONG_LENGTH 6
+#define NUM_STORYTELLER_TALES 4
+#define NUM_TRADER_ITEMS 4
#define OPTIONS_BUTTON_MODE_NORMAL 0
#define OPTIONS_BUTTON_MODE_LR 1
diff --git a/include/constants/item.h b/include/constants/item.h
new file mode 100644
index 000000000..a5c34418d
--- /dev/null
+++ b/include/constants/item.h
@@ -0,0 +1,20 @@
+#ifndef GUARD_ITEM_CONSTANTS_H
+#define GUARD_ITEM_CONSTANTS_H
+
+// These constants are used in gItems
+#define POCKET_NONE 0
+#define POCKET_ITEMS 1
+#define POCKET_POKE_BALLS 2
+#define POCKET_TM_HM 3
+#define POCKET_BERRIES 4
+#define POCKET_KEY_ITEMS 5
+
+#define ITEMS_POCKET 0
+#define BALLS_POCKET 1
+#define TMHM_POCKET 2
+#define BERRIES_POCKET 3
+#define KEYITEMS_POCKET 4
+#define POCKETS_COUNT 5
+
+
+#endif // GUARD_ITEM_CONSTANTS_H
diff --git a/include/constants/item_effects.h b/include/constants/item_effects.h
index a5bb77035..49fcedc61 100644
--- a/include/constants/item_effects.h
+++ b/include/constants/item_effects.h
@@ -3,7 +3,7 @@
// field 0 masks
#define ITEM0_X_ATTACK 0x0F
-#define ITEM0_HIGH_CRIT 0x30 // For Dire Hit, works the same way as move Focus Energy.
+#define ITEM0_DIRE_HIT 0x30 // Works the same way as the move Focus Energy.
#define ITEM0_SACRED_ASH 0x40
#define ITEM0_INFATUATION 0x80
@@ -23,7 +23,7 @@
#define ITEM3_POISON 0x10
#define ITEM3_SLEEP 0x20
#define ITEM3_LEVEL_UP 0x40
-#define ITEM3_MIST 0x80 // For Guard Specs, works the same way as move Mist.
+#define ITEM3_GUARD_SPEC 0x80 // Works the same way as the move Mist.
#define ITEM3_STATUS_ALL (ITEM3_CONFUSION | ITEM3_PARALYSIS | ITEM3_FREEZE | ITEM3_BURN | ITEM3_POISON | ITEM3_SLEEP)
diff --git a/include/constants/items.h b/include/constants/items.h
index 3a894f8ff..db3474a72 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -465,8 +465,27 @@
#define ITEMS_COUNT 377
#define ITEM_FIELD_ARROW ITEMS_COUNT
-#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
-#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
+#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
+#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
+
+// Range of berries given out by various NPCS
+#define FIRST_BERRY_MASTER_BERRY ITEM_POMEG_BERRY
+#define LAST_BERRY_MASTER_BERRY ITEM_NOMEL_BERRY
+#define FIRST_BERRY_MASTER_WIFE_BERRY ITEM_CHERI_BERRY
+#define LAST_BERRY_MASTER_WIFE_BERRY ITEM_SITRUS_BERRY
+#define FIRST_KIRI_BERRY ITEM_POMEG_BERRY
+#define LAST_KIRI_BERRY ITEM_NOMEL_BERRY
+#define FIRST_ROUTE_114_MAN_BERRY ITEM_RAZZ_BERRY
+#define LAST_ROUTE_114_MAN_BERRY ITEM_PINAP_BERRY
+
+#define NUM_BERRY_MASTER_BERRIES LAST_BERRY_MASTER_BERRY - FIRST_BERRY_MASTER_BERRY + 1
+#define NUM_BERRY_MASTER_BERRIES_SKIPPED FIRST_BERRY_MASTER_BERRY - FIRST_BERRY_INDEX
+#define NUM_BERRY_MASTER_WIFE_BERRIES LAST_BERRY_MASTER_WIFE_BERRY - FIRST_BERRY_MASTER_WIFE_BERRY + 1
+#define NUM_KIRI_BERRIES LAST_KIRI_BERRY - FIRST_KIRI_BERRY + 1
+#define NUM_KIRI_BERRIES_SKIPPED FIRST_KIRI_BERRY - FIRST_BERRY_INDEX
+#define NUM_ROUTE_114_MAN_BERRIES LAST_ROUTE_114_MAN_BERRY - FIRST_ROUTE_114_MAN_BERRY + 1
+#define NUM_ROUTE_114_MAN_BERRIES_SKIPPED FIRST_ROUTE_114_MAN_BERRY - FIRST_BERRY_INDEX
+
#define ITEM_TO_BERRY(itemId)(((itemId - FIRST_BERRY_INDEX) + 1))
#define NUM_TECHNICAL_MACHINES 50
diff --git a/include/constants/layouts.h b/include/constants/layouts.h
index d4819c46a..3e876f499 100755
--- a/include/constants/layouts.h
+++ b/include/constants/layouts.h
@@ -221,22 +221,22 @@
#define LAYOUT_SECRET_BASE_YELLOW_CAVE4 218
#define LAYOUT_SECRET_BASE_TREE4 219
#define LAYOUT_SECRET_BASE_SHRUB4 220
-#define LAYOUT_SINGLE_BATTLE_COLOSSEUM 221
+#define LAYOUT_BATTLE_COLOSSEUM_2P 221
#define LAYOUT_TRADE_CENTER 222
#define LAYOUT_RECORD_CORNER 223
-#define LAYOUT_DOUBLE_BATTLE_COLOSSEUM 224
-#define LAYOUT_LINK_CONTEST_ROOM1 225
+#define LAYOUT_BATTLE_COLOSSEUM_4P 224
+#define LAYOUT_CONTEST_HALL 225
#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_29 226
#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_30 227
#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_31 228
#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_32 229
#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_33 230
#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_34 231
-#define LAYOUT_LINK_CONTEST_ROOM2 232
-#define LAYOUT_LINK_CONTEST_ROOM3 233
-#define LAYOUT_LINK_CONTEST_ROOM4 234
-#define LAYOUT_LINK_CONTEST_ROOM5 235
-#define LAYOUT_LINK_CONTEST_ROOM6 236
+#define LAYOUT_CONTEST_HALL_BEAUTY 232
+#define LAYOUT_CONTEST_HALL_TOUGH 233
+#define LAYOUT_CONTEST_HALL_COOL 234
+#define LAYOUT_CONTEST_HALL_SMART 235
+#define LAYOUT_CONTEST_HALL_CUTE 236
#define LAYOUT_INSIDE_OF_TRUCK 237
#define LAYOUT_SAFARI_ZONE_NORTHWEST 238
#define LAYOUT_SAFARI_ZONE_NORTH 239
@@ -352,16 +352,16 @@
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY 349
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR 350
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM 351
-#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM1 352
-#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM2 353
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL 352
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL 353
#define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY 354
#define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR 355
#define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM 356
#define LAYOUT_SOOTOPOLIS_CITY_LEGENDS_BATTLE 357
-#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3 358
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS 358
#define LAYOUT_UNKNOWN_084693AC 359
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY 360
-#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE 361
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR 361
#define LAYOUT_BATTLE_PYRAMID_SQUARE01 362
#define LAYOUT_BATTLE_PYRAMID_SQUARE02 363
#define LAYOUT_BATTLE_PYRAMID_SQUARE03 364
@@ -390,15 +390,15 @@
#define LAYOUT_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM 387
#define LAYOUT_MIRAGE_TOWER_4F 388
#define LAYOUT_DESERT_UNDERPASS 389
-#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM 390
-#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 391
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM 390
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR 391
#define LAYOUT_ROUTE111_NO_MIRAGE_TOWER 392
#define LAYOUT_UNION_ROOM 393
#define LAYOUT_SAFARI_ZONE_NORTHEAST 394
#define LAYOUT_SAFARI_ZONE_SOUTHEAST 395
#define LAYOUT_BATTLE_FRONTIER_RANKING_HALL 396
#define LAYOUT_BATTLE_FRONTIER_LOUNGE1 397
-#define LAYOUT_BATTLE_FRONTIER_BATTLE_POINT_EXCHANGE_SERVICE_CORNER 398
+#define LAYOUT_BATTLE_FRONTIER_EXCHANGE_SERVICE_CORNER 398
#define LAYOUT_BATTLE_FRONTIER_RECEPTION_GATE 399
#define LAYOUT_ARTISAN_CAVE_B1F 400
#define LAYOUT_ARTISAN_CAVE_1F 401
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
index 6a3276b44..17fe7ab53 100755
--- a/include/constants/map_groups.h
+++ b/include/constants/map_groups.h
@@ -98,8 +98,8 @@
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8))
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8))
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8))
-#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_COZMOS_HOUSE (6 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE (7 | (5 << 8))
// Map Group 6
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8))
@@ -136,12 +136,12 @@
#define MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY (2 | (9 << 8))
#define MAP_SLATEPORT_CITY_BATTLE_TENT_CORRIDOR (3 | (9 << 8))
#define MAP_SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM (4 | (9 << 8))
-#define MAP_SLATEPORT_CITY_HOUSE1 (5 | (9 << 8))
+#define MAP_SLATEPORT_CITY_NAME_RATERS_HOUSE (5 | (9 << 8))
#define MAP_SLATEPORT_CITY_POKEMON_FAN_CLUB (6 | (9 << 8))
#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F (7 | (9 << 8))
#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F (8 | (9 << 8))
#define MAP_SLATEPORT_CITY_HARBOR (9 | (9 << 8))
-#define MAP_SLATEPORT_CITY_HOUSE2 (10 | (9 << 8))
+#define MAP_SLATEPORT_CITY_HOUSE (10 | (9 << 8))
#define MAP_SLATEPORT_CITY_POKEMON_CENTER_1F (11 | (9 << 8))
#define MAP_SLATEPORT_CITY_POKEMON_CENTER_2F (12 | (9 << 8))
#define MAP_SLATEPORT_CITY_MART (13 | (9 << 8))
@@ -422,22 +422,22 @@
#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8))
#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8))
#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8))
-#define MAP_SINGLE_BATTLE_COLOSSEUM (24 | (25 << 8))
+#define MAP_BATTLE_COLOSSEUM_2P (24 | (25 << 8))
#define MAP_TRADE_CENTER (25 | (25 << 8))
#define MAP_RECORD_CORNER (26 | (25 << 8))
-#define MAP_DOUBLE_BATTLE_COLOSSEUM (27 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM1 (28 | (25 << 8))
+#define MAP_BATTLE_COLOSSEUM_4P (27 | (25 << 8))
+#define MAP_CONTEST_HALL (28 | (25 << 8))
#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_29 (29 | (25 << 8))
#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_30 (30 | (25 << 8))
#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_31 (31 | (25 << 8))
#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_32 (32 | (25 << 8))
#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_33 (33 | (25 << 8))
#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_34 (34 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM2 (35 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM3 (36 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM4 (37 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM5 (38 | (25 << 8))
-#define MAP_LINK_CONTEST_ROOM6 (39 | (25 << 8))
+#define MAP_CONTEST_HALL_BEAUTY (35 | (25 << 8))
+#define MAP_CONTEST_HALL_TOUGH (36 | (25 << 8))
+#define MAP_CONTEST_HALL_COOL (37 | (25 << 8))
+#define MAP_CONTEST_HALL_SMART (38 | (25 << 8))
+#define MAP_CONTEST_HALL_CUTE (39 | (25 << 8))
#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8))
#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8))
#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8))
@@ -461,95 +461,95 @@
#define MAP_UNION_ROOM (60 | (25 << 8))
// Map Group 26
-#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8))
-#define MAP_SAFARI_ZONE_NORTH (1 | (26 << 8))
-#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8))
-#define MAP_SAFARI_ZONE_SOUTH (3 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8))
-#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8))
-#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8))
-#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8))
-#define MAP_SAFARI_ZONE_NORTHEAST (12 | (26 << 8))
-#define MAP_SAFARI_ZONE_SOUTHEAST (13 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (15 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 (16 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2 (17 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE (26 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM1 (37 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM2 (38 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3 (39 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE1 (41 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_BATTLE_POINT_EXCHANGE_SERVICE_CORNER (42 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE2 (43 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE3 (44 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE4 (45 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE5 (47 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE6 (48 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE7 (49 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE8 (51 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_LOUNGE9 (52 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8))
-#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8))
-#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8))
-#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8))
-#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8))
-#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8))
-#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8))
-#define MAP_TRAINER_HILL_1F (61 | (26 << 8))
-#define MAP_TRAINER_HILL_2F (62 | (26 << 8))
-#define MAP_TRAINER_HILL_3F (63 | (26 << 8))
-#define MAP_TRAINER_HILL_4F (64 | (26 << 8))
-#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8))
-#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8))
-#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8))
-#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8))
-#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8))
-#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8))
-#define MAP_NAVEL_ROCK_UP1 (71 | (26 << 8))
-#define MAP_NAVEL_ROCK_UP2 (72 | (26 << 8))
-#define MAP_NAVEL_ROCK_UP3 (73 | (26 << 8))
-#define MAP_NAVEL_ROCK_UP4 (74 | (26 << 8))
-#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN01 (76 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN02 (77 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN03 (78 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN04 (79 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN05 (80 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN06 (81 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN07 (82 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN08 (83 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN09 (84 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN10 (85 | (26 << 8))
-#define MAP_NAVEL_ROCK_DOWN11 (86 | (26 << 8))
-#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8))
-#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8))
+#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8))
+#define MAP_SAFARI_ZONE_NORTH (1 | (26 << 8))
+#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8))
+#define MAP_SAFARI_ZONE_SOUTH (3 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8))
+#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8))
+#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8))
+#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8))
+#define MAP_SAFARI_ZONE_NORTHEAST (12 | (26 << 8))
+#define MAP_SAFARI_ZONE_SOUTHEAST (13 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM (15 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR (16 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (17 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR (26 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL (37 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL (38 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS (39 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE1 (41 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_EXCHANGE_SERVICE_CORNER (42 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE2 (43 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE3 (44 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE4 (45 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE5 (47 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE6 (48 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE7 (49 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE8 (51 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE9 (52 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8))
+#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8))
+#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8))
+#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8))
+#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8))
+#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8))
+#define MAP_TRAINER_HILL_1F (61 | (26 << 8))
+#define MAP_TRAINER_HILL_2F (62 | (26 << 8))
+#define MAP_TRAINER_HILL_3F (63 | (26 << 8))
+#define MAP_TRAINER_HILL_4F (64 | (26 << 8))
+#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8))
+#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8))
+#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8))
+#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8))
+#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8))
+#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP1 (71 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP2 (72 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP3 (73 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP4 (74 | (26 << 8))
+#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN01 (76 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN02 (77 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN03 (78 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN04 (79 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN05 (80 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN06 (81 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN07 (82 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN08 (83 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN09 (84 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN10 (85 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN11 (86 | (26 << 8))
+#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8))
+#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8))
// Map Group 27
#define MAP_ROUTE104_PROTOTYPE (0 | (27 << 8))
diff --git a/include/constants/mauville_man.h b/include/constants/mauville_man.h
deleted file mode 100644
index b00e3a291..000000000
--- a/include/constants/mauville_man.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef GUARD_CONSTANTS_MAUVILLE_MAN_H
-#define GUARD_CONSTANTS_MAUVILLE_MAN_H
-
-#define MAUVILLE_MAN_BARD 0
-#define MAUVILLE_MAN_HIPSTER 1
-#define MAUVILLE_MAN_TRADER 2
-#define MAUVILLE_MAN_STORYTELLER 3
-#define MAUVILLE_MAN_GIDDY 4
-
-#endif // GUARD_CONSTANTS_MAUVILLE_MAN_H
diff --git a/include/constants/mauville_old_man.h b/include/constants/mauville_old_man.h
new file mode 100644
index 000000000..c1fb0bf24
--- /dev/null
+++ b/include/constants/mauville_old_man.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_CONSTANTS_MAUVILLE_OLD_MAN_H
+#define GUARD_CONSTANTS_MAUVILLE_OLD_MAN_H
+
+#define MAUVILLE_MAN_BARD 0
+#define MAUVILLE_MAN_HIPSTER 1
+#define MAUVILLE_MAN_TRADER 2
+#define MAUVILLE_MAN_STORYTELLER 3
+#define MAUVILLE_MAN_GIDDY 4
+#define MAUVILLE_MAN_UNUSED1 5
+#define MAUVILLE_MAN_UNUSED2 6
+
+#endif // GUARD_CONSTANTS_MAUVILLE_OLD_MAN_H
diff --git a/include/constants/metatile_behaviors.h b/include/constants/metatile_behaviors.h
index 44bbd9729..94cb0ffca 100755
--- a/include/constants/metatile_behaviors.h
+++ b/include/constants/metatile_behaviors.h
@@ -235,7 +235,7 @@
#define MB_CABLE_BOX_RESULTS_2 0xE7
#define MB_WIRELESS_BOX_RESULTS 0xE8
#define MB_TRAINER_HILL_TIMER 0xE9
-#define MB_UNKNOWN_CLOSED_DOOR 0xEA
+#define MB_SKY_PILLAR_CLOSED_DOOR 0xEA
#define MB_UNUSED_EB 0xEB
#define MB_UNUSED_EC 0xEC
#define MB_UNUSED_ED 0xED
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index 8fe95b464..a0ea6855b 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -2,29 +2,39 @@
#define GUARD_METATILE_LABELS_H
// gTileset_General
-#define METATILE_General_Grass 0x001
-#define METATILE_General_TallGrass 0x00D
-#define METATILE_General_LongGrass 0x015
-#define METATILE_General_TallGrass_TreeUp 0x025
-#define METATILE_General_Grass_TreeUp 0x00E
-#define METATILE_General_TallGrass_TreeLeft 0x1C6
-#define METATILE_General_TallGrass_TreeRight 0x1C7
-#define METATILE_General_Grass_TreeLeft 0x1CE
-#define METATILE_General_Grass_TreeRight 0x1CF
-#define METATILE_General_MuddySlope_Frame0 0x0E8
-#define METATILE_General_MuddySlope_Frame1 0x0E9
-#define METATILE_General_MuddySlope_Frame2 0x0EA
-#define METATILE_General_MuddySlope_Frame3 0x0EB
-#define METATILE_General_SandPit_Center 0x121
-#define METATILE_General_CaveEntrance_Top 0x09F
-#define METATILE_General_CaveEntrance_Bottom 0x0A7
-#define METATILE_General_RockWall_GrassBase 0x079
-#define METATILE_General_RockWall_RockBase 0x07C
-#define METATILE_General_RockWall_SandBase 0x091
-#define METATILE_General_CalmWater 0x170
-#define METATILE_General_RoughWater 0x14E
-#define METATILE_General_RoughDeepWater 0x14F
-#define METATILE_General_ReflectiveWater 0x0A1
+#define METATILE_General_Grass 0x001
+#define METATILE_General_TallGrass 0x00D
+#define METATILE_General_LongGrass 0x015
+#define METATILE_General_TallGrass_TreeUp 0x025
+#define METATILE_General_Grass_TreeUp 0x00E
+#define METATILE_General_TallGrass_TreeLeft 0x1C6
+#define METATILE_General_TallGrass_TreeRight 0x1C7
+#define METATILE_General_Grass_TreeLeft 0x1CE
+#define METATILE_General_Grass_TreeRight 0x1CF
+#define METATILE_General_MuddySlope_Frame0 0x0E8
+#define METATILE_General_MuddySlope_Frame1 0x0E9
+#define METATILE_General_MuddySlope_Frame2 0x0EA
+#define METATILE_General_MuddySlope_Frame3 0x0EB
+#define METATILE_General_SandPit_Center 0x121
+#define METATILE_General_CaveEntrance_Top 0x09F
+#define METATILE_General_CaveEntrance_Bottom 0x0A7
+#define METATILE_General_RockWall_GrassBase 0x079
+#define METATILE_General_RockWall_RockBase 0x07C
+#define METATILE_General_RockWall_SandBase 0x091
+#define METATILE_General_CalmWater 0x170
+#define METATILE_General_RoughWater 0x14E
+#define METATILE_General_RoughDeepWater 0x14F
+#define METATILE_General_ReflectiveWater 0x0A1
+#define METATILE_General_SecretBase_TreeLeft 0x026
+#define METATILE_General_SecretBase_TreeRight 0x027
+#define METATILE_General_SecretBase_VineLeft 0x036
+#define METATILE_General_SecretBase_VineRight 0x037
+#define METATILE_General_RedCaveIndent 0x1A0
+#define METATILE_General_RedCaveOpen 0x1A1
+#define METATILE_General_YellowCaveIndent 0x1A8
+#define METATILE_General_YellowCaveOpen 0x1A9
+#define METATILE_General_BlueCaveIndent 0x1B0
+#define METATILE_General_BlueCaveOpen 0x1B1
// gTileset_Building
#define METATILE_Building_PC_Off 0x004
@@ -68,13 +78,16 @@
#define METATILE_PetalburgGym_SlidingDoor_Frame3 0x21B
#define METATILE_PetalburgGym_SlidingDoor_Frame4 0x21C
-// gTileset_MossdeepGym
-#define METATILE_MossdeepGym_Obelisk_Top 0x204
-#define METATILE_MossdeepGym_Obelisk_Base 0x20C
-#define METATILE_MossdeepGym_Wall_LeftCorner 0x20D
-#define METATILE_MossdeepGym_OuterWall_RightCorner 0x205
-#define METATILE_MossdeepGym_Empty0 0x238
-#define METATILE_MossdeepGym_Empty1 0x239
+// gTileset_MossdeepGym from R/S
+#define METATILE_RS_MossdeepGym_RedArrow_Right 0x204
+#define METATILE_RS_MossdeepGym_RedArrow_Left 0x20C
+#define METATILE_RS_MossdeepGym_RedArrow_Up 0x20D
+#define METATILE_RS_MossdeepGym_RedArrow_Down 0x205
+#define METATILE_RS_MossdeepGym_Switch_Up 0x238
+#define METATILE_RS_MossdeepGym_Switch_Down 0x239
+
+// gTileset_MossdeepGym from Emerald
+#define METATILE_MossdeepGym_YellowArrow_Right 0x250
// gTileset_BrendansMaysHouse
#define METATILE_BrendansMaysHouse_BrendanPC_Off 0x25A
@@ -140,14 +153,16 @@
#define METATILE_Fortree_BridgeOverGrass_Lowered 0x24F
#define METATILE_Fortree_BridgeOverTrees_Raised 0x256
#define METATILE_Fortree_BridgeOverTrees_Lowered 0x257
+#define METATILE_Fortree_SecretBase_Shrub 0x271
+#define METATILE_Fortree_SecretBase_ShrubOpen 0x278
#define METATILE_Fortree_SecretBase_LongGrass_TopLeft 0x279
#define METATILE_Fortree_SecretBase_LongGrass_TopMid 0x27A
#define METATILE_Fortree_SecretBase_LongGrass_TopRight 0x27B
#define METATILE_Fortree_SecretBase_LongGrass_BottomLeft 0x281
#define METATILE_Fortree_SecretBase_LongGrass_BottomMid 0x282
#define METATILE_Fortree_SecretBase_LongGrass_BottomRight 0x283
-#define METATILE_Fortree_WoodBridge_Kecleon0 0x297
-#define METATILE_Fortree_WoodBridge_Kecleon1 0x29F
+#define METATILE_Fortree_WoodBridge1_Top 0x297
+#define METATILE_Fortree_WoodBridge1_Bottom 0x29F
// gTileset_Sootopolis
#define METATILE_Sootopolis_Door_Closed 0x248
@@ -161,6 +176,8 @@
// gTileset_Fallarbor
#define METATILE_Fallarbor_AshGrass 0x20A
+#define METATILE_Fallarbor_BrownCaveIndent 0x208
+#define METATILE_Fallarbor_BrownCaveOpen 0x210
#define METATILE_Fallarbor_NormalGrass 0x212
#define METATILE_Fallarbor_AshField 0x218
#define METATILE_Fallarbor_BrownCaveEntrance_Top 0x259
@@ -252,10 +269,10 @@
#define METATILE_EliteFour_EntryDoor_ClosedBottom 0x20E
// gTileset_InsideShip
-#define METATILE_InsideShip_InTactDoor0_Bottom 0x233
-#define METATILE_InsideShip_InTactDoor1_Bottom 0x22B
-#define METATILE_InsideShip_DoorIndent1 0x21A
-#define METATILE_InsideShip_DoorIndent0 0x234
+#define METATILE_InsideShip_IntactDoor_Bottom_Unlocked 0x22B
+#define METATILE_InsideShip_IntactDoor_Bottom_Locked 0x233
+#define METATILE_InsideShip_DoorIndent_Unlocked 0x21A
+#define METATILE_InsideShip_DoorIndent_Locked 0x234
// gTileset_BattlePike
#define METATILE_BattlePike_Curtain_Stage0_Tile0 0x24A
@@ -376,8 +393,9 @@
#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Down 0x263
#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Left_Alt 0x27B
#define METATILE_TrickHousePuzzle_Arrow_RedOnBlack_Right_Alt 0x27C
+#define METATILE_TrickHousePuzzle_Arrow_YellowOnWhite_Right 0x298
-// gTileset_BikeShop
+// gTileset_BikeShop (also used by New Mauville)
#define METATILE_BikeShop_Barrier_Hidden_Top 0x269
#define METATILE_BikeShop_Barrier_Hidden_Bottom 0x271
#define METATILE_BikeShop_Floor_Shadow_Top 0x26D
@@ -410,4 +428,162 @@
#define METATILE_Underwater_RockWall 0x21E
#define METATILE_Underwater_FloorShadow 0x228
+// gTileset_SecretBase
+#define METATILE_SecretBase_Wall_TopMid 0x202
+#define METATILE_SecretBase_Ground 0x20A
+#define METATILE_SecretBase_PC 0x220
+#define METATILE_SecretBase_RegisterPC 0x221
+#define METATILE_SecretBase_PC_On 0x224
+#define METATILE_SecretBase_RedBrick_Top 0x225
+#define METATILE_SecretBase_RedBrick_Bottom 0x22D
+#define METATILE_SecretBase_YellowBrick_Top 0x226
+#define METATILE_SecretBase_YellowBrick_Bottom 0x22E
+#define METATILE_SecretBase_BlueBrick_Top 0x227
+#define METATILE_SecretBase_BlueBrick_Bottom 0x22F
+#define METATILE_SecretBase_MudBall 0x228
+#define METATILE_SecretBase_Fence_Horizontal 0x22C
+#define METATILE_SecretBase_Fence_Vertical 0x233
+#define METATILE_SecretBase_Board_Top 0x234
+#define METATILE_SecretBase_Board_Bottom 0x23C
+#define METATILE_SecretBase_RedTent_DoorTop 0x239
+#define METATILE_SecretBase_RedTent_Door 0x241
+#define METATILE_SecretBase_BlueTent_DoorTop 0x251
+#define METATILE_SecretBase_BlueTent_Door 0x259
+#define METATILE_SecretBase_Slide_Stairs 0x23D
+#define METATILE_SecretBase_Slide 0x23E
+#define METATILE_SecretBase_Stand_LeftCorner 0x26A
+#define METATILE_SecretBase_Stand_RightCorner 0x26D
+#define METATILE_SecretBase_BreakableDoor_TopClosed 0x237
+#define METATILE_SecretBase_BreakableDoor_BottomClosed 0x23F
+#define METATILE_SecretBase_BreakableDoor_TopOpen 0x26E
+#define METATILE_SecretBase_BreakableDoor_BottomOpen 0x276
+#define METATILE_SecretBase_NoteMat_C 0x278
+#define METATILE_SecretBase_NoteMat_D 0x279
+#define METATILE_SecretBase_NoteMat_E 0x27A
+#define METATILE_SecretBase_NoteMat_F 0x27B
+#define METATILE_SecretBase_NoteMat_G 0x27C
+#define METATILE_SecretBase_NoteMat_A 0x27D
+#define METATILE_SecretBase_NoteMat_B 0x27E
+#define METATILE_SecretBase_NoteMat_C_Sharp 0x2B3
+#define METATILE_SecretBase_Tire_TopLeft 0x280
+#define METATILE_SecretBase_Tire_TopRight 0x281
+#define METATILE_SecretBase_Tire_BottomLeft 0x288
+#define METATILE_SecretBase_Tire_BottomRight 0x289
+#define METATILE_SecretBase_GlassOrnament_Base1 0x28A
+#define METATILE_SecretBase_GlassOrnament_Base2 0x28B
+#define METATILE_SecretBase_SandOrnament_BrokenTop 0x284
+#define METATILE_SecretBase_SandOrnament_BrokenBase 0x28C
+#define METATILE_SecretBase_SandOrnament_Top 0x285
+#define METATILE_SecretBase_SandOrnament_Base1 0x28D
+#define METATILE_SecretBase_SandOrnament_TopWall 0x286
+#define METATILE_SecretBase_SandOrnament_Base2 0x28E
+#define METATILE_SecretBase_SmallDesk 0x287
+#define METATILE_SecretBase_PokemonDesk 0x28F
+#define METATILE_SecretBase_HeavyDesk_TopLeft 0x290
+#define METATILE_SecretBase_HeavyDesk_TopMid 0x291
+#define METATILE_SecretBase_HeavyDesk_TopRight 0x292
+#define METATILE_SecretBase_HeavyDesk_BottomLeft 0x298
+#define METATILE_SecretBase_HeavyDesk_BottomMid 0x299
+#define METATILE_SecretBase_HeavyDesk_BottomRight 0x29A
+#define METATILE_SecretBase_RaggedDesk_TopLeft 0x293
+#define METATILE_SecretBase_RaggedDesk_TopMid 0x294
+#define METATILE_SecretBase_RaggedDesk_TopRight 0x295
+#define METATILE_SecretBase_RaggedDesk_BottomLeft 0x29B
+#define METATILE_SecretBase_RaggedDesk_BottomMid 0x29C
+#define METATILE_SecretBase_RaggedDesk_BottomRight 0x29D
+#define METATILE_SecretBase_ComfortDesk_TopLeft 0x296
+#define METATILE_SecretBase_ComfortDesk_TopMid 0x297
+#define METATILE_SecretBase_ComfortDesk_TopRight 0x2A3
+#define METATILE_SecretBase_ComfortDesk_BottomLeft 0x29E
+#define METATILE_SecretBase_ComfortDesk_BottomMid 0x29F
+#define METATILE_SecretBase_ComfortDesk_BottomRight 0x2AB
+#define METATILE_SecretBase_BrickDesk_TopLeft 0x2A0
+#define METATILE_SecretBase_BrickDesk_TopMid 0x2A1
+#define METATILE_SecretBase_BrickDesk_TopRight 0x2A2
+#define METATILE_SecretBase_BrickDesk_MidLeft 0x2A8
+#define METATILE_SecretBase_BrickDesk_Center 0x2A9
+#define METATILE_SecretBase_BrickDesk_MidRight 0x2AA
+#define METATILE_SecretBase_BrickDesk_BottomLeft 0x2B0
+#define METATILE_SecretBase_BrickDesk_BottomMid 0x2B1
+#define METATILE_SecretBase_BrickDesk_BottomRight 0x2B2
+#define METATILE_SecretBase_CampDesk_TopLeft 0x2A4
+#define METATILE_SecretBase_CampDesk_TopMid 0x2A5
+#define METATILE_SecretBase_CampDesk_TopRight 0x2A6
+#define METATILE_SecretBase_CampDesk_MidLeft 0x2AC
+#define METATILE_SecretBase_CampDesk_Center 0x2AD
+#define METATILE_SecretBase_CampDesk_MidRight 0x2AE
+#define METATILE_SecretBase_CampDesk_BottomLeft 0x2B4
+#define METATILE_SecretBase_CampDesk_BottomMid 0x2B5
+#define METATILE_SecretBase_CampDesk_BottomRight 0x2B6
+#define METATILE_SecretBase_HardDesk_TopLeft 0x2A7
+#define METATILE_SecretBase_HardDesk_TopMid 0x2BB
+#define METATILE_SecretBase_HardDesk_TopRight 0x2BC
+#define METATILE_SecretBase_HardDesk_MidLeft 0x2AF
+#define METATILE_SecretBase_HardDesk_Center 0x2C3
+#define METATILE_SecretBase_HardDesk_MidRight 0x2C4
+#define METATILE_SecretBase_HardDesk_BottomLeft 0x2B7
+#define METATILE_SecretBase_HardDesk_BottomMid 0x2CB
+#define METATILE_SecretBase_HardDesk_BottomRight 0x2CC
+#define METATILE_SecretBase_PrettyDesk_TopLeft 0x2BD
+#define METATILE_SecretBase_PrettyDesk_TopMid 0x2BE
+#define METATILE_SecretBase_PrettyDesk_TopRight 0x2BF
+#define METATILE_SecretBase_PrettyDesk_MidLeft 0x2C5
+#define METATILE_SecretBase_PrettyDesk_Center 0x2C6
+#define METATILE_SecretBase_PrettyDesk_MidRight 0x2C7
+#define METATILE_SecretBase_PrettyDesk_BottomLeft 0x2CD
+#define METATILE_SecretBase_PrettyDesk_BottomMid 0x2CE
+#define METATILE_SecretBase_PrettyDesk_BottomRight 0x2CF
+#define METATILE_SecretBase_SmallChair 0x2B8
+#define METATILE_SecretBase_PokemonChair 0x2B9
+#define METATILE_SecretBase_HeavyChair 0x2BA
+#define METATILE_SecretBase_PrettyChair 0x2C0
+#define METATILE_SecretBase_ComfortChair 0x2C1
+#define METATILE_SecretBase_RaggedChair 0x2C2
+#define METATILE_SecretBase_BrickChair 0x2C8
+#define METATILE_SecretBase_CampChair 0x2C9
+#define METATILE_SecretBase_HardChair 0x2Ca
+#define METATILE_SecretBase_RedPlant_Base1 0x2D8
+#define METATILE_SecretBase_RedPlant_Base2 0x2D9
+#define METATILE_SecretBase_TropicalPlant_Base1 0x2DA
+#define METATILE_SecretBase_TropicalPlant_Base2 0x2DB
+#define METATILE_SecretBase_PrettyFlower_Base1 0x2DC
+#define METATILE_SecretBase_PrettyFlower_Base2 0x2DD
+#define METATILE_SecretBase_ColorfulFlowers_BaseLeft1 0x2E8
+#define METATILE_SecretBase_ColorfulFlowers_BaseRight1 0x2E9
+#define METATILE_SecretBase_ColorfulFlowers_BaseLeft2 0x2EA
+#define METATILE_SecretBase_ColorfulFlowers_BaseRight2 0x2EB
+#define METATILE_SecretBase_BigPlant_BaseLeft1 0x2EC
+#define METATILE_SecretBase_BigPlant_BaseRight1 0x2ED
+#define METATILE_SecretBase_BigPlant_BaseLeft2 0x2EE
+#define METATILE_SecretBase_BigPlant_BaseRight2 0x2EF
+#define METATILE_SecretBase_GorgeousPlant_BaseLeft1 0x2F8
+#define METATILE_SecretBase_GorgeousPlant_BaseRight1 0x2F9
+#define METATILE_SecretBase_GorgeousPlant_BaseLeft2 0x2FA
+#define METATILE_SecretBase_GorgeousPlant_BaseRight2 0x2FB
+#define METATILE_SecretBase_TV 0x2F4
+#define METATILE_SecretBase_RoundTV 0x2F5
+#define METATILE_SecretBase_CuteTV 0x2F6
+#define METATILE_SecretBase_PikaPoster_Left 0x31C
+#define METATILE_SecretBase_PikaPoster_Right 0x31D
+#define METATILE_SecretBase_LongPoster_Left 0x31E
+#define METATILE_SecretBase_LongPoster_Right 0x31F
+#define METATILE_SecretBase_SeaPoster_Left 0x324
+#define METATILE_SecretBase_SeaPoster_Right 0x325
+#define METATILE_SecretBase_SkyPoster_Left 0x326
+#define METATILE_SecretBase_SkyPoster_Right 0x327
+#define METATILE_SecretBase_KissPoster_Left 0x32C
+#define METATILE_SecretBase_KissPoster_Right 0x32D
+#define METATILE_SecretBase_BallPoster 0x330
+#define METATILE_SecretBase_GreenPoster 0x331
+#define METATILE_SecretBase_RedPoster 0x332
+#define METATILE_SecretBase_BluePoster 0x333
+#define METATILE_SecretBase_CutePoster 0x334
+#define METATILE_SecretBase_SilverShield_Base1 0x2DE
+#define METATILE_SecretBase_SilverShield_Base2 0x2DF
+#define METATILE_SecretBase_GoldShield_Base1 0x336
+#define METATILE_SecretBase_GoldShield_Base2 0x337
+#define METATILE_SecretBase_RedBalloon 0x338
+#define METATILE_SecretBase_BlueBalloon 0x33c
+#define METATILE_SecretBase_YellowBalloon 0x340
+
#endif // GUARD_METATILE_LABELS_H
diff --git a/include/constants/mevent.h b/include/constants/mevent.h
new file mode 100644
index 000000000..25bbcdf36
--- /dev/null
+++ b/include/constants/mevent.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_CONSTANTS_MEVENT_H
+#define GUARD_CONSTANTS_MEVENT_H
+
+// mevent2.c
+#define GET_NUM_STAMPS 0
+#define GET_MAX_STAMPS 1
+#define GET_CARD_BATTLES_WON 2
+
+#define GET_NUM_STAMPS_INTERNAL 3
+#define GET_MAX_STAMPS_INTERNAL 4
+#define GET_CARD_BATTLES_WON_INTERNAL 0
+
+#define REQUIRED_CARD_BATTLES 3
+
+#endif //GUARD_MEVENT_H
diff --git a/include/constants/opponents.h b/include/constants/opponents.h
index 9f74baf67..cd35cf6b7 100644
--- a/include/constants/opponents.h
+++ b/include/constants/opponents.h
@@ -1,862 +1,866 @@
#ifndef GUARD_CONSTANTS_OPPONENTS_H
#define GUARD_CONSTANTS_OPPONENTS_H
-#define TRAINER_NONE 0
-#define TRAINER_SAWYER_1 1
-#define TRAINER_GRUNT_1 2
-#define TRAINER_GRUNT_2 3
-#define TRAINER_GRUNT_3 4
-#define TRAINER_GRUNT_4 5
-#define TRAINER_GRUNT_5 6
-#define TRAINER_GRUNT_6 7
-#define TRAINER_GRUNT_7 8
-#define TRAINER_GABRIELLE_1 9
-#define TRAINER_GRUNT_8 10
-#define TRAINER_MARCEL 11
-#define TRAINER_ALBERTO 12
-#define TRAINER_ED 13
-#define TRAINER_GRUNT_9 14
-#define TRAINER_DECLAN 15
-#define TRAINER_GRUNT_10 16
-#define TRAINER_GRUNT_11 17
-#define TRAINER_GRUNT_12 18
-#define TRAINER_GRUNT_13 19
-#define TRAINER_GRUNT_14 20
-#define TRAINER_GRUNT_15 21
-#define TRAINER_GRUNT_16 22
-#define TRAINER_GRUNT_17 23
-#define TRAINER_GRUNT_18 24
-#define TRAINER_GRUNT_19 25
-#define TRAINER_GRUNT_20 26
-#define TRAINER_GRUNT_21 27
-#define TRAINER_GRUNT_22 28
-#define TRAINER_FREDRICK 29
-#define TRAINER_MATT 30
-#define TRAINER_ZANDER 31
-#define TRAINER_SHELLY_1 32
-#define TRAINER_SHELLY_2 33
-#define TRAINER_ARCHIE 34
-#define TRAINER_LEAH 35
-#define TRAINER_DAISY 36
-#define TRAINER_ROSE_1 37
-#define TRAINER_FELIX 38
-#define TRAINER_VIOLET 39
-#define TRAINER_ROSE_2 40
-#define TRAINER_ROSE_3 41
-#define TRAINER_ROSE_4 42
-#define TRAINER_ROSE_5 43
-#define TRAINER_DUSTY_1 44
-#define TRAINER_CHIP 45
-#define TRAINER_FOSTER 46
-#define TRAINER_DUSTY_2 47
-#define TRAINER_DUSTY_3 48
-#define TRAINER_DUSTY_4 49
-#define TRAINER_DUSTY_5 50
-#define TRAINER_GABBY_AND_TY_1 51
-#define TRAINER_GABBY_AND_TY_2 52
-#define TRAINER_GABBY_AND_TY_3 53
-#define TRAINER_GABBY_AND_TY_4 54
-#define TRAINER_GABBY_AND_TY_5 55
-#define TRAINER_GABBY_AND_TY_6 56
-#define TRAINER_LOLA_1 57
-#define TRAINER_AUSTINA 58
-#define TRAINER_GWEN 59
-#define TRAINER_LOLA_2 60
-#define TRAINER_LOLA_3 61
-#define TRAINER_LOLA_4 62
-#define TRAINER_LOLA_5 63
-#define TRAINER_RICKY_1 64
-#define TRAINER_SIMON 65
-#define TRAINER_CHARLIE 66
-#define TRAINER_RICKY_2 67
-#define TRAINER_RICKY_3 68
-#define TRAINER_RICKY_4 69
-#define TRAINER_RICKY_5 70
-#define TRAINER_RANDALL 71
-#define TRAINER_PARKER 72
-#define TRAINER_GEORGE 73
-#define TRAINER_BERKE 74
-#define TRAINER_BRAXTON 75
-#define TRAINER_VINCENT 76
-#define TRAINER_LEROY 77
-#define TRAINER_WILTON_1 78
-#define TRAINER_EDGAR 79
-#define TRAINER_ALBERT 80
-#define TRAINER_SAMUEL 81
-#define TRAINER_VITO 82
-#define TRAINER_OWEN 83
-#define TRAINER_WILTON_2 84
-#define TRAINER_WILTON_3 85
-#define TRAINER_WILTON_4 86
-#define TRAINER_WILTON_5 87
-#define TRAINER_WARREN 88
-#define TRAINER_MARY 89
-#define TRAINER_ALEXIA 90
-#define TRAINER_JODY 91
-#define TRAINER_WENDY 92
-#define TRAINER_KEIRA 93
-#define TRAINER_BROOKE_1 94
-#define TRAINER_JENNIFER 95
-#define TRAINER_HOPE 96
-#define TRAINER_SHANNON 97
-#define TRAINER_MICHELLE 98
-#define TRAINER_CAROLINE 99
-#define TRAINER_JULIE 100
-#define TRAINER_BROOKE_2 101
-#define TRAINER_BROOKE_3 102
-#define TRAINER_BROOKE_4 103
-#define TRAINER_BROOKE_5 104
-#define TRAINER_PATRICIA 105
-#define TRAINER_KINDRA 106
-#define TRAINER_TAMMY 107
-#define TRAINER_VALERIE_1 108
-#define TRAINER_TASHA 109
-#define TRAINER_VALERIE_2 110
-#define TRAINER_VALERIE_3 111
-#define TRAINER_VALERIE_4 112
-#define TRAINER_VALERIE_5 113
-#define TRAINER_CINDY_1 114
-#define TRAINER_DAPHNE 115
-#define TRAINER_GRUNT_23 116
-#define TRAINER_CINDY_2 117
-#define TRAINER_BRIANNA 118
-#define TRAINER_NAOMI 119
-#define TRAINER_CINDY_3 120
-#define TRAINER_CINDY_4 121
-#define TRAINER_CINDY_5 122
-#define TRAINER_CINDY_6 123
-#define TRAINER_MELISSA 124
-#define TRAINER_SHEILA 125
-#define TRAINER_SHIRLEY 126
-#define TRAINER_JESSICA_1 127
-#define TRAINER_CONNIE 128
-#define TRAINER_BRIDGET 129
-#define TRAINER_OLIVIA 130
-#define TRAINER_TIFFANY 131
-#define TRAINER_JESSICA_2 132
-#define TRAINER_JESSICA_3 133
-#define TRAINER_JESSICA_4 134
-#define TRAINER_JESSICA_5 135
-#define TRAINER_WINSTON_1 136
-#define TRAINER_MOLLIE 137
-#define TRAINER_GARRET 138
-#define TRAINER_WINSTON_2 139
-#define TRAINER_WINSTON_3 140
-#define TRAINER_WINSTON_4 141
-#define TRAINER_WINSTON_5 142
-#define TRAINER_STEVE_1 143
-#define TRAINER_THALIA_1 144
-#define TRAINER_MARK 145
-#define TRAINER_GRUNT_24 146
-#define TRAINER_STEVE_2 147
-#define TRAINER_STEVE_3 148
-#define TRAINER_STEVE_4 149
-#define TRAINER_STEVE_5 150
-#define TRAINER_LUIS 151
-#define TRAINER_DOMINIK 152
-#define TRAINER_DOUGLAS 153
-#define TRAINER_DARRIN 154
-#define TRAINER_TONY_1 155
-#define TRAINER_JEROME 156
-#define TRAINER_MATTHEW 157
-#define TRAINER_DAVID 158
-#define TRAINER_SPENCER 159
-#define TRAINER_ROLAND 160
-#define TRAINER_NOLEN 161
-#define TRAINER_STAN 162
-#define TRAINER_BARRY 163
-#define TRAINER_DEAN 164
-#define TRAINER_RODNEY 165
-#define TRAINER_RICHARD 166
-#define TRAINER_HERMAN 167
-#define TRAINER_SANTIAGO 168
-#define TRAINER_GILBERT 169
-#define TRAINER_FRANKLIN 170
-#define TRAINER_KEVIN 171
-#define TRAINER_JACK 172
-#define TRAINER_DUDLEY 173
-#define TRAINER_CHAD 174
-#define TRAINER_TONY_2 175
-#define TRAINER_TONY_3 176
-#define TRAINER_TONY_4 177
-#define TRAINER_TONY_5 178
-#define TRAINER_TAKAO 179
-#define TRAINER_HITOSHI 180
-#define TRAINER_KIYO 181
-#define TRAINER_KOICHI 182
-#define TRAINER_NOB_1 183
-#define TRAINER_NOB_2 184
-#define TRAINER_NOB_3 185
-#define TRAINER_NOB_4 186
-#define TRAINER_NOB_5 187
-#define TRAINER_YUJI 188
-#define TRAINER_DAISUKE 189
-#define TRAINER_ATSUSHI 190
-#define TRAINER_KIRK 191
-#define TRAINER_GRUNT_25 192
-#define TRAINER_GRUNT_26 193
-#define TRAINER_SHAWN 194
-#define TRAINER_FERNANDO_1 195
-#define TRAINER_DALTON_1 196
-#define TRAINER_DALTON_2 197
-#define TRAINER_DALTON_3 198
-#define TRAINER_DALTON_4 199
-#define TRAINER_DALTON_5 200
-#define TRAINER_COLE 201
-#define TRAINER_JEFF 202
-#define TRAINER_AXLE 203
-#define TRAINER_JACE 204
-#define TRAINER_KEEGAN 205
-#define TRAINER_BERNIE_1 206
-#define TRAINER_BERNIE_2 207
-#define TRAINER_BERNIE_3 208
-#define TRAINER_BERNIE_4 209
-#define TRAINER_BERNIE_5 210
-#define TRAINER_DREW 211
-#define TRAINER_BEAU 212
-#define TRAINER_LARRY 213
-#define TRAINER_SHANE 214
-#define TRAINER_JUSTIN 215
-#define TRAINER_ETHAN_1 216
-#define TRAINER_AUTUMN 217
-#define TRAINER_TRAVIS 218
-#define TRAINER_ETHAN_2 219
-#define TRAINER_ETHAN_3 220
-#define TRAINER_ETHAN_4 221
-#define TRAINER_ETHAN_5 222
-#define TRAINER_BRENT 223
-#define TRAINER_DONALD 224
-#define TRAINER_TAYLOR 225
-#define TRAINER_JEFFREY_1 226
-#define TRAINER_DEREK 227
-#define TRAINER_JEFFREY_2 228
-#define TRAINER_JEFFREY_3 229
-#define TRAINER_JEFFREY_4 230
-#define TRAINER_JEFFREY_5 231
-#define TRAINER_EDWARD 232
-#define TRAINER_PRESTON 233
-#define TRAINER_VIRGIL 234
-#define TRAINER_BLAKE 235
-#define TRAINER_WILLIAM 236
-#define TRAINER_JOSHUA 237
-#define TRAINER_CAMERON_1 238
-#define TRAINER_CAMERON_2 239
-#define TRAINER_CAMERON_3 240
-#define TRAINER_CAMERON_4 241
-#define TRAINER_CAMERON_5 242
-#define TRAINER_JACLYN 243
-#define TRAINER_HANNAH 244
-#define TRAINER_SAMANTHA 245
-#define TRAINER_MAURA 246
-#define TRAINER_KAYLA 247
-#define TRAINER_ALEXIS 248
-#define TRAINER_JACKI_1 249
-#define TRAINER_JACKI_2 250
-#define TRAINER_JACKI_3 251
-#define TRAINER_JACKI_4 252
-#define TRAINER_JACKI_5 253
-#define TRAINER_WALTER_1 254
-#define TRAINER_MICAH 255
-#define TRAINER_THOMAS 256
-#define TRAINER_WALTER_2 257
-#define TRAINER_WALTER_3 258
-#define TRAINER_WALTER_4 259
-#define TRAINER_WALTER_5 260
-#define TRAINER_SIDNEY 261
-#define TRAINER_PHOEBE 262
-#define TRAINER_GLACIA 263
-#define TRAINER_DRAKE 264
-#define TRAINER_ROXANNE_1 265
-#define TRAINER_BRAWLY_1 266
-#define TRAINER_WATTSON_1 267
-#define TRAINER_FLANNERY_1 268
-#define TRAINER_NORMAN_1 269
-#define TRAINER_WINONA_1 270
-#define TRAINER_TATE_AND_LIZA_1 271
-#define TRAINER_JUAN_1 272
-#define TRAINER_JERRY_1 273
-#define TRAINER_TED 274
-#define TRAINER_PAUL 275
-#define TRAINER_JERRY_2 276
-#define TRAINER_JERRY_3 277
-#define TRAINER_JERRY_4 278
-#define TRAINER_JERRY_5 279
-#define TRAINER_KAREN_1 280
-#define TRAINER_GEORGIA 281
-#define TRAINER_KAREN_2 282
-#define TRAINER_KAREN_3 283
-#define TRAINER_KAREN_4 284
-#define TRAINER_KAREN_5 285
-#define TRAINER_KATE_AND_JOY 286
-#define TRAINER_ANNA_AND_MEG_1 287
-#define TRAINER_ANNA_AND_MEG_2 288
-#define TRAINER_ANNA_AND_MEG_3 289
-#define TRAINER_ANNA_AND_MEG_4 290
-#define TRAINER_ANNA_AND_MEG_5 291
-#define TRAINER_VICTOR 292
-#define TRAINER_MIGUEL_1 293
-#define TRAINER_COLTON 294
-#define TRAINER_MIGUEL_2 295
-#define TRAINER_MIGUEL_3 296
-#define TRAINER_MIGUEL_4 297
-#define TRAINER_MIGUEL_5 298
-#define TRAINER_VICTORIA 299
-#define TRAINER_VANESSA 300
-#define TRAINER_BETHANY 301
-#define TRAINER_ISABEL_1 302
-#define TRAINER_ISABEL_2 303
-#define TRAINER_ISABEL_3 304
-#define TRAINER_ISABEL_4 305
-#define TRAINER_ISABEL_5 306
-#define TRAINER_TIMOTHY_1 307
-#define TRAINER_TIMOTHY_2 308
-#define TRAINER_TIMOTHY_3 309
-#define TRAINER_TIMOTHY_4 310
-#define TRAINER_TIMOTHY_5 311
-#define TRAINER_VICKY 312
-#define TRAINER_SHELBY_1 313
-#define TRAINER_SHELBY_2 314
-#define TRAINER_SHELBY_3 315
-#define TRAINER_SHELBY_4 316
-#define TRAINER_SHELBY_5 317
-#define TRAINER_CALVIN_1 318
-#define TRAINER_BILLY 319
-#define TRAINER_JOSH 320
-#define TRAINER_TOMMY 321
-#define TRAINER_JOEY 322
-#define TRAINER_BEN 323
-#define TRAINER_QUINCY 324
-#define TRAINER_KATELYNN 325
-#define TRAINER_JAYLEN 326
-#define TRAINER_DILLON 327
-#define TRAINER_CALVIN_2 328
-#define TRAINER_CALVIN_3 329
-#define TRAINER_CALVIN_4 330
-#define TRAINER_CALVIN_5 331
-#define TRAINER_EDDIE 332
-#define TRAINER_ALLEN 333
-#define TRAINER_TIMMY 334
-#define TRAINER_WALLACE 335
-#define TRAINER_ANDREW 336
-#define TRAINER_IVAN 337
-#define TRAINER_CLAUDE 338
-#define TRAINER_ELLIOT_1 339
-#define TRAINER_NED 340
-#define TRAINER_DALE 341
-#define TRAINER_NOLAN 342
-#define TRAINER_BARNY 343
-#define TRAINER_WADE 344
-#define TRAINER_CARTER 345
-#define TRAINER_ELLIOT_2 346
-#define TRAINER_ELLIOT_3 347
-#define TRAINER_ELLIOT_4 348
-#define TRAINER_ELLIOT_5 349
-#define TRAINER_RONALD 350
-#define TRAINER_JACOB 351
-#define TRAINER_ANTHONY 352
-#define TRAINER_BENJAMIN_1 353
-#define TRAINER_BENJAMIN_2 354
-#define TRAINER_BENJAMIN_3 355
-#define TRAINER_BENJAMIN_4 356
-#define TRAINER_BENJAMIN_5 357
-#define TRAINER_ABIGAIL_1 358
-#define TRAINER_JASMINE 359
-#define TRAINER_ABIGAIL_2 360
-#define TRAINER_ABIGAIL_3 361
-#define TRAINER_ABIGAIL_4 362
-#define TRAINER_ABIGAIL_5 363
-#define TRAINER_DYLAN_1 364
-#define TRAINER_DYLAN_2 365
-#define TRAINER_DYLAN_3 366
-#define TRAINER_DYLAN_4 367
-#define TRAINER_DYLAN_5 368
-#define TRAINER_MARIA_1 369
-#define TRAINER_MARIA_2 370
-#define TRAINER_MARIA_3 371
-#define TRAINER_MARIA_4 372
-#define TRAINER_MARIA_5 373
-#define TRAINER_CAMDEN 374
-#define TRAINER_DEMETRIUS 375
-#define TRAINER_ISAIAH_1 376
-#define TRAINER_PABLO_1 377
-#define TRAINER_CHASE 378
-#define TRAINER_ISAIAH_2 379
-#define TRAINER_ISAIAH_3 380
-#define TRAINER_ISAIAH_4 381
-#define TRAINER_ISAIAH_5 382
-#define TRAINER_ISOBEL 383
-#define TRAINER_DONNY 384
-#define TRAINER_TALIA 385
-#define TRAINER_KATELYN_1 386
-#define TRAINER_ALLISON 387
-#define TRAINER_KATELYN_2 388
-#define TRAINER_KATELYN_3 389
-#define TRAINER_KATELYN_4 390
-#define TRAINER_KATELYN_5 391
-#define TRAINER_NICOLAS_1 392
-#define TRAINER_NICOLAS_2 393
-#define TRAINER_NICOLAS_3 394
-#define TRAINER_NICOLAS_4 395
-#define TRAINER_NICOLAS_5 396
-#define TRAINER_AARON 397
-#define TRAINER_PERRY 398
-#define TRAINER_HUGH 399
-#define TRAINER_PHIL 400
-#define TRAINER_JARED 401
-#define TRAINER_HUMBERTO 402
-#define TRAINER_PRESLEY 403
-#define TRAINER_EDWARDO 404
-#define TRAINER_COLIN 405
-#define TRAINER_ROBERT_1 406
-#define TRAINER_BENNY 407
-#define TRAINER_CHESTER 408
-#define TRAINER_ROBERT_2 409
-#define TRAINER_ROBERT_3 410
-#define TRAINER_ROBERT_4 411
-#define TRAINER_ROBERT_5 412
-#define TRAINER_ALEX 413
-#define TRAINER_BECK 414
-#define TRAINER_YASU 415
-#define TRAINER_TAKASHI 416
-#define TRAINER_DIANNE 417
-#define TRAINER_JANI 418
-#define TRAINER_LAO_1 419
-#define TRAINER_LUNG 420
-#define TRAINER_LAO_2 421
-#define TRAINER_LAO_3 422
-#define TRAINER_LAO_4 423
-#define TRAINER_LAO_5 424
-#define TRAINER_JOCELYN 425
-#define TRAINER_LAURA 426
-#define TRAINER_CYNDY_1 427
-#define TRAINER_CORA 428
-#define TRAINER_PAULA 429
-#define TRAINER_CYNDY_2 430
-#define TRAINER_CYNDY_3 431
-#define TRAINER_CYNDY_4 432
-#define TRAINER_CYNDY_5 433
-#define TRAINER_MADELINE_1 434
-#define TRAINER_CLARISSA 435
-#define TRAINER_ANGELICA 436
-#define TRAINER_MADELINE_2 437
-#define TRAINER_MADELINE_3 438
-#define TRAINER_MADELINE_4 439
-#define TRAINER_MADELINE_5 440
-#define TRAINER_BEVERLY 441
-#define TRAINER_IMANI 442
-#define TRAINER_KYLA 443
-#define TRAINER_DENISE 444
-#define TRAINER_BETH 445
-#define TRAINER_TARA 446
-#define TRAINER_MISSY 447
-#define TRAINER_ALICE 448
-#define TRAINER_JENNY_1 449
-#define TRAINER_GRACE 450
-#define TRAINER_TANYA 451
-#define TRAINER_SHARON 452
-#define TRAINER_NIKKI 453
-#define TRAINER_BRENDA 454
-#define TRAINER_KATIE 455
-#define TRAINER_SUSIE 456
-#define TRAINER_KARA 457
-#define TRAINER_DANA 458
-#define TRAINER_SIENNA 459
-#define TRAINER_DEBRA 460
-#define TRAINER_LINDA 461
-#define TRAINER_KAYLEE 462
-#define TRAINER_LAUREL 463
-#define TRAINER_CARLEE 464
-#define TRAINER_JENNY_2 465
-#define TRAINER_JENNY_3 466
-#define TRAINER_JENNY_4 467
-#define TRAINER_JENNY_5 468
-#define TRAINER_HEIDI 469
-#define TRAINER_BECKY 470
-#define TRAINER_CAROL 471
-#define TRAINER_NANCY 472
-#define TRAINER_MARTHA 473
-#define TRAINER_DIANA_1 474
-#define TRAINER_CEDRIC 475
-#define TRAINER_IRENE 476
-#define TRAINER_DIANA_2 477
-#define TRAINER_DIANA_3 478
-#define TRAINER_DIANA_4 479
-#define TRAINER_DIANA_5 480
-#define TRAINER_AMY_AND_LIV_1 481
-#define TRAINER_AMY_AND_LIV_2 482
-#define TRAINER_GINA_AND_MIA_1 483
-#define TRAINER_MIU_AND_YUKI 484
-#define TRAINER_AMY_AND_LIV_3 485
-#define TRAINER_GINA_AND_MIA_2 486
-#define TRAINER_AMY_AND_LIV_4 487
-#define TRAINER_AMY_AND_LIV_5 488
-#define TRAINER_AMY_AND_LIV_6 489
-#define TRAINER_HUEY 490
-#define TRAINER_EDMOND 491
-#define TRAINER_ERNEST_1 492
-#define TRAINER_DWAYNE 493
-#define TRAINER_PHILLIP 494
-#define TRAINER_LEONARD 495
-#define TRAINER_DUNCAN 496
-#define TRAINER_ERNEST_2 497
-#define TRAINER_ERNEST_3 498
-#define TRAINER_ERNEST_4 499
-#define TRAINER_ERNEST_5 500
-#define TRAINER_ELI 501
-#define TRAINER_ANNIKA 502
-#define TRAINER_JAZMYN 503
-#define TRAINER_JONAS 504
-#define TRAINER_KAYLEY 505
-#define TRAINER_AURON 506
-#define TRAINER_KELVIN 507
-#define TRAINER_MARLEY 508
-#define TRAINER_REYNA 509
-#define TRAINER_HUDSON 510
-#define TRAINER_CONOR 511
-#define TRAINER_EDWIN_1 512
-#define TRAINER_HECTOR 513
-#define TRAINER_TABITHA_1 514
-#define TRAINER_EDWIN_2 515
-#define TRAINER_EDWIN_3 516
-#define TRAINER_EDWIN_4 517
-#define TRAINER_EDWIN_5 518
-#define TRAINER_WALLY_1 519
-#define TRAINER_BRENDAN_1 520
-#define TRAINER_BRENDAN_2 521
-#define TRAINER_BRENDAN_3 522
-#define TRAINER_BRENDAN_4 523
-#define TRAINER_BRENDAN_5 524
-#define TRAINER_BRENDAN_6 525
-#define TRAINER_BRENDAN_7 526
-#define TRAINER_BRENDAN_8 527
-#define TRAINER_BRENDAN_9 528
-#define TRAINER_MAY_1 529
-#define TRAINER_MAY_2 530
-#define TRAINER_MAY_3 531
-#define TRAINER_MAY_4 532
-#define TRAINER_MAY_5 533
-#define TRAINER_MAY_6 534
-#define TRAINER_MAY_7 535
-#define TRAINER_MAY_8 536
-#define TRAINER_MAY_9 537
-#define TRAINER_ISAAC_1 538
-#define TRAINER_DAVIS 539
-#define TRAINER_MITCHELL 540
-#define TRAINER_ISAAC_2 541
-#define TRAINER_ISAAC_3 542
-#define TRAINER_ISAAC_4 543
-#define TRAINER_ISAAC_5 544
-#define TRAINER_LYDIA_1 545
-#define TRAINER_HALLE 546
-#define TRAINER_GARRISON 547
-#define TRAINER_LYDIA_2 548
-#define TRAINER_LYDIA_3 549
-#define TRAINER_LYDIA_4 550
-#define TRAINER_LYDIA_5 551
-#define TRAINER_JACKSON_1 552
-#define TRAINER_LORENZO 553
-#define TRAINER_SEBASTIAN 554
-#define TRAINER_JACKSON_2 555
-#define TRAINER_JACKSON_3 556
-#define TRAINER_JACKSON_4 557
-#define TRAINER_JACKSON_5 558
-#define TRAINER_CATHERINE_1 559
-#define TRAINER_JENNA 560
-#define TRAINER_SOPHIA 561
-#define TRAINER_CATHERINE_2 562
-#define TRAINER_CATHERINE_3 563
-#define TRAINER_CATHERINE_4 564
-#define TRAINER_CATHERINE_5 565
-#define TRAINER_JULIO 566
-#define TRAINER_GRUNT_27 567
-#define TRAINER_GRUNT_28 568
-#define TRAINER_GRUNT_29 569
-#define TRAINER_GRUNT_30 570
-#define TRAINER_MARC 571
-#define TRAINER_BRENDEN 572
-#define TRAINER_LILITH 573
-#define TRAINER_CRISTIAN 574
-#define TRAINER_SYLVIA 575
-#define TRAINER_LEONARDO 576
-#define TRAINER_ATHENA 577
-#define TRAINER_HARRISON 578
-#define TRAINER_GRUNT_31 579
-#define TRAINER_CLARENCE 580
-#define TRAINER_TERRY 581
-#define TRAINER_NATE 582
-#define TRAINER_KATHLEEN 583
-#define TRAINER_CLIFFORD 584
-#define TRAINER_NICHOLAS 585
-#define TRAINER_GRUNT_32 586
-#define TRAINER_GRUNT_33 587
-#define TRAINER_GRUNT_34 588
-#define TRAINER_GRUNT_35 589
-#define TRAINER_GRUNT_36 590
-#define TRAINER_MACEY 591
-#define TRAINER_BRENDAN_10 592
-#define TRAINER_BRENDAN_11 593
-#define TRAINER_PAXTON 594
-#define TRAINER_ISABELLA 595
-#define TRAINER_GRUNT_37 596
-#define TRAINER_TABITHA_2 597
-#define TRAINER_JONATHAN 598
-#define TRAINER_BRENDAN_12 599
-#define TRAINER_MAY_10 600
-#define TRAINER_MAXIE_1 601
-#define TRAINER_MAXIE_2 602
-#define TRAINER_TIANA 603
-#define TRAINER_HALEY_1 604
-#define TRAINER_JANICE 605
-#define TRAINER_VIVI 606
-#define TRAINER_HALEY_2 607
-#define TRAINER_HALEY_3 608
-#define TRAINER_HALEY_4 609
-#define TRAINER_HALEY_5 610
-#define TRAINER_SALLY 611
-#define TRAINER_ROBIN 612
-#define TRAINER_ANDREA 613
-#define TRAINER_CRISSY 614
-#define TRAINER_RICK 615
-#define TRAINER_LYLE 616
-#define TRAINER_JOSE 617
-#define TRAINER_DOUG 618
-#define TRAINER_GREG 619
-#define TRAINER_KENT 620
-#define TRAINER_JAMES_1 621
-#define TRAINER_JAMES_2 622
-#define TRAINER_JAMES_3 623
-#define TRAINER_JAMES_4 624
-#define TRAINER_JAMES_5 625
-#define TRAINER_BRICE 626
-#define TRAINER_TRENT_1 627
-#define TRAINER_LENNY 628
-#define TRAINER_LUCAS_1 629
-#define TRAINER_ALAN 630
-#define TRAINER_CLARK 631
-#define TRAINER_ERIC 632
-#define TRAINER_LUCAS_2 633
-#define TRAINER_MIKE_1 634
-#define TRAINER_MIKE_2 635
-#define TRAINER_TRENT_2 636
-#define TRAINER_TRENT_3 637
-#define TRAINER_TRENT_4 638
-#define TRAINER_TRENT_5 639
-#define TRAINER_DEZ_AND_LUKE 640
-#define TRAINER_LEA_AND_JED 641
-#define TRAINER_KIRA_AND_DAN_1 642
-#define TRAINER_KIRA_AND_DAN_2 643
-#define TRAINER_KIRA_AND_DAN_3 644
-#define TRAINER_KIRA_AND_DAN_4 645
-#define TRAINER_KIRA_AND_DAN_5 646
-#define TRAINER_JOHANNA 647
-#define TRAINER_GERALD 648
-#define TRAINER_VIVIAN 649
-#define TRAINER_DANIELLE 650
-#define TRAINER_HIDEO 651
-#define TRAINER_KEIGO 652
-#define TRAINER_RILEY 653
-#define TRAINER_FLINT 654
-#define TRAINER_ASHLEY 655
-#define TRAINER_WALLY_2 656
-#define TRAINER_WALLY_3 657
-#define TRAINER_WALLY_4 658
-#define TRAINER_WALLY_5 659
-#define TRAINER_WALLY_6 660
-#define TRAINER_BRENDAN_13 661
-#define TRAINER_BRENDAN_14 662
-#define TRAINER_BRENDAN_15 663
-#define TRAINER_MAY_11 664
-#define TRAINER_MAY_12 665
-#define TRAINER_MAY_13 666
-#define TRAINER_JONAH 667
-#define TRAINER_HENRY 668
-#define TRAINER_ROGER 669
-#define TRAINER_ALEXA 670
-#define TRAINER_RUBEN 671
-#define TRAINER_KOJI_1 672
-#define TRAINER_WAYNE 673
-#define TRAINER_AIDAN 674
-#define TRAINER_REED 675
-#define TRAINER_TISHA 676
-#define TRAINER_TORI_AND_TIA 677
-#define TRAINER_KIM_AND_IRIS 678
-#define TRAINER_TYRA_AND_IVY 679
-#define TRAINER_MEL_AND_PAUL 680
-#define TRAINER_JOHN_AND_JAY_1 681
-#define TRAINER_JOHN_AND_JAY_2 682
-#define TRAINER_JOHN_AND_JAY_3 683
-#define TRAINER_JOHN_AND_JAY_4 684
-#define TRAINER_JOHN_AND_JAY_5 685
-#define TRAINER_RELI_AND_IAN 686
-#define TRAINER_LILA_AND_ROY_1 687
-#define TRAINER_LILA_AND_ROY_2 688
-#define TRAINER_LILA_AND_ROY_3 689
-#define TRAINER_LILA_AND_ROY_4 690
-#define TRAINER_LILA_AND_ROY_5 691
-#define TRAINER_LISA_AND_RAY 692
-#define TRAINER_CHRIS 693
-#define TRAINER_DAWSON 694
-#define TRAINER_SARAH 695
-#define TRAINER_DARIAN 696
-#define TRAINER_HAILEY 697
-#define TRAINER_CHANDLER 698
-#define TRAINER_KALEB 699
-#define TRAINER_JOSEPH 700
-#define TRAINER_ALYSSA 701
-#define TRAINER_MARCOS 702
-#define TRAINER_RHETT 703
-#define TRAINER_TYRON 704
-#define TRAINER_CELINA 705
-#define TRAINER_BIANCA 706
-#define TRAINER_HAYDEN 707
-#define TRAINER_SOPHIE 708
-#define TRAINER_COBY 709
-#define TRAINER_LAWRENCE 710
-#define TRAINER_WYATT 711
-#define TRAINER_ANGELINA 712
-#define TRAINER_KAI 713
-#define TRAINER_CHARLOTTE 714
-#define TRAINER_DEANDRE 715
-#define TRAINER_GRUNT_38 716
-#define TRAINER_GRUNT_39 717
-#define TRAINER_GRUNT_40 718
-#define TRAINER_GRUNT_41 719
-#define TRAINER_GRUNT_42 720
-#define TRAINER_GRUNT_43 721
-#define TRAINER_GRUNT_44 722
-#define TRAINER_GRUNT_45 723
-#define TRAINER_GRUNT_46 724
-#define TRAINER_GRUNT_47 725
-#define TRAINER_GRUNT_48 726
-#define TRAINER_GRUNT_49 727
-#define TRAINER_GRUNT_50 728
-#define TRAINER_GRUNT_51 729
-#define TRAINER_GRUNT_52 730
-#define TRAINER_GRUNT_53 731
-#define TRAINER_TABITHA_3 732
-#define TRAINER_DARCY 733
-#define TRAINER_MAXIE_3 734
-#define TRAINER_PETE 735
-#define TRAINER_ISABELLE 736
-#define TRAINER_ANDRES_1 737
-#define TRAINER_JOSUE 738
-#define TRAINER_CAMRON 739
-#define TRAINER_CORY_1 740
-#define TRAINER_CAROLINA 741
-#define TRAINER_ELIJAH 742
-#define TRAINER_CELIA 743
-#define TRAINER_BRYAN 744
-#define TRAINER_BRANDEN 745
-#define TRAINER_BRYANT 746
-#define TRAINER_SHAYLA 747
-#define TRAINER_KYRA 748
-#define TRAINER_JAIDEN 749
-#define TRAINER_ALIX 750
-#define TRAINER_HELENE 751
-#define TRAINER_MARLENE 752
-#define TRAINER_DEVAN 753
-#define TRAINER_JOHNSON 754
-#define TRAINER_MELINA 755
-#define TRAINER_BRANDI 756
-#define TRAINER_AISHA 757
-#define TRAINER_MAKAYLA 758
-#define TRAINER_FABIAN 759
-#define TRAINER_DAYTON 760
-#define TRAINER_RACHEL 761
-#define TRAINER_LEONEL 762
-#define TRAINER_CALLIE 763
-#define TRAINER_CALE 764
-#define TRAINER_MYLES 765
-#define TRAINER_PAT 766
-#define TRAINER_CRISTIN_1 767
-#define TRAINER_MAY_14 768
-#define TRAINER_MAY_15 769
-#define TRAINER_ROXANNE_2 770
-#define TRAINER_ROXANNE_3 771
-#define TRAINER_ROXANNE_4 772
-#define TRAINER_ROXANNE_5 773
-#define TRAINER_BRAWLY_2 774
-#define TRAINER_BRAWLY_3 775
-#define TRAINER_BRAWLY_4 776
-#define TRAINER_BRAWLY_5 777
-#define TRAINER_WATTSON_2 778
-#define TRAINER_WATTSON_3 779
-#define TRAINER_WATTSON_4 780
-#define TRAINER_WATTSON_5 781
-#define TRAINER_FLANNERY_2 782
-#define TRAINER_FLANNERY_3 783
-#define TRAINER_FLANNERY_4 784
-#define TRAINER_FLANNERY_5 785
-#define TRAINER_NORMAN_2 786
-#define TRAINER_NORMAN_3 787
-#define TRAINER_NORMAN_4 788
-#define TRAINER_NORMAN_5 789
-#define TRAINER_WINONA_2 790
-#define TRAINER_WINONA_3 791
-#define TRAINER_WINONA_4 792
-#define TRAINER_WINONA_5 793
-#define TRAINER_TATE_AND_LIZA_2 794
-#define TRAINER_TATE_AND_LIZA_3 795
-#define TRAINER_TATE_AND_LIZA_4 796
-#define TRAINER_TATE_AND_LIZA_5 797
-#define TRAINER_JUAN_2 798
-#define TRAINER_JUAN_3 799
-#define TRAINER_JUAN_4 800
-#define TRAINER_JUAN_5 801
-#define TRAINER_ANGELO 802
-#define TRAINER_DARIUS 803
-#define TRAINER_STEVEN 804
-#define TRAINER_ANABEL 805
-#define TRAINER_TUCKER 806
-#define TRAINER_SPENSER 807
-#define TRAINER_GRETA 808
-#define TRAINER_NOLAND 809
-#define TRAINER_LUCY 810
-#define TRAINER_BRANDON 811
-#define TRAINER_ANDRES_2 812
-#define TRAINER_ANDRES_3 813
-#define TRAINER_ANDRES_4 814
-#define TRAINER_ANDRES_5 815
-#define TRAINER_CORY_2 816
-#define TRAINER_CORY_3 817
-#define TRAINER_CORY_4 818
-#define TRAINER_CORY_5 819
-#define TRAINER_PABLO_2 820
-#define TRAINER_PABLO_3 821
-#define TRAINER_PABLO_4 822
-#define TRAINER_PABLO_5 823
-#define TRAINER_KOJI_2 824
-#define TRAINER_KOJI_3 825
-#define TRAINER_KOJI_4 826
-#define TRAINER_KOJI_5 827
-#define TRAINER_CRISTIN_2 828
-#define TRAINER_CRISTIN_3 829
-#define TRAINER_CRISTIN_4 830
-#define TRAINER_CRISTIN_5 831
-#define TRAINER_FERNANDO_2 832
-#define TRAINER_FERNANDO_3 833
-#define TRAINER_FERNANDO_4 834
-#define TRAINER_FERNANDO_5 835
-#define TRAINER_SAWYER_2 836
-#define TRAINER_SAWYER_3 837
-#define TRAINER_SAWYER_4 838
-#define TRAINER_SAWYER_5 839
-#define TRAINER_GABRIELLE_2 840
-#define TRAINER_GABRIELLE_3 841
-#define TRAINER_GABRIELLE_4 842
-#define TRAINER_GABRIELLE_5 843
-#define TRAINER_THALIA_2 844
-#define TRAINER_THALIA_3 845
-#define TRAINER_THALIA_4 846
-#define TRAINER_THALIA_5 847
-#define TRAINER_MARIELA 848
-#define TRAINER_ALVARO 849
-#define TRAINER_EVERETT 850
-#define TRAINER_RED 851
-#define TRAINER_LEAF 852
-#define TRAINER_BRENDAN_16 853
-#define TRAINER_MAY_16 854
+#define TRAINER_NONE 0
+#define TRAINER_SAWYER_1 1
+#define TRAINER_GRUNT_AQUA_HIDEOUT_1 2
+#define TRAINER_GRUNT_AQUA_HIDEOUT_2 3
+#define TRAINER_GRUNT_AQUA_HIDEOUT_3 4
+#define TRAINER_GRUNT_AQUA_HIDEOUT_4 5
+#define TRAINER_GRUNT_SEAFLOOR_CAVERN_1 6
+#define TRAINER_GRUNT_SEAFLOOR_CAVERN_2 7
+#define TRAINER_GRUNT_SEAFLOOR_CAVERN_3 8
+#define TRAINER_GABRIELLE_1 9
+#define TRAINER_GRUNT_PETALBURG_WOODS 10
+#define TRAINER_MARCEL 11
+#define TRAINER_ALBERTO 12
+#define TRAINER_ED 13
+#define TRAINER_GRUNT_SEAFLOOR_CAVERN_4 14
+#define TRAINER_DECLAN 15
+#define TRAINER_GRUNT_RUSTURF_TUNNEL 16
+#define TRAINER_GRUNT_WEATHER_INST_1 17
+#define TRAINER_GRUNT_WEATHER_INST_2 18
+#define TRAINER_GRUNT_WEATHER_INST_3 19
+#define TRAINER_GRUNT_MUSEUM_1 20
+#define TRAINER_GRUNT_MUSEUM_2 21
+#define TRAINER_GRUNT_SPACE_CENTER_1 22
+#define TRAINER_GRUNT_MT_PYRE_1 23
+#define TRAINER_GRUNT_MT_PYRE_2 24
+#define TRAINER_GRUNT_MT_PYRE_3 25
+#define TRAINER_GRUNT_WEATHER_INST_4 26
+#define TRAINER_GRUNT_AQUA_HIDEOUT_5 27
+#define TRAINER_GRUNT_AQUA_HIDEOUT_6 28
+#define TRAINER_FREDRICK 29
+#define TRAINER_MATT 30
+#define TRAINER_ZANDER 31
+#define TRAINER_SHELLY_WEATHER_INSTITUTE 32
+#define TRAINER_SHELLY_SEAFLOOR_CAVERN 33
+#define TRAINER_ARCHIE 34
+#define TRAINER_LEAH 35
+#define TRAINER_DAISY 36
+#define TRAINER_ROSE_1 37
+#define TRAINER_FELIX 38
+#define TRAINER_VIOLET 39
+#define TRAINER_ROSE_2 40
+#define TRAINER_ROSE_3 41
+#define TRAINER_ROSE_4 42
+#define TRAINER_ROSE_5 43
+#define TRAINER_DUSTY_1 44
+#define TRAINER_CHIP 45
+#define TRAINER_FOSTER 46
+#define TRAINER_DUSTY_2 47
+#define TRAINER_DUSTY_3 48
+#define TRAINER_DUSTY_4 49
+#define TRAINER_DUSTY_5 50
+#define TRAINER_GABBY_AND_TY_1 51
+#define TRAINER_GABBY_AND_TY_2 52
+#define TRAINER_GABBY_AND_TY_3 53
+#define TRAINER_GABBY_AND_TY_4 54
+#define TRAINER_GABBY_AND_TY_5 55
+#define TRAINER_GABBY_AND_TY_6 56
+#define TRAINER_LOLA_1 57
+#define TRAINER_AUSTINA 58
+#define TRAINER_GWEN 59
+#define TRAINER_LOLA_2 60
+#define TRAINER_LOLA_3 61
+#define TRAINER_LOLA_4 62
+#define TRAINER_LOLA_5 63
+#define TRAINER_RICKY_1 64
+#define TRAINER_SIMON 65
+#define TRAINER_CHARLIE 66
+#define TRAINER_RICKY_2 67
+#define TRAINER_RICKY_3 68
+#define TRAINER_RICKY_4 69
+#define TRAINER_RICKY_5 70
+#define TRAINER_RANDALL 71
+#define TRAINER_PARKER 72
+#define TRAINER_GEORGE 73
+#define TRAINER_BERKE 74
+#define TRAINER_BRAXTON 75
+#define TRAINER_VINCENT 76
+#define TRAINER_LEROY 77
+#define TRAINER_WILTON_1 78
+#define TRAINER_EDGAR 79
+#define TRAINER_ALBERT 80
+#define TRAINER_SAMUEL 81
+#define TRAINER_VITO 82
+#define TRAINER_OWEN 83
+#define TRAINER_WILTON_2 84
+#define TRAINER_WILTON_3 85
+#define TRAINER_WILTON_4 86
+#define TRAINER_WILTON_5 87
+#define TRAINER_WARREN 88
+#define TRAINER_MARY 89
+#define TRAINER_ALEXIA 90
+#define TRAINER_JODY 91
+#define TRAINER_WENDY 92
+#define TRAINER_KEIRA 93
+#define TRAINER_BROOKE_1 94
+#define TRAINER_JENNIFER 95
+#define TRAINER_HOPE 96
+#define TRAINER_SHANNON 97
+#define TRAINER_MICHELLE 98
+#define TRAINER_CAROLINE 99
+#define TRAINER_JULIE 100
+#define TRAINER_BROOKE_2 101
+#define TRAINER_BROOKE_3 102
+#define TRAINER_BROOKE_4 103
+#define TRAINER_BROOKE_5 104
+#define TRAINER_PATRICIA 105
+#define TRAINER_KINDRA 106
+#define TRAINER_TAMMY 107
+#define TRAINER_VALERIE_1 108
+#define TRAINER_TASHA 109
+#define TRAINER_VALERIE_2 110
+#define TRAINER_VALERIE_3 111
+#define TRAINER_VALERIE_4 112
+#define TRAINER_VALERIE_5 113
+#define TRAINER_CINDY_1 114
+#define TRAINER_DAPHNE 115
+#define TRAINER_GRUNT_SPACE_CENTER_2 116
+#define TRAINER_CINDY_2 117
+#define TRAINER_BRIANNA 118
+#define TRAINER_NAOMI 119
+#define TRAINER_CINDY_3 120
+#define TRAINER_CINDY_4 121
+#define TRAINER_CINDY_5 122
+#define TRAINER_CINDY_6 123
+#define TRAINER_MELISSA 124
+#define TRAINER_SHEILA 125
+#define TRAINER_SHIRLEY 126
+#define TRAINER_JESSICA_1 127
+#define TRAINER_CONNIE 128
+#define TRAINER_BRIDGET 129
+#define TRAINER_OLIVIA 130
+#define TRAINER_TIFFANY 131
+#define TRAINER_JESSICA_2 132
+#define TRAINER_JESSICA_3 133
+#define TRAINER_JESSICA_4 134
+#define TRAINER_JESSICA_5 135
+#define TRAINER_WINSTON_1 136
+#define TRAINER_MOLLIE 137
+#define TRAINER_GARRET 138
+#define TRAINER_WINSTON_2 139
+#define TRAINER_WINSTON_3 140
+#define TRAINER_WINSTON_4 141
+#define TRAINER_WINSTON_5 142
+#define TRAINER_STEVE_1 143
+#define TRAINER_THALIA_1 144
+#define TRAINER_MARK 145
+#define TRAINER_GRUNT_MT_CHIMNEY_1 146
+#define TRAINER_STEVE_2 147
+#define TRAINER_STEVE_3 148
+#define TRAINER_STEVE_4 149
+#define TRAINER_STEVE_5 150
+#define TRAINER_LUIS 151
+#define TRAINER_DOMINIK 152
+#define TRAINER_DOUGLAS 153
+#define TRAINER_DARRIN 154
+#define TRAINER_TONY_1 155
+#define TRAINER_JEROME 156
+#define TRAINER_MATTHEW 157
+#define TRAINER_DAVID 158
+#define TRAINER_SPENCER 159
+#define TRAINER_ROLAND 160
+#define TRAINER_NOLEN 161
+#define TRAINER_STAN 162
+#define TRAINER_BARRY 163
+#define TRAINER_DEAN 164
+#define TRAINER_RODNEY 165
+#define TRAINER_RICHARD 166
+#define TRAINER_HERMAN 167
+#define TRAINER_SANTIAGO 168
+#define TRAINER_GILBERT 169
+#define TRAINER_FRANKLIN 170
+#define TRAINER_KEVIN 171
+#define TRAINER_JACK 172
+#define TRAINER_DUDLEY 173
+#define TRAINER_CHAD 174
+#define TRAINER_TONY_2 175
+#define TRAINER_TONY_3 176
+#define TRAINER_TONY_4 177
+#define TRAINER_TONY_5 178
+#define TRAINER_TAKAO 179
+#define TRAINER_HITOSHI 180
+#define TRAINER_KIYO 181
+#define TRAINER_KOICHI 182
+#define TRAINER_NOB_1 183
+#define TRAINER_NOB_2 184
+#define TRAINER_NOB_3 185
+#define TRAINER_NOB_4 186
+#define TRAINER_NOB_5 187
+#define TRAINER_YUJI 188
+#define TRAINER_DAISUKE 189
+#define TRAINER_ATSUSHI 190
+#define TRAINER_KIRK 191
+#define TRAINER_GRUNT_AQUA_HIDEOUT_7 192
+#define TRAINER_GRUNT_AQUA_HIDEOUT_8 193
+#define TRAINER_SHAWN 194
+#define TRAINER_FERNANDO_1 195
+#define TRAINER_DALTON_1 196
+#define TRAINER_DALTON_2 197
+#define TRAINER_DALTON_3 198
+#define TRAINER_DALTON_4 199
+#define TRAINER_DALTON_5 200
+#define TRAINER_COLE 201
+#define TRAINER_JEFF 202
+#define TRAINER_AXLE 203
+#define TRAINER_JACE 204
+#define TRAINER_KEEGAN 205
+#define TRAINER_BERNIE_1 206
+#define TRAINER_BERNIE_2 207
+#define TRAINER_BERNIE_3 208
+#define TRAINER_BERNIE_4 209
+#define TRAINER_BERNIE_5 210
+#define TRAINER_DREW 211
+#define TRAINER_BEAU 212
+#define TRAINER_LARRY 213
+#define TRAINER_SHANE 214
+#define TRAINER_JUSTIN 215
+#define TRAINER_ETHAN_1 216
+#define TRAINER_AUTUMN 217
+#define TRAINER_TRAVIS 218
+#define TRAINER_ETHAN_2 219
+#define TRAINER_ETHAN_3 220
+#define TRAINER_ETHAN_4 221
+#define TRAINER_ETHAN_5 222
+#define TRAINER_BRENT 223
+#define TRAINER_DONALD 224
+#define TRAINER_TAYLOR 225
+#define TRAINER_JEFFREY_1 226
+#define TRAINER_DEREK 227
+#define TRAINER_JEFFREY_2 228
+#define TRAINER_JEFFREY_3 229
+#define TRAINER_JEFFREY_4 230
+#define TRAINER_JEFFREY_5 231
+#define TRAINER_EDWARD 232
+#define TRAINER_PRESTON 233
+#define TRAINER_VIRGIL 234
+#define TRAINER_BLAKE 235
+#define TRAINER_WILLIAM 236
+#define TRAINER_JOSHUA 237
+#define TRAINER_CAMERON_1 238
+#define TRAINER_CAMERON_2 239
+#define TRAINER_CAMERON_3 240
+#define TRAINER_CAMERON_4 241
+#define TRAINER_CAMERON_5 242
+#define TRAINER_JACLYN 243
+#define TRAINER_HANNAH 244
+#define TRAINER_SAMANTHA 245
+#define TRAINER_MAURA 246
+#define TRAINER_KAYLA 247
+#define TRAINER_ALEXIS 248
+#define TRAINER_JACKI_1 249
+#define TRAINER_JACKI_2 250
+#define TRAINER_JACKI_3 251
+#define TRAINER_JACKI_4 252
+#define TRAINER_JACKI_5 253
+#define TRAINER_WALTER_1 254
+#define TRAINER_MICAH 255
+#define TRAINER_THOMAS 256
+#define TRAINER_WALTER_2 257
+#define TRAINER_WALTER_3 258
+#define TRAINER_WALTER_4 259
+#define TRAINER_WALTER_5 260
+#define TRAINER_SIDNEY 261
+#define TRAINER_PHOEBE 262
+#define TRAINER_GLACIA 263
+#define TRAINER_DRAKE 264
+#define TRAINER_ROXANNE_1 265
+#define TRAINER_BRAWLY_1 266
+#define TRAINER_WATTSON_1 267
+#define TRAINER_FLANNERY_1 268
+#define TRAINER_NORMAN_1 269
+#define TRAINER_WINONA_1 270
+#define TRAINER_TATE_AND_LIZA_1 271
+#define TRAINER_JUAN_1 272
+#define TRAINER_JERRY_1 273
+#define TRAINER_TED 274
+#define TRAINER_PAUL 275
+#define TRAINER_JERRY_2 276
+#define TRAINER_JERRY_3 277
+#define TRAINER_JERRY_4 278
+#define TRAINER_JERRY_5 279
+#define TRAINER_KAREN_1 280
+#define TRAINER_GEORGIA 281
+#define TRAINER_KAREN_2 282
+#define TRAINER_KAREN_3 283
+#define TRAINER_KAREN_4 284
+#define TRAINER_KAREN_5 285
+#define TRAINER_KATE_AND_JOY 286
+#define TRAINER_ANNA_AND_MEG_1 287
+#define TRAINER_ANNA_AND_MEG_2 288
+#define TRAINER_ANNA_AND_MEG_3 289
+#define TRAINER_ANNA_AND_MEG_4 290
+#define TRAINER_ANNA_AND_MEG_5 291
+#define TRAINER_VICTOR 292
+#define TRAINER_MIGUEL_1 293
+#define TRAINER_COLTON 294
+#define TRAINER_MIGUEL_2 295
+#define TRAINER_MIGUEL_3 296
+#define TRAINER_MIGUEL_4 297
+#define TRAINER_MIGUEL_5 298
+#define TRAINER_VICTORIA 299
+#define TRAINER_VANESSA 300
+#define TRAINER_BETHANY 301
+#define TRAINER_ISABEL_1 302
+#define TRAINER_ISABEL_2 303
+#define TRAINER_ISABEL_3 304
+#define TRAINER_ISABEL_4 305
+#define TRAINER_ISABEL_5 306
+#define TRAINER_TIMOTHY_1 307
+#define TRAINER_TIMOTHY_2 308
+#define TRAINER_TIMOTHY_3 309
+#define TRAINER_TIMOTHY_4 310
+#define TRAINER_TIMOTHY_5 311
+#define TRAINER_VICKY 312
+#define TRAINER_SHELBY_1 313
+#define TRAINER_SHELBY_2 314
+#define TRAINER_SHELBY_3 315
+#define TRAINER_SHELBY_4 316
+#define TRAINER_SHELBY_5 317
+#define TRAINER_CALVIN_1 318
+#define TRAINER_BILLY 319
+#define TRAINER_JOSH 320
+#define TRAINER_TOMMY 321
+#define TRAINER_JOEY 322
+#define TRAINER_BEN 323
+#define TRAINER_QUINCY 324
+#define TRAINER_KATELYNN 325
+#define TRAINER_JAYLEN 326
+#define TRAINER_DILLON 327
+#define TRAINER_CALVIN_2 328
+#define TRAINER_CALVIN_3 329
+#define TRAINER_CALVIN_4 330
+#define TRAINER_CALVIN_5 331
+#define TRAINER_EDDIE 332
+#define TRAINER_ALLEN 333
+#define TRAINER_TIMMY 334
+#define TRAINER_WALLACE 335
+#define TRAINER_ANDREW 336
+#define TRAINER_IVAN 337
+#define TRAINER_CLAUDE 338
+#define TRAINER_ELLIOT_1 339
+#define TRAINER_NED 340
+#define TRAINER_DALE 341
+#define TRAINER_NOLAN 342
+#define TRAINER_BARNY 343
+#define TRAINER_WADE 344
+#define TRAINER_CARTER 345
+#define TRAINER_ELLIOT_2 346
+#define TRAINER_ELLIOT_3 347
+#define TRAINER_ELLIOT_4 348
+#define TRAINER_ELLIOT_5 349
+#define TRAINER_RONALD 350
+#define TRAINER_JACOB 351
+#define TRAINER_ANTHONY 352
+#define TRAINER_BENJAMIN_1 353
+#define TRAINER_BENJAMIN_2 354
+#define TRAINER_BENJAMIN_3 355
+#define TRAINER_BENJAMIN_4 356
+#define TRAINER_BENJAMIN_5 357
+#define TRAINER_ABIGAIL_1 358
+#define TRAINER_JASMINE 359
+#define TRAINER_ABIGAIL_2 360
+#define TRAINER_ABIGAIL_3 361
+#define TRAINER_ABIGAIL_4 362
+#define TRAINER_ABIGAIL_5 363
+#define TRAINER_DYLAN_1 364
+#define TRAINER_DYLAN_2 365
+#define TRAINER_DYLAN_3 366
+#define TRAINER_DYLAN_4 367
+#define TRAINER_DYLAN_5 368
+#define TRAINER_MARIA_1 369
+#define TRAINER_MARIA_2 370
+#define TRAINER_MARIA_3 371
+#define TRAINER_MARIA_4 372
+#define TRAINER_MARIA_5 373
+#define TRAINER_CAMDEN 374
+#define TRAINER_DEMETRIUS 375
+#define TRAINER_ISAIAH_1 376
+#define TRAINER_PABLO_1 377
+#define TRAINER_CHASE 378
+#define TRAINER_ISAIAH_2 379
+#define TRAINER_ISAIAH_3 380
+#define TRAINER_ISAIAH_4 381
+#define TRAINER_ISAIAH_5 382
+#define TRAINER_ISOBEL 383
+#define TRAINER_DONNY 384
+#define TRAINER_TALIA 385
+#define TRAINER_KATELYN_1 386
+#define TRAINER_ALLISON 387
+#define TRAINER_KATELYN_2 388
+#define TRAINER_KATELYN_3 389
+#define TRAINER_KATELYN_4 390
+#define TRAINER_KATELYN_5 391
+#define TRAINER_NICOLAS_1 392
+#define TRAINER_NICOLAS_2 393
+#define TRAINER_NICOLAS_3 394
+#define TRAINER_NICOLAS_4 395
+#define TRAINER_NICOLAS_5 396
+#define TRAINER_AARON 397
+#define TRAINER_PERRY 398
+#define TRAINER_HUGH 399
+#define TRAINER_PHIL 400
+#define TRAINER_JARED 401
+#define TRAINER_HUMBERTO 402
+#define TRAINER_PRESLEY 403
+#define TRAINER_EDWARDO 404
+#define TRAINER_COLIN 405
+#define TRAINER_ROBERT_1 406
+#define TRAINER_BENNY 407
+#define TRAINER_CHESTER 408
+#define TRAINER_ROBERT_2 409
+#define TRAINER_ROBERT_3 410
+#define TRAINER_ROBERT_4 411
+#define TRAINER_ROBERT_5 412
+#define TRAINER_ALEX 413
+#define TRAINER_BECK 414
+#define TRAINER_YASU 415
+#define TRAINER_TAKASHI 416
+#define TRAINER_DIANNE 417
+#define TRAINER_JANI 418
+#define TRAINER_LAO_1 419
+#define TRAINER_LUNG 420
+#define TRAINER_LAO_2 421
+#define TRAINER_LAO_3 422
+#define TRAINER_LAO_4 423
+#define TRAINER_LAO_5 424
+#define TRAINER_JOCELYN 425
+#define TRAINER_LAURA 426
+#define TRAINER_CYNDY_1 427
+#define TRAINER_CORA 428
+#define TRAINER_PAULA 429
+#define TRAINER_CYNDY_2 430
+#define TRAINER_CYNDY_3 431
+#define TRAINER_CYNDY_4 432
+#define TRAINER_CYNDY_5 433
+#define TRAINER_MADELINE_1 434
+#define TRAINER_CLARISSA 435
+#define TRAINER_ANGELICA 436
+#define TRAINER_MADELINE_2 437
+#define TRAINER_MADELINE_3 438
+#define TRAINER_MADELINE_4 439
+#define TRAINER_MADELINE_5 440
+#define TRAINER_BEVERLY 441
+#define TRAINER_IMANI 442
+#define TRAINER_KYLA 443
+#define TRAINER_DENISE 444
+#define TRAINER_BETH 445
+#define TRAINER_TARA 446
+#define TRAINER_MISSY 447
+#define TRAINER_ALICE 448
+#define TRAINER_JENNY_1 449
+#define TRAINER_GRACE 450
+#define TRAINER_TANYA 451
+#define TRAINER_SHARON 452
+#define TRAINER_NIKKI 453
+#define TRAINER_BRENDA 454
+#define TRAINER_KATIE 455
+#define TRAINER_SUSIE 456
+#define TRAINER_KARA 457
+#define TRAINER_DANA 458
+#define TRAINER_SIENNA 459
+#define TRAINER_DEBRA 460
+#define TRAINER_LINDA 461
+#define TRAINER_KAYLEE 462
+#define TRAINER_LAUREL 463
+#define TRAINER_CARLEE 464
+#define TRAINER_JENNY_2 465
+#define TRAINER_JENNY_3 466
+#define TRAINER_JENNY_4 467
+#define TRAINER_JENNY_5 468
+#define TRAINER_HEIDI 469
+#define TRAINER_BECKY 470
+#define TRAINER_CAROL 471
+#define TRAINER_NANCY 472
+#define TRAINER_MARTHA 473
+#define TRAINER_DIANA_1 474
+#define TRAINER_CEDRIC 475
+#define TRAINER_IRENE 476
+#define TRAINER_DIANA_2 477
+#define TRAINER_DIANA_3 478
+#define TRAINER_DIANA_4 479
+#define TRAINER_DIANA_5 480
+#define TRAINER_AMY_AND_LIV_1 481
+#define TRAINER_AMY_AND_LIV_2 482
+#define TRAINER_GINA_AND_MIA_1 483
+#define TRAINER_MIU_AND_YUKI 484
+#define TRAINER_AMY_AND_LIV_3 485
+#define TRAINER_GINA_AND_MIA_2 486
+#define TRAINER_AMY_AND_LIV_4 487
+#define TRAINER_AMY_AND_LIV_5 488
+#define TRAINER_AMY_AND_LIV_6 489
+#define TRAINER_HUEY 490
+#define TRAINER_EDMOND 491
+#define TRAINER_ERNEST_1 492
+#define TRAINER_DWAYNE 493
+#define TRAINER_PHILLIP 494
+#define TRAINER_LEONARD 495
+#define TRAINER_DUNCAN 496
+#define TRAINER_ERNEST_2 497
+#define TRAINER_ERNEST_3 498
+#define TRAINER_ERNEST_4 499
+#define TRAINER_ERNEST_5 500
+#define TRAINER_ELI 501
+#define TRAINER_ANNIKA 502
+#define TRAINER_JAZMYN 503
+#define TRAINER_JONAS 504
+#define TRAINER_KAYLEY 505
+#define TRAINER_AURON 506
+#define TRAINER_KELVIN 507
+#define TRAINER_MARLEY 508
+#define TRAINER_REYNA 509
+#define TRAINER_HUDSON 510
+#define TRAINER_CONOR 511
+#define TRAINER_EDWIN_1 512
+#define TRAINER_HECTOR 513
+#define TRAINER_TABITHA_MOSSDEEP 514
+#define TRAINER_EDWIN_2 515
+#define TRAINER_EDWIN_3 516
+#define TRAINER_EDWIN_4 517
+#define TRAINER_EDWIN_5 518
+#define TRAINER_WALLY_VR_1 519
+#define TRAINER_BRENDAN_ROUTE_103_MUDKIP 520
+#define TRAINER_BRENDAN_ROUTE_110_MUDKIP 521
+#define TRAINER_BRENDAN_ROUTE_119_MUDKIP 522
+#define TRAINER_BRENDAN_ROUTE_103_TREECKO 523
+#define TRAINER_BRENDAN_ROUTE_110_TREECKO 524
+#define TRAINER_BRENDAN_ROUTE_119_TREECKO 525
+#define TRAINER_BRENDAN_ROUTE_103_TORCHIC 526
+#define TRAINER_BRENDAN_ROUTE_110_TORCHIC 527
+#define TRAINER_BRENDAN_ROUTE_119_TORCHIC 528
+#define TRAINER_MAY_ROUTE_103_MUDKIP 529
+#define TRAINER_MAY_ROUTE_110_MUDKIP 530
+#define TRAINER_MAY_ROUTE_119_MUDKIP 531
+#define TRAINER_MAY_ROUTE_103_TREECKO 532
+#define TRAINER_MAY_ROUTE_110_TREECKO 533
+#define TRAINER_MAY_ROUTE_119_TREECKO 534
+#define TRAINER_MAY_ROUTE_103_TORCHIC 535
+#define TRAINER_MAY_ROUTE_110_TORCHIC 536
+#define TRAINER_MAY_ROUTE_119_TORCHIC 537
+#define TRAINER_ISAAC_1 538
+#define TRAINER_DAVIS 539
+#define TRAINER_MITCHELL 540
+#define TRAINER_ISAAC_2 541
+#define TRAINER_ISAAC_3 542
+#define TRAINER_ISAAC_4 543
+#define TRAINER_ISAAC_5 544
+#define TRAINER_LYDIA_1 545
+#define TRAINER_HALLE 546
+#define TRAINER_GARRISON 547
+#define TRAINER_LYDIA_2 548
+#define TRAINER_LYDIA_3 549
+#define TRAINER_LYDIA_4 550
+#define TRAINER_LYDIA_5 551
+#define TRAINER_JACKSON_1 552
+#define TRAINER_LORENZO 553
+#define TRAINER_SEBASTIAN 554
+#define TRAINER_JACKSON_2 555
+#define TRAINER_JACKSON_3 556
+#define TRAINER_JACKSON_4 557
+#define TRAINER_JACKSON_5 558
+#define TRAINER_CATHERINE_1 559
+#define TRAINER_JENNA 560
+#define TRAINER_SOPHIA 561
+#define TRAINER_CATHERINE_2 562
+#define TRAINER_CATHERINE_3 563
+#define TRAINER_CATHERINE_4 564
+#define TRAINER_CATHERINE_5 565
+#define TRAINER_JULIO 566
+#define TRAINER_GRUNT_SEAFLOOR_CAVERN_5 567
+#define TRAINER_GRUNT_UNUSED 568
+#define TRAINER_GRUNT_MT_PYRE_4 569
+#define TRAINER_GRUNT_JAGGED_PASS 570
+#define TRAINER_MARC 571
+#define TRAINER_BRENDEN 572
+#define TRAINER_LILITH 573
+#define TRAINER_CRISTIAN 574
+#define TRAINER_SYLVIA 575
+#define TRAINER_LEONARDO 576
+#define TRAINER_ATHENA 577
+#define TRAINER_HARRISON 578
+#define TRAINER_GRUNT_MT_CHIMNEY_2 579
+#define TRAINER_CLARENCE 580
+#define TRAINER_TERRY 581
+#define TRAINER_NATE 582
+#define TRAINER_KATHLEEN 583
+#define TRAINER_CLIFFORD 584
+#define TRAINER_NICHOLAS 585
+#define TRAINER_GRUNT_SPACE_CENTER_3 586
+#define TRAINER_GRUNT_SPACE_CENTER_4 587
+#define TRAINER_GRUNT_SPACE_CENTER_5 588
+#define TRAINER_GRUNT_SPACE_CENTER_6 589
+#define TRAINER_GRUNT_SPACE_CENTER_7 590
+#define TRAINER_MACEY 591
+#define TRAINER_BRENDAN_RUSTBORO_TREECKO 592
+#define TRAINER_BRENDAN_RUSTBORO_MUDKIP 593
+#define TRAINER_PAXTON 594
+#define TRAINER_ISABELLA 595
+#define TRAINER_GRUNT_WEATHER_INST_5 596
+#define TRAINER_TABITHA_MT_CHIMNEY 597
+#define TRAINER_JONATHAN 598
+#define TRAINER_BRENDAN_RUSTBORO_TORCHIC 599
+#define TRAINER_MAY_RUSTBORO_MUDKIP 600
+#define TRAINER_MAXIE_MAGMA_HIDEOUT 601
+#define TRAINER_MAXIE_MT_CHIMNEY 602
+#define TRAINER_TIANA 603
+#define TRAINER_HALEY_1 604
+#define TRAINER_JANICE 605
+#define TRAINER_VIVI 606
+#define TRAINER_HALEY_2 607
+#define TRAINER_HALEY_3 608
+#define TRAINER_HALEY_4 609
+#define TRAINER_HALEY_5 610
+#define TRAINER_SALLY 611
+#define TRAINER_ROBIN 612
+#define TRAINER_ANDREA 613
+#define TRAINER_CRISSY 614
+#define TRAINER_RICK 615
+#define TRAINER_LYLE 616
+#define TRAINER_JOSE 617
+#define TRAINER_DOUG 618
+#define TRAINER_GREG 619
+#define TRAINER_KENT 620
+#define TRAINER_JAMES_1 621
+#define TRAINER_JAMES_2 622
+#define TRAINER_JAMES_3 623
+#define TRAINER_JAMES_4 624
+#define TRAINER_JAMES_5 625
+#define TRAINER_BRICE 626
+#define TRAINER_TRENT_1 627
+#define TRAINER_LENNY 628
+#define TRAINER_LUCAS_1 629
+#define TRAINER_ALAN 630
+#define TRAINER_CLARK 631
+#define TRAINER_ERIC 632
+#define TRAINER_LUCAS_2 633
+#define TRAINER_MIKE_1 634
+#define TRAINER_MIKE_2 635
+#define TRAINER_TRENT_2 636
+#define TRAINER_TRENT_3 637
+#define TRAINER_TRENT_4 638
+#define TRAINER_TRENT_5 639
+#define TRAINER_DEZ_AND_LUKE 640
+#define TRAINER_LEA_AND_JED 641
+#define TRAINER_KIRA_AND_DAN_1 642
+#define TRAINER_KIRA_AND_DAN_2 643
+#define TRAINER_KIRA_AND_DAN_3 644
+#define TRAINER_KIRA_AND_DAN_4 645
+#define TRAINER_KIRA_AND_DAN_5 646
+#define TRAINER_JOHANNA 647
+#define TRAINER_GERALD 648
+#define TRAINER_VIVIAN 649
+#define TRAINER_DANIELLE 650
+#define TRAINER_HIDEO 651
+#define TRAINER_KEIGO 652
+#define TRAINER_RILEY 653
+#define TRAINER_FLINT 654
+#define TRAINER_ASHLEY 655
+#define TRAINER_WALLY_MAUVILLE 656
+#define TRAINER_WALLY_VR_2 657
+#define TRAINER_WALLY_VR_3 658
+#define TRAINER_WALLY_VR_4 659
+#define TRAINER_WALLY_VR_5 660
+#define TRAINER_BRENDAN_LILYCOVE_MUDKIP 661
+#define TRAINER_BRENDAN_LILYCOVE_TREECKO 662
+#define TRAINER_BRENDAN_LILYCOVE_TORCHIC 663
+#define TRAINER_MAY_LILYCOVE_MUDKIP 664
+#define TRAINER_MAY_LILYCOVE_TREECKO 665
+#define TRAINER_MAY_LILYCOVE_TORCHIC 666
+#define TRAINER_JONAH 667
+#define TRAINER_HENRY 668
+#define TRAINER_ROGER 669
+#define TRAINER_ALEXA 670
+#define TRAINER_RUBEN 671
+#define TRAINER_KOJI_1 672
+#define TRAINER_WAYNE 673
+#define TRAINER_AIDAN 674
+#define TRAINER_REED 675
+#define TRAINER_TISHA 676
+#define TRAINER_TORI_AND_TIA 677
+#define TRAINER_KIM_AND_IRIS 678
+#define TRAINER_TYRA_AND_IVY 679
+#define TRAINER_MEL_AND_PAUL 680
+#define TRAINER_JOHN_AND_JAY_1 681
+#define TRAINER_JOHN_AND_JAY_2 682
+#define TRAINER_JOHN_AND_JAY_3 683
+#define TRAINER_JOHN_AND_JAY_4 684
+#define TRAINER_JOHN_AND_JAY_5 685
+#define TRAINER_RELI_AND_IAN 686
+#define TRAINER_LILA_AND_ROY_1 687
+#define TRAINER_LILA_AND_ROY_2 688
+#define TRAINER_LILA_AND_ROY_3 689
+#define TRAINER_LILA_AND_ROY_4 690
+#define TRAINER_LILA_AND_ROY_5 691
+#define TRAINER_LISA_AND_RAY 692
+#define TRAINER_CHRIS 693
+#define TRAINER_DAWSON 694
+#define TRAINER_SARAH 695
+#define TRAINER_DARIAN 696
+#define TRAINER_HAILEY 697
+#define TRAINER_CHANDLER 698
+#define TRAINER_KALEB 699
+#define TRAINER_JOSEPH 700
+#define TRAINER_ALYSSA 701
+#define TRAINER_MARCOS 702
+#define TRAINER_RHETT 703
+#define TRAINER_TYRON 704
+#define TRAINER_CELINA 705
+#define TRAINER_BIANCA 706
+#define TRAINER_HAYDEN 707
+#define TRAINER_SOPHIE 708
+#define TRAINER_COBY 709
+#define TRAINER_LAWRENCE 710
+#define TRAINER_WYATT 711
+#define TRAINER_ANGELINA 712
+#define TRAINER_KAI 713
+#define TRAINER_CHARLOTTE 714
+#define TRAINER_DEANDRE 715
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_1 716
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_2 717
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_3 718
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_4 719
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_5 720
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_6 721
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_7 722
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_8 723
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_9 724
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_10 725
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_11 726
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_12 727
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_13 728
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_14 729
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_15 730
+#define TRAINER_GRUNT_MAGMA_HIDEOUT_16 731
+#define TRAINER_TABITHA_MAGMA_HIDEOUT 732
+#define TRAINER_DARCY 733
+#define TRAINER_MAXIE_MOSSDEEP 734
+#define TRAINER_PETE 735
+#define TRAINER_ISABELLE 736
+#define TRAINER_ANDRES_1 737
+#define TRAINER_JOSUE 738
+#define TRAINER_CAMRON 739
+#define TRAINER_CORY_1 740
+#define TRAINER_CAROLINA 741
+#define TRAINER_ELIJAH 742
+#define TRAINER_CELIA 743
+#define TRAINER_BRYAN 744
+#define TRAINER_BRANDEN 745
+#define TRAINER_BRYANT 746
+#define TRAINER_SHAYLA 747
+#define TRAINER_KYRA 748
+#define TRAINER_JAIDEN 749
+#define TRAINER_ALIX 750
+#define TRAINER_HELENE 751
+#define TRAINER_MARLENE 752
+#define TRAINER_DEVAN 753
+#define TRAINER_JOHNSON 754
+#define TRAINER_MELINA 755
+#define TRAINER_BRANDI 756
+#define TRAINER_AISHA 757
+#define TRAINER_MAKAYLA 758
+#define TRAINER_FABIAN 759
+#define TRAINER_DAYTON 760
+#define TRAINER_RACHEL 761
+#define TRAINER_LEONEL 762
+#define TRAINER_CALLIE 763
+#define TRAINER_CALE 764
+#define TRAINER_MYLES 765
+#define TRAINER_PAT 766
+#define TRAINER_CRISTIN_1 767
+#define TRAINER_MAY_RUSTBORO_TREECKO 768
+#define TRAINER_MAY_RUSTBORO_TORCHIC 769
+#define TRAINER_ROXANNE_2 770
+#define TRAINER_ROXANNE_3 771
+#define TRAINER_ROXANNE_4 772
+#define TRAINER_ROXANNE_5 773
+#define TRAINER_BRAWLY_2 774
+#define TRAINER_BRAWLY_3 775
+#define TRAINER_BRAWLY_4 776
+#define TRAINER_BRAWLY_5 777
+#define TRAINER_WATTSON_2 778
+#define TRAINER_WATTSON_3 779
+#define TRAINER_WATTSON_4 780
+#define TRAINER_WATTSON_5 781
+#define TRAINER_FLANNERY_2 782
+#define TRAINER_FLANNERY_3 783
+#define TRAINER_FLANNERY_4 784
+#define TRAINER_FLANNERY_5 785
+#define TRAINER_NORMAN_2 786
+#define TRAINER_NORMAN_3 787
+#define TRAINER_NORMAN_4 788
+#define TRAINER_NORMAN_5 789
+#define TRAINER_WINONA_2 790
+#define TRAINER_WINONA_3 791
+#define TRAINER_WINONA_4 792
+#define TRAINER_WINONA_5 793
+#define TRAINER_TATE_AND_LIZA_2 794
+#define TRAINER_TATE_AND_LIZA_3 795
+#define TRAINER_TATE_AND_LIZA_4 796
+#define TRAINER_TATE_AND_LIZA_5 797
+#define TRAINER_JUAN_2 798
+#define TRAINER_JUAN_3 799
+#define TRAINER_JUAN_4 800
+#define TRAINER_JUAN_5 801
+#define TRAINER_ANGELO 802
+#define TRAINER_DARIUS 803
+#define TRAINER_STEVEN 804
+#define TRAINER_ANABEL 805
+#define TRAINER_TUCKER 806
+#define TRAINER_SPENSER 807
+#define TRAINER_GRETA 808
+#define TRAINER_NOLAND 809
+#define TRAINER_LUCY 810
+#define TRAINER_BRANDON 811
+#define TRAINER_ANDRES_2 812
+#define TRAINER_ANDRES_3 813
+#define TRAINER_ANDRES_4 814
+#define TRAINER_ANDRES_5 815
+#define TRAINER_CORY_2 816
+#define TRAINER_CORY_3 817
+#define TRAINER_CORY_4 818
+#define TRAINER_CORY_5 819
+#define TRAINER_PABLO_2 820
+#define TRAINER_PABLO_3 821
+#define TRAINER_PABLO_4 822
+#define TRAINER_PABLO_5 823
+#define TRAINER_KOJI_2 824
+#define TRAINER_KOJI_3 825
+#define TRAINER_KOJI_4 826
+#define TRAINER_KOJI_5 827
+#define TRAINER_CRISTIN_2 828
+#define TRAINER_CRISTIN_3 829
+#define TRAINER_CRISTIN_4 830
+#define TRAINER_CRISTIN_5 831
+#define TRAINER_FERNANDO_2 832
+#define TRAINER_FERNANDO_3 833
+#define TRAINER_FERNANDO_4 834
+#define TRAINER_FERNANDO_5 835
+#define TRAINER_SAWYER_2 836
+#define TRAINER_SAWYER_3 837
+#define TRAINER_SAWYER_4 838
+#define TRAINER_SAWYER_5 839
+#define TRAINER_GABRIELLE_2 840
+#define TRAINER_GABRIELLE_3 841
+#define TRAINER_GABRIELLE_4 842
+#define TRAINER_GABRIELLE_5 843
+#define TRAINER_THALIA_2 844
+#define TRAINER_THALIA_3 845
+#define TRAINER_THALIA_4 846
+#define TRAINER_THALIA_5 847
+#define TRAINER_MARIELA 848
+#define TRAINER_ALVARO 849
+#define TRAINER_EVERETT 850
+#define TRAINER_RED 851
+#define TRAINER_LEAF 852
+#define TRAINER_BRENDAN_PLACEHOLDER 853
+#define TRAINER_MAY_PLACEHOLDER 854
-#define TRAINERS_COUNT 855
+// NOTE: Because each Trainer uses a flag to determine when they are defeated, there is only space for 9 additional trainers before trainer flag space overflows
+// More space can be made by shifting flags around in constants/flags.h or changing how trainer flags are handled
+
+#define TRAINERS_COUNT 855
+#define MAX_TRAINERS_COUNT 864
#endif // GUARD_CONSTANTS_OPPONENTS_H
diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h
new file mode 100644
index 000000000..7953967ed
--- /dev/null
+++ b/include/constants/party_menu.h
@@ -0,0 +1,132 @@
+#ifndef GUARD_CONSTANTS_PARTY_MENU_H
+#define GUARD_CONSTANTS_PARTY_MENU_H
+
+#define AILMENT_NONE 0
+#define AILMENT_PSN 1
+#define AILMENT_PRZ 2
+#define AILMENT_SLP 3
+#define AILMENT_FRZ 4
+#define AILMENT_BRN 5
+#define AILMENT_PKRS 6
+#define AILMENT_FNT 7
+
+#define TUTOR_MOVE_MEGA_PUNCH 0
+#define TUTOR_MOVE_SWORDS_DANCE 1
+#define TUTOR_MOVE_MEGA_KICK 2
+#define TUTOR_MOVE_BODY_SLAM 3
+#define TUTOR_MOVE_DOUBLE_EDGE 4
+#define TUTOR_MOVE_COUNTER 5
+#define TUTOR_MOVE_SEISMIC_TOSS 6
+#define TUTOR_MOVE_MIMIC 7
+#define TUTOR_MOVE_METRONOME 8
+#define TUTOR_MOVE_SOFT_BOILED 9
+#define TUTOR_MOVE_DREAM_EATER 10
+#define TUTOR_MOVE_THUNDER_WAVE 11
+#define TUTOR_MOVE_EXPLOSION 12
+#define TUTOR_MOVE_ROCK_SLIDE 13
+#define TUTOR_MOVE_SUBSTITUTE 14
+#define TUTOR_MOVE_DYNAMIC_PUNCH 15
+#define TUTOR_MOVE_ROLLOUT 16
+#define TUTOR_MOVE_PSYCH_UP 17
+#define TUTOR_MOVE_SNORE 18
+#define TUTOR_MOVE_ICY_WIND 19
+#define TUTOR_MOVE_ENDURE 20
+#define TUTOR_MOVE_MUD_SLAP 21
+#define TUTOR_MOVE_ICE_PUNCH 22
+#define TUTOR_MOVE_SWAGGER 23
+#define TUTOR_MOVE_SLEEP_TALK 24
+#define TUTOR_MOVE_SWIFT 25
+#define TUTOR_MOVE_DEFENSE_CURL 26
+#define TUTOR_MOVE_THUNDER_PUNCH 27
+#define TUTOR_MOVE_FIRE_PUNCH 28
+#define TUTOR_MOVE_FURY_CUTTER 29
+#define TUTOR_MOVE_COUNT 30
+
+#define PARTY_LAYOUT_SINGLE 0
+#define PARTY_LAYOUT_DOUBLE 1
+#define PARTY_LAYOUT_MULTI 2
+#define PARTY_LAYOUT_MULTI_SHOWCASE 3 // The layout during the screen that appears just before a multi battle
+#define PARTY_LAYOUT_COUNT 4
+#define KEEP_PARTY_LAYOUT 0xFF
+
+#define PARTY_MENU_TYPE_FIELD 0
+#define PARTY_MENU_TYPE_IN_BATTLE 1
+#define PARTY_MENU_TYPE_CONTEST 2
+#define PARTY_MENU_TYPE_CHOOSE_MON 3
+#define PARTY_MENU_TYPE_CHOOSE_HALF 4 // multi battles, eReader battles, and some battle facilities
+#define PARTY_MENU_TYPE_MULTI_SHOWCASE 5
+#define PARTY_MENU_TYPE_DAYCARE 6
+#define PARTY_MENU_TYPE_MOVE_RELEARNER 7
+#define PARTY_MENU_TYPE_UNION_ROOM_REGISTER 8 // trading board
+#define PARTY_MENU_TYPE_UNION_ROOM_TRADE 9 // trading board
+#define PARTY_MENU_TYPE_SPIN_TRADE 10 // Unused beta for Gen IV's Spin Trade
+#define PARTY_MENU_TYPE_MINIGAME 11
+#define PARTY_MENU_TYPE_STORE_PYRAMID_HELD_ITEMS 12
+
+#define PARTY_ACTION_CHOOSE_MON 0
+#define PARTY_ACTION_SEND_OUT 1
+#define PARTY_ACTION_CANT_SWITCH 2
+#define PARTY_ACTION_USE_ITEM 3
+#define PARTY_ACTION_ABILITY_PREVENTS 4
+#define PARTY_ACTION_GIVE_ITEM 5
+#define PARTY_ACTION_GIVE_PC_ITEM 6 // Unused. Not possible to give non-mail items directly from PC
+#define PARTY_ACTION_GIVE_MAILBOX_MAIL 7
+#define PARTY_ACTION_SWITCH 8
+#define PARTY_ACTION_SWITCHING 9
+#define PARTY_ACTION_SOFTBOILED 10
+#define PARTY_ACTION_CHOOSE_AND_CLOSE 11
+#define PARTY_ACTION_MOVE_TUTOR 12
+#define PARTY_ACTION_MINIGAME 13
+#define PARTY_ACTION_REUSABLE_ITEM 14 // Unused. The only reusable items are handled separately
+
+// IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu
+#define PARTY_MSG_CHOOSE_MON 0
+#define PARTY_MSG_CHOOSE_MON_OR_CANCEL 1
+#define PARTY_MSG_CHOOSE_MON_AND_CONFIRM 2
+#define PARTY_MSG_MOVE_TO_WHERE 3
+#define PARTY_MSG_TEACH_WHICH_MON 4
+#define PARTY_MSG_USE_ON_WHICH_MON 5
+#define PARTY_MSG_GIVE_TO_WHICH_MON 6
+#define PARTY_MSG_NOTHING_TO_CUT 7
+#define PARTY_MSG_CANT_SURF_HERE 8
+#define PARTY_MSG_ALREADY_SURFING 9
+#define PARTY_MSG_CURRENT_TOO_FAST 10
+#define PARTY_MSG_ENJOY_CYCLING 11
+#define PARTY_MSG_ALREADY_IN_USE 12
+#define PARTY_MSG_CANT_USE_HERE 13
+#define PARTY_MSG_NO_MON_FOR_BATTLE 14
+#define PARTY_MSG_CHOOSE_MON_2 15
+#define PARTY_MSG_NOT_ENOUGH_HP 16
+#define PARTY_MSG_X_MONS_ARE_NEEDED 17
+#define PARTY_MSG_MONS_CANT_BE_SAME 18
+#define PARTY_MSG_NO_SAME_HOLD_ITEMS 19
+#define PARTY_MSG_UNUSED 20
+#define PARTY_MSG_DO_WHAT_WITH_MON 21
+#define PARTY_MSG_RESTORE_WHICH_MOVE 22
+#define PARTY_MSG_BOOST_PP_WHICH_MOVE 23
+#define PARTY_MSG_DO_WHAT_WITH_ITEM 24
+#define PARTY_MSG_DO_WHAT_WITH_MAIL 25
+#define PARTY_MSG_ALREADY_HOLDING_ONE 26
+#define PARTY_MSG_NONE 127
+
+// IDs for DisplayPartyPokemonDescriptionText, to display a message in the party pokemon's box
+#define PARTYBOX_DESC_NO_USE 0
+#define PARTYBOX_DESC_ABLE_3 1
+#define PARTYBOX_DESC_FIRST 2
+#define PARTYBOX_DESC_SECOND 3
+#define PARTYBOX_DESC_THIRD 4
+#define PARTYBOX_DESC_FOURTH 5
+#define PARTYBOX_DESC_ABLE 6
+#define PARTYBOX_DESC_NOT_ABLE 7
+#define PARTYBOX_DESC_ABLE_2 8
+#define PARTYBOX_DESC_NOT_ABLE_2 9
+#define PARTYBOX_DESC_LEARNED 10
+#define PARTYBOX_DESC_HAVE 11
+#define PARTYBOX_DESC_DONT_HAVE 12
+
+#define SELECTWINDOW_ACTIONS 0
+#define SELECTWINDOW_ITEM 1
+#define SELECTWINDOW_MAIL 2
+#define SELECTWINDOW_MOVES 3
+
+#endif // GUARD_CONSTANTS_PARTY_MENU_H
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index 5d0e562bc..97e3f0686 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -2,87 +2,280 @@
#define GUARD_CONSTANTS_POKEMON_H
// Pokemon types
-#define TYPE_NONE 0xFF
-#define TYPE_NORMAL 0x00
-#define TYPE_FIGHTING 0x01
-#define TYPE_FLYING 0x02
-#define TYPE_POISON 0x03
-#define TYPE_GROUND 0x04
-#define TYPE_ROCK 0x05
-#define TYPE_BUG 0x06
-#define TYPE_GHOST 0x07
-#define TYPE_STEEL 0x08
-#define TYPE_MYSTERY 0x09
-#define TYPE_FIRE 0x0a
-#define TYPE_WATER 0x0b
-#define TYPE_GRASS 0x0c
-#define TYPE_ELECTRIC 0x0d
-#define TYPE_PSYCHIC 0x0e
-#define TYPE_ICE 0x0f
-#define TYPE_DRAGON 0x10
-#define TYPE_DARK 0x11
-#define NUMBER_OF_MON_TYPES 0x12
-
+#define TYPE_NONE 255
+#define TYPE_NORMAL 0
+#define TYPE_FIGHTING 1
+#define TYPE_FLYING 2
+#define TYPE_POISON 3
+#define TYPE_GROUND 4
+#define TYPE_ROCK 5
+#define TYPE_BUG 6
+#define TYPE_GHOST 7
+#define TYPE_STEEL 8
+#define TYPE_MYSTERY 9
+#define TYPE_FIRE 10
+#define TYPE_WATER 11
+#define TYPE_GRASS 12
+#define TYPE_ELECTRIC 13
+#define TYPE_PSYCHIC 14
+#define TYPE_ICE 15
+#define TYPE_DRAGON 16
+#define TYPE_DARK 17
+#define NUMBER_OF_MON_TYPES 18
// Pokemon egg groups
-#define EGG_GROUP_NONE 0
-#define EGG_GROUP_MONSTER 1
-#define EGG_GROUP_WATER_1 2
-#define EGG_GROUP_BUG 3
-#define EGG_GROUP_FLYING 4
-#define EGG_GROUP_FIELD 5
-#define EGG_GROUP_FAIRY 6
-#define EGG_GROUP_GRASS 7
-#define EGG_GROUP_HUMAN_LIKE 8
-#define EGG_GROUP_WATER_3 9
-#define EGG_GROUP_MINERAL 10
-#define EGG_GROUP_AMORPHOUS 11
-#define EGG_GROUP_WATER_2 12
-#define EGG_GROUP_DITTO 13
-#define EGG_GROUP_DRAGON 14
-#define EGG_GROUP_UNDISCOVERED 15
+#define EGG_GROUP_NONE 0
+#define EGG_GROUP_MONSTER 1
+#define EGG_GROUP_WATER_1 2
+#define EGG_GROUP_BUG 3
+#define EGG_GROUP_FLYING 4
+#define EGG_GROUP_FIELD 5
+#define EGG_GROUP_FAIRY 6
+#define EGG_GROUP_GRASS 7
+#define EGG_GROUP_HUMAN_LIKE 8
+#define EGG_GROUP_WATER_3 9
+#define EGG_GROUP_MINERAL 10
+#define EGG_GROUP_AMORPHOUS 11
+#define EGG_GROUP_WATER_2 12
+#define EGG_GROUP_DITTO 13
+#define EGG_GROUP_DRAGON 14
+#define EGG_GROUP_UNDISCOVERED 15
+
+#define EGG_GROUPS_PER_MON 2
// Pokemon natures
-#define NATURE_HARDY 0
-#define NATURE_LONELY 1
-#define NATURE_BRAVE 2
-#define NATURE_ADAMANT 3
-#define NATURE_NAUGHTY 4
-#define NATURE_BOLD 5
-#define NATURE_DOCILE 6
-#define NATURE_RELAXED 7
-#define NATURE_IMPISH 8
-#define NATURE_LAX 9
-#define NATURE_TIMID 10
-#define NATURE_HASTY 11
-#define NATURE_SERIOUS 12
-#define NATURE_JOLLY 13
-#define NATURE_NAIVE 14
-#define NATURE_MODEST 15
-#define NATURE_MILD 16
-#define NATURE_QUIET 17
-#define NATURE_BASHFUL 18
-#define NATURE_RASH 19
-#define NATURE_CALM 20
-#define NATURE_GENTLE 21
-#define NATURE_SASSY 22
-#define NATURE_CAREFUL 23
-#define NATURE_QUIRKY 24
+#define NATURE_HARDY 0
+#define NATURE_LONELY 1
+#define NATURE_BRAVE 2
+#define NATURE_ADAMANT 3
+#define NATURE_NAUGHTY 4
+#define NATURE_BOLD 5
+#define NATURE_DOCILE 6
+#define NATURE_RELAXED 7
+#define NATURE_IMPISH 8
+#define NATURE_LAX 9
+#define NATURE_TIMID 10
+#define NATURE_HASTY 11
+#define NATURE_SERIOUS 12
+#define NATURE_JOLLY 13
+#define NATURE_NAIVE 14
+#define NATURE_MODEST 15
+#define NATURE_MILD 16
+#define NATURE_QUIET 17
+#define NATURE_BASHFUL 18
+#define NATURE_RASH 19
+#define NATURE_CALM 20
+#define NATURE_GENTLE 21
+#define NATURE_SASSY 22
+#define NATURE_CAREFUL 23
+#define NATURE_QUIRKY 24
// Pokemon Stats
-#define STAT_HP 0
-#define STAT_ATK 1
-#define STAT_DEF 2
-#define STAT_SPEED 3
-#define STAT_SPATK 4
-#define STAT_SPDEF 5
-#define STAT_ACC 6 // Only in battles.
+#define STAT_HP 0
+#define STAT_ATK 1
+#define STAT_DEF 2
+#define STAT_SPEED 3
+#define STAT_SPATK 4
+#define STAT_SPDEF 5
+#define STAT_ACC 6 // Only in battles.
#define STAT_EVASION 7 // Only in battles.
-#define NUM_STATS 6
-#define NUM_BATTLE_STATS 8
+#define NUM_EV_STATS NUM_STATS - 1 // excludes HP
+#define NUM_BATTLE_STATS NUM_STATS + 2 // includes Accuracy and Evasion
// Shiny odds
#define SHINY_ODDS 8 // Actual probability is SHINY_ODDS/65536
+// Flags for Get(Box)MonData / Set(Box)MonData
+#define MON_DATA_PERSONALITY 0
+#define MON_DATA_OT_ID 1
+#define MON_DATA_NICKNAME 2
+#define MON_DATA_LANGUAGE 3
+#define MON_DATA_SANITY_IS_BAD_EGG 4
+#define MON_DATA_SANITY_HAS_SPECIES 5
+#define MON_DATA_SANITY_IS_EGG 6
+#define MON_DATA_OT_NAME 7
+#define MON_DATA_MARKINGS 8
+#define MON_DATA_CHECKSUM 9
+#define MON_DATA_ENCRYPT_SEPARATOR 10
+#define MON_DATA_SPECIES 11
+#define MON_DATA_HELD_ITEM 12
+#define MON_DATA_MOVE1 13
+#define MON_DATA_MOVE2 14
+#define MON_DATA_MOVE3 15
+#define MON_DATA_MOVE4 16
+#define MON_DATA_PP1 17
+#define MON_DATA_PP2 18
+#define MON_DATA_PP3 19
+#define MON_DATA_PP4 20
+#define MON_DATA_PP_BONUSES 21
+#define MON_DATA_COOL 22
+#define MON_DATA_BEAUTY 23
+#define MON_DATA_CUTE 24
+#define MON_DATA_EXP 25
+#define MON_DATA_HP_EV 26
+#define MON_DATA_ATK_EV 27
+#define MON_DATA_DEF_EV 28
+#define MON_DATA_SPEED_EV 29
+#define MON_DATA_SPATK_EV 30
+#define MON_DATA_SPDEF_EV 31
+#define MON_DATA_FRIENDSHIP 32
+#define MON_DATA_SMART 33
+#define MON_DATA_POKERUS 34
+#define MON_DATA_MET_LOCATION 35
+#define MON_DATA_MET_LEVEL 36
+#define MON_DATA_MET_GAME 37
+#define MON_DATA_POKEBALL 38
+#define MON_DATA_HP_IV 39
+#define MON_DATA_ATK_IV 40
+#define MON_DATA_DEF_IV 41
+#define MON_DATA_SPEED_IV 42
+#define MON_DATA_SPATK_IV 43
+#define MON_DATA_SPDEF_IV 44
+#define MON_DATA_IS_EGG 45
+#define MON_DATA_ABILITY_NUM 46
+#define MON_DATA_TOUGH 47
+#define MON_DATA_SHEEN 48
+#define MON_DATA_OT_GENDER 49
+#define MON_DATA_COOL_RIBBON 50
+#define MON_DATA_BEAUTY_RIBBON 51
+#define MON_DATA_CUTE_RIBBON 52
+#define MON_DATA_SMART_RIBBON 53
+#define MON_DATA_TOUGH_RIBBON 54
+#define MON_DATA_STATUS 55
+#define MON_DATA_LEVEL 56
+#define MON_DATA_HP 57
+#define MON_DATA_MAX_HP 58
+#define MON_DATA_ATK 59
+#define MON_DATA_DEF 60
+#define MON_DATA_SPEED 61
+#define MON_DATA_SPATK 62
+#define MON_DATA_SPDEF 63
+#define MON_DATA_MAIL 64
+#define MON_DATA_SPECIES2 65
+#define MON_DATA_IVS 66
+#define MON_DATA_CHAMPION_RIBBON 67
+#define MON_DATA_WINNING_RIBBON 68
+#define MON_DATA_VICTORY_RIBBON 69
+#define MON_DATA_ARTIST_RIBBON 70
+#define MON_DATA_EFFORT_RIBBON 71
+#define MON_DATA_GIFT_RIBBON_1 72
+#define MON_DATA_GIFT_RIBBON_2 73
+#define MON_DATA_GIFT_RIBBON_3 74
+#define MON_DATA_GIFT_RIBBON_4 75
+#define MON_DATA_GIFT_RIBBON_5 76
+#define MON_DATA_GIFT_RIBBON_6 77
+#define MON_DATA_GIFT_RIBBON_7 78
+#define MON_DATA_FATEFUL_ENCOUNTER 79
+#define MON_DATA_OBEDIENCE 80
+#define MON_DATA_KNOWN_MOVES 81
+#define MON_DATA_RIBBON_COUNT 82
+#define MON_DATA_RIBBONS 83
+#define MON_DATA_ATK2 84
+#define MON_DATA_DEF2 85
+#define MON_DATA_SPEED2 86
+#define MON_DATA_SPATK2 87
+#define MON_DATA_SPDEF2 88
+
+#define MIN_LEVEL 1
+#define MAX_LEVEL 100
+
+#define OT_ID_PLAYER_ID 0
+#define OT_ID_PRESET 1
+#define OT_ID_RANDOM_NO_SHINY 2
+
+#define MON_GIVEN_TO_PARTY 0
+#define MON_GIVEN_TO_PC 1
+#define MON_CANT_GIVE 2
+
+#define PLAYER_HAS_TWO_USABLE_MONS 0
+#define PLAYER_HAS_ONE_MON 1
+#define PLAYER_HAS_ONE_USABLE_MON 2
+
+#define MON_ALREADY_KNOWS_MOVE 0xFFFE
+#define MON_HAS_MAX_MOVES 0xFFFF
+
+#define LEVEL_UP_MOVE_ID 0x01FF
+#define LEVEL_UP_MOVE_LV 0xFE00
+#define LEVEL_UP_END 0xFFFF
+
+#define MON_MALE 0x00
+#define MON_FEMALE 0xFE
+#define MON_GENDERLESS 0xFF
+
+#define FRIENDSHIP_EVENT_GROW_LEVEL 0
+#define FRIENDSHIP_EVENT_VITAMIN 1 // unused
+#define FRIENDSHIP_EVENT_BATTLE_ITEM 2 // unused
+#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 3
+#define FRIENDSHIP_EVENT_LEARN_TMHM 4
+#define FRIENDSHIP_EVENT_WALKING 5
+#define FRIENDSHIP_EVENT_FAINT_SMALL 6
+#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 7
+#define FRIENDSHIP_EVENT_FAINT_LARGE 8
+
+#define MAX_FRIENDSHIP 0xFF
+
+#define STATUS_PRIMARY_NONE 0
+#define STATUS_PRIMARY_POISON 1
+#define STATUS_PRIMARY_PARALYSIS 2
+#define STATUS_PRIMARY_SLEEP 3
+#define STATUS_PRIMARY_FREEZE 4
+#define STATUS_PRIMARY_BURN 5
+#define STATUS_PRIMARY_POKERUS 6
+#define STATUS_PRIMARY_FAINTED 7
+
+#define MAX_TOTAL_EVS 510
+#define EV_ITEM_RAISE_LIMIT 100
+
+#define UNOWN_FORM_COUNT 28
+
+// Battle move flags
+#define FLAG_MAKES_CONTACT 0x1
+#define FLAG_PROTECT_AFFECTED 0x2
+#define FLAG_MAGICCOAT_AFFECTED 0x4
+#define FLAG_SNATCH_AFFECTED 0x8
+#define FLAG_MIRROR_MOVE_AFFECTED 0x10
+#define FLAG_KINGSROCK_AFFECTED 0x20
+
+// Growth rates
+#define GROWTH_MEDIUM_FAST 0
+#define GROWTH_ERRATIC 1
+#define GROWTH_FLUCTUATING 2
+#define GROWTH_MEDIUM_SLOW 3
+#define GROWTH_FAST 4
+#define GROWTH_SLOW 5
+
+// Body colors for pokedex search
+#define BODY_COLOR_RED 0
+#define BODY_COLOR_BLUE 1
+#define BODY_COLOR_YELLOW 2
+#define BODY_COLOR_GREEN 3
+#define BODY_COLOR_BLACK 4
+#define BODY_COLOR_BROWN 5
+#define BODY_COLOR_PURPLE 6
+#define BODY_COLOR_GRAY 7
+#define BODY_COLOR_WHITE 8
+#define BODY_COLOR_PINK 9
+
+#define F_SUMMARY_SCREEN_FLIP_SPRITE 0x80
+
+// Evolution type flags
+#define EVO_FRIENDSHIP 0x0001 // Pokémon levels up with friendship ≥ 220
+#define EVO_FRIENDSHIP_DAY 0x0002 // Pokémon levels up during the day with friendship ≥ 220
+#define EVO_FRIENDSHIP_NIGHT 0x0003 // Pokémon levels up at night with friendship ≥ 220
+#define EVO_LEVEL 0x0004 // Pokémon reaches the specified level
+#define EVO_TRADE 0x0005 // Pokémon is traded
+#define EVO_TRADE_ITEM 0x0006 // Pokémon is traded while it's holding the specified item
+#define EVO_ITEM 0x0007 // specified item is used on Pokémon
+#define EVO_LEVEL_ATK_GT_DEF 0x0008 // Pokémon reaches the specified level with attack > defense
+#define EVO_LEVEL_ATK_EQ_DEF 0x0009 // Pokémon reaches the specified level with attack = defense
+#define EVO_LEVEL_ATK_LT_DEF 0x000a // Pokémon reaches the specified level with attack < defense
+#define EVO_LEVEL_SILCOON 0x000b // Pokémon reaches the specified level with a Silcoon personality value
+#define EVO_LEVEL_CASCOON 0x000c // Pokémon reaches the specified level with a Cascoon personality value
+#define EVO_LEVEL_NINJASK 0x000d // Pokémon reaches the specified level (special value for Ninjask)
+#define EVO_LEVEL_SHEDINJA 0x000e // Pokémon reaches the specified level (special value for Shedinja)
+#define EVO_BEAUTY 0x000f // Pokémon levels up with beauty ≥ specified value
+
+#define EVOS_PER_MON 5
+
#endif // GUARD_CONSTANTS_POKEMON_H
diff --git a/include/constants/script_menu.h b/include/constants/script_menu.h
new file mode 100644
index 000000000..928ca00e0
--- /dev/null
+++ b/include/constants/script_menu.h
@@ -0,0 +1,168 @@
+#ifndef GUARD_SCRIPT_MENU_CONSTANTS_H
+#define GUARD_SCRIPT_MENU_CONSTANTS_H
+
+#define MULTICHOICE(name) {name, ARRAY_COUNT(name)}
+
+#define MAX_MULTICHOICE_WIDTH 28
+
+#define MULTI_B_PRESSED 127
+
+// Multichoice Ids
+#define MULTI_BRINEY_ON_DEWFORD 0
+#define MULTI_PC 1 // Exit only, populated by CreatePCMultichoice
+#define MULTI_ENTERINFO 2
+#define MULTI_CONTEST_INFO 3
+#define MULTI_CONTEST_TYPE 4
+#define MULTI_BASE_PC_NO_REGISTRY 5
+#define MULTI_BASE_PC_WITH_REGISTRY 6
+#define MULTI_REGISTER_MENU 7
+#define MULTI_SSTIDAL_LILYCOVE 8 // Exit only, populated by CreateLilycoveSSTidalMultichoice
+#define MULTI_UNUSED_9 9
+#define MULTI_UNUSED_10 10
+#define MULTI_FRONTIER_PASS_INFO 11
+#define MULTI_BIKE 12
+#define MULTI_STATUS_INFO 13
+#define MULTI_BRINEY_OFF_DEWFORD 14
+#define MULTI_UNUSED_15 15
+#define MULTI_VIEWED_PAINTINGS 16
+#define MULTI_YESNOINFO 17
+#define MULTI_BATTLE_MODE 18
+#define MULTI_UNUSED_19 19
+#define MULTI_YESNOINFO_2 20
+#define MULTI_UNUSED_21 21
+#define MULTI_UNUSED_22 22
+#define MULTI_CHALLENGEINFO 23
+#define MULTI_LEVEL_MODE 24
+#define MULTI_MECHADOLL1_Q1 25
+#define MULTI_MECHADOLL1_Q2 26
+#define MULTI_MECHADOLL1_Q3 27
+#define MULTI_MECHADOLL2_Q1 28
+#define MULTI_MECHADOLL2_Q2 29
+#define MULTI_MECHADOLL2_Q3 30
+#define MULTI_MECHADOLL3_Q1 31
+#define MULTI_MECHADOLL3_Q2 32
+#define MULTI_MECHADOLL3_Q3 33
+#define MULTI_MECHADOLL4_Q1 34
+#define MULTI_MECHADOLL4_Q2 35
+#define MULTI_MECHADOLL4_Q3 36
+#define MULTI_MECHADOLL5_Q1 37
+#define MULTI_MECHADOLL5_Q2 38
+#define MULTI_MECHADOLL5_Q3 39
+#define MULTI_UNUSED_40 40
+#define MULTI_UNUSED_41 41
+#define MULTI_VENDING_MACHINE 42
+#define MULTI_MACH_BIKE_INFO 43
+#define MULTI_ACRO_BIKE_INFO 44
+#define MULTI_SATISFACTION 45
+#define MULTI_STERN_DEEPSEA 46
+#define MULTI_UNUSED_ASH_VENDOR 47 // Replaced by scrollable multichoice
+#define MULTI_GAME_CORNER_DOLLS 48
+#define MULTI_GAME_CORNER_COINS 49
+#define MULTI_HOWS_FISHING 50
+#define MULTI_UNUSED_51 51
+#define MULTI_SSTIDAL_SLATEPORT_WITH_BF 52
+#define MULTI_SSTIDAL_BATTLE_FRONTIER 53
+#define MULTI_RIGHTLEFT 54
+#define MULTI_GAME_CORNER_TMS 55
+#define MULTI_SSTIDAL_SLATEPORT_NO_BF 56
+#define MULTI_FLOORS 57
+#define MULTI_SHARDS_R 58
+#define MULTI_SHARDS_Y 59
+#define MULTI_SHARDS_RY 60
+#define MULTI_SHARDS_B 61
+#define MULTI_SHARDS_RB 62
+#define MULTI_SHARDS_YB 63
+#define MULTI_SHARDS_RYB 64
+#define MULTI_SHARDS_G 65
+#define MULTI_SHARDS_RG 66
+#define MULTI_SHARDS_YG 67
+#define MULTI_SHARDS_RYG 68
+#define MULTI_SHARDS_BG 69
+#define MULTI_SHARDS_RBG 70
+#define MULTI_SHARDS_YBG 71
+#define MULTI_SHARDS_RYBG 72
+#define MULTI_TOURNEY_WITH_RECORD 73
+#define MULTI_CABLE_CLUB_NO_RECORD_MIX 74
+#define MULTI_WIRELESS_NO_RECORD_BERRY 75
+#define MULTI_CABLE_CLUB_WITH_RECORD_MIX 76
+#define MULTI_WIRELESS_NO_BERRY 77
+#define MULTI_WIRELESS_NO_RECORD 78
+#define MULTI_WIRELESS_ALL_SERVICES 79
+#define MULTI_WIRELESS_MINIGAME 80
+#define MULTI_LINK_LEADER 81
+#define MULTI_CONTEST_RANK 82
+#define MULTI_FRONTIER_ITEM_CHOOSE 83
+#define MULTI_LINK_CONTEST_INFO 84
+#define MULTI_LINK_CONTEST_MODE 85
+#define MULTI_FORCED_START_MENU 86
+#define MULTI_FRONTIER_GAMBLER_BET 87
+#define MULTI_TENT 88
+#define MULTI_UNUSED_SSTIDAL_1 89 // These 4 were replaced by CreateLilycoveSSTidalMultichoice
+#define MULTI_UNUSED_SSTIDAL_2 90 //
+#define MULTI_UNUSED_SSTIDAL_3 91 //
+#define MULTI_UNUSED_SSTIDAL_4 92 //
+#define MULTI_FOSSIL 93
+#define MULTI_YESNO 94
+#define MULTI_FRONTIER_RULES 95
+#define MULTI_BATTLE_ARENA_RULES 96
+#define MULTI_BATTLE_TOWER_RULES 97
+#define MULTI_BATTLE_DOME_RULES 98
+#define MULTI_BATTLE_FACTORY_RULES 99
+#define MULTI_BATTLE_PALACE_RULES 100
+#define MULTI_BATTLE_PYRAMID_RULES 101
+#define MULTI_BATTLE_PIKE_RULES 102
+#define MULTI_GO_ON_RECORD_REST_RETIRE 103
+#define MULTI_GO_ON_REST_RETIRE 104
+#define MULTI_GO_ON_RECORD_RETIRE 105
+#define MULTI_GO_ON_RETIRE 106
+#define MULTI_TOURNEY_NO_RECORD 107
+#define MULTI_TV_LATI 108
+#define MULTI_BATTLE_TOWER_FEELINGS 109
+#define MULTI_WHERES_RAYQUAZA 110
+#define MULTI_SLATEPORT_TENT_RULES 111
+#define MULTI_FALLARBOR_TENT_RULES 112
+#define MULTI_TAG_MATCH_TYPE 113
+
+// Lilycove SS Tidal Multichoice Selections
+#define SSTIDAL_SELECTION_SLATEPORT 0
+#define SSTIDAL_SELECTION_BATTLE_FRONTIER 1
+#define SSTIDAL_SELECTION_SOUTHERN_ISLAND 2
+#define SSTIDAL_SELECTION_NAVEL_ROCK 3
+#define SSTIDAL_SELECTION_BIRTH_ISLAND 4
+#define SSTIDAL_SELECTION_FARAWAY_ISLAND 5
+#define SSTIDAL_SELECTION_EXIT 6
+#define SSTIDAL_SELECTION_COUNT 7
+
+// Std String Ids
+#define STDSTRING_COOL 0
+#define STDSTRING_BEAUTY 1
+#define STDSTRING_CUTE 2
+#define STDSTRING_SMART 3
+#define STDSTRING_TOUGH 4
+#define STDSTRING_NORMAL 5
+#define STDSTRING_SUPER 6
+#define STDSTRING_HYPER 7
+#define STDSTRING_MASTER 8
+#define STDSTRING_COOL2 9
+#define STDSTRING_BEAUTY2 10
+#define STDSTRING_CUTE2 11
+#define STDSTRING_SMART2 12
+#define STDSTRING_TOUGH2 13
+#define STDSTRING_ITEMS 14
+#define STDSTRING_KEYITEMS 15
+#define STDSTRING_POKEBALLS 16
+#define STDSTRING_TMHMS 17
+#define STDSTRING_BERRIES 18
+#define STDSTRING_SINGLE 19
+#define STDSTRING_DOUBLE 20
+#define STDSTRING_MULTI 21
+#define STDSTRING_MULTI_LINK 22
+#define STDSTRING_BATTLE_TOWER 23
+#define STDSTRING_BATTLE_DOME 24
+#define STDSTRING_BATTLE_FACTORY 25
+#define STDSTRING_BATTLE_PALACE 26
+#define STDSTRING_BATTLE_ARENA 27
+#define STDSTRING_BATTLE_PIKE 28
+#define STDSTRING_BATTLE_PYRAMID 29
+
+#endif //GUARD_SCRIPT_MENU_CONSTANTS_H
diff --git a/include/constants/trade.h b/include/constants/trade.h
new file mode 100644
index 000000000..fa42e6b43
--- /dev/null
+++ b/include/constants/trade.h
@@ -0,0 +1,116 @@
+#ifndef GUARD_CONSTANTS_TRADE_H
+#define GUARD_CONSTANTS_TRADE_H
+
+#define TRADE_PLAYER 0
+#define TRADE_PARTNER 1
+
+#define LINK_TRADE_TIMEOUT 300
+
+// In-game Trade IDs
+#define INGAME_TRADE_SEEDOT 0
+#define INGAME_TRADE_PLUSLE 1
+#define INGAME_TRADE_HORSEA 2
+#define INGAME_TRADE_MEOWTH 3
+
+// Flag IDs for sending link data
+#define INITIATE_TRADE 1
+#define CANCEL_TRADE 2
+#define WANTS_TO_TRADE 1
+#define WANTS_TO_CANCEL 2
+#define READY_FINISH_TRADE 1
+#define FINISH_TRADE 2
+
+// Return values for CanTradeSelectedMon and CanSpinTradeMon
+#define CAN_TRADE_MON 0
+#define CANT_TRADE_LAST_MON 1
+#define CANT_TRADE_NATIONAL 2
+#define CANT_TRADE_EGG_YET 3
+#define CANT_TRADE_INVALID_MON 4
+#define CANT_TRADE_EGG_YET2 5
+
+// Return values for CheckValidityOfTradeMons
+#define PLAYER_MON_INVALID 0
+#define BOTH_MONS_VALID 1
+#define PARTNER_MON_INVALID 2
+
+// Return values for GetGameProgressForLinkTrade
+#define TRADE_BOTH_PLAYERS_READY 0
+#define TRADE_PLAYER_NOT_READY 1
+#define TRADE_PARTNER_NOT_READY 2
+
+// Indexes for sTradeActionTexts
+#define TRADE_TEXT_CANCEL 0
+#define TRADE_TEXT_CHOOSE_MON 1
+#define TRADE_TEXT_SUMMARY 2
+#define TRADE_TEXT_TRADE 3
+#define TRADE_TEXT_CANCEL_TRADE 4
+#define TRADE_TEXT_JP_QUIT 5
+
+// Checked to confirm DrawTradeMenuParty has reached final state
+#define DRAW_PARTY_FINISH 5
+
+// Message indexes for sTradeMessages
+#define TRADE_MSG_STANDBY 0
+#define TRADE_MSG_CANCELED 1
+#define TRADE_MSG_ONLY_MON1 2
+#define TRADE_MSG_ONLY_MON2 3
+#define TRADE_MSG_WAITING_FOR_FRIEND 4
+#define TRADE_MSG_FRIEND_WANTS_TO_TRADE 5
+#define TRADE_MSG_MON_CANT_BE_TRADED 6
+#define TRADE_MSG_EGG_CANT_BE_TRADED 7
+#define TRADE_MSG_FRIENDS_MON_CANT_BE_TRADED 8
+
+// IDs for QueueAction
+#define QUEUE_SEND_DATA 0
+#define QUEUE_STANDBY 1
+#define QUEUE_ONLY_MON1 2
+#define QUEUE_ONLY_MON2 3
+#define QUEUE_UNUSED1 4
+#define QUEUE_UNUSED2 5
+#define QUEUE_MON_CANT_BE_TRADED 6
+#define QUEUE_EGG_CANT_BE_TRADED 7
+#define QUEUE_FRIENDS_MON_CANT_BE_TRADED 8
+
+#define QUEUE_DELAY_MSG 3
+#define QUEUE_DELAY_DATA 5
+
+// IDs for CallTradeMenuFunc
+#define TRADEMENUFUNC_MAIN_MENU 0
+#define TRADEMENUFUNC_SELECTED_MON 1
+#define TRADEMENUFUNC_SHOW_MON_SUMMARY 2
+#define TRADEMENUFUNC_CONFIRM_OR_CANCEL_TRADE 3
+#define TRADEMENUFUNC_CANCEL_TRADE_PROMPT 4
+#define TRADEMENUFUNC_UNUSED_5 5
+#define TRADEMENUFUNC_BOTH_MONS_SELECTED 6
+#define TRADEMENUFUNC_CONFIRM_TRADE_PROMPT 7
+#define TRADEMENUFUNC_REDRAW_MAIN_MENU 8
+#define TRADEMENUFUNC_LINK_TRADE_FADE_OUT 9
+#define TRADEMENUFUNC_LINK_TRADE_WAIT_FADE 10
+#define TRADEMENUFUNC_CANCEL_TRADE_1 11
+#define TRADEMENUFUNC_CANCEL_TRADE_2 12
+#define TRADEMENUFUNC_START_LINK_TRADE 13
+#define TRADEMENUFUNC_DELAY_TRADE_CONFIRM 14
+#define TRADEMENUFUNC_UNUSED_15 15
+#define TRADEMENUFUNC_LINK_TRADE_WAIT_QUEUE 16
+#define TRADEMENUFUNC_PARTNER_MON_INVALID 17
+#define TRADEMENUFUNC_STANDBY 100
+
+// Message indexes for sUnionRoomTradeMessages
+#define UR_TRADE_MSG_NONE 0
+#define UR_TRADE_MSG_NOT_MON_PARTNER_WANTS 1
+#define UR_TRADE_MSG_NOT_EGG 2
+#define UR_TRADE_MSG_MON_CANT_BE_TRADED_1 3
+#define UR_TRADE_MSG_MON_CANT_BE_TRADED_2 4
+#define UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED 5
+#define UR_TRADE_MSG_EGG_CANT_BE_TRADED 6
+#define UR_TRADE_MSG_PARTNER_CANT_ACCEPT_MON 7
+#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_1 8
+#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2 9
+
+// Return values for CanRegisterMonForTradingBoard
+#define CAN_REGISTER_MON 0
+#define CANT_REGISTER_MON 1
+#define CANT_REGISTER_EGG 2
+
+
+#endif //GUARD_CONSTANTS_TRADE_H
diff --git a/include/constants/trainer_hill.h b/include/constants/trainer_hill.h
index 4aae1dbbc..afbcd4ace 100644
--- a/include/constants/trainer_hill.h
+++ b/include/constants/trainer_hill.h
@@ -1,27 +1,46 @@
#ifndef GUARD_CONSTANTS_TRAINER_HILL_H
#define GUARD_CONSTANTS_TRAINER_HILL_H
-#define TRAINER_HILL_FUNC_START 0
-#define TRAINER_HILL_FUNC_1 1
-#define TRAINER_HILL_FUNC_2 2
-#define TRAINER_HILL_FUNC_3 3
-#define TRAINER_HILL_FUNC_RESUME_TIMER 4
-#define TRAINER_HILL_FUNC_SET_LOST 5
-#define TRAINER_HILL_FUNC_GET_CHALLENGE_STATUS 6
-#define TRAINER_HILL_FUNC_7 7
-#define TRAINER_HILL_FUNC_8 8
-#define TRAINER_HILL_FUNC_9 9
-#define TRAINER_HILL_FUNC_10 10
-#define TRAINER_HILL_FUNC_11 11
-#define TRAINER_HILL_FUNC_12 12
-#define TRAINER_HILL_FUNC_13 13
-#define TRAINER_HILL_FUNC_14 14
-#define TRAINER_HILL_FUNC_15 15
-#define TRAINER_HILL_FUNC_16 16
-#define TRAINER_HILL_FUNC_SET_TAG 17
-
-// Values returned by the TrainerHillGetChallengeStatus
-// function.
+#define TRAINER_HILL_1F 1
+#define TRAINER_HILL_2F 2
+#define TRAINER_HILL_3F 3
+#define TRAINER_HILL_4F 4
+#define TRAINER_HILL_ROOF 5
+#define TRAINER_HILL_ENTRANCE 6
+
+#define NUM_TRAINER_HILL_FLOORS 4
+#define NUM_TRAINER_HILL_FLOORS_JP 2
+
+#define NUM_TRAINER_HILL_PRIZE_LISTS 10
+
+#define TRAINER_HILL_FUNC_START 0
+#define TRAINER_HILL_FUNC_GET_OWNER_STATE 1
+#define TRAINER_HILL_FUNC_GIVE_PRIZE 2
+#define TRAINER_HILL_FUNC_CHECK_FINAL_TIME 3
+#define TRAINER_HILL_FUNC_RESUME_TIMER 4
+#define TRAINER_HILL_FUNC_SET_LOST 5
+#define TRAINER_HILL_FUNC_GET_CHALLENGE_STATUS 6
+#define TRAINER_HILL_FUNC_GET_CHALLENGE_TIME 7
+#define TRAINER_HILL_FUNC_GET_ALL_FLOORS_USED 8
+#define TRAINER_HILL_FUNC_CLEAR_RESULT 9
+#define TRAINER_HILL_FUNC_IN_CHALLENGE 10
+#define TRAINER_HILL_FUNC_POST_BATTLE_TEXT 11
+#define TRAINER_HILL_FUNC_SET_ALL_TRAINER_FLAGS 12
+#define TRAINER_HILL_FUNC_GET_GAME_SAVED 13
+#define TRAINER_HILL_FUNC_SET_GAME_SAVED 14
+#define TRAINER_HILL_FUNC_CLEAR_GAME_SAVED 15
+#define TRAINER_HILL_FUNC_GET_WON 16
+#define TRAINER_HILL_FUNC_SET_TAG 17
+
+#define TRAINER_HILL_TEXT_INTRO 2
+#define TRAINER_HILL_TEXT_PLAYER_LOST 3
+#define TRAINER_HILL_TEXT_PLAYER_WON 4
+#define TRAINER_HILL_TEXT_AFTER 5
+
+#define NUM_TRAINER_HILL_TRAINERS (NUM_TRAINER_HILL_FLOORS * 2)
+#define NUM_TRAINER_HILL_TRAINERS_JP (NUM_TRAINER_HILL_FLOORS_JP * 2)
+
+// Values returned by TrainerHillGetChallengeStatus
#define TRAINER_HILL_PLAYER_STATUS_LOST 0
#define TRAINER_HILL_PLAYER_STATUS_ECARD_SCANNED 1
#define TRAINER_HILL_PLAYER_STATUS_NORMAL 2
diff --git a/include/constants/trainers.h b/include/constants/trainers.h
index c0abfe6b6..541b131ca 100644
--- a/include/constants/trainers.h
+++ b/include/constants/trainers.h
@@ -2,9 +2,11 @@
#define GUARD_TRAINERS_H
#include "constants/opponents.h"
+#include "constants/battle_frontier_trainers.h"
// Special Trainer Ids.
-#define TRAINER_RECORD_MIXING_FRIEND 300
+// 0-299 are frontier trainers
+#define TRAINER_RECORD_MIXING_FRIEND FRONTIER_TRAINERS_COUNT
#define TRAINER_RECORD_MIXING_APPRENTICE 400
#define TRAINER_EREADER 500
#define TRAINER_FRONTIER_BRAIN 1022
@@ -119,7 +121,7 @@
#define FACILITY_CLASS_HIKER 0x0
#define FACILITY_CLASS_AQUA_GRUNT_M 0x1
-#define FACILITY_CLASS_POKEMON_BREEDER_F 0x2
+#define FACILITY_CLASS_PKMN_BREEDER_F 0x2
#define FACILITY_CLASS_COOLTRAINER_M 0x3
#define FACILITY_CLASS_BIRD_KEEPER 0x4
#define FACILITY_CLASS_COLLECTOR 0x5
@@ -202,6 +204,86 @@
#define FACILITY_CLASSES_COUNT 0x52
+#define RS_FACILITY_CLASS_AQUA_LEADER_ARCHIE 0x0
+#define RS_FACILITY_CLASS_AQUA_GRUNT_M 0x1
+#define RS_FACILITY_CLASS_AQUA_GRUNT_F 0x2
+#define RS_FACILITY_CLASS_AROMA_LADY 0x3
+#define RS_FACILITY_CLASS_RUIN_MANIAC 0x4
+#define RS_FACILITY_CLASS_INTERVIEWER 0x5
+#define RS_FACILITY_CLASS_TUBER_F 0x6
+#define RS_FACILITY_CLASS_TUBER_M 0x7
+#define RS_FACILITY_CLASS_COOLTRAINER_M 0x8
+#define RS_FACILITY_CLASS_COOLTRAINER_F 0x9
+#define RS_FACILITY_CLASS_HEX_MANIAC 0xA
+#define RS_FACILITY_CLASS_LADY 0xB
+#define RS_FACILITY_CLASS_BEAUTY 0xC
+#define RS_FACILITY_CLASS_RICH_BOY 0xD
+#define RS_FACILITY_CLASS_POKEMANIAC 0xE
+#define RS_FACILITY_CLASS_SWIMMER_M 0xF
+#define RS_FACILITY_CLASS_BLACK_BELT 0x10
+#define RS_FACILITY_CLASS_GUITARIST 0x11
+#define RS_FACILITY_CLASS_KINDLER 0x12
+#define RS_FACILITY_CLASS_CAMPER 0x13
+#define RS_FACILITY_CLASS_BUG_MANIAC 0x14
+#define RS_FACILITY_CLASS_PSYCHIC_M 0x15
+#define RS_FACILITY_CLASS_PSYCHIC_F 0x16
+#define RS_FACILITY_CLASS_GENTLEMAN 0x17
+#define RS_FACILITY_CLASS_ELITE_FOUR_M 0x18
+#define RS_FACILITY_CLASS_ELITE_FOUR_F 0x19
+#define RS_FACILITY_CLASS_LEADER_F 0x1A
+#define RS_FACILITY_CLASS_LEADER_M 0x1B
+#define RS_FACILITY_CLASS_LEADER_MF 0x1C
+#define RS_FACILITY_CLASS_SCHOOL_KID_M 0x1D
+#define RS_FACILITY_CLASS_SCHOOL_KID_F 0x1E
+#define RS_FACILITY_CLASS_SR_AND_JR 0x1F
+#define RS_FACILITY_CLASS_POKEFAN_M 0x20
+#define RS_FACILITY_CLASS_POKEFAN_F 0x21
+#define RS_FACILITY_CLASS_EXPERT_M 0x22
+#define RS_FACILITY_CLASS_EXPERT_F 0x23
+#define RS_FACILITY_CLASS_YOUNGSTER 0x24
+#define RS_FACILITY_CLASS_CHAMPION 0x25
+#define RS_FACILITY_CLASS_FISHERMAN 0x26
+#define RS_FACILITY_CLASS_CYCLING_TRIATHLETE_M 0x27
+#define RS_FACILITY_CLASS_CYCLING_TRIATHLETE_F 0x28
+#define RS_FACILITY_CLASS_RUNNING_TRIATHLETE_M 0x29
+#define RS_FACILITY_CLASS_RUNNING_TRIATHLETE_F 0x2A
+#define RS_FACILITY_CLASS_SWIMMING_TRIATHLETE_M 0x2B
+#define RS_FACILITY_CLASS_SWIMMING_TRIATHLETE_F 0x2C
+#define RS_FACILITY_CLASS_DRAGON_TAMER 0x2D
+#define RS_FACILITY_CLASS_BIRD_KEEPER 0x2E
+#define RS_FACILITY_CLASS_NINJA_BOY 0x2F
+#define RS_FACILITY_CLASS_BATTLE_GIRL 0x30
+#define RS_FACILITY_CLASS_PARASOL_LADY 0x31
+#define RS_FACILITY_CLASS_SWIMMER_F 0x32
+#define RS_FACILITY_CLASS_PICNICKER 0x33
+#define RS_FACILITY_CLASS_TWINS 0x34
+#define RS_FACILITY_CLASS_SAILOR 0x35
+#define RS_FACILITY_CLASS_BOARDER_1 0x36
+#define RS_FACILITY_CLASS_BOARDER_2 0x37
+#define RS_FACILITY_CLASS_COLLECTOR 0x38
+#define RS_FACILITY_CLASS_WALLY 0x39
+#define RS_FACILITY_CLASS_BRENDAN_1 0x3A
+#define RS_FACILITY_CLASS_BRENDAN_2 0x3B
+#define RS_FACILITY_CLASS_BRENDAN_3 0x3C
+#define RS_FACILITY_CLASS_MAY_1 0x3D
+#define RS_FACILITY_CLASS_MAY_2 0x3E
+#define RS_FACILITY_CLASS_MAY_3 0x3F
+#define RS_FACILITY_CLASS_PKMN_BREEDER_M 0x40
+#define RS_FACILITY_CLASS_PKMN_BREEDER_F 0x41
+#define RS_FACILITY_CLASS_PKMN_RANGER_M 0x42
+#define RS_FACILITY_CLASS_PKMN_RANGER_F 0x43
+#define RS_FACILITY_CLASS_MAGMA_LEADER 0x44
+#define RS_FACILITY_CLASS_MAGMA_GRUNT_M 0x45
+#define RS_FACILITY_CLASS_MAGMA_GRUNT_F 0x46
+#define RS_FACILITY_CLASS_LASS 0x47
+#define RS_FACILITY_CLASS_BUG_CATCHER 0x48
+#define RS_FACILITY_CLASS_HIKER 0x49
+#define RS_FACILITY_CLASS_YOUNG_COUPLE 0x4A
+#define RS_FACILITY_CLASS_OLD_COUPLE 0x4B
+#define RS_FACILITY_CLASS_SIS_AND_BRO 0x4C
+
+#define RS_FACILITY_CLASSES_COUNT 0x4D
+
#define TRAINER_CLASS_PKMN_TRAINER_1 0x0 // Unused
#define TRAINER_CLASS_PKMN_TRAINER_2 0x1 // Unused
#define TRAINER_CLASS_HIKER 0x2
diff --git a/include/constants/tv.h b/include/constants/tv.h
new file mode 100644
index 000000000..6f686f727
--- /dev/null
+++ b/include/constants/tv.h
@@ -0,0 +1,137 @@
+#ifndef GUARD_CONSTANTS_TV_H
+#define GUARD_CONSTANTS_TV_H
+
+#define POKENEWS_NONE 0
+#define POKENEWS_SLATEPORT 1
+#define POKENEWS_GAME_CORNER 2
+#define POKENEWS_LILYCOVE 3
+#define POKENEWS_BLENDMASTER 4
+
+#define TVSHOW_OFF_AIR 0
+#define TVSHOW_FAN_CLUB_LETTER 1
+#define TVSHOW_RECENT_HAPPENINGS 2
+#define TVSHOW_PKMN_FAN_CLUB_OPINIONS 3
+#define TVSHOW_UNKN_SHOWTYPE_04 4
+#define TVSHOW_NAME_RATER_SHOW 5
+#define TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE 6
+#define TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE 7
+#define TVSHOW_CONTEST_LIVE_UPDATES 8
+#define TVSHOW_3_CHEERS_FOR_POKEBLOCKS 9
+#define TVSHOW_BATTLE_UPDATE 10
+#define TVSHOW_FAN_CLUB_SPECIAL 11
+#define TVSHOW_CONTEST_LIVE_UPDATES_2 12
+// //
+#define TVSHOW_POKEMON_TODAY_CAUGHT 21
+#define TVSHOW_SMART_SHOPPER 22
+#define TVSHOW_POKEMON_TODAY_FAILED 23
+#define TVSHOW_FISHING_ADVICE 24
+#define TVSHOW_WORLD_OF_MASTERS 25
+#define TVSHOW_TODAYS_RIVAL_TRAINER 26
+#define TVSHOW_TREND_WATCHER 27
+#define TVSHOW_TREASURE_INVESTIGATORS 28
+#define TVSHOW_FIND_THAT_GAMER 29
+#define TVSHOW_BREAKING_NEWS 30
+#define TVSHOW_SECRET_BASE_VISIT 31
+#define TVSHOW_LOTTO_WINNER 32
+#define TVSHOW_BATTLE_SEMINAR 33
+#define TVSHOW_TRAINER_FAN_CLUB 34
+#define TVSHOW_CUTIES 35
+#define TVSHOW_FRONTIER 36
+#define TVSHOW_NUMBER_ONE 37
+#define TVSHOW_SECRET_BASE_SECRETS 38
+#define TVSHOW_SAFARI_FAN_CLUB 39
+// //
+#define TVSHOW_MASS_OUTBREAK 41
+
+// Number of ribbons to put Spot the Cuties on air
+#define NUM_CUTIES_RIBBONS 4
+
+// TV Show states for Secret Base Secrets
+#define SBSECRETS_STATE_INTRO 0
+#define SBSECRETS_STATE_DO_NEXT1 1
+#define SBSECRETS_STATE_DO_NEXT2 2
+#define SBSECRETS_STATE_TOOK_X_STEPS 3
+#define SBSECRETS_STATE_BASE_INTEREST_LOW 4
+#define SBSECRETS_STATE_BASE_INTEREST_MED 5
+#define SBSECRETS_STATE_BASE_INTEREST_HIGH 6
+#define SBSECRETS_STATE_OUTRO 7
+#define SBSECRETS_STATE_NOTHING_USED1 8
+#define SBSECRETS_STATE_NOTHING_USED2 9
+#define SBSECRETS_STATE_USED_CHAIR 10
+#define SBSECRETS_STATE_USED_BALLOON 11
+#define SBSECRETS_STATE_USED_TENT 12
+#define SBSECRETS_STATE_USED_PLANT 13
+#define SBSECRETS_STATE_USED_GOLD_SHIELD 14
+#define SBSECRETS_STATE_USED_SILVER_SHIELD 15
+#define SBSECRETS_STATE_USED_GLASS_ORNAMENT 16
+#define SBSECRETS_STATE_USED_TV 17
+#define SBSECRETS_STATE_USED_MUD_BALL 18
+#define SBSECRETS_STATE_USED_BAG 19
+#define SBSECRETS_STATE_USED_CUSHION 20
+#define SBSECRETS_STATE_HIT_CUSHION 21
+#define SBSECRETS_STATE_HUGGED_CUSHION 22
+#define SBSECRETS_STATE_BATTLED_WON 23
+#define SBSECRETS_STATE_BATTLED_LOST 24
+#define SBSECRETS_STATE_DECLINED_BATTLE 25
+#define SBSECRETS_STATE_USED_POSTER 26
+#define SBSECRETS_STATE_USED_NOTE_MAT 27
+#define SBSECRETS_STATE_BATTLED_DRAW 28
+#define SBSECRETS_STATE_USED_SPIN_MAT 29
+#define SBSECRETS_STATE_USED_SAND_ORNAMENT 30
+#define SBSECRETS_STATE_USED_DESK 31
+#define SBSECRETS_STATE_USED_BRICK 32
+#define SBSECRETS_STATE_USED_SOLID_BOARD 33
+#define SBSECRETS_STATE_USED_FENCE 34
+#define SBSECRETS_STATE_USED_GLITTER_MAT 35
+#define SBSECRETS_STATE_USED_TIRE 36
+#define SBSECRETS_STATE_USED_STAND 37
+#define SBSECRETS_STATE_USED_BREAKABLE_DOOR 38
+#define SBSECRETS_STATE_USED_DOLL 39
+#define SBSECRETS_STATE_USED_SLIDE 40
+#define SBSECRETS_STATE_DECLINED_SLIDE 41
+#define SBSECRETS_STATE_USED_JUMP_MAT 42
+#define SBSECRETS_NUM_STATES 43
+
+// The below flags are set when interacting with objects in a friends secret base
+// Theyre set as bits in a var, and with 32 flags they're spread across 2 vars
+
+// VAR_SECRET_BASE_LOW_TV_FLAGS
+#define SECRET_BASE_USED_CHAIR (1 << 0)
+#define SECRET_BASE_USED_BALLOON (1 << 1)
+#define SECRET_BASE_USED_TENT (1 << 2)
+#define SECRET_BASE_USED_PLANT (1 << 3)
+#define SECRET_BASE_USED_GOLD_SHIELD (1 << 4)
+#define SECRET_BASE_USED_SILVER_SHIELD (1 << 5)
+#define SECRET_BASE_USED_GLASS_ORNAMENT (1 << 6)
+#define SECRET_BASE_USED_TV (1 << 7)
+#define SECRET_BASE_USED_MUD_BALL (1 << 8)
+#define SECRET_BASE_USED_BAG (1 << 9)
+#define SECRET_BASE_USED_CUSHION (1 << 10)
+#define SECRET_BASE_BATTLED_WON (1 << 11)
+#define SECRET_BASE_BATTLED_LOST (1 << 12)
+#define SECRET_BASE_DECLINED_BATTLE (1 << 13)
+#define SECRET_BASE_USED_POSTER (1 << 14)
+#define SECRET_BASE_USED_NOTE_MAT (1 << 15)
+
+// VAR_SECRET_BASE_HIGH_TV_FLAGS
+#define SECRET_BASE_BATTLED_DRAW (1 << 0)
+#define SECRET_BASE_USED_SPIN_MAT (1 << 1)
+#define SECRET_BASE_USED_SAND_ORNAMENT (1 << 2)
+#define SECRET_BASE_USED_DESK (1 << 3)
+#define SECRET_BASE_USED_BRICK (1 << 4)
+#define SECRET_BASE_USED_SOLID_BOARD (1 << 5)
+#define SECRET_BASE_USED_FENCE (1 << 6)
+#define SECRET_BASE_USED_GLITTER_MAT (1 << 7)
+#define SECRET_BASE_USED_TIRE (1 << 8)
+#define SECRET_BASE_USED_STAND (1 << 9)
+#define SECRET_BASE_USED_BREAKABLE_DOOR (1 << 10)
+#define SECRET_BASE_USED_DOLL (1 << 11)
+#define SECRET_BASE_USED_SLIDE (1 << 12)
+#define SECRET_BASE_DECLINED_SLIDE (1 << 13)
+#define SECRET_BASE_USED_JUMP_MAT (1 << 14)
+#define SECRET_BASE_UNUSED_FLAG (1 << 15)
+
+#define NUM_SECRET_BASE_FLAGS 32 // by definition, bitfield of 2 u16s
+
+
+#endif //GUARD_CONSTANTS_TV_H
diff --git a/include/constants/union_room.h b/include/constants/union_room.h
new file mode 100644
index 000000000..2314f85a0
--- /dev/null
+++ b/include/constants/union_room.h
@@ -0,0 +1,28 @@
+#ifndef GUARD_CONSTANTS_UNION_ROOM_H
+#define GUARD_CONSTANTS_UNION_ROOM_H
+
+#define LINK_GROUP_SINGLE_BATTLE 0
+#define LINK_GROUP_DOUBLE_BATTLE 1
+#define LINK_GROUP_MULTI_BATTLE 2
+#define LINK_GROUP_TRADE 3
+#define LINK_GROUP_POKEMON_JUMP 4
+#define LINK_GROUP_BERRY_CRUSH 5
+#define LINK_GROUP_BERRY_PICKING 6
+#define LINK_GROUP_WONDER_CARD 7
+#define LINK_GROUP_WONDER_NEWS 8
+#define LINK_GROUP_UNK_9 9
+#define LINK_GROUP_UNK_10 10
+#define LINK_GROUP_UNK_11 11
+#define LINK_GROUP_RECORD_CORNER 12
+#define LINK_GROUP_BERRY_BLENDER 13
+#define LINK_GROUP_UNK_14 14
+#define LINK_GROUP_COOL_CONTEST 15
+#define LINK_GROUP_BEAUTY_CONTEST 16
+#define LINK_GROUP_CUTE_CONTEST 17
+#define LINK_GROUP_SMART_CONTEST 18
+#define LINK_GROUP_TOUGH_CONTEST 19
+#define LINK_GROUP_BATTLE_TOWER 20
+#define LINK_GROUP_BATTLE_TOWER_OPEN 21
+#define NUM_LINK_GROUP_TYPES 22
+
+#endif //GUARD_CONSTANTS_UNION_ROOM_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 6b213c8cc..7f622b6e3 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -5,22 +5,24 @@
// temporary vars
// The first 0x10 vars are are temporary--they are cleared every time a map is loaded.
-#define VAR_TEMP_0 0x4000
-#define VAR_TEMP_1 0x4001
-#define VAR_TEMP_2 0x4002
-#define VAR_TEMP_3 0x4003
-#define VAR_TEMP_4 0x4004
-#define VAR_TEMP_5 0x4005
-#define VAR_TEMP_6 0x4006
-#define VAR_TEMP_7 0x4007
-#define VAR_TEMP_8 0x4008
-#define VAR_TEMP_9 0x4009
-#define VAR_TEMP_A 0x400A
-#define VAR_TEMP_B 0x400B
-#define VAR_TEMP_C 0x400C
-#define VAR_TEMP_D 0x400D
-#define VAR_TEMP_E 0x400E
-#define VAR_TEMP_F 0x400F
+#define TEMP_VARS_START 0x4000
+#define VAR_TEMP_0 (TEMP_VARS_START + 0x0)
+#define VAR_TEMP_1 (TEMP_VARS_START + 0x1)
+#define VAR_TEMP_2 (TEMP_VARS_START + 0x2)
+#define VAR_TEMP_3 (TEMP_VARS_START + 0x3)
+#define VAR_TEMP_4 (TEMP_VARS_START + 0x4)
+#define VAR_TEMP_5 (TEMP_VARS_START + 0x5)
+#define VAR_TEMP_6 (TEMP_VARS_START + 0x6)
+#define VAR_TEMP_7 (TEMP_VARS_START + 0x7)
+#define VAR_TEMP_8 (TEMP_VARS_START + 0x8)
+#define VAR_TEMP_9 (TEMP_VARS_START + 0x9)
+#define VAR_TEMP_A (TEMP_VARS_START + 0xA)
+#define VAR_TEMP_B (TEMP_VARS_START + 0xB)
+#define VAR_TEMP_C (TEMP_VARS_START + 0xC)
+#define VAR_TEMP_D (TEMP_VARS_START + 0xD)
+#define VAR_TEMP_E (TEMP_VARS_START + 0xE)
+#define VAR_TEMP_F (TEMP_VARS_START + 0xF)
+#define TEMP_VARS_END VAR_TEMP_F
// object gfx id vars
// These 0x10 vars are used to dynamically control a map object's sprite.
@@ -61,26 +63,26 @@
#define VAR_0x402E 0x402E
#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
-#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
-#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
+#define VAR_FRONTIER_GAMBLER_CHALLENGE 0x4030
+#define VAR_FRONTIER_GAMBLER_SET_CHALLENGE 0x4031
#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
-#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033
+#define VAR_FRONTIER_GAMBLER_STATE 0x4033
#define VAR_DEOXYS_ROCK_STEP_COUNT 0x4034
#define VAR_DEOXYS_ROCK_LEVEL 0x4035
-#define VAR_STORAGE_UNKNOWN 0x4036
-#define VAR_UNUSUAL_WEATHER_LOCATION 0x4037
-#define VAR_UNUSUAL_WEATHER_STEP_COUNTER 0x4038
-#define VAR_SHOULD_END_UNUSUAL_WEATHER 0x4039
+#define VAR_PC_BOX_TO_SEND_MON 0x4036
+#define VAR_ABNORMAL_WEATHER_LOCATION 0x4037
+#define VAR_ABNORMAL_WEATHER_STEP_COUNTER 0x4038
+#define VAR_SHOULD_END_ABNORMAL_WEATHER 0x4039
#define VAR_FARAWAY_ISLAND_STEP_COUNTER 0x403A
#define VAR_REGICE_STEPS_1 0x403B
#define VAR_REGICE_STEPS_2 0x403C
#define VAR_REGICE_STEPS_3 0x403D
#define VAR_ALTERING_CAVE_WILD_SET 0x403E
-#define VAR_ALWAYS_ZERO_0x403F 0x403F // This var is read and written, but is always zero.
+#define VAR_DISTRIBUTE_EON_TICKET 0x403F // This var is read and written, but is always zero. The only way to obtain the Eon Ticket in Emerald is via Record Mixing
#define VAR_DAYS 0x4040
-#define VAR_FANCLUB_UNKNOWN_1 0x4041
-#define VAR_FANCLUB_UNKNOWN_2 0x4042
+#define VAR_FANCLUB_FAN_COUNTER 0x4041
+#define VAR_FANCLUB_LOSE_FAN_TIMER 0x4042
#define VAR_DEPT_STORE_FLOOR 0x4043
#define VAR_TRICK_HOUSE_LEVEL 0x4044
#define VAR_POKELOT_PRIZE_ITEM 0x4045
@@ -144,17 +146,17 @@
#define VAR_ROUTE132_STATE 0x407F // Unused Var
#define VAR_ROUTE133_STATE 0x4080 // Unused Var
#define VAR_ROUTE134_STATE 0x4081 // Unused Var
-#define VAR_LITTLEROOT_HOUSES_STATE 0x4082
+#define VAR_LITTLEROOT_HOUSES_STATE_MAY 0x4082
#define VAR_UNUSED_0x4083 0x4083 // Unused Var
#define VAR_BIRCH_LAB_STATE 0x4084
-#define VAR_PETALBURG_GYM_STATE 0x4085
-#define VAR_LINK_CONTEST_ROOM_STATE 0x4086
+#define VAR_PETALBURG_GYM_STATE 0x4085 // 0-1: Wally tutorial, 2-6: 0-4 badges, 7: Defeated Norman, 8: Rematch Norman
+#define VAR_CONTEST_HALL_STATE 0x4086
#define VAR_CABLE_CLUB_STATE 0x4087
-#define VAR_CONTEST_LOCATION 0x4088
+#define VAR_CONTEST_TYPE 0x4088
#define VAR_SECRET_BASE_INITIALIZED 0x4089
#define VAR_CONTEST_PRIZE_PICKUP 0x408A
#define VAR_UNUSED_0x408B 0x408B // Unused Var
-#define VAR_LITTLEROOT_HOUSES_STATE_2 0x408C
+#define VAR_LITTLEROOT_HOUSES_STATE_BRENDAN 0x408C
#define VAR_LITTLEROOT_RIVAL_STATE 0x408D
#define VAR_BOARD_BRINEY_BOAT_STATE 0x408E
#define VAR_DEVON_CORP_3F_STATE 0x408F
@@ -172,16 +174,16 @@
#define VAR_UNUSED_0x409B 0x409B // Unused Var
#define VAR_ELITE_4_STATE 0x409C
#define VAR_UNUSED_0x409D 0x409D // Unused Var
-#define VAR_MOSSDEEP_SPACE_CENTER_STATE_1 0x409E
-#define VAR_MOSSDEEP_SPACE_CENTER_STATE_2 0x409F
+#define VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE 0x409E
+#define VAR_MOSSDEEP_SPACE_CENTER_STATE 0x409F
#define VAR_SLATEPORT_HARBOR_STATE 0x40A0
#define VAR_UNUSED_0x40A1 0x40A1 // Unused var
#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2
#define VAR_CABLE_CAR_STATION_STATE 0x40A3
-#define VAR_SAFARI_ZONE_STATE 0x40A4
-#define VAR_TRICK_HOUSE_ENTRANCE_STATE_1 0x40A5
-#define VAR_TRICK_HOUSE_ENTRANCE_STATE_2 0x40A6
-#define VAR_TRICK_HOUSE_ENTRANCE_STATE_3 0x40A7
+#define VAR_SAFARI_ZONE_STATE 0x40A4 // 0: In or out of SZ, 1: Player exiting SZ, 2: Player entering SZ
+#define VAR_TRICK_HOUSE_BEING_WATCHED_STATE 0x40A5
+#define VAR_TRICK_HOUSE_FOUND_TRICK_MASTER 0x40A6
+#define VAR_TRICK_HOUSE_ENTRANCE_STATE 0x40A7
#define VAR_UNUSED_0x40A8 0x40A8 // Unused Var
#define VAR_CYCLING_CHALLENGE_STATE 0x40A9
#define VAR_SLATEPORT_MUSEUM_1F_STATE 0x40AA
@@ -194,9 +196,9 @@
#define VAR_TRICK_HOUSE_PUZZLE_7_STATE 0x40B1
#define VAR_TRICK_HOUSE_PUZZLE_8_STATE 0x40B2
#define VAR_WEATHER_INSTITUTE_STATE 0x40B3
-#define VAR_PORTHOLE_STATE 0x40B4
-#define VAR_TRICK_HOUSE_STATE 0x40B5 // TODO: needs some further investigation
-#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6
+#define VAR_SS_TIDAL_STATE 0x40B4
+#define VAR_TRICK_HOUSE_ENTER_FROM_CORRIDOR 0x40B5
+#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6 // Leftover from RS, never set
#define VAR_SLATEPORT_FAN_CLUB_STATE 0x40B7
#define VAR_UNUSED_0x40B8 0x40B8 // Unused Var
#define VAR_MT_PYRE_STATE 0x40B9
@@ -257,9 +259,9 @@
#define VAR_SECRET_BASE_IS_NOT_LOCAL 0x40F0 // Set to TRUE while in another player's secret base.
#define VAR_DAILY_BP 0x40F1
#define VAR_WALLY_CALL_STEP_COUNTER 0x40F2
-#define VAR_WINONA_CALL_STEP_COUNTER 0x40F3
+#define VAR_SCOTT_FORTREE_CALL_STEP_COUNTER 0x40F3
#define VAR_ROXANNE_CALL_STEP_COUNTER 0x40F4
-#define VAR_SCOTT_CALL_STEP_COUNTER 0x40F5
+#define VAR_SCOTT_BF_CALL_STEP_COUNTER 0x40F5
#define VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER 0x40F6
#define VAR_UNUSED_0x40F7 0x40F7 // Unused Var
#define VAR_UNUSED_0x40F8 0x40F8 // Unused Var
@@ -271,7 +273,9 @@
#define VAR_UNUSED_0x40FE 0x40FE // Unused Var
#define VAR_UNUSED_0x40FF 0x40FF // Unused Var
-#define SPECIAL_VARS_START 0x8000
+#define VARS_END 0x40FF
+
+#define SPECIAL_VARS_START 0x8000
// special vars
// They are commonly used as parameters to commands, or return values from commands.
#define VAR_0x8000 0x8000
@@ -297,4 +301,6 @@
#define VAR_UNUSED_0x8014 0x8014
#define VAR_TRAINER_BATTLE_OPPONENT_A 0x8015 // Alias of gTrainerBattleOpponent_A
+#define SPECIAL_VARS_END 0x8015
+
#endif // GUARD_CONSTANTS_VARS_H
diff --git a/include/constants/weather.h b/include/constants/weather.h
index b01cfb390..98a0a2e1e 100644
--- a/include/constants/weather.h
+++ b/include/constants/weather.h
@@ -1,66 +1,66 @@
#ifndef GUARD_CONSTANTS_WEATHER_H
#define GUARD_CONSTANTS_WEATHER_H
-#define WEATHER_NONE 0
-#define WEATHER_CLOUDS 1
-#define WEATHER_SUNNY 2
-#define WEATHER_RAIN_LIGHT 3
-#define WEATHER_SNOW 4
-#define WEATHER_RAIN_MED 5
-#define WEATHER_FOG_1 6
-#define WEATHER_ASH 7
-#define WEATHER_SANDSTORM 8
-#define WEATHER_FOG_2 9
-#define WEATHER_FOG_3 10
-#define WEATHER_SHADE 11
-#define WEATHER_DROUGHT 12
-#define WEATHER_RAIN_HEAVY 13
-#define WEATHER_BUBBLES 14
-#define WEATHER_ALTERNATING 15
-#define WEATHER_ROUTE119_CYCLE 20
-#define WEATHER_ROUTE123_CYCLE 21
+#define WEATHER_NONE 0
+#define WEATHER_SUNNY_CLOUDS 1
+#define WEATHER_SUNNY 2
+#define WEATHER_RAIN 3
+#define WEATHER_SNOW 4 // Unused
+#define WEATHER_RAIN_THUNDERSTORM 5
+#define WEATHER_FOG_HORIZONTAL 6
+#define WEATHER_VOLCANIC_ASH 7
+#define WEATHER_SANDSTORM 8
+#define WEATHER_FOG_DIAGONAL 9 // Unused
+#define WEATHER_UNDERWATER 10 // Unused
+#define WEATHER_SHADE 11 // Original name was closer to WEATHER_CLOUDY/OVERCAST
+#define WEATHER_DROUGHT 12
+#define WEATHER_DOWNPOUR 13
+#define WEATHER_UNDERWATER_BUBBLES 14
+#define WEATHER_ABNORMAL 15 // The alternating weather during Groudon/Kyogre conflict
+#define WEATHER_ROUTE119_CYCLE 20
+#define WEATHER_ROUTE123_CYCLE 21
// These are used in maps' coord_weather_event entries.
// They are not a one-to-one mapping with the engine's
// internal weather constants above.
-#define COORD_EVENT_WEATHER_CLOUDS 1
-#define COORD_EVENT_WEATHER_SUNNY 2
-#define COORD_EVENT_WEATHER_RAIN_LIGHT 3
-#define COORD_EVENT_WEATHER_SNOW 4
-#define COORD_EVENT_WEATHER_RAIN_MED 5
-#define COORD_EVENT_WEATHER_FOG_1 6
-#define COORD_EVENT_WEATHER_FOG_2 7
-#define COORD_EVENT_WEATHER_ASH 8
-#define COORD_EVENT_WEATHER_SANDSTORM 9
-#define COORD_EVENT_WEATHER_SHADE 10
-#define COORD_EVENT_WEATHER_DROUGHT 11
-#define COORD_EVENT_WEATHER_ROUTE119_CYCLE 20
-#define COORD_EVENT_WEATHER_ROUTE123_CYCLE 21
+#define COORD_EVENT_WEATHER_SUNNY_CLOUDS 1
+#define COORD_EVENT_WEATHER_SUNNY 2
+#define COORD_EVENT_WEATHER_RAIN 3
+#define COORD_EVENT_WEATHER_SNOW 4
+#define COORD_EVENT_WEATHER_RAIN_THUNDERSTORM 5
+#define COORD_EVENT_WEATHER_FOG_HORIZONTAL 6
+#define COORD_EVENT_WEATHER_FOG_DIAGONAL 7
+#define COORD_EVENT_WEATHER_VOLCANIC_ASH 8
+#define COORD_EVENT_WEATHER_SANDSTORM 9
+#define COORD_EVENT_WEATHER_SHADE 10
+#define COORD_EVENT_WEATHER_DROUGHT 11
+#define COORD_EVENT_WEATHER_ROUTE119_CYCLE 20
+#define COORD_EVENT_WEATHER_ROUTE123_CYCLE 21
-// These are the "unusual weather events" that are used
+// These are the "abnormal weather events" that are used
// to find Kyogre and Groudon.
-#define UNUSUAL_WEATHER_COUNT_PER_LEGENDARY 8
-#define UNUSUAL_WEATHER_GROUDON_LOCATIONS_START 1
-#define UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START 1 + UNUSUAL_WEATHER_COUNT_PER_LEGENDARY
+#define ABNORMAL_WEATHER_COUNT_PER_LEGENDARY 8
+#define ABNORMAL_WEATHER_GROUDON_LOCATIONS_START 1
+#define ABNORMAL_WEATHER_KYOGRE_LOCATIONS_START 1 + ABNORMAL_WEATHER_COUNT_PER_LEGENDARY
-#define UNUSUAL_WEATHER_NONE 0
+#define ABNORMAL_WEATHER_NONE 0
// Groudon locations
-#define UNUSUAL_WEATHER_ROUTE_114_NORTH 1
-#define UNUSUAL_WEATHER_ROUTE_114_SOUTH 2
-#define UNUSUAL_WEATHER_ROUTE_115_WEST 3
-#define UNUSUAL_WEATHER_ROUTE_115_EAST 4
-#define UNUSUAL_WEATHER_ROUTE_116_NORTH 5
-#define UNUSUAL_WEATHER_ROUTE_116_SOUTH 6
-#define UNUSUAL_WEATHER_ROUTE_118_EAST 7
-#define UNUSUAL_WEATHER_ROUTE_118_WEST 8
+#define ABNORMAL_WEATHER_ROUTE_114_NORTH 1
+#define ABNORMAL_WEATHER_ROUTE_114_SOUTH 2
+#define ABNORMAL_WEATHER_ROUTE_115_WEST 3
+#define ABNORMAL_WEATHER_ROUTE_115_EAST 4
+#define ABNORMAL_WEATHER_ROUTE_116_NORTH 5
+#define ABNORMAL_WEATHER_ROUTE_116_SOUTH 6
+#define ABNORMAL_WEATHER_ROUTE_118_EAST 7
+#define ABNORMAL_WEATHER_ROUTE_118_WEST 8
// Kyogre locations
-#define UNUSUAL_WEATHER_ROUTE_105_NORTH 9
-#define UNUSUAL_WEATHER_ROUTE_105_SOUTH 10
-#define UNUSUAL_WEATHER_ROUTE_125_WEST 11
-#define UNUSUAL_WEATHER_ROUTE_125_EAST 12
-#define UNUSUAL_WEATHER_ROUTE_127_NORTH 13
-#define UNUSUAL_WEATHER_ROUTE_127_SOUTH 14
-#define UNUSUAL_WEATHER_ROUTE_129_WEST 15
-#define UNUSUAL_WEATHER_ROUTE_129_EAST 16
+#define ABNORMAL_WEATHER_ROUTE_105_NORTH 9
+#define ABNORMAL_WEATHER_ROUTE_105_SOUTH 10
+#define ABNORMAL_WEATHER_ROUTE_125_WEST 11
+#define ABNORMAL_WEATHER_ROUTE_125_EAST 12
+#define ABNORMAL_WEATHER_ROUTE_127_NORTH 13
+#define ABNORMAL_WEATHER_ROUTE_127_SOUTH 14
+#define ABNORMAL_WEATHER_ROUTE_129_WEST 15
+#define ABNORMAL_WEATHER_ROUTE_129_EAST 16
#endif // GUARD_CONSTANTS_WEATHER_H