summaryrefslogtreecommitdiff
path: root/src/field/field_specials.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/field/field_specials.c')
-rw-r--r--src/field/field_specials.c2381
1 files changed, 0 insertions, 2381 deletions
diff --git a/src/field/field_specials.c b/src/field/field_specials.c
deleted file mode 100644
index e56d9ddbb..000000000
--- a/src/field/field_specials.c
+++ /dev/null
@@ -1,2381 +0,0 @@
-#include "global.h"
-#include "field_specials.h"
-#include "diploma.h"
-#include "fieldmap.h"
-#include "event_data.h"
-#include "battle_tower.h"
-#include "field_map_obj.h"
-#include "region_map.h"
-#include "field_region_map.h"
-#include "field_message_box.h"
-#include "field_camera.h"
-#include "field_player_avatar.h"
-#include "main.h"
-#include "constants/maps.h"
-#include "overworld.h"
-#include "script.h"
-#include "constants/songs.h"
-#include "string_util.h"
-#include "strings.h"
-#include "pokeblock.h"
-#include "constants/species.h"
-#include "constants/abilities.h"
-#include "constants/moves.h"
-#include "text.h"
-#include "wallclock.h"
-#include "tv.h"
-#include "rtc.h"
-#include "link.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "menu.h"
-#include "starter_choose.h"
-#include "menu_helpers.h"
-#include "battle_tower.h"
-#include "field_weather.h"
-#include "pokemon_summary_screen.h"
-#include "random.h"
-
-#if ENGLISH
-#define CHAR_DECIMAL_SEPARATOR CHAR_PERIOD
-#elif GERMAN
-#define CHAR_DECIMAL_SEPARATOR CHAR_COMMA
-#endif
-
-extern struct WarpData gUnknown_020297F0;
-extern u8 gBattleOutcome;
-extern u16 gSpecialVar_0x8004;
-extern u16 gSpecialVar_0x8005;
-extern u16 gSpecialVar_Result;
-
-extern u8 *const gUnknown_083D1464[3];
-
-EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
-EWRAM_DATA u8 gBikeCollisions = 0;
-EWRAM_DATA u32 gBikeCyclingTimer = 0;
-EWRAM_DATA u8 gUnknown_02039258 = 0;
-EWRAM_DATA u8 gUnknown_02039259 = 0;
-EWRAM_DATA u8 gUnknown_0203925A = 0;
-EWRAM_DATA u8 gUnknown_0203925B = 0;
-EWRAM_DATA u8 gUnknown_0203925C = 0;
-
-static void RecordCyclingRoadResults(u32, u8);
-
-static struct ElevatorMenu gUnknown_03000760[20];
-
-void ScrSpecial_ShowDiploma(void)
-{
- SetMainCallback2(CB2_ShowDiploma);
- ScriptContext2_Enable();
-}
-
-void ScrSpecial_ViewWallClock(void)
-{
- gMain.savedCallback = c2_exit_to_overworld_2_switch;
- SetMainCallback2(CB2_ViewWallClock);
- ScriptContext2_Enable();
-}
-
-void ResetCyclingRoadChallengeData(void)
-{
- gBikeCyclingChallenge = FALSE;
- gBikeCollisions = 0;
- gBikeCyclingTimer = 0;
-}
-
-void ScrSpecial_BeginCyclingRoadChallenge(void)
-{
- gBikeCyclingChallenge = TRUE;
- gBikeCollisions = 0;
- gBikeCyclingTimer = gMain.vblankCounter1;
-}
-
-u16 GetPlayerAvatarBike(void)
-{
- if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE))
- return 1;
- if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
- return 2;
- return 0;
-}
-
-static void DetermineCyclingRoadResults(u32 numFrames, u8 numBikeCollisions)
-{
- u8 result;
-
- if (numBikeCollisions <= 99)
- {
- ConvertIntToDecimalStringN(gStringVar1, numBikeCollisions, STR_CONV_MODE_LEFT_ALIGN, 2);
- StringAppend(gStringVar1, gOtherText_Times);
- }
- else
- {
- StringCopy(gStringVar1, gOtherText_99Times);
- }
-
- if (numFrames < 3600)
- {
- ConvertIntToDecimalStringN(gStringVar2, numFrames / 60, STR_CONV_MODE_RIGHT_ALIGN, 2);
- gStringVar2[2] = CHAR_DECIMAL_SEPARATOR;
- ConvertIntToDecimalStringN(&gStringVar2[3], ((numFrames % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2);
- StringAppend(gStringVar2, gOtherText_Seconds);
- }
- else
- {
- StringCopy(gStringVar2, gOtherText_1Minute);
- }
-
- result = 0;
- if (numBikeCollisions == 0)
- {
- result = 5;
- }
- else if (numBikeCollisions < 4)
- {
- result = 4;
- }
- else if (numBikeCollisions < 10)
- {
- result = 3;
- }
- else if (numBikeCollisions < 20)
- {
- result = 2;
- }
- else if (numBikeCollisions < 100)
- {
- result = 1;
- }
-
- if (numFrames / 60 <= 10)
- {
- result += 5;
- }
- else if (numFrames / 60 <= 15)
- {
- result += 4;
- }
- else if (numFrames / 60 <= 20)
- {
- result += 3;
- }
- else if (numFrames / 60 <= 40)
- {
- result += 2;
- }
- else if (numFrames / 60 < 60)
- {
- result += 1;
- }
-
-
- gSpecialVar_Result = result;
-}
-
-void FinishCyclingRoadChallenge(void) {
- const u32 numFrames = gMain.vblankCounter1 - gBikeCyclingTimer;
-
- DetermineCyclingRoadResults(numFrames, gBikeCollisions);
- RecordCyclingRoadResults(numFrames, gBikeCollisions);
-}
-
-static void RecordCyclingRoadResults(u32 numFrames, u8 numBikeCollisions) {
- u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L);
- u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H);
- u32 framesRecord = low + (high << 16);
-
- if (framesRecord > numFrames || framesRecord == 0)
- {
- VarSet(VAR_CYCLING_ROAD_RECORD_TIME_L, numFrames);
- VarSet(VAR_CYCLING_ROAD_RECORD_TIME_H, numFrames >> 16);
- VarSet(VAR_CYCLING_ROAD_RECORD_COLLISIONS, numBikeCollisions);
- }
-}
-
-u16 GetRecordedCyclingRoadResults(void) {
- u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L);
- u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H);
- u32 framesRecord = low + (high << 16);
-
- if (framesRecord == 0)
- {
- return FALSE;
- }
-
- DetermineCyclingRoadResults(framesRecord, VarGet(VAR_CYCLING_ROAD_RECORD_COLLISIONS));
- return TRUE;
-}
-
-void UpdateCyclingRoadState(void) {
- if (gUnknown_020297F0.mapNum == MAP_NUM(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) && gUnknown_020297F0.mapGroup == MAP_GROUP(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE))
- {
- return;
- }
-
- if (VarGet(VAR_CYCLING_CHALLENGE_STATE) == 2 || VarGet(VAR_CYCLING_CHALLENGE_STATE) == 3)
- {
- VarSet(VAR_CYCLING_CHALLENGE_STATE, 0);
- Overworld_SetSavedMusic(SE_STOP);
- }
-}
-
-void SetSSTidalFlag(void)
-{
- FlagSet(FLAG_SYS_CRUISE_MODE);
- *GetVarPointer(VAR_CRUISE_STEP_COUNT) = 0;
-}
-
-void ResetSSTidalFlag(void)
-{
- FlagClear(FLAG_SYS_CRUISE_MODE);
-}
-
-bool32 CountSSTidalStep(u16 delta)
-{
- if (!FlagGet(FLAG_SYS_CRUISE_MODE) || (*GetVarPointer(VAR_CRUISE_STEP_COUNT) += delta) <= 0xcc)
- {
- return FALSE;
- }
- return TRUE;
-}
-
-u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
-{
- u16 *varCruiseStepCount = GetVarPointer(VAR_CRUISE_STEP_COUNT);
- switch (*GetVarPointer(VAR_PORTHOLE_STATE))
- {
- case 1:
- case 8:
- return 1;
- case 3:
- case 9:
- return 4;
- case 4:
- case 5:
- return 2;
- case 6:
- case 10:
- return 3;
- case 2:
- if (*varCruiseStepCount < 60)
- {
- *mapNum = MAP_NUM(ROUTE134);
- *x = *varCruiseStepCount + 19;
- }
- else if (*varCruiseStepCount < 140)
- {
- *mapNum = MAP_NUM(ROUTE133);
- *x = *varCruiseStepCount - 60;
- }
- else
- {
- *mapNum = MAP_NUM(ROUTE132);
- *x = *varCruiseStepCount - 140;
- }
- break;
- case 7:
- if (*varCruiseStepCount < 66)
- {
- *mapNum = MAP_NUM(ROUTE132);
- *x = 65 - *varCruiseStepCount;
- }
- else if (*varCruiseStepCount < 146) {
- *mapNum = MAP_NUM(ROUTE133);
- *x = 145 - *varCruiseStepCount;
- }
- else
- {
- *mapNum = MAP_NUM(ROUTE134);
- *x = 224 - *varCruiseStepCount;
- }
- break;
- }
- *mapGroup = MAP_GROUP(ROUTE132);
- *y = 20;
- return 0;
-}
-
-u8 GetLinkPartnerNames(void)
-{
- u8 i;
- u8 j = 0;
- u8 myLinkPlayerNumber = sub_8008218();
- u8 nLinkPlayers = sub_800820C();
- for (i=0; i<nLinkPlayers; i++)
- {
- if (myLinkPlayerNumber != i)
- {
- StringCopy(gUnknown_083D1464[j], gLinkPlayers[i].name);
- j++;
- }
- }
- return nLinkPlayers;
-}
-
-void SpawnBerryBlenderLinkPlayerSprites(void)
-{
- u8 j = 0;
- s16 x = 0;
- s16 y = 0;
- u8 unknown_083F8358[] = {7, 9, 8, 10};
- s8 unknown_083F835C[][2] = {
- { 0, 1},
- { 1, 0},
- { 0, -1},
- {-1, 0}
- };
- u8 myLinkPlayerNumber;
- u8 playerDirectionLowerNybble;
- u8 rivalAvatarGraphicsId;
- u8 i;
-
- myLinkPlayerNumber = sub_8008218();
- playerDirectionLowerNybble = player_get_direction_lower_nybble();
- switch (playerDirectionLowerNybble)
- {
- case DIR_WEST:
- j = 2;
- x = gSaveBlock1.pos.x - 1;
- y = gSaveBlock1.pos.y;
- break;
- case DIR_NORTH:
- j = 1;
- x = gSaveBlock1.pos.x;
- y = gSaveBlock1.pos.y - 1;
- break;
- case DIR_EAST:
- x = gSaveBlock1.pos.x + 1;
- y = gSaveBlock1.pos.y;
- break;
- case DIR_SOUTH:
- j = 3;
- x = gSaveBlock1.pos.x;
- y = gSaveBlock1.pos.y + 1;
- }
- for (i=0; i<gSpecialVar_0x8004; i++)
- {
- if (myLinkPlayerNumber != i)
- {
- rivalAvatarGraphicsId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, gLinkPlayers[i].gender);
- SpawnSpecialFieldObjectParametrized(rivalAvatarGraphicsId, unknown_083F8358[j], 0xf0 - i, unknown_083F835C[j][0] + x + 7, unknown_083F835C[j][1] + y + 7, 0);
- j++;
- if (j == 4)
- {
- j = 0;
- }
- }
- }
-}
-
-struct Coords8 {
- u8 x;
- u8 y;
-};
-
-const struct Coords8 gUnknown_083F8364[3] = {
- { 7, 16},
- {15, 18},
- {11, 22}
-};
-
-void MauvilleGymSpecial1(void)
-{
- u8 i;
- for (i=0; i<3; i++)
- {
- if (i == gSpecialVar_0x8004)
- {
- MapGridSetMetatileIdAt(gUnknown_083F8364[i].x, gUnknown_083F8364[i].y, 0x206);
- }
- else
- {
- MapGridSetMetatileIdAt(gUnknown_083F8364[i].x, gUnknown_083F8364[i].y, 0x205);
- }
- }
-}
-
-void MauvilleGymSpecial2(void)
-{
- int x, y;
- for (y=12; y<24; y++)
- {
- for (x=7; x<16; x++)
- {
- switch (MapGridGetMetatileIdAt(x, y))
- {
- case 0x220:
- MapGridSetMetatileIdAt(x, y, 0x230);
- break;
- case 0x221:
- MapGridSetMetatileIdAt(x, y, 0x231);
- break;
- case 0x228:
- MapGridSetMetatileIdAt(x, y, 0x238);
- break;
- case 0x229:
- MapGridSetMetatileIdAt(x, y, 0x239);
- break;
- case 0x230:
- MapGridSetMetatileIdAt(x, y, 0x220);
- break;
- case 0x231:
- MapGridSetMetatileIdAt(x, y, 0x221);
- break;
- case 0x238:
- MapGridSetMetatileIdAt(x, y, 0xe28);
- break;
- case 0x239:
- MapGridSetMetatileIdAt(x, y, 0xe29);
- break;
- case 0x222:
- MapGridSetMetatileIdAt(x, y, 0x232);
- break;
- case 0x223:
- MapGridSetMetatileIdAt(x, y, 0x233);
- break;
- case 0x22a:
- MapGridSetMetatileIdAt(x, y, 0x23a);
- break;
- case 0x22b:
- MapGridSetMetatileIdAt(x, y, 0x23b);
- break;
- case 0x232:
- MapGridSetMetatileIdAt(x, y, 0x222);
- break;
- case 0x233:
- MapGridSetMetatileIdAt(x, y, 0x223);
- break;
- case 0x23a:
- MapGridSetMetatileIdAt(x, y, 0xe2a);
- break;
- case 0x23b:
- MapGridSetMetatileIdAt(x, y, 0xe2b);
- break;
- case 0x240:
- MapGridSetMetatileIdAt(x, y, 0xe42);
- break;
- case 0x248:
- MapGridSetMetatileIdAt(x, y, 0x21a);
- break;
- case 0x241:
- MapGridSetMetatileIdAt(x, y, 0xe43);
- break;
- case 0x249:
- MapGridSetMetatileIdAt(x, y, 0x21a);
- break;
- case 0x242:
- MapGridSetMetatileIdAt(x, y, 0xe40);
- break;
- case 0x21a:
- if (MapGridGetMetatileIdAt(x, y - 1) == 0x240)
- {
- MapGridSetMetatileIdAt(x, y, 0xe48);
- }
- else
- {
- MapGridSetMetatileIdAt(x, y, 0xe49);
- }
- break;
- case 0x243:
- MapGridSetMetatileIdAt(x, y, 0xe41);
- break;
- case 0x251:
- MapGridSetMetatileIdAt(x, y, 0xe50);
- break;
- case 0x250:
- MapGridSetMetatileIdAt(x, y, 0x251);
- break;
- }
- }
- }
-}
-
-void MauvilleGymSpecial3(void)
-{
- int i, x, y;
- const struct Coords8 *switchCoords = gUnknown_083F8364;
- for (i=ARRAY_COUNT(gUnknown_083F8364)-1; i>=0; i--)
- {
- MapGridSetMetatileIdAt(switchCoords->x, switchCoords->y, 0x206);
- switchCoords++;
- }
- for (y=12; y<24; y++)
- {
- for (x=7; x<16; x++)
- {
- switch (MapGridGetMetatileIdAt(x, y))
- {
- case 0x220:
- MapGridSetMetatileIdAt(x, y, 0x230);
- break;
- case 0x221:
- MapGridSetMetatileIdAt(x, y, 0x231);
- break;
- case 0x228:
- MapGridSetMetatileIdAt(x, y, 0x238);
- break;
- case 0x229:
- MapGridSetMetatileIdAt(x, y, 0x239);
- break;
- case 0x222:
- MapGridSetMetatileIdAt(x, y, 0x232);
- break;
- case 0x223:
- MapGridSetMetatileIdAt(x, y, 0x233);
- break;
- case 0x22a:
- MapGridSetMetatileIdAt(x, y, 0x23a);
- break;
- case 0x22b:
- MapGridSetMetatileIdAt(x, y, 0x23b);
- break;
- case 0x240:
- MapGridSetMetatileIdAt(x, y, 0xe42);
- break;
- case 0x241:
- MapGridSetMetatileIdAt(x, y, 0xe43);
- break;
- case 0x248:
- case 0x249:
- MapGridSetMetatileIdAt(x, y, 0x21a);
- break;
- case 0x250:
- MapGridSetMetatileIdAt(x, y, 0x251);
- break;
- }
- }
- }
-}
-
-static void Task_PetalburgGym(u8);
-static void PetalburgGymFunc(u8, u16);
-const u8 gUnknown_083F8370[] = {0, 1, 1, 1, 1};
-const u16 gUnknown_083F8376[] = {0x218, 0x219, 0x21a, 0x21b, 0x21c};
-
-void PetalburgGymSpecial1(void)
-{
- gUnknown_02039258 = 0;
- gUnknown_02039259 = 0;
- PlaySE(SE_KI_GASYAN);
- CreateTask(Task_PetalburgGym, 8);
-}
-
-static void Task_PetalburgGym(u8 taskId)
-{
- if (gUnknown_083F8370[gUnknown_02039259] == gUnknown_02039258)
- {
- PetalburgGymFunc(gSpecialVar_0x8004, gUnknown_083F8376[gUnknown_02039259]);
- gUnknown_02039258 = 0;
- if ((++gUnknown_02039259) == 5)
- {
- DestroyTask(taskId);
- EnableBothScriptContexts();
- }
- }
- else
- {
- gUnknown_02039258++;
- }
-}
-
-static void PetalburgGymFunc(u8 a0, u16 a1)
-{
- u16 x[4];
- u16 y[4];
- u8 i;
- u8 nDoors = 0;
- switch (a0)
- {
- case 1:
- nDoors = 2;
- x[0] = 1;
- x[1] = 7;
- y[0] = 0x68;
- y[1] = 0x68;
- break;
- case 2:
- nDoors = 2;
- x[0] = 1;
- x[1] = 7;
- y[0] = 0x4e;
- y[1] = 0x4e;
- break;
- case 3:
- nDoors = 2;
- x[0] = 1;
- x[1] = 7;
- y[0] = 0x5b;
- y[1] = 0x5b;
- break;
- case 4:
- nDoors = 1;
- x[0] = 7;
- y[0] = 0x27;
- break;
- case 5:
- nDoors = 2;
- x[0] = 1;
- x[1] = 7;
- y[0] = 0x34;
- y[1] = 0x34;
- break;
- case 6:
- nDoors = 1;
- x[0] = 1;
- y[0] = 0x41;
- break;
- case 7:
- nDoors = 1;
- x[0] = 7;
- y[0] = 0xd;
- break;
- case 8:
- nDoors = 1;
- x[0] = 1;
- y[0] = 0x1a;
- break;
- }
- for (i=0; i<nDoors; i++)
- {
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | 0xc00);
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | 0xc00);
- }
- DrawWholeMapView();
-}
-
-void PetalburgGymSpecial2(void)
-{
- PetalburgGymFunc(gSpecialVar_0x8004, gUnknown_083F8376[4]);
-}
-
-void ShowFieldMessageStringVar4(void)
-{
- ShowFieldMessage(gStringVar4);
-}
-
-void StorePlayerCoordsInVars(void)
-{
- gSpecialVar_0x8004 = gSaveBlock1.pos.x;
- gSpecialVar_0x8005 = gSaveBlock1.pos.y;
-}
-
-u8 GetPlayerTrainerIdOnesDigit(void)
-{
- return (u16)((gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0]) % 10;
-}
-
-void GetPlayerBigGuyGirlString(void)
-{
- if (gSaveBlock2.playerGender == MALE)
- {
- StringCopy(gStringVar1, gOtherText_BigGuy);
- }
- else
- {
- StringCopy(gStringVar1, gOtherText_BigGirl);
- }
-}
-
-void GetRivalSonDaughterString(void)
-{
- if (gSaveBlock2.playerGender == MALE)
- {
- StringCopy(gStringVar1, gOtherText_Daughter);
- }
- else
- {
- StringCopy(gStringVar1, gOtherText_Son);
- }
-}
-
-u8 GetBattleOutcome(void)
-{
- return gBattleOutcome;
-}
-
-void CableCarWarp(void)
-{
- if (gSpecialVar_0x8004 != 0)
- {
- Overworld_SetWarpDestination(MAP_GROUP(ROUTE112_CABLE_CAR_STATION), MAP_NUM(ROUTE112_CABLE_CAR_STATION), -1, 6, 4);
- }
- else
- {
- Overworld_SetWarpDestination(MAP_GROUP(MT_CHIMNEY_CABLE_CAR_STATION), MAP_NUM(MT_CHIMNEY_CABLE_CAR_STATION), -1, 6, 4);
- }
-}
-
-void SetFlagInVar(void)
-{
- FlagSet(gSpecialVar_0x8004);
-}
-
-u16 GetWeekCount(void)
-{
- u16 weekCount = gLocalTime.days / 7;
- if (weekCount > 9999)
- {
- weekCount = 9999;
- }
- return weekCount;
-}
-
-u8 GetLeadMonFriendshipScore(void)
-{
- struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()];
- if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == 255)
- {
- return 6;
- }
- if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200)
- {
- return 5;
- }
- if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150)
- {
- return 4;
- }
- if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100)
- {
- return 3;
- }
- if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50)
- {
- return 2;
- }
- if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1)
- {
- return 1;
- }
- return 0;
-}
-
-void CB2_FieldShowRegionMap(void)
-{
- FieldInitRegionMap(c2_exit_to_overworld_1_continue_scripts_restart_music);
-}
-
-void FieldShowRegionMap(void)
-{
- SetMainCallback2(CB2_FieldShowRegionMap);
-}
-
-static void Task_PCTurnOnEffect(u8);
-static void PCTurnOffEffect_0(struct Task *);
-static void PCTurnOffEffect_1(s16, s8, s8);
-static void PCTurnOffEffect(void);
-
-void DoPCTurnOnEffect(void)
-{
- if (FuncIsActiveTask(Task_PCTurnOnEffect) != TRUE)
- {
- u8 taskId = CreateTask(Task_PCTurnOnEffect, 8);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = taskId;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[4] = 0;
- }
-}
-
-static void Task_PCTurnOnEffect(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- if (task->data[0] == 0)
- {
- PCTurnOffEffect_0(task);
- }
-}
-
-static void PCTurnOffEffect_0(struct Task *task)
-{
- u8 playerDirectionLowerNybble;
- s8 dx = 0;
- s8 dy = 0;
- if (task->data[3] == 6)
- {
- task->data[3] = 0;
- playerDirectionLowerNybble = player_get_direction_lower_nybble();
- switch (playerDirectionLowerNybble)
- {
- case DIR_NORTH:
- dx = 0;
- dy = -1;
- break;
- case DIR_WEST:
- dx = -1;
- dy = -1;
- break;
- case DIR_EAST:
- dx = 1;
- dy = -1;
- break;
- }
- PCTurnOffEffect_1(task->data[4], dx, dy);
- DrawWholeMapView();
- task->data[4] ^= 1;
- if ((++task->data[2]) == 5)
- {
- DestroyTask(task->data[1]);
- }
- }
- task->data[3]++;
-}
-
-static void PCTurnOffEffect_1(s16 flag, s8 dx, s8 dy)
-{
- u16 tileId = 0;
- if (flag != 0)
- {
- if (gSpecialVar_0x8004 == 0)
- {
- tileId = 0x4;
- }
- else if (gSpecialVar_0x8004 == 1)
- {
- tileId = 0x25a;
- }
- else if (gSpecialVar_0x8004 == 2)
- {
- tileId = 0x259;
- }
- }
- else
- {
- if (gSpecialVar_0x8004 == 0)
- {
- tileId = 0x5;
- }
- else if (gSpecialVar_0x8004 == 1)
- {
- tileId = 0x27f;
- }
- else if (gSpecialVar_0x8004 == 2)
- {
- tileId = 0x27e;
- }
- }
- MapGridSetMetatileIdAt(gSaveBlock1.pos.x + dx + 7, gSaveBlock1.pos.y + dy + 7, tileId | 0xc00);
-}
-
-void DoPCTurnOffEffect(void)
-{
- PCTurnOffEffect();
-}
-
-static void PCTurnOffEffect(void)
-{
- s8 dx = 0;
- s8 dy = 0;
- u16 tileId = 0;
- u8 playerDirectionLowerNybble = player_get_direction_lower_nybble();
- switch (playerDirectionLowerNybble)
- {
- case DIR_NORTH:
- dx = 0;
- dy = -1;
- break;
- case DIR_WEST:
- dx = -1;
- dy = -1;
- break;
- case DIR_EAST:
- dx = 1;
- dy = -1;
- break;
- }
- if (gSpecialVar_0x8004 == 0)
- {
- tileId = 0x4;
- }
- else if (gSpecialVar_0x8004 == 1)
- {
- tileId = 0x25a;
- }
- else if (gSpecialVar_0x8004 == 2)
- {
- tileId = 0x259;
- }
- MapGridSetMetatileIdAt(gSaveBlock1.pos.x + dx + 7, gSaveBlock1.pos.y + dy + 7, tileId | 0xc00);
- DrawWholeMapView();
-}
-
-static void Task_LotteryCornerComputerEffect(u8);
-static void LotteryCornerComputerEffect(struct Task *);
-
-void DoLotteryCornerComputerEffect(void)
-{
- if (FuncIsActiveTask(Task_LotteryCornerComputerEffect) != TRUE)
- {
- u8 taskId = CreateTask(Task_LotteryCornerComputerEffect, 8);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = taskId;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[4] = 0;
- }
-}
-
-static void Task_LotteryCornerComputerEffect(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- if (task->data[0] == 0)
- {
- LotteryCornerComputerEffect(task);
- }
-}
-
-static void LotteryCornerComputerEffect(struct Task *task)
-{
- if (task->data[3] == 6)
- {
- task->data[3] = 0;
- if (task->data[4] != 0)
- {
- MapGridSetMetatileIdAt(18, 8, 0xe9d);
- MapGridSetMetatileIdAt(18, 9, 0xea5);
- }
- else
- {
- MapGridSetMetatileIdAt(18, 8, 0xe58);
- MapGridSetMetatileIdAt(18, 9, 0xe60);
- }
- DrawWholeMapView();
- task->data[4] ^= 1;
- if ((++task->data[2]) == 5)
- {
- DestroyTask(task->data[1]);
- }
- }
- task->data[3]++;
-}
-
-void EndLotteryCornerComputerEffect(void)
-{
- MapGridSetMetatileIdAt(18, 8, 0xe9d);
- MapGridSetMetatileIdAt(18, 9, 0xea5);
- DrawWholeMapView();
-}
-
-static void sub_810E874(void);
-void DisplayCurrentElevatorFloor(void);
-void sub_810E984(u8);
-bool8 sub_810EAC8(u8, u8);
-void sub_810EB90(u8, u8);
-void ShakeScreenInElevator(void);
-void sub_810EC34(u8);
-void sub_810EC9C(u8);
-void sub_810ECB0(void);
-void sub_810ECD4(void);
-void sub_810ECFC(void);
-void sub_810ED40(u8);
-void sub_810ED60(struct Task *);
-void sub_810EEDC(void);
-
-const u8 *const gUnknown_083F8380[] = {
- OtherText_1F,
- OtherText_2F,
- OtherText_3F,
- OtherText_4F,
- OtherText_5F,
- OtherText_6F,
- OtherText_7F,
- OtherText_8F,
- OtherText_9F,
- OtherText_10F,
- OtherText_11F,
- OtherText_B1F,
- OtherText_B2F,
- OtherText_B3F,
- OtherText_B4F,
- OtherText_Rooftop
-};
-
-void SetDepartmentStoreFloorVar(void)
-{
- u8 deptStoreFloor;
- switch (gSaveBlock1.warp2.mapNum)
- {
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_1F):
- deptStoreFloor = 0;
- break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_2F):
- deptStoreFloor = 1;
- break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_3F):
- deptStoreFloor = 2;
- break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_4F):
- deptStoreFloor = 3;
- break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_5F):
- deptStoreFloor = 4;
- break;
- case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP):
- deptStoreFloor = 15;
- break;
- default:
- deptStoreFloor = 0;
- break;
- }
- VarSet(VAR_DEPT_STORE_FLOOR, deptStoreFloor);
-}
-
-void ScriptAddElevatorMenuItem(u8 a0, u8 a1, u8 a2, u8 a3)
-{
- u8 i;
- if (gSpecialVar_0x8004 == 0)
- {
- for (i=0; i<20; i++)
- {
- gUnknown_03000760[i].var0 = 16;
- }
- }
- gUnknown_03000760[gSpecialVar_0x8004].var0 = a0;
- gUnknown_03000760[gSpecialVar_0x8004].var1 = a1;
- gUnknown_03000760[gSpecialVar_0x8004].var2 = a2;
- gUnknown_03000760[gSpecialVar_0x8004].var3 = a3;
- gSpecialVar_0x8004++;
-}
-
-void ScriptShowElevatorMenu(void)
-{
- u8 i = 0;
- gUnknown_0203925A = 0;
- gUnknown_0203925B = 0;
- ScriptAddElevatorMenuItem(16, 0, 0, 0);
- while (gUnknown_03000760[i].var0 != 16)
- {
- gUnknown_0203925A++;
- i++;
- }
- sub_810E874();
-}
-
-static void sub_810E874(void)
-{
- u8 i;
- ScriptContext2_Enable();
- if (gUnknown_0203925A > 5)
- {
- Menu_DrawStdWindowFrame(0, 0, 8, 11);
- InitMenu(0, 1, 1, 5, 0, 7);
- gUnknown_0203925C = 0;
- ClearVerticalScrollIndicatorPalettes();
- LoadScrollIndicatorPalette();
- sub_810ECD4();
- }
- else
- {
- Menu_DrawStdWindowFrame(0, 0, 8, 2 * gUnknown_0203925A + 1);
- InitMenu(0, 1, 1, gUnknown_0203925A, 0, 7);
- }
- for (i = 0; i < 5 && gUnknown_03000760[i].var0 != 16; i ++)
- {
- Menu_PrintText(gUnknown_083F8380[gUnknown_03000760[i].var0], 1, 2 * i + 1);
- }
- DisplayCurrentElevatorFloor();
- CreateTask(sub_810E984, 8);
-}
-
-void DisplayCurrentElevatorFloor(void)
-{
- Menu_DrawStdWindowFrame(20, 0, 29, 5);
- sub_8072BD8(gOtherText_NowOn, 21, 1, 64);
- sub_8072BD8(gUnknown_083F8380[gSpecialVar_0x8005], 21, 3, 64);
-}
-
-void sub_810E984(u8 taskId)
-{
- u8 curMenuPos;
- if (gMain.newKeys == DPAD_UP && gUnknown_0203925B != 0)
- {
- gUnknown_0203925B--;
- curMenuPos = Menu_GetCursorPos();
- Menu_MoveCursorNoWrap(-1);
- sub_810EAC8(curMenuPos, DPAD_UP);
- }
- if (gMain.newKeys == DPAD_DOWN && gUnknown_0203925B != gUnknown_0203925A - 1)
- {
- gUnknown_0203925B++;
- curMenuPos = Menu_GetCursorPos();
- Menu_MoveCursorNoWrap(+1);
- sub_810EAC8(curMenuPos, DPAD_DOWN);
- }
- if (gMain.newKeys & A_BUTTON)
- {
- saved_warp2_set_2(0, gUnknown_03000760[gUnknown_0203925B].var1, gUnknown_03000760[gUnknown_0203925B].var2, -1, 2, 1);
- if (gSpecialVar_0x8005 == gUnknown_0203925B)
- {
- gSpecialVar_Result = 0;
- PlaySE(SE_SELECT);
- Menu_EraseWindowRect(0, 0, 29, 12);
- sub_810EC9C(taskId);
- }
- else
- {
- gSpecialVar_Result = 1;
- gSpecialVar_0x8005 = gUnknown_0203925B;
- ShakeScreenInElevator();
- FieldObjectTurnByLocalIdAndMap(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH);
- sub_810EEDC();
- Menu_EraseScreen();
- DestroyTask(taskId);
- }
- }
- else if (gMain.newKeys & B_BUTTON)
- {
- gSpecialVar_Result = 0;
- PlaySE(SE_SELECT);
- sub_810EEDC();
- Menu_EraseWindowRect(0, 0, 29, 12);
- sub_810EC9C(taskId);
- }
-}
-
-// This function, as written, swaps the roles of r4 and r5 throughout.
-#ifdef NONMATCHING
-bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput)
-{
- u8 i;
- bool8 flag = 0;
- u8 newPos = 0;
- if (gUnknown_0203925A < 5)
- {
- return FALSE;
- }
- if (dpadInput == DPAD_UP)
- {
- if (prevMenuPos == 0)
- {
- newPos = gUnknown_0203925B;
- flag = 1;
- }
- }
- else if (dpadInput == DPAD_DOWN)
- {
- if (prevMenuPos == 4)
- {
- newPos = gUnknown_0203925B - 4;
- flag = 1;
- }
- }
- if (flag)
- {
- sub_810EB90(newPos, 5);
- Menu_BlankWindowRect(2, 1, 7, 10);
- for (i=0; i<5 && gUnknown_03000760[newPos].var0 != 16; newPos++, i++)
- {
- Menu_PrintText(gUnknown_083F8380[gUnknown_03000760[newPos].var0], 1, i * 2 + 1);
- }
- }
- return flag;
-}
-#else
-__attribute__((naked))
-bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r8\n"
- "\tpush {r7}\n"
- "\tlsls r0, 24\n"
- "\tlsrs r2, r0, 24\n"
- "\tadds r5, r2, 0\n"
- "\tlsls r1, 24\n"
- "\tlsrs r1, 24\n"
- "\tadds r3, r1, 0\n"
- "\tmovs r7, 0\n"
- "\tmovs r4, 0\n"
- "\tldr r0, _0810EAEC @ =gUnknown_0203925A\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x4\n"
- "\tbhi _0810EAF0\n"
- "\tmovs r0, 0\n"
- "\tb _0810EB78\n"
- "\t.align 2, 0\n"
- "_0810EAEC: .4byte gUnknown_0203925A\n"
- "_0810EAF0:\n"
- "\tcmp r1, 0x40\n"
- "\tbne _0810EB04\n"
- "\tcmp r2, 0\n"
- "\tbne _0810EB18\n"
- "\tldr r0, _0810EB00 @ =gUnknown_0203925B\n"
- "\tldrb r4, [r0]\n"
- "\tmovs r7, 0x1\n"
- "\tb _0810EB1C\n"
- "\t.align 2, 0\n"
- "_0810EB00: .4byte gUnknown_0203925B\n"
- "_0810EB04:\n"
- "\tcmp r3, 0x80\n"
- "\tbne _0810EB18\n"
- "\tcmp r5, 0x4\n"
- "\tbne _0810EB18\n"
- "\tldr r0, _0810EB84 @ =gUnknown_0203925B\n"
- "\tldrb r0, [r0]\n"
- "\tsubs r0, 0x4\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tmovs r7, 0x1\n"
- "_0810EB18:\n"
- "\tcmp r7, 0\n"
- "\tbeq _0810EB76\n"
- "_0810EB1C:\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x5\n"
- "\tbl sub_810EB90\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r1, 0x1\n"
- "\tmovs r2, 0x7\n"
- "\tmovs r3, 0xA\n"
- "\tbl Menu_BlankWindowRect\n"
- "\tmovs r5, 0\n"
- "\tldr r2, _0810EB88 @ =gUnknown_03000760\n"
- "\tlsls r1, r4, 2\n"
- "\tadds r0, r1, r2\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x10\n"
- "\tbeq _0810EB76\n"
- "\tldr r0, _0810EB8C @ =gUnknown_083F8380\n"
- "\tmov r8, r0\n"
- "\tadds r6, r2, 0\n"
- "_0810EB44:\n"
- "\tadds r0, r1, r6\n"
- "\tldrb r0, [r0]\n"
- "\tlsls r0, 2\n"
- "\tadd r0, r8\n"
- "\tldr r0, [r0]\n"
- "\tlsls r2, r5, 1\n"
- "\tadds r2, 0x1\n"
- "\tlsls r2, 24\n"
- "\tlsrs r2, 24\n"
- "\tmovs r1, 0x1\n"
- "\tbl Menu_PrintText\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "\tcmp r5, 0x4\n"
- "\tbhi _0810EB76\n"
- "\tlsls r1, r4, 2\n"
- "\tadds r0, r1, r6\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x10\n"
- "\tbne _0810EB44\n"
- "_0810EB76:\n"
- "\tadds r0, r7, 0\n"
- "_0810EB78:\n"
- "\tpop {r3}\n"
- "\tmov r8, r3\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.align 2, 0\n"
- "_0810EB84: .4byte gUnknown_0203925B\n"
- "_0810EB88: .4byte gUnknown_03000760\n"
- "_0810EB8C: .4byte gUnknown_083F8380");
-}
-#endif
-
-void sub_810EB90(u8 newPos, u8 maxItems)
-{
- if (newPos == 0)
- {
- gUnknown_0203925C ^= 0x02;
- DestroyVerticalScrollIndicator(TOP_ARROW);
- }
- else
- {
- sub_810ECB0();
- }
- if (newPos + maxItems < gUnknown_0203925A)
- {
- sub_810ECD4();
- }
- else if (newPos + maxItems == gUnknown_0203925A)
- {
- gUnknown_0203925C ^= 0x01;
- DestroyVerticalScrollIndicator(BOTTOM_ARROW);
- }
-}
-
-void ShakeScreenInElevator(void)
-{
- u8 taskId = CreateTask(sub_810EC34, 9);
- gTasks[taskId].data[0] = 1;
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[4] = 1;
- gTasks[taskId].data[5] = 3;
- SetCameraPanningCallback(NULL);
- sub_810ECFC();
- PlaySE(SE_ELEBETA);
-}
-
-void sub_810EC34(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- task->data[1] ++;
- if (task->data[1] % task->data[5] == 0)
- {
- task->data[1] = 0;
- task->data[2] ++;
- if (task->data[3] == 0)
- {
- task->data[4] = -task->data[4];
- SetCameraPanning(0, task->data[4]);
- if (task->data[2] == 23)
- {
- PlaySE(SE_PINPON);
- sub_810EC9C(taskId);
- InstallCameraPanAheadCallback();
- }
- }
- }
-}
-
-void sub_810EC9C(u8 taskId)
-{
- DestroyTask(taskId);
- EnableBothScriptContexts();
-}
-
-void sub_810ECB0(void)
-{
- if (gUnknown_0203925C >> 1 != 1)
- {
- gUnknown_0203925C |= 0x2;
- CreateVerticalScrollIndicators(TOP_ARROW, 0x24, 0x08);
- }
-}
-
-void sub_810ECD4(void)
-{
- if ((gUnknown_0203925C & 1) == 0)
- {
- gUnknown_0203925C |= 0x1;
- CreateVerticalScrollIndicators(BOTTOM_ARROW, 0x24, 0x48);
- }
-}
-
-void sub_810ECFC(void)
-{
- if (FuncIsActiveTask(sub_810ED40) != TRUE)
- {
- u8 taskId = CreateTask(sub_810ED40, 8);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = taskId;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[4] = 0;
- }
-}
-
-void sub_810ED40(u8 taskId)
-{
- sub_810ED60(&gTasks[taskId]);
-}
-
-void sub_810ED60(struct Task *task)
-{
- if (task->data[3] == 8)
- {
- task->data[3] = 0;
- if (task->data[4] != 0)
- {
- MapGridSetMetatileIdAt( 7, 7, 0xe68);
- MapGridSetMetatileIdAt( 8, 7, 0xe69);
- MapGridSetMetatileIdAt( 9, 7, 0xe69);
- MapGridSetMetatileIdAt(10, 7, 0xe6a);
- MapGridSetMetatileIdAt( 7, 8, 0xe70);
- MapGridSetMetatileIdAt( 8, 8, 0xe71);
- MapGridSetMetatileIdAt( 9, 8, 0xe71);
- MapGridSetMetatileIdAt(10, 8, 0xe72);
- MapGridSetMetatileIdAt( 7, 9, 0xe78);
- MapGridSetMetatileIdAt( 8, 9, 0xe79);
- MapGridSetMetatileIdAt( 9, 9, 0xe79);
- MapGridSetMetatileIdAt(10, 9, 0xe7a);
- }
- else
- {
- MapGridSetMetatileIdAt( 7, 7, 0xe6b);
- MapGridSetMetatileIdAt( 8, 7, 0xe6c);
- MapGridSetMetatileIdAt( 9, 7, 0xe6c);
- MapGridSetMetatileIdAt(10, 7, 0xe6d);
- MapGridSetMetatileIdAt( 7, 8, 0xe73);
- MapGridSetMetatileIdAt( 8, 8, 0xe74);
- MapGridSetMetatileIdAt( 9, 8, 0xe74);
- MapGridSetMetatileIdAt(10, 8, 0xe75);
- MapGridSetMetatileIdAt( 7, 9, 0xe7b);
- MapGridSetMetatileIdAt( 8, 9, 0xe7c);
- MapGridSetMetatileIdAt( 9, 9, 0xe7c);
- MapGridSetMetatileIdAt(10, 9, 0xe7d);
- }
- DrawWholeMapView();
- task->data[4] ^= 1;
- task->data[2]++;
- if (task->data[2] == 8)
- {
- DestroyTask(task->data[1]);
- }
- }
- task->data[3]++;
-}
-
-void sub_810EEDC(void)
-{
- if ((gUnknown_0203925C & 1) != 0)
- {
- DestroyVerticalScrollIndicator(BOTTOM_ARROW);
- }
- if ((gUnknown_0203925C >> 1) == 1)
- {
- DestroyVerticalScrollIndicator(TOP_ARROW);
- }
- BuyMenuFreeMemory();
-}
-
-void SetTrickHouseEndRoomFlag(void)
-{
- u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = 0x259;
- *specVar = flag;
- FlagSet(flag);
-}
-
-void ResetTrickHouseEndRoomFlag(void)
-{
- u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = 0x259;
- *specVar = flag;
- FlagClear(flag);
-}
-
-bool8 CheckLeadMonCool(void)
-{
- if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_COOL) < 200)
- {
- return FALSE;
- }
- return TRUE;
-}
-
-bool8 CheckLeadMonBeauty(void)
-{
- if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_BEAUTY) < 200)
- {
- return FALSE;
- }
- return TRUE;
-}
-
-bool8 CheckLeadMonCute(void)
-{
- if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_CUTE) < 200)
- {
- return FALSE;
- }
- return TRUE;
-}
-
-bool8 CheckLeadMonSmart(void)
-{
- if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SMART) < 200)
- {
- return FALSE;
- }
- return TRUE;
-}
-
-bool8 CheckLeadMonTough(void)
-{
- if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_TOUGH) < 200)
- {
- return FALSE;
- }
- return TRUE;
-}
-
-void IsGrassTypeInParty(void)
-{
- u8 i;
- u16 species;
- struct Pokemon *pokemon;
- for (i=0; i<PARTY_SIZE; i++)
- {
- pokemon = &gPlayerParty[i];
- if (GetMonData(pokemon, MON_DATA_SANITY_BIT2) && !GetMonData(pokemon, MON_DATA_IS_EGG))
- {
- species = GetMonData(pokemon, MON_DATA_SPECIES);
- if (gBaseStats[species].type1 == TYPE_GRASS || gBaseStats[species].type2 == TYPE_GRASS)
- {
- gSpecialVar_Result = TRUE;
- return;
- }
- }
- }
- gSpecialVar_Result = FALSE;
-}
-
-const u8 *const gUnknown_083F83C0[] = {
- OtherText_BlueFlute,
- OtherText_YellowFlute,
- OtherText_RedFlute,
- OtherText_WhiteFlute,
- OtherText_BlackFlute,
- OtherText_PrettyChair,
- OtherText_PrettyDesk,
- gOtherText_CancelNoTerminator
-};
-
-void sub_810F118(u8);
-bool8 sub_810F1F4(u8, u8);
-void sub_810F2B4(void);
-void GlassWorkshopUpdateScrollIndicators(u8, u8);
-
-void ShowGlassWorkshopMenu(void)
-{
- u8 i;
- ScriptContext2_Enable();
- Menu_DrawStdWindowFrame(0, 0, 10, 11);
- InitMenu(0, 1, 1, 5, 0, 9);
- gUnknown_0203925C = 0;
- ClearVerticalScrollIndicatorPalettes();
- LoadScrollIndicatorPalette();
- sub_810F2B4();
- for (i=0; i<5; i++)
- {
- Menu_PrintText(gUnknown_083F83C0[i], 1, 2 * i + 1);
- }
- gUnknown_0203925B = 0;
- gUnknown_0203925A = ARRAY_COUNT(gUnknown_083F83C0);
- CreateTask(sub_810F118, 8);
-}
-
-void sub_810F118(u8 taskId)
-{
- u8 prevCursorPos;
- if (gMain.newKeys == DPAD_UP && gUnknown_0203925B != 0)
- {
- gUnknown_0203925B--;
- prevCursorPos = Menu_GetCursorPos();
- Menu_MoveCursorNoWrap(-1);
- sub_810F1F4(prevCursorPos, DPAD_UP);
- }
- if (gMain.newKeys == DPAD_DOWN && gUnknown_0203925B != gUnknown_0203925A - 1)
- {
- gUnknown_0203925B++;
- prevCursorPos = Menu_GetCursorPos();
- Menu_MoveCursorNoWrap(1);
- sub_810F1F4(prevCursorPos, DPAD_DOWN);
- }
- if (gMain.newKeys & A_BUTTON)
- {
- Menu_DestroyCursor();
- gSpecialVar_Result = gUnknown_0203925B;
- PlaySE(SE_SELECT);
- sub_810EEDC();
- Menu_EraseWindowRect(0, 0, 29, 12);
- sub_810EC9C(taskId);
- }
- if (gMain.newKeys & B_BUTTON)
- {
- Menu_DestroyCursor();
- gSpecialVar_Result = 0x7f;
- PlaySE(SE_SELECT);
- sub_810EEDC();
- Menu_EraseWindowRect(0, 0, 29, 12);
- sub_810EC9C(taskId);
- }
-}
-
-// Second verse, same as the first
-#ifdef NONMATCHING
-bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput)
-{
- u8 i;
- u8 flag = 0;
- u8 newPos = 0;
- if (gUnknown_0203925A < 5)
- {
- return FALSE;
- }
- if (dpadInput == DPAD_UP)
- {
- if (prevCursorPos == 0)
- {
- newPos = gUnknown_0203925B;
- flag = TRUE;
- }
- }
- else if (dpadInput == DPAD_DOWN)
- {
- if (prevCursorPos == 4)
- {
- newPos = gUnknown_0203925B - 4;
- flag = TRUE;
- }
- }
- if (flag)
- {
- GlassWorkshopUpdateScrollIndicators(newPos, 5);
- Menu_BlankWindowRect(2, 1, 9, 10);
- for (i=0; i<5; newPos++, i++)
- {
- Menu_PrintText(gUnknown_083F83C0[newPos], 1, 2 * i + 1);
- }
- }
- return flag;
-}
-#else
-__attribute__((naked))
-bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tlsls r0, 24\n"
- "\tlsrs r2, r0, 24\n"
- "\tadds r5, r2, 0\n"
- "\tlsls r1, 24\n"
- "\tlsrs r1, 24\n"
- "\tadds r3, r1, 0\n"
- "\tmovs r6, 0\n"
- "\tmovs r4, 0\n"
- "\tldr r0, _0810F214 @ =gUnknown_0203925A\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x4\n"
- "\tbhi _0810F218\n"
- "\tmovs r0, 0\n"
- "\tb _0810F282\n"
- "\t.align 2, 0\n"
- "_0810F214: .4byte gUnknown_0203925A\n"
- "_0810F218:\n"
- "\tcmp r1, 0x40\n"
- "\tbne _0810F22C\n"
- "\tcmp r2, 0\n"
- "\tbne _0810F240\n"
- "\tldr r0, _0810F228 @ =gUnknown_0203925B\n"
- "\tldrb r4, [r0]\n"
- "\tmovs r6, 0x1\n"
- "\tb _0810F244\n"
- "\t.align 2, 0\n"
- "_0810F228: .4byte gUnknown_0203925B\n"
- "_0810F22C:\n"
- "\tcmp r3, 0x80\n"
- "\tbne _0810F240\n"
- "\tcmp r5, 0x4\n"
- "\tbne _0810F240\n"
- "\tldr r0, _0810F288 @ =gUnknown_0203925B\n"
- "\tldrb r0, [r0]\n"
- "\tsubs r0, 0x4\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tmovs r6, 0x1\n"
- "_0810F240:\n"
- "\tcmp r6, 0\n"
- "\tbeq _0810F280\n"
- "_0810F244:\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x5\n"
- "\tbl GlassWorkshopUpdateScrollIndicators\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r1, 0x1\n"
- "\tmovs r2, 0x9\n"
- "\tmovs r3, 0xA\n"
- "\tbl Menu_BlankWindowRect\n"
- "\tmovs r5, 0\n"
- "\tldr r7, _0810F28C @ =gUnknown_083F83C0\n"
- "_0810F25C:\n"
- "\tlsls r0, r4, 2\n"
- "\tadds r0, r7\n"
- "\tldr r0, [r0]\n"
- "\tlsls r2, r5, 1\n"
- "\tadds r2, 0x1\n"
- "\tlsls r2, 24\n"
- "\tlsrs r2, 24\n"
- "\tmovs r1, 0x1\n"
- "\tbl Menu_PrintText\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "\tcmp r5, 0x4\n"
- "\tbls _0810F25C\n"
- "_0810F280:\n"
- "\tadds r0, r6, 0\n"
- "_0810F282:\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.align 2, 0\n"
- "_0810F288: .4byte gUnknown_0203925B\n"
- "_0810F28C: .4byte gUnknown_083F83C0");
-}
-#endif
-
-void sub_810F290(void)
-{
- if (gUnknown_0203925C >> 1 != 1)
- {
- gUnknown_0203925C |= 0x02;
- CreateVerticalScrollIndicators(TOP_ARROW, 0x2c, 0x08);
- }
-}
-
-void sub_810F2B4(void)
-{
- if (!(gUnknown_0203925C & 0x01))
- {
- gUnknown_0203925C |= 0x01;
- CreateVerticalScrollIndicators(BOTTOM_ARROW, 0x2c, 0x58);
- }
-}
-
-void GlassWorkshopUpdateScrollIndicators(u8 newPos, u8 maxItems)
-{
- if (newPos == 0)
- {
- gUnknown_0203925C ^= 0x02;
- DestroyVerticalScrollIndicator(TOP_ARROW);
- }
- else
- {
- sub_810F290();
- }
- if (newPos + maxItems < gUnknown_0203925A)
- {
- sub_810F2B4();
- }
- else if (newPos + maxItems == gUnknown_0203925A)
- {
- gUnknown_0203925C ^= 0x01;
- DestroyVerticalScrollIndicator(BOTTOM_ARROW);
- }
-}
-
-void SpawnCameraDummy(void)
-{
- u8 mapObjectId = SpawnSpecialFieldObjectParametrized(7, 8, 0x7f, gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7, 3);
- gMapObjects[mapObjectId].mapobj_bit_13 = 1;
- CameraObjectSetFollowedObjectId(gMapObjects[mapObjectId].spriteId);
-}
-
-void RemoveCameraDummy(void)
-{
- CameraObjectSetFollowedObjectId(GetPlayerAvatarObjectId());
- RemoveFieldObjectByLocalIdAndMap(0x7f, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
-}
-
-u8 GetPokeblockNameByMonNature(void)
-{
- return sub_810CB68(GetNature(&gPlayerParty[GetLeadMonIndex()]), gStringVar1);
-}
-
-void GetSecretBaseNearbyMapName(void)
-{
- GetMapSectionName(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0);
-}
-
-u16 GetBestBattleTowerStreak(void)
-{
- return GetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK);
-}
-
-void BufferEReaderTrainerName(void)
-{
- SetEReaderTrainerName(gStringVar1);
-}
-
-const u8 gUnknown_083F83E0[] = {12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6};
-const u8 gUnknown_083F83EC[] = {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5};
-const u8 gUnknown_083F83F8[] = {3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5};
-
-u8 GetSlotMachineId(void)
-{
- u32 v0 = gSaveBlock1.easyChatPairs[0].unk0_0 + gSaveBlock1.easyChatPairs[0].unk2 + gUnknown_083F83E0[gSpecialVar_0x8004];
- if (GetPriceReduction(2))
- {
- return gUnknown_083F83F8[v0 % 12];
- }
- return gUnknown_083F83EC[v0 % 12];
-}
-
-bool8 FoundAbandonedShipRoom1Key(void)
-{
- u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = FLAG_HIDDEN_ITEM_1F;
- *specVar = flag;
- if (!FlagGet(flag))
- {
- return FALSE;
- }
- return TRUE;
-}
-
-bool8 FoundAbandonedShipRoom2Key(void)
-{
- u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = FLAG_HIDDEN_ITEM_20;
- *specVar = flag;
- if (!FlagGet(flag))
- {
- return FALSE;
- }
- return TRUE;
-}
-
-bool8 FoundAbandonedShipRoom4Key(void)
-{
- u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = FLAG_HIDDEN_ITEM_21;
- *specVar = flag;
- if (!FlagGet(flag))
- {
- return FALSE;
- }
- return TRUE;
-}
-
-bool8 FoundAbandonedShipRoom6Key(void)
-{
- u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = FLAG_HIDDEN_ITEM_22;
- *specVar = flag;
- if (!FlagGet(flag))
- {
- return FALSE;
- }
- return TRUE;
-}
-
-bool8 LeadMonHasEffortRibbon(void)
-{
- return GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_EFFORT_RIBBON, NULL);
-}
-
-void GivLeadMonEffortRibbon(void)
-{
- bool8 ribbonSet;
- IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS);
- FlagSet(FLAG_SYS_RIBBON_GET);
- ribbonSet = TRUE;
- SetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_EFFORT_RIBBON, &ribbonSet);
-}
-
-bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void)
-{
- if (GetMonEVCount(&gPlayerParty[GetLeadMonIndex()]) >= 510)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-u8 TryUpdateRusturfTunnelState(void)
-{
- if (!FlagGet(FLAG_RUSTURF_TUNNEL_OPENED) && gSaveBlock1.location.mapGroup == MAP_GROUP(RUSTURF_TUNNEL) && gSaveBlock1.location.mapNum == MAP_NUM(RUSTURF_TUNNEL))
- {
- if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1))
- {
- VarSet(VAR_RUSTURF_TUNNEL_STATE, 4);
- return TRUE;
- }
- else if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_2))
- {
- VarSet(VAR_RUSTURF_TUNNEL_STATE, 5);
- return TRUE;
- }
- }
- return FALSE;
-}
-
-void SetShoalItemFlag(u16 v0)
-{
- FlagSet(0x85f);
-}
-
-void PutZigzagoonInPlayerParty(void)
-{
- u16 monData;
- CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, 0x20, FALSE, 0, FALSE, 0);
- monData = TRUE;
- SetMonData(&gPlayerParty[0], MON_DATA_ALT_ABILITY, &monData);
- monData = MOVE_TACKLE;
- SetMonData(&gPlayerParty[0], MON_DATA_MOVE1, &monData);
- monData = MOVE_NONE;
- SetMonData(&gPlayerParty[0], MON_DATA_MOVE2, &monData);
- SetMonData(&gPlayerParty[0], MON_DATA_MOVE3, &monData);
- SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, &monData);
-}
-
-bool8 IsStarterInParty(void)
-{
- u8 i;
- u16 starter = GetStarterPokemon(VarGet(VAR_STARTER_MON));
- u8 partyCount = CalculatePlayerPartyCount();
- for (i = 0; i < partyCount; i++)
- {
- if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == starter)
- {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-bool8 CheckFreePokemonStorageSpace(void)
-{
- u16 i, j;
- for (i=0; i<14; i++)
- {
- for (j=0; j<30; j++)
- {
- if (GetBoxMonData(&gPokemonStorage.boxes[i][j], MON_DATA_SPECIES, NULL) == SPECIES_NONE)
- {
- return TRUE;
- }
- }
- }
- return FALSE;
-}
-
-bool8 IsPokerusInParty(void)
-{
- if (!CheckPartyPokerus(gPlayerParty, 0x3f))
- {
- return FALSE;
- }
- return TRUE;
-}
-
-static void sub_810F7A8(u8);
-static void sub_810F814(u8);
-
-void sub_810F758(void)
-{
- u8 taskId = CreateTask(sub_810F7A8, 9);
- gTasks[taskId].data[0] = gSpecialVar_0x8005;
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[4] = gSpecialVar_0x8004;
- gTasks[taskId].data[5] = 5;
- SetCameraPanningCallback(NULL);
- PlaySE(SE_W070);
-}
-
-static void sub_810F7A8(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- task->data[1]++;
- if ((task->data[1] % task->data[5]) == 0)
- {
- task->data[1] = 0;
- task->data[2]++;
- if (task->data[3] == 0)
- {
- task->data[0] = -task->data[0];
- task->data[4] = -task->data[4];
- SetCameraPanning(task->data[0], task->data[4]);
- if (task->data[2] == 8)
- {
- sub_810F814(taskId);
- InstallCameraPanAheadCallback();
- }
- }
- }
-}
-
-static void sub_810F814(u8 taskId)
-{
- DestroyTask(taskId);
- EnableBothScriptContexts();
-}
-
-bool8 FoundBlackGlasses(void)
-{
- return FlagGet(FLAG_HIDDEN_ITEM_BLACK_GLASSES);
-}
-
-void SetRoute119Weather(void)
-{
- if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE)
- {
- SetSav1Weather(0x14);
- }
-}
-
-void SetRoute123Weather(void)
-{
- if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE)
- {
- SetSav1Weather(0x15);
- }
-}
-
-u8 GetLeadMonIndex(void)
-{
- u8 i;
- u8 partyCount = CalculatePlayerPartyCount();
- for (i=0; i<partyCount; i++)
- {
- if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != 0)
- {
- return i;
- }
- }
- return 0;
-}
-
-u16 ScriptGetPartyMonSpecies(void)
-{
- return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL);
-}
-
-void sub_810F8FC(void)
-{
- sub_805ADDC(6);
-}
-
-u16 GetDaysUntilPacifidlogTMAvailable(void)
-{
- u16 tmReceivedDay = VarGet(VAR_PACIFIDLOG_TM_RECEIVED_DAY);
- if (gLocalTime.days - tmReceivedDay >= 7)
- {
- return 0;
- }
- else if (gLocalTime.days < 0)
- {
- return 8;
- }
- return 7 - (gLocalTime.days - tmReceivedDay);
-}
-
-u16 SetPacifidlogTMReceivedDay(void)
-{
- VarSet(VAR_PACIFIDLOG_TM_RECEIVED_DAY, gLocalTime.days);
- return gLocalTime.days;
-}
-
-bool8 MonOTNameMatchesPlayer(void)
-{
- GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_NAME, gStringVar1);
- if (!StringCompareWithoutExtCtrlCodes(gSaveBlock2.playerName, gStringVar1))
- {
- return FALSE;
- }
- return TRUE;
-}
-
-void BufferLottoTicketNumber(void)
-{
- if (gSpecialVar_Result >= 10000)
- {
- sub_80BF088(0, gSpecialVar_Result);
- }
- else if (gSpecialVar_Result >= 1000)
- {
- gStringVar1[0] = CHAR_0;
- ConvertIntToDecimalStringN(gStringVar1 + 1, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result));
- }
- else if (gSpecialVar_Result >= 100)
- {
- gStringVar1[0] = CHAR_0;
- gStringVar1[1] = CHAR_0;
- ConvertIntToDecimalStringN(gStringVar1 + 2, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result));
- }
- else if (gSpecialVar_Result >= 10)
- {
- gStringVar1[0] = CHAR_0;
- gStringVar1[1] = CHAR_0;
- gStringVar1[2] = CHAR_0;
- ConvertIntToDecimalStringN(gStringVar1 + 3, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result));
- }
- else
- {
- gStringVar1[0] = CHAR_0;
- gStringVar1[1] = CHAR_0;
- gStringVar1[2] = CHAR_0;
- gStringVar1[3] = CHAR_0;
- ConvertIntToDecimalStringN(gStringVar1 + 4, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result));
- }
-}
-
-const u8 gUnknown_083F8404[] = {2, 1, 2, 1};
-const u8 gUnknown_083F8408[] = {8, 9, 10, 11, 12, 13, 14, 15};
-const u8 gUnknown_083F8410[] = {8, 13, 14, 11, 10, 12, 15, 9};
-
-bool8 sub_810FF30(void);
-void UpdateMovedLilycoveFanClubMembers(void);
-void sub_810FF48(void);
-void sub_810FD80(void);
-u16 GetNumMovedLilycoveFanClubMembers(void);
-int sub_810FB9C(void);
-
-void ResetFanClub(void)
-{
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] = 0;
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = 0;
-}
-
-void sub_810FA74(void)
-{
- if (sub_810FF30())
- {
- UpdateMovedLilycoveFanClubMembers();
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = gSaveBlock2.playTimeHours;
- }
-}
-
-void sub_810FAA0(void)
-{
- if (!((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> 7) & 1))
- {
- sub_810FF48();
- sub_810FD80();
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = gSaveBlock2.playTimeHours;
- FlagClear(FLAG_HIDE_FANCLUB_OLD_LADY);
- FlagClear(FLAG_HIDE_FANCLUB_BOY);
- FlagClear(FLAG_HIDE_FANCLUB_LITTLE_BOY);
- FlagClear(FLAG_HIDE_FANCLUB_LADY);
- VarSet(VAR_LILYCOVE_FAN_CLUB_STATE, 1);
- }
-}
-
-u8 sub_810FB10(u8 a0)
-{
- if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2)
- {
- if ((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0x7f) + gUnknown_083F8404[a0] >= 20)
- {
- if (GetNumMovedLilycoveFanClubMembers() < 3)
- {
- sub_810FB9C();
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] &= 0xff80;
- }
- else
- {
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] = (gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0xff80) | 20;
- }
- }
- else
- {
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] += gUnknown_083F8404[a0];
- }
- }
- return gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0x7f;
-}
-
-int sub_810FB9C(void)
-{
- u8 i;
- int retval = 0;
- for (i=0; i<8; i++)
- {
- if (!((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gUnknown_083F8408[i]) & 0x01))
- {
- retval = i;
- if (Random() & 1)
- {
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= (1 << gUnknown_083F8408[i]);
- return retval;
- }
- }
- }
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= (1 << gUnknown_083F8408[retval]);
- return retval;
-}
-
-int sub_810FC18(void)
-{
- u8 i;
- int retval = 0;
- if (GetNumMovedLilycoveFanClubMembers() == 1)
- {
- return 0;
- }
- for (i=0; i<8; i++)
- {
- if ((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gUnknown_083F8410[i]) & 1)
- {
- retval = i;
- if (Random() & 1)
- {
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] ^= (1 << gUnknown_083F8410[i]);
- return retval;
- }
- }
- }
- if ((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gUnknown_083F8410[retval]) & 1)
- {
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] ^= (1 << gUnknown_083F8410[retval]);
- }
- return retval;
-}
-
-u16 GetNumMovedLilycoveFanClubMembers(void)
-{
- u8 i;
- u8 retval = 0;
- for (i = 0; i < 8; i++)
- {
- if ((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> (i + 8)) & 1)
- {
- retval++;
- }
- }
-
- return retval;
-}
-
-void UpdateMovedLilycoveFanClubMembers(void)
-{
- u8 i = 0;
- if (gSaveBlock2.playTimeHours < 999)
- {
- while (1)
- {
- if (GetNumMovedLilycoveFanClubMembers() < 5)
- {
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = gSaveBlock2.playTimeHours;
- break;
- }
- else if (i == 8)
- {
- break;
- }
- else if (gSaveBlock2.playTimeHours - gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] < 12)
- {
- return;
- }
- sub_810FC18();
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] += 12;
- i++;
- }
- }
-}
-
-bool8 ShouldMoveLilycoveFanClubMember(void)
-{
- return (gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gSpecialVar_0x8004) & 0x01;
-}
-
-void sub_810FD80(void)
-{
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x2000;
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x100;
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x400;
-}
-
-void sub_810FE1C(void *, u8, u8);
-
-void BufferStreakTrainerText(void)
-{
- u8 a = 0;
- u8 b = 0;
- switch (gSpecialVar_0x8004)
- {
- case 8:
- break;
- case 9:
- break;
- case 10:
- a = 0;
- b = 3;
- break;
- case 11:
- a = 0;
- b = 1;
- break;
- case 12:
- a = 1;
- b = 0;
- break;
- case 13:
- a = 0;
- b = 4;
- break;
- case 14:
- a = 1;
- b = 5;
- break;
- case 15:
- break;
- }
- sub_810FE1C(gSaveBlock1.linkBattleRecords, a, b);
-}
-
-void sub_810FE1C(void *linkRecords, u8 a, u8 b)
-{
- u8 *curRecord = (linkRecords + 16 * a);
- if (*curRecord == EOS)
- {
- switch (b)
- {
- case 0:
- StringCopy(gStringVar1, gOtherText_Wallace);
- break;
- case 1:
- StringCopy(gStringVar1, gOtherText_Steven);
- break;
- case 2:
- StringCopy(gStringVar1, gOtherText_Brawly);
- break;
- case 3:
- StringCopy(gStringVar1, gOtherText_Winona);
- break;
- case 4:
- StringCopy(gStringVar1, gOtherText_Phoebe);
- break;
- case 5:
- StringCopy(gStringVar1, gOtherText_Glacia);
- break;
- default:
- StringCopy(gStringVar1, gOtherText_Wallace);
- break;
- }
- }
- else
- {
- StringCopyN(gStringVar1, curRecord, 7);
- gStringVar1[7] = EOS;
- if (gStringVar1[0] == 0xfc && gStringVar1[1] == 0x15)
- {
- ConvertInternationalString(gStringVar1, 1);
- }
- }
-}
-
-void sub_810FEFC(void)
-{
- if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2)
- {
- sub_810FA74();
- if (gBattleOutcome == 1)
- {
- sub_810FB9C();
- }
- else
- {
- sub_810FC18();
- }
- }
-}
-
-bool8 sub_810FF30(void)
-{
- return (gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> 7) & 0x01;
-}
-
-void sub_810FF48(void)
-{
- gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x80;
-}
-
-u8 sub_810FF60(void)
-{
- return sub_810FB10(gSpecialVar_0x8004);
-}