diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-26 19:59:05 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-26 19:59:05 -0400 |
commit | 012f8ed12f2425a13602ec2cb3cb379d756b8bbd (patch) | |
tree | 09ccdcecb38bedea4b876aae1170de74d1d3bdc1 /src | |
parent | 84a69bf1404d6d6545c72c39a5b5105fbdb8c36c (diff) |
through sub_8054F38
Diffstat (limited to 'src')
-rw-r--r-- | src/overworld.c | 123 |
1 files changed, 119 insertions, 4 deletions
diff --git a/src/overworld.c b/src/overworld.c index 5a065ed92..ec843dd4a 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -3,16 +3,33 @@ #include "event_data.h" #include "event_scripts.h" #include "field_specials.h" +#include "load_save.h" #include "money.h" #include "overworld.h" +#include "roamer.h" #include "script.h" #include "script_pokemon_util.h" #include "constants/maps.h" #include "constants/flags.h" +struct InitialPlayerAvatarState +{ + u8 transitionFlags; + u8 direction; + u8 unk2; +}; + + +EWRAM_DATA struct WarpData gUnknown_2031DB4 = {}; +EWRAM_DATA struct WarpData gUnknown_2031DBC = {}; +EWRAM_DATA struct WarpData gUnknown_2031DC4 = {}; +EWRAM_DATA struct WarpData gUnknown_2031DCC = {}; +EWRAM_DATA struct InitialPlayerAvatarState gUnknown_2031DD4 = {}; + u8 CountBadgesForOverworldWhiteOutLossCalculation(void); -void sub_8054DD8(void); -void sub_80554BC(void); +void Overworld_ResetStateAfterWhitingOut(void); +void Overworld_SetWhiteoutRespawnPoint(void); +void sub_805610C(void); static const u8 sWhiteOutMoneyLossMultipliers[] = { 2, @@ -42,8 +59,8 @@ void sub_8054BC8(void) ScriptContext2_RunNewScript(EventScript_ResetEliteFourEnd); RemoveMoney(&gSaveBlock1Ptr->money, ComputeWhiteOutMoneyLoss()); HealPlayerParty(); - sub_8054DD8(); - sub_80554BC(); + Overworld_ResetStateAfterWhitingOut(); + Overworld_SetWhiteoutRespawnPoint(); WarpIntoMap(); } @@ -89,3 +106,101 @@ void Overworld_ResetStateAfterFly(void) FlagClear(FLAG_0x808); VarSet(VAR_0x404D, 0); } + +void Overworld_ResetStateAfterTeleport(void) +{ + ResetInitialPlayerAvatarState(); + FlagClear(FLAG_SYS_ON_CYCLING_ROAD); + VarSet(VAR_MAP_SCENE_ROUTE16, 0); + FlagClear(FLAG_SYS_UNK_802); + FlagClear(FLAG_SYS_SAFARI_MODE); + VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_FLASH_ACTIVE); + FlagClear(FLAG_0x808); + VarSet(VAR_0x404D, 0); +} + +void Overworld_ResetStateAfterDigEscRope(void) +{ + ResetInitialPlayerAvatarState(); + FlagClear(FLAG_SYS_ON_CYCLING_ROAD); + VarSet(VAR_MAP_SCENE_ROUTE16, 0); + FlagClear(FLAG_SYS_UNK_802); + FlagClear(FLAG_SYS_SAFARI_MODE); + VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_FLASH_ACTIVE); + FlagClear(FLAG_0x808); + VarSet(VAR_0x404D, 0); +} + +void Overworld_ResetStateAfterWhitingOut(void) +{ + ResetInitialPlayerAvatarState(); + FlagClear(FLAG_SYS_ON_CYCLING_ROAD); + VarSet(VAR_MAP_SCENE_ROUTE16, 0); + FlagClear(FLAG_SYS_UNK_802); + FlagClear(FLAG_SYS_SAFARI_MODE); + VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_FLASH_ACTIVE); + FlagClear(FLAG_0x808); + VarSet(VAR_0x404D, 0); +} + +void sub_8054E40(void) +{ + FlagClear(FLAG_SYS_SAFARI_MODE); + VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0); + sub_805610C(); + UpdateLocationHistoryForRoamer(); + RoamerMoveToOtherLocationSet(); +} + +void ResetGameStats(void) +{ + int i; + + for (i = 0; i < NUM_GAME_STATS; i++) + { + gSaveBlock1Ptr->gameStats[i] = 0; + } +} + +void IncrementGameStat(u8 statId) +{ + u32 statVal; + if (statId >= NUM_USED_GAME_STATS) + return; + statVal = GetGameStat(statId); + if (statVal < 0xFFFFFF) + statVal++; + else + statVal = 0xFFFFFF; + SetGameStat(statId, statVal); +} + +u32 GetGameStat(u8 statId) +{ + if (statId >= NUM_USED_GAME_STATS) + return 0; + else + return gSaveBlock1Ptr->gameStats[statId] ^ gSaveBlock2Ptr->encryptionKey; +} + +void SetGameStat(u8 statId, u32 statVal) +{ + if (statId >= NUM_USED_GAME_STATS) + return; + gSaveBlock1Ptr->gameStats[statId] = statVal ^ gSaveBlock2Ptr->encryptionKey; +} + +void sub_8054F38(u32 newKey) +{ + u8 i; + for (i = 0; i < NUM_GAME_STATS; i++) + { + ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->gameStats[i], newKey); + } +} |