From e628d153ad3b961a7dbcc02bbe99f04c086e3443 Mon Sep 17 00:00:00 2001 From: James R Date: Thu, 11 May 2023 19:17:37 -0700 Subject: [PATCH 1/3] Gachabom: switch to lobbed mode before trajectory is set Fixes lobbed Gachabom trajectory being inconsistent with other lobbed items. --- src/k_kart.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 7420abbb2..4ccd3bcc9 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -5424,22 +5424,6 @@ mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing, if (!player) return NULL; - // Figure out projectile speed by game speed - if (missile) - { - // Use info->speed for missiles - PROJSPEED = FixedMul(mobjinfo[mapthing].speed, K_GetKartGameSpeedScalar(gamespeed)); - } - else - { - // Use pre-determined speed for tossing - PROJSPEED = FixedMul(82 * FRACUNIT, K_GetKartGameSpeedScalar(gamespeed)); - } - - // Scale to map scale - // Intentionally NOT player scale, that doesn't work. - PROJSPEED = FixedMul(PROJSPEED, mapobjectscale); - if (altthrow) { if (altthrow == 2) // Kitchen sink throwing @@ -5482,6 +5466,22 @@ mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing, missile = false; } + // Figure out projectile speed by game speed + if (missile) + { + // Use info->speed for missiles + PROJSPEED = FixedMul(mobjinfo[mapthing].speed, K_GetKartGameSpeedScalar(gamespeed)); + } + else + { + // Use pre-determined speed for tossing + PROJSPEED = FixedMul(82 * FRACUNIT, K_GetKartGameSpeedScalar(gamespeed)); + } + + // Scale to map scale + // Intentionally NOT player scale, that doesn't work. + PROJSPEED = FixedMul(PROJSPEED, mapobjectscale); + if (missile) // Shootables { if (dir < 0 && mapthing != MT_SPB && mapthing != MT_GARDENTOP) From b08890bf9258a90489b915914ebafd74b35e8a85 Mon Sep 17 00:00:00 2001 From: James R Date: Thu, 11 May 2023 19:33:01 -0700 Subject: [PATCH 2/3] Orbinauts/Gachabom: widen backward-thrown orbitting radius --- src/k_kart.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 4ccd3bcc9..098d20a90 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4570,10 +4570,25 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I finalscale = source->scale; } - if (dir == -1 && (type == MT_ORBINAUT || type == MT_GACHABOM || type == MT_BALLHOG)) + if (dir == -1) { // Backwards nerfs - finalspeed /= 8; + switch (type) + { + case MT_ORBINAUT: + case MT_GACHABOM: + // These items orbit in place. + // Look for a tight radius... + finalspeed /= 4; + break; + + case MT_BALLHOG: + finalspeed /= 8; + break; + + default: + break; + } } x = source->x + source->momx + FixedMul(finalspeed, FINECOSINE(an>>ANGLETOFINESHIFT)); From bdd36d45263ef922f4a307ef1bc5dadc9b1e4ec8 Mon Sep 17 00:00:00 2001 From: James R Date: Thu, 11 May 2023 20:32:50 -0700 Subject: [PATCH 3/3] K_SpawnKartMissile: scale backward thrown nerfs to gamespeed for perfect consistency --- src/k_kart.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 098d20a90..9bd20a510 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4572,6 +4572,8 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I if (dir == -1) { + fixed_t nerf = FRACUNIT; + // Backwards nerfs switch (type) { @@ -4579,16 +4581,22 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I case MT_GACHABOM: // These items orbit in place. // Look for a tight radius... - finalspeed /= 4; + nerf = FRACUNIT/4; break; case MT_BALLHOG: - finalspeed /= 8; + nerf = FRACUNIT/8; break; default: break; } + + if (finalspeed != FRACUNIT) + { + // Scale to gamespeed for consistency + finalspeed = FixedMul(finalspeed, FixedDiv(nerf, K_GetKartGameSpeedScalar(gamespeed))); + } } x = source->x + source->momx + FixedMul(finalspeed, FINECOSINE(an>>ANGLETOFINESHIFT));