From d4a418f1a97aeba0ea059a8a62d1ba336e021050 Mon Sep 17 00:00:00 2001 From: fruitiex Date: Tue, 9 Feb 2010 13:37:45 +0000 Subject: [PATCH] clientside announcers, patch by Taoki with some minor tweaks git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8627 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 1 + data/qcsrc/client/Defs.qc | 3 + data/qcsrc/client/Main.qc | 29 +++++--- data/qcsrc/client/View.qc | 3 +- data/qcsrc/client/miscfunctions.qc | 68 ++++++++++++++---- data/qcsrc/common/constants.qh | 1 + data/qcsrc/menu/menu.qc | 2 +- data/qcsrc/server/arena.qc | 10 +-- data/qcsrc/server/cl_client.qc | 21 ++++-- data/qcsrc/server/clientcommands.qc | 2 +- data/qcsrc/server/defs.qh | 3 + data/qcsrc/server/g_damage.qc | 16 ++--- data/qcsrc/server/g_world.qc | 8 +-- data/qcsrc/server/miscfunctions.qc | 58 +-------------- data/qcsrc/server/portals.qc | 2 +- data/qcsrc/server/t_items.qc | 12 ++-- data/qcsrc/server/w_common.qc | 4 +- data/qcsrc/server/w_electro.qc | 2 +- data/qcsrc/server/w_grenadelauncher.qc | 4 +- data/qcsrc/server/w_minstanex.qc | 30 ++++---- data/qcsrc/server/w_nex.qc | 2 +- data/qcsrc/server/w_rocketlauncher.qc | 2 +- .../announcer/{male => default}/03kills.ogg | Bin .../announcer/{male => default}/05kills.ogg | Bin .../announcer/{robotic => default}/1.ogg | Bin .../announcer/{robotic => default}/10.ogg | Bin .../announcer/{male => default}/10kills.ogg | Bin .../announcer/{male => default}/15kills.ogg | Bin .../{robotic => default}/1fragleft.ogg | Bin .../{robotic => default}/1minuteremains.ogg | Bin .../announcer/{robotic => default}/2.ogg | Bin .../announcer/{male => default}/20kills.ogg | Bin .../announcer/{male => default}/25kills.ogg | Bin .../{robotic => default}/2fragsleft.ogg | Bin .../announcer/{robotic => default}/3.ogg | Bin .../announcer/{male => default}/30kills.ogg | Bin .../{robotic => default}/3fragsleft.ogg | Bin .../announcer/{robotic => default}/4.ogg | Bin .../announcer/{robotic => default}/5.ogg | Bin .../{robotic => default}/5minutesremain.ogg | Bin .../announcer/{robotic => default}/6.ogg | Bin .../announcer/{robotic => default}/7.ogg | Bin .../announcer/{robotic => default}/8.ogg | Bin .../announcer/{robotic => default}/9.ogg | Bin .../announcer/{male => default}/airshot.ogg | Bin .../announcer/{male => default}/amazing.ogg | Bin .../announcer/{male => default}/awesome.ogg | Bin .../announcer/{robotic => default}/begin.ogg | Bin .../blueteamtakeslead.ogg | Bin .../announcer/{male => default}/botlike.ogg | Bin .../{male => default}/electrobitch.ogg | Bin .../announcer/{male => default}/headshot.ogg | Bin .../{male => default}/impressive.ogg | Bin .../{robotic => default}/lastsecond.ogg | Bin .../{robotic => default}/leadgained.ogg | Bin .../{robotic => default}/leadlost.ogg | Bin .../{robotic => default}/leadtied.ogg | Bin .../{robotic => default}/narrowly.ogg | Bin .../{robotic => default}/prepareforbattle.ogg | Bin .../{robotic => default}/redteamtakeslead.ogg | Bin .../{robotic => default}/terminated.ogg | Bin .../{robotic => default}/timeoutcalled.ogg | Bin .../announcer/{male => default}/welcome.ogg | Bin .../announcer/{male => default}/yoda.ogg | Bin 64 files changed, 154 insertions(+), 129 deletions(-) rename data/sound/announcer/{male => default}/03kills.ogg (100%) rename data/sound/announcer/{male => default}/05kills.ogg (100%) rename data/sound/announcer/{robotic => default}/1.ogg (100%) rename data/sound/announcer/{robotic => default}/10.ogg (100%) rename data/sound/announcer/{male => default}/10kills.ogg (100%) rename data/sound/announcer/{male => default}/15kills.ogg (100%) rename data/sound/announcer/{robotic => default}/1fragleft.ogg (100%) rename data/sound/announcer/{robotic => default}/1minuteremains.ogg (100%) rename data/sound/announcer/{robotic => default}/2.ogg (100%) rename data/sound/announcer/{male => default}/20kills.ogg (100%) rename data/sound/announcer/{male => default}/25kills.ogg (100%) rename data/sound/announcer/{robotic => default}/2fragsleft.ogg (100%) rename data/sound/announcer/{robotic => default}/3.ogg (100%) rename data/sound/announcer/{male => default}/30kills.ogg (100%) rename data/sound/announcer/{robotic => default}/3fragsleft.ogg (100%) rename data/sound/announcer/{robotic => default}/4.ogg (100%) rename data/sound/announcer/{robotic => default}/5.ogg (100%) rename data/sound/announcer/{robotic => default}/5minutesremain.ogg (100%) rename data/sound/announcer/{robotic => default}/6.ogg (100%) rename data/sound/announcer/{robotic => default}/7.ogg (100%) rename data/sound/announcer/{robotic => default}/8.ogg (100%) rename data/sound/announcer/{robotic => default}/9.ogg (100%) rename data/sound/announcer/{male => default}/airshot.ogg (100%) rename data/sound/announcer/{male => default}/amazing.ogg (100%) rename data/sound/announcer/{male => default}/awesome.ogg (100%) rename data/sound/announcer/{robotic => default}/begin.ogg (100%) rename data/sound/announcer/{robotic => default}/blueteamtakeslead.ogg (100%) rename data/sound/announcer/{male => default}/botlike.ogg (100%) rename data/sound/announcer/{male => default}/electrobitch.ogg (100%) rename data/sound/announcer/{male => default}/headshot.ogg (100%) rename data/sound/announcer/{male => default}/impressive.ogg (100%) rename data/sound/announcer/{robotic => default}/lastsecond.ogg (100%) rename data/sound/announcer/{robotic => default}/leadgained.ogg (100%) rename data/sound/announcer/{robotic => default}/leadlost.ogg (100%) rename data/sound/announcer/{robotic => default}/leadtied.ogg (100%) rename data/sound/announcer/{robotic => default}/narrowly.ogg (100%) rename data/sound/announcer/{robotic => default}/prepareforbattle.ogg (100%) rename data/sound/announcer/{robotic => default}/redteamtakeslead.ogg (100%) rename data/sound/announcer/{robotic => default}/terminated.ogg (100%) rename data/sound/announcer/{robotic => default}/timeoutcalled.ogg (100%) rename data/sound/announcer/{male => default}/welcome.ogg (100%) rename data/sound/announcer/{male => default}/yoda.ogg (100%) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index 01e460e07..72ec43399 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -866,6 +866,7 @@ seta cl_sound_maptime_warning "1" "play announcer sound telling you the remainin 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 diff --git a/data/qcsrc/client/Defs.qc b/data/qcsrc/client/Defs.qc index e726602dc..8020d1a96 100644 --- a/data/qcsrc/client/Defs.qc +++ b/data/qcsrc/client/Defs.qc @@ -178,6 +178,9 @@ float sbar_currentammo; float vid_conwidth, vid_conheight; float binddb; +// Announcer +string announce_snd; + // QUALIFYING float race_checkpoint; float race_time; diff --git a/data/qcsrc/client/Main.qc b/data/qcsrc/client/Main.qc index 8c7c7111f..53e12d91b 100644 --- a/data/qcsrc/client/Main.qc +++ b/data/qcsrc/client/Main.qc @@ -42,6 +42,7 @@ float __engine_check; #endif string forcefog; +string cl_announcer_prev; void WaypointSprite_Load(); void CSQC_Init(void) { @@ -128,11 +129,17 @@ void CSQC_Init(void) 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 @@ float CSQC_Parse_TempEntity() 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; diff --git a/data/qcsrc/client/View.qc b/data/qcsrc/client/View.qc index 291618964..f404cecd0 100644 --- a/data/qcsrc/client/View.qc +++ b/data/qcsrc/client/View.qc @@ -102,7 +102,7 @@ void CheckForGamestartChange() { 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 @@ void CSQC_UpdateView(float w, float h) } CheckForGamestartChange(); + serverAnnouncer(); maptimeAnnouncer(); carrierAnnouncer(); diff --git a/data/qcsrc/client/miscfunctions.qc b/data/qcsrc/client/miscfunctions.qc index d88af4203..63f0faf76 100644 --- a/data/qcsrc/client/miscfunctions.qc +++ b/data/qcsrc/client/miscfunctions.qc @@ -3,6 +3,17 @@ var float(string text, float handleColors, vector fontSize) stringwidth; 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 @@ void restartAnnouncer_Think() { 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 @@ void restartAnnouncer_Think() { 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 @@ void maptimeAnnouncer() { 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 @@ void maptimeAnnouncer() { //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); } } } @@ -125,18 +136,51 @@ void carrierAnnouncer() { redflag_prev = redflag; } -/** - * 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() diff --git a/data/qcsrc/common/constants.qh b/data/qcsrc/common/constants.qh index 01e0de8fc..da59cbea4 100644 --- a/data/qcsrc/common/constants.qh +++ b/data/qcsrc/common/constants.qh @@ -55,6 +55,7 @@ const float TE_CSQC_TEAMNAGGER = 106; 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; diff --git a/data/qcsrc/menu/menu.qc b/data/qcsrc/menu/menu.qc index e2a7f393e..bec77b4a1 100644 --- a/data/qcsrc/menu/menu.qc +++ b/data/qcsrc/menu/menu.qc @@ -554,7 +554,7 @@ void() m_draw = 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 } } diff --git a/data/qcsrc/server/arena.qc b/data/qcsrc/server/arena.qc index 4e100eb83..ff193f8f2 100644 --- a/data/qcsrc/server/arena.qc +++ b/data/qcsrc/server/arena.qc @@ -215,13 +215,13 @@ void Arena_Warmup() //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 @@ void Arena_Warmup() else if(f > -1 && f != roundStartTime_prev) { roundStartTime_prev = f; - play2all("announcer/robotic/begin.wav"); + Announce("begin"); centerprint(self, "^1Begin!\n"); if(g_ca) { diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 1227e339d..6b6083341 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -6,6 +6,19 @@ void send_CSQC_teamnagger() { 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 @@ void KillIndicator_Think() 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 @@ void ShowRespawnCountdown() { 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 @@ void PlayerPostThink (void) 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 @@ void PlayerPostThink (void) 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 diff --git a/data/qcsrc/server/clientcommands.qc b/data/qcsrc/server/clientcommands.qc index 883e83f88..46c912f2e 100644 --- a/data/qcsrc/server/clientcommands.qc +++ b/data/qcsrc/server/clientcommands.qc @@ -585,7 +585,7 @@ void evaluateTimeout() { timeoutHandler.nextthink = time; //always let the entity think asap //inform all connected clients about the timeout call - play2all("announcer/robotic/timeoutcalled.wav"); + Announce("timeoutcalled"); } /** diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index f18fcb908..b97fefd19 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -337,6 +337,9 @@ float sv_loddistance2; .float cvar_cl_gunalign; .float cvar_cl_noantilag; +void Announce(string snd); +void AnnounceTo(entity e, string snd); + .float version_nagtime; .float modelindex_lod0; diff --git a/data/qcsrc/server/g_damage.qc b/data/qcsrc/server/g_damage.qc index 4b5fa6c51..e4779dd54 100644 --- a/data/qcsrc/server/g_damage.qc +++ b/data/qcsrc/server/g_damage.qc @@ -485,7 +485,7 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) 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 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) 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 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) 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 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) 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 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) 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 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) 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 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) 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 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) 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) diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index 544f46db0..1b79380f7 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -140,7 +140,7 @@ void timeoutHandler_Think() { } } if(remainingTimeoutTime == cvar("sv_timeout_resumetime")) { //play a warning sound when only seconds are left - play2all("announcer/robotic/prepareforbattle.wav"); + Announce("prepareforbattle"); } remainingTimeoutTime -= 1; self.nextthink = time + TIMEOUT_SLOWMO_VALUE; @@ -1756,11 +1756,11 @@ float WinningCondition_Scores(float limit, float leadlimit) 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"); } } diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index 3a8cf78c3..c4d772ebe 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -1509,27 +1509,16 @@ void play2(entity e, string filename) 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 @@ void precache() 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 @@ void precache() 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"); diff --git a/data/qcsrc/server/portals.qc b/data/qcsrc/server/portals.qc index 96b6cb408..cedf344e0 100644 --- a/data/qcsrc/server/portals.qc +++ b/data/qcsrc/server/portals.qc @@ -164,7 +164,7 @@ float Portal_TeleportPlayer(entity teleporter, entity player) { // 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) diff --git a/data/qcsrc/server/t_items.qc b/data/qcsrc/server/t_items.qc index d4428c915..a1ec70f69 100644 --- a/data/qcsrc/server/t_items.qc +++ b/data/qcsrc/server/t_items.qc @@ -273,13 +273,13 @@ float Item_GiveTo(entity item, entity player) 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 @@ float Item_GiveTo(entity item, entity player) { 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 @@ float Item_GiveTo(entity item, entity player) { 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 @@ float Item_GiveTo(entity item, entity player) { 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"); } diff --git a/data/qcsrc/server/w_common.qc b/data/qcsrc/server/w_common.qc index e0ba807c7..0f565ad4c 100644 --- a/data/qcsrc/server/w_common.qc +++ b/data/qcsrc/server/w_common.qc @@ -190,9 +190,9 @@ void W_BallisticBullet_Hit (void) 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 diff --git a/data/qcsrc/server/w_electro.qc b/data/qcsrc/server/w_electro.qc index ff5446ff3..b8f5b28d1 100644 --- a/data/qcsrc/server/w_electro.qc +++ b/data/qcsrc/server/w_electro.qc @@ -37,7 +37,7 @@ void W_Plasma_Explode (void) 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; diff --git a/data/qcsrc/server/w_grenadelauncher.qc b/data/qcsrc/server/w_grenadelauncher.qc index 31fa998bb..a9e8a6b07 100644 --- a/data/qcsrc/server/w_grenadelauncher.qc +++ b/data/qcsrc/server/w_grenadelauncher.qc @@ -8,7 +8,7 @@ void W_Grenade_Explode (void) 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 @@ void W_Grenade_Explode2 (void) 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; diff --git a/data/qcsrc/server/w_minstanex.qc b/data/qcsrc/server/w_minstanex.qc index 089af24fe..52d099b8f 100644 --- a/data/qcsrc/server/w_minstanex.qc +++ b/data/qcsrc/server/w_minstanex.qc @@ -18,20 +18,20 @@ void W_MinstaNex_Attack (void) 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 @@ void minstagib_ammocheck (void) { 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; diff --git a/data/qcsrc/server/w_nex.qc b/data/qcsrc/server/w_nex.qc index 766fd62c1..eff82c313 100644 --- a/data/qcsrc/server/w_nex.qc +++ b/data/qcsrc/server/w_nex.qc @@ -24,7 +24,7 @@ void W_Nex_Attack (void) 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(); diff --git a/data/qcsrc/server/w_rocketlauncher.qc b/data/qcsrc/server/w_rocketlauncher.qc index 97772e50f..d43ad9488 100644 --- a/data/qcsrc/server/w_rocketlauncher.qc +++ b/data/qcsrc/server/w_rocketlauncher.qc @@ -21,7 +21,7 @@ void W_Rocket_Explode (void) 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; diff --git a/data/sound/announcer/male/03kills.ogg b/data/sound/announcer/default/03kills.ogg similarity index 100% rename from data/sound/announcer/male/03kills.ogg rename to data/sound/announcer/default/03kills.ogg diff --git a/data/sound/announcer/male/05kills.ogg b/data/sound/announcer/default/05kills.ogg similarity index 100% rename from data/sound/announcer/male/05kills.ogg rename to data/sound/announcer/default/05kills.ogg diff --git a/data/sound/announcer/robotic/1.ogg b/data/sound/announcer/default/1.ogg similarity index 100% rename from data/sound/announcer/robotic/1.ogg rename to data/sound/announcer/default/1.ogg diff --git a/data/sound/announcer/robotic/10.ogg b/data/sound/announcer/default/10.ogg similarity index 100% rename from data/sound/announcer/robotic/10.ogg rename to data/sound/announcer/default/10.ogg diff --git a/data/sound/announcer/male/10kills.ogg b/data/sound/announcer/default/10kills.ogg similarity index 100% rename from data/sound/announcer/male/10kills.ogg rename to data/sound/announcer/default/10kills.ogg diff --git a/data/sound/announcer/male/15kills.ogg b/data/sound/announcer/default/15kills.ogg similarity index 100% rename from data/sound/announcer/male/15kills.ogg rename to data/sound/announcer/default/15kills.ogg diff --git a/data/sound/announcer/robotic/1fragleft.ogg b/data/sound/announcer/default/1fragleft.ogg similarity index 100% rename from data/sound/announcer/robotic/1fragleft.ogg rename to data/sound/announcer/default/1fragleft.ogg diff --git a/data/sound/announcer/robotic/1minuteremains.ogg b/data/sound/announcer/default/1minuteremains.ogg similarity index 100% rename from data/sound/announcer/robotic/1minuteremains.ogg rename to data/sound/announcer/default/1minuteremains.ogg diff --git a/data/sound/announcer/robotic/2.ogg b/data/sound/announcer/default/2.ogg similarity index 100% rename from data/sound/announcer/robotic/2.ogg rename to data/sound/announcer/default/2.ogg diff --git a/data/sound/announcer/male/20kills.ogg b/data/sound/announcer/default/20kills.ogg similarity index 100% rename from data/sound/announcer/male/20kills.ogg rename to data/sound/announcer/default/20kills.ogg diff --git a/data/sound/announcer/male/25kills.ogg b/data/sound/announcer/default/25kills.ogg similarity index 100% rename from data/sound/announcer/male/25kills.ogg rename to data/sound/announcer/default/25kills.ogg diff --git a/data/sound/announcer/robotic/2fragsleft.ogg b/data/sound/announcer/default/2fragsleft.ogg similarity index 100% rename from data/sound/announcer/robotic/2fragsleft.ogg rename to data/sound/announcer/default/2fragsleft.ogg diff --git a/data/sound/announcer/robotic/3.ogg b/data/sound/announcer/default/3.ogg similarity index 100% rename from data/sound/announcer/robotic/3.ogg rename to data/sound/announcer/default/3.ogg diff --git a/data/sound/announcer/male/30kills.ogg b/data/sound/announcer/default/30kills.ogg similarity index 100% rename from data/sound/announcer/male/30kills.ogg rename to data/sound/announcer/default/30kills.ogg diff --git a/data/sound/announcer/robotic/3fragsleft.ogg b/data/sound/announcer/default/3fragsleft.ogg similarity index 100% rename from data/sound/announcer/robotic/3fragsleft.ogg rename to data/sound/announcer/default/3fragsleft.ogg diff --git a/data/sound/announcer/robotic/4.ogg b/data/sound/announcer/default/4.ogg similarity index 100% rename from data/sound/announcer/robotic/4.ogg rename to data/sound/announcer/default/4.ogg diff --git a/data/sound/announcer/robotic/5.ogg b/data/sound/announcer/default/5.ogg similarity index 100% rename from data/sound/announcer/robotic/5.ogg rename to data/sound/announcer/default/5.ogg diff --git a/data/sound/announcer/robotic/5minutesremain.ogg b/data/sound/announcer/default/5minutesremain.ogg similarity index 100% rename from data/sound/announcer/robotic/5minutesremain.ogg rename to data/sound/announcer/default/5minutesremain.ogg diff --git a/data/sound/announcer/robotic/6.ogg b/data/sound/announcer/default/6.ogg similarity index 100% rename from data/sound/announcer/robotic/6.ogg rename to data/sound/announcer/default/6.ogg diff --git a/data/sound/announcer/robotic/7.ogg b/data/sound/announcer/default/7.ogg similarity index 100% rename from data/sound/announcer/robotic/7.ogg rename to data/sound/announcer/default/7.ogg diff --git a/data/sound/announcer/robotic/8.ogg b/data/sound/announcer/default/8.ogg similarity index 100% rename from data/sound/announcer/robotic/8.ogg rename to data/sound/announcer/default/8.ogg diff --git a/data/sound/announcer/robotic/9.ogg b/data/sound/announcer/default/9.ogg similarity index 100% rename from data/sound/announcer/robotic/9.ogg rename to data/sound/announcer/default/9.ogg diff --git a/data/sound/announcer/male/airshot.ogg b/data/sound/announcer/default/airshot.ogg similarity index 100% rename from data/sound/announcer/male/airshot.ogg rename to data/sound/announcer/default/airshot.ogg diff --git a/data/sound/announcer/male/amazing.ogg b/data/sound/announcer/default/amazing.ogg similarity index 100% rename from data/sound/announcer/male/amazing.ogg rename to data/sound/announcer/default/amazing.ogg diff --git a/data/sound/announcer/male/awesome.ogg b/data/sound/announcer/default/awesome.ogg similarity index 100% rename from data/sound/announcer/male/awesome.ogg rename to data/sound/announcer/default/awesome.ogg diff --git a/data/sound/announcer/robotic/begin.ogg b/data/sound/announcer/default/begin.ogg similarity index 100% rename from data/sound/announcer/robotic/begin.ogg rename to data/sound/announcer/default/begin.ogg diff --git a/data/sound/announcer/robotic/blueteamtakeslead.ogg b/data/sound/announcer/default/blueteamtakeslead.ogg similarity index 100% rename from data/sound/announcer/robotic/blueteamtakeslead.ogg rename to data/sound/announcer/default/blueteamtakeslead.ogg diff --git a/data/sound/announcer/male/botlike.ogg b/data/sound/announcer/default/botlike.ogg similarity index 100% rename from data/sound/announcer/male/botlike.ogg rename to data/sound/announcer/default/botlike.ogg diff --git a/data/sound/announcer/male/electrobitch.ogg b/data/sound/announcer/default/electrobitch.ogg similarity index 100% rename from data/sound/announcer/male/electrobitch.ogg rename to data/sound/announcer/default/electrobitch.ogg diff --git a/data/sound/announcer/male/headshot.ogg b/data/sound/announcer/default/headshot.ogg similarity index 100% rename from data/sound/announcer/male/headshot.ogg rename to data/sound/announcer/default/headshot.ogg diff --git a/data/sound/announcer/male/impressive.ogg b/data/sound/announcer/default/impressive.ogg similarity index 100% rename from data/sound/announcer/male/impressive.ogg rename to data/sound/announcer/default/impressive.ogg diff --git a/data/sound/announcer/robotic/lastsecond.ogg b/data/sound/announcer/default/lastsecond.ogg similarity index 100% rename from data/sound/announcer/robotic/lastsecond.ogg rename to data/sound/announcer/default/lastsecond.ogg diff --git a/data/sound/announcer/robotic/leadgained.ogg b/data/sound/announcer/default/leadgained.ogg similarity index 100% rename from data/sound/announcer/robotic/leadgained.ogg rename to data/sound/announcer/default/leadgained.ogg diff --git a/data/sound/announcer/robotic/leadlost.ogg b/data/sound/announcer/default/leadlost.ogg similarity index 100% rename from data/sound/announcer/robotic/leadlost.ogg rename to data/sound/announcer/default/leadlost.ogg diff --git a/data/sound/announcer/robotic/leadtied.ogg b/data/sound/announcer/default/leadtied.ogg similarity index 100% rename from data/sound/announcer/robotic/leadtied.ogg rename to data/sound/announcer/default/leadtied.ogg diff --git a/data/sound/announcer/robotic/narrowly.ogg b/data/sound/announcer/default/narrowly.ogg similarity index 100% rename from data/sound/announcer/robotic/narrowly.ogg rename to data/sound/announcer/default/narrowly.ogg diff --git a/data/sound/announcer/robotic/prepareforbattle.ogg b/data/sound/announcer/default/prepareforbattle.ogg similarity index 100% rename from data/sound/announcer/robotic/prepareforbattle.ogg rename to data/sound/announcer/default/prepareforbattle.ogg diff --git a/data/sound/announcer/robotic/redteamtakeslead.ogg b/data/sound/announcer/default/redteamtakeslead.ogg similarity index 100% rename from data/sound/announcer/robotic/redteamtakeslead.ogg rename to data/sound/announcer/default/redteamtakeslead.ogg diff --git a/data/sound/announcer/robotic/terminated.ogg b/data/sound/announcer/default/terminated.ogg similarity index 100% rename from data/sound/announcer/robotic/terminated.ogg rename to data/sound/announcer/default/terminated.ogg diff --git a/data/sound/announcer/robotic/timeoutcalled.ogg b/data/sound/announcer/default/timeoutcalled.ogg similarity index 100% rename from data/sound/announcer/robotic/timeoutcalled.ogg rename to data/sound/announcer/default/timeoutcalled.ogg diff --git a/data/sound/announcer/male/welcome.ogg b/data/sound/announcer/default/welcome.ogg similarity index 100% rename from data/sound/announcer/male/welcome.ogg rename to data/sound/announcer/default/welcome.ogg diff --git a/data/sound/announcer/male/yoda.ogg b/data/sound/announcer/default/yoda.ogg similarity index 100% rename from data/sound/announcer/male/yoda.ogg rename to data/sound/announcer/default/yoda.ogg -- 2.39.2