diff options
Diffstat (limited to 'src/fldeff_secret_base_pc.c')
-rw-r--r-- | src/fldeff_secret_base_pc.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/fldeff_secret_base_pc.c b/src/fldeff_secret_base_pc.c new file mode 100644 index 000000000..394c4bc56 --- /dev/null +++ b/src/fldeff_secret_base_pc.c @@ -0,0 +1,69 @@ +#include "global.h" +#include "event_data.h" +#include "field_camera.h" +#include "field_effect.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "script.h" +#include "constants/songs.h" +#include "sound.h" +#include "task.h" + +static void Task_SecretBasePCTurnOn(u8); + +u32 FldEff_SecretBasePCTurnOn(void) +{ + s16 x, y; + u8 taskId; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + taskId = CreateTask(Task_SecretBasePCTurnOn, 0); + gTasks[taskId].data[0] = x; + gTasks[taskId].data[1] = y; + gTasks[taskId].data[2] = 0; + + return 0; +} + +static void Task_SecretBasePCTurnOn(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[2]) + { + case 4: + case 12: + MapGridSetMetatileIdAt(data[0], data[1], 548); + CurrentMapDrawMetatileAt(data[0], data[1]); + break; + case 8: + case 16: + MapGridSetMetatileIdAt(data[0], data[1], 544); + CurrentMapDrawMetatileAt(data[0], data[1]); + break; + case 20: + MapGridSetMetatileIdAt(data[0], data[1], 548); + CurrentMapDrawMetatileAt(data[0], data[1]); + FieldEffectActiveListRemove(FLDEFF_SECRET_BASE_PC_TURN_ON); + EnableBothScriptContexts(); + DestroyTask(taskId); + return; + } + + data[2]++; +} + +void DoSecretBasePCTurnOffEffect(void) +{ + s16 x, y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + PlaySE(SE_PC_OFF); + + if (!VarGet(VAR_CURRENT_SECRET_BASE)) + MapGridSetMetatileIdAt(x, y, 3616); + else + MapGridSetMetatileIdAt(x, y, 3617); + + CurrentMapDrawMetatileAt(x, y); +} |