r4034 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Wed Aug 6 02:01:48 EDT 2008


Author: div0
Date: 2008-08-06 02:01:47 -0400 (Wed, 06 Aug 2008)
New Revision: 4034

Modified:
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/cl_physics.qc
   trunk/data/qcsrc/server/cl_player.qc
   trunk/data/qcsrc/server/cl_weaponsystem.qc
   trunk/data/qcsrc/server/clientcommands.qc
   trunk/data/qcsrc/server/constants.qh
   trunk/data/qcsrc/server/ctf.qc
   trunk/data/qcsrc/server/domination.qc
   trunk/data/qcsrc/server/g_casings.qc
   trunk/data/qcsrc/server/g_damage.qc
   trunk/data/qcsrc/server/g_triggers.qc
   trunk/data/qcsrc/server/g_violence.qc
   trunk/data/qcsrc/server/g_world.qc
   trunk/data/qcsrc/server/keyhunt.qc
   trunk/data/qcsrc/server/miscfunctions.qc
   trunk/data/qcsrc/server/mode_onslaught.qc
   trunk/data/qcsrc/server/sv_main.qc
   trunk/data/qcsrc/server/t_items.qc
   trunk/data/qcsrc/server/t_plats.qc
   trunk/data/qcsrc/server/t_teleporters.qc
   trunk/data/qcsrc/server/w_electro.qc
   trunk/data/qcsrc/server/w_grenadelauncher.qc
   trunk/data/qcsrc/server/w_nex.qc
   trunk/data/qcsrc/server/w_rocketlauncher.qc
Log:
reassign the sound channels in a more meaningful way (allows a global channel mixer in the engine)


Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/cl_client.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -701,7 +701,7 @@
 	 	//stuffcmd(self, "set viewsize $tmpviewsize \n");
 
 		if (cvar("g_spawnsound"))
-			sound (self, CHAN_AUTO, "misc/spawn.wav", VOL_BASE, ATTN_NORM);
+			sound (self, CHAN_ITEM, "misc/spawn.wav", VOL_BASE, ATTN_NORM);
 
 		if(g_assault) {
 			if(self.team == assault_attacker_team)
@@ -829,7 +829,7 @@
 		if(clienttype(self.owner) == CLIENTTYPE_REAL)
 		{
 			if(self.cnt <= 10)
-				play2(self.owner, strcat("announcer/robotic/", ftos(self.cnt), ".ogg"));
+				announce(self.owner, strcat("announcer/robotic/", ftos(self.cnt), ".ogg"));
 			if(self.owner.killindicator_teamchange)
 			{
 				if(self.owner.killindicator_teamchange == -1)
@@ -1695,7 +1695,7 @@
 		{
 			self.respawn_countdown = number - 1;
 			if(ceil(self.death_time - (time + 0.5)) == number) // only say it if it is the same number even in 0.5s; to prevent overlapping sounds
-				play2(self, strcat("announcer/robotic/", ftos(number), ".ogg"));
+				announce(self, strcat("announcer/robotic/", ftos(number), ".ogg"));
 		}
 	}
 }
@@ -2170,7 +2170,7 @@
 		if(timeleft <= 0)
 		{
 			bprint("^3", self.netname, "^3 was kicked for idling.\n");
-			play2(self, "announcer/robotic/terminated.ogg");
+			announce(self, "announcer/robotic/terminated.ogg");
 			dropclient(self);
 			return;
 		}
@@ -2179,7 +2179,7 @@
 			if(timeleft != self.idlekick_lasttimeleft)
 			{
 				centerprint_atprio(self, CENTERPRIO_IDLEKICK, strcat("^3Stop idling!\n^3Disconnecting in ", ftos(timeleft), "..."));
-				play2(self, strcat("announcer/robotic/", ftos(timeleft), ".ogg"));
+				announce(self, strcat("announcer/robotic/", ftos(timeleft), ".ogg"));
 			}
 		}
 		else

Modified: trunk/data/qcsrc/server/cl_physics.qc
===================================================================
--- trunk/data/qcsrc/server/cl_physics.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/cl_physics.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -83,7 +83,7 @@
 		player_setanim(self.anim_jump, FALSE, TRUE, TRUE);
 
 	if(g_jump_grunt)
-		PlayerSound(playersound_jump, CHAN_AUTO, 0);
+		PlayerSound(playersound_jump, CHAN_PLAYER, 0);
 }
 
 void CheckWaterJump()
@@ -249,9 +249,9 @@
 			if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
 			{
 				if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
-					GlobalSound(globalsound_metalfall, CHAN_AUTO, 0);
+					GlobalSound(globalsound_metalfall, CHAN_PLAYER, 0);
 				else
-					GlobalSound(globalsound_fall, CHAN_AUTO, 0);
+					GlobalSound(globalsound_fall, CHAN_PLAYER, 0);
 			}
 		}
 	}

Modified: trunk/data/qcsrc/server/cl_player.qc
===================================================================
--- trunk/data/qcsrc/server/cl_player.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/cl_player.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -267,11 +267,11 @@
 	take = bound(0, damage - save, damage);
 
 	if (save > 10)
-		sound (self, CHAN_IMPACT, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM);
 	else if (take > 30)
-		sound (self, CHAN_IMPACT, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM);
 	else if (take > 10)
-		sound (self, CHAN_IMPACT, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM);
 
 	if(sv_gentle < 1) {	
 		if (take > 50)
@@ -344,7 +344,7 @@
 				TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
 				TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity + randomvec() * 450,1);
 			}
-			sound (self, CHAN_VOICE, "misc/gib.wav", VOL_BASE, ATTN_NORM);
+			sound (self, CHAN_PLAYER, "misc/gib.wav", VOL_BASE, ATTN_NORM);
 		}
 	}
 }
@@ -379,11 +379,11 @@
 	}
 
 	if (save > 10)
-		sound (self, CHAN_IMPACT, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM);
 	else if (take > 30)
-		sound (self, CHAN_IMPACT, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM);
 	else if (take > 10)
-		sound (self, CHAN_IMPACT, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM); // FIXME possibly remove them?
+		sound (self, CHAN_BODY, "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);
@@ -413,13 +413,13 @@
 					// 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_AUTO, 0);
+							PlayerSound(playersound_pain100, CHAN_PAIN, 0);
 						else if(self.health > 50)
-							PlayerSound(playersound_pain75, CHAN_AUTO, 0);
+							PlayerSound(playersound_pain75, CHAN_PAIN, 0);
 						else if(self.health > 25)
-							PlayerSound(playersound_pain50, CHAN_AUTO, 0);
+							PlayerSound(playersound_pain50, CHAN_PAIN, 0);
 						else if(self.health > 1)
-							PlayerSound(playersound_pain25, CHAN_AUTO, 0);
+							PlayerSound(playersound_pain25, CHAN_PAIN, 0);
 					}
 				}
 
@@ -464,9 +464,9 @@
 		if(sv_gentle < 1) // TODO make a "gentle" version?
 		{
 			if(deathtype == DEATH_DROWN)
-				PlayerSound(playersound_drown, CHAN_AUTO, 0);
+				PlayerSound(playersound_drown, CHAN_PAIN, 0);
 			else
-				PlayerSound(playersound_death, CHAN_AUTO, 0);
+				PlayerSound(playersound_death, CHAN_PAIN, 0);
 		}
 
 		// get rid of kill indicator

Modified: trunk/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weaponsystem.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/cl_weaponsystem.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -123,7 +123,7 @@
 
 	if (self.items & IT_STRENGTH)
 	if (!g_minstagib)
-		sound (self, CHAN_AUTO, "weapons/strength_fire.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_POWERUP, "weapons/strength_fire.wav", VOL_BASE, ATTN_NORM);
 };
 
 void LaserTarget_Think()

Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/clientcommands.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -473,7 +473,7 @@
 	}
 
 	//play the prepareforbattle sound to everyone
-	sound(world, CHAN_AUTO, "announcer/robotic/prepareforbattle.wav", VOL_BASE, ATTN_NONE);
+	play2all("announcer/robotic/prepareforbattle.wav");
 
 	//reset map immediately if this cvar is not set
 	if (!cvar("sv_ready_restart_after_countdown"))
@@ -541,7 +541,7 @@
 				centerprint(plr, s);
 			}
 		}
-		sound(world, CHAN_AUTO, "announcer/robotic/begin.wav", VOL_BASE, ATTN_NONE);
+		play2all("announcer/robotic/begin.wav");
 
 		remove(self);
 		return;
@@ -555,7 +555,7 @@
 		}
 
 		if(self.cnt <= 3) {
-			sound(world, CHAN_AUTO, strcat("announcer/robotic/", ftos(self.cnt), ".ogg"), VOL_BASE, ATTN_NONE);
+			play2all(strcat("announcer/robotic/", ftos(self.cnt), ".ogg"));
 		}
 		self.nextthink = time + 1;
 		self.cnt -= 1;
@@ -612,7 +612,7 @@
 	timeoutHandler.nextthink = time; //always let the entity think asap
 
 	//inform all connected clients about the timeout call
