diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-07-08 08:07:53 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-08 08:07:53 -0400 |
commit | 39d68ebd445be5657a916dec1b4872717e9c40d3 (patch) | |
tree | 4394601f49f220e3c32d9879a3c26284c9c92771 /src/safari_zone.c | |
parent | 7980c4aa071685983f84861cc7dc69d6daf30a90 (diff) | |
parent | 122f1395823cfa3dfd96842c61411ad29700f8de (diff) |
Merge pull request #77 from jiangzhengwenjz/misc
corrected sprite.h + finished safari_zone, list_menu, menu_indicators, field_poison, buy_menu_helpers, dynamic_placeholder_text_util
Diffstat (limited to 'src/safari_zone.c')
-rw-r--r-- | src/safari_zone.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/safari_zone.c b/src/safari_zone.c new file mode 100644 index 000000000..cb0a58586 --- /dev/null +++ b/src/safari_zone.c @@ -0,0 +1,80 @@ +#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); + } +} |