mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-11 14:35:05 -05:00
80 lines
1.7 KiB
C
80 lines
1.7 KiB
C
#include "global.h"
|
|
#include "battle.h"
|
|
#include "event_scripts.h"
|
|
#include "overworld.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)
|
|
{
|
|
ScriptContext_SetupScript(SafariZone_EventScript_TimesUp);
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
void SafariZoneRetirePrompt(void)
|
|
{
|
|
ScriptContext_SetupScript(SafariZone_EventScript_RetirePrompt);
|
|
}
|
|
|
|
void CB2_EndSafariBattle(void)
|
|
{
|
|
if (gNumSafariBalls != 0)
|
|
{
|
|
SetMainCallback2(CB2_ReturnToField);
|
|
}
|
|
else if (gBattleOutcome == B_OUTCOME_NO_SAFARI_BALLS)
|
|
{
|
|
RunScriptImmediately(SafariZone_EventScript_OutOfBallsMidBattle);
|
|
WarpIntoMap();
|
|
gFieldCallback = FieldCB_SafariZoneRanOutOfBalls;
|
|
SetMainCallback2(CB2_LoadMap);
|
|
}
|
|
else if (gBattleOutcome == B_OUTCOME_CAUGHT)
|
|
{
|
|
ScriptContext_SetupScript(SafariZone_EventScript_OutOfBalls);
|
|
ScriptContext_Stop();
|
|
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
|
}
|
|
}
|