Merge branch 'bubble-mash' into 'master'

Bubble shield mash limit (resolves #1613)

Closes #1613

See merge request kart-krew-dev/ring-racers-internal!2712
This commit is contained in:
Oni VelocitOni 2025-08-01 14:31:52 +00:00
commit 47248f2030

View file

@ -9821,6 +9821,15 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
mobj->flags = MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_NOGRAVITY|MF_DONTENCOREMAP; mobj->flags = MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_NOGRAVITY|MF_DONTENCOREMAP;
mobj->extravalue1 = 1; mobj->extravalue1 = 1;
// Mash speed limit
UINT8 MASHPWR = TICRATE/2; // Amount to deduct from timer when mashing
UINT8 MAXMASHFREQUENCY = 6; // Nerf fast mashing: allow optimal decay with X inputs per second
UINT8 ticsbetweenmashing = TICRATE/MAXMASHFREQUENCY;
UINT8 decaypertic = MASHPWR / ticsbetweenmashing;
if (mobj->cusval)
mobj->cusval = max(0, mobj->cusval - decaypertic);
mobj->cvmem /= 2; mobj->cvmem /= 2;
mobj->momz = 0; mobj->momz = 0;
mobj->destscale = ((8*mobj->tracer->scale)>>2) + (mobj->tracer->scale>>3); mobj->destscale = ((8*mobj->tracer->scale)>>2) + (mobj->tracer->scale>>3);
@ -9856,7 +9865,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
mobj->tracer->y + P_ReturnThrustY(NULL, mobj->tracer->angle+ANGLE_90, (mobj->cvmem)<<FRACBITS), mobj->tracer->y + P_ReturnThrustY(NULL, mobj->tracer->angle+ANGLE_90, (mobj->cvmem)<<FRACBITS),
mobj->tracer->z - (4*mobj->tracer->scale) + (P_RandomRange(PR_ITEM_BUBBLE, -abs(mobj->cvmem), abs(mobj->cvmem))<<FRACBITS)); mobj->tracer->z - (4*mobj->tracer->scale) + (P_RandomRange(PR_ITEM_BUBBLE, -abs(mobj->cvmem), abs(mobj->cvmem))<<FRACBITS));
if (mobj->movecount > 4*TICRATE) if (mobj->movecount > 7*TICRATE/2)
{ {
S_StartSound(mobj->tracer, sfx_s3k77); S_StartSound(mobj->tracer, sfx_s3k77);
mobj->tracer->flags &= ~MF_NOGRAVITY; mobj->tracer->flags &= ~MF_NOGRAVITY;
@ -9877,8 +9886,11 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
if ((player->cmd.turning > 0 && lastsign < 0) if ((player->cmd.turning > 0 && lastsign < 0)
|| (player->cmd.turning < 0 && lastsign > 0)) || (player->cmd.turning < 0 && lastsign > 0))
{ {
mobj->movecount += (TICRATE/2); // CONS_Printf("%d -> ", mobj->movecount);
mobj->movecount += MASHPWR - mobj->cusval;
// CONS_Printf("%d\n", mobj->movecount);
mobj->cvmem = 8*lastsign; mobj->cvmem = 8*lastsign;
mobj->cusval = MASHPWR; // Mash speed limit.
S_StartSound(mobj, sfx_s3k7a); S_StartSound(mobj, sfx_s3k7a);
} }