From c1048ffa3621fef022542327bf93b282db1dd6f7 Mon Sep 17 00:00:00 2001 From: div0 Date: Wed, 6 Aug 2008 06:33:35 +0000 Subject: [PATCH] gave some entity channels more descriptive names; add an entity channel mixer to the menu git-svn-id: svn://svn.icculus.org/nexuiz/trunk@4035 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/menu/nexuiz/dialog_settings_misc.c | 68 +++++++++++++++++-- data/qcsrc/server/arena.qc | 2 +- data/qcsrc/server/cl_client.qc | 2 +- data/qcsrc/server/cl_player.qc | 12 ++-- data/qcsrc/server/constants.qh | 16 ++--- data/qcsrc/server/ctf.qc | 10 +-- data/qcsrc/server/domination.qc | 2 +- data/qcsrc/server/g_casings.qc | 2 +- data/qcsrc/server/g_hook.qc | 2 +- data/qcsrc/server/g_triggers.qc | 4 +- data/qcsrc/server/g_violence.qc | 8 +-- data/qcsrc/server/keyhunt.qc | 8 +-- data/qcsrc/server/mode_onslaught.qc | 12 ++-- data/qcsrc/server/t_items.qc | 4 +- data/qcsrc/server/t_jumppads.qc | 2 +- data/qcsrc/server/t_plats.qc | 40 +++++------ data/qcsrc/server/t_teleporters.qc | 4 +- data/qcsrc/server/w_electro.qc | 14 ++-- data/qcsrc/server/w_grenadelauncher.qc | 16 ++--- data/qcsrc/server/w_hagar.qc | 12 ++-- data/qcsrc/server/w_laser.qc | 2 +- data/qcsrc/server/w_nex.qc | 2 +- data/qcsrc/server/w_rocketlauncher.qc | 8 +-- 23 files changed, 156 insertions(+), 96 deletions(-) diff --git a/data/qcsrc/menu/nexuiz/dialog_settings_misc.c b/data/qcsrc/menu/nexuiz/dialog_settings_misc.c index aaa228744..a75f17ad9 100644 --- a/data/qcsrc/menu/nexuiz/dialog_settings_misc.c +++ b/data/qcsrc/menu/nexuiz/dialog_settings_misc.c @@ -32,16 +32,76 @@ void fillNexuizMiscSettingsTab(entity me) s = makeNexuizDecibelsSlider(-20, 0, 0.5, "bgmvolume"); me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Music:")); me.TD(me, 1, 2, s); + me.TR(me); me.TR(me); s = makeNexuizDecibelsSlider(-20, 0, 0.5, "volume"); - me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Game:")); + me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Game (Master):")); me.TD(me, 1, 2, s); me.TR(me); + me.TDempty(me, 0.2); s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_staticvolume"); - me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Ambient:")); + me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Ambient:")); + me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "volume", "0"); + setDependentStringNotEqual(s, "volume", "0"); + me.TR(me); + me.TDempty(me, 0.2); + s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_entchannel0volume"); + me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Announcer/Chat:")); + me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "volume", "0"); + setDependentStringNotEqual(s, "volume", "0"); + me.TR(me); + me.TDempty(me, 0.2); + s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_entchannel1volume"); + me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Weapon fire:")); + me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "volume", "0"); + setDependentStringNotEqual(s, "volume", "0"); + me.TR(me); + me.TDempty(me, 0.2); + s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_entchannel2volume"); + me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Voice/Radio:")); + me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "volume", "0"); + setDependentStringNotEqual(s, "volume", "0"); + me.TR(me); + me.TDempty(me, 0.2); + s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_entchannel3volume"); + me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Triggers:")); + me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "volume", "0"); + setDependentStringNotEqual(s, "volume", "0"); + me.TR(me); + me.TDempty(me, 0.2); + s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_entchannel4volume"); + me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Projectiles:")); + me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "volume", "0"); + setDependentStringNotEqual(s, "volume", "0"); + me.TR(me); + me.TDempty(me, 0.2); + s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_entchannel5volume"); + me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Powerups:")); me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "volume", "0"); + setDependentStringNotEqual(s, "volume", "0"); me.TR(me); + me.TDempty(me, 0.2); + s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_entchannel6volume"); + me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Pain:")); + me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "volume", "0"); + setDependentStringNotEqual(s, "volume", "0"); me.TR(me); + me.TDempty(me, 0.2); + s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_entchannel7volume"); + me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Player body:")); + me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "volume", "0"); + setDependentStringNotEqual(s, "volume", "0"); + + me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Frequency:")); me.TD(me, 1, 2, e = makeNexuizTextSlider("snd_speed")); e.addValue(e, "8 kHz", "8000"); @@ -59,8 +119,8 @@ void fillNexuizMiscSettingsTab(entity me) me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 2.8, e = makeNexuizCheckBox(0, "snd_swapstereo", "Swap Stereo")); - - me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); + me.TR(me); + me.TR(me); me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "cl_autodemo", "Demo recording")); me.TR(me); me.TR(me); diff --git a/data/qcsrc/server/arena.qc b/data/qcsrc/server/arena.qc index 4fbb3edc9..1e003585b 100644 --- a/data/qcsrc/server/arena.qc +++ b/data/qcsrc/server/arena.qc @@ -79,7 +79,7 @@ void reset_map() } else if(self.flags & FL_PROJECTILE) // remove any projectiles left { - sound(self, CHAN_BODY, "misc/null.wav", VOL_BASE, ATTN_NORM); + sound(self, CHAN_PROJECTILE, "misc/null.wav", VOL_BASE, ATTN_NORM); remove(self); } else if(self.isdecor) diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 1f9b8897c..83799cf01 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -701,7 +701,7 @@ void PutClientInServer (void) //stuffcmd(self, "set viewsize $tmpviewsize \n"); if (cvar("g_spawnsound")) - sound (self, CHAN_ITEM, "misc/spawn.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, "misc/spawn.wav", VOL_BASE, ATTN_NORM); if(g_assault) { if(self.team == assault_attacker_team) diff --git a/data/qcsrc/server/cl_player.qc b/data/qcsrc/server/cl_player.qc index 639228423..5be1b5e1d 100644 --- a/data/qcsrc/server/cl_player.qc +++ b/data/qcsrc/server/cl_player.qc @@ -267,11 +267,11 @@ void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float take = bound(0, damage - save, damage); if (save > 10) - sound (self, CHAN_BODY, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM); else if (take > 30) - sound (self, CHAN_BODY, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM); else if (take > 10) - sound (self, CHAN_BODY, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM); if(sv_gentle < 1) { if (take > 50) @@ -379,11 +379,11 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht } if (save > 10) - sound (self, CHAN_BODY, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM); else if (take > 30) - sound (self, CHAN_BODY, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM); else if (take > 10) - sound (self, CHAN_BODY, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM); // FIXME possibly remove them? + sound (self, CHAN_PROJECTILE, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM); // FIXME possibly remove them? if (take > 50) TossGib (world, "models/gibs/chunk.mdl", hitloc, force * -0.1,1); diff --git a/data/qcsrc/server/constants.qh b/data/qcsrc/server/constants.qh index 842fc4885..8e4663442 100644 --- a/data/qcsrc/server/constants.qh +++ b/data/qcsrc/server/constants.qh @@ -106,14 +106,14 @@ float TE_LIGHTNING3 = 9; float TE_LAVASPLASH = 10; float TE_TELEPORT = 11; -float CHAN_AUTO = 0; // announcer/feedback only -float CHAN_WEAPON = 1; // firing only -float CHAN_VOICE = 2; // player voice messages only -float CHAN_ITEM = 3; // items only -float CHAN_BODY = 4; // projectiles, or their impact on a player -float CHAN_POWERUP = 5; // powerup effects -float CHAN_PAIN = 6; // player pain only -float CHAN_PLAYER = 7; // player body sounds only +float CHAN_AUTO = 0; // Announcer/Chat +float CHAN_WEAPON = 1; // Weapon fire +float CHAN_VOICE = 2; // Voice/Radio +float CHAN_TRIGGER = 3; // Triggers +float CHAN_PROJECTILE = 4; // Projectiles +float CHAN_POWERUP = 5; // Powerups +float CHAN_PAIN = 6; // Pain +float CHAN_PLAYER = 7; // Player body float ATTN_NONE = 0; float ATTN_NORM = 0.5; diff --git a/data/qcsrc/server/ctf.qc b/data/qcsrc/server/ctf.qc index 249199f3a..f0fd73399 100644 --- a/data/qcsrc/server/ctf.qc +++ b/data/qcsrc/server/ctf.qc @@ -214,7 +214,7 @@ void FlagThink() if (time > self.pain_finished) { bprint("The ", self.netname, " has returned to base\n"); - sound (e, CHAN_ITEM, self.noise3, VOL_BASE, ATTN_NONE); + sound (e, CHAN_TRIGGER, self.noise3, VOL_BASE, ATTN_NONE); LogCTF("returned", self.team, world); ReturnFlag(self); } @@ -294,7 +294,7 @@ void FlagTouch() if (head.team == self.team) UpdateFrags(head, cvar("g_ctf_flagscore_capture_team")); - sound (self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NONE); + sound (self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NONE); WaypointSprite_DetachCarrier(other); if(self.speedrunning) FakeTimeLimit(other, -1); @@ -325,7 +325,7 @@ void FlagTouch() UpdateFrags(other, cvar("g_ctf_flagscore_pickup")); PlayerScore_Add(other, SP_CTF_PICKUPS, 1); LogCTF("steal", self.team, other); - sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NONE); + sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NONE); FOR_EACH_PLAYER(player) if(player.team == self.team) @@ -352,7 +352,7 @@ void FlagTouch() UpdateFrags(other, cvar("g_ctf_flagscore_return_rogue")); PlayerScore_Add(other, SP_CTF_RETURNS, 1); LogCTF("return", self.team, other); - sound (self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NONE); + sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NONE); ReturnFlag(self); } else if (!other.flagcarried) @@ -366,7 +366,7 @@ void FlagTouch() bprint(other.netname, "^7 picked up the ", self.netname, "\n"); UpdateFrags(other, cvar("g_ctf_flagscore_pickup")); LogCTF("pickup", self.team, other); - sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NONE); + sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NONE); FOR_EACH_PLAYER(player) if(player.team == self.team) diff --git a/data/qcsrc/server/domination.qc b/data/qcsrc/server/domination.qc index 50beecbc3..32660984c 100644 --- a/data/qcsrc/server/domination.qc +++ b/data/qcsrc/server/domination.qc @@ -68,7 +68,7 @@ void dompoint_captured () self.enemy = world; if (head.noise != "") - sound(self, CHAN_ITEM, head.noise, VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, head.noise, VOL_BASE, ATTN_NORM); if (head.noise1 != "") play2all(head.noise1); diff --git a/data/qcsrc/server/g_casings.qc b/data/qcsrc/server/g_casings.qc index bcbb8b932..93b939590 100644 --- a/data/qcsrc/server/g_casings.qc +++ b/data/qcsrc/server/g_casings.qc @@ -8,7 +8,7 @@ void casingtouch() if (other.solid == SOLID_BSP) if (vlen(self.velocity) >= 50) if (time >= self.attack_finished_single) - sound (self, CHAN_BODY, "weapons/tink1.wav", 0.5 * VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/tink1.wav", 0.5 * VOL_BASE, ATTN_NORM); self.attack_finished_single = time + 0.2; //self.touch = SUB_Null; // one tink is enough //self.dest = self.origin - self.groundentity.origin; diff --git a/data/qcsrc/server/g_hook.qc b/data/qcsrc/server/g_hook.qc index ab9722fb9..44ec1d638 100644 --- a/data/qcsrc/server/g_hook.qc +++ b/data/qcsrc/server/g_hook.qc @@ -185,7 +185,7 @@ void GrapplingHookTouch (void) } pointparticles(particleeffectnum("grapple_impact"), self.origin, '0 0 0', 1); - sound (self, CHAN_BODY, "weapons/hook_impact.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/hook_impact.wav", VOL_BASE, ATTN_NORM); self.state = 1; self.think = GrapplingHookThink; diff --git a/data/qcsrc/server/g_triggers.qc b/data/qcsrc/server/g_triggers.qc index 5c4f061f6..6616e29dd 100644 --- a/data/qcsrc/server/g_triggers.qc +++ b/data/qcsrc/server/g_triggers.qc @@ -140,7 +140,7 @@ void multi_trigger() } if (self.noise) - sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM); // don't trigger again until reset self.takedamage = DAMAGE_NO; @@ -458,7 +458,7 @@ float tracebox_hits_trigger_hurt(vector start, vector mi, vector ma, vector end) } -void target_speaker_use() {sound(self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM);} +void target_speaker_use() {sound(self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM);} void spawnfunc_target_speaker() { diff --git a/data/qcsrc/server/g_violence.qc b/data/qcsrc/server/g_violence.qc index 17c4048f7..8b463c2e6 100644 --- a/data/qcsrc/server/g_violence.qc +++ b/data/qcsrc/server/g_violence.qc @@ -3,13 +3,13 @@ void GibDamage (entity inflictor, entity attacker, float damage, float deathtype float r; r = random (); if (r < 0.60) - sound (self, CHAN_BODY, "misc/gib_splat01.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/gib_splat01.wav", VOL_BASE, ATTN_NORM); else if (r < 0.65) - sound (self, CHAN_BODY, "misc/gib_splat02.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/gib_splat02.wav", VOL_BASE, ATTN_NORM); else if (r < 0.70) - sound (self, CHAN_BODY, "misc/gib_splat03.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/gib_splat03.wav", VOL_BASE, ATTN_NORM); else if (r < 0.75) - sound (self, CHAN_BODY, "misc/gib_splat04.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/gib_splat04.wav", VOL_BASE, ATTN_NORM); if(sv_gentle < 1) pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10); diff --git a/data/qcsrc/server/keyhunt.qc b/data/qcsrc/server/keyhunt.qc index 7cda049c4..c13cb7675 100644 --- a/data/qcsrc/server/keyhunt.qc +++ b/data/qcsrc/server/keyhunt.qc @@ -435,7 +435,7 @@ float kh_Key_AllOwnedByWhichTeam() // constantly called. check to see if all th void kh_Key_Collect(entity key, entity player) //a player picks up a dropped key { - sound(player, CHAN_ITEM, kh_sound_collect, VOL_BASE, ATTN_NORM); + sound(player, CHAN_TRIGGER, kh_sound_collect, VOL_BASE, ATTN_NORM); if(key.kh_dropperteam != player.team) { @@ -477,7 +477,7 @@ void kh_Key_DropAll(entity player, float suicide) // runs whenever a player dies if(suicide) key.kh_dropperteam = player.team; } - sound(player, CHAN_ITEM, kh_sound_drop, VOL_BASE, ATTN_NORM); + sound(player, CHAN_TRIGGER, kh_sound_drop, VOL_BASE, ATTN_NORM); } } @@ -542,7 +542,7 @@ void kh_Key_Think() // runs all the time self.pusher = world; kh_Scores_Event(self.owner, self, "dropkey", 0, 0); bprint(self.owner.netname, "^7 dropped the ", self.netname, "\n"); - sound(self.owner, CHAN_ITEM, kh_sound_drop, VOL_BASE, ATTN_NORM); + sound(self.owner, CHAN_TRIGGER, kh_sound_drop, VOL_BASE, ATTN_NORM); makevectors(self.owner.v_angle); self.velocity = W_CalculateProjectileVelocity(self.owner.velocity, cvar("g_balance_keyhunt_throwvelocity") * v_forward); kh_Key_AssignTo(self, world); @@ -561,7 +561,7 @@ void kh_Key_Think() // runs all the time { if(self.siren_time < time) { - sound(self.owner, CHAN_ITEM, kh_sound_alarm, VOL_BASE, ATTN_NORM); // play a simple alarm + sound(self.owner, CHAN_TRIGGER, kh_sound_alarm, VOL_BASE, ATTN_NORM); // play a simple alarm self.siren_time = time + 2.5; // repeat every 2.5 seconds } diff --git a/data/qcsrc/server/mode_onslaught.qc b/data/qcsrc/server/mode_onslaught.qc index 78a0bdffc..9578d897c 100644 --- a/data/qcsrc/server/mode_onslaught.qc +++ b/data/qcsrc/server/mode_onslaught.qc @@ -319,7 +319,7 @@ void onslaught_generator_think() { // self.max_health / 300 gives 5 minutes of overtime. // control points reduce the overtime duration. - sound(self, CHAN_ITEM, "sound/onslaught/generator_decay.wav", VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, "sound/onslaught/generator_decay.wav", VOL_BASE, ATTN_NORM); d = 1; e = findchain(classname, "onslaught_controlpoint"); while (e) @@ -343,13 +343,13 @@ void onslaught_generator_deaththink() self.count = self.count - 1; org = randompos(self.origin + self.mins + '8 8 8', self.origin + self.maxs + '-8 -8 -8'); pointparticles(particleeffectnum("onslaught_generator_smallexplosion"), org, '0 0 0', 1); - sound(self, CHAN_ITEM, "sound/weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, "sound/weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM); } else { org = self.origin; pointparticles(particleeffectnum("onslaught_generator_finalexplosion"), org, '0 0 0', 1); - sound(self, CHAN_ITEM, "sound/weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, "sound/weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); } }; @@ -622,7 +622,7 @@ void onslaught_controlpoint_icon_damage(entity inflictor, entity attacker, float self.colormod = '2 2 2'; if (self.health < 0) { - sound(self, CHAN_ITEM, "sound/weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, "sound/weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM); pointparticles(particleeffectnum("onslaught_controlpoint_explosion"), self.origin, '0 0 0', 1); { string t; @@ -672,7 +672,7 @@ void onslaught_controlpoint_icon_buildthink() self.health = self.max_health; self.count = self.count * 0.2; // slow repair rate from now on self.think = onslaught_controlpoint_icon_think; - sound(self, CHAN_ITEM, "sound/onslaught/controlpoint_built.wav", VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, "sound/onslaught/controlpoint_built.wav", VOL_BASE, ATTN_NORM); bprint(ColoredTeamName(self.team), " captured ", self.owner.message, " control point\n"); self.owner.iscaptured = TRUE; onslaught_updatelinks(); @@ -719,7 +719,7 @@ void onslaught_controlpoint_touch() e.think = onslaught_controlpoint_icon_buildthink; e.nextthink = time + 0.1; e.count = e.max_health / 50; // how long it takes to build - sound(e, CHAN_ITEM, "sound/onslaught/controlpoint_build.wav", VOL_BASE, ATTN_NORM); + sound(e, CHAN_TRIGGER, "sound/onslaught/controlpoint_build.wav", VOL_BASE, ATTN_NORM); self.team = e.team; self.colormap = e.colormap; }; diff --git a/data/qcsrc/server/t_items.qc b/data/qcsrc/server/t_items.qc index 97567abc5..971833629 100644 --- a/data/qcsrc/server/t_items.qc +++ b/data/qcsrc/server/t_items.qc @@ -5,7 +5,7 @@ void Item_Respawn (void) { self.model = self.mdl; // restore original model self.solid = SOLID_TRIGGER; // allow it to be touched again - sound (self, CHAN_ITEM, "misc/itemrespawn.wav", VOL_BASE, ATTN_NORM); // play respawn sound + sound (self, CHAN_TRIGGER, "misc/itemrespawn.wav", VOL_BASE, ATTN_NORM); // play respawn sound setorigin (self, self.origin); //pointparticles(particleeffectnum("item_respawn"), self.origin + self.mins_z * '0 0 1' + '0 0 48', '0 0 0', 1); @@ -185,7 +185,7 @@ void Item_Touch (void) if (!pickedup) return; - sound (other, CHAN_ITEM, self.item_pickupsound, VOL_BASE, ATTN_NORM); + sound (other, CHAN_TRIGGER, self.item_pickupsound, VOL_BASE, ATTN_NORM); oldself = self; self = other; diff --git a/data/qcsrc/server/t_jumppads.qc b/data/qcsrc/server/t_jumppads.qc index 9bd3a3a18..628c60c47 100644 --- a/data/qcsrc/server/t_jumppads.qc +++ b/data/qcsrc/server/t_jumppads.qc @@ -131,7 +131,7 @@ void trigger_push_touch() { // flash when activated pointparticles(particleeffectnum("jumppad_activate"), other.origin, other.velocity, 1); - sound (other, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM); + sound (other, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM); self.pushltime = time + 0.2; } if(clienttype(other) == CLIENTTYPE_REAL) diff --git a/data/qcsrc/server/t_plats.qc b/data/qcsrc/server/t_plats.qc index 66ca4832e..6e716c74d 100644 --- a/data/qcsrc/server/t_plats.qc +++ b/data/qcsrc/server/t_plats.qc @@ -49,7 +49,7 @@ void plat_spawn_inside_trigger() void plat_hit_top() { - sound (self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM); self.state = 1; self.think = plat_go_down; self.nextthink = self.ltime + 3; @@ -57,20 +57,20 @@ void plat_hit_top() void plat_hit_bottom() { - sound (self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM); self.state = 2; }; void plat_go_down() { - sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM); self.state = 3; SUB_CalcMove (self.pos2, self.speed, plat_hit_bottom); }; void plat_go_up() { - sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM); self.state = 4; SUB_CalcMove (self.pos1, self.speed, plat_hit_top); }; @@ -246,7 +246,7 @@ void train_wait() if (self.wait) { self.nextthink = self.ltime + self.wait; - sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM); } else self.nextthink = self.ltime + 0.1; @@ -266,7 +266,7 @@ void train_next() self.wait = targ.wait; else self.wait = 0; - sound (self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM); SUB_CalcMove (targ.origin - self.mins, self.speed, train_wait); }; @@ -577,7 +577,7 @@ void button_fire() return; if (self.noise != "") - sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_NORM); self.state = STATE_UP; SUB_CalcMove (self.pos2, self.speed, button_wait); @@ -754,7 +754,7 @@ void door_blocked() void door_hit_top() { if (self.noise1 != "") - sound (self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM); self.state = STATE_TOP; if (self.spawnflags & DOOR_TOGGLE) return; // don't come down automatically @@ -765,14 +765,14 @@ void door_hit_top() void door_hit_bottom() { if (self.noise1 != "") - sound (self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM); self.state = STATE_BOTTOM; }; void door_go_down() { if (self.noise2 != "") - sound (self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM); if (self.max_health) { self.takedamage = DAMAGE_YES; @@ -795,7 +795,7 @@ void door_go_up() } if (self.noise2 != "") - sound (self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM); + sound (self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM); self.state = STATE_UP; SUB_CalcMove (self.pos2, self.speed, door_hit_top); @@ -1201,7 +1201,7 @@ void fd_secret_use() // Make a sound, wait a little... if (self.noise1 != "") - sound(self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, self.noise1, VOL_BASE, ATTN_NORM); self.nextthink = self.ltime + 0.1; temp = 1 - (self.spawnflags & SECRET_1ST_LEFT); // 1 or -1 @@ -1226,7 +1226,7 @@ void fd_secret_use() self.dest2 = self.dest1 + v_forward * self.t_length; SUB_CalcMove(self.dest1, self.speed, fd_secret_move1); if (self.noise2 != "") - sound(self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM); }; // Wait after first movement... @@ -1235,14 +1235,14 @@ void fd_secret_move1() self.nextthink = self.ltime + 1.0; self.think = fd_secret_move2; if (self.noise3 != "") - sound(self, CHAN_ITEM, self.noise3, VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, self.noise3, VOL_BASE, ATTN_NORM); }; // Start moving sideways w/sound... void fd_secret_move2() { if (self.noise2 != "") - sound(self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM); SUB_CalcMove(self.dest2, self.speed, fd_secret_move3); }; @@ -1250,7 +1250,7 @@ void fd_secret_move2() void fd_secret_move3() { if (self.noise3 != "") - sound(self, CHAN_ITEM, self.noise3, VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, self.noise3, VOL_BASE, ATTN_NORM); if (!(self.spawnflags & SECRET_OPEN_ONCE)) { self.nextthink = self.ltime + self.wait; @@ -1262,7 +1262,7 @@ void fd_secret_move3() void fd_secret_move4() { if (self.noise2 != "") - sound(self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM); SUB_CalcMove(self.dest1, self.speed, fd_secret_move5); }; @@ -1272,13 +1272,13 @@ void fd_secret_move5() self.nextthink = self.ltime + 1.0; self.think = fd_secret_move6; if (self.noise3 != "") - sound(self, CHAN_ITEM, self.noise3, VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, self.noise3, VOL_BASE, ATTN_NORM); }; void fd_secret_move6() { if (self.noise2 != "") - sound(self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM); SUB_CalcMove(self.oldorigin, self.speed, fd_secret_done); }; @@ -1291,7 +1291,7 @@ void fd_secret_done() //self.th_pain = fd_secret_use; } if (self.noise3 != "") - sound(self, CHAN_ITEM, self.noise3, VOL_BASE, ATTN_NORM); + sound(self, CHAN_TRIGGER, self.noise3, VOL_BASE, ATTN_NORM); }; void secret_blocked() diff --git a/data/qcsrc/server/t_teleporters.qc b/data/qcsrc/server/t_teleporters.qc index 6748548be..43c62189d 100644 --- a/data/qcsrc/server/t_teleporters.qc +++ b/data/qcsrc/server/t_teleporters.qc @@ -63,11 +63,11 @@ void Teleport_Touch (void) return; // Make teleport effect where the player left - sound (other, CHAN_ITEM, "misc/teleport.wav", VOL_BASE, ATTN_NORM); + sound (other, CHAN_TRIGGER, "misc/teleport.wav", VOL_BASE, ATTN_NORM); pointparticles(particleeffectnum("teleport"), other.origin, '0 0 0', 1); // Make teleport effect where the player arrived - sound (self.enemy, CHAN_ITEM, "misc/teleport.wav", VOL_BASE, ATTN_NORM); + sound (self.enemy, CHAN_TRIGGER, "misc/teleport.wav", VOL_BASE, ATTN_NORM); makevectors (self.enemy.mangle); pointparticles(particleeffectnum("teleport"), self.enemy.origin + v_forward * 32, '0 0 0', 1); diff --git a/data/qcsrc/server/w_electro.qc b/data/qcsrc/server/w_electro.qc index 66f4cc5c2..30cf2b2ec 100644 --- a/data/qcsrc/server/w_electro.qc +++ b/data/qcsrc/server/w_electro.qc @@ -15,7 +15,7 @@ void W_Plasma_Explode (void) pointparticles(particleeffectnum("electro_impact"), org2, '0 0 0', 1); RadiusDamage (self, self.owner, cvar("g_balance_electro_primary_damage"), cvar("g_balance_electro_primary_edgedamage"), cvar("g_balance_electro_primary_radius"), world, cvar("g_balance_electro_primary_force"), IT_ELECTRO); } - sound (self, CHAN_BODY, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM); remove (self); } @@ -26,7 +26,7 @@ void W_Plasma_Explode_Combo (void) { org2 = findbetterlocation (self.origin, 8); pointparticles(particleeffectnum("electro_combo"), org2, '0 0 0', 1); - sound (self, CHAN_BODY, "weapons/electro_impact_combo.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/electro_impact_combo.wav", VOL_BASE, ATTN_NORM); self.event_damage = SUB_Null; RadiusDamage (self, self.owner, cvar("g_balance_electro_combo_damage"), cvar("g_balance_electro_combo_edgedamage"), cvar("g_balance_electro_combo_radius"), world, cvar("g_balance_electro_combo_force"), IT_ELECTRO); @@ -38,7 +38,7 @@ void W_Plasma_Touch (void) entity o; if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT) { - sound (self, CHAN_BODY, "misc/null.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/null.wav", VOL_BASE, ATTN_NORM); remove(self); return; } @@ -50,7 +50,7 @@ void W_Plasma_Touch (void) if(IsFlying(other)) announce(o, "announcer/male/electrobitch.ogg"); } else { - sound (self, CHAN_BODY, "weapons/electro_bounce.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/electro_bounce.wav", VOL_BASE, ATTN_NORM); } } @@ -59,7 +59,7 @@ void W_Plasma_TouchExplode (void) entity o; if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT) { - sound (self, CHAN_BODY, "misc/null.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/null.wav", VOL_BASE, ATTN_NORM); remove(self); return; } @@ -122,7 +122,7 @@ void W_Electro_Attack() setsize(proj, '0 0 0', '0 0 0'); // LordHavoc: disabled because no one likes this sound and it sometimes never stops due to packet loss - //sound (proj, CHAN_BODY, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM); + //sound (proj, CHAN_PROJECTILE, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM); } void W_Electro_Attack2() @@ -161,7 +161,7 @@ void W_Electro_Attack2() proj.flags = FL_PROJECTILE; // LordHavoc: disabled because no one likes this sound and it sometimes never stops due to packet loss - //sound (proj, CHAN_BODY, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM); + //sound (proj, CHAN_PROJECTILE, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM); } .float bot_secondary_electromooth; diff --git a/data/qcsrc/server/w_grenadelauncher.qc b/data/qcsrc/server/w_grenadelauncher.qc index 5139e1c3a..8e63f8430 100644 --- a/data/qcsrc/server/w_grenadelauncher.qc +++ b/data/qcsrc/server/w_grenadelauncher.qc @@ -4,7 +4,7 @@ void W_Grenade_Explode (void) vector org2; org2 = findbetterlocation (self.origin, 12); pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1); - sound (self, CHAN_BODY, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM); self.event_damage = SUB_Null; RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_primary_damage"), cvar("g_balance_grenadelauncher_primary_edgedamage"), cvar("g_balance_grenadelauncher_primary_radius"), world, cvar("g_balance_grenadelauncher_primary_force"), IT_GRENADE_LAUNCHER); @@ -17,7 +17,7 @@ void W_Grenade_Explode2 (void) vector org2; org2 = findbetterlocation (self.origin, 12); pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1); - sound (self, CHAN_BODY, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM); self.event_damage = SUB_Null; RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_secondary_damage"), cvar("g_balance_grenadelauncher_secondary_edgedamage"), cvar("g_balance_grenadelauncher_secondary_radius"), world, cvar("g_balance_grenadelauncher_secondary_force"), IT_GRENADE_LAUNCHER); @@ -49,17 +49,17 @@ void W_Grenade_Touch2 (void) float r; r = random() * 6; if(r < 1) - sound (self, CHAN_BODY, "weapons/grenade_bounce1.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce1.wav", VOL_BASE, ATTN_NORM); else if(r < 2) - sound (self, CHAN_BODY, "weapons/grenade_bounce2.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce2.wav", VOL_BASE, ATTN_NORM); else if(r < 3) - sound (self, CHAN_BODY, "weapons/grenade_bounce3.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce3.wav", VOL_BASE, ATTN_NORM); else if(r < 4) - sound (self, CHAN_BODY, "weapons/grenade_bounce4.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce4.wav", VOL_BASE, ATTN_NORM); else if(r < 5) - sound (self, CHAN_BODY, "weapons/grenade_bounce5.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce5.wav", VOL_BASE, ATTN_NORM); else - sound (self, CHAN_BODY, "weapons/grenade_bounce6.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/grenade_bounce6.wav", VOL_BASE, ATTN_NORM); } } diff --git a/data/qcsrc/server/w_hagar.qc b/data/qcsrc/server/w_hagar.qc index 80226155e..13ee49d47 100644 --- a/data/qcsrc/server/w_hagar.qc +++ b/data/qcsrc/server/w_hagar.qc @@ -6,11 +6,11 @@ void W_Hagar_Explode (void) pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1); b = crandom(); if (b<-0.7) - sound (self, CHAN_BODY, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM); else if (b<0.4) - sound (self, CHAN_BODY, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM); else if (b<1) - sound (self, CHAN_BODY, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM); self.event_damage = SUB_Null; RadiusDamage (self, self.realowner, cvar("g_balance_hagar_primary_damage"), cvar("g_balance_hagar_primary_edgedamage"), cvar("g_balance_hagar_primary_radius"), world, cvar("g_balance_hagar_primary_force"), IT_HAGAR); @@ -26,11 +26,11 @@ void W_Hagar_Explode2 (void) pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1); b = crandom(); if (b<-0.7) - sound (self, CHAN_BODY, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM); else if (b<0.4) - sound (self, CHAN_BODY, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM); else if (b<1) - sound (self, CHAN_BODY, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM); self.event_damage = SUB_Null; RadiusDamage (self, self.realowner, cvar("g_balance_hagar_secondary_damage"), cvar("g_balance_hagar_secondary_edgedamage"), cvar("g_balance_hagar_secondary_radius"), world, cvar("g_balance_hagar_secondary_force"), IT_HAGAR); diff --git a/data/qcsrc/server/w_laser.qc b/data/qcsrc/server/w_laser.qc index 03662ea64..6527e2ba4 100644 --- a/data/qcsrc/server/w_laser.qc +++ b/data/qcsrc/server/w_laser.qc @@ -27,7 +27,7 @@ void W_Laser_Touch (void) RadiusDamage (self, self.owner, cvar("g_balance_laser_secondary_damage"), cvar("g_balance_laser_secondary_edgedamage"), cvar("g_balance_laser_secondary_radius"), world, cvar("g_balance_laser_secondary_force"), IT_LASER); else RadiusDamage (self, self.owner, cvar("g_balance_laser_primary_damage"), cvar("g_balance_laser_primary_edgedamage"), cvar("g_balance_laser_primary_radius"), world, cvar("g_balance_laser_primary_force"), IT_LASER); - sound (self, CHAN_BODY, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM); remove (self); } diff --git a/data/qcsrc/server/w_nex.qc b/data/qcsrc/server/w_nex.qc index 80cfc03ad..556cef3aa 100644 --- a/data/qcsrc/server/w_nex.qc +++ b/data/qcsrc/server/w_nex.qc @@ -29,7 +29,7 @@ void W_Nex_Attack (void) if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)) pointparticles(particleeffectnum("nex_impact"), trace_endpos - w_shotdir * 6, '0 0 0', 1); // play a sound - soundat (self, trace_endpos, CHAN_BODY, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM); + soundat (self, trace_endpos, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM); if (cvar("g_use_ammunition") && !g_instagib) { diff --git a/data/qcsrc/server/w_rocketlauncher.qc b/data/qcsrc/server/w_rocketlauncher.qc index b9e66eec3..019df5fc3 100644 --- a/data/qcsrc/server/w_rocketlauncher.qc +++ b/data/qcsrc/server/w_rocketlauncher.qc @@ -5,7 +5,7 @@ void W_Rocket_Explode (void) { vector org2; - sound (self, CHAN_BODY, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); org2 = findbetterlocation (self.origin, 16); pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1); @@ -190,7 +190,7 @@ void W_Rocket_Touch (void) self.owner.lastrocket = world; if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT) { - sound (self, CHAN_BODY, "misc/null.wav", VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "misc/null.wav", VOL_BASE, ATTN_NORM); remove(self); return; } @@ -254,7 +254,7 @@ void W_Rocket_Attack (void) missile.nextthink = time; missile.cnt = time + cvar("g_balance_rocketlauncher_lifetime"); missile.effects = EF_LOWPRECISION; - sound (missile, CHAN_BODY, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM); + sound (missile, CHAN_PROJECTILE, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM); missile.flags = FL_PROJECTILE; // muzzle flash for 1st person view @@ -392,7 +392,7 @@ float w_rlauncher(float req) if(time > self.rl_sound) { self.rl_sound = time + 1; - sound (self, CHAN_BODY, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM); + sound (self, CHAN_PROJECTILE, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM); } if (self.BUTTON_ATCK2) if(g_laserguided_missile) -- 2.39.2