pokeemerald-expansion/include/constants/trainers.h
grintoul 838d582381
enum TrainerPicID to replace defines for TRAINER_PIC_XXXX and TRAINER_BACK_PIC_XXXX (#8789)
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
2026-01-03 16:41:11 -08:00

385 lines
16 KiB
C

#ifndef GUARD_TRAINERS_H
#define GUARD_TRAINERS_H
#include "constants/opponents.h"
#include "constants/battle_frontier_trainers.h"
// Special Trainer Ids.
// 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
#define TRAINER_PLAYER 1023
#define TRAINER_SECRET_BASE 1024
#define TRAINER_LINK_OPPONENT 2048
#define TRAINER_UNION_ROOM 3072
enum __attribute__((packed)) TrainerPicID
{
TRAINER_PIC_FRONT_HIKER,
TRAINER_PIC_FRONT_AQUA_GRUNT_M,
TRAINER_PIC_FRONT_POKEMON_BREEDER_F,
TRAINER_PIC_FRONT_COOLTRAINER_M,
TRAINER_PIC_FRONT_BIRD_KEEPER,
TRAINER_PIC_FRONT_COLLECTOR,
TRAINER_PIC_FRONT_AQUA_GRUNT_F,
TRAINER_PIC_FRONT_SWIMMER_M,
TRAINER_PIC_FRONT_MAGMA_GRUNT_M,
TRAINER_PIC_FRONT_EXPERT_M,
TRAINER_PIC_FRONT_AQUA_ADMIN_M,
TRAINER_PIC_FRONT_BLACK_BELT,
TRAINER_PIC_FRONT_AQUA_ADMIN_F,
TRAINER_PIC_FRONT_AQUA_LEADER_ARCHIE,
TRAINER_PIC_FRONT_HEX_MANIAC,
TRAINER_PIC_FRONT_AROMA_LADY,
TRAINER_PIC_FRONT_RUIN_MANIAC,
TRAINER_PIC_FRONT_INTERVIEWER,
TRAINER_PIC_FRONT_TUBER_F,
TRAINER_PIC_FRONT_TUBER_M,
TRAINER_PIC_FRONT_COOLTRAINER_F,
TRAINER_PIC_FRONT_LADY,
TRAINER_PIC_FRONT_BEAUTY,
TRAINER_PIC_FRONT_RICH_BOY,
TRAINER_PIC_FRONT_EXPERT_F,
TRAINER_PIC_FRONT_POKEMANIAC,
TRAINER_PIC_FRONT_MAGMA_GRUNT_F,
TRAINER_PIC_FRONT_GUITARIST,
TRAINER_PIC_FRONT_KINDLER,
TRAINER_PIC_FRONT_CAMPER,
TRAINER_PIC_FRONT_PICNICKER,
TRAINER_PIC_FRONT_BUG_MANIAC,
TRAINER_PIC_FRONT_POKEMON_BREEDER_M,
TRAINER_PIC_FRONT_PSYCHIC_M,
TRAINER_PIC_FRONT_PSYCHIC_F,
TRAINER_PIC_FRONT_GENTLEMAN,
TRAINER_PIC_FRONT_ELITE_FOUR_SIDNEY,
TRAINER_PIC_FRONT_ELITE_FOUR_PHOEBE,
TRAINER_PIC_FRONT_ELITE_FOUR_GLACIA,
TRAINER_PIC_FRONT_ELITE_FOUR_DRAKE,
TRAINER_PIC_FRONT_LEADER_ROXANNE,
TRAINER_PIC_FRONT_LEADER_BRAWLY,
TRAINER_PIC_FRONT_LEADER_WATTSON,
TRAINER_PIC_FRONT_LEADER_FLANNERY,
TRAINER_PIC_FRONT_LEADER_NORMAN,
TRAINER_PIC_FRONT_LEADER_WINONA,
TRAINER_PIC_FRONT_LEADER_TATE_AND_LIZA,
TRAINER_PIC_FRONT_LEADER_JUAN,
TRAINER_PIC_FRONT_SCHOOL_KID_M,
TRAINER_PIC_FRONT_SCHOOL_KID_F,
TRAINER_PIC_FRONT_SR_AND_JR,
TRAINER_PIC_FRONT_POKEFAN_M,
TRAINER_PIC_FRONT_POKEFAN_F,
TRAINER_PIC_FRONT_YOUNGSTER,
TRAINER_PIC_FRONT_CHAMPION_WALLACE,
TRAINER_PIC_FRONT_FISHERMAN,
TRAINER_PIC_FRONT_CYCLING_TRIATHLETE_M,
TRAINER_PIC_FRONT_CYCLING_TRIATHLETE_F,
TRAINER_PIC_FRONT_RUNNING_TRIATHLETE_M,
TRAINER_PIC_FRONT_RUNNING_TRIATHLETE_F,
TRAINER_PIC_FRONT_SWIMMING_TRIATHLETE_M,
TRAINER_PIC_FRONT_SWIMMING_TRIATHLETE_F,
TRAINER_PIC_FRONT_DRAGON_TAMER,
TRAINER_PIC_FRONT_NINJA_BOY,
TRAINER_PIC_FRONT_BATTLE_GIRL,
TRAINER_PIC_FRONT_PARASOL_LADY,
TRAINER_PIC_FRONT_SWIMMER_F,
TRAINER_PIC_FRONT_TWINS,
TRAINER_PIC_FRONT_SAILOR,
TRAINER_PIC_FRONT_MAGMA_ADMIN,
TRAINER_PIC_FRONT_WALLY,
TRAINER_PIC_FRONT_BRENDAN,
TRAINER_PIC_FRONT_MAY,
TRAINER_PIC_FRONT_BUG_CATCHER,
TRAINER_PIC_FRONT_POKEMON_RANGER_M,
TRAINER_PIC_FRONT_POKEMON_RANGER_F,
TRAINER_PIC_FRONT_MAGMA_LEADER_MAXIE,
TRAINER_PIC_FRONT_LASS,
TRAINER_PIC_FRONT_YOUNG_COUPLE,
TRAINER_PIC_FRONT_OLD_COUPLE,
TRAINER_PIC_FRONT_SIS_AND_BRO,
TRAINER_PIC_FRONT_STEVEN,
TRAINER_PIC_FRONT_SALON_MAIDEN_ANABEL,
TRAINER_PIC_FRONT_DOME_ACE_TUCKER,
TRAINER_PIC_FRONT_PALACE_MAVEN_SPENSER,
TRAINER_PIC_FRONT_ARENA_TYCOON_GRETA,
TRAINER_PIC_FRONT_FACTORY_HEAD_NOLAND,
TRAINER_PIC_FRONT_PIKE_QUEEN_LUCY,
TRAINER_PIC_FRONT_PYRAMID_KING_BRANDON,
TRAINER_PIC_FRONT_RED,
TRAINER_PIC_FRONT_LEAF,
TRAINER_PIC_FRONT_RS_BRENDAN,
TRAINER_PIC_FRONT_RS_MAY,
TRAINER_PIC_FRONT_COUNT,
TRAINER_PIC_BACK_BRENDAN = TRAINER_PIC_FRONT_COUNT, // The player back pics are assumed to alternate according to the gender values (MALE/FEMALE)
TRAINER_PIC_BACK_MAY,
TRAINER_PIC_BACK_RED,
TRAINER_PIC_BACK_LEAF,
TRAINER_PIC_BACK_RUBY_SAPPHIRE_BRENDAN,
TRAINER_PIC_BACK_RUBY_SAPPHIRE_MAY,
TRAINER_PIC_BACK_WALLY,
TRAINER_PIC_BACK_STEVEN,
TRAINER_PIC_COUNT,
TRAINER_PIC_BACK_COUNT = (TRAINER_PIC_COUNT - TRAINER_PIC_FRONT_COUNT),
};
#define FACILITY_CLASS_HIKER 0x0
#define FACILITY_CLASS_AQUA_GRUNT_M 0x1
#define FACILITY_CLASS_PKMN_BREEDER_F 0x2
#define FACILITY_CLASS_COOLTRAINER_M 0x3
#define FACILITY_CLASS_BIRD_KEEPER 0x4
#define FACILITY_CLASS_COLLECTOR 0x5
#define FACILITY_CLASS_AQUA_GRUNT_F 0x6
#define FACILITY_CLASS_SWIMMER_M 0x7
#define FACILITY_CLASS_MAGMA_GRUNT_M 0x8
#define FACILITY_CLASS_EXPERT_M 0x9
#define FACILITY_CLASS_BLACK_BELT 0xa
#define FACILITY_CLASS_AQUA_LEADER_ARCHIE 0xb
#define FACILITY_CLASS_HEX_MANIAC 0xc
#define FACILITY_CLASS_AROMA_LADY 0xd
#define FACILITY_CLASS_RUIN_MANIAC 0xe
#define FACILITY_CLASS_INTERVIEWER 0xf
#define FACILITY_CLASS_TUBER_F 0x10
#define FACILITY_CLASS_TUBER_M 0x11
#define FACILITY_CLASS_COOLTRAINER_F 0x12
#define FACILITY_CLASS_LADY 0x13
#define FACILITY_CLASS_BEAUTY 0x14
#define FACILITY_CLASS_RICH_BOY 0x15
#define FACILITY_CLASS_EXPERT_F 0x16
#define FACILITY_CLASS_POKEMANIAC 0x17
#define FACILITY_CLASS_MAGMA_GRUNT_F 0x18
#define FACILITY_CLASS_GUITARIST 0x19
#define FACILITY_CLASS_KINDLER 0x1a
#define FACILITY_CLASS_CAMPER 0x1b
#define FACILITY_CLASS_PICNICKER 0x1c
#define FACILITY_CLASS_BUG_MANIAC 0x1d
#define FACILITY_CLASS_PSYCHIC_M 0x1e
#define FACILITY_CLASS_PSYCHIC_F 0x1f
#define FACILITY_CLASS_GENTLEMAN 0x20
#define FACILITY_CLASS_ELITE_FOUR_SIDNEY 0x21
#define FACILITY_CLASS_ELITE_FOUR_PHOEBE 0x22
#define FACILITY_CLASS_LEADER_ROXANNE 0x23
#define FACILITY_CLASS_LEADER_BRAWLY 0x24
#define FACILITY_CLASS_LEADER_TATE_AND_LIZA 0x25
#define FACILITY_CLASS_SCHOOL_KID_M 0x26
#define FACILITY_CLASS_SCHOOL_KID_F 0x27
#define FACILITY_CLASS_SR_AND_JR 0x28
#define FACILITY_CLASS_POKEFAN_M 0x29
#define FACILITY_CLASS_POKEFAN_F 0x2a
#define FACILITY_CLASS_YOUNGSTER 0x2b
#define FACILITY_CLASS_CHAMPION_WALLACE 0x2c
#define FACILITY_CLASS_FISHERMAN 0x2d
#define FACILITY_CLASS_CYCLING_TRIATHLETE_M 0x2e
#define FACILITY_CLASS_CYCLING_TRIATHLETE_F 0x2f
#define FACILITY_CLASS_RUNNING_TRIATHLETE_M 0x30
#define FACILITY_CLASS_RUNNING_TRIATHLETE_F 0x31
#define FACILITY_CLASS_SWIMMING_TRIATHLETE_M 0x32
#define FACILITY_CLASS_SWIMMING_TRIATHLETE_F 0x33
#define FACILITY_CLASS_DRAGON_TAMER 0x34
#define FACILITY_CLASS_NINJA_BOY 0x35
#define FACILITY_CLASS_BATTLE_GIRL 0x36
#define FACILITY_CLASS_PARASOL_LADY 0x37
#define FACILITY_CLASS_SWIMMER_F 0x38
#define FACILITY_CLASS_TWINS 0x39
#define FACILITY_CLASS_SAILOR 0x3a
#define FACILITY_CLASS_WALLY 0x3b
#define FACILITY_CLASS_BRENDAN 0x3c
#define FACILITY_CLASS_BRENDAN_2 0x3d
#define FACILITY_CLASS_BRENDAN_3 0x3e
#define FACILITY_CLASS_MAY 0x3f
#define FACILITY_CLASS_MAY_2 0x40
#define FACILITY_CLASS_MAY_3 0x41
#define FACILITY_CLASS_PKMN_BREEDER_M 0x42
#define FACILITY_CLASS_BUG_CATCHER 0x43
#define FACILITY_CLASS_PKMN_RANGER_M 0x44
#define FACILITY_CLASS_PKMN_RANGER_F 0x45
#define FACILITY_CLASS_MAGMA_LEADER_MAXIE 0x46
#define FACILITY_CLASS_LASS 0x47
#define FACILITY_CLASS_YOUNG_COUPLE 0x48
#define FACILITY_CLASS_OLD_COUPLE 0x49
#define FACILITY_CLASS_SIS_AND_BRO 0x4a
#define FACILITY_CLASS_STEVEN 0x4b
#define FACILITY_CLASS_SALON_MAIDEN_ANABEL 0x4c
#define FACILITY_CLASS_DOME_ACE_TUCKER 0x4d
#define FACILITY_CLASS_RED 0x4e
#define FACILITY_CLASS_LEAF 0x4f
#define FACILITY_CLASS_RS_BRENDAN 0x50
#define FACILITY_CLASS_RS_MAY 0x51
#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
enum TrainerClassID
{
TRAINER_CLASS_PKMN_TRAINER_1, // Unused
TRAINER_CLASS_PKMN_TRAINER_2, // Unused
TRAINER_CLASS_HIKER,
TRAINER_CLASS_TEAM_AQUA,
TRAINER_CLASS_PKMN_BREEDER,
TRAINER_CLASS_COOLTRAINER,
TRAINER_CLASS_BIRD_KEEPER,
TRAINER_CLASS_COLLECTOR,
TRAINER_CLASS_SWIMMER_M,
TRAINER_CLASS_TEAM_MAGMA,
TRAINER_CLASS_EXPERT,
TRAINER_CLASS_AQUA_ADMIN,
TRAINER_CLASS_BLACK_BELT,
TRAINER_CLASS_AQUA_LEADER,
TRAINER_CLASS_HEX_MANIAC,
TRAINER_CLASS_AROMA_LADY,
TRAINER_CLASS_RUIN_MANIAC,
TRAINER_CLASS_INTERVIEWER,
TRAINER_CLASS_TUBER_F,
TRAINER_CLASS_TUBER_M,
TRAINER_CLASS_LADY,
TRAINER_CLASS_BEAUTY,
TRAINER_CLASS_RICH_BOY,
TRAINER_CLASS_POKEMANIAC,
TRAINER_CLASS_GUITARIST,
TRAINER_CLASS_KINDLER,
TRAINER_CLASS_CAMPER,
TRAINER_CLASS_PICNICKER,
TRAINER_CLASS_BUG_MANIAC,
TRAINER_CLASS_PSYCHIC,
TRAINER_CLASS_GENTLEMAN,
TRAINER_CLASS_ELITE_FOUR,
TRAINER_CLASS_LEADER,
TRAINER_CLASS_SCHOOL_KID,
TRAINER_CLASS_SR_AND_JR,
TRAINER_CLASS_WINSTRATE,
TRAINER_CLASS_POKEFAN,
TRAINER_CLASS_YOUNGSTER,
TRAINER_CLASS_CHAMPION,
TRAINER_CLASS_FISHERMAN,
TRAINER_CLASS_TRIATHLETE,
TRAINER_CLASS_DRAGON_TAMER,
TRAINER_CLASS_NINJA_BOY,
TRAINER_CLASS_BATTLE_GIRL,
TRAINER_CLASS_PARASOL_LADY,
TRAINER_CLASS_SWIMMER_F,
TRAINER_CLASS_TWINS,
TRAINER_CLASS_SAILOR,
TRAINER_CLASS_COOLTRAINER_2, // Used for only one trainer.
TRAINER_CLASS_MAGMA_ADMIN,
TRAINER_CLASS_RIVAL,
TRAINER_CLASS_BUG_CATCHER,
TRAINER_CLASS_PKMN_RANGER,
TRAINER_CLASS_MAGMA_LEADER,
TRAINER_CLASS_LASS,
TRAINER_CLASS_YOUNG_COUPLE,
TRAINER_CLASS_OLD_COUPLE,
TRAINER_CLASS_SIS_AND_BRO,
TRAINER_CLASS_SALON_MAIDEN,
TRAINER_CLASS_DOME_ACE,
TRAINER_CLASS_PALACE_MAVEN,
TRAINER_CLASS_ARENA_TYCOON,
TRAINER_CLASS_FACTORY_HEAD,
TRAINER_CLASS_PIKE_QUEEN,
TRAINER_CLASS_PYRAMID_KING,
TRAINER_CLASS_RS_PROTAG,
TRAINER_CLASS_COUNT,
};
#define TRAINER_ENCOUNTER_MUSIC_MALE 0 // standard male encounter music
#define TRAINER_ENCOUNTER_MUSIC_FEMALE 1 // standard female encounter music
#define TRAINER_ENCOUNTER_MUSIC_GIRL 2 // used for male Tubers and Young Couples too
#define TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS 3
#define TRAINER_ENCOUNTER_MUSIC_INTENSE 4
#define TRAINER_ENCOUNTER_MUSIC_COOL 5
#define TRAINER_ENCOUNTER_MUSIC_AQUA 6
#define TRAINER_ENCOUNTER_MUSIC_MAGMA 7
#define TRAINER_ENCOUNTER_MUSIC_SWIMMER 8
#define TRAINER_ENCOUNTER_MUSIC_TWINS 9 // used for other trainer classes too
#define TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR 10
#define TRAINER_ENCOUNTER_MUSIC_HIKER 11 // used for other trainer classes too
#define TRAINER_ENCOUNTER_MUSIC_INTERVIEWER 12
#define TRAINER_ENCOUNTER_MUSIC_RICH 13 // Rich Boys and Gentlemen
#define F_TRAINER_FEMALE (1 << 7)
// Trainer party defines
#define TRAINER_MON_MALE 1
#define TRAINER_MON_FEMALE 2
#define TRAINER_MON_RANDOM_GENDER 3
#endif // GUARD_TRAINERS_H