]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote branch 'refs/remotes/origin/ThePWTULN/campaigntimer'
authorRudolf Polzer <divverent@alientrap.org>
Fri, 22 Oct 2010 07:02:59 +0000 (09:02 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Fri, 22 Oct 2010 07:02:59 +0000 (09:02 +0200)
qcsrc/common/campaign_common.qh
qcsrc/common/campaign_file.qc
qcsrc/server/campaign.qc
qcsrc/server/g_world.qc

index a8e61fc4f4378d69b43f936105bf02f11ff1fb12..f6e240a6faf5bd4411a1919fc9badf34ddf56e04 100644 (file)
@@ -10,6 +10,7 @@ string campaign_mapname[CAMPAIGN_MAX_ENTRIES];
 float campaign_bots[CAMPAIGN_MAX_ENTRIES];
 float campaign_botskill[CAMPAIGN_MAX_ENTRIES];
 float campaign_fraglimit[CAMPAIGN_MAX_ENTRIES];
+float campaign_timelimit[CAMPAIGN_MAX_ENTRIES];
 string campaign_mutators[CAMPAIGN_MAX_ENTRIES];
 string campaign_shortdesc[CAMPAIGN_MAX_ENTRIES];
 string campaign_longdesc[CAMPAIGN_MAX_ENTRIES];
index 89b24ce513270025a87e58f802b1dbb00a4313b7..08cec8092813b76653c9d8d33af5d94be4a52361 100644 (file)
@@ -54,12 +54,13 @@ float CampaignFile_Load(float offset, float n)
                                CAMPAIGN_GETARG; campaign_bots[campaign_entries] = stof(a);
                                CAMPAIGN_GETARG; campaign_botskill[campaign_entries] = stof(a);
                                CAMPAIGN_GETARG; campaign_fraglimit[campaign_entries] = stof(a);
+                               CAMPAIGN_GETARG; campaign_timelimit[campaign_entries] = stof(a);
                                CAMPAIGN_GETARG; campaign_mutators[campaign_entries] = strzone(a);
                                CAMPAIGN_GETARG; campaign_shortdesc[campaign_entries] = strzone(a);
                                CAMPAIGN_GETARG; campaign_longdesc[campaign_entries] = strzone(strreplace("\\n", "\n", a));
                                campaign_entries = campaign_entries + 1;
 
-                               if(campaign_entries >= n)
+                               if(campaign_entries >= n)                               
                                        break;
                        }
                        lineno = lineno + 1;
index 8a01a23b2474d87319c3485bc61a018cce60753a..300d01a7a56607b031a28e5e0d419c2dbadd42ea 100644 (file)
@@ -119,9 +119,9 @@ void CampaignPostInit()
        if(Campaign_Invalid())
                return;
        cvar_set("fraglimit", ftos(campaign_fraglimit[0]));
-       cvar_set("timelimit", "0");
+       cvar_set("timelimit", ftos(campaign_timelimit[0]));
        cvar_set_normal("fraglimit", ftos(campaign_fraglimit[0]));
-       cvar_set_normal("timelimit", "0");
+       cvar_set_normal("timelimit", ftos(campaign_timelimit[0]));
 }
 
 void CampaignSaveCvar(string cvarname, float value)
@@ -188,8 +188,23 @@ void CampaignPreIntermission()
 
        if(won == 1 && lost == 0 && checkrules_equality == 0 && cheatcount_total == 0)
        {
+               if(cvar("timelimit") != 0  &&  time > cvar("timelimit") * 60) // checks if the timelimit has expired.
+               {
+                       campaign_won = 0;
+                       bprint("Time's up! The current level has been LOST.\n");
+                       // sound!
+               }
+               else
+               {
                campaign_won = 1;
                bprint("The current level has been WON.\n");
+               // sound!       
+               }
+       }
+       else if(cvar("timelimit") != 0  &&  time > cvar("timelimit") * 60)
+       {
+               campaign_won = 0;
+               bprint("Time's up! The current level has been LOST.\n");
                // sound!
        }
        else
@@ -249,3 +264,4 @@ void CampaignLevelWarp(float n)
                error("Sorry, cheater. You are NOT WELCOME.");
        CampaignFile_Unload();
 }
+
index f75b0ba49807b7461abdb782b4c5459155969959..262fe14b3caf92904c5846b03c2e83d6e07fb86f 100644 (file)
@@ -1526,16 +1526,23 @@ void InitiateOvertime() // ONLY call this if InitiateSuddenDeath returned true
 
 float GetWinningCode(float fraglimitreached, float equality)
 {
-       if(equality)
-               if(fraglimitreached)
-                       return WINNING_STARTSUDDENDEATHOVERTIME;
-               else
-                       return WINNING_NEVER;
-       else
+       if(cvar("g_campaign") == 1)
                if(fraglimitreached)
                        return WINNING_YES;
                else
                        return WINNING_NO;
+
+       else
+               if(equality)
+                       if(fraglimitreached)
+                               return WINNING_STARTSUDDENDEATHOVERTIME;
+                       else
+                               return WINNING_NEVER;
+               else
+                       if(fraglimitreached)
+                               return WINNING_YES;
+                       else
+                               return WINNING_NO;
 }
 
 // set the .winning flag for exactly those players with a given field value