]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/campaign.qc
Merge branch 't0uYK8Ne/set_slick_friction' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / campaign.qc
index 163337e036ce7a22ceeab2d4b5aca3b72f192fa7..ddc7e47fa6c31386d3ff17c3d9b2d6e0a441ecbc 100644 (file)
@@ -1,4 +1,7 @@
 #include "campaign.qh"
+
+#include "defs.qh"
+
 #include "cheats.qh"
 #include "miscfunctions.qh"
 #include "g_world.qh"
@@ -22,7 +25,7 @@ float CampaignBailout(string s)
        cvar_string = cvar_string_normal;
        cvar_set = cvar_set_normal;
        cvar_set("g_campaign", "0");
-       LOG_INFO("^4campaign initialization failed: ", s, "\n");
+       LOG_INFO("^4campaign initialization failed: ", s);
        if(autocvar__campaign_testrun)
                error("CAMPAIGN FAIL AHAHAHAHAHAHAHAHAH))");
        return 1;
@@ -49,8 +52,7 @@ void cvar_set_campaignwrapper(string theCvar, string theValue)
 {
        if(cvar_string_campaignwrapper(theCvar) == theValue)
                return;
-       string s;
-       s = cvar_campaignwrapper_list;
+       string s = cvar_campaignwrapper_list;
        cvar_campaignwrapper_list = strzone(strcat("; ", theCvar, " ", theValue, s));
        strunzone(s);
        //print(cvar_campaignwrapper_list, "\n");
@@ -97,6 +99,8 @@ void CampaignPreInit()
        if(baseskill < 0)
                baseskill = 0;
 
+       campaign_forcewin = false;
+
        cvar_set("sv_public", "0");
        cvar_set("pausable", "1");
 
@@ -192,18 +196,23 @@ void CampaignPreIntermission()
        int lost = 0;
        string savevar;
 
-       FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it), LAMBDA(
+       FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it), {
                if(it.winning)
                        won += 1;
                else
                        lost += 1;
-       ));
+       });
 
        if(autocvar__campaign_testrun)
        {
                campaign_won = 1;
                bprint("Campaign test run, advancing level.\n");
        }
+       else if(campaign_forcewin)
+       {
+               campaign_won = 1;
+               bprint("The current level has been WON.\n");
+       }
        else if(won == 1 && lost == 0 && checkrules_equality == 0)
        {
                if(autocvar_timelimit != 0 && autocvar_fraglimit != 0 && time > autocvar_timelimit * 60) // checks if the timelimit has expired.
@@ -260,7 +269,7 @@ void CampaignPostIntermission()
        if(campaign_won && campaign_entries < 2)
        {
                // last map won!
-               LOG_DEBUG("^2test run: campaign looks GOOD\n");
+               LOG_DEBUG("^2test run: campaign looks GOOD");
                localcmd("togglemenu 1\n");
                CampaignFile_Unload();
                return;