- Blood: Floatify actKickObject().

This commit is contained in:
Mitchell Richters 2022-09-18 21:34:59 +10:00 committed by Christoph Oelckers
parent 6efe565f7c
commit 013158da07
2 changed files with 9 additions and 4 deletions

View file

@ -4088,10 +4088,10 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
static void actKickObject(DBloodActor* kicker, DBloodActor* kicked)
{
int nSpeed = ClipLow(approxDist(kicker->int_vel().X, kicker->int_vel().Y) * 2, 0xaaaaa);
kicked->set_int_bvel_x(MulScale(nSpeed, Cos(kicker->int_ang() + Random2(85)), 30));
kicked->set_int_bvel_y(MulScale(nSpeed, Sin(kicker->int_ang() + Random2(85)), 30));
kicked->set_int_bvel_z(MulScale(nSpeed, -0x2000, 14));
double nSpeed = max(kicker->vel.XY().Length() * 2, FixedToFloat(0xaaaaa));
kicked->vel.X = nSpeed * (kicker->spr.angle + Random2A(85)).Cos();
kicked->vel.Y = nSpeed * (kicker->spr.angle + Random2A(85)).Sin();
kicked->vel.Z = nSpeed * -0.5;
kicked->spr.flags = 7;
}

View file

@ -574,6 +574,11 @@ inline double Random2F(double val, int scale)
return FixedToFloat(Random2(FloatToFixed(val, scale)), scale);
}
inline DAngle Random2A(int a1)
{
return DAngle::fromBuild(MulScale(wrand(), a1, 14) - a1);
}
// ------------------------------------------------
inline int Random3(int a1)
{