#ifndef GUARD_DATA_H #define GUARD_DATA_H #include "constants/moves.h" #define SPECIES_SHINY_TAG 500 struct MonCoords { // This would use a bitfield, but some function // uses it as a u8 and casting won't match. u8 size; // u8 width:4, height:4; u8 y_offset; }; struct TrainerMonNoItemDefaultMoves { u16 iv; u8 lvl; u16 species; }; struct TrainerMonItemDefaultMoves { u16 iv; u8 lvl; u16 species; u16 heldItem; }; struct TrainerMonNoItemCustomMoves { u16 iv; u8 lvl; u16 species; u16 moves[MAX_MON_MOVES]; }; struct TrainerMonItemCustomMoves { u16 iv; u8 lvl; u16 species; u16 heldItem; u16 moves[MAX_MON_MOVES]; }; union TrainerMonPtr { const struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves; const struct TrainerMonNoItemCustomMoves *NoItemCustomMoves; const struct TrainerMonItemDefaultMoves *ItemDefaultMoves; const struct TrainerMonItemCustomMoves *ItemCustomMoves; }; struct Trainer { /*0x00*/ u8 partyFlags; /*0x01*/ u8 trainerClass; /*0x02*/ u8 encounterMusic_gender; // last bit is gender /*0x03*/ u8 trainerPic; /*0x04*/ u8 trainerName[12]; /*0x10*/ u16 items[4]; /*0x18*/ bool8 doubleBattle; /*0x1C*/ u32 aiFlags; /*0x20*/ u8 partySize; /*0x24*/ union TrainerMonPtr party; }; #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) extern const u16 gUnknown_082FF1D8[]; extern const u32 gUnknown_082FF1F8[]; extern const struct SpriteFrameImage gUnknown_082FF3A8[]; extern const struct SpriteFrameImage gUnknown_082FF3C8[]; extern const struct SpriteFrameImage gUnknown_082FF3E8[]; extern const struct SpriteFrameImage gUnknown_082FF408[]; extern const struct SpriteFrameImage gTrainerBackPicTable_Brendan[]; extern const struct SpriteFrameImage gTrainerBackPicTable_May[]; extern const struct SpriteFrameImage gTrainerBackPicTable_Red[]; extern const struct SpriteFrameImage gTrainerBackPicTable_Leaf[]; extern const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[]; extern const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[]; extern const struct SpriteFrameImage gTrainerBackPicTable_Wally[]; extern const struct SpriteFrameImage gTrainerBackPicTable_Steven[]; extern const union AffineAnimCmd *const gUnknown_082FF618[]; extern const union AffineAnimCmd *const gUnknown_082FF694[]; extern const union AffineAnimCmd *const gUnknown_082FF6C0[]; extern const union AnimCmd *const gUnknown_082FF70C[]; extern const struct MonCoords gMonFrontPicCoords[]; extern const struct CompressedSpriteSheet gMonStillFrontPicTable[]; extern const struct MonCoords gMonBackPicCoords[]; extern const struct CompressedSpriteSheet gMonBackPicTable[]; extern const struct CompressedSpritePalette gMonPaletteTable[]; extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[]; extern const struct MonCoords gTrainerFrontPicCoords[]; extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[]; extern const struct MonCoords gTrainerBackPicCoords[]; extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; // functionally unused extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; extern const u8 gEnemyMonElevation[NUM_SPECIES]; extern const union AnimCmd *const *const gMonFrontAnimsPtrTable[]; extern const struct CompressedSpriteSheet gMonFrontPicTable[]; extern const struct Trainer gTrainers[]; extern const u8 gTrainerClassNames[][13]; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1]; #endif // GUARD_DATA_H