From 7e67bce16b8247e7db1611c564dd76d90de7db08 Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 10 Jan 2009 18:10:33 +0000 Subject: [PATCH] make voice sounds a bit louder again git-svn-id: svn://svn.icculus.org/nexuiz/trunk@5483 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 2 +- .../menu/nexuiz/dialog_multiplayer_create.c | 1 + .../qcsrc/menu/nexuiz/dialog_settings_audio.c | 7 +- .../menu/nexuiz/dialog_settings_effects.c | 5 +- data/qcsrc/server/cl_client.qc | 4 +- data/qcsrc/server/cl_physics.qc | 6 +- data/qcsrc/server/cl_player.qc | 159 +++++++++--------- data/qcsrc/server/defs.qh | 13 +- data/qcsrc/server/pathlib.qc | 1 - data/qcsrc/server/sv_main.qc | 6 +- .../server/tturrets/units/unit_ewheel.qc | 2 +- 11 files changed, 107 insertions(+), 99 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index 3995bf038..d0e7420fa 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -124,7 +124,7 @@ cl_autodemo_nameformat demos/%Y-%m-%d_%H-%M // taunts and voices seta cl_autotaunt 0.65 -seta cl_voice_directional 1 // 0 = all voices are non-directional, 1 = all voices are directional +seta cl_voice_directional 1 // 0 = all voices are non-directional, 1 = all voices are directional, 2 = only taunts are directional seta cl_voice_directional_taunt_attenuation 0.5 // server settings diff --git a/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c b/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c index 02eef2c64..614e4cfa1 100644 --- a/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c +++ b/data/qcsrc/menu/nexuiz/dialog_multiplayer_create.c @@ -108,6 +108,7 @@ void fillNexuizServerCreateTab(entity me) me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Bot skill:")); + setDependent(e, "bot_number", 0, -1); me.TD(me, 1, 2, e = makeNexuizTextSlider("skill")); e.addValue(e, "Botlike", "0"); e.addValue(e, "Beginner", "1"); diff --git a/data/qcsrc/menu/nexuiz/dialog_settings_audio.c b/data/qcsrc/menu/nexuiz/dialog_settings_audio.c index 34ef8ca77..cde49c22f 100644 --- a/data/qcsrc/menu/nexuiz/dialog_settings_audio.c +++ b/data/qcsrc/menu/nexuiz/dialog_settings_audio.c @@ -127,10 +127,14 @@ void fillNexuizAudioSettingsTab(entity me) setDependent(e, "snd_channels", 1.5, 0.5); me.TR(me); me.TR(me); - me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "cl_voice_directional", "Play voice messages directionally")); + me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Directional voices:")); + me.TD(me, 1, 2/3, e = makeNexuizRadioButton(1, "cl_voice_directional", "0", "None")); + me.TD(me, 1, 2/3, e = makeNexuizRadioButton(1, "cl_voice_directional", "2", "Taunts")); + me.TD(me, 1, 2/3, e = makeNexuizRadioButton(1, "cl_voice_directional", "1", "All")); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Taunt range:")); + setDependent(e, "cl_voice_directional", 0.5, -0.5); me.TD(me, 1, 1.8, e = makeNexuizTextSlider("cl_voice_directional_taunt_attenuation")); e.addValue(e, "Very short", "3"); e.addValue(e, "Short", "2"); @@ -138,6 +142,7 @@ void fillNexuizAudioSettingsTab(entity me) e.addValue(e, "Long", "0.25"); e.addValue(e, "Full", "0.015625"); e.configureNexuizTextSliderValues(e); + setDependent(e, "cl_voice_directional", 0.5, -0.5); me.TR(me); sl = makeNexuizSlider(0.15, 1, 0.05, "cl_autotaunt"); sl.valueDisplayMultiplier = 100; diff --git a/data/qcsrc/menu/nexuiz/dialog_settings_effects.c b/data/qcsrc/menu/nexuiz/dialog_settings_effects.c index 8510508e5..363392bf8 100644 --- a/data/qcsrc/menu/nexuiz/dialog_settings_effects.c +++ b/data/qcsrc/menu/nexuiz/dialog_settings_effects.c @@ -76,11 +76,13 @@ void fillNexuizEffectsSettingsTab(entity me) me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Distance:")); + setDependent(e, "cl_decals", 1, 1); me.TD(me, 1, 2, e = makeNexuizSlider(200, 500, 20, "r_drawdecals_drawdistance")); setDependent(e, "cl_decals", 1, 1); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Time:")); + setDependent(e, "cl_decals", 1, 1); me.TD(me, 1, 2, e = makeNexuizSlider(1, 20, 1, "cl_decals_time")); setDependent(e, "cl_decals", 1, 1); @@ -157,11 +159,10 @@ void fillNexuizEffectsSettingsTab(entity me) me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Damage kick:")); me.TD(me, 1, 2, e = makeNexuizSlider(0, 0.5, 0.05, "v_kicktime")); - me.TR(me); - me.TR(me); if(cvar("developer")) me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "r_showsurfaces", "Show surfaces")); + e.yesValue = 3; me.gotoRC(me, me.rows - 1, 0); me.TD(me, 1, me.columns, makeNexuizCommandButton("Apply immediately", '0 0 0', "sendcvar cl_nogibs; r_restart", COMMANDBUTTON_APPLY)); diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index c1bbbb5bf..b559b3640 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -2299,7 +2299,7 @@ void PlayerPreThink (void) oldself = self; self = self.teamkill_soundsource; oldpusher = self.pusher; self.pusher = oldself; - PlayerSound(playersound_teamshoot, CHAN_VOICE, 3); + PlayerSound(playersound_teamshoot, CHAN_VOICE, VOICETYPE_LASTATTACKER_ONLY); self.pusher = oldpusher; self = oldself; @@ -2309,7 +2309,7 @@ void PlayerPreThink (void) if(time > self.taunt_soundtime) { self.taunt_soundtime = 0; - PlayerSound(playersound_taunt, CHAN_VOICE, 4); + PlayerSound(playersound_taunt, CHAN_VOICE, VOICETYPE_AUTOTAUNT); } target_voicescript_next(self); diff --git a/data/qcsrc/server/cl_physics.qc b/data/qcsrc/server/cl_physics.qc index b5c3cde71..2435e6b24 100644 --- a/data/qcsrc/server/cl_physics.qc +++ b/data/qcsrc/server/cl_physics.qc @@ -85,7 +85,7 @@ void PlayerJump (void) player_setanim(self.anim_jump, FALSE, TRUE, TRUE); if(g_jump_grunt) - PlayerSound(playersound_jump, CHAN_PLAYER, 0); + PlayerSound(playersound_jump, CHAN_PLAYER, VOICETYPE_PLAYERSOUND); } void CheckWaterJump() @@ -497,9 +497,9 @@ void SV_PlayerPhysics() if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS) { if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS) - GlobalSound(globalsound_metalfall, CHAN_PLAYER, 0); + GlobalSound(globalsound_metalfall, CHAN_PLAYER, VOICETYPE_PLAYERSOUND); else - GlobalSound(globalsound_fall, CHAN_PLAYER, 0); + GlobalSound(globalsound_fall, CHAN_PLAYER, VOICETYPE_PLAYERSOUND); } } } diff --git a/data/qcsrc/server/cl_player.qc b/data/qcsrc/server/cl_player.qc index 2260c6495..f38b061c4 100644 --- a/data/qcsrc/server/cl_player.qc +++ b/data/qcsrc/server/cl_player.qc @@ -431,13 +431,13 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht // exclude pain sounds for laserjumps as long as you aren't REALLY low on health and would die of the next two { if(self.health > 75) // TODO make a "gentle" version? - PlayerSound(playersound_pain100, CHAN_PAIN, 0); + PlayerSound(playersound_pain100, CHAN_PAIN, VOICETYPE_PLAYERSOUND); else if(self.health > 50) - PlayerSound(playersound_pain75, CHAN_PAIN, 0); + PlayerSound(playersound_pain75, CHAN_PAIN, VOICETYPE_PLAYERSOUND); else if(self.health > 25) - PlayerSound(playersound_pain50, CHAN_PAIN, 0); + PlayerSound(playersound_pain50, CHAN_PAIN, VOICETYPE_PLAYERSOUND); else if(self.health > 1) - PlayerSound(playersound_pain25, CHAN_PAIN, 0); + PlayerSound(playersound_pain25, CHAN_PAIN, VOICETYPE_PLAYERSOUND); } } @@ -482,9 +482,9 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht if(sv_gentle < 1) // TODO make a "gentle" version? { if(deathtype == DEATH_DROWN) - PlayerSound(playersound_drown, CHAN_PAIN, 0); + PlayerSound(playersound_drown, CHAN_PAIN, VOICETYPE_PLAYERSOUND); else - PlayerSound(playersound_death, CHAN_PAIN, 0); + PlayerSound(playersound_death, CHAN_PAIN, VOICETYPE_PLAYERSOUND); } // get rid of kill indicator @@ -896,13 +896,13 @@ void Say(entity source, float teamsay, string msgin, float floodcontrol) strunzone(msgstr); } -float GetVoiceMessageTeamsayType(string type) +float GetVoiceMessageVoiceType(string type) { if(type == "taunt") - return 5; + return VOICETYPE_TAUNT; if(type == "teamshoot") - return 2; - return 1; + return VOICETYPE_LASTATTACKER; + return VOICETYPE_TEAMRADIO; } string allvoicesamples; @@ -1025,9 +1025,10 @@ void UpdatePlayerSounds() LoadPlayerSounds(strcat(self.model, ".sounds"), 0); } -void GlobalSound(string sample, float chan, float teamsay) +void GlobalSound(string sample, float chan, float voicetype) { float n; + float tauntrand; if(sample == "") return; @@ -1039,90 +1040,82 @@ void GlobalSound(string sample, float chan, float teamsay) else sample = strcat(argv(0), ".wav"); // randomization - if(teamsay == 3) // only to last attacker + switch(voicetype) { - if(self.pusher) - if(self.pusher.team == self.team) - { - msg_entity = self.pusher; - if(clienttype(msg_entity) == CLIENTTYPE_REAL) + case VOICETYPE_LASTATTACKER_ONLY: + if(self.pusher) + if(self.pusher.team == self.team) { - if(msg_entity.cvar_cl_voice_directional) - soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_MIN); - else + msg_entity = self.pusher; + if(clienttype(msg_entity) == CLIENTTYPE_REAL) + { + if(msg_entity.cvar_cl_voice_directional == 1) + soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_MIN); + else + soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_NONE); + } + } + break; + case VOICETYPE_LASTATTACKER: + if(self.pusher) + if(self.pusher.team == self.team) + { + msg_entity = self.pusher; + if(clienttype(msg_entity) == CLIENTTYPE_REAL) + { + if(msg_entity.cvar_cl_voice_directional == 1) + soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_MIN); + else + soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_NONE); + } + msg_entity = self; + if(clienttype(msg_entity) == CLIENTTYPE_REAL) soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE); } - } - } - else if(teamsay == 2) // only to last attacker and self - { - if(self.pusher) - if(self.pusher.team == self.team) - { - msg_entity = self.pusher; - if(clienttype(msg_entity) == CLIENTTYPE_REAL) + break; + case VOICETYPE_TEAMRADIO: + FOR_EACH_REALCLIENT(msg_entity) + if(!teams_matter || msg_entity.team == self.team) { - if(msg_entity.cvar_cl_voice_directional) - soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_MIN); + if(msg_entity.cvar_cl_voice_directional == 1) + soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_MIN); else - soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE); + soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_NONE); } - msg_entity = self; - if(clienttype(msg_entity) == CLIENTTYPE_REAL) - soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE); - } - } - else if(teamsay == 0) // to everyone - { - // note: player sound - // broadcast the sound, but it's directional - sound(self, chan, sample, VOL_BASE, ATTN_NORM); - } - else if(teamsay == 1) // to the same team - { - entity e; - FOR_EACH_REALCLIENT(e) - if(!teams_matter || e.team == self.team) + break; + case VOICETYPE_AUTOTAUNT: + tauntrand = random(); + FOR_EACH_REALCLIENT(msg_entity) + if (tauntrand < msg_entity.cvar_cl_autotaunt) + { + if (msg_entity.cvar_cl_voice_directional >= 1) + soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX)); + else + soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_NONE); + } + break; + case VOICETYPE_TAUNT: + FOR_EACH_REALCLIENT(msg_entity) { - msg_entity = e; - if(msg_entity.cvar_cl_voice_directional) - soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_MIN); + if (msg_entity.cvar_cl_voice_directional >= 1) + soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX)); else - soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE); + soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_NONE); } - } - else if(teamsay == 4) // auto taunt - { - float tauntrand; - tauntrand = random(); - FOR_EACH_REALCLIENT(e) - if (tauntrand < e.cvar_cl_autotaunt) - { - msg_entity = e; - if (e.cvar_cl_voice_directional) - soundto(MSG_ONE, self, chan, sample, VOL_BASE, bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX)); - else - soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE); - } - } - else if(teamsay == 5) // manual taunt - { - FOR_EACH_REALCLIENT(e) - { - msg_entity = e; - if (e.cvar_cl_voice_directional) - soundto(MSG_ONE, self, chan, sample, VOL_BASE, bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX)); - else - soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE); - } + case VOICETYPE_PLAYERSOUND: + sound(self, chan, sample, VOL_BASE, ATTN_NORM); + break; + default: + backtrace("Invalid voice type!"); + break; } } -void PlayerSound(.string samplefield, float chan, float teamsay) +void PlayerSound(.string samplefield, float chan, float voicetype) { string sample; sample = self.samplefield; - GlobalSound(sample, chan, teamsay); + GlobalSound(sample, chan, voicetype); } .float floodcontrol_voice; @@ -1130,7 +1123,7 @@ void PlayerSound(.string samplefield, float chan, float teamsay) void VoiceMessage(string type, string msg) { var .string sample; - var float teamsay, ownteam; + var float voicetype, ownteam; sample = GetVoiceMessageSampleField(type); if(GetPlayerSoundSampleField_notFound) @@ -1139,8 +1132,8 @@ void VoiceMessage(string type, string msg) return; } - teamsay = GetVoiceMessageTeamsayType(type); - ownteam = (teamsay == 1); + voicetype = GetVoiceMessageVoiceType(type); + ownteam = (voicetype == VOICETYPE_TEAMRADIO); float flood; float flood_spv; @@ -1167,5 +1160,5 @@ void VoiceMessage(string type, string msg) Say(self, ownteam, msg, 0); if (!flood) - PlayerSound(sample, CHAN_VOICE, teamsay); + PlayerSound(sample, CHAN_VOICE, voicetype); } diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index 1dea0e816..b1a136070 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -13,6 +13,7 @@ float require_spawnfunc_prefix; // if this float exists, only functions with spa #define BUTTON_USE buttonuse #define VOL_BASE 0.7 +#define VOL_BASEVOICE 1.0 // Globals @@ -467,12 +468,20 @@ string globalsound_fall; string globalsound_metalfall; string globalsound_step; string globalsound_metalstep; + +#define VOICETYPE_PLAYERSOUND 10 +#define VOICETYPE_TEAMRADIO 11 +#define VOICETYPE_LASTATTACKER 12 +#define VOICETYPE_LASTATTACKER_ONLY 13 +#define VOICETYPE_AUTOTAUNT 14 +#define VOICETYPE_TAUNT 15 + void PrecachePlayerSounds(string f); void PrecacheGlobalSound(string samplestring); void UpdatePlayerSounds(); void ClearPlayerSounds(); -void PlayerSound(.string samplefield, float channel, float teamsay); // 0 is normal, 1 is team, 2 is last attacker -void GlobalSound(string samplestring, float channel, float teamsay); // 0 is normal, 1 is team, 2 is last attacker +void PlayerSound(.string samplefield, float channel, float voicetype); +void GlobalSound(string samplestring, float channel, float voicetype); void VoiceMessage(string type, string message); // autotaunt system diff --git a/data/qcsrc/server/pathlib.qc b/data/qcsrc/server/pathlib.qc index e0e7601a9..46ab028a9 100644 --- a/data/qcsrc/server/pathlib.qc +++ b/data/qcsrc/server/pathlib.qc @@ -265,7 +265,6 @@ float pathlib_path(entity start,entity end,float pathing_method) case PT_ASTAR: dprint("Pathlib error: A* pathing not implemented!\n"); return 0; - break; default: subpath_point = pathlib_subpath_quickstar(start,end,start.owner.path_subpathing_size); dprint("Pathlib warning: unknown pathing method, using quickstar!\n"); diff --git a/data/qcsrc/server/sv_main.qc b/data/qcsrc/server/sv_main.qc index c4aab697c..35ee6719f 100644 --- a/data/qcsrc/server/sv_main.qc +++ b/data/qcsrc/server/sv_main.qc @@ -19,7 +19,7 @@ void CreatureFrame (void) if (self.waterlevel != 3) { if(self.air_finished < time + 9) - PlayerSound(playersound_gasp, CHAN_PLAYER, 0); + PlayerSound(playersound_gasp, CHAN_PLAYER, VOICETYPE_PLAYERSOUND); self.air_finished = time + 12; self.dmg = 2; } @@ -107,9 +107,9 @@ void CreatureFrame (void) if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS) { if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS) - GlobalSound(globalsound_metalstep, CHAN_PLAYER, 0); + GlobalSound(globalsound_metalstep, CHAN_PLAYER, VOICETYPE_PLAYERSOUND); else - GlobalSound(globalsound_step, CHAN_PLAYER, 0); + GlobalSound(globalsound_step, CHAN_PLAYER, VOICETYPE_PLAYERSOUND); } } } diff --git a/data/qcsrc/server/tturrets/units/unit_ewheel.qc b/data/qcsrc/server/tturrets/units/unit_ewheel.qc index b53d2e38c..0c7300f24 100644 --- a/data/qcsrc/server/tturrets/units/unit_ewheel.qc +++ b/data/qcsrc/server/tturrets/units/unit_ewheel.qc @@ -26,7 +26,7 @@ void ewheel_attack() vector v; float f,i; - for (i=0;i<1;i++) + for (i=0;i<1;++i) { f = gettagindex(self.tur_head,"tag_fire"); v = gettaginfo(self.tur_head,f); -- 2.39.2