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>
This commit is contained in:
grintoul 2026-01-04 00:41:11 +00:00 committed by GitHub
parent 2fba6a4da4
commit 838d582381
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
35 changed files with 408 additions and 400 deletions

View File

@ -12,7 +12,7 @@ There are a few steps involved:
- In the script the triggers the battle, add a call to `setdynamicaifunc` specifying your function, as in:
```
setdynamicaifunc AI_TagBattlePreferFoe
multi_2_vs_2 TRAINER_SIRIUS_NOVA_HYPERION_TAG, Text_NovaInsurgence_Arrival_Hyperion_Loss, TRAINER_SIRIUS_NOVA_DEIMOS_RECRUIT_TAG, Text_NovaInsurgence_Arrival_DeimosRecruit_Loss, TRAINER_SIRIUS_WHARF_TRITON_PARTNER, TRAINER_BACK_PIC_TRITON
multi_2_vs_2 TRAINER_SIRIUS_NOVA_HYPERION_TAG, Text_NovaInsurgence_Arrival_Hyperion_Loss, TRAINER_SIRIUS_NOVA_DEIMOS_RECRUIT_TAG, Text_NovaInsurgence_Arrival_DeimosRecruit_Loss, TRAINER_SIRIUS_WHARF_TRITON_PARTNER, TRAINER_PIC_BACK_TRITON
```
That's it! The scoring function will be used in the battle immediately following it, and automatically cleared at the end of the battle. You can then use `setdynamicaifunc` with the same or a different AI scoring function as you see fit.

View File

@ -49,10 +49,10 @@ So, finally, it needs to look like this:
const struct TrainerBacksprite gTrainerBacksprites[] =
{
TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_BRENDAN, 4, gTrainerBackPic_Brendan, gTrainerPalette_Brendan, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_BRENDAN, 4, gTrainerBackPic_Brendan, gTrainerPalette_Brendan, sBackAnims_Hoenn),
...
TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_STEVEN, 4, gTrainerBackPic_Steven, gTrainerPalette_Steven, sBackAnims_Hoenn),
+ TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_NEW_ONE, 4, gTrainerBackPic_NewOne, gTrainerBackPicPalette_NewOne, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_STEVEN, 4, gTrainerBackPic_Steven, gTrainerPalette_Steven, sBackAnims_Hoenn),
+ TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_NEW_ONE, 4, gTrainerBackPic_NewOne, gTrainerBackPicPalette_NewOne, sBackAnims_Hoenn),
};
```
@ -63,14 +63,17 @@ So, finally, it needs to look like this:
Finally, let's bring it all together by defining our new trainer pic in [`include/constants/trainers.h`](./include/constants/trainers.h):
```diff
#define TRAINER_BACK_PIC_WALLY 6
#define TRAINER_BACK_PIC_STEVEN 7
+#define TRAINER_BACK_PIC_NEW_ONE 8
TRAINER_PIC_BACK_RUBY_SAPPHIRE_MAY,
TRAINER_PIC_BACK_WALLY,
TRAINER_PIC_BACK_STEVEN,
+ TRAINER_PIC_BACK_NEW_ONE,
TRAINER_PIC_COUNT,
TRAINER_PIC_BACK_COUNT = (TRAINER_PIC_COUNT - TRAINER_PIC_FRONT_COUNT),
```
Remember to count the number next to the trainer pic up by one!
Remember to add new back pics after `TRAINER_PIC_FRONT_COUNT` but before `TRAINER_PIC_COUNT`!
## Usage
You can test your new trainer back pic by going to [`src/data/battle_partners.party`](./src/data/battle_partners.party) and change the `Pic` field. The syntax should match the constant (`TRAINER_BACK_PIC_NEW_ONE`) with the underscore replaced by spaces. For example:
You can test your new trainer back pic by going to [`src/data/battle_partners.party`](./src/data/battle_partners.party) and change the `Pic` field. The syntax should match the constant (`TRAINER_PIC_BACK_NEW_ONE`) with the underscore replaced by spaces. For example:
```diff
=== PARTNER_STEVEN ===
Name: STEVEN
@ -87,7 +90,7 @@ Otherwise if you use [`src/data/battle_partners.h`](./src/data/battle_partners.h
{
.trainerName = _("STEVEN"),
.trainerClass = TRAINER_CLASS_RIVAL,
- .trainerPic = TRAINER_BACK_PIC_STEVEN,
+ .trainerPic = TRAINER_BACK_PIC_NEW_ONE,
- .trainerPic = TRAINER_PIC_BACK_STEVEN,
+ .trainerPic = TRAINER_PIC_BACK_NEW_ONE,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
```

View File

@ -51,11 +51,11 @@ So, finally, it needs to look like this:
const struct TrainerSprite gTrainerSprites[] =
{
TRAINER_SPRITE(TRAINER_PIC_HIKER, gTrainerFrontPic_Hiker, gTrainerPalette_Hiker),
TRAINER_SPRITE(TRAINER_PIC_AQUA_GRUNT_M, gTrainerFrontPic_AquaGruntM, gTrainerPalette_AquaGruntM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_HIKER, gTrainerFrontPic_Hiker, gTrainerPalette_Hiker),
TRAINER_SPRITE(TRAINER_PIC_FRONT_AQUA_GRUNT_M, gTrainerFrontPic_AquaGruntM, gTrainerPalette_AquaGruntM),
...
TRAINER_SPRITE(TRAINER_PIC_RS_MAY, gTrainerFrontPic_RubySapphireMay, gTrainerPalette_RubySapphireMay),
+ TRAINER_SPRITE(TRAINER_PIC_NEW_ONE, gTrainerFrontPic_NewOne, gTrainerPalette_NewOne),
TRAINER_SPRITE(TRAINER_PIC_FRONT_RS_MAY, gTrainerFrontPic_RubySapphireMay, gTrainerPalette_RubySapphireMay),
+ TRAINER_SPRITE(TRAINER_PIC_FRONT_NEW_ONE, gTrainerFrontPic_NewOne, gTrainerPalette_NewOne),
};
```
### The Data
@ -63,16 +63,16 @@ So, finally, it needs to look like this:
Finally, let's bring it all together by defining our new trainer pic in [`include/constants/trainers.h`](./include/constants/trainers.h):
```diff
#define TRAINER_PIC_RS_MAY 92
+#define TRAINER_PIC_NEW_ONE 93
#define TRAINER_BACK_PIC_BRENDAN 0
#define TRAINER_BACK_PIC_MAY 1
TRAINER_PIC_FRONT_RS_MAY,
+ TRAINER_PIC_FRONT_NEW_ONE,
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,
```
Remember to count the number next to the trainer pic up by one!
Remember to add new front pics before `TRAINER_PIC_FRONT_COUNT`!
## Usage
You can test your trainer type by going to [`src/data/trainers.party`](./src/data/trainers.party) and change the `Pic` field. The syntax should match the constant (`TRAINER_PIC_NEW_ONE`) with the underscore replaced by spaces. For example:
You can test your trainer type by going to [`src/data/trainers.party`](./src/data/trainers.party) and change the `Pic` field. The syntax should match the constant (`TRAINER_PIC_FRONT_NEW_ONE`) with the underscore replaced by spaces. For example:
```diff
=== TRAINER_BRENDAN_PLACEHOLDER ===
Name: BRENDAN
@ -90,8 +90,8 @@ Otherwise if you use [`src/data/trainers.h`](./src/data/trainers.h), change the
{
.trainerName = _("BRENDAN"),
.trainerClass = TRAINER_CLASS_RS_PROTAG,
- .trainerPic = TRAINER_PIC_RS_BRENDAN,
+ .trainerPic = TRAINER_PIC_NEW_ONE,
- .trainerPic = TRAINER_PIC_FRONT_RS_BRENDAN,
+ .trainerPic = TRAINER_PIC_FRONT_NEW_ONE,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
.doubleBattle = FALSE,
```

View File

@ -366,8 +366,8 @@ void BtlController_HandleSetRawMonData(u32 battler);
void BtlController_HandleLoadMonSprite(u32 battler);
void BtlController_HandleSwitchInAnim(u32 battler);
void BtlController_HandleReturnMonToBall(u32 battler);
void BtlController_HandleDrawTrainerPic(u32 battlerId, u32 trainerPicId, bool32 isFrontPic, s16 xPos, s16 yPos, s32 subpriority);
void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId);
void BtlController_HandleDrawTrainerPic(u32 battlerId, enum TrainerPicID trainerPicId, bool32 isFrontPic, s16 xPos, s16 yPos, s32 subpriority);
void BtlController_HandleTrainerSlide(u32 battler, enum TrainerPicID trainerPicId);
void BtlController_HandleTrainerSlideBack(u32 battlerId, s16 data0, bool32 startAnim);
void BtlController_HandleFaintAnimation(u32 battler);
void BtlController_HandleBallThrowAnim(u32 battler);
@ -396,7 +396,7 @@ void SetControllerToPlayer(u32 battler);
void PlayerBufferExecCompleted(u32 battler);
void SetBattleEndCallbacks(u32 battler);
void PlayerHandleExpUpdate(u32 battler);
u32 LinkPlayerGetTrainerPicId(u32 multiplayerId);
enum TrainerPicID LinkPlayerGetTrainerPicId(u32 multiplayerId);
void CB2_SetUpReshowBattleScreenAfterMenu(void);
void CB2_SetUpReshowBattleScreenAfterMenu2(void);
void Task_PlayerController_RestoreBgmAfterCry(u8 taskId);

View File

@ -14,7 +14,7 @@ bool8 IsBattleSEPlaying(u8 battler);
void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler);
void BattleGfxSfxDummy2(u16 species);
void DecompressTrainerFrontPic(u16 frontPicId, u8 battler);
void DecompressTrainerBackPic(u16 backPicId, u8 battler);
void DecompressTrainerBackPic(enum TrainerPicID backPicId, u8 battler);
void FreeTrainerFrontPicPalette(u16 frontPicId);
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
void LoadBattleBarGfx(u8 unused);

View File

