pokeemerald-expansion/include/battle_gimmick.h
2026-01-28 09:32:03 +01:00

52 lines
1.8 KiB
C

#ifndef GUARD_BATTLE_GIMMICK_H
#define GUARD_BATTLE_GIMMICK_H
enum Gimmick
{
GIMMICK_NONE,
GIMMICK_MEGA,
GIMMICK_ULTRA_BURST,
GIMMICK_Z_MOVE,
GIMMICK_DYNAMAX,
GIMMICK_TERA,
GIMMICKS_COUNT,
};
struct GimmickInfo
{
const struct SpritePalette *triggerPal; // trigger gfx data
const struct SpriteSheet *triggerSheet;
const struct SpriteTemplate *triggerTemplate;
const u32 indicatorPalTag;
const u8 *indicatorData;
bool32 (*CanActivate)(enum BattlerId battler);
void (*ActivateGimmick)(enum BattlerId battler);
};
void AssignUsableGimmicks(void);
bool32 CanActivateGimmick(enum BattlerId battler, enum Gimmick gimmick);
bool32 IsGimmickSelected(enum BattlerId battler, enum Gimmick gimmick);
void SetActiveGimmick(enum BattlerId battler, enum Gimmick gimmick);
enum Gimmick GetActiveGimmick(enum BattlerId battler);
bool32 ShouldTrainerBattlerUseGimmick(enum BattlerId battler, enum Gimmick gimmick);
bool32 HasTrainerUsedGimmick(enum BattlerId battler, enum Gimmick gimmick);
void SetGimmickAsActivated(enum BattlerId battler, enum Gimmick gimmick);
void ChangeGimmickTriggerSprite(u32 spriteId, u32 animId);
void CreateGimmickTriggerSprite(enum BattlerId battler);
bool32 IsGimmickTriggerSpriteActive(void);
bool32 IsGimmickTriggerSpriteMatchingBattler(enum BattlerId battler);
void HideGimmickTriggerSprite(void);
void DestroyGimmickTriggerSprite(void);
void LoadIndicatorSpritesGfx(void);
u32 GetIndicatorPalTag(enum BattlerId battler);
void UpdateIndicatorVisibilityAndType(u32 healthboxId, bool32 invisible);
void UpdateIndicatorOamPriority(u32 healthboxId, u32 oamPriority);
void UpdateIndicatorLevelData(u32 healthboxId, u32 level);
void CreateIndicatorSprite(enum BattlerId battler);
extern const struct GimmickInfo gGimmicksInfo[];
#endif