mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-25 05:21:02 +00:00
- fixed: The bounce on actors check handled infinite bouncers (bouncecount == 0) incorrectly.
SVN r3521 (trunk)
This commit is contained in:
parent
f6817f9544
commit
35f0b32a7f
1 changed files with 12 additions and 13 deletions
|
@ -2845,20 +2845,19 @@ bool P_BounceActor (AActor *mo, AActor * BlockingMobj)
|
||||||
|| ((BlockingMobj->player == NULL) && (!(BlockingMobj->flags3 & MF3_ISMONSTER)))
|
|| ((BlockingMobj->player == NULL) && (!(BlockingMobj->flags3 & MF3_ISMONSTER)))
|
||||||
))
|
))
|
||||||
{
|
{
|
||||||
|
if (mo->bouncecount > 0 && --mo->bouncecount == 0) return false;
|
||||||
|
|
||||||
fixed_t speed;
|
fixed_t speed;
|
||||||
if (mo->bouncecount > 0 && --mo->bouncecount > 0)
|
angle_t angle = R_PointToAngle2 (BlockingMobj->x,
|
||||||
{
|
BlockingMobj->y, mo->x, mo->y) + ANGLE_1*((pr_bounce()%16)-8);
|
||||||
angle_t angle = R_PointToAngle2 (BlockingMobj->x,
|
speed = P_AproxDistance (mo->velx, mo->vely);
|
||||||
BlockingMobj->y, mo->x, mo->y) + ANGLE_1*((pr_bounce()%16)-8);
|
speed = FixedMul (speed, mo->wallbouncefactor); // [GZ] was 0.75, using wallbouncefactor seems more consistent
|
||||||
speed = P_AproxDistance (mo->velx, mo->vely);
|
mo->angle = angle;
|
||||||
speed = FixedMul (speed, mo->wallbouncefactor); // [GZ] was 0.75, using wallbouncefactor seems more consistent
|
angle >>= ANGLETOFINESHIFT;
|
||||||
mo->angle = angle;
|
mo->velx = FixedMul (speed, finecosine[angle]);
|
||||||
angle >>= ANGLETOFINESHIFT;
|
mo->vely = FixedMul (speed, finesine[angle]);
|
||||||
mo->velx = FixedMul (speed, finecosine[angle]);
|
mo->PlayBounceSound(true);
|
||||||
mo->vely = FixedMul (speed, finesine[angle]);
|
return true;
|
||||||
mo->PlayBounceSound(true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue