From 013158da077bf2d1e4f16ce73711c3d82bfc9937 Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Sun, 18 Sep 2022 21:34:59 +1000 Subject: [PATCH] - Blood: Floatify `actKickObject()`. --- source/games/blood/src/actor.cpp | 8 ++++---- source/games/blood/src/common_game.h | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/source/games/blood/src/actor.cpp b/source/games/blood/src/actor.cpp index 974f8463f..7e0e7e67f 100644 --- a/source/games/blood/src/actor.cpp +++ b/source/games/blood/src/actor.cpp @@ -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; } diff --git a/source/games/blood/src/common_game.h b/source/games/blood/src/common_game.h index 8890bcdfe..dfd1f1fd0 100644 --- a/source/games/blood/src/common_game.h +++ b/source/games/blood/src/common_game.h @@ -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) {