mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-11 06:25:23 -05:00
- wild encounters - viridian city mart - starting money - move tutor route 2 - test battle route 2
168 lines
4.4 KiB
C
168 lines
4.4 KiB
C
#include "global.h"
|
|
#include "gflib.h"
|
|
#include "random.h"
|
|
#include "overworld.h"
|
|
#include "constants/maps.h"
|
|
#include "load_save.h"
|
|
#include "item_menu.h"
|
|
#include "tm_case.h"
|
|
#include "berry_pouch.h"
|
|
#include "clock.h"
|
|
#include "quest_log.h"
|
|
#include "wild_encounter.h"
|
|
#include "event_data.h"
|
|
#include "mail_data.h"
|
|
#include "play_time.h"
|
|
#include "money.h"
|
|
#include "battle_records.h"
|
|
#include "pokemon_size_record.h"
|
|
#include "pokemon_storage_system.h"
|
|
#include "roamer.h"
|
|
#include "item.h"
|
|
#include "player_pc.h"
|
|
#include "berry.h"
|
|
#include "easy_chat.h"
|
|
#include "union_room_chat.h"
|
|
#include "mystery_gift.h"
|
|
#include "renewable_hidden_items.h"
|
|
#include "trainer_tower.h"
|
|
#include "script.h"
|
|
#include "berry_powder.h"
|
|
#include "pokemon_jump.h"
|
|
#include "event_scripts.h"
|
|
#include "save.h"
|
|
#include "rtc.h"
|
|
|
|
// this file's functions
|
|
static void ResetMiniGamesResults(void);
|
|
|
|
// EWRAM vars
|
|
EWRAM_DATA bool8 gDifferentSaveFile = FALSE;
|
|
|
|
void SetTrainerId(u32 trainerId, u8 *dst)
|
|
{
|
|
dst[0] = trainerId;
|
|
dst[1] = trainerId >> 8;
|
|
dst[2] = trainerId >> 16;
|
|
dst[3] = trainerId >> 24;
|
|
}
|
|
|
|
void CopyTrainerId(u8 *dst, u8 *src)
|
|
{
|
|
s32 i;
|
|
for (i = 0; i < 4; i++)
|
|
dst[i] = src[i];
|
|
}
|
|
|
|
static void InitPlayerTrainerId(void)
|
|
{
|
|
u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower();
|
|
SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId);
|
|
}
|
|
|
|
static void SetDefaultOptions(void)
|
|
{
|
|
gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID;
|
|
gSaveBlock2Ptr->optionsWindowFrameType = 0;
|
|
gSaveBlock2Ptr->optionsSound = OPTIONS_SOUND_MONO;
|
|
gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT;
|
|
gSaveBlock2Ptr->optionsBattleSceneOff = FALSE;
|
|
gSaveBlock2Ptr->regionMapZoom = FALSE;
|
|
gSaveBlock2Ptr->optionsButtonMode = OPTIONS_BUTTON_MODE_HELP;
|
|
}
|
|
|
|
static void ClearPokedexFlags(void)
|
|
{
|
|
memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned));
|
|
memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen));
|
|
}
|
|
|
|
static void ClearBattleTower(void)
|
|
{
|
|
CpuFill32(0, &gSaveBlock2Ptr->battleTower, sizeof(gSaveBlock2Ptr->battleTower));
|
|
}
|
|
|
|
static void WarpToPlayersRoom(void)
|
|
{
|
|
SetWarpDestination(MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_2F), MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_2F), -1, 6, 6);
|
|
WarpIntoMap();
|
|
}
|
|
|
|
void Sav2_ClearSetDefault(void)
|
|
{
|
|
ClearSav2();
|
|
SetDefaultOptions();
|
|
}
|
|
|
|
void ResetMenuAndMonGlobals(void)
|
|
{
|
|
gDifferentSaveFile = FALSE;
|
|
ZeroPlayerPartyMons();
|
|
ZeroEnemyPartyMons();
|
|
ResetBagCursorPositions();
|
|
ResetTMCaseCursorPos();
|
|
BerryPouch_CursorResetToTop();
|
|
ResetQuestLog();
|
|
SeedWildEncounterRng(Random());
|
|
ResetSpecialVars();
|
|
}
|
|
|
|
void NewGameInitData(void)
|
|
{
|
|
u8 rivalName[PLAYER_NAME_LENGTH + 1];
|
|
|
|
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
|
|
RtcReset();
|
|
|
|
StringCopy(rivalName, gSaveBlock1Ptr->rivalName);
|
|
gDifferentSaveFile = TRUE;
|
|
gSaveBlock2Ptr->encryptionKey = 0;
|
|
ZeroPlayerPartyMons();
|
|
ZeroEnemyPartyMons();
|
|
ClearBattleTower();
|
|
ClearSav1();
|
|
ClearMailData();
|
|
gSaveBlock2Ptr->specialSaveWarpFlags = 0;
|
|
gSaveBlock2Ptr->gcnLinkFlags = 0;
|
|
gSaveBlock2Ptr->unkFlag1 = TRUE;
|
|
gSaveBlock2Ptr->unkFlag2 = FALSE;
|
|
InitPlayerTrainerId();
|
|
PlayTimeCounter_Reset();
|
|
ClearPokedexFlags();
|
|
InitEventData();
|
|
InitTimeBasedEvents();
|
|
ResetFameChecker();
|
|
SetMoney(&gSaveBlock1Ptr->money, 3000);
|
|
ResetGameStats();
|
|
ClearPlayerLinkBattleRecords();
|
|
InitHeracrossSizeRecord();
|
|
InitMagikarpSizeRecord();
|
|
EnableNationalPokedex_RSE();
|
|
gPlayerPartyCount = 0;
|
|
ZeroPlayerPartyMons();
|
|
ResetPokemonStorageSystem();
|
|
ClearRoamerData();
|
|
gSaveBlock1Ptr->registeredItem = 0;
|
|
ClearBag();
|
|
NewGameInitPCItems();
|
|
ClearEnigmaBerries();
|
|
InitEasyChatPhrases();
|
|
ResetTrainerFanClub();
|
|
UnionRoomChat_InitializeRegisteredTexts();
|
|
ResetMiniGamesResults();
|
|
ClearMysteryGift();
|
|
SetAllRenewableItemFlags();
|
|
WarpToPlayersRoom();
|
|
RunScriptImmediately(EventScript_ResetAllMapFlags);
|
|
StringCopy(gSaveBlock1Ptr->rivalName, rivalName);
|
|
ResetTrainerTowerResults();
|
|
}
|
|
|
|
static void ResetMiniGamesResults(void)
|
|
{
|
|
CpuFill16(0, &gSaveBlock2Ptr->berryCrush, sizeof(struct BerryCrush));
|
|
SetBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, 0);
|
|
ResetPokemonJumpRecords();
|
|
CpuFill16(0, &gSaveBlock2Ptr->berryPick, sizeof(struct BerryPickingResults));
|
|
}
|