summaryrefslogtreecommitdiff
path: root/include/constants
diff options
context:
space:
mode:
Diffstat (limited to 'include/constants')
-rw-r--r--include/constants/battle_frontier.h19
-rw-r--r--include/constants/battle_pike.h49
-rw-r--r--include/constants/battle_pyramid.h49
-rw-r--r--include/constants/cable_club.h15
-rw-r--r--include/constants/contest.h6
-rw-r--r--include/constants/easy_chat.h1
-rwxr-xr-xinclude/constants/event_object_movement_constants.h4
-rw-r--r--include/constants/field_poison.h12
-rw-r--r--include/constants/field_tasks.h13
-rw-r--r--include/constants/flags.h149
-rw-r--r--include/constants/global.h8
-rwxr-xr-xinclude/constants/map_groups.h4
-rw-r--r--include/constants/mauville_man.h10
-rw-r--r--include/constants/mauville_old_man.h12
-rw-r--r--include/constants/metatile_labels.h18
-rw-r--r--include/constants/party_menu.h132
-rw-r--r--include/constants/pokemon.h5
-rw-r--r--include/constants/script_menu.h4
-rw-r--r--include/constants/trade.h116
-rw-r--r--include/constants/trainer_hill.h2
-rw-r--r--include/constants/tv.h46
-rw-r--r--include/constants/vars.h10
22 files changed, 613 insertions, 71 deletions
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index d287dd2db..b849686f5 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -4,16 +4,17 @@
#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
+#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 FACILITY_UNION_ROOM 8
+#define FACILITY_MULTI_OR_EREADER 9 // Direct Corner multi battles, multi battle with Steven, and e-Reader battles
#define TENT_VERDANTURF 2
#define TENT_FALLARBOR 3
diff --git a/include/constants/battle_pike.h b/include/constants/battle_pike.h
new file mode 100644
index 000000000..e92c4a006
--- /dev/null
+++ b/include/constants/battle_pike.h
@@ -0,0 +1,49 @@
+#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
+
+// For the room with a status effect.
+#define PIKE_STATUS_KIRLIA 0
+#define PIKE_STATUS_DUSCLOPS 1
+
+// 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_IN_FINAL_ROOM 3
+#define BATTLE_PIKE_FUNC_SET_UP_ROOM_OBJECTS 4
+#define BATTLE_PIKE_FUNC_GET_ROOM_TYPE 5
+#define BATTLE_PIKE_FUNC_6 6
+#define BATTLE_PIKE_FUNC_7 7
+#define BATTLE_PIKE_FUNC_8 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_FADE 15
+#define BATTLE_PIKE_FUNC_IS_IN 16
+#define BATTLE_PIKE_FUNC_SET_HINT_ROOM 17
+#define BATTLE_PIKE_FUNC_SET_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_BUFFER_RECORD_MIX_MSG 21
+#define BATTLE_PIKE_FUNC_GET_QUEEN_FIGHT_TYPE 22
+#define BATTLE_PIKE_FUNC_HEAL_MONS_BEFORE_QUEEN 23
+#define BATTLE_PIKE_FUNC_SET_HEALING_ROOMS_DISABLED 24
+#define BATTLE_PIKE_FUNC_CAN_PARTY_BE_HEALED 25
+#define BATTLE_PIKE_FUNC_SAVE_MON_HELD_ITEMS 26
+#define BATTLE_PIKE_FUNC_LOAD_MON_HELD_ITEMS 27
+#define BATTLE_PIKE_FUNC_INIT_CHALLENGE 28
+
+#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..0d59ae94d
--- /dev/null
+++ b/include/constants/battle_pyramid.h
@@ -0,0 +1,49 @@
+#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_CHALLENGE 0
+#define BATTLE_PYRAMID_FUNC_GET_DATA 1
+#define BATTLE_PYRAMID_FUNC_SET_DATA 2
+#define BATTLE_PYRAMID_FUNC_3 3
+#define BATTLE_PYRAMID_FUNC_SET_REWARD 4
+#define BATTLE_PYRAMID_FUNC_GIVE_REWARD 5
+#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_INIT_TRAINERS 9
+#define BATTLE_PYRAMID_FUNC_SHOW_HINT_TEXT 10
+#define BATTLE_PYRAMID_FUNC_UPDATE_STREAK 11
+#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_16 16
+#define BATTLE_PYRAMID_FUNC_RESTORE_PARTY 17
+
+#endif // GUARD_CONSTANTS_BATTLE_PYRAMID_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/contest.h b/include/constants/contest.h
index d3296222b..0c866069e 100644
--- a/include/constants/contest.h
+++ b/include/constants/contest.h
@@ -16,4 +16,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/easy_chat.h b/include/constants/easy_chat.h
index 50f5994f4..b97c2aaf2 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -1095,6 +1095,7 @@
#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
#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_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/flags.h b/include/constants/flags.h
index 4679e953c..0e85e2570 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -87,7 +87,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
@@ -109,10 +109,10 @@
#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
@@ -146,7 +146,7 @@
#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.
@@ -163,9 +163,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
@@ -332,10 +330,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,8 +353,8 @@
#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_CLAW_FOSSIL 0x14F
+#define FLAG_CHOSE_ROOT_FOSSIL 0x150
#define FLAG_RECEIVED_POWDER_JAR 0x151
#define FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER 0x152
@@ -367,7 +365,7 @@
#define FLAG_MET_SLATEPORT_FANCLUB_CHAIRMAN 0x156
#define FLAG_MET_BATTLE_FRONTIER_BETTOR 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
@@ -650,6 +648,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,16 +777,16 @@
#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_EVENT_TICKET_TAKER 0x2EC
#define FLAG_HIDE_SLATEPORT_CITY_SCOTT 0x2ED
@@ -778,9 +865,7 @@
#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
@@ -883,7 +968,7 @@
#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_FALLARBOR_HOUSE_PROF_COZMO 0x3A0
#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_1 0x3A1
#define FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_2 0x3A2
#define FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1 0x3A3
@@ -925,7 +1010,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,14 +1021,14 @@
#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_ROUTE_120_KECLEON_BRIDGE_VISIBLE 0x3D5
+#define FLAG_HIDE_ROUTE_120_KECLEON_1 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_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
@@ -1549,9 +1634,9 @@
// Special Flags (Unknown)
#define SPECIAL_FLAGS_START 0x4000
#define FLAG_HIDE_MAP_NAME_POPUP 0x4000
-#define FLAG_SPECIAL_FLAG_0x4001 0x4001
+#define FLAG_DONT_TRANSITION_MUSIC 0x4001
#define FLAG_SPECIAL_FLAG_0x4002 0x4002
#define FLAG_SPECIAL_FLAG_0x4003 0x4003
-#define FLAG_SPECIAL_FLAG_0x4004 0x4004
+#define FLAG_STORING_ITEMS_IN_PYRAMID_BAG 0x4004
#endif // GUARD_CONSTANTS_FLAGS_H
diff --git a/include/constants/global.h b/include/constants/global.h
index 7e0b5cfa4..4ade1c823 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -46,12 +46,16 @@
#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 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 PARTY_SIZE 6
+#define FRONTIER_PARTY_SIZE 3
+#define MULTI_PARTY_SIZE PARTY_SIZE / 2
#define MAX_MON_MOVES 4
// string lengths
@@ -65,6 +69,10 @@
#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
#define OPTIONS_BUTTON_MODE_L_EQUALS_A 2
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
index 6a3276b44..802c381b5 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))
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_labels.h b/include/constants/metatile_labels.h
index 8fe95b464..2f3ce5f71 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -68,13 +68,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
@@ -376,6 +379,7 @@
#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
#define METATILE_BikeShop_Barrier_Hidden_Top 0x269
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 52a4f0254..b2084f154 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -177,13 +177,13 @@
#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
@@ -192,6 +192,9 @@
#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 MON_MALE 0x00
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
diff --git a/include/constants/script_menu.h b/include/constants/script_menu.h
index b7ec908c1..928ca00e0 100644
--- a/include/constants/script_menu.h
+++ b/include/constants/script_menu.h
@@ -13,8 +13,8 @@
#define MULTI_ENTERINFO 2
#define MULTI_CONTEST_INFO 3
#define MULTI_CONTEST_TYPE 4
-#define MULTI_DECOR_NOREGISTRY 5
-#define MULTI_DECOR_REGISTRY 6
+#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
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..cab56a5ac 100644
--- a/include/constants/trainer_hill.h
+++ b/include/constants/trainer_hill.h
@@ -11,7 +11,7 @@
#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_IS_IN 10
#define TRAINER_HILL_FUNC_11 11
#define TRAINER_HILL_FUNC_12 12
#define TRAINER_HILL_FUNC_13 13
diff --git a/include/constants/tv.h b/include/constants/tv.h
new file mode 100644
index 000000000..c22bec9a3
--- /dev/null
+++ b/include/constants/tv.h
@@ -0,0 +1,46 @@
+#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
+
+#endif //GUARD_CONSTANTS_TV_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 72b15654e..64ff6622b 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -77,7 +77,7 @@
#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
@@ -147,7 +147,7 @@
#define VAR_LITTLEROOT_HOUSES_STATE 0x4082
#define VAR_UNUSED_0x4083 0x4083 // Unused Var
#define VAR_BIRCH_LAB_STATE 0x4084
-#define VAR_PETALBURG_GYM_STATE 0x4085
+#define VAR_PETALBURG_GYM_STATE 0x4085 // 0-1: Wally tutorial, 2-6: 0-4 badges, 7: Defeated Norman, 8: Rematch Norman
#define VAR_LINK_CONTEST_ROOM_STATE 0x4086
#define VAR_CABLE_CLUB_STATE 0x4087
#define VAR_CONTEST_LOCATION 0x4088
@@ -172,13 +172,13 @@
#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_SAFARI_ZONE_STATE 0x40A4 // 0: In or out of SZ, 1: Player exiting SZ, 2: Player entering SZ
#define VAR_TRICK_HOUSE_ENTRANCE_STATE_1 0x40A5
#define VAR_TRICK_HOUSE_ENTRANCE_STATE_2 0x40A6
#define VAR_TRICK_HOUSE_ENTRANCE_STATE_3 0x40A7