Document system_vars.c

This commit is contained in:
Rachel
2025-02-12 22:57:12 -08:00
parent a1cade4fab
commit 7d4eae3ff1
4 changed files with 327 additions and 256 deletions

View File

@@ -7,7 +7,72 @@
#define VARS_START 0x4000
#define SYSTEM_VARS_START (VARS_START + 0x0030)
#define SYSTEM_VARS_START (VARS_START + 0x0030)
#define SYSTEM_VARS_BLOCK_SIZE 64
#define VAR_PLAYER_STARTER (SYSTEM_VARS_START + 0)
#define VAR_UNUSED_0x4031 (SYSTEM_VARS_START + 1)
#define VAR_UNK_0x4032 (SYSTEM_VARS_START + 2)
#define VAR_VS_SEEKER_BATTERY_LEVEL (SYSTEM_VARS_START + 3)
#define VAR_VS_SEEKER_STEP_COUNT (SYSTEM_VARS_START + 4)
#define VAR_SIZE_CONTEST_RECORD (SYSTEM_VARS_START + 5)
#define VAR_HIDDEN_LOCATION_FULL_MOON_ISLAND (SYSTEM_VARS_START + 6)
#define VAR_HIDDEN_LOCATION_NEW_MOON_ISLAND (SYSTEM_VARS_START + 7)
#define VAR_HIDDEN_LOCATION_SPRING_PATH (SYSTEM_VARS_START + 8)
#define VAR_HIDDEN_LOCATION_SEABREAK_PATH (SYSTEM_VARS_START + 9)
#define VAR_AMITY_SQUARE_STEP_COUNT (SYSTEM_VARS_START + 10)
#define VAR_NEWS_PRESS_DEADLINE (SYSTEM_VARS_START + 11)
#define VAR_LOTTERY_TRAINER_ID_LOW_HALF (SYSTEM_VARS_START + 12)
#define VAR_LOTTERY_TRAINER_ID_HIGH_HALF (SYSTEM_VARS_START + 13)
#define VAR_SPIRITOMB_COUNTER (SYSTEM_VARS_START + 14)
#define VAR_PARTNER_TRAINER_ID (SYSTEM_VARS_START + 15)
#define VAR_CONSECUTIVE_BONUS_ROUND_WINS (SYSTEM_VARS_START + 16)
#define VAR_DAILY_RANDOM_LEVEL (SYSTEM_VARS_START + 17)
#define VAR_DEPARTMENT_STORE_REGULAR_COUNTER (SYSTEM_VARS_START + 18)
#define VAR_DISTRIBUTION_EVENT_DARKRAI (SYSTEM_VARS_START + 19)
#define VAR_DISTRIBUTION_EVENT_SHAYMIN (SYSTEM_VARS_START + 20)
#define VAR_DISTRIBUTION_EVENT_ARCEUS (SYSTEM_VARS_START + 21)
#define VAR_DISTRIBUTION_EVENT_ROTOM (SYSTEM_VARS_START + 22)
#define VAR_UNDERGROUND_FOSSILS_UNEARTHED (SYSTEM_VARS_START + 23)
#define VAR_UNDERGROUND_TRAPS_SET (SYSTEM_VARS_START + 24)
#define VAR_UNDERGROUND_TALK_COUNTER (SYSTEM_VARS_START + 25)
#define VAR_FRIENDSHIP_INCREMENT_STEP_COUNTER (SYSTEM_VARS_START + 26)
#define VAR_ETERNA_GYM_FLOWER_CLOCK_STATE (SYSTEM_VARS_START + 27)
#define VAR_UNK_0x4049 (SYSTEM_VARS_START + 28)
#define VAR_TOTAL_TURNS_LAST_BATTLE (SYSTEM_VARS_START + 29)
#define VAR_RESORT_VILLA_VISITOR (SYSTEM_VARS_START + 30)
#define VAR_BATTLE_TOWER_PRINT_STATE (SYSTEM_VARS_START + 31)
#define VAR_BATTLE_FACTORY_PRINT_STATE (SYSTEM_VARS_START + 32)
#define VAR_BATTLE_HALL_PRINT_STATE (SYSTEM_VARS_START + 33)
#define VAR_BATTLE_CASTLE_PRINT_STATE (SYSTEM_VARS_START + 34)
#define VAR_BATTLE_ARCADE_PRINT_STATE (SYSTEM_VARS_START + 35)
#define VAR_UNDERGROUND_ITEMS_GIVEN_AWAY (SYSTEM_VARS_START + 36)
#define VAR_DISTORTION_WORLD_PROGRESS (SYSTEM_VARS_START + 37)
#define VAR_ARCEUS_EVENT_STATE (SYSTEM_VARS_START + 38)
#define VAR_SHAYMIN_EVENT_STATE (SYSTEM_VARS_START + 39)
#define VAR_ROAMING_CRESSELIA_STATE (SYSTEM_VARS_START + 40)
#define VAR_ROAMING_MESPRIT_STATE (SYSTEM_VARS_START + 41)
#define VAR_RESORT_VILLA_VISITOR_MESSAGE_NUM (SYSTEM_VARS_START + 42)
#define VAR_DISTORTION_WORLD_CYRUS_APPEARANCE (SYSTEM_VARS_START + 43)
#define VAR_UNK_0x405C (SYSTEM_VARS_START + 44)
#define VAR_UNK_0x405D (SYSTEM_VARS_START + 45)
#define VAR_ROAMING_MOLTRES_STATE (SYSTEM_VARS_START + 46)
#define VAR_ROAMING_ZAPDOS_STATE (SYSTEM_VARS_START + 47)
#define VAR_ROAMING_ARTICUNO_STATE (SYSTEM_VARS_START + 48)
#define VAR_UNK_0x4061 (SYSTEM_VARS_START + 49)
#define VAR_UNK_0x4062 (SYSTEM_VARS_START + 50)
#define VAR_UNK_0x4063 (SYSTEM_VARS_START + 51)
#define VAR_WIFI_FRONTIER_CLEARED (SYSTEM_VARS_START + 52)
#define VAR_UNK_0x4065 (SYSTEM_VARS_START + 53)
#define VAR_UNK_0x4066 (SYSTEM_VARS_START + 54)
#define VAR_UNK_0x4067 (SYSTEM_VARS_START + 55)
#define VAR_UNK_0x4068 (SYSTEM_VARS_START + 56)
#define VAR_UNK_0x4069 (SYSTEM_VARS_START + 57)
#define VAR_UNK_0x406A (SYSTEM_VARS_START + 58)
#define VAR_UNK_0x406B (SYSTEM_VARS_START + 59)
#define VAR_UNUSED_0x406C (SYSTEM_VARS_START + 60)
#define VAR_UNUSED_0x406D (SYSTEM_VARS_START + 61)
#define VAR_UNUSED_0x406E (SYSTEM_VARS_START + 62)
#define VAR_UNUSED_0x406F (SYSTEM_VARS_START + 63)
#define SPECIAL_VARS_START 0x8000

