r4029 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Aug 5 12:20:28 EDT 2008


Author: div0
Date: 2008-08-05 12:20:27 -0400 (Tue, 05 Aug 2008)
New Revision: 4029

Modified:
   trunk/data/qcsrc/server/arena.qc
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/cl_player.qc
   trunk/data/qcsrc/server/cl_weapons.qc
   trunk/data/qcsrc/server/cl_weaponsystem.qc
   trunk/data/qcsrc/server/clientcommands.qc
   trunk/data/qcsrc/server/ctf.qc
   trunk/data/qcsrc/server/defs.qh
   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_hook.qc
   trunk/data/qcsrc/server/g_subs.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_jumppads.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_hagar.qc
   trunk/data/qcsrc/server/w_laser.qc
   trunk/data/qcsrc/server/w_nex.qc
   trunk/data/qcsrc/server/w_rocketlauncher.qc
Log:
two big changes:
1. multiply all volumes by a VOL_BASE constant
2. do not use stuffcmd/play2 any more; instead, hand craft a svc_sound packet (shorter)


Modified: trunk/data/qcsrc/server/arena.qc
===================================================================
--- trunk/data/qcsrc/server/arena.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/arena.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -79,7 +79,7 @@
 		}
 		else if(self.flags & FL_PROJECTILE)		// remove any projectiles left
 		{
-			sound(self, CHAN_BODY, "misc/null.wav", 1, ATTN_NORM);
+			sound(self, CHAN_BODY, "misc/null.wav", VOL_BASE, ATTN_NORM);
 			remove(self);
 		}
 		else if(self.isdecor)

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/cl_client.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -701,7 +701,7 @@
 	 	//stuffcmd(self, "set viewsize $tmpviewsize \n");
 
 		if (cvar("g_spawnsound"))
-			sound (self, CHAN_AUTO, "misc/spawn.wav", 1, ATTN_NORM);
+			sound (self, CHAN_AUTO, "misc/spawn.wav", VOL_BASE, ATTN_NORM);
 
 		if(g_assault) {
 			if(self.team == assault_attacker_team)

Modified: trunk/data/qcsrc/server/cl_player.qc
===================================================================
--- trunk/data/qcsrc/server/cl_player.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/cl_player.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -267,11 +267,11 @@
 	take = bound(0, damage - save, damage);
 
 	if (save > 10)
-		sound (self, CHAN_IMPACT, "misc/armorimpact.wav", 1, ATTN_NORM);
+		sound (self, CHAN_IMPACT, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM);
 	else if (take > 30)
-		sound (self, CHAN_IMPACT, "misc/bodyimpact2.wav", 1, ATTN_NORM);
+		sound (self, CHAN_IMPACT, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM);
 	else if (take > 10)
-		sound (self, CHAN_IMPACT, "misc/bodyimpact1.wav", 1, ATTN_NORM);
+		sound (self, CHAN_IMPACT, "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", 1, ATTN_NORM);
+			sound (self, CHAN_VOICE, "misc/gib.wav", VOL_BASE, ATTN_NORM);
 		}
 	}
 }
@@ -379,11 +379,11 @@
 	}
 
 	if (save > 10)
-		sound (self, CHAN_IMPACT, "misc/armorimpact.wav", 1, ATTN_NORM);
+		sound (self, CHAN_IMPACT, "misc/armorimpact.wav", VOL_BASE, ATTN_NORM);
 	else if (take > 30)
-		sound (self, CHAN_IMPACT, "misc/bodyimpact2.wav", 1, ATTN_NORM);
+		sound (self, CHAN_IMPACT, "misc/bodyimpact2.wav", VOL_BASE, ATTN_NORM);
 	else if (take > 10)
-		sound (self, CHAN_IMPACT, "misc/bodyimpact1.wav", 1, ATTN_NORM); // FIXME possibly remove them?
+		sound (self, CHAN_IMPACT, "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);
@@ -732,26 +732,6 @@
 		self.last_selected_player = self.selected_player;
 }
 
-float precache_sound_index (string s) = #19;
-void soundto(entity e, entity sounddest, float chan, string samp, float vol, float atten)
-{
-	vector o;
-	if(clienttype(sounddest) != CLIENTTYPE_REAL)
-		return;
-	o = e.origin + 0.5 * (e.mins + e.maxs);
-	msg_entity = sounddest;
-	WriteByte(MSG_ONE, 6);
-	WriteByte(MSG_ONE, 27); // all bits except SND_LOOPING
-	WriteByte(MSG_ONE, vol * 255);
-	WriteByte(MSG_ONE, atten * 64);
-	WriteEntity(MSG_ONE, e);
-	WriteByte(MSG_ONE, chan);
-	WriteShort(MSG_ONE, precache_sound_index(samp));
-	WriteCoord(MSG_ONE, o_x);
-	WriteCoord(MSG_ONE, o_y);
-	WriteCoord(MSG_ONE, o_z);
-}
-
 float GetVoiceMessageTeamsayType(string type)
 {
 	if(type == "taunt")
@@ -923,21 +903,33 @@
 			if(self.pusher)
 				if(self.pusher.team == self.team)
 				{
-					soundto(self, self.pusher, chan, sample, 1, ATTN_NONE);
-					soundto(self, self, chan, sample, 1, ATTN_NONE);
+					msg_entity = self.pusher;
+					soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE);
+					msg_entity = self;
+					soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE);
 				}
 	}
 	else if(teamsay == 0) // to everyone
 	{
 		// broadcast the sound, but it's directional
-		sound(self, chan, sample, 1, ATTN_NORM);
+		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)
-				soundto(self, e, chan, sample, 1, ATTN_NONE);
+		if(teams_matter)
+		{
+			entity e;
+			FOR_EACH_REALCLIENT(e)
+				if(!teams_matter || e.team == self.team)
+				{
+					msg_entity = e;
+					soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE);
+				}
+		}
+		else
+		{
+			sound(self, chan, sample, VOL_BASE, ATTN_NONE);
+		}
 	}
 }
 

Modified: trunk/data/qcsrc/server/cl_weapons.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weapons.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/cl_weapons.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -252,7 +252,7 @@
 		}
 		else if (self.weaponentity.state == WS_READY)
 		{
-			sound (self, CHAN_WEAPON, "weapons/weapon_switch.wav", 1, ATTN_NORM);
+			sound (self, CHAN_WEAPON, "weapons/weapon_switch.wav", VOL_BASE, ATTN_NORM);
 			self.weaponentity.state = WS_DROP;
 			// set up weapon switch think in the future, and start drop anim
 			weapon_thinkf(WFRAME_IDLE, cvar("g_balance_weaponswitchdelay"), w_clear);

Modified: trunk/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weaponsystem.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/cl_weaponsystem.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -119,11 +119,11 @@
 		self.punchangle_x = recoil * -1;
 
 	if (snd != "")
-		sound (self, CHAN_WEAPON, snd, 1, ATTN_NORM);
+		sound (self, CHAN_WEAPON, snd, VOL_BASE, ATTN_NORM);
 
 	if (self.items & IT_STRENGTH)
 	if (!g_minstagib)
-		sound (self, CHAN_AUTO, "weapons/strength_fire.wav", 1, ATTN_NORM);
+		sound (self, CHAN_AUTO, "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 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/clientcommands.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -473,7 +473,7 @@
 	}
 
 	//play the prepareforbattle sound to everyone
-	sound(world, CHAN_AUTO, "announcer/robotic/prepareforbattle.wav", 1, ATTN_NONE);
+	sound(world, CHAN_AUTO, "announcer/robotic/prepareforbattle.wav", VOL_BASE, ATTN_NONE);
 
 	//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", 1, ATTN_NONE);
+		sound(world, CHAN_AUTO, "announcer/robotic/begin.wav", VOL_BASE, ATTN_NONE);
 
 		remove(self);
 		return;
@@ -555,7 +555,7 @@
 		}
 
 		if(self.cnt <= 3) {
-			sound(world, CHAN_AUTO, strcat("announcer/robotic/", ftos(self.cnt), ".ogg"), 1, ATTN_NONE);
+			sound(world, CHAN_AUTO, strcat("announcer/robotic/", ftos(self.cnt), ".ogg"), VOL_BASE, ATTN_NONE);
 		}
 		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", 1, ATTN_NONE);
+	sound(world, CHAN_AUTO, "announcer/robotic/timeoutcalled.wav", VOL_BASE, ATTN_NONE);
 }
 
 /**

Modified: trunk/data/qcsrc/server/ctf.qc
===================================================================
--- trunk/data/qcsrc/server/ctf.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/ctf.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -214,7 +214,7 @@
 		if (time > self.pain_finished)
 		{
 			bprint("The ", self.netname, " has returned to base\n");
-			sound (e, CHAN_AUTO, self.noise3, 1, ATTN_NONE);
+			sound (e, CHAN_AUTO, 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, 1, ATTN_NONE);
+		sound (self, CHAN_AUTO, 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, 1, ATTN_NONE);
+		sound (self, CHAN_AUTO, 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, 1, ATTN_NONE);
+			sound (self, CHAN_AUTO, 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, 1, ATTN_NONE);
+			sound (self, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NONE);
 
 			FOR_EACH_PLAYER(player)
 				if(player.team == self.team)

Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/defs.qh	2008-08-05 16:20:27 UTC (rev 4029)
@@ -11,6 +11,8 @@
 #define BUTTON_CHAT   buttonchat
 #define BUTTON_USE    buttonuse
 
+#define VOL_BASE 0.7
+
 // Globals
 
 float g_domination, g_ctf, g_tdm, g_keyhunt, g_onslaught, g_assault, g_arena, g_lms, g_runematch;

Modified: trunk/data/qcsrc/server/domination.qc
===================================================================
--- trunk/data/qcsrc/server/domination.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/domination.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -68,9 +68,9 @@
 		self.enemy = world;
 
 	if (head.noise != "")
-		sound(self, CHAN_BODY, head.noise, 1, ATTN_NORM);
+		sound(self, CHAN_BODY, head.noise, VOL_BASE, ATTN_NORM);
 	if (head.noise1 != "")
-		sound(self, CHAN_VOICE, head.noise1, 1, ATTN_NONE);
+		sound(self, CHAN_VOICE, head.noise1, VOL_BASE, ATTN_NONE);
 
 	//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 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/g_casings.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -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, ATTN_NORM);
+	sound (self, CHAN_IMPACT, "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 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/g_damage.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -226,7 +226,7 @@
 				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", 1, ATTN_NONE);
+					//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 +277,9 @@
 				if (!checkrules_firstblood)
 				{
 					checkrules_firstblood = TRUE;
-					//sound(world, CHAN_AUTO, "announcer/firstblood.wav", 1, ATTN_NONE);
+					//sound(world, CHAN_AUTO, "announcer/firstblood.wav", VOL_BASE, ATTN_NONE);
 					//if (g_minstagib)
-						//sound(world, CHAN_AUTO, "announce/male/mapkill1.wav", 1, ATTN_NONE);
+						//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_hook.qc
===================================================================
--- trunk/data/qcsrc/server/g_hook.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/g_hook.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -185,7 +185,7 @@
 	}
 
 	pointparticles(particleeffectnum("grapple_impact"), self.origin, '0 0 0', 1);
-	sound (self, CHAN_BODY, "weapons/hook_impact.wav", 1, ATTN_NORM);
+	sound (self, CHAN_BODY, "weapons/hook_impact.wav", VOL_BASE, ATTN_NORM);
 
 	self.state = 1;
 	self.think = GrapplingHookThink;
@@ -225,7 +225,7 @@
 
 	makevectors(self.v_angle);
 
-	sound (self, CHAN_WEAPON, "weapons/hook_fire.wav", 1, ATTN_NORM);
+	sound (self, CHAN_WEAPON, "weapons/hook_fire.wav", VOL_BASE, ATTN_NORM);
 	org = self.origin + self.view_ofs + v_forward * 8 - v_right * 8 + '0 0 -12';
 	pointparticles(particleeffectnum("grapple_muzzleflash"), org, '0 0 0', 1);
 

Modified: trunk/data/qcsrc/server/g_subs.qc
===================================================================
--- trunk/data/qcsrc/server/g_subs.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/g_subs.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -205,25 +205,6 @@
 
 }
 
-// Sound functions
-
-/*
-==================
-PointSound
-
-Play a sound at the given location
-==================
-*/
-void PointSound (vector org, string snd, float vol, float attn)
-{
-	entity	speaker;
-
-	speaker = spawn ();
-	setorigin (speaker, org);
-	sound (speaker, CHAN_BODY, snd, vol, attn);
-	remove (speaker);
-}
-
 // Misc
 
 /*

Modified: trunk/data/qcsrc/server/g_triggers.qc
===================================================================
--- trunk/data/qcsrc/server/g_triggers.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/g_triggers.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -56,7 +56,7 @@
 	{
 		centerprint (activator, self.message);
 		if (!self.noise)
-			sound (activator, CHAN_VOICE, "misc/talk.wav", 1, ATTN_NORM);
+			sound (activator, CHAN_VOICE, "misc/talk.wav", VOL_BASE, ATTN_NORM);
 	}
 
 //
@@ -140,7 +140,7 @@
 	}
 
 	if (self.noise)
-		sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM);
+		sound (self, CHAN_VOICE, 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, 1, 1);}
+void target_speaker_use() {sound(self, CHAN_VOICE, self.noise, VOL_BASE, ATTN_NORM);}
 
 void spawnfunc_target_speaker()
 {
@@ -467,7 +467,7 @@
 	if(self.targetname)
 		self.use = target_speaker_use;
 	else
-		ambientsound (self.origin, self.noise, 1, ATTN_STATIC);
+		ambientsound (self.origin, self.noise, VOL_BASE, ATTN_STATIC);
 };
 
 
@@ -506,7 +506,7 @@
   // sound
   if(self.noise) {
     precache_sound (self.noise);
-    ambientsound (self.origin, self.noise, 1, ATTN_STATIC);
+    ambientsound (self.origin, self.noise, VOL_BASE, ATTN_STATIC);
   }
 }
 */

Modified: trunk/data/qcsrc/server/g_violence.qc
===================================================================
--- trunk/data/qcsrc/server/g_violence.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/g_violence.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -3,13 +3,13 @@
 	float r;
 	r = random ();
 	if (r < 0.60)
-		sound (self, CHAN_IMPACT, "misc/gib_splat01.wav", 1, ATTN_NORM);
+		sound (self, CHAN_IMPACT, "misc/gib_splat01.wav", VOL_BASE, ATTN_NORM);
 	else if (r < 0.65)
-		sound (self, CHAN_IMPACT, "misc/gib_splat02.wav", 1, ATTN_NORM);
+		sound (self, CHAN_IMPACT, "misc/gib_splat02.wav", VOL_BASE, ATTN_NORM);
 	else if (r < 0.70)
-		sound (self, CHAN_IMPACT, "misc/gib_splat03.wav", 1, ATTN_NORM);
+		sound (self, CHAN_IMPACT, "misc/gib_splat03.wav", VOL_BASE, ATTN_NORM);
 	else if (r < 0.75)
-		sound (self, CHAN_IMPACT, "misc/gib_splat04.wav", 1, ATTN_NORM);
+		sound (self, CHAN_IMPACT, "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 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/g_world.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -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", 1, ATTN_NONE);
+				sound(world, CHAN_AUTO, "announcer/robotic/prepareforbattle.wav", VOL_BASE, ATTN_NONE);
 			}
 			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", 1, ATTN_NONE);
+			//sound(world, CHAN_AUTO, "announcer/robotic/1minuteremains.wav", VOL_BASE, ATTN_NONE);
 			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", 1, ATTN_NONE);
+		sound(world, CHAN_AUTO, "announcer/robotic/1minuteremains.wav", VOL_BASE, ATTN_NONE);
 	}
 
 	status = WinningCondition_RanOutOfSpawns();

Modified: trunk/data/qcsrc/server/keyhunt.qc
===================================================================
--- trunk/data/qcsrc/server/keyhunt.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/keyhunt.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -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, 1, ATTN_NORM);
+	sound(player, CHAN_AUTO, 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, 1, ATTN_NORM);
+		sound(player, CHAN_AUTO, 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, 1, ATTN_NORM);
+			sound(self.owner, CHAN_AUTO, 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, 1, ATTN_NORM);  // play a simple alarm
+			sound(world, CHAN_AUTO, 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, 1, ATTN_NONE);
+	sound(world, CHAN_AUTO, kh_sound_capture, VOL_BASE, ATTN_NONE);
 	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, 1, ATTN_NONE);
+	sound(world, CHAN_AUTO, kh_sound_destroy, VOL_BASE, ATTN_NONE);
 	te_tarexplosion(lostkey.origin);
 
 	kh_FinishRound();

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -927,11 +927,40 @@
 }
 */
 
+// Sound functions
 string precache_sound (string s) = #19;
 void(entity e, float chan, string samp, float vol, float atten) sound = #8;
+float precache_sound_index (string s) = #19;
+
+void soundtoat(float dest, entity e, vector o, float chan, string samp, float vol, float atten)
+{
+	WriteByte(dest, 6);
+	WriteByte(dest, 27); // all bits except SND_LOOPING
+	WriteByte(dest, vol * 255);
+	WriteByte(dest, atten * 64);
+	WriteEntity(dest, e);
+	WriteByte(dest, chan);
+	WriteShort(dest, precache_sound_index(samp));
+	WriteCoord(dest, o_x);
+	WriteCoord(dest, o_y);
+	WriteCoord(dest, o_z);
+}
+void soundto(float dest, entity e, float chan, string samp, float vol, float atten)
+{
+	vector o;
+	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)
+{
+	soundtoat(MSG_BROADCAST, world, o, CHAN_AUTO, samp, vol, atten);
+}
+
 void play2(entity e, string filename)
 {
-	stuffcmd(e, strcat("play2 ", filename, "\n"));
+	//stuffcmd(e, strcat("play2 ", filename, "\n"));
+	msg_entity = e;
+	soundtoat(MSG_ONE, world, '0 0 0', CHAN_AUTO, filename, VOL_BASE, ATTN_NONE);
 }
 
 void play2team(float t, string filename)
@@ -1113,6 +1142,6 @@
 	if (self.noise)
 	{
 		precache_sound (self.noise);
-		ambientsound ('0 0 0', self.noise, 1.00, ATTN_NONE);
+		ambientsound ('0 0 0', self.noise, VOL_BASE, ATTN_NONE);
 	}
 }

Modified: trunk/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- trunk/data/qcsrc/server/mode_onslaught.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/mode_onslaught.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -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", 1, ATTN_NORM);
+		sound(self, CHAN_AUTO, "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", 1, ATTN_NORM);
+		sound(self, CHAN_AUTO, "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", 1, ATTN_NORM);
+		sound(self, CHAN_AUTO, "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", 1, ATTN_NORM);
+		sound(self, CHAN_AUTO, "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", 1, ATTN_NORM);
+		sound(self, CHAN_BODY, "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", 1, ATTN_NORM);
+	sound(e, CHAN_BODY, "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 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/sv_main.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -14,11 +14,11 @@
 				if (!(self.flags & FL_INWATER))
 				{
 					//if (self.watertype == CONTENT_LAVA)
-					//	sound (self, CHAN_BODY, "player/inlava.wav", 1, ATTN_NORM);
+					//	sound (self, CHAN_BODY, "player/inlava.wav", VOL_BASE, ATTN_NORM);
 					//if (self.watertype == CONTENT_WATER)
-					//	sound (self, CHAN_BODY, "player/inh2o.wav", 1, ATTN_NORM);
+					//	sound (self, CHAN_BODY, "player/inh2o.wav", VOL_BASE, ATTN_NORM);
 					//if (self.watertype == CONTENT_SLIME)
-					//	sound (self, CHAN_BODY, "player/slimbrn2.wav", 1, ATTN_NORM);
+					//	sound (self, CHAN_BODY, "player/slimbrn2.wav", VOL_BASE, ATTN_NORM);
 					self.flags = self.flags + FL_INWATER;
 					self.dmgtime = 0;
 				}
@@ -46,7 +46,7 @@
 						if (self.watersound_finished < time)
 						{
 							self.watersound_finished = time + 0.5;
-							sound (self, CHAN_BODY, "player/lava.wav", 1, ATTN_NORM);
+							sound (self, CHAN_BODY, "player/lava.wav", VOL_BASE, ATTN_NORM);
 						}
 						Damage (self, world, world, 6 * self.waterlevel, DEATH_LAVA, self.origin, '0 0 0');
 					}
@@ -55,7 +55,7 @@
 						if (self.watersound_finished < time)
 						{
 							self.watersound_finished = time + 0.5;
-							sound (self, CHAN_BODY, "player/slime.wav", 1, ATTN_NORM);
+							sound (self, CHAN_BODY, "player/slime.wav", VOL_BASE, ATTN_NORM);
 						}
 						Damage (self, world, world, 2 * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0');
 					}

Modified: trunk/data/qcsrc/server/t_items.qc
===================================================================
--- trunk/data/qcsrc/server/t_items.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/t_items.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -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", 1, ATTN_NORM);	// play respawn sound
+	sound (self, CHAN_VOICE, "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,8 @@
 	if (!pickedup)
 		return;
 
-	sound (self, CHAN_BODY, self.noise, 1, ATTN_NORM);
-	sound (other, CHAN_AUTO, self.item_pickupsound, 1, ATTN_NORM);
+	sound (self, CHAN_BODY, self.noise, VOL_BASE, ATTN_NORM);
+	sound (other, CHAN_AUTO, self.item_pickupsound, VOL_BASE, ATTN_NORM);
 
 	oldself = self;
 	self = other;

Modified: trunk/data/qcsrc/server/t_jumppads.qc
===================================================================
--- trunk/data/qcsrc/server/t_jumppads.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/t_jumppads.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -131,7 +131,7 @@
 		{
 			// flash when activated
 			pointparticles(particleeffectnum("jumppad_activate"), other.origin, other.velocity, 1);
-			sound (other, CHAN_ITEM, self.noise, 1, ATTN_NORM);
+			sound (other, CHAN_ITEM, self.noise, VOL_BASE, ATTN_NORM);
 			self.pushltime = time + 0.2;
 		}
 		if(clienttype(other) == CLIENTTYPE_REAL)

Modified: trunk/data/qcsrc/server/t_plats.qc
===================================================================
--- trunk/data/qcsrc/server/t_plats.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/t_plats.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -49,7 +49,7 @@
 
 void plat_hit_top()
 {
-	sound (self, CHAN_VOICE, self.noise1, 1, ATTN_NORM);
+	sound (self, CHAN_VOICE, 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, 1, ATTN_NORM);
+	sound (self, CHAN_VOICE, self.noise1, VOL_BASE, ATTN_NORM);
 	self.state = 2;
 };
 
 void plat_go_down()
 {
-	sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM);
+	sound (self, CHAN_VOICE, 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, 1, ATTN_NORM);
+	sound (self, CHAN_VOICE, 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, 1, ATTN_NORM);
+		sound (self, CHAN_VOICE, 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, 1, ATTN_NORM);
+	sound (self, CHAN_VOICE, self.noise1, VOL_BASE, ATTN_NORM);
 	SUB_CalcMove (targ.origin - self.mins, self.speed, train_wait);
 };
 
@@ -413,7 +413,7 @@
 	if (self.noise)
 	{
 		precache_sound(self.noise);
-		ambientsound(self.origin, self.noise, 1, ATTN_IDLE);
+		ambientsound(self.origin, self.noise, VOL_BASE, ATTN_IDLE);
 	}
 	if (!self.speed)
 		self.speed = 100;
@@ -485,7 +485,7 @@
 	if (self.noise)
 	{
 		precache_sound(self.noise);
-		ambientsound(self.origin, self.noise, 1, ATTN_IDLE);
+		ambientsound(self.origin, self.noise, VOL_BASE, ATTN_IDLE);
 	}
 	if (!self.speed)
 		self.speed = 4;
@@ -577,7 +577,7 @@
 		return;
 
 	if (self.noise != "")
-		sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM);
+		sound (self, CHAN_VOICE, 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, 1, ATTN_NORM);
+		sound (self, CHAN_VOICE, 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, 1, ATTN_NORM);
+		sound (self, CHAN_VOICE, self.noise1, VOL_BASE, ATTN_NORM);
 	self.state = STATE_BOTTOM;
 };
 
 void door_go_down()
 {
 	if (self.noise2 != "")
-		sound (self, CHAN_VOICE, self.noise2, 1, ATTN_NORM);
+		sound (self, CHAN_VOICE, 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, 1, ATTN_NORM);
+		sound (self, CHAN_VOICE, 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", 1, ATTN_NORM);
+		sound (other, CHAN_VOICE, "misc/talk.wav", VOL_BASE, ATTN_NORM);
 	}
 };
 
@@ -1201,7 +1201,7 @@
 	// Make a sound, wait a little...
 
 	if (self.noise1 != "")
-		sound(self, CHAN_VOICE, self.noise1, 1, ATTN_NORM);
+		sound(self, CHAN_VOICE, 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, 1, ATTN_NORM);
+		sound(self, CHAN_VOICE, 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, 1, ATTN_NORM);
+		sound(self, CHAN_VOICE, self.noise3, VOL_BASE, ATTN_NORM);
 };
 
 // Start moving sideways w/sound...
 void fd_secret_move2()
 {
 	if (self.noise2 != "")
-		sound(self, CHAN_VOICE, self.noise2, 1, ATTN_NORM);
+		sound(self, CHAN_VOICE, 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, 1, ATTN_NORM);
+		sound(self, CHAN_VOICE, 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, 1, ATTN_NORM);
+		sound(self, CHAN_VOICE, 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, 1, ATTN_NORM);
+		sound(self, CHAN_VOICE, self.noise3, VOL_BASE, ATTN_NORM);
 };
 
 void fd_secret_move6()
 {
 	if (self.noise2 != "")
-		sound(self, CHAN_VOICE, self.noise2, 1, ATTN_NORM);
+		sound(self, CHAN_VOICE, 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, 1, ATTN_NORM);
+		sound(self, CHAN_VOICE, 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", 1, ATTN_NORM);
+		sound (other, CHAN_BODY, "misc/talk.wav", VOL_BASE, ATTN_NORM);
 	}
 };
 

Modified: trunk/data/qcsrc/server/t_teleporters.qc
===================================================================
--- trunk/data/qcsrc/server/t_teleporters.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/t_teleporters.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -63,11 +63,11 @@
 		return;
 
 	// Make teleport effect where the player left
-	sound (other, CHAN_ITEM, "misc/teleport.wav", 1, ATTN_NORM);
+	sound (other, CHAN_ITEM, "misc/teleport.wav", VOL_BASE, ATTN_NORM);
 	pointparticles(particleeffectnum("teleport"), other.origin, '0 0 0', 1);
 
 	// Make teleport effect where the player arrived
-	sound (other, CHAN_ITEM, "misc/teleport.wav", 1, ATTN_NORM);
+	sound (other, 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 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/w_electro.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -15,7 +15,7 @@
 		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", 1, ATTN_NORM);
+	sound (self, CHAN_BODY, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
 
 	remove (self);
 }
@@ -26,7 +26,7 @@
 	org2 = findbetterlocation (self.origin, 8);
 	pointparticles(particleeffectnum("electro_combo"), org2, '0 0 0', 1);
 
-	sound (self, CHAN_BODY, "weapons/electro_impact_combo.wav", 1, ATTN_NORM);
+	sound (self, CHAN_BODY, "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 @@
 	entity o;
 	if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
 	{
-		sound (self, CHAN_BODY, "misc/null.wav", 1, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/null.wav", VOL_BASE, ATTN_NORM);
 		remove(self);
 		return;
 	}
@@ -50,7 +50,7 @@
 				if(IsFlying(other))
 					announce(o, "announcer/male/electrobitch.ogg");
 	} else {
-		sound (self, CHAN_IMPACT, "weapons/electro_bounce.wav", 1, ATTN_NORM);
+		sound (self, CHAN_IMPACT, "weapons/electro_bounce.wav", VOL_BASE, ATTN_NORM);
 	}
 }
 
@@ -59,7 +59,7 @@
 	entity o;
 	if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
 	{
-		sound (self, CHAN_BODY, "misc/null.wav", 1, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/null.wav", VOL_BASE, ATTN_NORM);
 		remove(self);
 		return;
 	}
@@ -122,7 +122,7 @@
 	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", 1, ATTN_NORM);
+	//sound (proj, CHAN_BODY, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
 }
 
 void W_Electro_Attack2()
@@ -161,7 +161,7 @@
 	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", 1, ATTN_NORM);
+	//sound (proj, CHAN_BODY, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
 }
 
 .float bot_secondary_electromooth;

Modified: trunk/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_grenadelauncher.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/w_grenadelauncher.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -4,7 +4,7 @@
 	vector	org2;
 	org2 = findbetterlocation (self.origin, 12);
 	pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1);
-	sound (self, CHAN_BODY, "weapons/grenade_impact.wav", 1, ATTN_NORM);
+	sound (self, CHAN_BODY, "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 @@
 	vector	org2;
 	org2 = findbetterlocation (self.origin, 12);
 	pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1);
-	sound (self, CHAN_BODY, "weapons/grenade_impact.wav", 1, ATTN_NORM);
+	sound (self, CHAN_BODY, "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 @@
 		float r;
 		r = random() * 6;
 		if(r < 1)
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce1.wav", 1, ATTN_NORM);
+			sound (self, CHAN_IMPACT, "weapons/grenade_bounce1.wav", VOL_BASE, ATTN_NORM);
 		else if(r < 2)
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce2.wav", 1, ATTN_NORM);
+			sound (self, CHAN_IMPACT, "weapons/grenade_bounce2.wav", VOL_BASE, ATTN_NORM);
 		else if(r < 3)
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce3.wav", 1, ATTN_NORM);
+			sound (self, CHAN_IMPACT, "weapons/grenade_bounce3.wav", VOL_BASE, ATTN_NORM);
 		else if(r < 4)
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce4.wav", 1, ATTN_NORM);
+			sound (self, CHAN_IMPACT, "weapons/grenade_bounce4.wav", VOL_BASE, ATTN_NORM);
 		else if(r < 5)
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce5.wav", 1, ATTN_NORM);
+			sound (self, CHAN_IMPACT, "weapons/grenade_bounce5.wav", VOL_BASE, ATTN_NORM);
 		else
-			sound (self, CHAN_IMPACT, "weapons/grenade_bounce6.wav", 1, ATTN_NORM);
+			sound (self, CHAN_IMPACT, "weapons/grenade_bounce6.wav", VOL_BASE, ATTN_NORM);
 	}
 }
 

Modified: trunk/data/qcsrc/server/w_hagar.qc
===================================================================
--- trunk/data/qcsrc/server/w_hagar.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/w_hagar.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -6,11 +6,11 @@
 	pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
 	b = crandom();
 	if (b<-0.7)
-		sound (self, CHAN_BODY, "weapons/hagexp1.wav", 1, ATTN_NORM);
+		sound (self, CHAN_BODY, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM);
 	else if (b<0.4)
-		sound (self, CHAN_BODY, "weapons/hagexp2.wav", 1, ATTN_NORM);
+		sound (self, CHAN_BODY, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM);
 	else if (b<1)
-		sound (self, CHAN_BODY, "weapons/hagexp3.wav", 1, ATTN_NORM);
+		sound (self, CHAN_BODY, "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 @@
 	pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
 	b = crandom();
 	if (b<-0.7)
-		sound (self, CHAN_BODY, "weapons/hagexp1.wav", 1, ATTN_NORM);
+		sound (self, CHAN_BODY, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM);
 	else if (b<0.4)
-		sound (self, CHAN_BODY, "weapons/hagexp2.wav", 1, ATTN_NORM);
+		sound (self, CHAN_BODY, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM);
 	else if (b<1)
-		sound (self, CHAN_BODY, "weapons/hagexp3.wav", 1, ATTN_NORM);
+		sound (self, CHAN_BODY, "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);

Modified: trunk/data/qcsrc/server/w_laser.qc
===================================================================
--- trunk/data/qcsrc/server/w_laser.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/w_laser.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -27,7 +27,7 @@
 		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", 1, ATTN_NORM);
+	sound (self, CHAN_BODY, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
 
 	remove (self);
 }

Modified: trunk/data/qcsrc/server/w_nex.qc
===================================================================
--- trunk/data/qcsrc/server/w_nex.qc	2008-08-05 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/w_nex.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -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
-	PointSound (trace_endpos, "weapons/neximpact.wav", 1, ATTN_NORM);
+	soundat (trace_endpos, "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 15:05:08 UTC (rev 4028)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc	2008-08-05 16:20:27 UTC (rev 4029)
@@ -5,7 +5,7 @@
 void W_Rocket_Explode (void)
 {
 	vector	org2;
-	sound (self, CHAN_BODY, "weapons/rocket_impact.wav", 1, ATTN_NORM);
+	sound (self, CHAN_BODY, "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 @@
 		self.owner.lastrocket = world;
 	if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
 	{
-		sound (self, CHAN_BODY, "misc/null.wav", 1, ATTN_NORM);
+		sound (self, CHAN_BODY, "misc/null.wav", VOL_BASE, ATTN_NORM);
 		remove(self);
 		return;
 	}
@@ -254,7 +254,7 @@
 	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, ATTN_NORM);
+	sound (missile, CHAN_BODY, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM);
 	missile.flags = FL_PROJECTILE;
 
 	// muzzle flash for 1st person view
@@ -392,7 +392,7 @@
 		if(time > self.rl_sound)
 		{
 			self.rl_sound = time + 1;
-			sound (self, CHAN_BODY, "weapons/rocket_det.wav", 0.5, ATTN_NORM);
+			sound (self, CHAN_BODY, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM);
 		}
 		if (self.BUTTON_ATCK2)
 		if(g_laserguided_missile)
@@ -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", 1, ATTN_NORM);
+			sound (self, CHAN_AUTO, "weapons/tink1.wav", VOL_BASE, ATTN_NORM);
 		}
 	}
 	else if (req == WR_PRECACHE)




More information about the nexuiz-commits mailing list