diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index eabb4acca..f8b29cc24 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -1523,17 +1523,41 @@ static void doVehicleBumping(player_struct* p, DDukeActor* pact, bool turnLeft, // //--------------------------------------------------------------------------- +static void doVehicleDrunk(player_struct* const p) +{ + if (p->drink_amt > 88 && p->moto_drink == 0) + { + const int rng = krand() & 63; + if (rng == 1) + p->moto_drink = -10; + else if (rng == 2) + p->moto_drink = 10; + } + else if (p->drink_amt > 99 && p->moto_drink == 0) + { + const int rng = krand() & 31; + if (rng == 1) + p->moto_drink = -20; + else if (rng == 2) + p->moto_drink = 20; + } +} + +//--------------------------------------------------------------------------- +// +// +// +//--------------------------------------------------------------------------- + static void onMotorcycle(int snum, ESyncBits &actions) { auto p = &ps[snum]; auto pact = p->GetActor(); - bool braking = false; - int rng; - if (p->MotoSpeed < 0 || p->moto_underwater) p->MotoSpeed = 0; + bool braking = false; bool forward = p->sync.fvel > 0; bool reverse = p->sync.fvel < 0; bool turnLeft = p->sync.avel < 0; @@ -1587,22 +1611,7 @@ static void onMotorcycle(int snum, ESyncBits &actions) S_PlayActorSound(187, pact); } - if (p->drink_amt > 88 && p->moto_drink == 0) - { - rng = krand() & 63; - if (rng == 1) - p->moto_drink = -10; - else if (rng == 2) - p->moto_drink = 10; - } - else if (p->drink_amt > 99 && p->moto_drink == 0) - { - rng = krand() & 31; - if (rng == 1) - p->moto_drink = -20; - else if (rng == 2) - p->moto_drink = 20; - } + doVehicleDrunk(p); if (p->on_ground == 1) { @@ -1700,8 +1709,7 @@ static void onMotorcycle(int snum, ESyncBits &actions) } else if (p->MotoSpeed >= 20 && p->on_ground == 1 && (p->moto_on_mud || p->moto_on_oil)) { - rng = krand() & 1; - velAdjustment = rng == 0 ? -adjust : adjust; + velAdjustment = krand() & 1 ? adjust : -adjust; currSpeed = MulScale(currSpeed, p->moto_on_oil ? 10 : 5, 7); p->vel.XY() += (pact->spr.Angles.Yaw + velAdjustment).ToVector() * currSpeed; } @@ -1722,8 +1730,6 @@ static void onBoat(int snum, ESyncBits &actions) auto pact = p->GetActor(); bool braking = false, heeltoe = false; - int rng; - bool forward = p->sync.fvel > 0; bool reverse = p->sync.fvel < 0; bool turnLeft = p->sync.avel < 0; @@ -1797,22 +1803,7 @@ static void onBoat(int snum, ESyncBits &actions) if (!p->NotOnWater) { - if (p->drink_amt > 88 && p->moto_drink == 0) - { - rng = krand() & 63; - if (rng == 1) - p->moto_drink = -10; - else if (rng == 2) - p->moto_drink = 10; - } - else if (p->drink_amt > 99 && p->moto_drink == 0) - { - rng = krand() & 31; - if (rng == 1) - p->moto_drink = -20; - else if (rng == 2) - p->moto_drink = 20; - } + doVehicleDrunk(p); } if (p->on_ground == 1)