From ac41a0a563e744f18424c574b3e227fb99516809 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Fri, 7 Apr 2023 16:16:45 -0700 Subject: [PATCH 1/2] Use old multiply effect for fast missile shots --- src/k_kart.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index 48f1afaa8..1f4744937 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4567,6 +4567,7 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I { mobj_t *th; fixed_t x, y, z; + fixed_t topspeed = K_GetKartSpeed(source->player, false, false); fixed_t finalspeed = speed; fixed_t finalscale = mapobjectscale; mobj_t *throwmo; @@ -4574,6 +4575,7 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I if (source->player != NULL) { const angle_t delta = AngleDelta(source->angle, an); + // Correct for angle difference when applying missile speed boosts. (Don't boost backshots!) const fixed_t deltaFactor = FixedDiv(AngleFixed(ANGLE_180 - delta), 180 * FRACUNIT); if (source->player->itemscale == ITEMSCALE_SHRINK) @@ -4582,7 +4584,20 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I speed = finalspeed = FixedMul(speed, SHRINK_PHYSICS_SCALE); } - // Add player speed on top, multiplied based on angle diff... i.e: don't do this for firing backward :V + if (source->player->speed > topspeed) + { + // Multiply speed to be proportional to your own, boosted maxspeed. + // (Dramatic "railgun" effect when fast players fire missiles.) + finalspeed = max(speed, FixedMul( + speed, + FixedMul( + FixedDiv(source->player->speed, topspeed), + deltaFactor + ) + )); + } + + // ...and add player speed on top, to make sure you're never traveling faster than an item you throw. finalspeed += FixedMul(source->player->speed, deltaFactor); finalscale = K_ItemScaleForPlayer(source->player); From 9e92b1f2b7374768b474067a992628e7b655c15c Mon Sep 17 00:00:00 2001 From: VelocitOni Date: Sun, 9 Apr 2023 00:18:50 -0400 Subject: [PATCH 2/2] Edit item speed values a bit Orbis and Jawz sped up just a bit, ballhog to move proportional to player like it used to, gardentop faster --- src/info.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/info.c b/src/info.c index 8cfb54d28..b9b6ca697 100644 --- a/src/info.c +++ b/src/info.c @@ -23387,7 +23387,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_ORBINAUT_DEAD,// deathstate S_NULL, // xdeathstate sfx_s3k5d, // deathsound - 24*FRACUNIT, // speed + 28*FRACUNIT, // speed 24*FRACUNIT, // radius 32*FRACUNIT, // height 0, // display offset @@ -23441,7 +23441,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_JAWZ_DEAD1, // deathstate S_JAWZ_DEAD2, // xdeathstate sfx_s3k5d, // deathsound - 24*FRACUNIT, // speed + 28*FRACUNIT, // speed 16*FRACUNIT, // radius 32*FRACUNIT, // height 0, // display offset @@ -23765,7 +23765,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_BALLHOG_DEAD, // deathstate S_NULL, // xdeathstate sfx_hogbom, // deathsound - 20*FRACUNIT, // speed + 40*FRACUNIT, // speed 26*FRACUNIT, // radius 32*FRACUNIT, // height 0, // display offset @@ -24062,7 +24062,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_GARDENTOP_DEAD, // deathstate S_NULL, // xdeathstate sfx_s3k7a, // deathsound - 20*FRACUNIT, // speed + 30*FRACUNIT, // speed 30*FRACUNIT, // radius 68*FRACUNIT, // height -1, // display offset @@ -24440,7 +24440,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_GACHABOM, // deathstate S_NULL, // xdeathstate sfx_s3k5d, // deathsound - 24*FRACUNIT, // speed + 28*FRACUNIT, // speed 24*FRACUNIT, // radius 32*FRACUNIT, // height 0, // display offset