]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/announcer.qc
Merge branch 'master' into terencehill/ca_arena_mutators
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / announcer.qc
index be2f8734c04594f9833ece10990b4f812824118f..51c67ccabe53d9a0d25eef6cc8a41f2317bd5a0a 100644 (file)
@@ -12,32 +12,46 @@ void Announcer_Play(string announcement)
        {
                sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/", announcement, ".wav"), VOL_BASEVOICE, ATTN_NONE);
 
-               previous_announcement = announcement;
+               if(previous_announcement) { strunzone(previous_announcement); }
+               
+               previous_announcement = strzone(announcement);
                previous_announcement_time = time;
        }
-       print(strcat("announcement: '", announcement, "' at time: ", ftos(time), ". \n"));
 }
 
 void Announcer_Countdown() 
 {
        float starttime = getstatf(STAT_GAMESTARTTIME);
+       float roundstarttime = getstatf(STAT_ROUNDSTARTTIME);
+       if(roundstarttime == -1)
+       {
+               // stop countdown immediately
+               centerprint_generic(CPID_GAME_STARTING, "", 1, 0);
+               remove(self);
+               return;
+       }
+       if(roundstarttime >= starttime)
+               starttime = roundstarttime;
+       if(starttime <= time && roundstarttime != starttime) // game start time has passed
+               announcer_5min = announcer_1min = FALSE; // reset maptime announcers now as well
+
        float countdown = (starttime - time);
        float countdown_rounded = floor(0.5 + countdown);
-       
+
        if(countdown <= 0) // countdown has finished, starttime is now
        {
-               if (!spectatee_status) 
-                       centerprint_generic(CPID_GAME_STARTING, _("^1Begin!"), 1, 0);
+               Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_BEGIN); 
 
                Announcer_Play("begin");
-               announcer_5min = announcer_1min = FALSE; // reset maptime announcers now as well
                remove(self);
                return;
        }
        else // countdown is still going
        {
-               if (!spectatee_status)
-                       centerprint_generic(CPID_GAME_STARTING, _("^1Game starts in %d seconds"), 1, countdown_rounded);
+               if(roundstarttime == starttime)
+                       centerprint_generic(CPID_GAME_STARTING, _("^1Round starts in %d seconds"), 1, countdown_rounded);
+               else
+                       Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_GAMESTART, countdown_rounded);
 
                if(countdown_rounded <= 3 && countdown_rounded >= 1) 
                        Announcer_Play(ftos(countdown_rounded));
@@ -56,12 +70,15 @@ void Announcer_Countdown()
 void Announcer_Gamestart() 
 {
        float startTime = getstatf(STAT_GAMESTARTTIME);
-       
+       float roundstarttime = getstatf(STAT_ROUNDSTARTTIME);
+       if(roundstarttime > startTime)
+               startTime = roundstarttime;
+
        if(previous_game_starttime != startTime) 
        {
                if((time + 5.0) < startTime) // if connecting to server while restart was active don't always play prepareforbattle
                        Announcer_Play("prepareforbattle");
-               
+
                if(time < startTime) 
                {
                        entity e;
@@ -80,7 +97,7 @@ void Announcer_Time()
 {
        float timelimit = getstatf(STAT_TIMELIMIT);
        float timeleft = max(0, timelimit * 60 + getstatf(STAT_GAMESTARTTIME) - time);
-       float warmup_timeleft;
+       float warmup_timeleft = 0;
        
        if(warmup_stage) 
                if(autocvar_g_warmup_limit > 0)
@@ -133,52 +150,10 @@ void Announcer_Time()
        }
 }
 
-float redflag_prev;
-float blueflag_prev;
-void carrierAnnouncer() {
-       float stat_items, redflag, blueflag;
-       float pickup;
-       string item;
-
-       if not(autocvar_cl_notify_carried_items)
-               return;
-
-       stat_items = getstati(STAT_ITEMS);
-
-       redflag = (stat_items/IT_RED_FLAG_TAKEN) & 3;
-       blueflag = (stat_items/IT_BLUE_FLAG_TAKEN) & 3;
-
-       if (redflag == 3 && redflag != redflag_prev) {
-               item = _("^1RED^7 flag");
-               pickup = (redflag_prev == 2);
-       }
-
-       if (blueflag == 3 && blueflag != blueflag_prev) {
-               item = _("^4BLUE^7 flag");
-               pickup = (blueflag_prev == 2);
-       }
-
-       if (item)
-       {
-               if (pickup) {
-                       if (autocvar_cl_notify_carried_items & 2)
-                               centerprint(sprintf(_("You picked up the %s!"), item));
-               }
-               else {
-                       if (autocvar_cl_notify_carried_items & 1)
-                               centerprint(sprintf(_("You got the %s!"), item));
-               }
-       }
-
-       blueflag_prev = blueflag;
-       redflag_prev = redflag;
-}
-
 void Announcer()
 {
        Announcer_Gamestart();
        Announcer_Time();
-       carrierAnnouncer();
 }
 
 void Announcer_Precache () 
@@ -199,7 +174,6 @@ void Announcer_Precache ()
        precache_sound (strcat("announcer/", autocvar_cl_announcer, "/yoda.wav"));
        precache_sound (strcat("announcer/", autocvar_cl_announcer, "/amazing.wav"));
        precache_sound (strcat("announcer/", autocvar_cl_announcer, "/awesome.wav"));
-       precache_sound (strcat("announcer/", autocvar_cl_announcer, "/headshot.wav"));
        precache_sound (strcat("announcer/", autocvar_cl_announcer, "/impressive.wav"));
 
        precache_sound (strcat("announcer/", autocvar_cl_announcer, "/prepareforbattle.wav"));
@@ -227,4 +201,4 @@ void Announcer_Precache ()
        precache_sound (strcat("announcer/", autocvar_cl_announcer, "/voteaccept.wav"));
        precache_sound (strcat("announcer/", autocvar_cl_announcer, "/votecall.wav"));
        precache_sound (strcat("announcer/", autocvar_cl_announcer, "/votefail.wav"));
-}
\ No newline at end of file
+}