mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-28 15:57:59 +03:00
Update animation enum; fix 180 jump roll inputs; fix kayak paddle hold inputs; cleanup
This commit is contained in:
parent
682faf6375
commit
395ec6052d
7 changed files with 59 additions and 51 deletions
|
@ -1,6 +1,6 @@
|
|||
-- TombEngine settings file
|
||||
-- Created by MontyTRC
|
||||
-- Place all the engine settings for your game in this LUA script.
|
||||
-- Place all the engine settings for your game in this Lua script.
|
||||
-- WARNING: Bad values could make your game unplayable; please follow reference guide attentively.
|
||||
|
||||
local settings = Settings.new();
|
||||
|
|
|
@ -284,7 +284,8 @@ void lara_as_run_forward(ITEM_INFO* item, CollisionInfo* coll)
|
|||
SetLaraRunJumpQueue(item, coll);
|
||||
}
|
||||
|
||||
if ((TrInput & IN_ROLL || (TrInput & IN_FORWARD && TrInput & IN_BACK)) && !lara->Control.RunJumpQueued &&
|
||||
if ((TrInput & IN_ROLL || (TrInput & IN_FORWARD && TrInput & IN_BACK)) &&
|
||||
!lara->Control.RunJumpQueued && // Jump queue blocks roll.
|
||||
lara->Control.WaterStatus != WaterStatus::Wade)
|
||||
{
|
||||
item->Animation.TargetState = LS_ROLL_FORWARD;
|
||||
|
|
|
@ -97,7 +97,7 @@ void lara_as_jump_forward(ITEM_INFO* item, CollisionInfo* coll)
|
|||
return;
|
||||
}
|
||||
|
||||
if (TrInput & IN_ROLL || (TrInput & IN_FORWARD && TrInput & IN_BACK))
|
||||
if (TrInput & IN_ROLL || TrInput & IN_BACK)
|
||||
{
|
||||
item->Animation.TargetState = LS_JUMP_ROLL_180;
|
||||
return;
|
||||
|
@ -467,7 +467,7 @@ void lara_as_jump_back(ITEM_INFO* item, CollisionInfo* coll)
|
|||
return;
|
||||
}
|
||||
|
||||
if (TrInput & IN_ROLL || (TrInput & IN_FORWARD && TrInput & IN_BACK))
|
||||
if (TrInput & IN_ROLL || TrInput & IN_FORWARD)
|
||||
{
|
||||
item->Animation.TargetState = LS_JUMP_ROLL_180;
|
||||
return;
|
||||
|
|
|
@ -516,28 +516,28 @@ enum LaraAnim
|
|||
LA_CRAWL_TO_HANG_START = 289, // Crawl > hang (1/3)
|
||||
LA_CRAWL_TO_HANG_CONTINUE = 290, // Crawl > hang (2/3)
|
||||
// TODO: position commands in 302 may be stacked in 290, so can remove 302?
|
||||
LA_CROUCH_PICKUP = 291, // Crouching pickup
|
||||
LA_CRAWL_PICKUP = 292, // Crawling pickup
|
||||
LA_CROUCH_HIT_BACK = 293, // Jerk back crouching from damage
|
||||
LA_CROUCH_HIT_FRONT = 294, // Jerk forward crouching from damage
|
||||
LA_CROUCH_HIT_LEFT = 295, // Jerk right crouching from damage
|
||||
LA_CROUCH_HIT_RIGHT = 296, // Jerk left crouching from damage
|
||||
LA_CRAWL_HIT_BACK = 297, // Jerk forward crawling from damage
|
||||
LA_CRAWL_HIT_FRONT = 298, // Jerk back crawling from damage
|
||||
LA_CRAWL_HIT_LEFT = 299, // Jerk left crawling from damage
|
||||
LA_CRAWL_HIT_RIGHT = 300, // Jerk right crawling from damage
|
||||
LA_CRAWL_DEATH = 301, // Crawl death
|
||||
LA_CRAWL_TO_HANG_END = 302, // Crawl > hang (3/3)
|
||||
LA_STAND_TO_CROUCH_ABORT = 303, // Stand > crouch abort
|
||||
LA_RUN_TO_CROUCH_LEFT_START = 304, // Run > crouch, left foot first (1/2)
|
||||
LA_RUN_TO_CROUCH_RIGHT_START = 305, // Run > crouch, right foot first (1/2)
|
||||
LA_RUN_TO_CROUCH_LEFT_END = 306, // Run > crouch, left foot first (2/2)
|
||||
LA_RUN_TO_CROUCH_RIGHT_END = 307, // Run > crouch, right foot first (2/2)
|
||||
LA_SPRINT_ROLL_TO_RUN_RIGHT_START = 308, // Sprint roll, right foot first > run (2/2)
|
||||
LA_SPRINT_ROLL_TO_RUN_RIGHT_END = 309, // Sprint roll, right foot first > run (2/2)
|
||||
LA_SPRINT_TO_CROUCH_LEFT = 310, // Sprint roll, left foot first > crouch
|
||||
LA_SPRINT_TO_CROUCH_RIGHT = 311, // Sprint roll, right foot first > crouch
|
||||
LA_CROUCH_PICKUP_FLARE = 312, // Pickup flare crouching
|
||||
LA_CROUCH_PICKUP = 291, // Crouching pickup
|
||||
LA_CRAWL_PICKUP = 292, // Crawling pickup
|
||||
LA_CROUCH_HIT_BACK = 293, // Jerk back crouching from damage
|
||||
LA_CROUCH_HIT_FRONT = 294, // Jerk forward crouching from damage
|
||||
LA_CROUCH_HIT_LEFT = 295, // Jerk right crouching from damage
|
||||
LA_CROUCH_HIT_RIGHT = 296, // Jerk left crouching from damage
|
||||
LA_CRAWL_HIT_BACK = 297, // Jerk forward crawling from damage
|
||||
LA_CRAWL_HIT_FRONT = 298, // Jerk back crawling from damage
|
||||
LA_CRAWL_HIT_LEFT = 299, // Jerk left crawling from damage
|
||||
LA_CRAWL_HIT_RIGHT = 300, // Jerk right crawling from damage
|
||||
LA_CRAWL_DEATH = 301, // Crawl death
|
||||
LA_CRAWL_TO_HANG_END = 302, // Crawl > hang (3/3)
|
||||
LA_STAND_TO_CROUCH_ABORT = 303, // Stand > crouch abort
|
||||
LA_RUN_TO_CROUCH_LEFT_START = 304, // Run > crouch, left foot first (1/2)
|
||||
LA_RUN_TO_CROUCH_RIGHT_START = 305, // Run > crouch, right foot first (1/2)
|
||||
LA_RUN_TO_CROUCH_LEFT_END = 306, // Run > crouch, left foot first (2/2)
|
||||
LA_RUN_TO_CROUCH_RIGHT_END = 307, // Run > crouch, right foot first (2/2)
|
||||
LA_SPRINT_ROLL_TO_RUN_RIGHT_START = 308, // Sprint roll, right foot first > run (2/2)
|
||||
LA_SPRINT_ROLL_TO_RUN_RIGHT_END = 309, // Sprint roll, right foot first > run (2/2)
|
||||
LA_SPRINT_TO_CROUCH_LEFT = 310, // Sprint roll, left foot first > crouch
|
||||
LA_SPRINT_TO_CROUCH_RIGHT = 311, // Sprint roll, right foot first > crouch
|
||||
LA_CROUCH_PICKUP_FLARE = 312, // Pickup flare crouching
|
||||
|
||||
// TR4
|
||||
LA_DOOR_OPEN_PUSH = 313, // Push door open using doorknob
|
||||
|
@ -787,9 +787,21 @@ enum LaraAnim
|
|||
LA_RUN_TO_STAND_LEFT_SOFT = 545,
|
||||
LA_RUN_TO_STAND_RIGHT_SOFT = 546,
|
||||
LA_MONKEY_JUMP_START = 547,
|
||||
LA_MONKEY_JUMP = 548,
|
||||
LA_MONKEY_JUMP_CONTINUE = 548,
|
||||
LA_SPRINT_JUMP_LEFT_START = 549,
|
||||
LA_SPRINT_JUMP_LEFT_CONTINUE = 550,
|
||||
LA_SPRINT_JUMP_LEFT_TO_REACH_1 = 551,
|
||||
LA_SPRINT_JUMP_LEFT_TO_REACH_2 = 552,
|
||||
LA_SPRINT_JUMP_LEFT_TO_REACH_3 = 553,
|
||||
LA_SPRINT_JUMP_LEFT_TO_REACH_4 = 554,
|
||||
LA_SPRINT_JUMP_RIGHT_START = 555,
|
||||
LA_SPRINT_JUMP_RIGHT_CONTINUE = 556,
|
||||
LA_SPRINT_JUMP_RIGHT_TO_REACH_1 = 557,
|
||||
LA_SPRINT_JUMP_RIGHT_TO_REACH_2 = 558,
|
||||
LA_SPRINT_JUMP_RIGHT_TO_REACH_3 = 559,
|
||||
LA_SPRINT_JUMP_RIGHT_TO_REACH_4 = 560,
|
||||
|
||||
NUM_LARA_ANIMS
|
||||
NUM_LARA_ANIMS,
|
||||
|
||||
// TRASHED ANIMS (please reuse slots before going any higher and remove entries from this list as you go):
|
||||
// 102
|
||||
|
|
|
@ -45,7 +45,7 @@ struct CrawlVaultTestSetup
|
|||
int GapMin;
|
||||
int CrossDist;
|
||||
int DestDist;
|
||||
int MaxProbeHeightDif;
|
||||
int FloorBound;
|
||||
bool CheckSlope = true;
|
||||
bool CheckDeath = true;
|
||||
};
|
||||
|
|
|
@ -2150,14 +2150,14 @@ CrawlVaultTestResult TestLaraCrawlVaultTolerance(ITEM_INFO* item, CollisionInfo*
|
|||
return CrawlVaultTestResult{ false };
|
||||
|
||||
// Assess crawl vault feasibility to location ahead.
|
||||
if ((probeA.Position.Floor - y) <= testSetup.LowerFloorBound && // Within lower floor bound.
|
||||
(probeA.Position.Floor - y) >= testSetup.UpperFloorBound && // Within upper floor bound.
|
||||
abs(probeA.Position.Ceiling - probeA.Position.Floor) > testSetup.ClampMin && // Crossing clamp limit.
|
||||
abs(probeB.Position.Ceiling - probeB.Position.Floor) > testSetup.ClampMin && // Destination clamp limit.
|
||||
abs(probeMiddle.Position.Ceiling - probeA.Position.Floor) >= testSetup.GapMin && // Gap is optically permissive (going up).
|
||||
abs(probeA.Position.Ceiling - probeMiddle.Position.Floor) >= testSetup.GapMin && // Gap is optically permissive (going down).
|
||||
abs(probeA.Position.Floor - probeB.Position.Floor) <= testSetup.MaxProbeHeightDif && // Crossing/destination floor height difference suggests continuous crawl surface.
|
||||
(probeA.Position.Ceiling - y) < -testSetup.GapMin) // Ceiling height is permissive.
|
||||
if ((probeA.Position.Floor - y) <= testSetup.LowerFloorBound && // Within lower floor bound.
|
||||
(probeA.Position.Floor - y) >= testSetup.UpperFloorBound && // Within upper floor bound.
|
||||
abs(probeA.Position.Ceiling - probeA.Position.Floor) > testSetup.ClampMin && // Crossing clamp limit.
|
||||
abs(probeB.Position.Ceiling - probeB.Position.Floor) > testSetup.ClampMin && // Destination clamp limit.
|
||||
abs(probeMiddle.Position.Ceiling - probeA.Position.Floor) >= testSetup.GapMin && // Gap is optically permissive (going up).
|
||||
abs(probeA.Position.Ceiling - probeMiddle.Position.Floor) >= testSetup.GapMin && // Gap is optically permissive (going down).
|
||||
abs(probeA.Position.Floor - probeB.Position.Floor) <= testSetup.FloorBound && // Crossing/destination floor height difference suggests continuous crawl surface.
|
||||
(probeA.Position.Ceiling - y) < -testSetup.GapMin) // Ceiling height is permissive.
|
||||
{
|
||||
return CrawlVaultTestResult{ true };
|
||||
}
|
||||
|
|
|
@ -60,6 +60,7 @@ using std::vector;
|
|||
#define KAYAK_IN_BACK IN_BACK
|
||||
#define KAYAK_IN_LEFT IN_LEFT
|
||||
#define KAYAK_IN_RIGHT IN_RIGHT
|
||||
#define KAYAK_IN_HOLD IN_WALK
|
||||
#define KAYAK_IN_HOLD_LEFT IN_LSTEP
|
||||
#define KAYAK_IN_HOLD_RIGHT IN_RSTEP
|
||||
#define KAYAK_IN_DISMOUNT (IN_JUMP | IN_ROLL)
|
||||
|
@ -416,12 +417,8 @@ void KayakDoCurrent(ITEM_INFO* laraItem, ITEM_INFO* kayakItem)
|
|||
{
|
||||
int sinkval = lara->WaterCurrentActive - 1;
|
||||
|
||||
Vector3Int target;
|
||||
target.x = g_Level.Sinks[sinkval].x;
|
||||
target.y = g_Level.Sinks[sinkval].y;
|
||||
target.z = g_Level.Sinks[sinkval].z;
|
||||
|
||||
int angle = (((mGetAngle(target.x, target.z, laraItem->Pose.Position.x, laraItem->Pose.Position.z) - ANGLE(90))) / 16) & 4095;
|
||||
auto target = Vector3Int(g_Level.Sinks[sinkval].x, g_Level.Sinks[sinkval].y, g_Level.Sinks[sinkval].z);
|
||||
int angle = (((mGetAngle(target.x, target.z, laraItem->Pose.Position.x, laraItem->Pose.Position.z) - ANGLE(90.0f))) / 16) & 4095;
|
||||
|
||||
int dx = target.x - laraItem->Pose.Position.x;
|
||||
int dz = target.z - laraItem->Pose.Position.z;
|
||||
|
@ -791,17 +788,15 @@ void KayakUserInput(ITEM_INFO* laraItem, ITEM_INFO* kayakItem)
|
|||
|
||||
kayak->Forward = false;
|
||||
}
|
||||
else if (TrInput & KAYAK_IN_HOLD_LEFT &&
|
||||
else if ((TrInput & KAYAK_IN_HOLD_LEFT || (TrInput & KAYAK_IN_HOLD && TrInput & KAYAK_IN_LEFT)) &&
|
||||
(kayak->Velocity ||
|
||||
lara->WaterCurrentPull.x ||
|
||||
lara->WaterCurrentPull.z))
|
||||
lara->WaterCurrentPull.x || lara->WaterCurrentPull.z))
|
||||
{
|
||||
laraItem->Animation.TargetState = KAYAK_STATE_HOLD_LEFT;
|
||||
}
|
||||
else if (TrInput & KAYAK_IN_HOLD_RIGHT &&
|
||||
else if ((TrInput & KAYAK_IN_HOLD_RIGHT || (TrInput & KAYAK_IN_HOLD && TrInput & KAYAK_IN_RIGHT)) &&
|
||||
(kayak->Velocity ||
|
||||
lara->WaterCurrentPull.x ||
|
||||
lara->WaterCurrentPull.z))
|
||||
lara->WaterCurrentPull.x || lara->WaterCurrentPull.z))
|
||||
{
|
||||
laraItem->Animation.TargetState = KAYAK_STATE_HOLD_RIGHT;
|
||||
}
|
||||
|
@ -956,7 +951,7 @@ void KayakUserInput(ITEM_INFO* laraItem, ITEM_INFO* kayakItem)
|
|||
break;
|
||||
|
||||
case KAYAK_STATE_HOLD_LEFT:
|
||||
if (!(TrInput & KAYAK_IN_HOLD_LEFT) ||
|
||||
if (!(TrInput & KAYAK_IN_HOLD_LEFT || (TrInput & KAYAK_IN_HOLD && TrInput & KAYAK_IN_LEFT)) ||
|
||||
(!kayak->Velocity &&
|
||||
!lara->WaterCurrentPull.x &&
|
||||
!lara->WaterCurrentPull.z))
|
||||
|
@ -992,7 +987,7 @@ void KayakUserInput(ITEM_INFO* laraItem, ITEM_INFO* kayakItem)
|
|||
break;
|
||||
|
||||
case KAYAK_STATE_HOLD_RIGHT:
|
||||
if (!(TrInput & KAYAK_IN_HOLD_RIGHT) ||
|
||||
if (!(TrInput & KAYAK_IN_HOLD_RIGHT || (TrInput & KAYAK_IN_HOLD && TrInput & KAYAK_IN_RIGHT)) ||
|
||||
(!kayak->Velocity &&
|
||||
!lara->WaterCurrentPull.x &&
|
||||
!lara->WaterCurrentPull.z))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue