#ifndef GUARD_CONSTANTS_TRAINERS_H
#define GUARD_CONSTANTS_TRAINERS_H

#include "constants/opponents.h"

#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 TRAINER_PIC_AQUA_LEADER_ARCHIE      0
#define TRAINER_PIC_AQUA_GRUNT_M            1
#define TRAINER_PIC_AQUA_GRUNT_F            2
#define TRAINER_PIC_RS_AROMA_LADY           3
#define TRAINER_PIC_RS_RUIN_MANIAC          4
#define TRAINER_PIC_INTERVIEWER             5
#define TRAINER_PIC_RS_TUBER_F              6
#define TRAINER_PIC_TUBER_M                 7
#define TRAINER_PIC_RS_COOLTRAINER_M        8
#define TRAINER_PIC_RS_COOLTRAINER_F        9
#define TRAINER_PIC_HEX_MANIAC             10
#define TRAINER_PIC_RS_LADY                11
#define TRAINER_PIC_RS_BEAUTY              12
#define TRAINER_PIC_RICH_BOY               13
#define TRAINER_PIC_RS_POKEMANIAC          14
#define TRAINER_PIC_RS_SWIMMER_M           15
#define TRAINER_PIC_RS_BLACK_BELT          16
#define TRAINER_PIC_GUITARIST              17
#define TRAINER_PIC_KINDLER                18
#define TRAINER_PIC_RS_CAMPER              19
#define TRAINER_PIC_BUG_MANIAC             20
#define TRAINER_PIC_RS_PSYCHIC_M           21
#define TRAINER_PIC_RS_PSYCHIC_F           22
#define TRAINER_PIC_RS_GENTLEMAN           23
#define TRAINER_PIC_ELITE_FOUR_SIDNEY      24
#define TRAINER_PIC_ELITE_FOUR_PHOEBE      25
#define TRAINER_PIC_LEADER_ROXANNE         26
#define TRAINER_PIC_LEADER_BRAWLY          27
#define TRAINER_PIC_LEADER_TATE_AND_LIZA   28
#define TRAINER_PIC_SCHOOL_KID_M           29
#define TRAINER_PIC_SCHOOL_KID_F           30
#define TRAINER_PIC_SR_AND_JR              31
#define TRAINER_PIC_POKEFAN_M              32
#define TRAINER_PIC_POKEFAN_F              33
#define TRAINER_PIC_EXPERT_M               34
#define TRAINER_PIC_EXPERT_F               35
#define TRAINER_PIC_RS_YOUNGSTER           36
#define TRAINER_PIC_CHAMPION_STEVEN        37
#define TRAINER_PIC_RS_FISHERMAN           38
#define TRAINER_PIC_CYCLING_TRIATHLETE_M   39
#define TRAINER_PIC_CYCLING_TRIATHLETE_F   40
#define TRAINER_PIC_RUNNING_TRIATHLETE_M   41
#define TRAINER_PIC_RUNNING_TRIATHLETE_F   42
#define TRAINER_PIC_SWIMMING_TRIATHLETE_M  43
#define TRAINER_PIC_SWIMMING_TRIATHLETE_F  44
#define TRAINER_PIC_DRAGON_TAMER           45
#define TRAINER_PIC_RS_BIRD_KEEPER         46
#define TRAINER_PIC_NINJA_BOY              47
#define TRAINER_PIC_BATTLE_GIRL            48
#define TRAINER_PIC_PARASOL_LADY           49
#define TRAINER_PIC_RS_SWIMMER_F           50
#define TRAINER_PIC_RS_PICNICKER           51
#define TRAINER_PIC_RS_TWINS               52
#define TRAINER_PIC_RS_SAILOR              53
#define TRAINER_PIC_COLLECTOR              54
#define TRAINER_PIC_WALLY                  55
#define TRAINER_PIC_RS_BRENDAN_1           56
#define TRAINER_PIC_RS_MAY_1               57
#define TRAINER_PIC_POKEMON_BREEDER_M      58
#define TRAINER_PIC_RS_POKEMON_BREEDER_F   59
#define TRAINER_PIC_RS_POKEMON_RANGER_M    60
#define TRAINER_PIC_RS_POKEMON_RANGER_F    61
#define TRAINER_PIC_MAGMA_LEADER_MAXIE     62
#define TRAINER_PIC_MAGMA_GRUNT_M          63
#define TRAINER_PIC_MAGMA_GRUNT_F          64
#define TRAINER_PIC_RS_LASS                65
#define TRAINER_PIC_RS_BUG_CATCHER         66
#define TRAINER_PIC_RS_HIKER               67
#define TRAINER_PIC_RS_YOUNG_COUPLE        68
#define TRAINER_PIC_OLD_COUPLE             69
#define TRAINER_PIC_RS_SIS_AND_BRO         70
#define TRAINER_PIC_AQUA_ADMIN_M           71
#define TRAINER_PIC_AQUA_ADMIN_F           72
#define TRAINER_PIC_MAGMA_ADMIN_M          73
#define TRAINER_PIC_MAGMA_ADMIN_F          74
#define TRAINER_PIC_LEADER_WATTSON         75
#define TRAINER_PIC_LEADER_FLANNERY        76
#define TRAINER_PIC_LEADER_NORMAN          77
#define TRAINER_PIC_LEADER_WINONA          78
#define TRAINER_PIC_LEADER_WALLACE         79
#define TRAINER_PIC_ELITE_FOUR_GLACIA      80
#define TRAINER_PIC_ELITE_FOUR_DRAKE       81
#define TRAINER_PIC_YOUNGSTER              82
#define TRAINER_PIC_BUG_CATCHER            83
#define TRAINER_PIC_LASS                   84
#define TRAINER_PIC_SAILOR                 85
#define TRAINER_PIC_CAMPER                 86
#define TRAINER_PIC_PICNICKER              87
#define TRAINER_PIC_POKEMANIAC             88
#define TRAINER_PIC_SUPER_NERD             89
#define TRAINER_PIC_HIKER                  90
#define TRAINER_PIC_BIKER                  91
#define TRAINER_PIC_BURGLAR                92
#define TRAINER_PIC_ENGINEER               93
#define TRAINER_PIC_FISHERMAN              94
#define TRAINER_PIC_SWIMMER_M              95
#define TRAINER_PIC_CUE_BALL               96
#define TRAINER_PIC_GAMER                  97
#define TRAINER_PIC_BEAUTY                 98
#define TRAINER_PIC_SWIMMER_F              99
#define TRAINER_PIC_PSYCHIC_M             100
#define TRAINER_PIC_ROCKER                101
#define TRAINER_PIC_JUGGLER               102
#define TRAINER_PIC_TAMER                 103
#define TRAINER_PIC_BIRD_KEEPER           104
#define TRAINER_PIC_BLACK_BELT            105
#define TRAINER_PIC_RIVAL_1               106
#define TRAINER_PIC_SCIENTIST             107
#define TRAINER_PIC_LEADER_GIOVANNI       108
#define TRAINER_PIC_ROCKET_GRUNT_M        109
#define TRAINER_PIC_COOLTRAINER_M         110
#define TRAINER_PIC_COOLTRAINER_F         111
#define TRAINER_PIC_ELITE_FOUR_LORELEI    112
#define TRAINER_PIC_ELITE_FOUR_BRUNO      113
#define TRAINER_PIC_ELITE_FOUR_AGATHA     114
#define TRAINER_PIC_ELITE_FOUR_LANCE      115
#define TRAINER_PIC_LEADER_BROCK          116
#define TRAINER_PIC_LEADER_MISTY          117
#define TRAINER_PIC_LEADER_LT_SURGE       118
#define TRAINER_PIC_LEADER_ERIKA          119
#define TRAINER_PIC_LEADER_KOGA           120
#define TRAINER_PIC_LEADER_BLAINE         121
#define TRAINER_PIC_LEADER_SABRINA        122
#define TRAINER_PIC_GENTLEMAN             123
#define TRAINER_PIC_RIVAL_2               124
#define TRAINER_PIC_CHAMPION_RIVAL        125
#define TRAINER_PIC_CHANNELER             126
#define TRAINER_PIC_TWINS                 127
#define TRAINER_PIC_COOL_COUPLE           128
#define TRAINER_PIC_YOUNG_COUPLE          129
#define TRAINER_PIC_CRUSH_KIN             130
#define TRAINER_PIC_SIS_AND_BRO           131
#define TRAINER_PIC_PROFESSOR_OAK         132
#define TRAINER_PIC_RS_BRENDAN_2          133
#define TRAINER_PIC_RS_MAY_2              134
#define TRAINER_PIC_RED                   135
#define TRAINER_PIC_LEAF                  136
#define TRAINER_PIC_ROCKET_GRUNT_F        137
#define TRAINER_PIC_PSYCHIC_F             138
#define TRAINER_PIC_CRUSH_GIRL            139
#define TRAINER_PIC_TUBER_F               140
#define TRAINER_PIC_POKEMON_BREEDER_F     141
#define TRAINER_PIC_POKEMON_RANGER_M      142
#define TRAINER_PIC_POKEMON_RANGER_F      143
#define TRAINER_PIC_AROMA_LADY            144
#define TRAINER_PIC_RUIN_MANIAC           145
#define TRAINER_PIC_LADY                  146
#define TRAINER_PIC_PAINTER               147

// Leftover from R/S
#define TRAINER_SECRET_BASE                 1024

#define F_TRAINER_FEMALE (1 << 7)

// All trainer parties specify the IV, level, and species for each Pokémon in the
// party. Some trainer parties also specify held items and custom moves for each
// Pokémon.
#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0)
#define F_TRAINER_PARTY_HELD_ITEM      (1 << 1)

#endif  // GUARD_CONSTANTS_TRAINERS_H