@ -15,110 +15,113 @@
#define TRAINER_LINK_OPPONENT 2048
#define TRAINER_UNION_ROOM 3072
#define TRAINER_PIC_HIKER 0
#define TRAINER_PIC_AQUA_GRUNT_M 1
#define TRAINER_PIC_POKEMON_BREEDER_F 2
#define TRAINER_PIC_COOLTRAINER_M 3
#define TRAINER_PIC_BIRD_KEEPER 4
#define TRAINER_PIC_COLLECTOR 5
#define TRAINER_PIC_AQUA_GRUNT_F 6
#define TRAINER_PIC_SWIMMER_M 7
#define TRAINER_PIC_MAGMA_GRUNT_M 8
#define TRAINER_PIC_EXPERT_M 9
#define TRAINER_PIC_AQUA_ADMIN_M 10
#define TRAINER_PIC_BLACK_BELT 11
#define TRAINER_PIC_AQUA_ADMIN_F 12
#define TRAINER_PIC_AQUA_LEADER_ARCHIE 13
#define TRAINER_PIC_HEX_MANIAC 14
#define TRAINER_PIC_AROMA_LADY 15
#define TRAINER_PIC_RUIN_MANIAC 16
#define TRAINER_PIC_INTERVIEWER 17
#define TRAINER_PIC_TUBER_F 18
#define TRAINER_PIC_TUBER_M 19
#define TRAINER_PIC_COOLTRAINER_F 20
#define TRAINER_PIC_LADY 21
#define TRAINER_PIC_BEAUTY 22
#define TRAINER_PIC_RICH_BOY 23
#define TRAINER_PIC_EXPERT_F 24
#define TRAINER_PIC_POKEMANIAC 25
#define TRAINER_PIC_MAGMA_GRUNT_F 26
#define TRAINER_PIC_GUITARIST 27
#define TRAINER_PIC_KINDLER 28
#define TRAINER_PIC_CAMPER 29
#define TRAINER_PIC_PICNICKER 30
#define TRAINER_PIC_BUG_MANIAC 31
#define TRAINER_PIC_POKEMON_BREEDER_M 32
#define TRAINER_PIC_PSYCHIC_M 33
#define TRAINER_PIC_PSYCHIC_F 34
#define TRAINER_PIC_GENTLEMAN 35
#define TRAINER_PIC_ELITE_FOUR_SIDNEY 36
#define TRAINER_PIC_ELITE_FOUR_PHOEBE 37
#define TRAINER_PIC_ELITE_FOUR_GLACIA 38
#define TRAINER_PIC_ELITE_FOUR_DRAKE 39
#define TRAINER_PIC_LEADER_ROXANNE 40
#define TRAINER_PIC_LEADER_BRAWLY 41
#define TRAINER_PIC_LEADER_WATTSON 42
#define TRAINER_PIC_LEADER_FLANNERY 43
#define TRAINER_PIC_LEADER_NORMAN 44
#define TRAINER_PIC_LEADER_WINONA 45
#define TRAINER_PIC_LEADER_TATE_AND_LIZA 46
#define TRAINER_PIC_LEADER_JUAN 47
#define TRAINER_PIC_SCHOOL_KID_M 48
#define TRAINER_PIC_SCHOOL_KID_F 49
#define TRAINER_PIC_SR_AND_JR 50
#define TRAINER_PIC_POKEFAN_M 51
#define TRAINER_PIC_POKEFAN_F 52
#define TRAINER_PIC_YOUNGSTER 53
#define TRAINER_PIC_CHAMPION_WALLACE 54
#define TRAINER_PIC_FISHERMAN 55
#define TRAINER_PIC_CYCLING_TRIATHLETE_M 56
#define TRAINER_PIC_CYCLING_TRIATHLETE_F 57
#define TRAINER_PIC_RUNNING_TRIATHLETE_M 58
#define TRAINER_PIC_RUNNING_TRIATHLETE_F 59
#define TRAINER_PIC_SWIMMING_TRIATHLETE_M 60
#define TRAINER_PIC_SWIMMING_TRIATHLETE_F 61
#define TRAINER_PIC_DRAGON_TAMER 62
#define TRAINER_PIC_NINJA_BOY 63
#define TRAINER_PIC_BATTLE_GIRL 64
#define TRAINER_PIC_PARASOL_LADY 65
#define TRAINER_PIC_SWIMMER_F 66
#define TRAINER_PIC_TWINS 67
#define TRAINER_PIC_SAILOR 68
#define TRAINER_PIC_MAGMA_ADMIN 69
#define TRAINER_PIC_WALLY 70
#define TRAINER_PIC_BRENDAN 71
#define TRAINER_PIC_MAY 72
#define TRAINER_PIC_BUG_CATCHER 73
#define TRAINER_PIC_POKEMON_RANGER_M 74
#define TRAINER_PIC_POKEMON_RANGER_F 75
#define TRAINER_PIC_MAGMA_LEADER_MAXIE 76
#define TRAINER_PIC_LASS 77
#define TRAINER_PIC_YOUNG_COUPLE 78
#define TRAINER_PIC_OLD_COUPLE 79
#define TRAINER_PIC_SIS_AND_BRO 80
#define TRAINER_PIC_STEVEN 81
#define TRAINER_PIC_SALON_MAIDEN_ANABEL 82
#define TRAINER_PIC_DOME_ACE_TUCKER 83
#define TRAINER_PIC_PALACE_MAVEN_SPENSER 84
#define TRAINER_PIC_ARENA_TYCOON_GRETA 85
#define TRAINER_PIC_FACTORY_HEAD_NOLAND 86
#define TRAINER_PIC_PIKE_QUEEN_LUCY 87
#define TRAINER_PIC_PYRAMID_KING_BRANDON 88
#define TRAINER_PIC_RED 89
#define TRAINER_PIC_LEAF 90
#define TRAINER_PIC_RS_BRENDAN 91
#define TRAINER_PIC_RS_MAY 92
#define TRAINER_PIC_COUNT 93
// The player back pics are assumed to alternate according to the gender values (MALE/FEMALE)
#define TRAINER_BACK_PIC_BRENDAN 0
#define TRAINER_BACK_PIC_MAY 1
#define TRAINER_BACK_PIC_RED 2
#define TRAINER_BACK_PIC_LEAF 3
#define TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN 4
#define TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY 5
#define TRAINER_BACK_PIC_WALLY 6
#define TRAINER_BACK_PIC_STEVEN 7
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

View File

