X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;ds=inline;f=qcsrc%2Fserver%2Fcampaign.qc;h=9f867da0dd5c432145c468750c8f14f56e87f376;hb=6ba37d06b4afe2b08882f5cc5b211441227586b2;hp=923950b5071cd4084dff6e3b3750f61560822784;hpb=9c5ff7fce483864bb75c048be1c980d09b8e78ef;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/campaign.qc b/qcsrc/server/campaign.qc index 923950b50..9f867da0d 100644 --- a/qcsrc/server/campaign.qc +++ b/qcsrc/server/campaign.qc @@ -1,3 +1,10 @@ +#include "campaign.qh" +#include "cheats.qh" +#include "miscfunctions.qh" +#include "g_world.qh" + +#include "../common/campaign_common.qh" + // campaign cvars: // _campaign_index: index of CURRENT map // _campaign_name: name of the current campaign @@ -7,7 +14,7 @@ float campaign_level; float campaign_won; string campaign_index_var; -float checkrules_equality; +//float checkrules_equality; float CampaignBailout(string s) { @@ -15,11 +22,13 @@ float CampaignBailout(string s) cvar_string = cvar_string_normal; cvar_set = cvar_set_normal; cvar_set("g_campaign", "0"); - print("campaign initialization failed: ", s, "\n"); + LOG_INFO("^4campaign initialization failed: ", s, "\n"); + if(autocvar__campaign_testrun) + error("CAMPAIGN FAIL AHAHAHAHAHAHAHAHAH))"); return 1; } -string cvar_campaignwrapper_list; // string of format ; var value; var value; var value; +string cvar_campaignwrapper_list; // string of format ; var value; var value; var value; string cvar_string_campaignwrapper(string theCvar) { float p, q; @@ -112,16 +121,25 @@ void CampaignPreInit() strunzone(title); } -string GetMapname(); void CampaignPostInit() { // now some sanity checks if(Campaign_Invalid()) return; - cvar_set("fraglimit", ftos(campaign_fraglimit[0])); - cvar_set("timelimit", ftos(campaign_timelimit[0])); - cvar_set_normal("fraglimit", ftos(campaign_fraglimit[0])); - cvar_set_normal("timelimit", ftos(campaign_timelimit[0])); + if(autocvar__campaign_testrun) + { + cvar_set("fraglimit", "0"); + cvar_set("timelimit", "0.01"); + cvar_set_normal("fraglimit", "0"); + cvar_set_normal("timelimit", "0.01"); + } + else + { + cvar_set("fraglimit", ftos(campaign_fraglimit[0])); + cvar_set("timelimit", ftos(campaign_timelimit[0])); + cvar_set_normal("fraglimit", ftos(campaign_fraglimit[0])); + cvar_set_normal("timelimit", ftos(campaign_timelimit[0])); + } } void CampaignSaveCvar(string cvarname, float value) @@ -169,14 +187,14 @@ void CampaignPreIntermission() entity head; float won; float lost; - local string savevar; + string savevar; - won = 0; + won = lost = 0; head = findchain(classname, "player"); while(head) { - if(clienttype(head) == CLIENTTYPE_REAL) + if(IS_REAL_CLIENT(head)) { if(head.winning) won = won + 1; @@ -186,7 +204,12 @@ void CampaignPreIntermission() head = head.chain; } - if(won == 1 && lost == 0 && checkrules_equality == 0 && cheatcount_total == 0) + if(autocvar__campaign_testrun) + { + campaign_won = 1; + bprint("Campaign test run, advancing level.\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. { @@ -214,20 +237,23 @@ void CampaignPreIntermission() // sound! } - if(campaign_won) + if(campaign_won && cheatcount_total == 0 && !autocvar__campaign_testrun) { - if(campaign_entries < 2) + if(campaign_level == cvar_normal(campaign_index_var)) { - // I have won - savevar = strcat("g_campaign", campaign_name, "_won"); - CampaignSaveCvar(savevar, 1); - // advance level (for menu to show it right) - CampaignSaveCvar(campaign_index_var, campaign_level + 1); - } - else if(campaign_level == cvar_normal(campaign_index_var)) - { - // advance level - CampaignSaveCvar(campaign_index_var, campaign_level + 1); + if(campaign_entries < 2) + { + // I have won + savevar = strcat("g_campaign", campaign_name, "_won"); + CampaignSaveCvar(savevar, 1); + // advance level (for menu to show it right) + CampaignSaveCvar(campaign_index_var, campaign_level + 1); + } + else + { + // advance level + CampaignSaveCvar(campaign_index_var, campaign_level + 1); + } } } } @@ -239,6 +265,7 @@ void CampaignPostIntermission() if(campaign_won && campaign_entries < 2) { // last map won! + LOG_DEBUG("^2test run: campaign looks GOOD\n"); localcmd("togglemenu 1\n"); CampaignFile_Unload(); return; @@ -256,6 +283,8 @@ void CampaignPostIntermission() void CampaignLevelWarp(float n) { + if(n < 0) + n = campaign_level + 1; CampaignFile_Unload(); CampaignFile_Load(n, 1); if(campaign_entries)