diff --git a/src/k_kart.c b/src/k_kart.c index 8f6337a08..e3002e5ca 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8185,7 +8185,14 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) player->trickboost--; if (player->flamedash) + { player->flamedash--; + + if (player->flamedash == 0) + S_StopSoundByID(player->mo, sfx_fshld1); + else if (player->flamedash == 3 && player->curshield == KSHIELD_FLAME) // "Why 3?" We can't blend sounds so this is the best shit I've got + S_StartSoundAtVolume(player->mo, sfx_fshld3, 255/3); + } if (player->sneakertimer && player->wipeoutslow > 0 && player->wipeoutslow < wipeoutslowtime+1) player->wipeoutslow = wipeoutslowtime+1; @@ -11759,10 +11766,14 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (player->flamedash == 0) { - S_StartSound(player->mo, sfx_s3k43); + //S_StartSound(player->mo, sfx_s3k43); K_PlayBoostTaunt(player->mo); + S_StartSoundAtVolume(player->mo, sfx_fshld0, 255/3); + S_StartSoundAtVolume(player->mo, sfx_fshld1, 255/3); } + S_StopSoundByID(player->mo, sfx_fshld3); + player->flamedash += incr; if (!onground) @@ -11781,6 +11792,10 @@ void K_MoveKartPlayer(player_t *player, boolean onground) FixedMul((50*player->mo->scale), K_GetKartGameSpeedScalar(gamespeed)) ); + S_StopSoundByID(player->mo, sfx_fshld1); + S_StopSoundByID(player->mo, sfx_fshld0); + S_StartSoundAtVolume(player->mo, sfx_fshld2, 255/3); + player->flamemeter = 0; player->flamelength = 0; player->pflags &= ~PF_HOLDREADY; @@ -11794,7 +11809,12 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (!(gametyperules & GTR_CLOSERPLAYERS) || leveltime % 6 == 0) { if (player->flamemeter > 0) + { player->flamemeter--; + if (!player->flamemeter) + S_StopSoundByID(player->mo, sfx_fshld3); + } + } if (player->flamelength > destlen) diff --git a/src/p_mobj.c b/src/p_mobj.c index 16226b024..41d266b61 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -7912,9 +7912,15 @@ static boolean P_MobjRegularThink(mobj_t *mobj) newScale = FixedMul(newScale, FixedDiv(newHeight / 2, mobj->target->height)); } + if (mobj->target->player->curshield == KSHIELD_FLAME) + { + newScale = 8 * newScale / 5; + } + mobj->angle = K_MomentumAngle(mobj->target); P_MoveOrigin(mobj, mobj->target->x, mobj->target->y, mobj->target->z + (newHeight / 2)); mobj->destscale = newScale; + P_SetScale(mobj, newScale); if (mobj->extravalue1) @@ -8397,9 +8403,9 @@ static boolean P_MobjRegularThink(mobj_t *mobj) P_RemoveMobj(mobj); return false; } - P_SetScale(mobj, (mobj->destscale = (5*mobj->target->scale)>>2)); + P_SetScale(mobj, (mobj->destscale = (7*mobj->target->scale)>>2)); - P_MoveOrigin(mobj, mobj->target->x, mobj->target->y, mobj->target->z); + P_MoveOrigin(mobj, mobj->target->x, mobj->target->y, mobj->target->z + mobj->target->height/2); break; } case MT_BUBBLESHIELD: @@ -8526,7 +8532,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) flamemax = mobj->target->player->flamelength; - P_SetScale(mobj, (mobj->destscale = (5*mobj->target->scale)>>2)); + P_SetScale(mobj, (mobj->destscale = (8*mobj->target->scale)>>2)); curstate = ((mobj->tics == 1) ? (mobj->state->nextstate) : ((statenum_t)(mobj->state-states))); @@ -8595,7 +8601,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) } } - P_MoveOrigin(mobj, mobj->target->x, mobj->target->y, mobj->target->z); + P_MoveOrigin(mobj, mobj->target->x, mobj->target->y, mobj->target->z + mobj->target->height/2); mobj->angle = K_MomentumAngle(mobj->target); if (underlayst != S_NULL) diff --git a/src/sounds.c b/src/sounds.c index 145bd5ae9..8c2b32daf 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -1113,6 +1113,12 @@ sfxinfo_t S_sfx[NUMSFX] = {"slot04", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Seven"}, {"slot05", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "JACKPOT!"}, + // RR - Flame Shield + {"fshld0", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flame Shield activate"}, + {"fshld1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flame Shield hold"}, + {"fshld2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flame Shield burst"}, + {"fshld3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flame Shield cooldown"}, + // RR - Ballhog Charge {"bhog00", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Ballhog charging"}, {"bhog01", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Ballhog charging"}, diff --git a/src/sounds.h b/src/sounds.h index 5c87d1cf1..e5648e3cd 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -1181,6 +1181,12 @@ typedef enum sfx_slot04, sfx_slot05, + // RR - Flame Shield + sfx_fshld0, + sfx_fshld1, + sfx_fshld2, + sfx_fshld3, + // RR - Ballhog Charge sfx_bhog00, sfx_bhog01,