]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/g_world.qc
some very WIP race code, won't compile yet, but already contains most stuff from...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / g_world.qc
index 07898df16817501ada15cc655255c3cec5cf9f0e..053ed5124b134adc2d4d1837bef9b117bf1d4eb9 100644 (file)
@@ -236,6 +236,7 @@ void cvar_changes_init()
                BADCVAR("g_configversion");
                BADCVAR("g_maplist_index");
                BADCVAR("halflifebsp");
+               BADPREFIX("sv_world");
 
                // client
                BADPREFIX("cl_");
@@ -279,6 +280,8 @@ void cvar_changes_init()
                BADCVAR("sys_colortranslation");
                BADCVAR("sys_specialcharactertranslation");
                BADCVAR("timestamps");
+               BADCVAR("net_address");
+               BADCVAR("net_address_ipv6");
 
                // mapinfo
                BADCVAR("timelimit");
@@ -637,6 +640,8 @@ void spawnfunc_worldspawn (void)
        addstat(STAT_LEADLIMIT, AS_FLOAT, stat_leadlimit);
        addstat(STAT_BULLETS_LOADED, AS_INT, campingrifle_bulletcounter);
 
+       addstat(STAT_NEX_CHARGE, AS_FLOAT, nex_charge);
+
        // g_movementspeed hack
        addstat(STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW, AS_FLOAT, stat_sv_airspeedlimit_nonqw);
        addstat(STAT_MOVEVARS_AIRACCEL_QW, AS_FLOAT, stat_sv_airaccel_qw);
@@ -692,6 +697,8 @@ void spawnfunc_worldspawn (void)
        {
                records_reply[i] = strzone(getrecords(i));
        }
+       if(g_cts)
+               ladder_reply = strzone(getladder());
 
        rankings_reply = strzone(getrankings());
 
@@ -703,6 +710,21 @@ void spawnfunc_worldspawn (void)
 
        localcmd("\n_sv_hook_gamestart ", GetGametype(), "\n");
 
+       // fill sv_curl_serverpackages from .serverpackage files
+       if(cvar("sv_curl_serverpackages_auto"))
+       {
+               fd = search_begin("*.serverpackage", TRUE, FALSE);
+               s = "";
+               if(fd >= 0)
+               {
+                       j = search_getsize(fd);
+                       for(i = 0; i < j; ++i)
+                               s = strcat(s, " ", search_getfilename(fd, i));
+                       search_end(fd);
+               }
+               cvar_set("sv_curl_serverpackages", substring(s, 1, -1));
+       }
+
        world_initialized = 1;
 }
 
@@ -1509,16 +1531,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
@@ -1637,7 +1666,7 @@ float WinningCondition_Assault()
 
                        TeamScore_AddToTeam(assault_attacker_team, ST_ASSAULT_OBJECTIVES, 666 - TeamScore_AddToTeam(assault_attacker_team, ST_ASSAULT_OBJECTIVES, 0));
 
-                       if(ent.cnt == 1) // this was the second round
+                       if(ent.cnt == 1 || cvar("g_campaign")) // this was the second round
                        {
                                status = WINNING_YES;
                        }