View File

@@ -13,6 +13,9 @@
#define NELEMS(a) (sizeof(a) / sizeof(*(a)))
#define XtOffset(pointer_type, field) ((unsigned int)&(((pointer_type)NULL)->field))
#define HI_HALF(i) (((i) >> 16) & 0xFFFF)
#define LO_HALF(i) ((i) & 0xFFFF)
#define HI_AND_LO(h, l) (((h) << 16) | l)
#define ALIGN_4 __attribute__((aligned(4)))

View File

@@ -1,63 +1,73 @@
#ifndef POKEPLATINUM_UNK_0206AFE0_H
#define POKEPLATINUM_UNK_0206AFE0_H
#ifndef POKEPLATINUM_SYSTEM_VARS_H
#define POKEPLATINUM_SYSTEM_VARS_H
#include "savedata.h"
#include "vars_flags.h"
enum HiddenLocations {
HL_FULLMOONISLAND = 0,
HL_NEWMOONISLAND = 1,
HL_SPRINGPATH = 2,
HL_SEABREAKPATH = 3,
enum DistributionEvent {
DISTEVENT_DARKRAI = 0,
DISTEVENT_SHAYMIN,
DISTEVENT_ARCEUS,
DISTEVENT_ROTOM,
DISTEVENT_MAX,
};
BOOL SystemVars_SetPartnerTrainerID(VarsFlags *varsFlags, u16 param1);
enum HiddenLocation {
HL_FULLMOONISLAND = 0,
HL_NEWMOONISLAND,
HL_SPRINGPATH,
HL_SEABREAKPATH,
HL_MAX,
};
BOOL SystemVars_SetPartnerTrainerID(VarsFlags *varsFlags, u16 trainerID);
u16 SystemVars_GetPartnerTrainerID(VarsFlags *varsFlags);
BOOL SystemVars_SetPlayerStarter(VarsFlags *varsFlags, u16 param1);
BOOL SystemVars_SetPlayerStarter(VarsFlags *varsFlags, u16 species);
u16 SystemVars_GetPlayerStarter(VarsFlags *varsFlags);
u16 SystemVars_GetRivalStarter(VarsFlags *varsFlags);
u16 SystemVars_GetPlayerCounterpartStarter(VarsFlags *varsFlags);
u16 SystemVars_GetSizeContestRecord(VarsFlags *varsFlags);
BOOL SystemVars_SetSizeContestRecord(VarsFlags *varsFlags, u16 param1);
BOOL SystemVars_SetSizeContestRecord(VarsFlags *varsFlags, u16 size);
void SystemVars_ResetVsSeeker(VarsFlags *varsFlags);
u16 SystemVars_GetVsSeekerBattery(VarsFlags *varsFlags);
BOOL SystemVars_SetVsSeekerBattery(VarsFlags *varsFlags, u16 param1);
BOOL SystemVars_SetVsSeekerBattery(VarsFlags *varsFlags, u16 battery);
u16 SystemVars_GetVsSeekerStepCount(VarsFlags *varsFlags);
BOOL SystemVars_SetVsSeekerStepCount(VarsFlags *varsFlags, u16 param1);
void SystemVars_SetDistributionEventMagic(VarsFlags *varsFlags, int param1);
BOOL SystemVars_CheckDistributionEvent(VarsFlags *varsFlags, int param1);
void SystemVars_SetHiddenLocationMagic(VarsFlags *varsFlags, int param1);
void SystemVars_ClearHiddenLocation(VarsFlags *varsFlags, int param1);
BOOL SystemVars_CheckHiddenLocation(VarsFlags *varsFlags, int hiddenLocation);
BOOL SystemVars_SetVsSeekerStepCount(VarsFlags *varsFlags, u16 count);
void SystemVars_SetDistributionEventMagic(VarsFlags *varsFlags, enum DistributionEvent eventID);
BOOL SystemVars_CheckDistributionEvent(VarsFlags *varsFlags, enum DistributionEvent eventID);
void SystemVars_SetHiddenLocationMagic(VarsFlags *varsFlags, enum HiddenLocation hiddenLocation);
void SystemVars_ClearHiddenLocation(VarsFlags *varsFlags, enum HiddenLocation hiddenLocation);
BOOL SystemVars_CheckHiddenLocation(VarsFlags *varsFlags, enum HiddenLocation hiddenLocation);
BOOL SystemVars_ClearAmitySquareStepCount(VarsFlags *varsFlags);
u16 SystemVars_GetAmitySquareStepCount(VarsFlags *varsFlags);
BOOL SystemVars_IncrementAmitySquareStepCount(VarsFlags *varsFlags);
u16 SystemVars_GetNewsPressDeadline(VarsFlags *varsFlags);
BOOL SystemVars_SetNewsPressDeadline(VarsFlags *varsFlags, u16 param1);
u32 sub_0206B2A4(VarsFlags *varsFlags);
BOOL SystemVars_SetNewsPressDeadline(VarsFlags *varsFlags, u16 deadlineInDays);
void SystemVars_RandomizeJubilifeLotteryTrainerID(VarsFlags *varsFlags);
void SystemVars_SynchronizeJubilifeLotteryTrainerID(SaveData *param0, u16 param1);
void SystemVars_SynchronizeJubilifeLotteryTrainerID(SaveData *saveData, u16 trainerID);
u16 SystemVars_GetDailyRandomLevel(VarsFlags *varsFlags);
void SystemVars_SetDailyRandomLevel(SaveData *varsFlags);
void SystemVars_SetDailyRandomLevel(SaveData *saveData);
u16 SystemVars_GetSpiritombCounter(VarsFlags *varsFlags);
BOOL SystemVars_SetSpiritombCounter(VarsFlags *varsFlags, u16 param1);
BOOL SystemVars_SetSpiritombCounter(VarsFlags *varsFlags, u16 value);
u16 SystemVars_GetUndergroundTalkCounter(VarsFlags *varsFlags);
BOOL SystemVars_SetUndergroundTalkCounter(VarsFlags *varsFlags, u16 param1);
BOOL SystemVars_SetUndergroundTalkCounter(VarsFlags *varsFlags, u16 value);
u16 SystemVars_GetConsecutiveBonusRoundWins(VarsFlags *varsFlags);
BOOL SystemVars_SetConsecutiveBonusRoundWins(VarsFlags *varsFlags, u16 param1);
BOOL SystemVars_SetConsecutiveBonusRoundWins(VarsFlags *varsFlags, u16 wins);
BOOL SystemVars_IncrementDepartmentStoreRegularCount(VarsFlags *varsFlags);
u16 SystemVars_GetDepartmentStoreRegularCount(VarsFlags *varsFlags);
u16 SystemVars_GetUndergroundItemsGivenAway(VarsFlags *varsFlags);
BOOL SystemVars_SetUndergroundItemsGivenAway(VarsFlags *varsFlags, u16 param1);
BOOL SystemVars_SetUndergroundItemsGivenAway(VarsFlags *varsFlags, u16 value);
u16 SystemVars_GetUndergroundFossilsUnearthed(VarsFlags *varsFlags);
BOOL SystemVars_SetUndergroundFossilsUnearthed(VarsFlags *varsFlags, u16 param1);
BOOL SystemVars_SetUndergroundFossilsUnearthed(VarsFlags *varsFlags, u16 value);
u16 SystemVars_GetUndergroundTrapsSet(VarsFlags *varsFlags);
BOOL SystemVars_SetUndergroundTrapsSet(VarsFlags *varsFlags, u16 param1);
BOOL SystemVars_SetUndergroundTrapsSet(VarsFlags *varsFlags, u16 value);
u16 SystemVars_GetFriendshipStepCount(VarsFlags *varsFlags);
void SystemVars_SetFriendshipStepCount(VarsFlags *varsFlags, u16 param1);
void SystemVars_SetEternaGymFlowerClock(VarsFlags *varsFlags, u16 param1);
void SystemVars_SetFriendshipStepCount(VarsFlags *varsFlags, u16 value);
void SystemVars_SetEternaGymFlowerClock(VarsFlags *varsFlags, u16 state);
u16 SystemVars_GetEternaGymFlowerClock(VarsFlags *varsFlags);
void SystemVars_SetTotalTurnsForLastBattle(VarsFlags *varsFlags, u16 param1);
void SystemVars_SetTotalTurnsForLastBattle(VarsFlags *varsFlags, u16 turns);
void SystemVars_UpdateVillaVisitor(SaveData *varsFlags);
u16 SystemVars_GetBattleFactoryPrintState(VarsFlags *varsFlags);
u16 SystemVars_GetBattleHallPrintState(VarsFlags *varsFlags);
@@ -65,14 +75,14 @@ u16 SystemVars_GetBattleCastlePrintState(VarsFlags *varsFlags);
u16 SystemVars_GetBattleArcadePrintState(VarsFlags *varsFlags);
u16 SystemVars_GetBattleTowerPrintState(VarsFlags *varsFlags);
u16 SystemVars_GetDistortionWorldProgress(VarsFlags *varsFlags);
void SystemVars_SetDistortionWorldProgress(VarsFlags *varsFlags, u16 param1);
void SystemVars_SetDistortionWorldProgress(VarsFlags *varsFlags, u16 state);
u16 SystemVars_GetArceusEventState(VarsFlags *varsFlags);
void SystemVars_SetArceusEventState(VarsFlags *varsFlags, u16 param1);
void SystemVars_SetArceusEventState(VarsFlags *varsFlags, u16 state);
u16 SystemVars_GetShayminEventState(VarsFlags *varsFlags);
void SystemVars_SetShayminEventState(VarsFlags *varsFlags, u16 param1);
void SystemVars_SetRoamingSpeciesState(VarsFlags *varsFlags, u16 param1, u16 param2);
void SystemVars_SetShayminEventState(VarsFlags *varsFlags, u16 state);
void SystemVars_SetRoamingSpeciesState(VarsFlags *varsFlags, u16 species, u16 state);
u16 SystemVars_GetDistortionWorldCyrusApperanceState(VarsFlags *varsFlags);
void SystemVars_SetDistortionWorldCyrusApperanceState(VarsFlags *varsFlags, u16 param1);
void SystemVars_SetDistortionWorldCyrusApperanceState(VarsFlags *varsFlags, u16 state);
u16 SystemVars_GetWiFiFrontierCleared(VarsFlags *varsFlags);
#endif // POKEPLATINUM_UNK_0206AFE0_H
#endif // POKEPLATINUM_SYSTEM_VARS_H

View File

@@ -4,8 +4,6 @@
#include "generated/map_headers.h"
#include "generated/species.h"
#include "struct_decls/struct_0203A790_decl.h"
#include "field_overworld_state.h"
#include "location.h"
#include "math.h"
@@ -16,17 +14,17 @@
static BOOL TrySetVarToValue(VarsFlags *varsFlags, u16 varID, u16 value);
static u16 TryGetVarValue(VarsFlags *varsFlags, u16 varID);
static int GetDistributionEventMagicNumber(int eventID);
static int GetHiddenLocationMagicNumber(int eventID);
static void SetJubilifeLotteryTrainerID(VarsFlags *param0, u32 param1);
static BOOL SetDailyRandomLevel(VarsFlags *param0, u16 param1);
static int GetDistributionEventMagicNumber(enum DistributionEvent eventID);
static int GetHiddenLocationMagicNumber(enum HiddenLocation hiddenLocation);
static void SetJubilifeLotteryTrainerID(VarsFlags *varsFlags, u32 trainerID);
static BOOL SetDailyRandomLevel(VarsFlags *varsFlags, u16 level);
static u8 CalcVillaVisitorIndex(VarsFlags *varsFlags);
static void InitVillaVisitor(VarsFlags *param0, u16 param1);
static void SetRoamingCresseliaState(VarsFlags *param0, u16 param1);
static void SetRoamingMespritState(VarsFlags *param0, u16 param1);
static void SetRoamingMoltresState(VarsFlags *param0, u16 param1);
static void SetRoamingZapdosState(VarsFlags *param0, u16 param1);
static void SetRoamingArticunoState(VarsFlags *param0, u16 param1);
static void InitVillaVisitor(VarsFlags *varsFlags, u16 visitor);
static void SetRoamingCresseliaState(VarsFlags *varsFlags, u16 state);
static void SetRoamingMespritState(VarsFlags *varsFlags, u16 state);
static void SetRoamingMoltresState(VarsFlags *varsFlags, u16 state);
static void SetRoamingZapdosState(VarsFlags *varsFlags, u16 state);
static void SetRoamingArticunoState(VarsFlags *varsFlags, u16 state);
static BOOL TrySetVarToValue(VarsFlags *varsFlags, u16 varID, u16 value)
{
@@ -54,30 +52,30 @@ static u16 TryGetVarValue(VarsFlags *varsFlags, u16 varID)
return *varAddress;
}
BOOL SystemVars_SetPartnerTrainerID(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetPartnerTrainerID(VarsFlags *varsFlags, u16 trainerID)
{
return TrySetVarToValue(param0, (15 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_PARTNER_TRAINER_ID, trainerID);
}
u16 SystemVars_GetPartnerTrainerID(VarsFlags *param0)
u16 SystemVars_GetPartnerTrainerID(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (15 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_PARTNER_TRAINER_ID);
}
BOOL SystemVars_SetPlayerStarter(VarsFlags *var, u16 species)
BOOL SystemVars_SetPlayerStarter(VarsFlags *varsFlags, u16 species)
{
return TrySetVarToValue(var, (0 + SYSTEM_VARS_START), species);
return TrySetVarToValue(varsFlags, VAR_PLAYER_STARTER, species);
}
u16 SystemVars_GetPlayerStarter(VarsFlags *param0)
u16 SystemVars_GetPlayerStarter(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (0 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_PLAYER_STARTER);
}
u16 SystemVars_GetRivalStarter(VarsFlags *vars)
u16 SystemVars_GetRivalStarter(VarsFlags *varsFlags)
{
u16 rivalStarter;
u16 playerStarter = TryGetVarValue(vars, (0 + SYSTEM_VARS_START));
u16 playerStarter = TryGetVarValue(varsFlags, VAR_PLAYER_STARTER);
if (playerStarter == SPECIES_TURTWIG) {
rivalStarter = SPECIES_CHIMCHAR;
@@ -90,292 +88,287 @@ u16 SystemVars_GetRivalStarter(VarsFlags *vars)
return rivalStarter;
}
u16 SystemVars_GetPlayerCounterpartStarter(VarsFlags *param0)
u16 SystemVars_GetPlayerCounterpartStarter(VarsFlags *varsFlags)
{
u16 v0;
u16 v1 = TryGetVarValue(param0, (0 + SYSTEM_VARS_START));
u16 counterpartStarter;
u16 playerStarter = TryGetVarValue(varsFlags, VAR_PLAYER_STARTER);
if (v1 == 387) {
v0 = 393;
} else if (v1 == 390) {
v0 = 387;
if (playerStarter == SPECIES_TURTWIG) {
counterpartStarter = SPECIES_PIPLUP;
} else if (playerStarter == SPECIES_CHIMCHAR) {
counterpartStarter = SPECIES_TURTWIG;
} else {
v0 = 390;
counterpartStarter = SPECIES_CHIMCHAR;
}
return v0;
return counterpartStarter;
}
u16 SystemVars_GetSizeContestRecord(VarsFlags *param0)
u16 SystemVars_GetSizeContestRecord(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (5 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_SIZE_CONTEST_RECORD);
}
BOOL SystemVars_SetSizeContestRecord(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetSizeContestRecord(VarsFlags *varsFlags, u16 value)
{
return TrySetVarToValue(param0, (5 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_SIZE_CONTEST_RECORD, value);
}
void SystemVars_ResetVsSeeker(VarsFlags *param0)
void SystemVars_ResetVsSeeker(VarsFlags *varsFlags)
{
SystemFlag_ClearVsSeekerUsed(param0);
SystemVars_SetVsSeekerStepCount(param0, 0);
SystemFlag_ClearVsSeekerUsed(varsFlags);
SystemVars_SetVsSeekerStepCount(varsFlags, 0);
}
u16 SystemVars_GetVsSeekerBattery(VarsFlags *param0)
u16 SystemVars_GetVsSeekerBattery(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (3 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_VS_SEEKER_BATTERY_LEVEL);
}
BOOL SystemVars_SetVsSeekerBattery(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetVsSeekerBattery(VarsFlags *varsFlags, u16 battery)
{
return TrySetVarToValue(param0, (3 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_VS_SEEKER_BATTERY_LEVEL, battery);
}
u16 SystemVars_GetVsSeekerStepCount(VarsFlags *param0)
u16 SystemVars_GetVsSeekerStepCount(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (4 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_VS_SEEKER_STEP_COUNT);
}
BOOL SystemVars_SetVsSeekerStepCount(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetVsSeekerStepCount(VarsFlags *varsFlags, u16 stepCount)
{
return TrySetVarToValue(param0, (4 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_VS_SEEKER_STEP_COUNT, stepCount);
}
static const u16 sDistributionEventMagicNumbers[] = {
0x1209,
0x1112,
0x1123,
0x1103,
[DISTEVENT_DARKRAI] = 0x1209,
[DISTEVENT_SHAYMIN] = 0x1112,
[DISTEVENT_ARCEUS] = 0x1123,
[DISTEVENT_ROTOM] = 0x1103,
};
static int GetDistributionEventMagicNumber(int eventID)
static int GetDistributionEventMagicNumber(enum DistributionEvent eventID)
{
GF_ASSERT(0 <= eventID && eventID < NELEMS(sDistributionEventMagicNumbers));
GF_ASSERT(0 <= eventID && eventID < NELEMS(sDistributionEventMagicNumbers)); // Does not match as enum-literal
return sDistributionEventMagicNumbers[eventID];
}
void SystemVars_SetDistributionEventMagic(VarsFlags *param0, int param1)
void SystemVars_SetDistributionEventMagic(VarsFlags *varsFlags, enum DistributionEvent eventID)
{
TrySetVarToValue(param0, (19 + SYSTEM_VARS_START) + param1, GetDistributionEventMagicNumber(param1));
TrySetVarToValue(varsFlags, VAR_DISTRIBUTION_EVENT_DARKRAI + eventID, GetDistributionEventMagicNumber(eventID));
}
BOOL SystemVars_CheckDistributionEvent(VarsFlags *param0, int param1)
BOOL SystemVars_CheckDistributionEvent(VarsFlags *varsFlags, enum DistributionEvent eventID)
{
return TryGetVarValue(param0, (19 + SYSTEM_VARS_START) + param1) == GetDistributionEventMagicNumber(param1);
return TryGetVarValue(varsFlags, VAR_DISTRIBUTION_EVENT_DARKRAI + eventID) == GetDistributionEventMagicNumber(eventID);
}
static const u16 sHiddenLocationMagicNumbers[] = {
0x0208,
0x0229,
0x0312,
0x1028,
[HL_FULLMOONISLAND] = 0x0208,
[HL_NEWMOONISLAND] = 0x0229,
[HL_SPRINGPATH] = 0x0312,
[HL_SEABREAKPATH] = 0x1028,
};
static int GetHiddenLocationMagicNumber(int eventID)
static int GetHiddenLocationMagicNumber(enum HiddenLocation hiddenLocation)
{
GF_ASSERT(0 <= eventID && eventID < 4);
return sHiddenLocationMagicNumbers[eventID];
GF_ASSERT(0 <= hiddenLocation && hiddenLocation < HL_MAX);
return sHiddenLocationMagicNumbers[hiddenLocation];
}
void SystemVars_SetHiddenLocationMagic(VarsFlags *param0, int param1)
void SystemVars_SetHiddenLocationMagic(VarsFlags *varsFlags, enum HiddenLocation hiddenLocation)
{
TrySetVarToValue(param0, (6 + SYSTEM_VARS_START) + param1, GetHiddenLocationMagicNumber(param1));
TrySetVarToValue(varsFlags, VAR_HIDDEN_LOCATION_FULL_MOON_ISLAND + hiddenLocation, GetHiddenLocationMagicNumber(hiddenLocation));
}
void SystemVars_ClearHiddenLocation(VarsFlags *param0, int param1)
void SystemVars_ClearHiddenLocation(VarsFlags *varsFlags, enum HiddenLocation hiddenLocation)
{
TrySetVarToValue(param0, (6 + SYSTEM_VARS_START) + param1, 0);
TrySetVarToValue(varsFlags, VAR_HIDDEN_LOCATION_FULL_MOON_ISLAND + hiddenLocation, 0);
}
BOOL SystemVars_CheckHiddenLocation(VarsFlags *varFlags, int hiddenLocation)
BOOL SystemVars_CheckHiddenLocation(VarsFlags *varsFlags, enum HiddenLocation hiddenLocation)
{
return TryGetVarValue(varFlags, (6 + SYSTEM_VARS_START) + hiddenLocation) == GetHiddenLocationMagicNumber(hiddenLocation);
return TryGetVarValue(varsFlags, VAR_HIDDEN_LOCATION_FULL_MOON_ISLAND + hiddenLocation) == GetHiddenLocationMagicNumber(hiddenLocation);
}
BOOL SystemVars_ClearAmitySquareStepCount(VarsFlags *param0)
BOOL SystemVars_ClearAmitySquareStepCount(VarsFlags *varsFlags)
{
return TrySetVarToValue(param0, (10 + SYSTEM_VARS_START), 0);
return TrySetVarToValue(varsFlags, VAR_AMITY_SQUARE_STEP_COUNT, 0);
}
u16 SystemVars_GetAmitySquareStepCount(VarsFlags *param0)
u16 SystemVars_GetAmitySquareStepCount(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (10 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_AMITY_SQUARE_STEP_COUNT);
}
BOOL SystemVars_IncrementAmitySquareStepCount(VarsFlags *param0)
BOOL SystemVars_IncrementAmitySquareStepCount(VarsFlags *varsFlags)
{
u16 v0 = TryGetVarValue(param0, (10 + SYSTEM_VARS_START));
if (v0 < 10000) {
v0++;
u16 stepCount = TryGetVarValue(varsFlags, VAR_AMITY_SQUARE_STEP_COUNT);
if (stepCount < 10000) {
stepCount++;
} else {
v0 = 10000;
stepCount = 10000;
}
return TrySetVarToValue(param0, (10 + SYSTEM_VARS_START), v0);
return TrySetVarToValue(varsFlags, VAR_AMITY_SQUARE_STEP_COUNT, stepCount);
}
u16 SystemVars_GetNewsPressDeadline(VarsFlags *param0)
u16 SystemVars_GetNewsPressDeadline(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (11 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_NEWS_PRESS_DEADLINE);
}
BOOL SystemVars_SetNewsPressDeadline(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetNewsPressDeadline(VarsFlags *varsFlags, u16 deadlineInDays)
{
return TrySetVarToValue(param0, (11 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_NEWS_PRESS_DEADLINE, deadlineInDays);
}
static void SetJubilifeLotteryTrainerID(VarsFlags *param0, u32 param1)
static void SetJubilifeLotteryTrainerID(VarsFlags *varsFlags, u32 trainerID)
{
u16 v1 = (param1 >> 16) & 0xffff;
u16 v0 = param1 & 0xffff;
TrySetVarToValue(param0, (12 + SYSTEM_VARS_START), v0);
TrySetVarToValue(param0, (12 + SYSTEM_VARS_START), v1);
u16 hi = HI_HALF(trainerID);
u16 lo = LO_HALF(trainerID);
TrySetVarToValue(varsFlags, VAR_LOTTERY_TRAINER_ID_LOW_HALF, lo);
TrySetVarToValue(varsFlags, VAR_LOTTERY_TRAINER_ID_LOW_HALF, hi);
}
u32 SystemVars_GetJubilifeLotteryTrainerID(VarsFlags *param0)
u32 SystemVars_GetJubilifeLotteryTrainerID(VarsFlags *varsFlags)
{
u16 v0 = TryGetVarValue(param0, (12 + SYSTEM_VARS_START));
u16 v1 = TryGetVarValue(param0, (13 + SYSTEM_VARS_START));
return (v1 << 16) | v0;
u16 lo = TryGetVarValue(varsFlags, VAR_LOTTERY_TRAINER_ID_LOW_HALF);
u16 hi = TryGetVarValue(varsFlags, VAR_LOTTERY_TRAINER_ID_HIGH_HALF);
return HI_AND_LO(hi, lo);
}
void SystemVars_RandomizeJubilifeLotteryTrainerID(VarsFlags *param0)
void SystemVars_RandomizeJubilifeLotteryTrainerID(VarsFlags *varsFlags)
{
u16 v0 = LCRNG_Next();
u16 v1 = LCRNG_Next();
SetJubilifeLotteryTrainerID(param0, (v1 << 16) | v0);
u16 loRand = LCRNG_Next();
u16 hiRand = LCRNG_Next();
SetJubilifeLotteryTrainerID(varsFlags, HI_AND_LO(hiRand, loRand));
}
void SystemVars_SynchronizeJubilifeLotteryTrainerID(SaveData *param0, u16 param1)
void SystemVars_SynchronizeJubilifeLotteryTrainerID(SaveData *saveData, u16 trainerID)
{
VarsFlags *v0 = SaveData_GetVarsFlags(param0);
u32 v1 = RecordMixedRNG_GetRand(SaveData_GetRecordMixedRNG(param0)) * 1103515245L + 12345;
SetJubilifeLotteryTrainerID(v0, v1);
VarsFlags *varsFlags = SaveData_GetVarsFlags(saveData);
u32 recordMixedRand = RecordMixedRNG_GetRand(SaveData_GetRecordMixedRNG(saveData)) * 1103515245L + 12345;
SetJubilifeLotteryTrainerID(varsFlags, recordMixedRand);
}
u16 SystemVars_GetDailyRandomLevel(VarsFlags *param0)
u16 SystemVars_GetDailyRandomLevel(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (17 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_DAILY_RANDOM_LEVEL);
}
static BOOL SetDailyRandomLevel(VarsFlags *param0, u16 param1)
static BOOL SetDailyRandomLevel(VarsFlags *varsFlags, u16 level)
{
return TrySetVarToValue(param0, (17 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_DAILY_RANDOM_LEVEL, level);
}
void SystemVars_SetDailyRandomLevel(SaveData *param0)
void SystemVars_SetDailyRandomLevel(SaveData *saveData)
{
VarsFlags *v0 = SaveData_GetVarsFlags(param0);
u32 v1 = (LCRNG_Next() % 98) + 2;
SetDailyRandomLevel(v0, v1);
VarsFlags *varsFlags = SaveData_GetVarsFlags(saveData);
u32 level = (LCRNG_Next() % 98) + 2;
SetDailyRandomLevel(varsFlags, level);
}
u16 SystemVars_GetSpiritombCounter(VarsFlags *param0)
u16 SystemVars_GetSpiritombCounter(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (14 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_SPIRITOMB_COUNTER);
}
BOOL SystemVars_SetSpiritombCounter(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetSpiritombCounter(VarsFlags *varsFlags, u16 value)
{
return TrySetVarToValue(param0, (14 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_SPIRITOMB_COUNTER, value);
}
u16 SystemVars_GetUndergroundTalkCounter(VarsFlags *param0)
u16 SystemVars_GetUndergroundTalkCounter(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (25 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_UNDERGROUND_TALK_COUNTER);
}
BOOL SystemVars_SetUndergroundTalkCounter(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetUndergroundTalkCounter(VarsFlags *varsFlags, u16 value)
{
return TrySetVarToValue(param0, (25 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_UNDERGROUND_TALK_COUNTER, value);
}
u16 SystemVars_GetConsecutiveBonusRoundWins(VarsFlags *param0)
u16 SystemVars_GetConsecutiveBonusRoundWins(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (16 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_CONSECUTIVE_BONUS_ROUND_WINS);
}
BOOL SystemVars_SetConsecutiveBonusRoundWins(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetConsecutiveBonusRoundWins(VarsFlags *varsFlags, u16 wins)
{
return TrySetVarToValue(param0, (16 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_CONSECUTIVE_BONUS_ROUND_WINS, wins);
}
BOOL SystemVars_IncrementDepartmentStoreRegularCount(VarsFlags *param0)
BOOL SystemVars_IncrementDepartmentStoreRegularCount(VarsFlags *varsFlags)
{
u16 v0 = TryGetVarValue(param0, (18 + SYSTEM_VARS_START));
if (v0 < 10000) {
v0++;
u16 counter = TryGetVarValue(varsFlags, VAR_DEPARTMENT_STORE_REGULAR_COUNTER);
if (counter < 10000) {
counter++;
} else {
v0 = 10000;
counter = 10000;
}
return TrySetVarToValue(param0, (18 + SYSTEM_VARS_START), v0);
return TrySetVarToValue(varsFlags, VAR_DEPARTMENT_STORE_REGULAR_COUNTER, counter);
}
u16 SystemVars_GetDepartmentStoreRegularCount(VarsFlags *param0)
u16 SystemVars_GetDepartmentStoreRegularCount(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (18 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_DEPARTMENT_STORE_REGULAR_COUNTER);
}
u16 SystemVars_GetUndergroundItemsGivenAway(VarsFlags *param0)
u16 SystemVars_GetUndergroundItemsGivenAway(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (36 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_UNDERGROUND_ITEMS_GIVEN_AWAY);
}
BOOL SystemVars_SetUndergroundItemsGivenAway(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetUndergroundItemsGivenAway(VarsFlags *varsFlags, u16 value)
{
return TrySetVarToValue(param0, (36 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_UNDERGROUND_ITEMS_GIVEN_AWAY, value);
}
u16 SystemVars_GetUndergroundFossilsUnearthed(VarsFlags *param0)
u16 SystemVars_GetUndergroundFossilsUnearthed(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (23 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_UNDERGROUND_FOSSILS_UNEARTHED);
}
BOOL SystemVars_SetUndergroundFossilsUnearthed(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetUndergroundFossilsUnearthed(VarsFlags *varsFlags, u16 value)
{
return TrySetVarToValue(param0, (23 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_UNDERGROUND_FOSSILS_UNEARTHED, value);
}
u16 SystemVars_GetUndergroundTrapsSet(VarsFlags *param0)
u16 SystemVars_GetUndergroundTrapsSet(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (24 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_UNDERGROUND_TRAPS_SET);
}
BOOL SystemVars_SetUndergroundTrapsSet(VarsFlags *param0, u16 param1)
BOOL SystemVars_SetUndergroundTrapsSet(VarsFlags *varsFlags, u16 value)
{
return TrySetVarToValue(param0, (24 + SYSTEM_VARS_START), param1);
return TrySetVarToValue(varsFlags, VAR_UNDERGROUND_TRAPS_SET, value);
}
u16 SystemVars_GetFriendshipStepCount(VarsFlags *param0)
u16 SystemVars_GetFriendshipStepCount(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (26 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_FRIENDSHIP_INCREMENT_STEP_COUNTER);
}
void SystemVars_SetFriendshipStepCount(VarsFlags *param0, u16 param1)
void SystemVars_SetFriendshipStepCount(VarsFlags *varsFlags, u16 value)
{
TrySetVarToValue(param0, (26 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_FRIENDSHIP_INCREMENT_STEP_COUNTER, value);
}
void SystemVars_SetEternaGymFlowerClock(VarsFlags *param0, u16 param1)
void SystemVars_SetEternaGymFlowerClock(VarsFlags *varsFlags, u16 state)
{
TrySetVarToValue(param0, (27 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_ETERNA_GYM_FLOWER_CLOCK_STATE, state);
}
u16 SystemVars_GetEternaGymFlowerClock(VarsFlags *param0)
u16 SystemVars_GetEternaGymFlowerClock(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (27 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_ETERNA_GYM_FLOWER_CLOCK_STATE);
}
void SystemVars_SetTotalTurnsForLastBattle(VarsFlags *param0, u16 param1)
void SystemVars_SetTotalTurnsForLastBattle(VarsFlags *varsFlags, u16 turns)
{
TrySetVarToValue(param0, (29 + SYSTEM_VARS_START), (param1 + 1));
TrySetVarToValue(varsFlags, VAR_TOTAL_TURNS_LAST_BATTLE, turns + 1);
}
static const u8 sVillaVisitorPercentChances[] = {
@@ -419,141 +412,141 @@ static u8 CalcVillaVisitorIndex(VarsFlags *varsFlags)
return rngPercent;
}
void SystemVars_UpdateVillaVisitor(SaveData *param0)
void SystemVars_UpdateVillaVisitor(SaveData *saveData)
{
VarsFlags *v1 = SaveData_GetVarsFlags(param0);
FieldOverworldState *fieldState = SaveData_GetFieldOverworldState(param0);
VarsFlags *varsFlags = SaveData_GetVarsFlags(saveData);
FieldOverworldState *fieldState = SaveData_GetFieldOverworldState(saveData);
Location *location = FieldOverworldState_GetPlayerLocation(fieldState);
if ((location->mapId != MAP_HEADER_RESORT_AREA) && (location->mapId != MAP_HEADER_VILLA)) {
SystemFlag_ClearVillaVisitorInside(v1);
SystemFlag_ClearVillaVisitorOutside(v1);
InitVillaVisitor(v1, CalcVillaVisitorIndex(v1));
if (location->mapId != MAP_HEADER_RESORT_AREA && location->mapId != MAP_HEADER_VILLA) {
SystemFlag_ClearVillaVisitorInside(varsFlags);
SystemFlag_ClearVillaVisitorOutside(varsFlags);
InitVillaVisitor(varsFlags, CalcVillaVisitorIndex(varsFlags));
}
return;
}
static void InitVillaVisitor(VarsFlags *param0, u16 param1)
static void InitVillaVisitor(VarsFlags *varsFlags, u16 visitor)
{
TrySetVarToValue(param0, (30 + SYSTEM_VARS_START), param1);
TrySetVarToValue(param0, (42 + SYSTEM_VARS_START), (LCRNG_Next() % 5));
TrySetVarToValue(varsFlags, VAR_RESORT_VILLA_VISITOR, visitor);
TrySetVarToValue(varsFlags, VAR_RESORT_VILLA_VISITOR_MESSAGE_NUM, LCRNG_Next() % 5);
}
u16 SystemVars_GetBattleFactoryPrintState(VarsFlags *param0)
u16 SystemVars_GetBattleFactoryPrintState(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (32 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_BATTLE_FACTORY_PRINT_STATE);
}
u16 SystemVars_GetBattleHallPrintState(VarsFlags *param0)
u16 SystemVars_GetBattleHallPrintState(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (33 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_BATTLE_HALL_PRINT_STATE);
}
u16 SystemVars_GetBattleCastlePrintState(VarsFlags *param0)
u16 SystemVars_GetBattleCastlePrintState(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (34 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_BATTLE_CASTLE_PRINT_STATE);
}
u16 SystemVars_GetBattleArcadePrintState(VarsFlags *param0)
u16 SystemVars_GetBattleArcadePrintState(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (35 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_BATTLE_ARCADE_PRINT_STATE);
}
u16 SystemVars_GetBattleTowerPrintState(VarsFlags *param0)
u16 SystemVars_GetBattleTowerPrintState(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (31 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_BATTLE_TOWER_PRINT_STATE);
}
u16 SystemVars_GetDistortionWorldProgress(VarsFlags *param0)
u16 SystemVars_GetDistortionWorldProgress(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (37 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_DISTORTION_WORLD_PROGRESS);
}
void SystemVars_SetDistortionWorldProgress(VarsFlags *param0, u16 param1)
void SystemVars_SetDistortionWorldProgress(VarsFlags *varsFlags, u16 state)
{
TrySetVarToValue(param0, (37 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_DISTORTION_WORLD_PROGRESS, state);
}
u16 SystemVars_GetArceusEventState(VarsFlags *param0)
u16 SystemVars_GetArceusEventState(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (38 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_ARCEUS_EVENT_STATE);
}
void SystemVars_SetArceusEventState(VarsFlags *param0, u16 param1)
void SystemVars_SetArceusEventState(VarsFlags *varsFlags, u16 state)
{
TrySetVarToValue(param0, (38 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_ARCEUS_EVENT_STATE, state);
}
u16 SystemVars_GetShayminEventState(VarsFlags *param0)
u16 SystemVars_GetShayminEventState(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (39 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_SHAYMIN_EVENT_STATE);
}
void SystemVars_SetShayminEventState(VarsFlags *param0, u16 param1)
void SystemVars_SetShayminEventState(VarsFlags *varsFlags, u16 state)
{
TrySetVarToValue(param0, (39 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_SHAYMIN_EVENT_STATE, state);
}
static void SetRoamingCresseliaState(VarsFlags *param0, u16 param1)
static void SetRoamingCresseliaState(VarsFlags *varsFlags, u16 state)
{
TrySetVarToValue(param0, (40 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_ROAMING_CRESSELIA_STATE, state);
}
static void SetRoamingMespritState(VarsFlags *param0, u16 param1)
static void SetRoamingMespritState(VarsFlags *varsFlags, u16 state)
{
TrySetVarToValue(param0, (41 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_ROAMING_MESPRIT_STATE, state);
}
static void SetRoamingMoltresState(VarsFlags *param0, u16 param1)
static void SetRoamingMoltresState(VarsFlags *varsFlags, u16 state)
{
TrySetVarToValue(param0, (46 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_ROAMING_MOLTRES_STATE, state);
}
static void SetRoamingZapdosState(VarsFlags *param0, u16 param1)
static void SetRoamingZapdosState(VarsFlags *varsFlags, u16 state)
{
TrySetVarToValue(param0, (47 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_ROAMING_ZAPDOS_STATE, state);
}
static void SetRoamingArticunoState(VarsFlags *param0, u16 param1)
static void SetRoamingArticunoState(VarsFlags *varsFlags, u16 state)
{
TrySetVarToValue(param0, (48 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_ROAMING_ARTICUNO_STATE, state);
}
void SystemVars_SetRoamingSpeciesState(VarsFlags *param0, u16 param1, u16 param2)
void SystemVars_SetRoamingSpeciesState(VarsFlags *varsFlags, u16 species, u16 state)
{
switch (param1) {
case 481:
SetRoamingMespritState(param0, param2);
switch (species) {
case SPECIES_MESPRIT:
SetRoamingMespritState(varsFlags, state);
break;
case 488:
SetRoamingCresseliaState(param0, param2);
case SPECIES_CRESSELIA:
SetRoamingCresseliaState(varsFlags, state);
break;
case 146:
SetRoamingMoltresState(param0, param2);
case SPECIES_MOLTRES:
SetRoamingMoltresState(varsFlags, state);
break;
case 145:
SetRoamingZapdosState(param0, param2);
case SPECIES_ZAPDOS:
SetRoamingZapdosState(varsFlags, state);
break;
case 144:
SetRoamingArticunoState(param0, param2);
case SPECIES_ARTICUNO:
SetRoamingArticunoState(varsFlags, state);
break;
}
return;
}
u16 SystemVars_GetDistortionWorldCyrusApperanceState(VarsFlags *param0)
u16 SystemVars_GetDistortionWorldCyrusApperanceState(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (43 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_DISTORTION_WORLD_CYRUS_APPEARANCE);
}
void SystemVars_SetDistortionWorldCyrusApperanceState(VarsFlags *param0, u16 param1)
void SystemVars_SetDistortionWorldCyrusApperanceState(VarsFlags *varsFlags, u16 state)
{
TrySetVarToValue(param0, (43 + SYSTEM_VARS_START), param1);
TrySetVarToValue(varsFlags, VAR_DISTORTION_WORLD_CYRUS_APPEARANCE, state);
}
u16 SystemVars_GetWiFiFrontierCleared(VarsFlags *param0)
u16 SystemVars_GetWiFiFrontierCleared(VarsFlags *varsFlags)
{
return TryGetVarValue(param0, (52 + SYSTEM_VARS_START));
return TryGetVarValue(varsFlags, VAR_WIFI_FRONTIER_CLEARED);
}