mirror of
https://github.com/yquake2/zaero.git
synced 2025-02-16 17:11:23 +00:00
Fix for some player sound bugs
This commit is contained in:
parent
df64f864b7
commit
e817bd38b9
3 changed files with 20 additions and 6 deletions
|
@ -1164,7 +1164,7 @@ struct edict_s
|
||||||
int dmg;
|
int dmg;
|
||||||
int radius_dmg;
|
int radius_dmg;
|
||||||
float dmg_radius;
|
float dmg_radius;
|
||||||
int sounds; //make this a spawntemp var?
|
int sounds; // now also used for player death sound aggregation
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
edict_t *chain;
|
edict_t *chain;
|
||||||
|
|
|
@ -610,8 +610,8 @@ void player_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damag
|
||||||
memset(self->client->pers.inventory, 0, sizeof(self->client->pers.inventory));
|
memset(self->client->pers.inventory, 0, sizeof(self->client->pers.inventory));
|
||||||
|
|
||||||
if (self->health < -40)
|
if (self->health < -40)
|
||||||
{ // gib
|
{ // gib (play sound at end of server frame)
|
||||||
gi.sound (self, CHAN_BODY, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0);
|
self->sounds = gi.soundindex ("misc/udeath.wav");
|
||||||
for (n= 0; n < 4; n++)
|
for (n= 0; n < 4; n++)
|
||||||
ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
|
ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
|
||||||
ThrowClientHead (self, damage);
|
ThrowClientHead (self, damage);
|
||||||
|
@ -647,7 +647,10 @@ void player_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damag
|
||||||
self->client->anim_end = FRAME_death308;
|
self->client->anim_end = FRAME_death308;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
gi.sound (self, CHAN_VOICE, gi.soundindex(va("*death%i.wav", (rand()%4)+1)), 1, ATTN_NORM, 0);
|
|
||||||
|
// play sound at end of server frame
|
||||||
|
if (!self->sounds)
|
||||||
|
self->sounds = gi.soundindex(va("*death%i.wav", (rand()%4)+1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,13 @@ void P_DamageFeedback (edict_t *player)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// death/gib sound is now aggregated and played here
|
||||||
|
if (player->sounds)
|
||||||
|
{
|
||||||
|
gi.sound (player, CHAN_VOICE, player->sounds, 1, ATTN_NORM, 0);
|
||||||
|
player->sounds = 0;
|
||||||
|
}
|
||||||
|
|
||||||
client = player->client;
|
client = player->client;
|
||||||
|
|
||||||
// flash the backgrounds behind the status numbers
|
// flash the backgrounds behind the status numbers
|
||||||
|
@ -116,7 +123,7 @@ void P_DamageFeedback (edict_t *player)
|
||||||
count = 10; // always make a visible effect
|
count = 10; // always make a visible effect
|
||||||
|
|
||||||
// play an apropriate pain sound
|
// play an apropriate pain sound
|
||||||
if ((level.time > player->pain_debounce_time) && !(player->flags & FL_GODMODE) && (client->invincible_framenum <= level.framenum))
|
if ((level.time > player->pain_debounce_time) && !(player->flags & FL_GODMODE) && (client->invincible_framenum <= level.framenum) && player->health > 0)
|
||||||
{
|
{
|
||||||
r = 1 + (rand()&1);
|
r = 1 + (rand()&1);
|
||||||
player->pain_debounce_time = level.time + 0.7;
|
player->pain_debounce_time = level.time + 0.7;
|
||||||
|
@ -787,7 +794,8 @@ void P_WorldEffects (void)
|
||||||
{
|
{
|
||||||
if (current_player->health > 0
|
if (current_player->health > 0
|
||||||
&& current_player->pain_debounce_time <= level.time
|
&& current_player->pain_debounce_time <= level.time
|
||||||
&& current_client->invincible_framenum < level.framenum)
|
&& current_client->invincible_framenum < level.framenum
|
||||||
|
&& !(current_player->flags & FL_GODMODE))
|
||||||
{
|
{
|
||||||
if (rand()&1)
|
if (rand()&1)
|
||||||
gi.sound (current_player, CHAN_VOICE, gi.soundindex("player/burn1.wav"), 1, ATTN_NORM, 0);
|
gi.sound (current_player, CHAN_VOICE, gi.soundindex("player/burn1.wav"), 1, ATTN_NORM, 0);
|
||||||
|
@ -895,6 +903,9 @@ void G_SetClientEvent (edict_t *ent)
|
||||||
if (ent->s.event)
|
if (ent->s.event)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (ent->health <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if ( ent->groundentity && xyspeed > 225)
|
if ( ent->groundentity && xyspeed > 225)
|
||||||
{
|
{
|
||||||
if ( (int)(current_client->bobtime+bobmove) != bobcycle )
|
if ( (int)(current_client->bobtime+bobmove) != bobcycle )
|
||||||
|
|
Loading…
Reference in a new issue