-	sound(world, CHAN_AUTO, "announcer/robotic/timeoutcalled.wav", VOL_BASE, ATTN_NONE);
+	play2all("announcer/robotic/timeoutcalled.wav");
 }
 
 /**

Modified: trunk/data/qcsrc/server/constants.qh
===================================================================
--- trunk/data/qcsrc/server/constants.qh	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/constants.qh	2008-08-06 06:01:47 UTC (rev 4034)
@@ -106,12 +106,14 @@
 float	TE_LAVASPLASH				= 10;
 float	TE_TELEPORT				= 11;
 
-float	CHAN_AUTO				= 0;
-float	CHAN_WEAPON				= 1;
-float	CHAN_VOICE				= 2;
-float	CHAN_ITEM				= 3;
-float	CHAN_BODY				= 4;
-float	CHAN_IMPACT				= 5;
+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	ATTN_NONE				= 0;
 float	ATTN_NORM				= 0.5;

Modified: trunk/data/qcsrc/server/ctf.qc
===================================================================
--- trunk/data/qcsrc/server/ctf.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/ctf.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -214,7 +214,7 @@
 		if (time > self.pain_finished)
 		{
 			bprint("The ", self.netname, " has returned to base\n");
-			sound (e, CHAN_AUTO, self.noise3, VOL_BASE, ATTN_NONE);
+			sound (e, CHAN_ITEM, self.noise3, VOL_BASE, ATTN_NONE);
 			LogCTF("returned", self.team, world);
 			ReturnFlag(self);
 		}
@@ -294,7 +294,7 @@
 			if (head.team == self.team)
 				UpdateFrags(head, cvar("g_ctf_flagscore_capture_team"));
 
-		sound (self, CHAN_AUTO, self.noise2, VOL_BASE, ATTN_NONE);
+		sound (self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NONE);
 		WaypointSprite_DetachCarrier(other);
 		if(self.speedrunning)
 			FakeTimeLimit(other, -1);
@@ -325,7 +325,7 @@
 		UpdateFrags(other, cvar("g_ctf_flagscore_pickup"));
 		PlayerScore_Add(other, SP_CTF_PICKUPS, 1);
 		LogCTF("steal", self.team, other);
-		sound (self, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NONE);
+		sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NONE);
 
 		FOR_EACH_PLAYER(player)
 			if(player.team == self.team)
@@ -352,7 +352,7 @@
 				UpdateFrags(other, cvar("g_ctf_flagscore_return_rogue"));
 			PlayerScore_Add(other, SP_CTF_RETURNS, 1);
 			LogCTF("return", self.team, other);
-			sound (self, CHAN_AUTO, self.noise1, VOL_BASE, ATTN_NONE);
+			sound (self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NONE);
 			ReturnFlag(self);
 		}
 		else if (!other.flagcarried)
@@ -366,7 +366,7 @@
 			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_AUTO, self.noise, VOL_BASE, ATTN_NONE);
+			sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NONE);
 
 			FOR_EACH_PLAYER(player)
 				if(player.team == self.team)

Modified: trunk/data/qcsrc/server/domination.qc
===================================================================
--- trunk/data/qcsrc/server/domination.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/domination.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -68,9 +68,9 @@
 		self.enemy = world;
 
 	if (head.noise != "")
-		sound(self, CHAN_BODY, head.noise, VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, head.noise, VOL_BASE, ATTN_NORM);
 	if (head.noise1 != "")
-		sound(self, CHAN_VOICE, head.noise1, VOL_BASE, ATTN_NONE);
+		play2all(head.noise1);
 
 	//self.nextthink = time + cvar("g_domination_point_rate");
 	//self.think = dompointthink;

Modified: trunk/data/qcsrc/server/g_casings.qc
===================================================================
--- trunk/data/qcsrc/server/g_casings.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/g_casings.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -8,7 +8,7 @@
 	if (other.solid == SOLID_BSP)
 	if (vlen(self.velocity) >= 50)
 	if (time >= self.attack_finished_single)
-	sound (self, CHAN_IMPACT, "weapons/tink1.wav", 0.5 * VOL_BASE, ATTN_NORM);
+	sound (self, CHAN_BODY, "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;

Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/g_damage.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -1,17 +1,7 @@
 
 float checkrules_firstblood;
 
-.float announcetime;
 float yoda;
-void announce(entity player, string msg)
-{
-	if(time > player.announcetime)
-	if(clienttype(player) == CLIENTTYPE_REAL)
-	{
-		player.announcetime = time + 0.3;
-		play2(player, msg);
-	}
-}
 
 float IsDifferentTeam(entity a, entity b)
 {
@@ -226,7 +216,6 @@
 				else if (deathtype == DEATH_NOAMMO)
 				{
 					bprint ("^7",s, " ^7committed suicide. What's the point of living without ammo?\n");
-					//sound (self, CHAN_BODY, "minstagib/mockery.wav", VOL_BASE, ATTN_NONE);
 				}
 				else if (deathtype == DEATH_CAMP)
 					bprint ("^1",s, "^1 thought he found a nice camping ground\n");
@@ -277,9 +266,6 @@
 				if (!checkrules_firstblood)
 				{
 					checkrules_firstblood = TRUE;
-					//sound(world, CHAN_AUTO, "announcer/firstblood.wav", VOL_BASE, ATTN_NONE);
-					//if (g_minstagib)
-						//sound(world, CHAN_AUTO, "announce/male/mapkill1.wav", VOL_BASE, ATTN_NONE);
 					if(sv_gentle)
 						bprint("^1",a, "^1 was the first to score", "\n");
 					else

Modified: trunk/data/qcsrc/server/g_triggers.qc
===================================================================
--- trunk/data/qcsrc/server/g_triggers.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/g_triggers.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -56,7 +56,7 @@
 	{
 		centerprint (activator, self.message);
 		if (!self.noise)
-			sound (activator, CHAN_VOICE, "misc/talk.wav", VOL_BASE, ATTN_NORM);
+			play2(activator, "misc/talk.wav");
 	}
 
 //
@@ -140,7 +140,7 @@
 	}
 
 	if (self.noise)
-		sound (self, CHAN_VOICE, self.noise, VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM);
 
 // don't trigger again until reset
 	self.takedamage = DAMAGE_NO;
@@ -458,7 +458,7 @@
 }
 
 
-void target_speaker_use() {sound(self, CHAN_VOICE, self.noise, VOL_BASE, ATTN_NORM);}
+void target_speaker_use() {sound(self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM);}
 
 void spawnfunc_target_speaker()
 {

Modified: trunk/data/qcsrc/server/g_violence.qc
===================================================================
--- trunk/data/qcsrc/server/g_violence.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/g_violence.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -3,13 +3,13 @@
 	float r;
 	r = random ();
 	if (r < 0.60)
-		sound (self, CHAN_IMPACT, "misc/gib_splat01.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/gib_splat01.wav", VOL_BASE, ATTN_NORM);
 	else if (r < 0.65)
-		sound (self, CHAN_IMPACT, "misc/gib_splat02.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/gib_splat02.wav", VOL_BASE, ATTN_NORM);
 	else if (r < 0.70)
-		sound (self, CHAN_IMPACT, "misc/gib_splat03.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/gib_splat03.wav", VOL_BASE, ATTN_NORM);
 	else if (r < 0.75)
-		sound (self, CHAN_IMPACT, "misc/gib_splat04.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/gib_splat04.wav", VOL_BASE, ATTN_NORM);
 	
 	if(sv_gentle < 1)
 		pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10);

Modified: trunk/data/qcsrc/server/g_world.qc
===================================================================
--- trunk/data/qcsrc/server/g_world.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/g_world.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -98,7 +98,7 @@
 				}
 			}
 			if(remainingTimeoutTime == cvar("sv_timeout_resumetime")) { //play a warning sound when only <sv_timeout_resumetime> seconds are left
-				sound(world, CHAN_AUTO, "announcer/robotic/prepareforbattle.wav", VOL_BASE, ATTN_NONE);
+				play2all("announcer/robotic/prepareforbattle.wav");
 			}
 			remainingTimeoutTime -= 1;
 			self.nextthink = time + TIMEOUT_SLOWMO_VALUE;
@@ -1603,7 +1603,7 @@
 		if(!checkrules_overtimewarning)
 		{
 			checkrules_overtimewarning = TRUE;
-			//sound(world, CHAN_AUTO, "announcer/robotic/1minuteremains.wav", VOL_BASE, ATTN_NONE);
+			//announceall("announcer/robotic/1minuteremains.wav");
 			bcenterprint("^3Now playing ^1OVERTIME^3!\n\n^3Keep fragging until we have a ^1winner^3!");
 		}
 	}
@@ -1622,7 +1622,7 @@
 	if (!checkrules_oneminutewarning && timelimit > 0 && time > timelimit - 60)
 	{
 		checkrules_oneminutewarning = TRUE;
-		sound(world, CHAN_AUTO, "announcer/robotic/1minuteremains.wav", VOL_BASE, ATTN_NONE);
+		play2all("announcer/robotic/1minuteremains.wav");
 	}
 
 	status = WinningCondition_RanOutOfSpawns();

Modified: trunk/data/qcsrc/server/keyhunt.qc
===================================================================
--- trunk/data/qcsrc/server/keyhunt.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/keyhunt.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -435,7 +435,7 @@
 
 void kh_Key_Collect(entity key, entity player)  //a player picks up a dropped key
 {
-	sound(player, CHAN_AUTO, kh_sound_collect, VOL_BASE, ATTN_NORM);
+	sound(player, CHAN_ITEM, kh_sound_collect, VOL_BASE, ATTN_NORM);
 
 	if(key.kh_dropperteam != player.team)
 	{
@@ -477,7 +477,7 @@
 			if(suicide)
 				key.kh_dropperteam = player.team;
 		}
-		sound(player, CHAN_AUTO, kh_sound_drop, VOL_BASE, ATTN_NORM);
+		sound(player, CHAN_ITEM, kh_sound_drop, VOL_BASE, ATTN_NORM);
 	}
 }
 
@@ -542,7 +542,7 @@
 			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_AUTO, kh_sound_drop, VOL_BASE, ATTN_NORM);
+			sound(self.owner, CHAN_ITEM, 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 @@
 	{
 		if(self.siren_time < time)
 		{
-			sound(world, CHAN_AUTO, kh_sound_alarm, VOL_BASE, ATTN_NORM);  // play a simple alarm
+			sound(self.owner, CHAN_ITEM, kh_sound_alarm, VOL_BASE, ATTN_NORM);  // play a simple alarm
 			self.siren_time = time + 2.5;  // repeat every 2.5 seconds
 		}
 
@@ -647,7 +647,7 @@
 	midpoint = midpoint * (1 / kh_teams);
 	te_customflash(midpoint, 1000, 1, TeamColor(teem) * 0.5 + '0.5 0.5 0.5');  // make the color >=0.5 in each component
 
-	sound(world, CHAN_AUTO, kh_sound_capture, VOL_BASE, ATTN_NONE);
+	play2all(kh_sound_capture);
 	kh_FinishRound();
 }
 
@@ -736,7 +736,7 @@
 
 		bprint("The ", ColoredTeamName(teem), "^7 could not take care of the ", lostkey.netname, "\n");
 	}
-	sound(world, CHAN_AUTO, kh_sound_destroy, VOL_BASE, ATTN_NONE);
+	play2all(kh_sound_destroy);
 	te_tarexplosion(lostkey.origin);
 
 	kh_FinishRound();

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -951,9 +951,9 @@
 	o = e.origin + 0.5 * (e.mins + e.maxs);
 	soundtoat(dest, e, o, chan, samp, vol, atten);
 }
-void soundat(vector o, string samp, float vol, float atten)
+void soundat(entity e, vector o, float chan, string samp, float vol, float atten)
 {
-	soundtoat(MSG_BROADCAST, world, o, CHAN_AUTO, samp, vol, atten);
+	soundtoat(MSG_BROADCAST, e, o, chan, samp, vol, atten);
 }
 
 void play2(entity e, string filename)
@@ -963,6 +963,17 @@
 	soundtoat(MSG_ONE, world, '0 0 0', CHAN_AUTO, filename, VOL_BASE, ATTN_NONE);
 }
 
+.float announcetime;
+void announce(entity player, string msg)
+{
+	if(time > player.announcetime)
+	if(clienttype(player) == CLIENTTYPE_REAL)
+	{
+		player.announcetime = time + 0.3;
+		play2(player, msg);
+	}
+}
+
 void play2team(float t, string filename)
 {
 	local entity head;
@@ -973,6 +984,11 @@
 	}
 }
 
+void play2all(string samp)
+{
+	sound(world, CHAN_AUTO, samp, VOL_BASE, ATTN_NONE);
+}
+
 void PrecachePlayerSounds(string f);
 void precache_all_models(string pattern)
 {

Modified: trunk/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- trunk/data/qcsrc/server/mode_onslaught.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/mode_onslaught.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -319,7 +319,7 @@
 	{
 		// self.max_health / 300 gives 5 minutes of overtime.
 		// control points reduce the overtime duration.
-		sound(self, CHAN_AUTO, "sound/onslaught/generator_decay.wav", VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, "sound/onslaught/generator_decay.wav", VOL_BASE, ATTN_NORM);
 		d = 1;
 		e = findchain(classname, "onslaught_controlpoint");
 		while (e)
@@ -343,13 +343,13 @@
 		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_AUTO, "sound/weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, "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_AUTO, "sound/weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, "sound/weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
 	}
 };
 
@@ -622,7 +622,7 @@
 	self.colormod = '2 2 2';
 	if (self.health < 0)
 	{
-		sound(self, CHAN_AUTO, "sound/weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, "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 @@
 		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_BODY, "sound/onslaught/controlpoint_built.wav", VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, "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 @@
 	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_BODY, "sound/onslaught/controlpoint_build.wav", VOL_BASE, ATTN_NORM);
+	sound(e, CHAN_ITEM, "sound/onslaught/controlpoint_build.wav", VOL_BASE, ATTN_NORM);
 	self.team = e.team;
 	self.colormap = e.colormap;
 };

Modified: trunk/data/qcsrc/server/sv_main.qc
===================================================================
--- trunk/data/qcsrc/server/sv_main.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/sv_main.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -13,19 +13,13 @@
 			{
 				if (!(self.flags & FL_INWATER))
 				{
-					//if (self.watertype == CONTENT_LAVA)
-					//	sound (self, CHAN_BODY, "player/inlava.wav", VOL_BASE, ATTN_NORM);
-					//if (self.watertype == CONTENT_WATER)
-					//	sound (self, CHAN_BODY, "player/inh2o.wav", VOL_BASE, ATTN_NORM);
-					//if (self.watertype == CONTENT_SLIME)
-					//	sound (self, CHAN_BODY, "player/slimbrn2.wav", VOL_BASE, ATTN_NORM);
 					self.flags = self.flags + FL_INWATER;
 					self.dmgtime = 0;
 				}
 				if (self.waterlevel != 3)
 				{
 					if(self.air_finished < time + 9)
-						PlayerSound(playersound_gasp, CHAN_AUTO, 0);
+						PlayerSound(playersound_gasp, CHAN_PLAYER, 0);
 					self.air_finished = time + 12;
 					self.dmg = 2;
 				}
@@ -46,7 +40,7 @@
 						if (self.watersound_finished < time)
 						{
 							self.watersound_finished = time + 0.5;
-							sound (self, CHAN_BODY, "player/lava.wav", VOL_BASE, ATTN_NORM);
+							sound (self, CHAN_PLAYER, "player/lava.wav", VOL_BASE, ATTN_NORM);
 						}
 						Damage (self, world, world, 6 * self.waterlevel, DEATH_LAVA, self.origin, '0 0 0');
 					}
@@ -55,7 +49,7 @@
 						if (self.watersound_finished < time)
 						{
 							self.watersound_finished = time + 0.5;
-							sound (self, CHAN_BODY, "player/slime.wav", VOL_BASE, ATTN_NORM);
+							sound (self, CHAN_PLAYER, "player/slime.wav", VOL_BASE, ATTN_NORM);
 						}
 						Damage (self, world, world, 2 * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0');
 					}
@@ -111,9 +105,9 @@
 					if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
 					{
 						if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
-							GlobalSound(globalsound_metalstep, CHAN_AUTO, 0);
+							GlobalSound(globalsound_metalstep, CHAN_PLAYER, 0);
 						else
-							GlobalSound(globalsound_step, CHAN_AUTO, 0);
+							GlobalSound(globalsound_step, CHAN_PLAYER, 0);
 					}
 				}
 			}

Modified: trunk/data/qcsrc/server/t_items.qc
===================================================================
--- trunk/data/qcsrc/server/t_items.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/t_items.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -5,7 +5,7 @@
 {
 	self.model = self.mdl;		// restore original model
 	self.solid = SOLID_TRIGGER;	// allow it to be touched again
-	sound (self, CHAN_VOICE, "misc/itemrespawn.wav", VOL_BASE, ATTN_NORM);	// play respawn sound
+	sound (self, CHAN_ITEM, "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,8 +185,7 @@
 	if (!pickedup)
 		return;
 
-	sound (self, CHAN_BODY, self.noise, VOL_BASE, ATTN_NORM);
-	sound (other, CHAN_AUTO, self.item_pickupsound, VOL_BASE, ATTN_NORM);
+	sound (other, CHAN_ITEM, self.item_pickupsound, VOL_BASE, ATTN_NORM);
 
 	oldself = self;
 	self = other;
@@ -414,7 +413,6 @@
 	self.bot_pickupevalfunc = pickupevalfunc;
 	self.bot_pickupbasevalue = pickupbasevalue;
 	self.mdl = itemmodel;
-	//self.noise = pickupsound;
 	self.item_pickupsound = pickupsound;
 	// let mappers override respawntime
 	if (!self.respawntime)

Modified: trunk/data/qcsrc/server/t_plats.qc
===================================================================
--- trunk/data/qcsrc/server/t_plats.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/t_plats.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -49,7 +49,7 @@
 
 void plat_hit_top()
 {
-	sound (self, CHAN_VOICE, self.noise1, VOL_BASE, ATTN_NORM);
+	sound (self, CHAN_ITEM, 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_bottom()
 {
-	sound (self, CHAN_VOICE, self.noise1, VOL_BASE, ATTN_NORM);
+	sound (self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NORM);
 	self.state = 2;
 };
 
 void plat_go_down()
 {
-	sound (self, CHAN_VOICE, self.noise, VOL_BASE, ATTN_NORM);
+	sound (self, CHAN_ITEM, 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_VOICE, self.noise, VOL_BASE, ATTN_NORM);
+	sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM);
 	self.state = 4;
 	SUB_CalcMove (self.pos1, self.speed, plat_hit_top);
 };
@@ -246,7 +246,7 @@
 	if (self.wait)
 	{
 		self.nextthink = self.ltime + self.wait;
-		sound (self, CHAN_VOICE, self.noise, VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM);
 	}
 	else
 		self.nextthink = self.ltime + 0.1;
@@ -266,7 +266,7 @@
 		self.wait = targ.wait;
 	else
 		self.wait = 0;
-	sound (self, CHAN_VOICE, self.noise1, VOL_BASE, ATTN_NORM);
+	sound (self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NORM);
 	SUB_CalcMove (targ.origin - self.mins, self.speed, train_wait);
 };
 
@@ -577,7 +577,7 @@
 		return;
 
 	if (self.noise != "")
-		sound (self, CHAN_VOICE, self.noise, VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM);
 
 	self.state = STATE_UP;
 	SUB_CalcMove (self.pos2, self.speed, button_wait);
@@ -754,7 +754,7 @@
 void door_hit_top()
 {
 	if (self.noise1 != "")
-		sound (self, CHAN_VOICE, self.noise1, VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_ITEM, 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_bottom()
 {
 	if (self.noise1 != "")
-		sound (self, CHAN_VOICE, self.noise1, VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_ITEM, self.noise1, VOL_BASE, ATTN_NORM);
 	self.state = STATE_BOTTOM;
 };
 
 void door_go_down()
 {
 	if (self.noise2 != "")
-		sound (self, CHAN_VOICE, self.noise2, VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM);
 	if (self.max_health)
 	{
 		self.takedamage = DAMAGE_YES;
@@ -795,7 +795,7 @@
 	}
 
 	if (self.noise2 != "")
-		sound (self, CHAN_VOICE, self.noise2, VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM);
 	self.state = STATE_UP;
 	SUB_CalcMove (self.pos2, self.speed, door_hit_top);
 
@@ -920,7 +920,7 @@
 	{
 		if (other.flags & FL_CLIENT)
 			centerprint (other, self.owner.message);
-		sound (other, CHAN_VOICE, "misc/talk.wav", VOL_BASE, ATTN_NORM);
+		play2(other, "misc/talk.wav");
 	}
 };
 
@@ -1201,7 +1201,7 @@
 	// Make a sound, wait a little...
 
 	if (self.noise1 != "")
-		sound(self, CHAN_VOICE, self.noise1, VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, 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 @@
 	self.dest2 = self.dest1 + v_forward * self.t_length;
 	SUB_CalcMove(self.dest1, self.speed, fd_secret_move1);
 	if (self.noise2 != "")
-		sound(self, CHAN_VOICE, self.noise2, VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM);
 };
 
 // Wait after first movement...
@@ -1235,14 +1235,14 @@
 	self.nextthink = self.ltime + 1.0;
 	self.think = fd_secret_move2;
 	if (self.noise3 != "")
-		sound(self, CHAN_VOICE, self.noise3, VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, self.noise3, VOL_BASE, ATTN_NORM);
 };
 
 // Start moving sideways w/sound...
 void fd_secret_move2()
 {
 	if (self.noise2 != "")
-		sound(self, CHAN_VOICE, self.noise2, VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM);
 	SUB_CalcMove(self.dest2, self.speed, fd_secret_move3);
 };
 
@@ -1250,7 +1250,7 @@
 void fd_secret_move3()
 {
 	if (self.noise3 != "")
-		sound(self, CHAN_VOICE, self.noise3, VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, 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_move4()
 {
 	if (self.noise2 != "")
-		sound(self, CHAN_VOICE, self.noise2, VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM);
 	SUB_CalcMove(self.dest1, self.speed, fd_secret_move5);
 };
 
@@ -1272,13 +1272,13 @@
 	self.nextthink = self.ltime + 1.0;
 	self.think = fd_secret_move6;
 	if (self.noise3 != "")
-		sound(self, CHAN_VOICE, self.noise3, VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, self.noise3, VOL_BASE, ATTN_NORM);
 };
 
 void fd_secret_move6()
 {
 	if (self.noise2 != "")
-		sound(self, CHAN_VOICE, self.noise2, VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, self.noise2, VOL_BASE, ATTN_NORM);
 	SUB_CalcMove(self.oldorigin, self.speed, fd_secret_done);
 };
 
@@ -1291,7 +1291,7 @@
 		//self.th_pain = fd_secret_use;
         }
 	if (self.noise3 != "")
-		sound(self, CHAN_VOICE, self.noise3, VOL_BASE, ATTN_NORM);
+		sound(self, CHAN_ITEM, self.noise3, VOL_BASE, ATTN_NORM);
 };
 
 void secret_blocked()
@@ -1322,7 +1322,7 @@
 	{
 		if (other.flags & FL_CLIENT)
 			centerprint (other, self.message);
-		sound (other, CHAN_BODY, "misc/talk.wav", VOL_BASE, ATTN_NORM);
+		play2(other, "misc/talk.wav");
 	}
 };
 

Modified: trunk/data/qcsrc/server/t_teleporters.qc
===================================================================
--- trunk/data/qcsrc/server/t_teleporters.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/t_teleporters.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -67,7 +67,7 @@
 	pointparticles(particleeffectnum("teleport"), other.origin, '0 0 0', 1);
 
 	// Make teleport effect where the player arrived
-	sound (other, CHAN_ITEM, "misc/teleport.wav", VOL_BASE, ATTN_NORM);
+	sound (self.enemy, CHAN_ITEM, "misc/teleport.wav", VOL_BASE, ATTN_NORM);
 	makevectors (self.enemy.mangle);
 	pointparticles(particleeffectnum("teleport"), self.enemy.origin + v_forward * 32, '0 0 0', 1);
 

Modified: trunk/data/qcsrc/server/w_electro.qc
===================================================================
--- trunk/data/qcsrc/server/w_electro.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/w_electro.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -50,7 +50,7 @@
 				if(IsFlying(other))
 					announce(o, "announcer/male/electrobitch.ogg");
 	} else {
-		sound (self, CHAN_IMPACT, "weapons/electro_bounce.wav", VOL_BASE, ATTN_NORM);
+		sound (self, CHAN_BODY, "weapons/electro_bounce.wav", VOL_BASE, ATTN_NORM);
 	}
 }
 

Modified: trunk/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_grenadelauncher.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/w_grenadelauncher.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -49,17 +49,17 @@
 		float r;
 		r = random() * 6;
 		if(r < 1)
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce1.wav", VOL_BASE, ATTN_NORM);
+			sound (self, CHAN_BODY, "weapons/grenade_bounce1.wav", VOL_BASE, ATTN_NORM);
 		else if(r < 2)
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce2.wav", VOL_BASE, ATTN_NORM);
+			sound (self, CHAN_BODY, "weapons/grenade_bounce2.wav", VOL_BASE, ATTN_NORM);
 		else if(r < 3)
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce3.wav", VOL_BASE, ATTN_NORM);
+			sound (self, CHAN_BODY, "weapons/grenade_bounce3.wav", VOL_BASE, ATTN_NORM);
 		else if(r < 4)
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce4.wav", VOL_BASE, ATTN_NORM);
+			sound (self, CHAN_BODY, "weapons/grenade_bounce4.wav", VOL_BASE, ATTN_NORM);
 		else if(r < 5)
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce5.wav", VOL_BASE, ATTN_NORM);
+			sound (self, CHAN_BODY, "weapons/grenade_bounce5.wav", VOL_BASE, ATTN_NORM);
 		else
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce6.wav", VOL_BASE, ATTN_NORM);
+			sound (self, CHAN_BODY, "weapons/grenade_bounce6.wav", VOL_BASE, ATTN_NORM);
 	}
 }
 

Modified: trunk/data/qcsrc/server/w_nex.qc
===================================================================
--- trunk/data/qcsrc/server/w_nex.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/w_nex.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -29,7 +29,7 @@
 	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 (trace_endpos, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
+	soundat (self, trace_endpos, CHAN_BODY, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
 
 	if (cvar("g_use_ammunition") && !g_instagib)
 	{

Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc	2008-08-05 21:47:41 UTC (rev 4033)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc	2008-08-06 06:01:47 UTC (rev 4034)
@@ -400,7 +400,7 @@
 		{
 			self.exteriorweaponentity.attack_finished_single = time + 0.4;
 			self.laser_on = !self.laser_on;
-			sound (self, CHAN_AUTO, "weapons/tink1.wav", VOL_BASE, ATTN_NORM);
+			sound (self, CHAN_WEAPON, "weapons/tink1.wav", VOL_BASE, ATTN_NORM);
 		}
 	}
 	else if (req == WR_PRECACHE)




More information about the nexuiz-commits mailing list