@ -120,7 +120,7 @@ struct Trainer
struct StartingStatuses startingStatus; // this trainer starts a battle with a given status. see include/constants/battle.h for values
u8 trainerClass;
u8 encounterMusic_gender; // last bit is gender
u8 trainerPic;
enum TrainerPicID trainerPic;
u8 trainerName[TRAINER_NAME_LENGTH + 1];
u8 battleType:2;
u8 mugshotColor:6;
@ -130,7 +130,7 @@ struct Trainer
u8 poolPickIndex;
u8 poolPruneIndex;
u16 overrideTrainer;
u8 trainerBackPic;
enum TrainerPicID trainerBackPic;
};
struct TrainerClass
@ -293,7 +293,7 @@ static inline const u8 *GetTrainerNameFromId(u16 trainerId)
return GetTrainerStructFromId(trainerId)->trainerName;
}
static inline const u8 GetTrainerPicFromId(u16 trainerId)
static inline const enum TrainerPicID GetTrainerPicFromId(u16 trainerId)
{
enum DifficultyLevel partnerDifficulty = GetBattlePartnerDifficultyLevel(trainerId);

View File

@ -12,7 +12,7 @@ void ShowRankingHallRecordsWindow(void);
void ScrollRankingHallRecordsWindow(void);
void ClearRankingHallRecords(void);
void SaveGameFrontier(void);
u8 GetFrontierBrainTrainerPicIndex(void);
enum TrainerPicID GetFrontierBrainTrainerPicIndex(void);
enum TrainerClassID GetFrontierBrainTrainerClass(void);
void CopyFrontierBrainTrainerName(u8 *dst);
bool8 IsFrontierBrainFemale(void);

View File

@ -708,7 +708,7 @@ void CreateBattleTowerMon_HandleLevel(struct Pokemon *mon, struct BattleTowerPok
void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId);
void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest);
u16 GetUnionRoomTrainerPic(void);
enum TrainerPicID GetUnionRoomTrainerPic(void);
enum TrainerClassID GetUnionRoomTrainerClass(void);
void CreateEnemyEventMon(void);
void CalculateMonStats(struct Pokemon *mon);
@ -734,8 +734,8 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
bool32 IsPersonalityFemale(u16 species, u32 personality);
u32 GetUnownSpeciesId(u32 personality);
void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerPicId, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerFront(u16 trainerPicId, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerBack(enum TrainerPicID trainerPicId, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerFront(enum TrainerPicID trainerPicId, u8 battlerPosition);
/* GameFreak called Get(Box)MonData with either 2 or 3 arguments, for
* type safety we have a Get(Box)MonData macro which dispatches to
@ -762,7 +762,7 @@ u8 GetMonsStateToDoubles_2(void);
enum Ability GetAbilityBySpecies(u16 species, u8 abilityNum);
enum Ability GetMonAbility(struct Pokemon *mon);
void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord);
u8 GetSecretBaseTrainerPicIndex(void);
enum TrainerPicID GetSecretBaseTrainerPicIndex(void);
enum TrainerClassID GetSecretBaseTrainerClass(void);
bool8 IsPlayerPartyAndPokemonStorageFull(void);
bool8 IsPokemonStorageFull(void);
@ -865,8 +865,8 @@ void PokemonSummaryDoMonAnimation(struct Sprite *sprite, u16 species, bool8 oneF
void StopPokemonAnimationDelayTask(void);
void BattleAnimateBackSprite(struct Sprite *sprite, u16 species);
u8 GetOpposingLinkMultiBattlerId(bool8 rightSide, u8 multiplayerId);
u16 FacilityClassToPicIndex(u16 facilityClass);
u16 PlayerGenderToFrontTrainerPicId(u8 playerGender);
enum TrainerPicID FacilityClassToPicIndex(u16 facilityClass);
enum TrainerPicID PlayerGenderToFrontTrainerPicId(u8 playerGender);
void HandleSetPokedexFlag(enum NationalDexOrder nationalNum, u8 caseId, u32 personality);
void HandleSetPokedexFlagFromMon(struct Pokemon *mon, u32 caseId);
bool8 HasTwoFramesAnimation(u16 species);

View File

@ -416,7 +416,7 @@ struct PokenavMatchCallEntry *GetMatchCallList(void);
mapsec_u16_t GetMatchCallMapSec(int index);
bool32 ShouldDrawRematchPokeballIcon(int index);
void ClearRematchPokeballIcon(u16 windowId, u32 tileOffset);
int GetMatchCallTrainerPic(int index);
enum TrainerPicID GetMatchCallTrainerPic(int index);
const u8 *GetMatchCallFlavorText(int index, int checkPageEntry);
const u8 *GetMatchCallMessageText(int index, bool8 *newRematchRequest);
u16 GetMatchCallOptionCursorPos(void);

View File

@ -16,6 +16,6 @@ u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 palet
u16 FreeAndDestroyTrainerPicSprite(u16 spriteId);
u16 CreateTrainerCardTrainerPicSprite(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId);
u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass);
void CopyTrainerBackspriteFramesToDest(u8 trainerPicId, u8 *dest);
void CopyTrainerBackspriteFramesToDest(enum TrainerPicID trainerPicId, u8 *dest);
#endif // GUARD_TRAINER_POKEMON_SPRITES_H

View File

@ -32,7 +32,7 @@ end_pokemon_definition = re.compile(r' },')
trainer_class_definition = re.compile(r'\.trainerClass = TRAINER_CLASS_(\w+)')
encounter_music_gender_definition = re.compile(r'\.encounterMusic_gender = (F_TRAINER_FEMALE \| )?TRAINER_ENCOUNTER_MUSIC_(\w+)')
encounter_music_definition = re.compile(r'TRAINER_ENCOUNTER_MUSIC_(\w+)')
trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_PIC_(\w+)')
trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_PIC_FRONT_(\w+)')
trainer_name_definition = re.compile(r'\.trainerName = _\("([^"]*)"\)')
trainer_items_definition = re.compile(r'\.items = \{([^}]*)\}')
trainer_item_definition = re.compile(r'ITEM_(\w+)')

View File

@ -183,7 +183,7 @@ begin_trainer_definition = re.compile(r' \[(PARTNER_\w+)\] =')
end_trainer_definition = re.compile(r' }')
trainer_class_definition = re.compile(r'\.trainerClass = TRAINER_CLASS_(\w+)')
encounter_music_gender_definition = re.compile(r'\.encounterMusic_gender = (F_TRAINER_FEMALE \| )?TRAINER_ENCOUNTER_MUSIC_(\w+)')
trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_BACK_PIC_(\w+)')
trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_PIC_BACK_(\w+)')
trainer_name_definition = re.compile(r'\.trainerName = _\("([^"]*)"\)')
trainer_items_definition = re.compile(r'\.items = \{([^}]*)\}')
trainer_item_definition = re.compile(r'ITEM_(\w+)')

View File

@ -183,7 +183,7 @@ begin_trainer_definition = re.compile(r' \[(TRAINER_\w+)\] =')
end_trainer_definition = re.compile(r' }')
trainer_class_definition = re.compile(r'\.trainerClass = TRAINER_CLASS_(\w+)')
encounter_music_gender_definition = re.compile(r'\.encounterMusic_gender = (F_TRAINER_FEMALE \| )?TRAINER_ENCOUNTER_MUSIC_(\w+)')
trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_PIC_(\w+)')
trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_PIC_FRONT_(\w+)')
trainer_name_definition = re.compile(r'\.trainerName = _\("([^"]*)"\)')
trainer_items_definition = re.compile(r'\.items = \{([^}]*)\}')
trainer_item_definition = re.compile(r'ITEM_(\w+)')

View File

@ -279,7 +279,7 @@ void LinkOpponentBufferExecCompleted(u32 battler)
static void LinkOpponentHandleDrawTrainerPic(u32 battler)
{
s16 xPos;
u32 trainerPicId;
enum TrainerPicID trainerPicId;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
@ -353,7 +353,7 @@ static void LinkOpponentHandleDrawTrainerPic(u32 battler)
static void LinkOpponentHandleTrainerSlide(u32 battler)
{
u32 trainerPicId;
enum TrainerPicID trainerPicId;
if (battler == B_POSITION_OPPONENT_LEFT)
trainerPicId = GetFrontierTrainerFrontSpriteId(TRAINER_BATTLE_PARAM.opponentA);

View File

@ -134,7 +134,7 @@ void LinkPartnerBufferExecCompleted(u32 battler)
static void LinkPartnerHandleDrawTrainerPic(u32 battler)
{
s16 xPos;
u32 trainerPicId;
enum TrainerPicID trainerPicId;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
@ -161,7 +161,7 @@ static void LinkPartnerHandleTrainerSlideBack(u32 battler)
static void LinkPartnerHandleIntroTrainerBallThrow(u32 battler)
{
u32 trainerPicId = LinkPlayerGetTrainerPicId(GetBattlerMultiplayerId(battler));
enum TrainerPicID trainerPicId = LinkPlayerGetTrainerPicId(GetBattlerMultiplayerId(battler));
const u16 *trainerPal = gTrainerBacksprites[trainerPicId].palette.data;
// Link partner uses the same intro sequence as the player partner.
BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F9, trainerPal, 24, Controller_PlayerPartnerShowIntroHealthbox);

View File

@ -310,7 +310,7 @@ void OpponentBufferExecCompleted(u32 battler)
static u32 OpponentGetTrainerPicId(u32 battlerId)
{
u32 trainerPicId;
enum TrainerPicID trainerPicId;
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
{
@ -370,14 +370,14 @@ static u32 OpponentGetTrainerPicId(u32 battlerId)
static void OpponentHandleDrawTrainerPic(u32 battler)
{
s16 xPos;
u32 trainerPicId;
enum TrainerPicID trainerPicId;
// Sets Multibattle test opponent sprites to not be Hiker
if (IsMultibattleTest())
{
if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_LEFT)
{
trainerPicId = TRAINER_PIC_LEAF;
trainerPicId = TRAINER_PIC_FRONT_LEAF;
if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS))
xPos = 176;
else
@ -385,7 +385,7 @@ static void OpponentHandleDrawTrainerPic(u32 battler)
}
else
{
trainerPicId = TRAINER_PIC_RED;
trainerPicId = TRAINER_PIC_FRONT_RED;
xPos = 152;
}
}
@ -411,7 +411,7 @@ static void OpponentHandleDrawTrainerPic(u32 battler)
void OpponentHandleTrainerSlide(u32 battler)
{
u32 trainerPicId = OpponentGetTrainerPicId(battler);
enum TrainerPicID trainerPicId = OpponentGetTrainerPicId(battler);
BtlController_HandleTrainerSlide(battler, trainerPicId);
}

View File

@ -1854,31 +1854,31 @@ static void PlayerHandleLoadMonSprite(u32 battler)
gBattlerControllerFuncs[battler] = CompleteOnBattlerSpritePosX_0;
}
u32 LinkPlayerGetTrainerPicId(u32 multiplayerId)
enum TrainerPicID LinkPlayerGetTrainerPicId(u32 multiplayerId)
{
u32 trainerPicId;
enum TrainerPicID trainerPicId;
u8 gender = gLinkPlayers[multiplayerId].gender;
u8 version = gLinkPlayers[multiplayerId].version & 0xFF;
if (version == VERSION_FIRE_RED || version == VERSION_LEAF_GREEN)
trainerPicId = gender + TRAINER_BACK_PIC_RED;
trainerPicId = gender + TRAINER_PIC_BACK_RED;
else if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
trainerPicId = gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
trainerPicId = gender + TRAINER_PIC_BACK_RUBY_SAPPHIRE_BRENDAN;
else
trainerPicId = gender + TRAINER_BACK_PIC_BRENDAN;
trainerPicId = gender + TRAINER_PIC_BACK_BRENDAN;
return trainerPicId;
}
static u32 PlayerGetTrainerBackPicId(void)
static enum TrainerPicID PlayerGetTrainerBackPicId(void)
{
u32 trainerPicId;
enum TrainerPicID trainerPicId;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
trainerPicId = LinkPlayerGetTrainerPicId(GetMultiplayerId());
else
trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_BACK_PIC_BRENDAN;
trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_PIC_BACK_BRENDAN;
return trainerPicId;
}
@ -1890,10 +1890,11 @@ static void PlayerHandleDrawTrainerPic(u32 battler)
{
bool32 isFrontPic;
s16 xPos, yPos;
u32 trainerPicId;
enum TrainerPicID trainerPicId;
if (IsMultibattleTest())
{
trainerPicId = TRAINER_BACK_PIC_BRENDAN;
trainerPicId = TRAINER_PIC_BACK_BRENDAN;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
xPos = 32;
else
@ -1903,6 +1904,7 @@ static void PlayerHandleDrawTrainerPic(u32 battler)
else
{
trainerPicId = PlayerGetTrainerBackPicId();
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
if ((GetBattlerPosition(battler) & BIT_FLANK) != B_FLANK_LEFT) // Second mon, on the right.
@ -1943,7 +1945,7 @@ static void PlayerHandleDrawTrainerPic(u32 battler)
static void PlayerHandleTrainerSlide(u32 battler)
{
u32 trainerPicId = PlayerGetTrainerBackPicId();
enum TrainerPicID trainerPicId = PlayerGetTrainerBackPicId();
BtlController_HandleTrainerSlide(battler, trainerPicId);
}
@ -2270,7 +2272,7 @@ static void PlayerHandleOneReturnValue_Duplicate(u32 battler)
static void PlayerHandleIntroTrainerBallThrow(u32 battler)
{
const u32 paletteIndex = PlayerGetTrainerBackPicId();
const u32 paletteIndex = PlayerGetTrainerBackPicId() - TRAINER_PIC_FRONT_COUNT;
const u16 *trainerPal = gTrainerBacksprites[paletteIndex].palette.data;
BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F8, trainerPal, 31, Intro_TryShinyAnimShowHealthbox);
}

View File

@ -198,14 +198,14 @@ void PlayerPartnerBufferExecCompleted(u32 battler)
}
}
static u32 PlayerPartnerGetTrainerBackPicId(enum DifficultyLevel difficulty)
static enum TrainerPicID PlayerPartnerGetTrainerBackPicId(enum DifficultyLevel difficulty)
{
u32 trainerPicId;
enum TrainerPicID trainerPicId;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
trainerPicId = gBattlePartners[difficulty][gPartnerTrainerId - TRAINER_PARTNER(PARTNER_NONE)].trainerBackPic;
else
trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_BACK_PIC_BRENDAN;
trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_PIC_BACK_BRENDAN;
return trainerPicId;
}
@ -217,13 +217,13 @@ static void PlayerPartnerHandleDrawTrainerPic(u32 battler)
{
bool32 isFrontPic;
s16 xPos, yPos;
u32 trainerPicId;
enum TrainerPicID trainerPicId;
enum DifficultyLevel difficulty = GetBattlePartnerDifficultyLevel(gPartnerTrainerId);
if (IsMultibattleTest())
{
trainerPicId = TRAINER_BACK_PIC_STEVEN;
trainerPicId = TRAINER_PIC_BACK_STEVEN;
xPos = 90;
yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80;
}
@ -258,7 +258,7 @@ static void PlayerPartnerHandleDrawTrainerPic(u32 battler)
static void PlayerPartnerHandleTrainerSlide(u32 battler)
{
enum DifficultyLevel difficulty = GetBattlePartnerDifficultyLevel(gPartnerTrainerId);
u32 trainerPicId = PlayerPartnerGetTrainerBackPicId(difficulty);
enum TrainerPicID trainerPicId = PlayerPartnerGetTrainerBackPicId(difficulty);
BtlController_HandleTrainerSlide(battler, trainerPicId);
}

View File

@ -274,14 +274,14 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
static void RecordedOpponentHandleDrawTrainerPic(u32 battler)
{
s16 xPos;
u32 trainerPicId;
enum TrainerPicID trainerPicId;
// Sets Multibattle test opponent sprites to not be Hiker
if (IsMultibattleTest())
{
if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_LEFT)
{
trainerPicId = TRAINER_PIC_LEAF;
trainerPicId = TRAINER_PIC_FRONT_LEAF;
if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS))
xPos = 176;
else
@ -289,7 +289,7 @@ static void RecordedOpponentHandleDrawTrainerPic(u32 battler)
}
else
{
trainerPicId = TRAINER_PIC_RED;
trainerPicId = TRAINER_PIC_FRONT_RED;
xPos = 152;
}
}

View File

@ -196,14 +196,14 @@ void RecordedPartnerBufferExecCompleted(u32 battler)
}
}
static u32 RecordedPartnerGetTrainerBackPicId(enum DifficultyLevel difficulty)
static enum TrainerPicID RecordedPartnerGetTrainerBackPicId(enum DifficultyLevel difficulty)
{
u32 trainerPicId;
enum TrainerPicID trainerPicId;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
trainerPicId = gBattlePartners[difficulty][gPartnerTrainerId - TRAINER_PARTNER(PARTNER_NONE)].trainerBackPic;
else
trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_BACK_PIC_BRENDAN;
trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_PIC_BACK_BRENDAN;
return trainerPicId;
}
@ -215,9 +215,9 @@ static void RecordedPartnerHandleDrawTrainerPic(u32 battler)
{
bool32 isFrontPic;
s16 xPos, yPos;
u32 trainerPicId;
enum TrainerPicID trainerPicId;
trainerPicId = TRAINER_BACK_PIC_STEVEN;
trainerPicId = TRAINER_PIC_BACK_STEVEN;
xPos = 90;
yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80;
@ -229,7 +229,7 @@ static void RecordedPartnerHandleDrawTrainerPic(u32 battler)
static void RecordedPartnerHandleTrainerSlide(u32 battler)
{
enum DifficultyLevel difficulty = GetBattlePartnerDifficultyLevel(gPartnerTrainerId);
u32 trainerPicId = RecordedPartnerGetTrainerBackPicId(difficulty);
enum TrainerPicID trainerPicId = RecordedPartnerGetTrainerBackPicId(difficulty);
BtlController_HandleTrainerSlide(battler, trainerPicId);
}

View File

@ -274,12 +274,12 @@ static void RecordedPlayerHandleDrawTrainerPic(u32 battler)
{
bool32 isFrontPic;
s16 xPos, yPos;
u32 trainerPicId;
enum TrainerPicID trainerPicId;
// Sets Multibattle test player sprites to not be Hiker
if (IsMultibattleTest())
{
trainerPicId = TRAINER_BACK_PIC_BRENDAN;
trainerPicId = TRAINER_PIC_BACK_BRENDAN;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
xPos = 32;
else
@ -291,12 +291,12 @@ static void RecordedPlayerHandleDrawTrainerPic(u32 battler)
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
trainerPicId = GetBattlerLinkPlayerGender(battler);
trainerPicId = GetBattlerLinkPlayerGender(battler) + TRAINER_PIC_BACK_BRENDAN;
else
trainerPicId = gLinkPlayers[gRecordedBattleMultiplayerId].gender;
trainerPicId = gLinkPlayers[gRecordedBattleMultiplayerId].gender + TRAINER_PIC_BACK_BRENDAN;
}
else
trainerPicId = gLinkPlayers[0].gender;
trainerPicId = gLinkPlayers[0].gender + TRAINER_PIC_BACK_BRENDAN;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
@ -410,13 +410,13 @@ static void RecordedPlayerHandleStatusAnimation(u32 battler)
static void RecordedPlayerHandleIntroTrainerBallThrow(u32 battler)
{
u32 trainerPicId;
enum TrainerPicID trainerPicId;
const u16 *trainerPal;
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(battler)].gender + TRAINER_BACK_PIC_BRENDAN;
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(battler)].gender + TRAINER_PIC_BACK_BRENDAN;
else
trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_BACK_PIC_BRENDAN;
trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_PIC_BACK_BRENDAN;
trainerPal = gTrainerBacksprites[trainerPicId].palette.data;
BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F9, trainerPal, 24, Intro_TryShinyAnimShowHealthbox);

View File

@ -276,7 +276,7 @@ void SafariBufferExecCompleted(u32 battler)
static void SafariHandleDrawTrainerPic(u32 battler)
{
u32 trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_BACK_PIC_BRENDAN;
enum TrainerPicID trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_PIC_BACK_BRENDAN;
BtlController_HandleDrawTrainerPic(battler, trainerPicId, FALSE,
80, 80 + 4 * (8 - gTrainerBacksprites[trainerPicId].coordinates.size),

View File

@ -282,14 +282,14 @@ void WallyBufferExecCompleted(u32 battler)
static void WallyHandleDrawTrainerPic(u32 battler)
{
BtlController_HandleDrawTrainerPic(battler, TRAINER_BACK_PIC_WALLY, FALSE,
80, 80 + 4 * (8 - gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].coordinates.size),
BtlController_HandleDrawTrainerPic(battler, TRAINER_PIC_BACK_WALLY, FALSE,
80, 80 + 4 * (8 - gTrainerBacksprites[TRAINER_PIC_BACK_WALLY].coordinates.size),
30);
}
static void WallyHandleTrainerSlide(u32 battler)
{
BtlController_HandleTrainerSlide(battler, TRAINER_BACK_PIC_WALLY);
BtlController_HandleTrainerSlide(battler, TRAINER_PIC_BACK_WALLY);
}
#undef sSpeedX
@ -366,7 +366,7 @@ static void WallyHandleFaintingCry(u32 battler)
static void WallyHandleIntroTrainerBallThrow(u32 battler)
{
const u16 *trainerPal = gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].palette.data;
const u16 *trainerPal = gTrainerBacksprites[TRAINER_PIC_BACK_WALLY].palette.data;
BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F8, trainerPal, 31, Intro_TryShinyAnimShowHealthbox);
}

View File

@ -2396,7 +2396,7 @@ void BtlController_HandleReturnMonToBall(u32 battler)
#define sSpeedX data[0]
void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 isFrontPic, s16 xPos, s16 yPos, s32 subpriority)
void BtlController_HandleDrawTrainerPic(u32 battler, enum TrainerPicID trainerPicId, bool32 isFrontPic, s16 xPos, s16 yPos, s32 subpriority)
{
if (!IsOnPlayerSide(battler)) // Always the front sprite for the opponent.
{
@ -2461,7 +2461,7 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is
gBattlerControllerFuncs[battler] = Controller_WaitForTrainerPic;
}
void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId)
void BtlController_HandleTrainerSlide(u32 battler, enum TrainerPicID trainerPicId)
{
if (IsOnPlayerSide(battler))
{

View File

@ -695,7 +695,7 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battler)
LoadSpritePalette(&gTrainerSprites[frontPicId].palette);
}
void DecompressTrainerBackPic(u16 backPicId, u8 battler)
void DecompressTrainerBackPic(enum TrainerPicID backPicId, u8 battler)
{
u8 position = GetBattlerPosition(battler);
CopyTrainerBackspriteFramesToDest(backPicId, gMonSpritesGfxPtr->spritesGfx[position]);

View File

@ -293,7 +293,7 @@ const u16 gTrainerBackPicPalette_Red[] = INCBIN_U16("graphics/trainers/back_pics
const u16 gTrainerBackPicPalette_Leaf[] = INCBIN_U16("graphics/trainers/back_pics/leaf.gbapal");
// The first two parameters invoke a front pic and palette by
// calling a "TRAINER_PIC" constant (e.g. TRAINER_PIC_HIKER), and
// calling a "TRAINER_PIC" constant (e.g. TRAINER_PIC_FRONT_HIKER), and
// gTrainerFrontPic/gTrainerPalette pointers, (e.g "gTrainerFrontPic_Hiker" and "gTrainerPalette_Hiker").
// The last three parameters control the X and Y coordinates and rotation of the mugshot on the screen.
// They default to 0, 0, and 0x200 which are default values used by the majority of the game's trainer sprites.
@ -308,99 +308,99 @@ const u16 gTrainerBackPicPalette_Leaf[] = INCBIN_U16("graphics/trainers/back_pic
const struct TrainerSprite gTrainerSprites[] =
{
TRAINER_SPRITE(TRAINER_PIC_HIKER, gTrainerFrontPic_Hiker, gTrainerPalette_Hiker),
TRAINER_SPRITE(TRAINER_PIC_AQUA_GRUNT_M, gTrainerFrontPic_AquaGruntM, gTrainerPalette_AquaGruntM),
TRAINER_SPRITE(TRAINER_PIC_POKEMON_BREEDER_F, gTrainerFrontPic_PokemonBreederF, gTrainerPalette_PokemonBreederF),
TRAINER_SPRITE(TRAINER_PIC_COOLTRAINER_M, gTrainerFrontPic_CoolTrainerM, gTrainerPalette_CoolTrainerM),
TRAINER_SPRITE(TRAINER_PIC_BIRD_KEEPER, gTrainerFrontPic_BirdKeeper, gTrainerPalette_BirdKeeper),
TRAINER_SPRITE(TRAINER_PIC_COLLECTOR, gTrainerFrontPic_Collector, gTrainerPalette_Collector),
TRAINER_SPRITE(TRAINER_PIC_AQUA_GRUNT_F, gTrainerFrontPic_AquaGruntF, gTrainerPalette_AquaGruntF),
TRAINER_SPRITE(TRAINER_PIC_SWIMMER_M, gTrainerFrontPic_SwimmerM, gTrainerPalette_SwimmerM),
TRAINER_SPRITE(TRAINER_PIC_MAGMA_GRUNT_M, gTrainerFrontPic_MagmaGruntM, gTrainerPalette_MagmaGruntM),
TRAINER_SPRITE(TRAINER_PIC_EXPERT_M, gTrainerFrontPic_ExpertM, gTrainerPalette_ExpertM),
TRAINER_SPRITE(TRAINER_PIC_AQUA_ADMIN_M, gTrainerFrontPic_AquaAdminM, gTrainerPalette_AquaAdminM),
TRAINER_SPRITE(TRAINER_PIC_BLACK_BELT, gTrainerFrontPic_BlackBelt, gTrainerPalette_BlackBelt),
TRAINER_SPRITE(TRAINER_PIC_AQUA_ADMIN_F, gTrainerFrontPic_AquaAdminF, gTrainerPalette_AquaAdminF),
TRAINER_SPRITE(TRAINER_PIC_AQUA_LEADER_ARCHIE, gTrainerFrontPic_AquaLeaderArchie, gTrainerPalette_AquaLeaderArchie),
TRAINER_SPRITE(TRAINER_PIC_HEX_MANIAC, gTrainerFrontPic_HexManiac, gTrainerPalette_HexManiac),
TRAINER_SPRITE(TRAINER_PIC_AROMA_LADY, gTrainerFrontPic_AromaLady, gTrainerPalette_AromaLady),
TRAINER_SPRITE(TRAINER_PIC_RUIN_MANIAC, gTrainerFrontPic_RuinManiac, gTrainerPalette_RuinManiac),
TRAINER_SPRITE(TRAINER_PIC_INTERVIEWER, gTrainerFrontPic_Interviewer, gTrainerPalette_Interviewer),
TRAINER_SPRITE(TRAINER_PIC_TUBER_F, gTrainerFrontPic_TuberF, gTrainerPalette_TuberF),
TRAINER_SPRITE(TRAINER_PIC_TUBER_M, gTrainerFrontPic_TuberM, gTrainerPalette_TuberM),
TRAINER_SPRITE(TRAINER_PIC_COOLTRAINER_F, gTrainerFrontPic_CoolTrainerF, gTrainerPalette_CoolTrainerF),
TRAINER_SPRITE(TRAINER_PIC_LADY, gTrainerFrontPic_Lady, gTrainerPalette_Lady),
TRAINER_SPRITE(TRAINER_PIC_BEAUTY, gTrainerFrontPic_Beauty, gTrainerPalette_Beauty),
TRAINER_SPRITE(TRAINER_PIC_RICH_BOY, gTrainerFrontPic_RichBoy, gTrainerPalette_RichBoy),
TRAINER_SPRITE(TRAINER_PIC_EXPERT_F, gTrainerFrontPic_ExpertF, gTrainerPalette_ExpertF),
TRAINER_SPRITE(TRAINER_PIC_POKEMANIAC, gTrainerFrontPic_Pokemaniac, gTrainerPalette_Pokemaniac),
TRAINER_SPRITE(TRAINER_PIC_MAGMA_GRUNT_F, gTrainerFrontPic_MagmaGruntF, gTrainerPalette_MagmaGruntF),
TRAINER_SPRITE(TRAINER_PIC_GUITARIST, gTrainerFrontPic_Guitarist, gTrainerPalette_Guitarist),
TRAINER_SPRITE(TRAINER_PIC_KINDLER, gTrainerFrontPic_Kindler, gTrainerPalette_Kindler),
TRAINER_SPRITE(TRAINER_PIC_CAMPER, gTrainerFrontPic_Camper, gTrainerPalette_Camper),
TRAINER_SPRITE(TRAINER_PIC_PICNICKER, gTrainerFrontPic_Picnicker, gTrainerPalette_Picnicker),
TRAINER_SPRITE(TRAINER_PIC_BUG_MANIAC, gTrainerFrontPic_BugManiac, gTrainerPalette_BugManiac),
TRAINER_SPRITE(TRAINER_PIC_POKEMON_BREEDER_M, gTrainerFrontPic_PokemonBreederM, gTrainerPalette_PokemonBreederM),
TRAINER_SPRITE(TRAINER_PIC_PSYCHIC_M, gTrainerFrontPic_PsychicM, gTrainerPalette_PsychicM),
TRAINER_SPRITE(TRAINER_PIC_PSYCHIC_F, gTrainerFrontPic_PsychicF, gTrainerPalette_PsychicF),
TRAINER_SPRITE(TRAINER_PIC_GENTLEMAN, gTrainerFrontPic_Gentleman, gTrainerPalette_Gentleman),
TRAINER_SPRITE(TRAINER_PIC_ELITE_FOUR_SIDNEY, gTrainerFrontPic_EliteFourSidney, gTrainerPalette_EliteFourSidney),
TRAINER_SPRITE(TRAINER_PIC_ELITE_FOUR_PHOEBE, gTrainerFrontPic_EliteFourPhoebe, gTrainerPalette_EliteFourPhoebe),
TRAINER_SPRITE(TRAINER_PIC_ELITE_FOUR_GLACIA, gTrainerFrontPic_EliteFourGlacia, gTrainerPalette_EliteFourGlacia, -4, 4, 0x1B0),
TRAINER_SPRITE(TRAINER_PIC_ELITE_FOUR_DRAKE, gTrainerFrontPic_EliteFourDrake, gTrainerPalette_EliteFourDrake, 0, 5, 0x1A0),
TRAINER_SPRITE(TRAINER_PIC_LEADER_ROXANNE, gTrainerFrontPic_LeaderRoxanne, gTrainerPalette_LeaderRoxanne),
TRAINER_SPRITE(TRAINER_PIC_LEADER_BRAWLY, gTrainerFrontPic_LeaderBrawly, gTrainerPalette_LeaderBrawly),
TRAINER_SPRITE(TRAINER_PIC_LEADER_WATTSON, gTrainerFrontPic_LeaderWattson, gTrainerPalette_LeaderWattson),
TRAINER_SPRITE(TRAINER_PIC_LEADER_FLANNERY, gTrainerFrontPic_LeaderFlannery, gTrainerPalette_LeaderFlannery),
TRAINER_SPRITE(TRAINER_PIC_LEADER_NORMAN, gTrainerFrontPic_LeaderNorman, gTrainerPalette_LeaderNorman),
TRAINER_SPRITE(TRAINER_PIC_LEADER_WINONA, gTrainerFrontPic_LeaderWinona, gTrainerPalette_LeaderWinona),
TRAINER_SPRITE(TRAINER_PIC_LEADER_TATE_AND_LIZA, gTrainerFrontPic_LeaderTateAndLiza, gTrainerPalette_LeaderTateAndLiza),
TRAINER_SPRITE(TRAINER_PIC_LEADER_JUAN, gTrainerFrontPic_LeaderJuan, gTrainerPalette_LeaderJuan),
TRAINER_SPRITE(TRAINER_PIC_SCHOOL_KID_M, gTrainerFrontPic_SchoolKidM, gTrainerPalette_SchoolKidM),
TRAINER_SPRITE(TRAINER_PIC_SCHOOL_KID_F, gTrainerFrontPic_SchoolKidF, gTrainerPalette_SchoolKidF),
TRAINER_SPRITE(TRAINER_PIC_SR_AND_JR, gTrainerFrontPic_SrAndJr, gTrainerPalette_SrAndJr),
TRAINER_SPRITE(TRAINER_PIC_POKEFAN_M, gTrainerFrontPic_PokefanM, gTrainerPalette_PokefanM),
TRAINER_SPRITE(TRAINER_PIC_POKEFAN_F, gTrainerFrontPic_PokefanF, gTrainerPalette_PokefanF),
TRAINER_SPRITE(TRAINER_PIC_YOUNGSTER, gTrainerFrontPic_Youngster, gTrainerPalette_Youngster),
TRAINER_SPRITE(TRAINER_PIC_CHAMPION_WALLACE, gTrainerFrontPic_ChampionWallace, gTrainerPalette_ChampionWallace, -8, 7, 0x188),
TRAINER_SPRITE(TRAINER_PIC_FISHERMAN, gTrainerFrontPic_Fisherman, gTrainerPalette_Fisherman),
TRAINER_SPRITE(TRAINER_PIC_CYCLING_TRIATHLETE_M, gTrainerFrontPic_CyclingTriathleteM, gTrainerPalette_CyclingTriathleteM),
TRAINER_SPRITE(TRAINER_PIC_CYCLING_TRIATHLETE_F, gTrainerFrontPic_CyclingTriathleteF, gTrainerPalette_CyclingTriathleteF),
TRAINER_SPRITE(TRAINER_PIC_RUNNING_TRIATHLETE_M, gTrainerFrontPic_RunningTriathleteM, gTrainerPalette_RunningTriathleteM),
TRAINER_SPRITE(TRAINER_PIC_RUNNING_TRIATHLETE_F, gTrainerFrontPic_RunningTriathleteF, gTrainerPalette_RunningTriathleteF),
TRAINER_SPRITE(TRAINER_PIC_SWIMMING_TRIATHLETE_M, gTrainerFrontPic_SwimmingTriathleteM, gTrainerPalette_SwimmingTriathleteM),
TRAINER_SPRITE(TRAINER_PIC_SWIMMING_TRIATHLETE_F, gTrainerFrontPic_SwimmingTriathleteF, gTrainerPalette_SwimmingTriathleteF),
TRAINER_SPRITE(TRAINER_PIC_DRAGON_TAMER, gTrainerFrontPic_DragonTamer, gTrainerPalette_DragonTamer),
TRAINER_SPRITE(TRAINER_PIC_NINJA_BOY, gTrainerFrontPic_NinjaBoy, gTrainerPalette_NinjaBoy),
TRAINER_SPRITE(TRAINER_PIC_BATTLE_GIRL, gTrainerFrontPic_BattleGirl, gTrainerPalette_BattleGirl),
TRAINER_SPRITE(TRAINER_PIC_PARASOL_LADY, gTrainerFrontPic_ParasolLady, gTrainerPalette_ParasolLady),
TRAINER_SPRITE(TRAINER_PIC_SWIMMER_F, gTrainerFrontPic_SwimmerF, gTrainerPalette_SwimmerF),
TRAINER_SPRITE(TRAINER_PIC_TWINS, gTrainerFrontPic_Twins, gTrainerPalette_Twins),
TRAINER_SPRITE(TRAINER_PIC_SAILOR, gTrainerFrontPic_Sailor, gTrainerPalette_Sailor),
TRAINER_SPRITE(TRAINER_PIC_MAGMA_ADMIN, gTrainerFrontPic_MagmaAdmin, gTrainerPalette_MagmaAdmin),
TRAINER_SPRITE(TRAINER_PIC_WALLY, gTrainerFrontPic_Wally, gTrainerPalette_Wally),
TRAINER_SPRITE(TRAINER_PIC_BRENDAN, gTrainerFrontPic_Brendan, gTrainerPalette_Brendan),
TRAINER_SPRITE(TRAINER_PIC_MAY, gTrainerFrontPic_May, gTrainerPalette_May),
TRAINER_SPRITE(TRAINER_PIC_BUG_CATCHER, gTrainerFrontPic_BugCatcher, gTrainerPalette_BugCatcher),
TRAINER_SPRITE(TRAINER_PIC_POKEMON_RANGER_M, gTrainerFrontPic_PokemonRangerM, gTrainerPalette_PokemonRangerM),
TRAINER_SPRITE(TRAINER_PIC_POKEMON_RANGER_F, gTrainerFrontPic_PokemonRangerF, gTrainerPalette_PokemonRangerF),
TRAINER_SPRITE(TRAINER_PIC_MAGMA_LEADER_MAXIE, gTrainerFrontPic_MagmaLeaderMaxie, gTrainerPalette_MagmaLeaderMaxie),
TRAINER_SPRITE(TRAINER_PIC_LASS, gTrainerFrontPic_Lass, gTrainerPalette_Lass),
TRAINER_SPRITE(TRAINER_PIC_YOUNG_COUPLE, gTrainerFrontPic_YoungCouple, gTrainerPalette_YoungCouple),
TRAINER_SPRITE(TRAINER_PIC_OLD_COUPLE, gTrainerFrontPic_OldCouple, gTrainerPalette_OldCouple),
TRAINER_SPRITE(TRAINER_PIC_SIS_AND_BRO, gTrainerFrontPic_SisAndBro, gTrainerPalette_SisAndBro),
TRAINER_SPRITE(TRAINER_PIC_STEVEN, gTrainerFrontPic_Steven, gTrainerPalette_Steven, 0, 7, 0x188),
TRAINER_SPRITE(TRAINER_PIC_SALON_MAIDEN_ANABEL, gTrainerFrontPic_SalonMaidenAnabel, gTrainerPalette_SalonMaidenAnabel),
TRAINER_SPRITE(TRAINER_PIC_DOME_ACE_TUCKER, gTrainerFrontPic_DomeAceTucker, gTrainerPalette_DomeAceTucker),
TRAINER_SPRITE(TRAINER_PIC_PALACE_MAVEN_SPENSER, gTrainerFrontPic_PalaceMavenSpenser, gTrainerPalette_PalaceMavenSpenser),
TRAINER_SPRITE(TRAINER_PIC_ARENA_TYCOON_GRETA, gTrainerFrontPic_ArenaTycoonGreta, gTrainerPalette_ArenaTycoonGreta),
TRAINER_SPRITE(TRAINER_PIC_FACTORY_HEAD_NOLAND, gTrainerFrontPic_FactoryHeadNoland, gTrainerPalette_FactoryHeadNoland),
TRAINER_SPRITE(TRAINER_PIC_PIKE_QUEEN_LUCY, gTrainerFrontPic_PikeQueenLucy, gTrainerPalette_PikeQueenLucy),
TRAINER_SPRITE(TRAINER_PIC_PYRAMID_KING_BRANDON, gTrainerFrontPic_PyramidKingBrandon, gTrainerPalette_PyramidKingBrandon),
TRAINER_SPRITE(TRAINER_PIC_RED, gTrainerFrontPic_Red, gTrainerPalette_Red),
TRAINER_SPRITE(TRAINER_PIC_LEAF, gTrainerFrontPic_Leaf, gTrainerPalette_Leaf),
TRAINER_SPRITE(TRAINER_PIC_RS_BRENDAN, gTrainerFrontPic_RubySapphireBrendan, gTrainerPalette_RubySapphireBrendan),
TRAINER_SPRITE(TRAINER_PIC_RS_MAY, gTrainerFrontPic_RubySapphireMay, gTrainerPalette_RubySapphireMay),
TRAINER_SPRITE(TRAINER_PIC_FRONT_HIKER, gTrainerFrontPic_Hiker, gTrainerPalette_Hiker),
TRAINER_SPRITE(TRAINER_PIC_FRONT_AQUA_GRUNT_M, gTrainerFrontPic_AquaGruntM, gTrainerPalette_AquaGruntM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_POKEMON_BREEDER_F, gTrainerFrontPic_PokemonBreederF, gTrainerPalette_PokemonBreederF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_COOLTRAINER_M, gTrainerFrontPic_CoolTrainerM, gTrainerPalette_CoolTrainerM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_BIRD_KEEPER, gTrainerFrontPic_BirdKeeper, gTrainerPalette_BirdKeeper),
TRAINER_SPRITE(TRAINER_PIC_FRONT_COLLECTOR, gTrainerFrontPic_Collector, gTrainerPalette_Collector),
TRAINER_SPRITE(TRAINER_PIC_FRONT_AQUA_GRUNT_F, gTrainerFrontPic_AquaGruntF, gTrainerPalette_AquaGruntF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_SWIMMER_M, gTrainerFrontPic_SwimmerM, gTrainerPalette_SwimmerM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_MAGMA_GRUNT_M, gTrainerFrontPic_MagmaGruntM, gTrainerPalette_MagmaGruntM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_EXPERT_M, gTrainerFrontPic_ExpertM, gTrainerPalette_ExpertM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_AQUA_ADMIN_M, gTrainerFrontPic_AquaAdminM, gTrainerPalette_AquaAdminM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_BLACK_BELT, gTrainerFrontPic_BlackBelt, gTrainerPalette_BlackBelt),
TRAINER_SPRITE(TRAINER_PIC_FRONT_AQUA_ADMIN_F, gTrainerFrontPic_AquaAdminF, gTrainerPalette_AquaAdminF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_AQUA_LEADER_ARCHIE, gTrainerFrontPic_AquaLeaderArchie, gTrainerPalette_AquaLeaderArchie),
TRAINER_SPRITE(TRAINER_PIC_FRONT_HEX_MANIAC, gTrainerFrontPic_HexManiac, gTrainerPalette_HexManiac),
TRAINER_SPRITE(TRAINER_PIC_FRONT_AROMA_LADY, gTrainerFrontPic_AromaLady, gTrainerPalette_AromaLady),
TRAINER_SPRITE(TRAINER_PIC_FRONT_RUIN_MANIAC, gTrainerFrontPic_RuinManiac, gTrainerPalette_RuinManiac),
TRAINER_SPRITE(TRAINER_PIC_FRONT_INTERVIEWER, gTrainerFrontPic_Interviewer, gTrainerPalette_Interviewer),
TRAINER_SPRITE(TRAINER_PIC_FRONT_TUBER_F, gTrainerFrontPic_TuberF, gTrainerPalette_TuberF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_TUBER_M, gTrainerFrontPic_TuberM, gTrainerPalette_TuberM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_COOLTRAINER_F, gTrainerFrontPic_CoolTrainerF, gTrainerPalette_CoolTrainerF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LADY, gTrainerFrontPic_Lady, gTrainerPalette_Lady),
TRAINER_SPRITE(TRAINER_PIC_FRONT_BEAUTY, gTrainerFrontPic_Beauty, gTrainerPalette_Beauty),
TRAINER_SPRITE(TRAINER_PIC_FRONT_RICH_BOY, gTrainerFrontPic_RichBoy, gTrainerPalette_RichBoy),
TRAINER_SPRITE(TRAINER_PIC_FRONT_EXPERT_F, gTrainerFrontPic_ExpertF, gTrainerPalette_ExpertF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_POKEMANIAC, gTrainerFrontPic_Pokemaniac, gTrainerPalette_Pokemaniac),
TRAINER_SPRITE(TRAINER_PIC_FRONT_MAGMA_GRUNT_F, gTrainerFrontPic_MagmaGruntF, gTrainerPalette_MagmaGruntF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_GUITARIST, gTrainerFrontPic_Guitarist, gTrainerPalette_Guitarist),
TRAINER_SPRITE(TRAINER_PIC_FRONT_KINDLER, gTrainerFrontPic_Kindler, gTrainerPalette_Kindler),
TRAINER_SPRITE(TRAINER_PIC_FRONT_CAMPER, gTrainerFrontPic_Camper, gTrainerPalette_Camper),
TRAINER_SPRITE(TRAINER_PIC_FRONT_PICNICKER, gTrainerFrontPic_Picnicker, gTrainerPalette_Picnicker),
TRAINER_SPRITE(TRAINER_PIC_FRONT_BUG_MANIAC, gTrainerFrontPic_BugManiac, gTrainerPalette_BugManiac),
TRAINER_SPRITE(TRAINER_PIC_FRONT_POKEMON_BREEDER_M, gTrainerFrontPic_PokemonBreederM, gTrainerPalette_PokemonBreederM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_PSYCHIC_M, gTrainerFrontPic_PsychicM, gTrainerPalette_PsychicM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_PSYCHIC_F, gTrainerFrontPic_PsychicF, gTrainerPalette_PsychicF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_GENTLEMAN, gTrainerFrontPic_Gentleman, gTrainerPalette_Gentleman),
TRAINER_SPRITE(TRAINER_PIC_FRONT_ELITE_FOUR_SIDNEY, gTrainerFrontPic_EliteFourSidney, gTrainerPalette_EliteFourSidney),
TRAINER_SPRITE(TRAINER_PIC_FRONT_ELITE_FOUR_PHOEBE, gTrainerFrontPic_EliteFourPhoebe, gTrainerPalette_EliteFourPhoebe),
TRAINER_SPRITE(TRAINER_PIC_FRONT_ELITE_FOUR_GLACIA, gTrainerFrontPic_EliteFourGlacia, gTrainerPalette_EliteFourGlacia, -4, 4, 0x1B0),
TRAINER_SPRITE(TRAINER_PIC_FRONT_ELITE_FOUR_DRAKE, gTrainerFrontPic_EliteFourDrake, gTrainerPalette_EliteFourDrake, 0, 5, 0x1A0),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LEADER_ROXANNE, gTrainerFrontPic_LeaderRoxanne, gTrainerPalette_LeaderRoxanne),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LEADER_BRAWLY, gTrainerFrontPic_LeaderBrawly, gTrainerPalette_LeaderBrawly),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LEADER_WATTSON, gTrainerFrontPic_LeaderWattson, gTrainerPalette_LeaderWattson),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LEADER_FLANNERY, gTrainerFrontPic_LeaderFlannery, gTrainerPalette_LeaderFlannery),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LEADER_NORMAN, gTrainerFrontPic_LeaderNorman, gTrainerPalette_LeaderNorman),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LEADER_WINONA, gTrainerFrontPic_LeaderWinona, gTrainerPalette_LeaderWinona),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LEADER_TATE_AND_LIZA, gTrainerFrontPic_LeaderTateAndLiza, gTrainerPalette_LeaderTateAndLiza),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LEADER_JUAN, gTrainerFrontPic_LeaderJuan, gTrainerPalette_LeaderJuan),
TRAINER_SPRITE(TRAINER_PIC_FRONT_SCHOOL_KID_M, gTrainerFrontPic_SchoolKidM, gTrainerPalette_SchoolKidM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_SCHOOL_KID_F, gTrainerFrontPic_SchoolKidF, gTrainerPalette_SchoolKidF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_SR_AND_JR, gTrainerFrontPic_SrAndJr, gTrainerPalette_SrAndJr),
TRAINER_SPRITE(TRAINER_PIC_FRONT_POKEFAN_M, gTrainerFrontPic_PokefanM, gTrainerPalette_PokefanM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_POKEFAN_F, gTrainerFrontPic_PokefanF, gTrainerPalette_PokefanF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_YOUNGSTER, gTrainerFrontPic_Youngster, gTrainerPalette_Youngster),
TRAINER_SPRITE(TRAINER_PIC_FRONT_CHAMPION_WALLACE, gTrainerFrontPic_ChampionWallace, gTrainerPalette_ChampionWallace, -8, 7, 0x188),
TRAINER_SPRITE(TRAINER_PIC_FRONT_FISHERMAN, gTrainerFrontPic_Fisherman, gTrainerPalette_Fisherman),
TRAINER_SPRITE(TRAINER_PIC_FRONT_CYCLING_TRIATHLETE_M, gTrainerFrontPic_CyclingTriathleteM, gTrainerPalette_CyclingTriathleteM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_CYCLING_TRIATHLETE_F, gTrainerFrontPic_CyclingTriathleteF, gTrainerPalette_CyclingTriathleteF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_RUNNING_TRIATHLETE_M, gTrainerFrontPic_RunningTriathleteM, gTrainerPalette_RunningTriathleteM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_RUNNING_TRIATHLETE_F, gTrainerFrontPic_RunningTriathleteF, gTrainerPalette_RunningTriathleteF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_SWIMMING_TRIATHLETE_M, gTrainerFrontPic_SwimmingTriathleteM, gTrainerPalette_SwimmingTriathleteM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_SWIMMING_TRIATHLETE_F, gTrainerFrontPic_SwimmingTriathleteF, gTrainerPalette_SwimmingTriathleteF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_DRAGON_TAMER, gTrainerFrontPic_DragonTamer, gTrainerPalette_DragonTamer),
TRAINER_SPRITE(TRAINER_PIC_FRONT_NINJA_BOY, gTrainerFrontPic_NinjaBoy, gTrainerPalette_NinjaBoy),
TRAINER_SPRITE(TRAINER_PIC_FRONT_BATTLE_GIRL, gTrainerFrontPic_BattleGirl, gTrainerPalette_BattleGirl),
TRAINER_SPRITE(TRAINER_PIC_FRONT_PARASOL_LADY, gTrainerFrontPic_ParasolLady, gTrainerPalette_ParasolLady),
TRAINER_SPRITE(TRAINER_PIC_FRONT_SWIMMER_F, gTrainerFrontPic_SwimmerF, gTrainerPalette_SwimmerF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_TWINS, gTrainerFrontPic_Twins, gTrainerPalette_Twins),
TRAINER_SPRITE(TRAINER_PIC_FRONT_SAILOR, gTrainerFrontPic_Sailor, gTrainerPalette_Sailor),
TRAINER_SPRITE(TRAINER_PIC_FRONT_MAGMA_ADMIN, gTrainerFrontPic_MagmaAdmin, gTrainerPalette_MagmaAdmin),
TRAINER_SPRITE(TRAINER_PIC_FRONT_WALLY, gTrainerFrontPic_Wally, gTrainerPalette_Wally),
TRAINER_SPRITE(TRAINER_PIC_FRONT_BRENDAN, gTrainerFrontPic_Brendan, gTrainerPalette_Brendan),
TRAINER_SPRITE(TRAINER_PIC_FRONT_MAY, gTrainerFrontPic_May, gTrainerPalette_May),
TRAINER_SPRITE(TRAINER_PIC_FRONT_BUG_CATCHER, gTrainerFrontPic_BugCatcher, gTrainerPalette_BugCatcher),
TRAINER_SPRITE(TRAINER_PIC_FRONT_POKEMON_RANGER_M, gTrainerFrontPic_PokemonRangerM, gTrainerPalette_PokemonRangerM),
TRAINER_SPRITE(TRAINER_PIC_FRONT_POKEMON_RANGER_F, gTrainerFrontPic_PokemonRangerF, gTrainerPalette_PokemonRangerF),
TRAINER_SPRITE(TRAINER_PIC_FRONT_MAGMA_LEADER_MAXIE, gTrainerFrontPic_MagmaLeaderMaxie, gTrainerPalette_MagmaLeaderMaxie),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LASS, gTrainerFrontPic_Lass, gTrainerPalette_Lass),
TRAINER_SPRITE(TRAINER_PIC_FRONT_YOUNG_COUPLE, gTrainerFrontPic_YoungCouple, gTrainerPalette_YoungCouple),
TRAINER_SPRITE(TRAINER_PIC_FRONT_OLD_COUPLE, gTrainerFrontPic_OldCouple, gTrainerPalette_OldCouple),
TRAINER_SPRITE(TRAINER_PIC_FRONT_SIS_AND_BRO, gTrainerFrontPic_SisAndBro, gTrainerPalette_SisAndBro),
TRAINER_SPRITE(TRAINER_PIC_FRONT_STEVEN, gTrainerFrontPic_Steven, gTrainerPalette_Steven, 0, 7, 0x188),
TRAINER_SPRITE(TRAINER_PIC_FRONT_SALON_MAIDEN_ANABEL, gTrainerFrontPic_SalonMaidenAnabel, gTrainerPalette_SalonMaidenAnabel),
TRAINER_SPRITE(TRAINER_PIC_FRONT_DOME_ACE_TUCKER, gTrainerFrontPic_DomeAceTucker, gTrainerPalette_DomeAceTucker),
TRAINER_SPRITE(TRAINER_PIC_FRONT_PALACE_MAVEN_SPENSER, gTrainerFrontPic_PalaceMavenSpenser, gTrainerPalette_PalaceMavenSpenser),
TRAINER_SPRITE(TRAINER_PIC_FRONT_ARENA_TYCOON_GRETA, gTrainerFrontPic_ArenaTycoonGreta, gTrainerPalette_ArenaTycoonGreta),
TRAINER_SPRITE(TRAINER_PIC_FRONT_FACTORY_HEAD_NOLAND, gTrainerFrontPic_FactoryHeadNoland, gTrainerPalette_FactoryHeadNoland),
TRAINER_SPRITE(TRAINER_PIC_FRONT_PIKE_QUEEN_LUCY, gTrainerFrontPic_PikeQueenLucy, gTrainerPalette_PikeQueenLucy),
TRAINER_SPRITE(TRAINER_PIC_FRONT_PYRAMID_KING_BRANDON, gTrainerFrontPic_PyramidKingBrandon, gTrainerPalette_PyramidKingBrandon),
TRAINER_SPRITE(TRAINER_PIC_FRONT_RED, gTrainerFrontPic_Red, gTrainerPalette_Red),
TRAINER_SPRITE(TRAINER_PIC_FRONT_LEAF, gTrainerFrontPic_Leaf, gTrainerPalette_Leaf),
TRAINER_SPRITE(TRAINER_PIC_FRONT_RS_BRENDAN, gTrainerFrontPic_RubySapphireBrendan, gTrainerPalette_RubySapphireBrendan),
TRAINER_SPRITE(TRAINER_PIC_FRONT_RS_MAY, gTrainerFrontPic_RubySapphireMay, gTrainerPalette_RubySapphireMay),
};
static const union AnimCmd sAnimCmd_Hoenn[] =
@ -468,12 +468,12 @@ static const union AnimCmd *const sBackAnims_Kanto[] =
const struct TrainerBacksprite gTrainerBacksprites[] =
{
TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_BRENDAN, 4, gTrainerBackPic_Brendan, gTrainerPalette_Brendan, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_MAY, 4, gTrainerBackPic_May, gTrainerPalette_May, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_RED, 5, gTrainerBackPic_Red, gTrainerBackPicPalette_Red, sBackAnims_Kanto),
TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_LEAF, 5, gTrainerBackPic_Leaf, gTrainerBackPicPalette_Leaf, sBackAnims_Kanto),
TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN, 4, gTrainerBackPic_RubySapphireBrendan, gTrainerPalette_RubySapphireBrendan, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY, 4, gTrainerBackPic_RubySapphireMay, gTrainerPalette_RubySapphireMay, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_WALLY, 4, gTrainerBackPic_Wally, gTrainerPalette_Wally, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_BACK_PIC_STEVEN, 4, gTrainerBackPic_Steven, gTrainerPalette_Steven, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_BRENDAN, 4, gTrainerBackPic_Brendan, gTrainerPalette_Brendan, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_MAY, 4, gTrainerBackPic_May, gTrainerPalette_May, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_RED, 5, gTrainerBackPic_Red, gTrainerBackPicPalette_Red, sBackAnims_Kanto),
TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_LEAF, 5, gTrainerBackPic_Leaf, gTrainerBackPicPalette_Leaf, sBackAnims_Kanto),
TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_RUBY_SAPPHIRE_BRENDAN, 4, gTrainerBackPic_RubySapphireBrendan, gTrainerPalette_RubySapphireBrendan, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_RUBY_SAPPHIRE_MAY, 4, gTrainerBackPic_RubySapphireMay, gTrainerPalette_RubySapphireMay, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_WALLY, 4, gTrainerBackPic_Wally, gTrainerPalette_Wally, sBackAnims_Hoenn),
TRAINER_BACK_SPRITE(TRAINER_PIC_BACK_STEVEN, 4, gTrainerBackPic_Steven, gTrainerPalette_Steven, sBackAnims_Hoenn),
};

View File

@ -1,87 +1,87 @@
const u16 gFacilityClassToPicIndex[] =
{
[FACILITY_CLASS_HIKER] = TRAINER_PIC_HIKER,
[FACILITY_CLASS_AQUA_GRUNT_M] = TRAINER_PIC_AQUA_GRUNT_M,
[FACILITY_CLASS_PKMN_BREEDER_F] = TRAINER_PIC_POKEMON_BREEDER_F,
[FACILITY_CLASS_COOLTRAINER_M] = TRAINER_PIC_COOLTRAINER_M,
[FACILITY_CLASS_BIRD_KEEPER] = TRAINER_PIC_BIRD_KEEPER,
[FACILITY_CLASS_COLLECTOR] = TRAINER_PIC_COLLECTOR,
[FACILITY_CLASS_AQUA_GRUNT_F] = TRAINER_PIC_AQUA_GRUNT_F,
[FACILITY_CLASS_SWIMMER_M] = TRAINER_PIC_SWIMMER_M,
[FACILITY_CLASS_MAGMA_GRUNT_M] = TRAINER_PIC_MAGMA_GRUNT_M,
[FACILITY_CLASS_EXPERT_M] = TRAINER_PIC_EXPERT_M,
[FACILITY_CLASS_BLACK_BELT] = TRAINER_PIC_BLACK_BELT,
[FACILITY_CLASS_AQUA_LEADER_ARCHIE] = TRAINER_PIC_AQUA_LEADER_ARCHIE,
[FACILITY_CLASS_HEX_MANIAC] = TRAINER_PIC_HEX_MANIAC,
[FACILITY_CLASS_AROMA_LADY] = TRAINER_PIC_AROMA_LADY,
[FACILITY_CLASS_RUIN_MANIAC] = TRAINER_PIC_RUIN_MANIAC,
[FACILITY_CLASS_INTERVIEWER] = TRAINER_PIC_INTERVIEWER,
[FACILITY_CLASS_TUBER_F] = TRAINER_PIC_TUBER_F,
[FACILITY_CLASS_TUBER_M] = TRAINER_PIC_TUBER_M,
[FACILITY_CLASS_COOLTRAINER_F] = TRAINER_PIC_COOLTRAINER_F,
[FACILITY_CLASS_LADY] = TRAINER_PIC_LADY,
[FACILITY_CLASS_BEAUTY] = TRAINER_PIC_BEAUTY,
[FACILITY_CLASS_RICH_BOY] = TRAINER_PIC_RICH_BOY,
[FACILITY_CLASS_EXPERT_F] = TRAINER_PIC_EXPERT_F,
[FACILITY_CLASS_POKEMANIAC] = TRAINER_PIC_POKEMANIAC,
[FACILITY_CLASS_MAGMA_GRUNT_F] = TRAINER_PIC_MAGMA_GRUNT_F,
[FACILITY_CLASS_GUITARIST] = TRAINER_PIC_GUITARIST,
[FACILITY_CLASS_KINDLER] = TRAINER_PIC_KINDLER,
[FACILITY_CLASS_CAMPER] = TRAINER_PIC_CAMPER,
[FACILITY_CLASS_PICNICKER] = TRAINER_PIC_PICNICKER,
[FACILITY_CLASS_BUG_MANIAC] = TRAINER_PIC_BUG_MANIAC,
[FACILITY_CLASS_PSYCHIC_M] = TRAINER_PIC_PSYCHIC_M,
[FACILITY_CLASS_PSYCHIC_F] = TRAINER_PIC_PSYCHIC_F,
[FACILITY_CLASS_GENTLEMAN] = TRAINER_PIC_GENTLEMAN,
[FACILITY_CLASS_ELITE_FOUR_SIDNEY] = TRAINER_PIC_ELITE_FOUR_SIDNEY,
[FACILITY_CLASS_ELITE_FOUR_PHOEBE] = TRAINER_PIC_ELITE_FOUR_PHOEBE,
[FACILITY_CLASS_LEADER_ROXANNE] = TRAINER_PIC_LEADER_ROXANNE,
[FACILITY_CLASS_LEADER_BRAWLY] = TRAINER_PIC_LEADER_BRAWLY,
[FACILITY_CLASS_LEADER_TATE_AND_LIZA] = TRAINER_PIC_LEADER_TATE_AND_LIZA,
[FACILITY_CLASS_SCHOOL_KID_M] = TRAINER_PIC_SCHOOL_KID_M,
[FACILITY_CLASS_SCHOOL_KID_F] = TRAINER_PIC_SCHOOL_KID_F,
[FACILITY_CLASS_SR_AND_JR] = TRAINER_PIC_SR_AND_JR,
[FACILITY_CLASS_POKEFAN_M] = TRAINER_PIC_POKEFAN_M,
[FACILITY_CLASS_POKEFAN_F] = TRAINER_PIC_POKEFAN_F,
[FACILITY_CLASS_YOUNGSTER] = TRAINER_PIC_YOUNGSTER,
[FACILITY_CLASS_CHAMPION_WALLACE] = TRAINER_PIC_CHAMPION_WALLACE,
[FACILITY_CLASS_FISHERMAN] = TRAINER_PIC_FISHERMAN,
[FACILITY_CLASS_CYCLING_TRIATHLETE_M] = TRAINER_PIC_CYCLING_TRIATHLETE_M,
[FACILITY_CLASS_CYCLING_TRIATHLETE_F] = TRAINER_PIC_CYCLING_TRIATHLETE_F,
[FACILITY_CLASS_RUNNING_TRIATHLETE_M] = TRAINER_PIC_RUNNING_TRIATHLETE_M,
[FACILITY_CLASS_RUNNING_TRIATHLETE_F] = TRAINER_PIC_RUNNING_TRIATHLETE_F,
[FACILITY_CLASS_SWIMMING_TRIATHLETE_M] = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
[FACILITY_CLASS_SWIMMING_TRIATHLETE_F] = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
[FACILITY_CLASS_DRAGON_TAMER] = TRAINER_PIC_DRAGON_TAMER,
[FACILITY_CLASS_NINJA_BOY] = TRAINER_PIC_NINJA_BOY,
[FACILITY_CLASS_BATTLE_GIRL] = TRAINER_PIC_BATTLE_GIRL,
[FACILITY_CLASS_PARASOL_LADY] = TRAINER_PIC_PARASOL_LADY,
[FACILITY_CLASS_SWIMMER_F] = TRAINER_PIC_SWIMMER_F,
[FACILITY_CLASS_TWINS] = TRAINER_PIC_TWINS,
[FACILITY_CLASS_SAILOR] = TRAINER_PIC_SAILOR,
[FACILITY_CLASS_WALLY] = TRAINER_PIC_WALLY,
[FACILITY_CLASS_BRENDAN] = TRAINER_PIC_BRENDAN,
[FACILITY_CLASS_BRENDAN_2] = TRAINER_PIC_BRENDAN,
[FACILITY_CLASS_BRENDAN_3] = TRAINER_PIC_BRENDAN,
[FACILITY_CLASS_MAY] = TRAINER_PIC_MAY,
[FACILITY_CLASS_MAY_2] = TRAINER_PIC_MAY,
[FACILITY_CLASS_MAY_3] = TRAINER_PIC_MAY,
[FACILITY_CLASS_PKMN_BREEDER_M] = TRAINER_PIC_POKEMON_BREEDER_M,
[FACILITY_CLASS_BUG_CATCHER] = TRAINER_PIC_BUG_CATCHER,
[FACILITY_CLASS_PKMN_RANGER_M] = TRAINER_PIC_POKEMON_RANGER_M,
[FACILITY_CLASS_PKMN_RANGER_F] = TRAINER_PIC_POKEMON_RANGER_F,
[FACILITY_CLASS_MAGMA_LEADER_MAXIE] = TRAINER_PIC_MAGMA_LEADER_MAXIE,
[FACILITY_CLASS_LASS] = TRAINER_PIC_LASS,
[FACILITY_CLASS_YOUNG_COUPLE] = TRAINER_PIC_YOUNG_COUPLE,
[FACILITY_CLASS_OLD_COUPLE] = TRAINER_PIC_OLD_COUPLE,
[FACILITY_CLASS_SIS_AND_BRO] = TRAINER_PIC_SIS_AND_BRO,
[FACILITY_CLASS_STEVEN] = TRAINER_PIC_STEVEN,
[FACILITY_CLASS_SALON_MAIDEN_ANABEL] = TRAINER_PIC_SALON_MAIDEN_ANABEL,
[FACILITY_CLASS_DOME_ACE_TUCKER] = TRAINER_PIC_DOME_ACE_TUCKER,
[FACILITY_CLASS_RED] = TRAINER_PIC_RED,
[FACILITY_CLASS_LEAF] = TRAINER_PIC_LEAF,
[FACILITY_CLASS_RS_BRENDAN] = TRAINER_PIC_RS_BRENDAN,
[FACILITY_CLASS_RS_MAY] = TRAINER_PIC_RS_MAY,
[FACILITY_CLASS_HIKER] = TRAINER_PIC_FRONT_HIKER,
[FACILITY_CLASS_AQUA_GRUNT_M] = TRAINER_PIC_FRONT_AQUA_GRUNT_M,
[FACILITY_CLASS_PKMN_BREEDER_F] = TRAINER_PIC_FRONT_POKEMON_BREEDER_F,
[FACILITY_CLASS_COOLTRAINER_M] = TRAINER_PIC_FRONT_COOLTRAINER_M,
[FACILITY_CLASS_BIRD_KEEPER] = TRAINER_PIC_FRONT_BIRD_KEEPER,
[FACILITY_CLASS_COLLECTOR] = TRAINER_PIC_FRONT_COLLECTOR,
[FACILITY_CLASS_AQUA_GRUNT_F] = TRAINER_PIC_FRONT_AQUA_GRUNT_F,
[FACILITY_CLASS_SWIMMER_M] = TRAINER_PIC_FRONT_SWIMMER_M,
[FACILITY_CLASS_MAGMA_GRUNT_M] = TRAINER_PIC_FRONT_MAGMA_GRUNT_M,
[FACILITY_CLASS_EXPERT_M] = TRAINER_PIC_FRONT_EXPERT_M,
[FACILITY_CLASS_BLACK_BELT] = TRAINER_PIC_FRONT_BLACK_BELT,
[FACILITY_CLASS_AQUA_LEADER_ARCHIE] = TRAINER_PIC_FRONT_AQUA_LEADER_ARCHIE,
[FACILITY_CLASS_HEX_MANIAC] = TRAINER_PIC_FRONT_HEX_MANIAC,
[FACILITY_CLASS_AROMA_LADY] = TRAINER_PIC_FRONT_AROMA_LADY,
[FACILITY_CLASS_RUIN_MANIAC] = TRAINER_PIC_FRONT_RUIN_MANIAC,
[FACILITY_CLASS_INTERVIEWER] = TRAINER_PIC_FRONT_INTERVIEWER,
[FACILITY_CLASS_TUBER_F] = TRAINER_PIC_FRONT_TUBER_F,
[FACILITY_CLASS_TUBER_M] = TRAINER_PIC_FRONT_TUBER_M,
[FACILITY_CLASS_COOLTRAINER_F] = TRAINER_PIC_FRONT_COOLTRAINER_F,
[FACILITY_CLASS_LADY] = TRAINER_PIC_FRONT_LADY,
[FACILITY_CLASS_BEAUTY] = TRAINER_PIC_FRONT_BEAUTY,
[FACILITY_CLASS_RICH_BOY] = TRAINER_PIC_FRONT_RICH_BOY,
[FACILITY_CLASS_EXPERT_F] = TRAINER_PIC_FRONT_EXPERT_F,
[FACILITY_CLASS_POKEMANIAC] = TRAINER_PIC_FRONT_POKEMANIAC,
[FACILITY_CLASS_MAGMA_GRUNT_F] = TRAINER_PIC_FRONT_MAGMA_GRUNT_F,
[FACILITY_CLASS_GUITARIST] = TRAINER_PIC_FRONT_GUITARIST,
[FACILITY_CLASS_KINDLER] = TRAINER_PIC_FRONT_KINDLER,
[FACILITY_CLASS_CAMPER] = TRAINER_PIC_FRONT_CAMPER,
[FACILITY_CLASS_PICNICKER] = TRAINER_PIC_FRONT_PICNICKER,
[FACILITY_CLASS_BUG_MANIAC] = TRAINER_PIC_FRONT_BUG_MANIAC,
[FACILITY_CLASS_PSYCHIC_M] = TRAINER_PIC_FRONT_PSYCHIC_M,
[FACILITY_CLASS_PSYCHIC_F] = TRAINER_PIC_FRONT_PSYCHIC_F,
[FACILITY_CLASS_GENTLEMAN] = TRAINER_PIC_FRONT_GENTLEMAN,
[FACILITY_CLASS_ELITE_FOUR_SIDNEY] = TRAINER_PIC_FRONT_ELITE_FOUR_SIDNEY,
[FACILITY_CLASS_ELITE_FOUR_PHOEBE] = TRAINER_PIC_FRONT_ELITE_FOUR_PHOEBE,
[FACILITY_CLASS_LEADER_ROXANNE] = TRAINER_PIC_FRONT_LEADER_ROXANNE,
[FACILITY_CLASS_LEADER_BRAWLY] = TRAINER_PIC_FRONT_LEADER_BRAWLY,
[FACILITY_CLASS_LEADER_TATE_AND_LIZA] = TRAINER_PIC_FRONT_LEADER_TATE_AND_LIZA,
[FACILITY_CLASS_SCHOOL_KID_M] = TRAINER_PIC_FRONT_SCHOOL_KID_M,
[FACILITY_CLASS_SCHOOL_KID_F] = TRAINER_PIC_FRONT_SCHOOL_KID_F,
[FACILITY_CLASS_SR_AND_JR] = TRAINER_PIC_FRONT_SR_AND_JR,
[FACILITY_CLASS_POKEFAN_M] = TRAINER_PIC_FRONT_POKEFAN_M,
[FACILITY_CLASS_POKEFAN_F] = TRAINER_PIC_FRONT_POKEFAN_F,
[FACILITY_CLASS_YOUNGSTER] = TRAINER_PIC_FRONT_YOUNGSTER,
[FACILITY_CLASS_CHAMPION_WALLACE] = TRAINER_PIC_FRONT_CHAMPION_WALLACE,
[FACILITY_CLASS_FISHERMAN] = TRAINER_PIC_FRONT_FISHERMAN,
[FACILITY_CLASS_CYCLING_TRIATHLETE_M] = TRAINER_PIC_FRONT_CYCLING_TRIATHLETE_M,
[FACILITY_CLASS_CYCLING_TRIATHLETE_F] = TRAINER_PIC_FRONT_CYCLING_TRIATHLETE_F,
[FACILITY_CLASS_RUNNING_TRIATHLETE_M] = TRAINER_PIC_FRONT_RUNNING_TRIATHLETE_M,
[FACILITY_CLASS_RUNNING_TRIATHLETE_F] = TRAINER_PIC_FRONT_RUNNING_TRIATHLETE_F,
[FACILITY_CLASS_SWIMMING_TRIATHLETE_M] = TRAINER_PIC_FRONT_SWIMMING_TRIATHLETE_M,
[FACILITY_CLASS_SWIMMING_TRIATHLETE_F] = TRAINER_PIC_FRONT_SWIMMING_TRIATHLETE_F,
[FACILITY_CLASS_DRAGON_TAMER] = TRAINER_PIC_FRONT_DRAGON_TAMER,
[FACILITY_CLASS_NINJA_BOY] = TRAINER_PIC_FRONT_NINJA_BOY,
[FACILITY_CLASS_BATTLE_GIRL] = TRAINER_PIC_FRONT_BATTLE_GIRL,
[FACILITY_CLASS_PARASOL_LADY] = TRAINER_PIC_FRONT_PARASOL_LADY,
[FACILITY_CLASS_SWIMMER_F] = TRAINER_PIC_FRONT_SWIMMER_F,
[FACILITY_CLASS_TWINS] = TRAINER_PIC_FRONT_TWINS,
[FACILITY_CLASS_SAILOR] = TRAINER_PIC_FRONT_SAILOR,
[FACILITY_CLASS_WALLY] = TRAINER_PIC_FRONT_WALLY,
[FACILITY_CLASS_BRENDAN] = TRAINER_PIC_FRONT_BRENDAN,
[FACILITY_CLASS_BRENDAN_2] = TRAINER_PIC_FRONT_BRENDAN,
[FACILITY_CLASS_BRENDAN_3] = TRAINER_PIC_FRONT_BRENDAN,
[FACILITY_CLASS_MAY] = TRAINER_PIC_FRONT_MAY,
[FACILITY_CLASS_MAY_2] = TRAINER_PIC_FRONT_MAY,
[FACILITY_CLASS_MAY_3] = TRAINER_PIC_FRONT_MAY,
[FACILITY_CLASS_PKMN_BREEDER_M] = TRAINER_PIC_FRONT_POKEMON_BREEDER_M,
[FACILITY_CLASS_BUG_CATCHER] = TRAINER_PIC_FRONT_BUG_CATCHER,
[FACILITY_CLASS_PKMN_RANGER_M] = TRAINER_PIC_FRONT_POKEMON_RANGER_M,
[FACILITY_CLASS_PKMN_RANGER_F] = TRAINER_PIC_FRONT_POKEMON_RANGER_F,
[FACILITY_CLASS_MAGMA_LEADER_MAXIE] = TRAINER_PIC_FRONT_MAGMA_LEADER_MAXIE,
[FACILITY_CLASS_LASS] = TRAINER_PIC_FRONT_LASS,
[FACILITY_CLASS_YOUNG_COUPLE] = TRAINER_PIC_FRONT_YOUNG_COUPLE,
[FACILITY_CLASS_OLD_COUPLE] = TRAINER_PIC_FRONT_OLD_COUPLE,
[FACILITY_CLASS_SIS_AND_BRO] = TRAINER_PIC_FRONT_SIS_AND_BRO,
[FACILITY_CLASS_STEVEN] = TRAINER_PIC_FRONT_STEVEN,
[FACILITY_CLASS_SALON_MAIDEN_ANABEL] = TRAINER_PIC_FRONT_SALON_MAIDEN_ANABEL,
[FACILITY_CLASS_DOME_ACE_TUCKER] = TRAINER_PIC_FRONT_DOME_ACE_TUCKER,
[FACILITY_CLASS_RED] = TRAINER_PIC_FRONT_RED,
[FACILITY_CLASS_LEAF] = TRAINER_PIC_FRONT_LEAF,
[FACILITY_CLASS_RS_BRENDAN] = TRAINER_PIC_FRONT_RS_BRENDAN,
[FACILITY_CLASS_RS_MAY] = TRAINER_PIC_FRONT_RS_MAY,
};
const enum TrainerClassID gFacilityClassToTrainerClass[] =

View File

@ -2541,7 +2541,7 @@ void SaveGameFrontier(void)
}
// Frontier Brain functions.
u8 GetFrontierBrainTrainerPicIndex(void)
enum TrainerPicID GetFrontierBrainTrainerPicIndex(void)
{
s32 facility;

View File

@ -1592,7 +1592,7 @@ static void CreateEventMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedI
SetMonData(mon, MON_DATA_MODERN_FATEFUL_ENCOUNTER, &isModernFatefulEncounter);
}
u16 GetUnionRoomTrainerPic(void)
enum TrainerPicID GetUnionRoomTrainerPic(void)
{
u8 linkId;
u32 arrId;
@ -2164,7 +2164,7 @@ void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition)
}
}
void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerPicId, u8 battlerPosition)
void SetMultiuseSpriteTemplateToTrainerBack(enum TrainerPicID trainerPicId, u8 battlerPosition)
{
gMultiuseSpriteTemplate.paletteTag = trainerPicId;
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
@ -2183,7 +2183,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerPicId, u8 battlerPosition
}
}
void SetMultiuseSpriteTemplateToTrainerFront(u16 trainerPicId, u8 battlerPosition)
void SetMultiuseSpriteTemplateToTrainerFront(enum TrainerPicID trainerPicId, u8 battlerPosition)
{
if (gMonSpritesGfxPtr != NULL)
gMultiuseSpriteTemplate = gMonSpritesGfxPtr->templates[battlerPosition];
@ -3445,7 +3445,7 @@ void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord)
}
}
u8 GetSecretBaseTrainerPicIndex(void)
enum TrainerPicID GetSecretBaseTrainerPicIndex(void)
{
u8 facilityClass = sSecretBaseFacilityClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % NUM_SECRET_BASE_CLASSES];
return gFacilityClassToPicIndex[facilityClass];
@ -6633,12 +6633,12 @@ u8 GetOpposingLinkMultiBattlerId(bool8 rightSide, u8 multiplayerId)
return i;
}
u16 FacilityClassToPicIndex(u16 facilityClass)
enum TrainerPicID FacilityClassToPicIndex(u16 facilityClass)
{
return gFacilityClassToPicIndex[facilityClass];
}
u16 PlayerGenderToFrontTrainerPicId(u8 playerGender)
enum TrainerPicID PlayerGenderToFrontTrainerPicId(u8 playerGender)
{
if (playerGender != MALE)
return FacilityClassToPicIndex(FACILITY_CLASS_MAY);

View File

@ -1242,7 +1242,7 @@ static struct Sprite *CreateTrainerPicSprite(void)
static void LoadCheckPageTrainerPic(struct Pokenav_MatchCallGfx *gfx)
{
u16 cursor;
int trainerPic = GetMatchCallTrainerPic(PokenavList_GetSelectedIndex());
enum TrainerPicID trainerPic = GetMatchCallTrainerPic(PokenavList_GetSelectedIndex());
if (trainerPic >= 0)
{
DecompressPicFromTable(&gTrainerSprites[trainerPic].frontPic, gfx->trainerPicGfx);

View File

@ -332,7 +332,7 @@ bool32 ShouldDrawRematchPokeballIcon(int index)
#endif //FREE_MATCH_CALL
}
int GetMatchCallTrainerPic(int index)
enum TrainerPicID GetMatchCallTrainerPic(int index)
{
int headerId;
struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);

View File

@ -278,7 +278,7 @@ static bool8 LoadBattlerSpriteGfx(u32 battler)
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
DecompressTrainerBackPic(gSaveBlock2Ptr->playerGender, battler);
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
DecompressTrainerBackPic(TRAINER_BACK_PIC_WALLY, battler);
DecompressTrainerBackPic(TRAINER_PIC_BACK_WALLY, battler);
else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
BattleLoadMonSpriteGfx(GetBattlerMon(battler), battler);
else
@ -330,9 +330,9 @@ void CreateBattlerSprite(u32 battler)
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && battler == B_POSITION_PLAYER_LEFT)
{
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(0));
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_PIC_BACK_WALLY, GetBattlerPosition(0));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
(8 - gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].coordinates.size) * 4 + 80,
(8 - gTrainerBacksprites[TRAINER_PIC_BACK_WALLY].coordinates.size) * 4 + 80,
GetBattlerSpriteSubpriority(0));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = (8 + battler / 2);
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;

View File

@ -66,7 +66,7 @@ static bool16 DecompressPic(u16 picId, u32 personality, bool8 isFrontPic, u8 *de
}
else
{
u16 trainerPicId = picId;
enum TrainerPicID trainerPicId = picId;
if (isFrontPic)
DecompressPicFromTable(&gTrainerSprites[trainerPicId].frontPic, dest);
else
@ -360,7 +360,7 @@ u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass)
return gender;
}
void CopyTrainerBackspriteFramesToDest(u8 trainerPicId, u8 *dest)
void CopyTrainerBackspriteFramesToDest(enum TrainerPicID trainerPicId, u8 *dest)
{
const struct SpriteFrameImage *frame = &gTrainerBacksprites[trainerPicId].backPic;
// y_offset is repurposed to indicates how many frames does the trainer pic have.

View File

@ -1821,7 +1821,7 @@ static void fprint_trainers(const char *output_path, FILE *f, struct Parsed *par
{
fprintf(f, "#line %d\n", trainer->pic_line);
fprintf(f, " .trainerPic = ");
fprint_constant(f, "TRAINER_PIC", trainer->pic);
fprint_constant(f, "TRAINER_PIC_FRONT", trainer->pic);
fprintf(f, ",\n");
}
@ -1935,14 +1935,14 @@ static void fprint_trainers(const char *output_path, FILE *f, struct Parsed *par
{
fprintf(f, "#line %d\n", trainer->back_pic_line);
fprintf(f, " .trainerBackPic = ");
fprint_constant(f, "TRAINER_BACK_PIC", trainer->back_pic);
fprint_constant(f, "TRAINER_PIC_BACK", trainer->back_pic);
fprintf(f, ",\n");
}
else // defaults to front pic in absence of defined back pic
{
fprintf(f, "#line %d\n", trainer->back_pic_line);
fprintf(f, " .trainerBackPic = ");
fprint_constant(f, "TRAINER_PIC", trainer->pic);
fprint_constant(f, "TRAINER_PIC_FRONT", trainer->pic);
fprintf(f, ",\n");
}