diff --git a/docs/progress.svg b/docs/progress.svg
index 2a6ad1610..1178a0a2d 100644
--- a/docs/progress.svg
+++ b/docs/progress.svg
@@ -340,7 +340,7 @@
-
+
@@ -700,10 +700,10 @@
-Functions decompiled (count): 6.42%
-Functions decompiled (bytesize): 3.44%
-Functions not decompiled, but with known names (count): 74.32%
-Functions not decompiled, but with known names (bytesize): 76.53%
+Functions decompiled (count): 6.56%
+Functions decompiled (bytesize): 3.46%
+Functions not decompiled, but with known names (count): 74.18%
+Functions not decompiled, but with known names (bytesize): 76.52%
Functions not decompiled, with unknown names (count): 19.26%
Functions not decompiled, with unknown names (bytesize): 20.03%
diff --git a/docs/progress.txt b/docs/progress.txt
index 66eb47872..3f423dab6 100644
--- a/docs/progress.txt
+++ b/docs/progress.txt
@@ -344,7 +344,7 @@ LaraAsStepLeft 0x00423000 0x00000073 +
LaraAsSlide 0x00423080 0x00000027 +
LaraAsBackJump 0x004230B0 0x0000001C +
LaraAsRightJump 0x004230D0 0x00000013 +
-LaraAsFallback 0x004230F0 0x0000002C -
+LaraAsFallBack 0x004230F0 0x0000002C +
LaraAsHangLeft 0x00423120 0x00000035 -
LaraAsHangRight 0x00423160 0x00000035 -
LaraAsSlideBack 0x004231A0 0x00000014 -
diff --git a/src/game/lara.c b/src/game/lara.c
index e5b52f93f..4663f9c56 100644
--- a/src/game/lara.c
+++ b/src/game/lara.c
@@ -329,7 +329,7 @@ void __cdecl LaraAsCompress(ITEM_INFO* item, COLL_INFO* coll)
Lara.move_angle = item->pos.y_rot - 0x8000;
}
- if (item->fall_speed > 131)
+ if (item->fall_speed > LARA_FASTFALL_SPEED)
item->goal_anim_state = AS_FASTFALL;
}
@@ -465,6 +465,16 @@ void __cdecl LaraAsUpJump(ITEM_INFO* item, COLL_INFO* coll)
}
}
+void __cdecl LaraAsFallBack(ITEM_INFO* item, COLL_INFO* coll)
+{
+ if (item->fall_speed > LARA_FASTFALL_SPEED) {
+ item->goal_anim_state = AS_FASTFALL;
+ }
+ if ((Input & IN_ACTION) && Lara.gun_status == LG_ARMLESS) {
+ item->goal_anim_state = AS_REACH;
+ }
+}
+
int16_t __cdecl LaraFloorFront(ITEM_INFO* item, PHD_ANGLE ang, int32_t dist)
{
int32_t x = item->pos.x + ((phd_sin(ang) * dist) >> W2V_SHIFT);
@@ -498,4 +508,5 @@ void TR1MInjectLara()
INJECT(0x00423080, LaraAsSlide);
INJECT(0x004230B0, LaraAsBackJump);
INJECT(0x004230D0, LaraAsRightJump);
+ INJECT(0x004230F0, LaraAsFallBack);
}
diff --git a/src/game/lara.h b/src/game/lara.h
index f29beb498..509ba8dbb 100644
--- a/src/game/lara.h
+++ b/src/game/lara.h
@@ -34,6 +34,7 @@ void __cdecl LaraAsBackJump(ITEM_INFO* item, COLL_INFO* coll);
void __cdecl LaraAsRightJump(ITEM_INFO* item, COLL_INFO* coll);
void __cdecl LaraAsLeftJump(ITEM_INFO* item, COLL_INFO* coll);
void __cdecl LaraAsUpJump(ITEM_INFO* item, COLL_INFO* coll);
+void __cdecl LaraAsFallBack(ITEM_INFO* item, COLL_INFO* coll);
int16_t __cdecl LaraFloorFront(ITEM_INFO* item, PHD_ANGLE ang, int32_t dist);
void __cdecl UseItem(__int16 object_num);