mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-03 10:17:59 +03:00
Fix auto jump for ladders; overhang cleanup
This commit is contained in:
parent
a0cbf296a3
commit
ad9dfb2ec2
5 changed files with 301 additions and 289 deletions
|
@ -114,8 +114,6 @@ void lara_as_auto_jump(ITEM_INFO* item, COLL_INFO* coll)
|
|||
coll->Setup.EnableObjectPush = false;
|
||||
coll->Setup.EnableSpasm = false;
|
||||
|
||||
info->Control.CalculatedJumpVelocity = -3 - sqrt(-9600 - 12 * std::max<int>(info->ProjectedFloorHeight - item->Position.yPos, -CLICK(7.5f)));
|
||||
|
||||
// Disable smooth angle adjustment for now.
|
||||
//if (info->Control.ApproachTargetAngle)
|
||||
// ApproachLaraTargetAngle(item, coll->NearestLedgeAngle, 2.5f);
|
||||
|
|
|
@ -320,6 +320,7 @@ void SetLaraVault(ITEM_INFO* item, COLL_INFO* coll, VaultTestResult vaultResult)
|
|||
auto* info = GetLaraInfo(item);
|
||||
|
||||
info->ProjectedFloorHeight = vaultResult.Height;
|
||||
info->Control.CalculatedJumpVelocity = -3 - sqrt(-9600 - 12 * std::max<int>(info->ProjectedFloorHeight - item->Position.yPos, -CLICK(7.5f)));
|
||||
info->Control.HandStatus = vaultResult.SetBusyHands ? HandStatus::Busy : info->Control.HandStatus;
|
||||
info->Control.TurnRate = 0;
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -4,22 +4,22 @@
|
|||
struct ITEM_INFO;
|
||||
struct COLL_INFO;
|
||||
|
||||
void lara_col_slopeclimb(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_as_slopeclimb(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_as_slopefall(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_col_slopehang(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_as_slopehang(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_col_slopeshimmy(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_as_slopeshimmy(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_as_slopeclimbup(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_as_slopeclimbdown(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_as_sclimbstart(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_as_sclimbstop(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_as_sclimbend(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void lara_col_slopeclimb(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_slopeclimb(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_slopefall(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_col_slopehang(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_slopehang(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_col_slopeshimmy(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_slopeshimmy(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_slopeclimbup(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_slopeclimbdown(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_sclimbstart(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_sclimbstop(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_sclimbend(ITEM_INFO* item, COLL_INFO* coll);
|
||||
|
||||
void SlopeHangExtra(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void SlopeReachExtra(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void SlopeClimbExtra(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void SlopeClimbDownExtra(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void SlopeMonkeyExtra(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void LadderMonkeyExtra(ITEM_INFO* lara, COLL_INFO* coll);
|
||||
void SlopeHangExtra(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void SlopeReachExtra(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void SlopeClimbExtra(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void SlopeClimbDownExtra(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void SlopeMonkeyExtra(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void LadderMonkeyExtra(ITEM_INFO* item, COLL_INFO* coll);
|
||||
|
|
|
@ -2113,6 +2113,7 @@ bool TestAndDoLaraLadderClimb(ITEM_INFO* item, COLL_INFO* coll)
|
|||
auto vaultResult = TestLaraLadderAutoJump(item, coll);
|
||||
if (vaultResult.Success)
|
||||
{
|
||||
// TODO: Somehow harmonise CalculatedJumpVelocity to work for both ledge and ladder auto jumps, because otherwise there will be a need for an odd workaround in the future.
|
||||
info->Control.CalculatedJumpVelocity = -3 - sqrt(-9600 - 12 * std::max((vaultResult.Height - item->Position.yPos + CLICK(0.2f)), -CLICK(7.1f)));
|
||||
item->AnimNumber = LA_STAND_SOLID;
|
||||
item->FrameNumber = GetFrameNumber(item, 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue