[nexuiz-commits] r8627 - in trunk/data: . qcsrc/client qcsrc/common qcsrc/menu qcsrc/server sound/announcer sound/announcer/default sound/announcer/male sound/announcer/robotic

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Feb 9 08:37:46 EST 2010


Author: fruitiex
Date: 2010-02-09 08:37:45 -0500 (Tue, 09 Feb 2010)
New Revision: 8627

Added:
   trunk/data/sound/announcer/default/
   trunk/data/sound/announcer/default/03kills.ogg
   trunk/data/sound/announcer/default/05kills.ogg
   trunk/data/sound/announcer/default/1.ogg
   trunk/data/sound/announcer/default/10.ogg
   trunk/data/sound/announcer/default/10kills.ogg
   trunk/data/sound/announcer/default/15kills.ogg
   trunk/data/sound/announcer/default/1fragleft.ogg
   trunk/data/sound/announcer/default/1minuteremains.ogg
   trunk/data/sound/announcer/default/2.ogg
   trunk/data/sound/announcer/default/20kills.ogg
   trunk/data/sound/announcer/default/25kills.ogg
   trunk/data/sound/announcer/default/2fragsleft.ogg
   trunk/data/sound/announcer/default/3.ogg
   trunk/data/sound/announcer/default/30kills.ogg
   trunk/data/sound/announcer/default/3fragsleft.ogg
   trunk/data/sound/announcer/default/4.ogg
   trunk/data/sound/announcer/default/5.ogg
   trunk/data/sound/announcer/default/5minutesremain.ogg
   trunk/data/sound/announcer/default/6.ogg
   trunk/data/sound/announcer/default/7.ogg
   trunk/data/sound/announcer/default/8.ogg
   trunk/data/sound/announcer/default/9.ogg
   trunk/data/sound/announcer/default/airshot.ogg
   trunk/data/sound/announcer/default/amazing.ogg
   trunk/data/sound/announcer/default/awesome.ogg
   trunk/data/sound/announcer/default/begin.ogg
   trunk/data/sound/announcer/default/blueteamtakeslead.ogg
   trunk/data/sound/announcer/default/botlike.ogg
   trunk/data/sound/announcer/default/electrobitch.ogg
   trunk/data/sound/announcer/default/headshot.ogg
   trunk/data/sound/announcer/default/impressive.ogg
   trunk/data/sound/announcer/default/lastsecond.ogg
   trunk/data/sound/announcer/default/leadgained.ogg
   trunk/data/sound/announcer/default/leadlost.ogg
   trunk/data/sound/announcer/default/leadtied.ogg
   trunk/data/sound/announcer/default/narrowly.ogg
   trunk/data/sound/announcer/default/prepareforbattle.ogg
   trunk/data/sound/announcer/default/redteamtakeslead.ogg
   trunk/data/sound/announcer/default/terminated.ogg
   trunk/data/sound/announcer/default/timeoutcalled.ogg
   trunk/data/sound/announcer/default/welcome.ogg
   trunk/data/sound/announcer/default/yoda.ogg
Removed:
   trunk/data/sound/announcer/male/03kills.ogg
   trunk/data/sound/announcer/male/05kills.ogg
   trunk/data/sound/announcer/male/10kills.ogg
   trunk/data/sound/announcer/male/15kills.ogg
   trunk/data/sound/announcer/male/20kills.ogg
   trunk/data/sound/announcer/male/25kills.ogg
   trunk/data/sound/announcer/male/30kills.ogg
   trunk/data/sound/announcer/male/airshot.ogg
   trunk/data/sound/announcer/male/amazing.ogg
   trunk/data/sound/announcer/male/awesome.ogg
   trunk/data/sound/announcer/male/botlike.ogg
   trunk/data/sound/announcer/male/electrobitch.ogg
   trunk/data/sound/announcer/male/headshot.ogg
   trunk/data/sound/announcer/male/impressive.ogg
   trunk/data/sound/announcer/male/welcome.ogg
   trunk/data/sound/announcer/male/yoda.ogg
   trunk/data/sound/announcer/robotic/1.ogg
   trunk/data/sound/announcer/robotic/10.ogg
   trunk/data/sound/announcer/robotic/1fragleft.ogg
   trunk/data/sound/announcer/robotic/1minuteremains.ogg
   trunk/data/sound/announcer/robotic/2.ogg
   trunk/data/sound/announcer/robotic/2fragsleft.ogg
   trunk/data/sound/announcer/robotic/3.ogg
   trunk/data/sound/announcer/robotic/3fragsleft.ogg
   trunk/data/sound/announcer/robotic/4.ogg
   trunk/data/sound/announcer/robotic/5.ogg
   trunk/data/sound/announcer/robotic/5minutesremain.ogg
   trunk/data/sound/announcer/robotic/6.ogg
   trunk/data/sound/announcer/robotic/7.ogg
   trunk/data/sound/announcer/robotic/8.ogg
   trunk/data/sound/announcer/robotic/9.ogg
   trunk/data/sound/announcer/robotic/begin.ogg
   trunk/data/sound/announcer/robotic/blueteamtakeslead.ogg
   trunk/data/sound/announcer/robotic/lastsecond.ogg
   trunk/data/sound/announcer/robotic/leadgained.ogg
   trunk/data/sound/announcer/robotic/leadlost.ogg
   trunk/data/sound/announcer/robotic/leadtied.ogg
   trunk/data/sound/announcer/robotic/narrowly.ogg
   trunk/data/sound/announcer/robotic/prepareforbattle.ogg
   trunk/data/sound/announcer/robotic/redteamtakeslead.ogg
   trunk/data/sound/announcer/robotic/terminated.ogg
   trunk/data/sound/announcer/robotic/timeoutcalled.ogg
Modified:
   trunk/data/defaultNexuiz.cfg
   trunk/data/qcsrc/client/Defs.qc
   trunk/data/qcsrc/client/Main.qc
   trunk/data/qcsrc/client/View.qc
   trunk/data/qcsrc/client/miscfunctions.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/menu/menu.qc
   trunk/data/qcsrc/server/arena.qc
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/clientcommands.qc
   trunk/data/qcsrc/server/defs.qh
   trunk/data/qcsrc/server/g_damage.qc
   trunk/data/qcsrc/server/g_world.qc
   trunk/data/qcsrc/server/miscfunctions.qc
   trunk/data/qcsrc/server/portals.qc
   trunk/data/qcsrc/server/t_items.qc
   trunk/data/qcsrc/server/w_common.qc
   trunk/data/qcsrc/server/w_electro.qc
   trunk/data/qcsrc/server/w_grenadelauncher.qc
   trunk/data/qcsrc/server/w_minstanex.qc
   trunk/data/qcsrc/server/w_nex.qc
   trunk/data/qcsrc/server/w_rocketlauncher.qc
Log:
clientside announcers, patch by Taoki with some minor tweaks

Modified: trunk/data/defaultNexuiz.cfg
===================================================================
--- trunk/data/defaultNexuiz.cfg	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/defaultNexuiz.cfg	2010-02-09 13:37:45 UTC (rev 8627)
@@ -866,6 +866,7 @@
 seta cl_notify_carried_items "3" "notify you of carried items when you obtain them (e.g. flags in CTF) - 0: disabled, 1: notify of taken items, 2: notify of picking up dropped items, 3: notify of both"
 
 seta cl_hitsound 1 "play a hit notifier sound when you have hit an enemy"
+seta cl_announcer default "name of the announcer you wish to use from data/sound/announcer"
 
 // startmap_dm is used when running with the -listen or -dedicated commandline options
 set serverconfig server.cfg

Modified: trunk/data/qcsrc/client/Defs.qc
===================================================================
--- trunk/data/qcsrc/client/Defs.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/client/Defs.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -178,6 +178,9 @@
 float vid_conwidth, vid_conheight;
 float binddb;
 
+//	Announcer
+string announce_snd;
+
 // QUALIFYING
 float race_checkpoint;
 float race_time;

Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/client/Main.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -42,6 +42,7 @@
 #endif
 
 string forcefog;
+string cl_announcer_prev;
 void WaypointSprite_Load();
 void CSQC_Init(void)
 {
@@ -128,11 +129,17 @@
 
 	WaypointSprite_Load();
 
+	// precaches
 	Projectile_Precache();
 	GibSplash_Precache();
 	Casings_Precache();
 	DamageInfo_Precache();
-	Announcer_Precache();
+	if(cvar_string("cl_announcer") != cl_announcer_prev) {
+		Announcer_Precache();
+		if(cl_announcer_prev)
+			strunzone(cl_announcer_prev);
+		cl_announcer_prev = strzone(cvar_string("cl_announcer"));
+	}
 	Tuba_Precache();
 
 #ifdef UID
@@ -1251,14 +1258,18 @@
 			Net_VoteDialogReset();
 			bHandled = true;
 			break;
-        case TE_CSQC_LIGHTNINGARC:
-            Net_ReadLightningarc();
-            bHandled = true;
-            break;
-        case TE_CSQC_PINGPLREPORT:
-            Net_ReadPingPLReport();
-            bHandled = true;
-            break;
+		case TE_CSQC_LIGHTNINGARC:
+			Net_ReadLightningarc();
+			bHandled = true;
+			break;
+		case TE_CSQC_PINGPLREPORT:
+			Net_ReadPingPLReport();
+			bHandled = true;
+			break;
+		case TE_CSQC_ANNOUNCE:
+			announce_snd = strzone(ReadString());
+			bHandled = true;
+			break;
 		default:
 			// No special logic for this temporary entity; return 0 so the engine can handle it
 			bHandled = false;

Modified: trunk/data/qcsrc/client/View.qc
===================================================================
--- trunk/data/qcsrc/client/View.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/client/View.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -102,7 +102,7 @@
 	if (previous_game_starttime != startTime) {
 		if ((time + 5.0) < startTime) {
 			//if connecting to server while restart was active don't always play prepareforbattle
-			sound(self, CHAN_VOICE, "announcer/robotic/prepareforbattle.wav", VOL_BASEVOICE, ATTN_NONE);
+			sound(self, CHAN_VOICE, strcat("announcer/", cvar_string("cl_announcer"), "/prepareforbattle.wav"), VOL_BASEVOICE, ATTN_NONE);
 		}
 		if (time < startTime) {
 			restartAnnouncer = spawn();
@@ -410,6 +410,7 @@
 		}
 
 	CheckForGamestartChange();
+	serverAnnouncer();
 	maptimeAnnouncer();
 	carrierAnnouncer();
 

Modified: trunk/data/qcsrc/client/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/client/miscfunctions.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/client/miscfunctions.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -3,6 +3,17 @@
 entity players;
 entity teams;
 
+void serverAnnouncer()
+{
+	// check for pending announcement, play it and remove it
+	if(announce_snd != "")
+	{
+		sound(self, CHAN_VOICE, strcat("announcer/", cvar_string("cl_announcer"), "/", announce_snd, ".wav"), VOL_BASEVOICE, ATTN_NONE);
+		strunzone(announce_snd);
+		announce_snd = "";
+	}
+}
+
 void restartAnnouncer_Think() {
 	float countdown_rounded, countdown;
 	countdown = getstatf(STAT_GAMESTARTTIME) - time;
@@ -11,7 +22,7 @@
 		if (!spectatee_status) //do cprint only for players
 			centerprint("^1Begin!");
 
-		sound(self, CHAN_VOICE, "announcer/robotic/begin.wav", VOL_BASEVOICE, ATTN_NONE);
+		sound(self, CHAN_VOICE, strcat("announcer/", cvar_string("cl_announcer"), "/begin.wav"), VOL_BASEVOICE, ATTN_NONE);
 		//reset maptime announcers now as well
 		announcer_5min = announcer_1min = FALSE;
 
@@ -23,7 +34,7 @@
 			centerprint(strcat("^1Game starts in ", ftos(countdown_rounded), " seconds"));
 
 		if(countdown_rounded <= 3 && countdown_rounded >= 1) {
-			sound(self, CHAN_VOICE, strcat("announcer/robotic/", ftos(countdown_rounded), ".wav"), VOL_BASEVOICE, ATTN_NONE);
+			sound(self, CHAN_VOICE, strcat("announcer/", cvar_string("cl_announcer"), "/", ftos(countdown_rounded), ".wav"), VOL_BASEVOICE, ATTN_NONE);
 		}
 
 		self.nextthink = getstatf(STAT_GAMESTARTTIME) - (countdown - 1);
@@ -61,7 +72,7 @@
         if not (warmuplimit == -1 && warmup_stage) {
 			announcer_5min = TRUE;
 			//dprint("i will play the sound, I promise!\n");
-			sound(self, CHAN_VOICE, "announcer/robotic/5minutesremain.wav", VOL_BASEVOICE, ATTN_NONE);
+			sound(self, CHAN_VOICE, strcat("announcer/", cvar_string("cl_announcer"), "/5minutesremain.wav"), VOL_BASEVOICE, ATTN_NONE);
 		}
     }
 
@@ -76,7 +87,7 @@
 	//if we're in warmup mode, check whether there's a warmup timelimit
     	if not (warmuplimit == -1 && warmup_stage) {
 			announcer_1min = TRUE;
-			sound(self, CHAN_VOICE, "announcer/robotic/1minuteremains.wav", VOL_BASEVOICE, ATTN_NONE);
+			sound(self, CHAN_VOICE, strcat("announcer/", cvar_string("cl_announcer"), "/1minuteremains.wav"), VOL_BASEVOICE, ATTN_NONE);
     	}
 	}
 }
@@ -126,17 +137,50 @@
 }
 
 /**
-  * Add all future announcer sounds precaches here.
-  * TODO: make all announcer sound() calls client-side in the end, to allow queues etc.
-  */
-
-/**
  * Add all future announcer sounds precaches here.
- * TODO: make all announcer sound() calls client-side in the end, to allow queues etc.
+ * TODO: announcer queues
  */
 void Announcer_Precache () {
-    precache_sound ("announcer/robotic/1minuteremains.wav");
-	precache_sound ("announcer/robotic/5minutesremain.wav");
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/1minuteremains.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/5minutesremain.wav"));
+
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/electrobitch.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/airshot.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/03kills.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/05kills.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/10kills.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/15kills.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/20kills.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/25kills.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/30kills.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/botlike.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/yoda.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/amazing.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/awesome.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/headshot.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/impressive.wav"));
+
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/prepareforbattle.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/begin.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/timeoutcalled.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/1fragleft.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/2fragsleft.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/3fragsleft.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/terminated.wav"));
+
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/1.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/2.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/3.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/4.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/5.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/6.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/7.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/8.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/9.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/10.wav"));
+
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/lastsecond.wav"));
+	precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/narrowly.wav"));
 }
 
 void AuditLists()

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/common/constants.qh	2010-02-09 13:37:45 UTC (rev 8627)
@@ -55,6 +55,7 @@
 const float TE_CSQC_PINGPLREPORT = 107;
 const float TE_CSQC_VOTE = 108;
 const float TE_CSQC_VOTERESET = 109;
+const float TE_CSQC_ANNOUNCE = 110;
 
 const float RACE_NET_CHECKPOINT_HIT_QUALIFYING = 0; // byte checkpoint, short time, short recordtime, string recordholder
 const float RACE_NET_CHECKPOINT_CLEAR = 1;

Modified: trunk/data/qcsrc/menu/menu.qc
===================================================================
--- trunk/data/qcsrc/menu/menu.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/menu/menu.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -554,7 +554,7 @@
 		if(Menu_Active)
 		if(!cvar("menu_video_played"))
 		{
-			localcmd("set menu_video_played 1; cd loop $menu_cdtrack; play sound/announcer/male/welcome.ogg\n");
+			localcmd("set menu_video_played 1; cd loop $menu_cdtrack; play sound/announcer/default/welcome.ogg\n");
 			menuLogoAlpha = -0.8; // no idea why, but when I start this at zero, it jumps instead of fading
 		}
 	}

Modified: trunk/data/qcsrc/server/arena.qc
===================================================================
--- trunk/data/qcsrc/server/arena.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/arena.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -215,13 +215,13 @@
 			//centerprint(self, strcat("Round will start in ", ftos(f),"\n"));
 			roundStartTime_prev = f;
 			if(f == 5)
-				play2all("announcer/robotic/prepareforbattle.wav");
+				Announce("prepareforbattle");
 			else if(f == 3)
-				play2all("announcer/robotic/3.wav");
+				Announce("3");
 			else if(f == 2)
-				play2all("announcer/robotic/2.wav");
+				Announce("2");
 			else if(f == 1)
-				play2all("announcer/robotic/1.wav");
+				Announce("1");
 
 			centerprint(self, msg);
 		}
@@ -240,7 +240,7 @@
 	else if(f > -1 && f != roundStartTime_prev)
 	{
 		roundStartTime_prev = f;
-		play2all("announcer/robotic/begin.wav");
+		Announce("begin");
 		centerprint(self, "^1Begin!\n");	
 
 		if(g_ca) {

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/cl_client.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -6,6 +6,19 @@
 	WriteByte(0, TE_CSQC_TEAMNAGGER);
 }
 
+void Announce(string snd) {
+	WriteByte(MSG_ALL, SVC_TEMPENTITY);
+	WriteByte(MSG_ALL, TE_CSQC_ANNOUNCE);
+	WriteString(MSG_ALL, snd);
+}
+
+void AnnounceTo(entity e, string snd) {
+	msg_entity = e;
+	WriteByte(MSG_ONE, SVC_TEMPENTITY);
+	WriteByte(MSG_ONE, TE_CSQC_ANNOUNCE);
+	WriteString(MSG_ONE, snd);
+}
+
 float ClientData_Send(entity to, float sf)
 {
 	if(to != self.owner)
@@ -1148,7 +1161,7 @@
 		if(clienttype(self.owner) == CLIENTTYPE_REAL)
 		{
 			if(self.cnt <= 10)
-				announce(self.owner, strcat("announcer/robotic/", ftos(self.cnt), ".wav"));
+				AnnounceTo(self.owner, strcat(ftos(self.cnt), ""));
 			if(self.owner.killindicator_teamchange)
 			{
 				if(self.owner.killindicator_teamchange == -1)
@@ -2197,7 +2210,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
-				announce(self, strcat("announcer/robotic/", ftos(number), ".wav"));
+				AnnounceTo(self, strcat(ftos(number), ""));
 		}
 	}
 }
@@ -2791,7 +2804,7 @@
 		if(timeleft <= 0)
 		{
 			bprint("^3", self.netname, "^3 was kicked for idling.\n");
-			announce(self, "announcer/robotic/terminated.wav");
+			AnnounceTo(self, "terminated");
 			dropclient(self);
 			return;
 		}
@@ -2800,7 +2813,7 @@
 			if(timeleft != self.idlekick_lasttimeleft)
 			{
 				centerprint_atprio(self, CENTERPRIO_IDLEKICK, strcat("^3Stop idling!\n^3Disconnecting in ", ftos(timeleft), "..."));
-				announce(self, strcat("announcer/robotic/", ftos(timeleft), ".wav"));
+				AnnounceTo(self, strcat(ftos(timeleft), ""));
 			}
 		}
 		else

Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/clientcommands.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -585,7 +585,7 @@
 	timeoutHandler.nextthink = time; //always let the entity think asap
 
 	//inform all connected clients about the timeout call
-	play2all("announcer/robotic/timeoutcalled.wav");
+	Announce("timeoutcalled");
 }
 
 /**

Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/defs.qh	2010-02-09 13:37:45 UTC (rev 8627)
@@ -337,6 +337,9 @@
 .float cvar_cl_gunalign;
 .float cvar_cl_noantilag;
 
+void Announce(string snd);
+void AnnounceTo(entity e, string snd);
+
 .float version_nagtime;
 
 .float modelindex_lod0;

Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/g_damage.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -485,7 +485,7 @@
 						bprint (a,"^7 made a ^1TRIPLE SCORE\n");
 					} else {
 						bprint (a,"^7 made a ^1TRIPLE FRAG\n");
-						announce(attacker, "announcer/male/03kills.wav");
+						AnnounceTo(attacker, "03kills");
 					}
 				}
 				else if (attacker.killcount == 5)
@@ -494,7 +494,7 @@
 						bprint (a,"^7 unleashes ^1SCORING RAGE\n");
 					} else {
 						bprint (a,"^7 unleashes ^1RAGE\n");
-						announce(attacker, "announcer/male/05kills.wav");
+						AnnounceTo(attacker, "05kills");
 					}
 				}
 				else if (attacker.killcount == 10)
@@ -503,7 +503,7 @@
 						bprint (a,"^7 made ^1TEN SCORES IN A ROW!\n");
 					} else {
 						bprint (a,"^7 starts the ^1MASSACRE!\n");
-						announce(attacker, "announcer/male/10kills.wav");
+						AnnounceTo(attacker, "10kills");
 					}
 				}
 				else if (attacker.killcount == 15)
@@ -512,7 +512,7 @@
 						bprint (a,"^7 made ^1FIFTEEN SCORES IN A ROW!\n");
 					} else {
 						bprint (a,"^7 executes ^1MAYHEM!\n");
-						announce(attacker, "announcer/male/15kills.wav");
+						AnnounceTo(attacker, "15kills");
 					}
 				}
 				else if (attacker.killcount == 20)
@@ -521,7 +521,7 @@
 						bprint (a,"^7 made ^1TWENTY SCORES IN A ROW!\n");
 					} else {
 						bprint (a,"^7 is a ^1BERSERKER!\n");
-						announce(attacker, "announcer/male/20kills.wav");
+						AnnounceTo(attacker, "20kills");
 					}
 				}
 				else if (attacker.killcount == 25)
@@ -530,7 +530,7 @@
 						bprint (a,"^7 made ^1TWENTY FIFE SCORES IN A ROW!\n");
 					} else {
 						bprint (a,"^7 inflicts ^1CARNAGE!\n");
-						announce(attacker, "announcer/male/25kills.wav");
+						AnnounceTo(attacker, "25kills");
 					}
 				}
 				else if (attacker.killcount == 30)
@@ -539,7 +539,7 @@
 						bprint (a,"^7 made ^1THIRTY SCORES IN A ROW!\n");
 					} else {
 						bprint (a,"^7 unleashes ^1ARMAGEDDON!\n");
-						announce(attacker, "announcer/male/30kills.wav");
+						AnnounceTo(attacker, "30kills");
 					}
 				}
 			}
@@ -593,7 +593,7 @@
 					bprint ("^1",s, "^1 died\n");
 			GiveFrags(targ, targ, -1);
 			if(PlayerScore_Add(targ, SP_SCORE, 0) == -5) {
-				announce(targ, "announcer/male/botlike.wav");
+				AnnounceTo(targ, "botlike");
 			}
 
 			if (targ.killcount > 2)

Modified: trunk/data/qcsrc/server/g_world.qc
===================================================================
--- trunk/data/qcsrc/server/g_world.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/g_world.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -140,7 +140,7 @@
 				}
 			}
 			if(remainingTimeoutTime == cvar("sv_timeout_resumetime")) { //play a warning sound when only <sv_timeout_resumetime> seconds are left
-				play2all("announcer/robotic/prepareforbattle.wav");
+				Announce("prepareforbattle");
 			}
 			remainingTimeoutTime -= 1;
 			self.nextthink = time + TIMEOUT_SLOWMO_VALUE;
@@ -1756,11 +1756,11 @@
 
 			if (limit)
 			if (leaderfrags == limit - 1)
-				play2all("announcer/robotic/1fragleft.wav");
+				Announce("1fragleft");
 			else if (leaderfrags == limit - 2)
-				play2all("announcer/robotic/2fragsleft.wav");
+				Announce("2fragsleft");
 			else if (leaderfrags == limit - 3)
-				play2all("announcer/robotic/3fragsleft.wav");
+				Announce("3fragsleft");
 		}
 	}
 

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -1509,27 +1509,16 @@
     soundtoat(MSG_ONE, world, '0 0 0', CHAN_AUTO, filename, VOL_BASE, ATTN_NONE);
 }
 
-.float announcetime;
-float announce(entity player, string msg)
-{
-    if (time > player.announcetime)
-        if (clienttype(player) == CLIENTTYPE_REAL)
-        {
-            player.announcetime = time + 0.8;
-            play2(player, msg);
-            return TRUE;
-        }
-    return FALSE;
-}
 // use this one if you might be causing spam (e.g. from touch functions that might get called more than once per frame)
+.float spamtime;
 float spamsound(entity e, float chan, string samp, float vol, float atten)
 {
     if (!sound_allowed(MSG_BROADCAST, e))
         return FALSE;
 
-    if (time > e.announcetime)
+    if (time > e.spamtime)
     {
-        e.announcetime = time;
+        e.spamtime = time;
         sound(e, chan, samp, vol, atten);
         return TRUE;
     }
@@ -1692,37 +1681,6 @@
     if (g_jetpack)
         precache_sound ("misc/jetpack_fly.wav");
 
-    // announcer sounds - male
-    precache_sound ("announcer/male/electrobitch.wav");
-    precache_sound ("announcer/male/airshot.wav");
-    precache_sound ("announcer/male/03kills.wav");
-    precache_sound ("announcer/male/05kills.wav");
-    precache_sound ("announcer/male/10kills.wav");
-    precache_sound ("announcer/male/15kills.wav");
-    precache_sound ("announcer/male/20kills.wav");
-    precache_sound ("announcer/male/25kills.wav");
-    precache_sound ("announcer/male/30kills.wav");
-    precache_sound ("announcer/male/botlike.wav");
-    precache_sound ("announcer/male/yoda.wav");
-    precache_sound ("announcer/male/amazing.wav");
-    precache_sound ("announcer/male/awesome.wav");
-    precache_sound ("announcer/male/headshot.wav");
-    precache_sound ("announcer/male/impressive.wav");
-
-    // announcer sounds - robotic
-    precache_sound ("announcer/robotic/prepareforbattle.wav");
-    precache_sound ("announcer/robotic/begin.wav");
-    precache_sound ("announcer/robotic/timeoutcalled.wav");
-    precache_sound ("announcer/robotic/1fragleft.wav");
-    precache_sound ("announcer/robotic/2fragsleft.wav");
-    precache_sound ("announcer/robotic/3fragsleft.wav");
-    precache_sound ("announcer/robotic/terminated.wav");
-    if (g_minstagib)
-    {
-        precache_sound ("announcer/robotic/lastsecond.wav");
-        precache_sound ("announcer/robotic/narrowly.wav");
-    }
-
     precache_model ("models/sprites/0.spr32");
     precache_model ("models/sprites/1.spr32");
     precache_model ("models/sprites/2.spr32");
@@ -1734,16 +1692,6 @@
     precache_model ("models/sprites/8.spr32");
     precache_model ("models/sprites/9.spr32");
     precache_model ("models/sprites/10.spr32");
-    precache_sound ("announcer/robotic/1.wav");
-    precache_sound ("announcer/robotic/2.wav");
-    precache_sound ("announcer/robotic/3.wav");
-    precache_sound ("announcer/robotic/4.wav");
-    precache_sound ("announcer/robotic/5.wav");
-    precache_sound ("announcer/robotic/6.wav");
-    precache_sound ("announcer/robotic/7.wav");
-    precache_sound ("announcer/robotic/8.wav");
-    precache_sound ("announcer/robotic/9.wav");
-    precache_sound ("announcer/robotic/10.wav");
 
     // common weapon precaches
     precache_sound ("weapons/weapon_switch.wav");

Modified: trunk/data/qcsrc/server/portals.qc
===================================================================
--- trunk/data/qcsrc/server/portals.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/portals.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -164,7 +164,7 @@
 	{
 		// telefrag within 1 second of portal creation = amazing
 		if(time < teleporter.teleport_time + 1)
-			announce(player, "announcer/male/amazing.wav");
+			AnnounceTo(player, "amazing");
 	}
 
 	if not(teleporter.enemy)

Modified: trunk/data/qcsrc/server/t_items.qc
===================================================================
--- trunk/data/qcsrc/server/t_items.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/t_items.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -273,13 +273,13 @@
 				if (clienttype(player) == CLIENTTYPE_REAL)
 				{
 					if(player.health <= 5)
-						play2(player, "announcer/robotic/lastsecond.wav");
+						AnnounceTo(player, "lastsecond");
 					else if(player.health < 50)
-						play2(player, "announcer/robotic/narrowly.wav");
+						AnnounceTo(player, "narrowly");
 				}
 				// sound not available
 				// else if(item.items == IT_CELLS)
-				//	play2(player, "announce/robotic/ammo.wav");
+				//	AnnounceTo(player, "ammo");
 
 				if (item.weapons & WEPBIT_MINSTANEX)
 					W_GiveWeapon (player, WEP_MINSTANEX, "Nex");
@@ -293,7 +293,7 @@
 			{
 				pickedup = TRUE;
 				// sound not available
-				// play2(player, "announce/robotic/extra.ogg\nplay2 announce/robotic/_lives.wav");
+				// AnnounceTo(player, "_lives");
 				player.armorvalue = player.armorvalue + cvar("g_minstagib_extralives");
 				sprint(player, "^3You picked up some extra lives\n");
 			}
@@ -303,7 +303,7 @@
 			{
 				pickedup = TRUE;
 				// sound not available
-				// play2(player, "announce/robotic/invisible.wav");
+				// AnnounceTo(player, "invisible");
 				player.strength_finished = max(player.strength_finished, time) + cvar("g_balance_powerup_strength_time");
 			}
 
@@ -312,7 +312,7 @@
 			{
 				pickedup = TRUE;
 				// sound not available
-				// play2(player, "announce/robotic/speed.wav");
+				// AnnounceTo(player, "speed");
 				player.invincible_finished = max(player.invincible_finished, time) + cvar("g_balance_powerup_strength_time");
 			}
 

Modified: trunk/data/qcsrc/server/w_common.qc
===================================================================
--- trunk/data/qcsrc/server/w_common.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/w_common.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -190,9 +190,9 @@
 		if(self.dmg_edge != 0)
 		{
 			if(headshot)
-				announce(self.owner, "announcer/male/headshot.wav");
+				AnnounceTo(self.owner, "headshot");
 			if(yoda)
-				announce(self.owner, "announcer/male/awesome.wav");
+				AnnounceTo(self.owner, "awesome");
 		}
 
 		// calculate hits for ballistic weapons

Modified: trunk/data/qcsrc/server/w_electro.qc
===================================================================
--- trunk/data/qcsrc/server/w_electro.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/w_electro.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -37,7 +37,7 @@
 			if(IsDifferentTeam(self.owner, other))
 				if(other.deadflag == DEAD_NO)
 					if(IsFlying(other))
-						announce(self.owner, "announcer/male/electrobitch.wav");
+						AnnounceTo(self.owner, "electrobitch");
 
 	self.event_damage = SUB_Null;
 	self.takedamage = DAMAGE_NO;

Modified: trunk/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_grenadelauncher.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/w_grenadelauncher.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -8,7 +8,7 @@
 			if(IsDifferentTeam(self.owner, other))
 				if(other.deadflag == DEAD_NO)
 					if(IsFlying(other))
-						announce(self.owner, "announcer/male/airshot.wav");
+						AnnounceTo(self.owner, "airshot");
 
 	self.event_damage = SUB_Null;
 	self.takedamage = DAMAGE_NO;
@@ -23,7 +23,7 @@
 		if(other.classname == "player")
 			if(IsDifferentTeam(self.owner, other))
 				if(IsFlying(other))
-					announce(self.owner, "announcer/male/airshot.wav");
+					AnnounceTo(self.owner, "airshot");
 
 	self.event_damage = SUB_Null;
 	self.takedamage = DAMAGE_NO;

Modified: trunk/data/qcsrc/server/w_minstanex.qc
===================================================================
--- trunk/data/qcsrc/server/w_minstanex.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/w_minstanex.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -18,20 +18,20 @@
 	if(g_minstagib)
 	{
 		if(yoda)
-			announce(self, "announcer/male/yoda.wav");
+			AnnounceTo(self, "yoda");
 	}
 	else
 	{
 		if(yoda && flying)
-			announce(self, "announcer/male/yoda.wav");
+			AnnounceTo(self, "yoda");
 		if(headshot)
 		{
-			announce(self, "announcer/male/headshot.wav");
+			AnnounceTo(self, "headshot");
 			print("h\n");
 		}
 		if(damage_goodhits && self.minstanex_lasthit)
 		{
-			if(announce(self, "announcer/male/impressive.wav"))
+			if(AnnounceTo(self, "impressive"))
 				damage_goodhits = 0; // only every second time
 		}
 	}
@@ -100,68 +100,68 @@
 		{
 			centerprint(self, "you're dead now...\n");
 			Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0');
-			announce(self, "announcer/robotic/terminated.wav");
+			AnnounceTo(self, "terminated");
 		}
 		else if (self.health == 10)
 		{
 			centerprint(self, "^11^7 second left to find some ammo\n");
 			Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0');
-			announce(self, "announcer/robotic/1.wav");
+			AnnounceTo(self, "1");
 		}
 		else if (self.health == 20)
 		{
 			centerprint(self, "^12^7 seconds left to find some ammo\n");
 			Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0');
-			announce(self, "announcer/robotic/2.wav");
+			AnnounceTo(self, "2");
 		}
 		else if (self.health == 30)
 		{
 			centerprint(self, "^13^7 seconds left to find some ammo\n");
 			Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0');
-			announce(self, "announcer/robotic/3.wav");
+			AnnounceTo(self, "3");
 		}
 		else if (self.health == 40)
 		{
 			centerprint(self, "^14^7 seconds left to find some ammo\n");
 			Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0');
-			announce(self, "announcer/robotic/4.wav");
+			AnnounceTo(self, "4");
 		}
 		else if (self.health == 50)
 		{
 			centerprint(self, "^15^7 seconds left to find some ammo\n");
 			Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0');
-			announce(self, "announcer/robotic/5.wav");
+			AnnounceTo(self, "5");
 		}
 		else if (self.health == 60)
 		{
 			centerprint(self, "^36^7 seconds left to find some ammo\n");
 			Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0');
-			announce(self, "announcer/robotic/6.wav");
+			AnnounceTo(self, "6");
 		}
 		else if (self.health == 70)
 		{
 			centerprint(self, "^37^7 seconds left to find some ammo\n");
 			Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0');
-			announce(self, "announcer/robotic/7.wav");
+			AnnounceTo(self, "7");
 		}
 		else if (self.health == 80)
 		{
 			centerprint(self, "^38^7 seconds left to find some ammo\n");
 			Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0');
-			announce(self, "announcer/robotic/8.wav");
+			AnnounceTo(self, "8");
 		}
 		else if (self.health == 90)
 		{
 			centerprint(self, "^39^7 seconds left to find some ammo\n");
 			Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0');
-			announce(self, "announcer/robotic/9.wav");
+			AnnounceTo(self, "9");
 		}
 		else if (self.health == 100)
 		{
 			centerprint(self, "get some ammo or\nyou'll be dead in ^310^7 seconds...");
 			Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0');
 			if not(self.flags & FL_GODMODE)
-				announce(self, "announcer/robotic/10.wav");
+				AnnounceTo(self, "10");
 		}
 	}
 	self.minstagib_nextthink = time + 1;

Modified: trunk/data/qcsrc/server/w_nex.qc
===================================================================
--- trunk/data/qcsrc/server/w_nex.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/w_nex.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -24,7 +24,7 @@
 	FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, cvar("g_balance_nex_damage"), cvar("g_balance_nex_force"), cvar("g_balance_nex_damagefalloff_mindist"), cvar("g_balance_nex_damagefalloff_maxdist"), cvar("g_balance_nex_damagefalloff_halflife"), cvar("g_balance_nex_damagefalloff_forcehalflife"), WEP_NEX);
 
 	if(yoda && flying)
-		announce(self, "announcer/male/yoda.wav");
+		AnnounceTo(self, "yoda");
 
 	//beam and muzzle flash done on client
 	SendCSQCNexBeamParticle();

Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc	2010-02-08 10:42:18 UTC (rev 8626)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc	2010-02-09 13:37:45 UTC (rev 8627)
@@ -21,7 +21,7 @@
 		if(other.classname == "player")
 			if(IsDifferentTeam(self.owner, other))
 				if(IsFlying(other))
-					announce(self.owner, "announcer/male/airshot.wav");
+					AnnounceTo(self.owner, "airshot");
 
 	self.event_damage = SUB_Null;
 	self.takedamage = DAMAGE_NO;

Copied: trunk/data/sound/announcer/default/03kills.ogg (from rev 8626, trunk/data/sound/announcer/male/03kills.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/05kills.ogg (from rev 8626, trunk/data/sound/announcer/male/05kills.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/1.ogg (from rev 8626, trunk/data/sound/announcer/robotic/1.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/10.ogg (from rev 8626, trunk/data/sound/announcer/robotic/10.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/10kills.ogg (from rev 8626, trunk/data/sound/announcer/male/10kills.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/15kills.ogg (from rev 8626, trunk/data/sound/announcer/male/15kills.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/1fragleft.ogg (from rev 8626, trunk/data/sound/announcer/robotic/1fragleft.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/1minuteremains.ogg (from rev 8626, trunk/data/sound/announcer/robotic/1minuteremains.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/2.ogg (from rev 8626, trunk/data/sound/announcer/robotic/2.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/20kills.ogg (from rev 8626, trunk/data/sound/announcer/male/20kills.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/25kills.ogg (from rev 8626, trunk/data/sound/announcer/male/25kills.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/2fragsleft.ogg (from rev 8626, trunk/data/sound/announcer/robotic/2fragsleft.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/3.ogg (from rev 8626, trunk/data/sound/announcer/robotic/3.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/30kills.ogg (from rev 8626, trunk/data/sound/announcer/male/30kills.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/3fragsleft.ogg (from rev 8626, trunk/data/sound/announcer/robotic/3fragsleft.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/4.ogg (from rev 8626, trunk/data/sound/announcer/robotic/4.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/5.ogg (from rev 8626, trunk/data/sound/announcer/robotic/5.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/5minutesremain.ogg (from rev 8626, trunk/data/sound/announcer/robotic/5minutesremain.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/6.ogg (from rev 8626, trunk/data/sound/announcer/robotic/6.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/7.ogg (from rev 8626, trunk/data/sound/announcer/robotic/7.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/8.ogg (from rev 8626, trunk/data/sound/announcer/robotic/8.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/9.ogg (from rev 8626, trunk/data/sound/announcer/robotic/9.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/airshot.ogg (from rev 8626, trunk/data/sound/announcer/male/airshot.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/amazing.ogg (from rev 8626, trunk/data/sound/announcer/male/amazing.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/awesome.ogg (from rev 8626, trunk/data/sound/announcer/male/awesome.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/begin.ogg (from rev 8626, trunk/data/sound/announcer/robotic/begin.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/blueteamtakeslead.ogg (from rev 8626, trunk/data/sound/announcer/robotic/blueteamtakeslead.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/botlike.ogg (from rev 8626, trunk/data/sound/announcer/male/botlike.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/electrobitch.ogg (from rev 8626, trunk/data/sound/announcer/male/electrobitch.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/headshot.ogg (from rev 8626, trunk/data/sound/announcer/male/headshot.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/impressive.ogg (from rev 8626, trunk/data/sound/announcer/male/impressive.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/lastsecond.ogg (from rev 8626, trunk/data/sound/announcer/robotic/lastsecond.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/leadgained.ogg (from rev 8626, trunk/data/sound/announcer/robotic/leadgained.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/leadlost.ogg (from rev 8626, trunk/data/sound/announcer/robotic/leadlost.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/leadtied.ogg (from rev 8626, trunk/data/sound/announcer/robotic/leadtied.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/narrowly.ogg (from rev 8626, trunk/data/sound/announcer/robotic/narrowly.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/prepareforbattle.ogg (from rev 8626, trunk/data/sound/announcer/robotic/prepareforbattle.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/redteamtakeslead.ogg (from rev 8626, trunk/data/sound/announcer/robotic/redteamtakeslead.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/terminated.ogg (from rev 8626, trunk/data/sound/announcer/robotic/terminated.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/timeoutcalled.ogg (from rev 8626, trunk/data/sound/announcer/robotic/timeoutcalled.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/welcome.ogg (from rev 8626, trunk/data/sound/announcer/male/welcome.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/announcer/default/yoda.ogg (from rev 8626, trunk/data/sound/announcer/male/yoda.ogg)
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/03kills.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/05kills.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/10kills.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/15kills.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/20kills.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/25kills.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/30kills.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/airshot.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/amazing.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/awesome.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/botlike.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/electrobitch.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/headshot.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/impressive.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/welcome.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/male/yoda.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/1.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/10.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/1fragleft.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/1minuteremains.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/2.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/2fragsleft.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/3.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/3fragsleft.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/4.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/5.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/5minutesremain.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/6.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/7.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/8.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/9.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/begin.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/blueteamtakeslead.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/lastsecond.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/leadgained.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/leadlost.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/leadtied.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/narrowly.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/prepareforbattle.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/redteamtakeslead.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/terminated.ogg
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/announcer/robotic/timeoutcalled.ogg
===================================================================
(Binary files differ)



More information about the nexuiz-commits mailing list