mirror of
https://github.com/pret/pokeruby.git
synced 2026-09-28 22:50:41 -04:00
119 lines
1.9 KiB
C
119 lines
1.9 KiB
C
#include "global.h"
|
|
#include "event_data.h"
|
|
#include "pokemon.h"
|
|
#include "rng.h"
|
|
#include "rom4.h"
|
|
#include "rtc.h"
|
|
#include "script.h"
|
|
#include "task.h"
|
|
|
|
extern bool8 sub_807DDFC(void);
|
|
|
|
u32 GetMirageRnd(void)
|
|
{
|
|
u32 hi = VarGet(VAR_MIRAGE_RND_H);
|
|
u32 lo = VarGet(VAR_MIRAGE_RND_L);
|
|
return (hi << 16) | lo;
|
|
}
|
|
|
|
void SetMirageRnd(u32 rnd)
|
|
{
|
|
VarSet(VAR_MIRAGE_RND_H, rnd >> 16);
|
|
VarSet(VAR_MIRAGE_RND_L, rnd);
|
|
}
|
|
|
|
// unused
|
|
void InitMirageRnd(void)
|
|
{
|
|
SetMirageRnd((Random() << 16) | Random());
|
|
}
|
|
|
|
void UpdateMirageRnd(u16 days)
|
|
{
|
|
s32 rnd = GetMirageRnd();
|
|
while (days)
|
|
{
|
|
rnd = 1103515245 * rnd + 12345;
|
|
days--;
|
|
}
|
|
SetMirageRnd(rnd);
|
|
}
|
|
|
|
bool8 IsMirageIslandPresent(void)
|
|
{
|
|
u16 rnd = GetMirageRnd() >> 16;
|
|
int i;
|
|
|
|
for (i = 0; i < PARTY_SIZE; i++)
|
|
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && (GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY) & 0xFFFF) == rnd)
|
|
return TRUE;
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
void UpdateShoalTideFlag(void)
|
|
{
|
|
static const u8 tide[] =
|
|
{
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
1,
|
|
1,
|
|
};
|
|
|
|
if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()))
|
|
{
|
|
RtcCalcLocalTime();
|
|
if (tide[gLocalTime.hours])
|
|
FlagSet(SYS_SHOAL_TIDE);
|
|
else
|
|
FlagReset(SYS_SHOAL_TIDE);
|
|
}
|
|
}
|
|
|
|
static void Task_WaitWeather(u8 taskId)
|
|
{
|
|
if (sub_807DDFC())
|
|
{
|
|
EnableBothScriptContexts();
|
|
DestroyTask(taskId);
|
|
}
|
|
}
|
|
|
|
void WaitWeather(void)
|
|
{
|
|
CreateTask(Task_WaitWeather, 80);
|
|
}
|
|
|
|
void InitBirchState(void)
|
|
{
|
|
*(u16 *)GetVarPointer(VAR_BIRCH_STATE) = 0;
|
|
}
|
|
|
|
void UpdateBirchState(u16 days)
|
|
{
|
|
u16 *state = GetVarPointer(VAR_BIRCH_STATE);
|
|
*state += days;
|
|
*state %= 7;
|
|
}
|