BADCVAR("g_race_qualifying_timelimit");
BADCVAR("g_race_qualifying_timelimit_override");
BADCVAR("g_runematch");
+ BADCVAR("g_shootfromeye");
BADCVAR("g_snafu");
BADCVAR("g_tdm");
BADCVAR("g_tdm_teams");
BADCVAR("g_physics_predictall");
BADCVAR("g_piggyback");
BADCVAR("g_playerclip_collisions");
+ BADCVAR("g_spawn_alloweffects");
BADCVAR("g_tdm_point_leadlimit");
BADCVAR("g_tdm_point_limit");
BADCVAR("leadlimit_and_fraglimit");
BADCVAR("g_grappling_hook");
BADCVAR("g_jetpack");
+ // temporary for testing
+ // TODO remove before 0.8.3 release
+ BADCVAR("g_ca_weaponarena");
+ BADCVAR("g_freezetag_weaponarena");
+ BADCVAR("g_lms_weaponarena");
+
#undef BADPRESUFFIX
#undef BADPREFIX
#undef BADCVAR
world.fog = string_null;
}
if(MapInfo_Map_fog != "")
+ {
if(MapInfo_Map_fog == "none")
world.fog = string_null;
else
world.fog = strzone(MapInfo_Map_fog);
+ }
clientstuff = strzone(MapInfo_Map_clientstuff);
MapInfo_ClearTemps();
{
server_is_dedicated = boolean(stof(cvar_defstring("is_dedicated")));
- bool wantrestart = false;
+ bool wantrestart = false;
{
if (!server_is_dedicated)
{
}
if (wantrestart)
{
- LOG_INFOF("Restart requested");
+ LOG_INFO("Restart requested");
changelevel(mapname);
// let initialization continue, shutdown depends on it
}
readlevelcvars();
GrappleHookInit();
- GameRules_limit_fallbacks();
+ GameRules_limit_fallbacks();
if(warmup_limit == 0)
warmup_limit = (autocvar_timelimit > 0) ? autocvar_timelimit * 60 : autocvar_timelimit;
continue;
if(argv(0) == "cd")
{
+ string trackname = argv(2);
LOG_INFO("Found ^1UNSUPPORTED^7 cd loop command in .cfg file; put this line in mapinfo instead:");
- LOG_INFO(" cdtrack ", argv(2));
+ LOG_INFO(" cdtrack ", trackname);
+ if (cvar_value_issafe(trackname))
+ {
+ string newstuff = strcat(clientstuff, "cd loop \"", trackname, "\"\n");
+ strcpy(clientstuff, newstuff);
+ }
}
else if(argv(0) == "fog")
{
s = cons(s, pkg);
}
// add automatically managed files to the list
- #define X(match) MACRO_BEGIN { \
+ #define X(match) MACRO_BEGIN \
int fd = search_begin(match, true, false); \
if (fd >= 0) \
{ \
} \
search_end(fd); \
} \
- } MACRO_END
+ MACRO_END
X("*-serverpackage.txt");
X("*.serverpackage");
#undef X
string Map_Current_Name;
// NOTE: this now expects the map list to be already tokenized and the count in Map_Count
-float GetMaplistPosition()
+int GetMaplistPosition()
{
- float pos, idx;
- string map;
-
- map = GetMapname();
- idx = autocvar_g_maplist_index;
+ string map = GetMapname();
+ int idx = autocvar_g_maplist_index;
if(idx >= 0)
+ {
if(idx < Map_Count)
+ {
if(map == argv(idx))
+ {
return idx;
+ }
+ }
+ }
- for(pos = 0; pos < Map_Count; ++pos)
+ for(int pos = 0; pos < Map_Count; ++pos)
+ {
if(map == argv(pos))
return pos;
+ }
// resume normal maplist rotation if current map is not in g_maplist
return idx;
LOG_TRACE(checkwp_msg, ": has waypoints");
}
+ if(autocvar_g_maplist_ignore_sizes)
+ return true;
+
// open map size restriction file
string opensize_msg = strcat("opensize ", map);
float fh = fopen(strcat("maps/", map, ".sizes"), FILE_READ);
void Maplist_Init()
{
- Map_Count = tokenizebyseparator(autocvar_g_maplist, " ");
- float i;
- for (i = 0; i < Map_Count; ++i)
- if (Map_Check(i, 2))
- break;
+ float i = Map_Count = 0;
+ if(autocvar_g_maplist != "")
+ {
+ Map_Count = tokenizebyseparator(autocvar_g_maplist, " ");
+ for (i = 0; i < Map_Count; ++i)
+ {
+ if (Map_Check(i, 2))
+ break;
+ }
+ }
+
if (i == Map_Count)
{
bprint( "Maplist contains no usable maps! Resetting it to default map list.\n" );
cvar_set("g_maplist", MapInfo_ListAllAllowedMaps(MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags() | MAPINFO_FLAG_NOAUTOMAPLIST));
if(autocvar_g_maplist_shuffle)
ShuffleMaplist();
- localcmd("\nmenu_cmd sync\n");
+ if(!server_is_dedicated)
+ localcmd("\nmenu_cmd sync\n");
Map_Count = tokenizebyseparator(autocvar_g_maplist, " ");
}
if(Map_Count == 0)
string GetNextMap()
{
- float nextMap;
-
Maplist_Init();
- nextMap = -1;
+ float nextMap = -1;
if(nextMap == -1)
if(autocvar_g_maplist_shuffle > 0)
return;
alreadychangedlevel = true;
- string nextMap;
-
- nextMap = GetNextMap();
+ string nextMap = GetNextMap();
if(nextMap == "")
error("Everything is broken - cannot find a next map. Please report this to the developers.");
Map_Goto(reinit);
if(!e.autoscreenshot) // initial call
{
e.autoscreenshot = time + 0.8; // used for autoscreenshot
- SetResourceAmountExplicit(e, RESOURCE_HEALTH, -2342);
+ SetResourceExplicit(e, RES_HEALTH, -2342);
// first intermission phase; voting phase has positive health (used to decide whether to send SVC_FINALE or not)
for (int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
{
float GetWinningCode(float fraglimitreached, float equality)
{
if(autocvar_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
leaderfrags = WinningConditionHelper_topscore;
if (limit)
- if (leaderfrags == limit - 1)
- Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_1);
- else if (leaderfrags == limit - 2)
- Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_2);
- else if (leaderfrags == limit - 3)
- Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_3);
+ {
+ if (leaderfrags == limit - 1)
+ Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_1);
+ else if (leaderfrags == limit - 2)
+ Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_2);
+ else if (leaderfrags == limit - 3)
+ Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_3);
+ }
}
}
limitreached = false;
- if(limit)
- if(WinningConditionHelper_topscore >= limit)
- limitreached = true;
+ if (limit && WinningConditionHelper_topscore >= limit)
+ limitreached = true;
if(leadlimit)
{
float leadlimitreached;