through sub_8054F38

This commit is contained in:
PikalaxALT
2020-03-26 19:59:05 -04:00
parent 84a69bf140
commit 012f8ed12f
3 changed files with 123 additions and 288 deletions
+119 -4
View File
@@ -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);
}
}