X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcampaign.qc;h=ddc7e47fa6c31386d3ff17c3d9b2d6e0a441ecbc;hb=4762eecb5c266737122dc29bcb060896c2b0cf76;hp=163337e036ce7a22ceeab2d4b5aca3b72f192fa7;hpb=a47688cb559bcb2090d69a3a3c0c92d4d8fe02d5;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/campaign.qc b/qcsrc/server/campaign.qc index 163337e03..ddc7e47fa 100644 --- a/qcsrc/server/campaign.qc +++ b/qcsrc/server/campaign.qc @@ -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;