pokefirered/include/battle_setup.h
2025-02-10 15:54:48 +01:00

81 lines
2.6 KiB
C

#ifndef GUARD_BATTLE_SETUP_H
#define GUARD_BATTLE_SETUP_H
/*
the layout of the first byte can be confusing here
isDoubleBattle is the least lsb. msb is in the mode.
*/
typedef union PACKED TrainerBattleParameter
{
struct PACKED _TrainerBattleParameter
{
u8 isDoubleBattle:1;
u8 isRematch:1;
u8 playMusicA:1;
u8 playMusicB:1;
u8 mode:4;
u8 objEventLocalIdA;
u16 opponentA;
u8 *introTextA;
u8 *defeatTextA;
u8 *battleScriptRetAddrA;
u8 objEventLocalIdB;
u16 opponentB;
u8 *introTextB;
u8 *defeatTextB;
u8 *battleScriptRetAddrB;
u8 *victoryText;
u8 *cannotBattleText;
u16 rivalBattleFlags;
} params;
u8 data[sizeof(struct _TrainerBattleParameter)];
} TrainerBattleParameter;
extern TrainerBattleParameter gTrainerBattleParameter;
extern u16 gPartnerTrainerId;
#define TRAINER_BATTLE_PARAM gTrainerBattleParameter.params
void StartWildBattle(void);
void StartDoubleWildBattle(void);
void StartRoamerBattle(void);
void StartOldManTutorialBattle(void);
void BattleSetup_StartScriptedWildBattle(void);
void BattleSetup_StartScriptedDoubleWildBattle(void);
void StartMarowakBattle(void);
void StartSouthernIslandBattle(void);
void StartLegendaryBattle(void);
void StartGroudonKyogreBattle(void);
void StartRegiBattle(void);
u8 BattleSetup_GetTerrainId(void);
u8 BattleSetup_GetBattleTowerBattleTransition(void);
void ResetTrainerOpponentIds(void);
const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript);
void ConfigureTwoTrainersBattle(u8 trainerObjEventId, const u8 *trainerScript);
void SetUpTwoTrainersBattle(void);
bool32 GetTrainerFlagFromScriptPointer(const u8 *data);
void SetUpTrainerMovement(void);
u8 GetTrainerBattleMode(void);
u16 GetRivalBattleFlags(void);
void SetBattledTrainerFlag(void);
bool8 HasTrainerBeenFought(u16 trainerId);
void SetTrainerFlag(u16 trainerId);
void ClearTrainerFlag(u16 trainerId);
void BattleSetup_StartTrainerBattle(void);
void StartRematchBattle(void);
void ShowTrainerIntroSpeech(void);
const u8 *BattleSetup_GetScriptAddrAfterBattle(void);
const u8 *BattleSetup_GetTrainerPostBattleScript(void);
void ShowTrainerCantBattleSpeech(void);
void PlayTrainerEncounterMusic(void);
const u8 *GetTrainerALoseText(void);
const u8 *GetTrainerBLoseText(void);
const u8 *GetTrainerWonSpeech(void);
void BattleSetup_StartTrainerBattle_Debug(void);
u8 GetWildBattleTransition(void);
u8 GetTrainerBattleTransition(void);
void TrainerBattleLoadArgs(const u8 *data);
#endif // GUARD_BATTLE_SETUP_H