mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-06 19:01:06 +03:00
Add more anims to NewAnims; Fix lean
This commit is contained in:
parent
8dc41f1f0f
commit
f5ec4695ef
8 changed files with 174 additions and 184 deletions
|
@ -196,12 +196,12 @@ function<LaraRoutineFunction> lara_control_routines[NUM_LARA_STATES + 1] = {
|
|||
lara_as_null,//137
|
||||
lara_as_null,//138
|
||||
lara_as_null,//ara_as_hang_feet,//139
|
||||
lara_as_null,//lara_as_hang_feet_shimmyr,//140
|
||||
lara_as_null,//lara_as_hang_feet_shimmyl,//141
|
||||
lara_as_null,//lara_as_hang_feet_inRcorner,//142
|
||||
lara_as_null,//lara_as_hang_feet_inLcorner,//143
|
||||
lara_as_null,//lara_as_hang_feet_outRcorner,//144
|
||||
lara_as_null,//lara_as_hang_feet_outLcorner,//145
|
||||
lara_as_hang_feet_shimmyr,//140
|
||||
lara_as_hang_feet_shimmyl,//141
|
||||
lara_as_hang_feet_inRcorner,//142
|
||||
lara_as_hang_feet_inLcorner,//143
|
||||
lara_as_hang_feet_outRcorner,//144
|
||||
lara_as_hang_feet_outLcorner,//145
|
||||
lara_as_controlledl,
|
||||
lara_as_null,
|
||||
lara_as_null,
|
||||
|
@ -349,9 +349,9 @@ function<LaraRoutineFunction> lara_collision_routines[NUM_LARA_STATES + 1] = {
|
|||
lara_void_func,
|
||||
lara_void_func,
|
||||
lara_void_func,
|
||||
lara_void_func,//lara_col_hang_feet,
|
||||
lara_void_func,//lara_col_hang_feet_shimmyr,
|
||||
lara_void_func,//lara_col_hang_feet_shimmyl,
|
||||
lara_col_hang_feet,
|
||||
lara_col_hang_feet_shimmyr,
|
||||
lara_col_hang_feet_shimmyl,
|
||||
lara_default_col,
|
||||
lara_default_col,
|
||||
lara_default_col,
|
||||
|
|
|
@ -230,6 +230,12 @@ void lara_as_run(ITEM_INFO* item, COLL_INFO* coll)
|
|||
if (item->pos.zRot < -LARA_LEAN_MAX)
|
||||
item->pos.zRot = -LARA_LEAN_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
item->pos.zRot -= LARA_LEAN_RATE;
|
||||
if (item->pos.zRot < -LARA_LEAN_MAX * 3 / 5)//gives best results
|
||||
item->pos.zRot = -LARA_LEAN_MAX * 3 / 5;
|
||||
}
|
||||
}
|
||||
else if (TrInput & IN_RIGHT)
|
||||
{
|
||||
|
@ -243,6 +249,12 @@ void lara_as_run(ITEM_INFO* item, COLL_INFO* coll)
|
|||
if (item->pos.zRot > LARA_LEAN_MAX)
|
||||
item->pos.zRot = LARA_LEAN_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
item->pos.zRot += LARA_LEAN_RATE;
|
||||
if (item->pos.zRot > LARA_LEAN_MAX * 3 / 5)//gives best results
|
||||
item->pos.zRot = LARA_LEAN_MAX * 3 / 5;
|
||||
}
|
||||
}
|
||||
|
||||
if (item->animNumber == LA_STAND_TO_RUN)
|
||||
|
@ -1066,39 +1078,39 @@ void lara_col_reach(ITEM_INFO* item, COLL_INFO* coll)
|
|||
{
|
||||
if (TestHangSwingIn(item, angle))
|
||||
{
|
||||
/* if (TR12_OSCILLATE_HANG == true)
|
||||
{
|
||||
Lara.headYrot = 0;
|
||||
Lara.headXrot = 0;
|
||||
Lara.torsoYrot = 0;
|
||||
Lara.torsoXrot = 0;
|
||||
item->animNumber = LA_REACH_TO_HANG_OSCILLATE;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
item->currentAnimState = LS_HANG;
|
||||
item->goalAnimState = LS_HANG;
|
||||
}
|
||||
else
|
||||
{ */
|
||||
Lara.headYrot = 0;
|
||||
Lara.headXrot = 0;
|
||||
Lara.torsoYrot = 0;
|
||||
Lara.torsoXrot = 0;
|
||||
item->animNumber = LA_REACH_TO_MONKEYSWING;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
item->currentAnimState = LS_MONKEYSWING_IDLE;
|
||||
item->goalAnimState = LS_MONKEYSWING_IDLE;
|
||||
// }
|
||||
if (Lara.NewAnims.OscillateHanging)
|
||||
{
|
||||
Lara.headYrot = 0;
|
||||
Lara.headXrot = 0;
|
||||
Lara.torsoYrot = 0;
|
||||
Lara.torsoXrot = 0;
|
||||
item->animNumber = LA_REACH_TO_HANG_OSCILLATE;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
item->currentAnimState = LS_HANG;
|
||||
item->goalAnimState = LS_HANG;
|
||||
}
|
||||
else
|
||||
{
|
||||
Lara.headYrot = 0;
|
||||
Lara.headXrot = 0;
|
||||
Lara.torsoYrot = 0;
|
||||
Lara.torsoXrot = 0;
|
||||
item->animNumber = LA_REACH_TO_MONKEYSWING;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
item->currentAnimState = LS_MONKEYSWING_IDLE;
|
||||
item->goalAnimState = LS_MONKEYSWING_IDLE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* if (TestHangFeet(item, angle))
|
||||
if (TestHangFeet(item, angle))
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
item->currentAnimState = LS_HANG;
|
||||
item->goalAnimState = LS_HANG_FEET;
|
||||
}
|
||||
else*/
|
||||
else
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
|
@ -1683,14 +1695,14 @@ void lara_col_upjump(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* if (TestHangFeet(item, angle))
|
||||
if (TestHangFeet(item, angle))
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase + 12;
|
||||
item->currentAnimState = LS_HANG;
|
||||
item->goalAnimState = LS_HANG_FEET;
|
||||
}
|
||||
else*/
|
||||
else
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase + 12;
|
||||
|
@ -1840,7 +1852,10 @@ void lara_col_roll(ITEM_INFO* item, COLL_INFO* coll)
|
|||
if (LaraFallen(item, coll))
|
||||
return;
|
||||
|
||||
if (TrInput & IN_FORWARD && item->animNumber == LA_SWANDIVE_ROLL)
|
||||
//##LUA debug etc.
|
||||
Lara.NewAnims.SwandiveRollRun = 1;
|
||||
|
||||
if (TrInput & IN_FORWARD && item->animNumber == LA_SWANDIVE_ROLL && Lara.NewAnims.SwandiveRollRun)
|
||||
{
|
||||
item->goalAnimState = LS_RUN_FORWARD;
|
||||
}
|
||||
|
@ -1957,8 +1972,14 @@ void lara_as_wade(ITEM_INFO* item, COLL_INFO* coll)
|
|||
if (TestLaraLean(item, coll))
|
||||
{
|
||||
item->pos.zRot -= LARA_LEAN_RATE;
|
||||
if (item->pos.zRot < -(LARA_LEAN_MAX / 2))
|
||||
item->pos.zRot = -(LARA_LEAN_MAX / 2);
|
||||
if (item->pos.zRot < -LARA_LEAN_MAX / 2)
|
||||
item->pos.zRot = -LARA_LEAN_MAX / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
item->pos.zRot -= LARA_LEAN_RATE;
|
||||
if (item->pos.zRot < -LARA_LEAN_MAX * 3 / 5)
|
||||
item->pos.zRot = -LARA_LEAN_MAX * 3 / 5;
|
||||
}
|
||||
}
|
||||
else if (TrInput & IN_RIGHT)
|
||||
|
@ -1970,8 +1991,14 @@ void lara_as_wade(ITEM_INFO* item, COLL_INFO* coll)
|
|||
if (TestLaraLean(item, coll))
|
||||
{
|
||||
item->pos.zRot += LARA_LEAN_RATE;
|
||||
if (item->pos.zRot > (LARA_LEAN_MAX / 2))
|
||||
item->pos.zRot = (LARA_LEAN_MAX / 2);
|
||||
if (item->pos.zRot > LARA_LEAN_MAX / 2)
|
||||
item->pos.zRot = LARA_LEAN_MAX / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
item->pos.zRot += LARA_LEAN_RATE;
|
||||
if (item->pos.zRot > LARA_LEAN_MAX * 3 / 5)
|
||||
item->pos.zRot = LARA_LEAN_MAX * 3 / 5;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1994,6 +2021,12 @@ void lara_as_wade(ITEM_INFO* item, COLL_INFO* coll)
|
|||
if (item->pos.zRot < -LARA_LEAN_MAX)
|
||||
item->pos.zRot = -LARA_LEAN_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
item->pos.zRot -= LARA_LEAN_RATE;
|
||||
if (item->pos.zRot < -LARA_LEAN_MAX * 3 / 5)
|
||||
item->pos.zRot = -LARA_LEAN_MAX * 3 / 5;
|
||||
}
|
||||
}
|
||||
else if (TrInput & IN_RIGHT)
|
||||
{
|
||||
|
@ -2007,6 +2040,12 @@ void lara_as_wade(ITEM_INFO* item, COLL_INFO* coll)
|
|||
if (item->pos.zRot > LARA_LEAN_MAX)
|
||||
item->pos.zRot = LARA_LEAN_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
item->pos.zRot += LARA_LEAN_RATE;
|
||||
if (item->pos.zRot > LARA_LEAN_MAX * 3 / 5)
|
||||
item->pos.zRot = LARA_LEAN_MAX * 3 / 5;
|
||||
}
|
||||
}
|
||||
|
||||
if (TrInput & IN_FORWARD)
|
||||
|
|
|
@ -189,14 +189,14 @@ void lara_as_all4s(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
|
||||
// FOR DEBUG PURPOSES UNTIL SCRIPTING IS FINISHED
|
||||
Lara.NewAnims.Crawl1clickdown = 1;
|
||||
Lara.NewAnims.Crawl1clickup = 1;
|
||||
Lara.NewAnims.CrawlExit1click = 1;
|
||||
Lara.NewAnims.CrawlExit2click = 1;
|
||||
Lara.NewAnims.CrawlExit3click = 1;
|
||||
// Lara.NewAnims.Crawl1clickdown = 1;
|
||||
// Lara.NewAnims.Crawl1clickup = 1;
|
||||
// Lara.NewAnims.CrawlExit1click = 1;
|
||||
// Lara.NewAnims.CrawlExit2click = 1;
|
||||
// Lara.NewAnims.CrawlExit3click = 1;
|
||||
Lara.NewAnims.CrawlExitJump = 1;
|
||||
|
||||
|
||||
if (TrInput & IN_JUMP)
|
||||
if (TrInput & IN_JUMP && Lara.NewAnims.CrawlExitJump)
|
||||
{
|
||||
GAME_VECTOR s, d;
|
||||
MESH_INFO* StaticMesh;
|
||||
|
@ -512,7 +512,7 @@ void lara_as_crawl(ITEM_INFO* item, COLL_INFO* coll)
|
|||
{
|
||||
/*state 81*/
|
||||
/*collision: lara_col_crawl*/
|
||||
if (item->hitPoints <= 0 || TrInput & IN_JUMP)
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
item->goalAnimState = LS_CRAWL_IDLE;
|
||||
return;
|
||||
|
@ -853,14 +853,14 @@ void lara_col_crawl2hang(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* if (TestHangFeet(item, angle))
|
||||
if (TestHangFeet(item, angle))
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
item->currentAnimState = LS_HANG;
|
||||
item->goalAnimState = LS_HANG_FEET;
|
||||
}
|
||||
else*/
|
||||
else
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
|
|
|
@ -274,10 +274,10 @@ void lara_as_intcornerr(ITEM_INFO* item, COLL_INFO* coll)
|
|||
-corner anims(works well, tested with placeholder anims)
|
||||
-handstand(not tested)*/
|
||||
|
||||
/*void lara_as_hang_feet(ITEM_INFO* item, COLL_INFO* coll)
|
||||
void lara_as_hang_feet(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 139*/
|
||||
/*collision: lara_col_hang_feet
|
||||
//collision: lara_col_hang_feet
|
||||
Lara.isClimbing = false;
|
||||
|
||||
if (item->hitPoints <= 0)
|
||||
|
@ -298,7 +298,7 @@ void lara_as_intcornerr(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_col_hang_feet(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 139*/
|
||||
/*state code: lara_as_hang_feet
|
||||
//state code: lara_as_hang_feet
|
||||
item->fallspeed = 0;
|
||||
item->gravityStatus = false;
|
||||
|
||||
|
@ -395,35 +395,35 @@ void lara_col_hang_feet(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
if (Lara.climbStatus != 0 &&
|
||||
coll->midCeiling <= -256 &&
|
||||
abs(coll->leftCeiling2 - coll->rightCeiling2) < 60)
|
||||
|
||||
if (Lara.climbStatus != 0 &&
|
||||
coll->midCeiling <= -256 &&
|
||||
abs(coll->leftCeiling2 - coll->rightCeiling2) < 60)
|
||||
{
|
||||
if (LaraTestClimbStance(item, coll))
|
||||
{
|
||||
if (LaraTestClimbStance(item, coll))
|
||||
{
|
||||
item->goalAnimState = LS_LADDER_IDLE;
|
||||
}
|
||||
else
|
||||
{
|
||||
item->animNumber = LA_LADDER_UP_HANDS;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
item->goalAnimState = LS_HANG;
|
||||
item->currentAnimState = LS_HANG;
|
||||
}
|
||||
item->goalAnimState = LS_LADDER_IDLE;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
item->animNumber = LA_LADDER_SHIMMY_UP;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
item->goalAnimState = LS_HANG;
|
||||
item->currentAnimState = LS_HANG;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Lara.moveAngle = item->pos.yRot;
|
||||
LaraHangTest(item, coll);
|
||||
}
|
||||
}
|
||||
|
||||
void lara_as_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 140*/
|
||||
/*collision: lara_col_hang_feet_shimmyr
|
||||
//collision: lara_col_hang_feet_shimmyr
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
Camera.targetAngle = 0;
|
||||
|
@ -436,7 +436,7 @@ void lara_as_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_col_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 140*/
|
||||
/*state code: lara_as_hang_feet_shimmyr
|
||||
//state code: lara_as_hang_feet_shimmyr
|
||||
Lara.moveAngle = item->pos.yRot + ANGLE(90);
|
||||
coll->radius = LARA_RAD;
|
||||
LaraHangTest(item, coll);
|
||||
|
@ -446,7 +446,7 @@ void lara_col_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_as_hang_feet_shimmyl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 141*/
|
||||
/*collision: lara_col_hang_feet_shimmyl
|
||||
//collision: lara_col_hang_feet_shimmyl
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
Camera.targetAngle = 0;
|
||||
|
@ -458,55 +458,51 @@ void lara_as_hang_feet_shimmyl(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_col_hang_feet_shimmyl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 141*/
|
||||
/*state code: lara_as_hang_feet_shimmyl
|
||||
//state code: lara_as_hang_feet_shimmyl
|
||||
Lara.moveAngle = item->pos.yRot - ANGLE(90);
|
||||
coll->radius = LARA_RAD;
|
||||
LaraHangTest(item, coll);
|
||||
Lara.moveAngle = item->pos.yRot - ANGLE(90);
|
||||
}
|
||||
|
||||
/*go around corners feet
|
||||
//go around corners feet
|
||||
|
||||
void lara_as_hang_feet_inRcorner(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 142*/
|
||||
/*collision: lara_default_col
|
||||
//collision: lara_default_col
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
if (item->frameNumber == g_Level.Anims[LA_SHIMMY_FEET_RIGHT_CORNER_INNER].frameEnd) // I don't like this either but it's better than adding 4 new 1 frame anims?
|
||||
SetCornerAnimFeet(item, coll, ANGLE(90.0f),
|
||||
item->animNumber = LA_SHIMMY_FEET_RIGHT_CORNER_INNER);
|
||||
SetCornerAnimFeet(item, coll, ANGLE(90.0f), 1);
|
||||
}
|
||||
|
||||
void lara_as_hang_feet_inLcorner(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 143*/
|
||||
/*collision: lara_default_col
|
||||
//collision: lara_default_col
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
if (item->frameNumber == g_Level.Anims[LA_SHIMMY_FEET_LEFT_CORNER_INNER].frameEnd)
|
||||
SetCornerAnimFeet(item, coll, -ANGLE(90.0f),
|
||||
item->animNumber = LA_SHIMMY_FEET_LEFT_CORNER_INNER);
|
||||
SetCornerAnimFeet(item, coll, -ANGLE(90.0f), 1);
|
||||
}
|
||||
|
||||
void lara_as_hang_feet_outRcorner(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 144*/
|
||||
/*collision: lara_default_col
|
||||
//collision: lara_default_col
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
if (item->frameNumber == g_Level.Anims[LA_SHIMMY_FEET_RIGHT_CORNER_OUTER].frameEnd)
|
||||
SetCornerAnimFeet(item, coll, -ANGLE(90.0f),
|
||||
item->animNumber = LA_SHIMMY_FEET_RIGHT_CORNER_OUTER);
|
||||
SetCornerAnimFeet(item, coll, -ANGLE(90.0f), 1);
|
||||
}
|
||||
|
||||
void lara_as_hang_feet_outLcorner(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 145*/
|
||||
/*collision: lara_default_col
|
||||
//collision: lara_default_col
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
if (item->frameNumber == g_Level.Anims[LA_SHIMMY_FEET_LEFT_CORNER_OUTER].frameEnd)
|
||||
SetCornerAnimFeet(item, coll, ANGLE(90.0f),
|
||||
item->animNumber = LA_SHIMMY_FEET_LEFT_CORNER_OUTER);
|
||||
}*/
|
||||
SetCornerAnimFeet(item, coll, ANGLE(90.0f), 1);
|
||||
}
|
||||
|
|
|
@ -13,15 +13,15 @@ void lara_as_extcornerl(ITEM_INFO* item, COLL_INFO* coll);
|
|||
void lara_as_extcornerr(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_intcornerl(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_intcornerr(ITEM_INFO* item, COLL_INFO* coll);
|
||||
/*feet hanging and shimmying
|
||||
//feet hanging and shimmying
|
||||
void lara_as_hang_feet(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_col_hang_feet(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_col_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_shimmyl(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_col_hang_feet_shimmyl(ITEM_INFO* item, COLL_INFO* coll);
|
||||
/*go around corners feet
|
||||
//go around corners feet
|
||||
void lara_as_hang_feet_inRcorner(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_inLcorner(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_outRcorner(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_outLcorner(ITEM_INFO* item, COLL_INFO* coll);*/
|
||||
void lara_as_hang_feet_outLcorner(ITEM_INFO* item, COLL_INFO* coll);
|
||||
|
|
|
@ -472,10 +472,10 @@ enum LARA_ANIM
|
|||
LA_CRAWL_IDLE = 263, // Crwal idle
|
||||
LA_CROUCH_TO_CRAWL_END = 264, // Crawl > crouch (2/2)
|
||||
LA_CRAWL_TO_CROUCH_END_UNUSED = 265, // Crouch > crawl (3/3)
|
||||
LA_CRAWL_TO_IDLE_END_RIGHT_POINTLESS = 266, // TODO: remove.
|
||||
LA_CRAWL_TO_IDLE_END_RIGHT_POINTLESS = 266, // TODO: remove.//no dont remove thanks
|
||||
LA_CRAWL_TO_IDLE_RIGHT = 267, // Crawl forward > crawl idle, right leg first
|
||||
// TODO: in WAD, link next to 263
|
||||
LA_CRAWL_TO_IDLE_END_LEFT_POINTLESS = 268, // TODO: remove.
|
||||
LA_CRAWL_TO_IDLE_END_LEFT_POINTLESS = 268, // TODO: remove. //no dont remove thanks
|
||||
LA_CRAWL_TURN_LEFT = 269, // Crawl rotate left (looped)
|
||||
LA_CRAWL_TURN_RIGHT = 270, // Crawl rotate right (looped)
|
||||
LA_MONKEYSWING_TURN_LEFT = 271, // Monkey swing rotate left
|
||||
|
@ -974,6 +974,10 @@ struct AnimsNew
|
|||
bool CrawlVault2click; //vault into crawlspace at 2 clicks
|
||||
bool CrawlVault3click; //vault into crawlspace at 3 clicks
|
||||
bool MonkeyVault; //vault up to monkeybars when pressing up + action underneath them. super annoying :)
|
||||
bool CrawlExitJump; //TR5 crawlspace exit with jump!
|
||||
bool SwandiveRollRun; //the transition from swandive roll to run
|
||||
bool OscillateHanging; //the thin ledge grab animation from TR1 and 2
|
||||
bool FeetHanging; //Daniel's super awesome feet hanging
|
||||
};
|
||||
|
||||
typedef struct LaraInfo
|
||||
|
|
|
@ -18,9 +18,6 @@ static short RightClimbTab[4] = // offset 0xA0640
|
|||
0x0800, 0x0100, 0x0200, 0x0400
|
||||
};
|
||||
|
||||
//bool EnableCrawlFlex1click, EnableCrawlFlex2click, EnableCrawlFlex3click, EnableMonkeyVault;
|
||||
//bool TR12_OSCILLATE_HANG, EnableFeetHang;
|
||||
|
||||
/*this file has all the generic test functions called in lara's state code*/
|
||||
|
||||
int TestLaraVault(ITEM_INFO* item, COLL_INFO* coll)
|
||||
|
@ -28,10 +25,11 @@ int TestLaraVault(ITEM_INFO* item, COLL_INFO* coll)
|
|||
if (!(TrInput & IN_ACTION) || Lara.gunStatus != LG_NO_ARMS)
|
||||
return 0;
|
||||
|
||||
Lara.NewAnims.CrawlVault1click = 1;
|
||||
Lara.NewAnims.CrawlVault2click = 1;
|
||||
Lara.NewAnims.CrawlVault3click = 1;
|
||||
Lara.NewAnims.MonkeyVault = 1;
|
||||
//##LUA debug etc.
|
||||
// Lara.NewAnims.CrawlVault1click = 1;
|
||||
// Lara.NewAnims.CrawlVault2click = 1;
|
||||
// Lara.NewAnims.CrawlVault3click = 1;
|
||||
// Lara.NewAnims.MonkeyVault = 1;
|
||||
|
||||
if (coll->collType == CT_FRONT)
|
||||
{
|
||||
|
@ -427,13 +425,13 @@ int LaraHangTest(ITEM_INFO* item, COLL_INFO* coll)
|
|||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase + 21;
|
||||
}
|
||||
/* else if (item->currentAnimState == LS_SHIMMY_FEET_LEFT || item->currentAnimState == LS_SHIMMY_FEET_RIGHT)
|
||||
else if (item->currentAnimState == LS_SHIMMY_FEET_LEFT || item->currentAnimState == LS_SHIMMY_FEET_RIGHT)
|
||||
{
|
||||
item->currentAnimState = LS_HANG_FEET;
|
||||
item->goalAnimState = LS_HANG_FEET;
|
||||
item->animNumber = LA_HANG_FEET_IDLE;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
}*/
|
||||
}
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
|
@ -458,7 +456,7 @@ int LaraHangTest(ITEM_INFO* item, COLL_INFO* coll)
|
|||
|
||||
int LaraHangLeftCornerTest(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->animNumber != LA_REACH_TO_HANG)// && item->animNumber != LA_HANG_FEET_IDLE)
|
||||
if (item->animNumber != LA_REACH_TO_HANG && item->animNumber != LA_HANG_FEET_IDLE)
|
||||
return 0;
|
||||
|
||||
if (coll->hitStatic)
|
||||
|
@ -613,7 +611,7 @@ int LaraHangLeftCornerTest(ITEM_INFO* item, COLL_INFO* coll)
|
|||
|
||||
int LaraHangRightCornerTest(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->animNumber != LA_REACH_TO_HANG)// && item->animNumber != LA_HANG_FEET_IDLE)
|
||||
if (item->animNumber != LA_REACH_TO_HANG && item->animNumber != LA_HANG_FEET_IDLE)
|
||||
return 0;
|
||||
|
||||
if (coll->hitStatic)
|
||||
|
@ -933,24 +931,7 @@ int TestHangSwingIn(ITEM_INFO* item, short angle)
|
|||
int h, c;
|
||||
|
||||
//debug till scripting be ready
|
||||
// TR12_OSCILLATE_HANG = true;
|
||||
|
||||
/*if (angle == ANGLE(180.0f))
|
||||
{
|
||||
z -= 256;
|
||||
}
|
||||
else if (angle == -ANGLE(90))
|
||||
{
|
||||
x -= 256;
|
||||
}
|
||||
else if (angle == ANGLE(90))
|
||||
{
|
||||
x += 256;
|
||||
}
|
||||
else if (angle == ANGLE(0))
|
||||
{
|
||||
z += 256;
|
||||
}*/
|
||||
Lara.NewAnims.OscillateHanging = 0;
|
||||
|
||||
z += phd_cos(angle) * STEP_SIZE;
|
||||
x += phd_sin(angle) * STEP_SIZE;
|
||||
|
@ -961,35 +942,29 @@ int TestHangSwingIn(ITEM_INFO* item, short angle)
|
|||
|
||||
if (h != NO_HEIGHT)
|
||||
{
|
||||
/* if (TR12_OSCILLATE_HANG == true)
|
||||
if (Lara.NewAnims.OscillateHanging)
|
||||
{
|
||||
if (((h - y) > 0)
|
||||
&& ((c - y) < -400))
|
||||
return(1);
|
||||
if (h - y > 0 && c - y < -400)
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{*/
|
||||
if (((h - y) > 0)
|
||||
&& ((c - y) < -400)
|
||||
&& ((y - 819 - c) > -72))
|
||||
return(1);
|
||||
// }
|
||||
{
|
||||
if (h - y > 0 && c - y < -400 && (y - 819 - c > -72))
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return(0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*int TestHangFeet(ITEM_INFO* item, short angle)
|
||||
bool TestHangFeet(ITEM_INFO* item, short angle)
|
||||
{
|
||||
return 0;
|
||||
if (Lara.climbStatus)
|
||||
//##LUA debug etc.
|
||||
Lara.NewAnims.FeetHanging = 0;
|
||||
|
||||
if (Lara.climbStatus || !Lara.NewAnims.FeetHanging)
|
||||
return 0;
|
||||
|
||||
// EnableFeetHang = true;
|
||||
|
||||
|
||||
// if (!EnableFeetHang)
|
||||
// return 0;
|
||||
|
||||
int x = item->pos.xPos;
|
||||
int y = item->pos.yPos;
|
||||
int z = item->pos.zPos;
|
||||
|
@ -997,22 +972,8 @@ int TestHangSwingIn(ITEM_INFO* item, short angle)
|
|||
FLOOR_INFO* floor;
|
||||
int h, c, g, m, j;
|
||||
|
||||
if (angle == ANGLE(180.0f))
|
||||
{
|
||||
z -= 256;
|
||||
}
|
||||
else if (angle == -ANGLE(90.0f))
|
||||
{
|
||||
x -= 256;
|
||||
}
|
||||
else if (angle == ANGLE(90.0f))
|
||||
{
|
||||
x += 256;
|
||||
}
|
||||
else if (angle == ANGLE(0.0f))
|
||||
{
|
||||
z += 256;
|
||||
}
|
||||
z += phd_cos(angle) * STEP_SIZE;
|
||||
x += phd_sin(angle) * STEP_SIZE;
|
||||
|
||||
floor = GetFloor(x, y, z, &roomNum);
|
||||
h = GetFloorHeight(floor, x, y, z);
|
||||
|
@ -1021,29 +982,12 @@ int TestHangSwingIn(ITEM_INFO* item, short angle)
|
|||
m = c - y;
|
||||
j = y - 128 - c;
|
||||
|
||||
if (item->currentAnimState == LS_CRAWL_TO_HANG)
|
||||
if (h != NO_HEIGHT)
|
||||
{
|
||||
if (h != NO_HEIGHT)
|
||||
{
|
||||
if (((g) > 0)
|
||||
&& ((m) < -128)
|
||||
&& ((j) > -72))
|
||||
return(1);
|
||||
}
|
||||
return(0);
|
||||
if (g > 0 && m < -128 && j > -72)
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (h != NO_HEIGHT)
|
||||
{
|
||||
if (((g) > 0)
|
||||
&& ((m) < -128)
|
||||
&& ((j) > -72))
|
||||
return(0);
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
int CanLaraHangSideways(ITEM_INFO* item, COLL_INFO* coll, short angle)
|
||||
{
|
||||
|
@ -1131,7 +1075,7 @@ void SetCornerAnim(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)
|
|||
}
|
||||
}
|
||||
|
||||
/*void SetCornerAnimFeet(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)
|
||||
void SetCornerAnimFeet(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)
|
||||
{
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
|
@ -1165,7 +1109,7 @@ void SetCornerAnim(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)
|
|||
|
||||
item->pos.yRot += rot;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
int LaraFloorFront(ITEM_INFO* item, short ang, int dist)
|
||||
{
|
||||
|
@ -1252,6 +1196,7 @@ void GetTighRopeFallOff(int regularity)
|
|||
|
||||
bool TestLaraLean(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
#if 0
|
||||
// TODO: make it more fine-tuned when new collision is done.
|
||||
switch (coll->collType)
|
||||
{
|
||||
|
@ -1263,4 +1208,10 @@ bool TestLaraLean(ITEM_INFO* item, COLL_INFO* coll)
|
|||
return false;
|
||||
}
|
||||
return true;
|
||||
#else
|
||||
if (coll->collType == CT_RIGHT || coll->collType == CT_LEFT)
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -11,10 +11,10 @@ int LaraTestHangOnClimbWall(ITEM_INFO* item, COLL_INFO* coll);
|
|||
int LaraTestEdgeCatch(ITEM_INFO* item, COLL_INFO* coll, int* edge);
|
||||
int IsValidHangPos(ITEM_INFO* item, COLL_INFO* coll);
|
||||
int TestHangSwingIn(ITEM_INFO* item, short angle);
|
||||
//int TestHangFeet(ITEM_INFO* item, short angle);
|
||||
bool TestHangFeet(ITEM_INFO* item, short angle);
|
||||
int CanLaraHangSideways(ITEM_INFO* item, COLL_INFO* coll, short angle);
|
||||
void SetCornerAnim(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip);
|
||||
//void SetCornerAnimFeet(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip);
|
||||
void SetCornerAnimFeet(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip);
|
||||
int LaraFloorFront(ITEM_INFO* item, short ang, int dist);
|
||||
int LaraCeilingFront(ITEM_INFO* item, short ang, int dist, int h);
|
||||
int LaraFallen(ITEM_INFO* item, COLL_INFO* coll);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue