summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-06-27 08:26:08 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-06-27 08:26:08 -0400
commita3c3267a9c915f86b986df90e747e12a90bcf5b5 (patch)
tree6ce2973bc7dff263b457f38306895f9a2c4efed6 /src
parent2c4dc3b5be3b45a50387b1b0677d8f4b64391575 (diff)
PerStepCallback_806A07C
Diffstat (limited to 'src')
-rwxr-xr-xsrc/field_tasks.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/field_tasks.c b/src/field_tasks.c
index 021f2c070..653d3ffd9 100755
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -6,6 +6,7 @@
#include "task.h"
#include "main.h"
#include "vars.h"
+#include "bike.h"
#include "item.h"
#include "items.h"
#include "event_data.h"
@@ -730,3 +731,48 @@ void sub_806A040(s16 x, s16 y)
MapGridSetMetatileIdAt(x, y, MapGridGetMetatileIdAt(x, y) == 0x22f ? 0x206 : 0x237);
CurrentMapDrawMetatileAt(x, y);
}
+
+void PerStepCallback_806A07C(u8 taskId)
+{
+ s16 x, y;
+ u16 behavior;
+ s16 *data = gTasks[taskId].data;
+ PlayerGetDestCoords(&x, &y);
+ behavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (data[4] != 0 && (--data[4]) == 0)
+ {
+ sub_806A040(data[5], data[6]);
+ }
+ if (data[7] != 0 && (--data[7]) == 0)
+ {
+ sub_806A040(data[8], data[9]);
+ }
+ if (MetatileBehavior_IsCrackedFloorHole(behavior))
+ {
+ VarSet(VAR_ICE_STEP_COUNT, 0); // this var does double duty
+ }
+ if ((x != data[2] || y != data[3]))
+ {
+ data[2] = x;
+ data[3] = y;
+ if (MetatileBehavior_IsCrackedFloor(behavior))
+ {
+ if (GetPlayerSpeed() != 4)
+ {
+ VarSet(VAR_ICE_STEP_COUNT, 0); // this var does double duty
+ }
+ if (data[4] == 0)
+ {
+ data[4] = 3;
+ data[5] = x;
+ data[6] = y;
+ }
+ else if (data[7] == 0)
+ {
+ data[7] = 3;
+ data[8] = x;
+ data[9] = y;
+ }
+ }
+ }
+}