diff options
Diffstat (limited to 'src/field')
| -rw-r--r-- | src/field/fldeff_secret_base_pc.c | 69 | 
1 files changed, 69 insertions, 0 deletions
| diff --git a/src/field/fldeff_secret_base_pc.c b/src/field/fldeff_secret_base_pc.c new file mode 100644 index 000000000..ead970b27 --- /dev/null +++ b/src/field/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 "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_0x4054)) +        MapGridSetMetatileIdAt(x, y, 3616); +    else +        MapGridSetMetatileIdAt(x, y, 3617); + +    CurrentMapDrawMetatileAt(x, y); +} | 
