mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-28 13:21:10 +00:00
Separate grow & invincibility alarms, donated by VAda
This commit is contained in:
parent
ad625296c2
commit
60dcd3470b
3 changed files with 46 additions and 31 deletions
71
src/k_kart.c
71
src/k_kart.c
|
@ -3901,6 +3901,41 @@ static void K_UpdateEngineSounds(player_t *player, ticcmd_t *cmd)
|
||||||
S_StartSoundAtVolume(player->mo, (sfx_krta00 + player->kartstuff[k_enginesnd]) + (class*numsnds), volume);
|
S_StartSoundAtVolume(player->mo, (sfx_krta00 + player->kartstuff[k_enginesnd]) + (class*numsnds), volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void K_UpdateInvincibilitySounds(player_t *player)
|
||||||
|
{
|
||||||
|
INT32 sfxnum = sfx_None;
|
||||||
|
|
||||||
|
if (player->mo->health > 0 && !P_IsLocalPlayer(player))
|
||||||
|
{
|
||||||
|
if (cv_kartinvinsfx.value)
|
||||||
|
{
|
||||||
|
if (player->kartstuff[k_growshrinktimer] > 0) // Prioritize Grow
|
||||||
|
sfxnum = sfx_alarmg;
|
||||||
|
else if (player->kartstuff[k_invincibilitytimer] > 0)
|
||||||
|
sfxnum = sfx_alarmi;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (player->kartstuff[k_growshrinktimer] > 0)
|
||||||
|
sfxnum = sfx_kgrow;
|
||||||
|
else if (player->kartstuff[k_invincibilitytimer] > 0)
|
||||||
|
sfxnum = sfx_kinvnc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sfxnum != sfx_None && !S_SoundPlaying(player->mo, sfxnum))
|
||||||
|
S_StartSound(player->mo, sfxnum);
|
||||||
|
|
||||||
|
#define STOPTHIS(this) \
|
||||||
|
if (sfxnum != this && S_SoundPlaying(player->mo, this)) \
|
||||||
|
S_StopSoundByID(player->mo, this);
|
||||||
|
STOPTHIS(sfx_alarmi);
|
||||||
|
STOPTHIS(sfx_alarmg);
|
||||||
|
STOPTHIS(sfx_kinvnc);
|
||||||
|
STOPTHIS(sfx_kgrow);
|
||||||
|
#undef STOPTHIS
|
||||||
|
}
|
||||||
|
|
||||||
/** \brief Decreases various kart timers and powers per frame. Called in P_PlayerThink in p_user.c
|
/** \brief Decreases various kart timers and powers per frame. Called in P_PlayerThink in p_user.c
|
||||||
|
|
||||||
\param player player object passed from P_PlayerThink
|
\param player player object passed from P_PlayerThink
|
||||||
|
@ -3911,7 +3946,7 @@ static void K_UpdateEngineSounds(player_t *player, ticcmd_t *cmd)
|
||||||
void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
{
|
{
|
||||||
K_UpdateOffroad(player);
|
K_UpdateOffroad(player);
|
||||||
K_UpdateEngineSounds(player, cmd);
|
K_UpdateEngineSounds(player, cmd); // Thanks, VAda!
|
||||||
K_GetKartBoostPower(player);
|
K_GetKartBoostPower(player);
|
||||||
|
|
||||||
// Speed lines
|
// Speed lines
|
||||||
|
@ -4215,30 +4250,8 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
// Roulette Code
|
// Roulette Code
|
||||||
K_KartItemRoulette(player, cmd);
|
K_KartItemRoulette(player, cmd);
|
||||||
|
|
||||||
// Stopping of the horrible invincibility SFX
|
// Handle invincibility sfx
|
||||||
if (player->mo->health <= 0 || player->mo->player->kartstuff[k_invincibilitytimer] <= 0
|
K_UpdateInvincibilitySounds(player); // Also thanks, VAda!
|
||||||
|| player->mo->player->kartstuff[k_growshrinktimer] > 0) // If you don't have invincibility (or grow is active too)
|
|
||||||
{
|
|
||||||
if (S_SoundPlaying(player->mo, sfx_kinvnc)) // But the sound is playing
|
|
||||||
S_StopSoundByID(player->mo, sfx_kinvnc); // Stop it
|
|
||||||
}
|
|
||||||
|
|
||||||
// And the same for the grow SFX
|
|
||||||
if (!(player->mo->health > 0 && player->mo->player->kartstuff[k_growshrinktimer] > 0)) // If you aren't big
|
|
||||||
{
|
|
||||||
if (S_SoundPlaying(player->mo, sfx_kgrow)) // But the sound is playing
|
|
||||||
S_StopSoundByID(player->mo, sfx_kgrow); // Stop it
|
|
||||||
}
|
|
||||||
|
|
||||||
// AAAAAAND handle the invincibility alarm
|
|
||||||
if (player->mo->health > 0 && (player->mo->player->kartstuff[k_invincibilitytimer] > 0
|
|
||||||
|| player->mo->player->kartstuff[k_growshrinktimer] > 0))
|
|
||||||
{
|
|
||||||
if (leveltime % 13 == 0 && cv_kartinvinsfx.value && !P_IsLocalPlayer(player))
|
|
||||||
S_StartSound(player->mo, sfx_smkinv);
|
|
||||||
}
|
|
||||||
else if (S_SoundPlaying(player->mo, sfx_smkinv))
|
|
||||||
S_StopSoundByID(player->mo, sfx_smkinv);
|
|
||||||
|
|
||||||
// Plays the music after the starting countdown.
|
// Plays the music after the starting countdown.
|
||||||
if (P_IsLocalPlayer(player) && leveltime == (starttime + (TICRATE/2)))
|
if (P_IsLocalPlayer(player) && leveltime == (starttime + (TICRATE/2)))
|
||||||
|
@ -4843,8 +4856,8 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
}
|
}
|
||||||
player->kartstuff[k_invincibilitytimer] = itemtime+(2*TICRATE); // 10 seconds
|
player->kartstuff[k_invincibilitytimer] = itemtime+(2*TICRATE); // 10 seconds
|
||||||
P_RestoreMusic(player);
|
P_RestoreMusic(player);
|
||||||
if (!cv_kartinvinsfx.value && !P_IsLocalPlayer(player))
|
if (!P_IsLocalPlayer(player))
|
||||||
S_StartSound(player->mo, sfx_kinvnc);
|
S_StartSound(player->mo, (cv_kartinvinsfx.value ? sfx_alarmi : sfx_kinvnc));
|
||||||
K_PlayPowerGloatSound(player->mo);
|
K_PlayPowerGloatSound(player->mo);
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
}
|
}
|
||||||
|
@ -5042,8 +5055,8 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
player->mo->destscale = 6*player->mo->destscale/8;
|
player->mo->destscale = 6*player->mo->destscale/8;
|
||||||
player->kartstuff[k_growshrinktimer] = itemtime+(4*TICRATE); // 12 seconds
|
player->kartstuff[k_growshrinktimer] = itemtime+(4*TICRATE); // 12 seconds
|
||||||
P_RestoreMusic(player);
|
P_RestoreMusic(player);
|
||||||
if (!cv_kartinvinsfx.value && !P_IsLocalPlayer(player))
|
if (!P_IsLocalPlayer(player))
|
||||||
S_StartSound(player->mo, sfx_kgrow);
|
S_StartSound(player->mo, (cv_kartinvinsfx.value ? sfx_alarmg : sfx_kgrow));
|
||||||
S_StartSound(player->mo, sfx_kc5a);
|
S_StartSound(player->mo, sfx_kc5a);
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
}
|
}
|
||||||
|
|
|
@ -802,7 +802,8 @@ sfxinfo_t S_sfx[NUMSFX] =
|
||||||
{"shelit", false, 64, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"shelit", false, 64, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"vroom", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"vroom", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"boing", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"boing", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"smkinv", false, 140, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"alarmi", false, 140, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
|
{"alarmg", false, 140, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"screec", false, 52, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"screec", false, 52, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"yeeeah", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"yeeeah", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
{"noooo1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
{"noooo1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||||
|
|
|
@ -877,7 +877,8 @@ typedef enum
|
||||||
sfx_shelit,
|
sfx_shelit,
|
||||||
sfx_vroom,
|
sfx_vroom,
|
||||||
sfx_boing,
|
sfx_boing,
|
||||||
sfx_smkinv,
|
sfx_alarmi,
|
||||||
|
sfx_alarmg,
|
||||||
sfx_screec,
|
sfx_screec,
|
||||||
sfx_yeeeah,
|
sfx_yeeeah,
|
||||||
sfx_noooo1,
|
sfx_noooo1,
|
||||||
|
|
Loading…
Reference in a new issue