pokefirered/src/safari_zone.c
2019-07-07 01:46:05 +08:00

81 lines
1.7 KiB
C

#include "global.h"
#include "battle.h"
#include "event_scripts.h"
#include "overworld.h"
#include "battle.h"
#include "script.h"
#include "event_data.h"
#include "field_screen_effect.h"
EWRAM_DATA u8 gNumSafariBalls = 0;
EWRAM_DATA u16 gSafariZoneStepCounter = 0;
bool32 GetSafariZoneFlag(void)
{
return FlagGet(FLAG_SYS_SAFARI_MODE);
}
void SetSafariZoneFlag(void)
{
FlagSet(FLAG_SYS_SAFARI_MODE);
}
void ResetSafariZoneFlag(void)
{
FlagClear(FLAG_SYS_SAFARI_MODE);
}
void EnterSafariMode(void)
{
IncrementGameStat(GAME_STAT_ENTERED_SAFARI_ZONE);
SetSafariZoneFlag();
gNumSafariBalls = 30;
gSafariZoneStepCounter = 600;
}
void ExitSafariMode(void)
{
ResetSafariZoneFlag();
gNumSafariBalls = 0;
gSafariZoneStepCounter = 0;
}
bool8 SafariZoneTakeStep(void)
{
if (GetSafariZoneFlag() == FALSE)
return FALSE;
gSafariZoneStepCounter--;
if (gSafariZoneStepCounter == 0)
{
ScriptContext1_SetupScript(EventScript_SafariTimesUp);
return TRUE;
}
return FALSE;
}
void SafariZoneRetirePrompt(void)
{
ScriptContext1_SetupScript(EventScript_SafariRetire);
}
void CB2_EndSafariBattle(void)
{
if (gNumSafariBalls != 0)
{
SetMainCallback2(CB2_ReturnToField);
}
else if (gBattleOutcome == B_OUTCOME_NO_SAFARI_BALLS)
{
ScriptContext2_RunNewScript(EventScript_SafariWarpOut);
WarpIntoMap();
gFieldCallback = sub_807E3EC;
SetMainCallback2(CB2_LoadMap);
}
else if (gBattleOutcome == B_OUTCOME_CAUGHT)
{
ScriptContext1_SetupScript(EventScript_SafariOutOfBalls);
ScriptContext1_Stop();
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
}