mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-13 00:24:24 +02:00
#78 fix
This commit is contained in:
20
src/lara.h
20
src/lara.h
@@ -63,10 +63,11 @@ struct Lara : Character {
|
|||||||
|
|
||||||
ANIM_CLIMB_JUMP = 26,
|
ANIM_CLIMB_JUMP = 26,
|
||||||
|
|
||||||
ANIM_HANG_FALL = 28,
|
ANIM_FALL_HANG = 28,
|
||||||
|
|
||||||
ANIM_SMASH_JUMP = 32,
|
ANIM_SMASH_JUMP = 32,
|
||||||
ANIM_FALL = 34,
|
|
||||||
|
ANIM_FALL_FORTH = 34,
|
||||||
|
|
||||||
ANIM_CLIMB_3 = 42,
|
ANIM_CLIMB_3 = 42,
|
||||||
|
|
||||||
@@ -85,6 +86,8 @@ struct Lara : Character {
|
|||||||
|
|
||||||
ANIM_SLIDE_FORTH = 70,
|
ANIM_SLIDE_FORTH = 70,
|
||||||
|
|
||||||
|
ANIM_FALL_BACK = 93,
|
||||||
|
|
||||||
ANIM_HANG = 96,
|
ANIM_HANG = 96,
|
||||||
|
|
||||||
ANIM_STAND_NORMAL = 103,
|
ANIM_STAND_NORMAL = 103,
|
||||||
@@ -1544,7 +1547,7 @@ struct Lara : Character {
|
|||||||
if (state == STATE_HANG || state == STATE_HANG_LEFT || state == STATE_HANG_RIGHT) {
|
if (state == STATE_HANG || state == STATE_HANG_LEFT || state == STATE_HANG_RIGHT) {
|
||||||
if (input & ACTION)
|
if (input & ACTION)
|
||||||
return STAND_HANG;
|
return STAND_HANG;
|
||||||
animation.setAnim(ANIM_HANG_FALL);
|
animation.setAnim(ANIM_FALL_HANG);
|
||||||
velocity = vec3(0.0f);
|
velocity = vec3(0.0f);
|
||||||
pos.y += 128.0f;
|
pos.y += 128.0f;
|
||||||
updateEntity();
|
updateEntity();
|
||||||
@@ -1559,6 +1562,8 @@ struct Lara : Character {
|
|||||||
|
|
||||||
if (getRoom().flags.water) {
|
if (getRoom().flags.water) {
|
||||||
wpnHide();
|
wpnHide();
|
||||||
|
if (stand != STAND_UNDERWATER && (state != STATE_FALL && state != STATE_FALL_BACK && state != STATE_SWAN_DIVE && state != STATE_FAST_DIVE))
|
||||||
|
animation.setAnim(ANIM_FALL_FORTH);
|
||||||
return STAND_UNDERWATER;
|
return STAND_UNDERWATER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1645,8 +1650,8 @@ struct Lara : Character {
|
|||||||
if ((input & (JUMP | FORTH | WALK)) == (JUMP | FORTH | WALK)) return STATE_SWAN_DIVE;
|
if ((input & (JUMP | FORTH | WALK)) == (JUMP | FORTH | WALK)) return STATE_SWAN_DIVE;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
if (state != STATE_SWAN_DIVE && state != STATE_FAST_DIVE && state != STATE_REACH && state != STATE_FALL && state != STATE_UP_JUMP && state != STATE_BACK_JUMP && state != STATE_LEFT_JUMP && state != STATE_RIGHT_JUMP)
|
if (state != STATE_FALL && state != STATE_FALL_BACK && state != STATE_SWAN_DIVE && state != STATE_FAST_DIVE && state != STATE_REACH && state != STATE_UP_JUMP && state != STATE_BACK_JUMP && state != STATE_LEFT_JUMP && state != STATE_RIGHT_JUMP)
|
||||||
return animation.setAnim(ANIM_FALL);
|
return animation.setAnim( (state == STATE_FAST_BACK || state == STATE_SLIDE_BACK || state == STATE_ROLL_2) ? ANIM_FALL_BACK : ANIM_FALL_FORTH);
|
||||||
|
|
||||||
if (state == STATE_SWAN_DIVE)
|
if (state == STATE_SWAN_DIVE)
|
||||||
return STATE_FAST_DIVE;
|
return STATE_FAST_DIVE;
|
||||||
@@ -2413,10 +2418,7 @@ struct Lara : Character {
|
|||||||
int floor = collision.info[Collision::NONE].floor;
|
int floor = collision.info[Collision::NONE].floor;
|
||||||
int h = int(floor - opos.y);
|
int h = int(floor - opos.y);
|
||||||
|
|
||||||
if (h >= 256 && state == STATE_FAST_BACK) {
|
if (h >= 128 && (state == STATE_WALK || state == STATE_BACK)) { // descend
|
||||||
stand = STAND_AIR;
|
|
||||||
animation.setAnim(ANIM_FALL);
|
|
||||||
} else if (h >= 128 && (state == STATE_WALK || state == STATE_BACK)) { // descend
|
|
||||||
if (state == STATE_WALK) animation.setAnim(isLeftFoot ? ANIM_WALK_DESCEND_LEFT : ANIM_WALK_DESCEND_RIGHT);
|
if (state == STATE_WALK) animation.setAnim(isLeftFoot ? ANIM_WALK_DESCEND_LEFT : ANIM_WALK_DESCEND_RIGHT);
|
||||||
if (state == STATE_BACK) animation.setAnim(isLeftFoot ? ANIM_BACK_DESCEND_LEFT : ANIM_BACK_DESCEND_RIGHT);
|
if (state == STATE_BACK) animation.setAnim(isLeftFoot ? ANIM_BACK_DESCEND_LEFT : ANIM_BACK_DESCEND_RIGHT);
|
||||||
pos.y = float(floor);
|
pos.y = float(floor);
|
||||||
|
Reference in New Issue
Block a user