summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-02-28 11:16:03 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-02-28 11:16:03 -0500
commit8a092738468de1f4bbe11b7ef4d338735312e9dd (patch)
treed7d1f03ab1da1f0ac74c07d7f5f346afe4428a01 /src
parentc117bc6864b951c1f6ea124aa8176e64ad25f5c8 (diff)
Unused dive field effect
Diffstat (limited to 'src')
-rw-r--r--src/field_effect.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/field_effect.c b/src/field_effect.c
index ff1e41146..c848a43c5 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -5,6 +5,7 @@
#include "event_data.h"
#include "event_object_movement.h"
#include "field_camera.h"
+#include "field_control_avatar.h"
#include "field_effect.h"
#include "field_effect_scripts.h"
#include "field_fadetransition.h"
@@ -1611,3 +1612,58 @@ bool8 waterfall_4_wait_player_move_probably(struct Task * task, struct ObjectEve
FieldEffectActiveListRemove(FLDEFF_USE_WATERFALL);
return FALSE;
}
+
+void Task_Dive(u8 taskId);
+bool8 dive_1_lock(struct Task * task);
+bool8 dive_2_unknown(struct Task * task);
+bool8 dive_3_unknown(struct Task * task);
+
+bool8 (*const sDiveFieldEffectFuncPtrs[])(struct Task * task) = {
+ dive_1_lock,
+ dive_2_unknown,
+ dive_3_unknown
+};
+
+u32 FldEff_UseDive(void)
+{
+ u8 taskId = CreateTask(Task_Dive, 0xFF);
+ gTasks[taskId].data[15] = gFieldEffectArguments[0];
+ gTasks[taskId].data[14] = gFieldEffectArguments[1];
+ Task_Dive(taskId);
+ return 0;
+}
+
+void Task_Dive(u8 taskId)
+{
+ while (sDiveFieldEffectFuncPtrs[gTasks[taskId].data[0]](&gTasks[taskId]))
+ ;
+}
+
+bool8 dive_1_lock(struct Task * task)
+{
+ gPlayerAvatar.preventStep = TRUE;
+ task->data[0]++;
+ return FALSE;
+}
+
+bool8 dive_2_unknown(struct Task * task)
+{
+ ScriptContext2_Enable();
+ gFieldEffectArguments[0] = task->data[15];
+ FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
+ task->data[0]++;
+ return FALSE;
+}
+
+bool8 dive_3_unknown(struct Task * task)
+{
+ struct MapPosition pos;
+ PlayerGetDestCoords(&pos.x, &pos.y);
+ if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
+ {
+ dive_warp(&pos, gObjectEvents[gPlayerAvatar.objectEventId].mapobj_unk_1E);
+ DestroyTask(FindTaskIdByFunc(Task_Dive));
+ FieldEffectActiveListRemove(FLDEFF_USE_DIVE);
+ }
+ return FALSE;
+}