From 0077680839adfc583c30fb4ff426e334f7ef033b Mon Sep 17 00:00:00 2001 From: rr- Date: Sat, 13 Feb 2021 14:58:54 +0100 Subject: [PATCH] port LaraAsFallBack --- docs/progress.svg | 10 +++++----- docs/progress.txt | 2 +- src/game/lara.c | 13 ++++++++++++- src/game/lara.h | 1 + 4 files changed, 19 insertions(+), 7 deletions(-) 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);