]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/g_world.qc
Whitelist another cvar
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / g_world.qc
index 48b587e5eb2de33312210f0eb139a3587cc6bc94..42c64e6a33ece7333b8d557d27aa4a64d47f90bc 100644 (file)
@@ -19,6 +19,7 @@
 #include "teamplay.qh"
 #include "weapons/weaponstats.qh"
 #include "../common/constants.qh"
+#include <common/net_linked.qh>
 #include "../common/deathtypes/all.qh"
 #include "../common/mapinfo.qh"
 #include "../common/monsters/_mod.qh"
@@ -175,7 +176,6 @@ void cvar_changes_init()
                BADPREFIX("cvar_check_");
                BADCVAR("gamecfg");
                BADCVAR("g_configversion");
-               BADCVAR("g_maplist_index");
                BADCVAR("halflifebsp");
                BADCVAR("sv_mapformat_is_quake2");
                BADCVAR("sv_mapformat_is_quake3");
@@ -210,6 +210,8 @@ void cvar_changes_init()
                BADCVAR("mastervolume");
                BADCVAR("volume");
                BADCVAR("bgmvolume");
+               BADCVAR("in_pitch_min");
+               BADCVAR("in_pitch_max");
 
                // private
                BADCVAR("developer");
@@ -226,14 +228,17 @@ void cvar_changes_init()
                BADCVAR("sys_specialcharactertranslation");
                BADCVAR("timeformat");
                BADCVAR("timestamps");
+               BADCVAR("g_require_stats");
                BADPREFIX("developer_");
                BADPREFIX("g_ban_");
                BADPREFIX("g_banned_list");
+               BADPREFIX("g_require_stats_");
                BADPREFIX("g_chat_flood_");
                BADPREFIX("g_ghost_items");
                BADPREFIX("g_playerstats_");
                BADPREFIX("g_voice_flood_");
                BADPREFIX("log_file");
+               BADPREFIX("quit_");
                BADPREFIX("rcon_");
                BADPREFIX("sv_allowdownloads");
                BADPREFIX("sv_autodemo");
@@ -247,20 +252,26 @@ void cvar_changes_init()
 
                // these can contain player IDs, so better hide
                BADPREFIX("g_forced_team_");
+               BADCVAR("sv_muteban_list");
 
                // mapinfo
                BADCVAR("fraglimit");
+               BADCVAR("g_arena");
                BADCVAR("g_assault");
                BADCVAR("g_ca");
                BADCVAR("g_ca_teams");
+               BADCVAR("g_conquest");
                BADCVAR("g_ctf");
                BADCVAR("g_cts");
+               BADCVAR("g_dotc");
                BADCVAR("g_dm");
                BADCVAR("g_domination");
                BADCVAR("g_domination_default_teams");
                BADCVAR("g_freezetag");
                BADCVAR("g_freezetag_teams");
                BADCVAR("g_invasion_teams");
+               BADCVAR("g_jailbreak");
+               BADCVAR("g_jailbreak_teams");
                BADCVAR("g_keepaway");
                BADCVAR("g_keyhunt");
                BADCVAR("g_keyhunt_teams");
@@ -271,12 +282,16 @@ void cvar_changes_init()
                BADCVAR("g_race_laps_limit");
                BADCVAR("g_race_qualifying_timelimit");
                BADCVAR("g_race_qualifying_timelimit_override");
+               BADCVAR("g_runematch");
+               BADCVAR("g_snafu");
                BADCVAR("g_tdm");
                BADCVAR("g_tdm_teams");
+               BADCVAR("g_vip");
                BADCVAR("leadlimit");
                BADCVAR("nextmap");
                BADCVAR("teamplay");
                BADCVAR("timelimit");
+               BADCVAR("g_mapinfo_ignore_warnings");
 
                // long
                BADCVAR("hostname");
@@ -303,9 +318,12 @@ void cvar_changes_init()
 
                // does nothing gameplay relevant
                BADCVAR("captureleadlimit_override");
+               BADCVAR("condump_stripcolors");
                BADCVAR("gameversion");
                BADCVAR("g_allow_oldvortexbeam");
                BADCVAR("g_balance_kill_delay");
+               BADCVAR("g_buffs_pickup_anyway");
+               BADCVAR("g_buffs_randomize");
                BADCVAR("g_campcheck_distance");
                BADCVAR("g_ca_point_leadlimit");
                BADCVAR("g_ca_point_limit");
@@ -318,31 +336,37 @@ void cvar_changes_init()
                BADCVAR("g_freezetag_point_limit");
                BADCVAR("g_hats");
                BADCVAR("g_invasion_point_limit");
+               BADCVAR("g_jump_grunt");
                BADCVAR("g_keyhunt_point_leadlimit");
                BADCVAR("g_nexball_goalleadlimit");
                BADCVAR("g_new_toys_use_pickupsound");
                BADCVAR("g_physics_predictall");
                BADCVAR("g_piggyback");
+               BADCVAR("g_playerclip_collisions");
                BADCVAR("g_tdm_point_leadlimit");
                BADCVAR("g_tdm_point_limit");
                BADCVAR("leadlimit_and_fraglimit");
                BADCVAR("leadlimit_override");
                BADCVAR("pausable");
                BADCVAR("sv_checkforpacketsduringsleep");
+               BADCVAR("sv_damagetext");
+               BADCVAR("sv_db_saveasdump");
                BADCVAR("sv_intermission_cdtrack");
                BADCVAR("sv_minigames");
                BADCVAR("sv_namechangetimer");
                BADCVAR("sv_precacheplayermodels");
                BADCVAR("sv_stepheight");
                BADCVAR("sv_timeout");
+               BADCVAR("sv_weapons_modeloverride");
                BADPREFIX("crypto_");
                BADPREFIX("gameversion_");
                BADPREFIX("g_chat_");
                BADPREFIX("g_ctf_captimerecord_");
-               BADPREFIX("g_maplist_votable_");
+               BADPREFIX("g_maplist_");
                BADPREFIX("g_mod_");
                BADPREFIX("g_respawn_");
                BADPREFIX("net_");
+               BADPREFIX("notification_");
                BADPREFIX("prvm_");
                BADPREFIX("skill_");
                BADPREFIX("sv_allow_");
@@ -377,6 +401,7 @@ void cvar_changes_init()
                BADCVAR("g_buffs");
                BADCVAR("g_ca_teams_override");
                BADCVAR("g_ctf_ignore_frags");
+               BADCVAR("g_ctf_leaderboard");
                BADCVAR("g_domination_point_limit");
                BADCVAR("g_domination_teams_override");
                BADCVAR("g_freezetag_teams_override");
@@ -387,18 +412,12 @@ void cvar_changes_init()
                BADCVAR("g_keyhunt_teams_override");
                BADCVAR("g_lms_lives_override");
                BADCVAR("g_maplist");
-               BADCVAR("g_maplist_check_waypoints");
-               BADCVAR("g_maplist_mostrecent_count");
-               BADCVAR("g_maplist_shuffle");
-               BADCVAR("g_maplist_votable");
-               BADCVAR("g_maplist_votable_abstain");
-               BADCVAR("g_maplist_votable_nodetail");
-               BADCVAR("g_maplist_votable_suggestions");
                BADCVAR("g_maxplayers");
                BADCVAR("g_mirrordamage");
                BADCVAR("g_nexball_goallimit");
                BADCVAR("g_norecoil");
                BADCVAR("g_physics_clientselect");
+               BADCVAR("g_pinata");
                BADCVAR("g_powerups");
                BADCVAR("g_spawnshieldtime");
                BADCVAR("g_start_delay");
@@ -1136,7 +1155,7 @@ float(float exponent) MaplistMethod_Shuffle = // more clever shuffling
                string newlist;
 
                // now reinsert this at another position
-               insertpos = pow(random(), 1 / exponent);       // ]0, 1]
+               insertpos = (random() ** (1 / exponent));       // ]0, 1]
                insertpos = insertpos * (Map_Count - 1);       // ]0, Map_Count - 1]
                insertpos = ceil(insertpos) + 1;               // {2, 3, 4, ..., Map_Count}
                LOG_TRACE("SHUFFLE: insert pos = ", ftos(insertpos));
@@ -1307,7 +1326,6 @@ When the player presses attack or jump, change to the next level
 void IntermissionThink(entity this)
 {
        FixIntermissionClient(this);
-       CSQCMODEL_AUTOUPDATE(this); // PlayerPostThink returns before calling this during intermission, so run it here
 
        float server_screenshot = (autocvar_sv_autoscreenshot && this.cvar_cl_autoscreenshot);
        float client_screenshot = (this.cvar_cl_autoscreenshot == 2);
@@ -1447,11 +1465,11 @@ void DumpStats(float final)
                        s = strcat(s, "spectator:");
 
                if(to_console)
-                       LOG_INFO(s, it.netname, "\n");
+                       LOG_INFO(s, playername(it, false), "\n");
                if(to_eventlog)
-                       GameLogEcho(strcat(s, ftos(it.playerid), ":", it.netname));
+                       GameLogEcho(strcat(s, ftos(it.playerid), ":", playername(it, false)));
                if(to_file)
-                       fputs(file, strcat(s, it.netname, "\n"));
+                       fputs(file, strcat(s, playername(it, false), "\n"));
        ));
 
        if(teamplay)
@@ -1495,9 +1513,6 @@ void FixIntermissionClient(entity e)
                e.autoscreenshot = time + 0.8;  // used for autoscreenshot
                e.health = -2342;
                // first intermission phase; voting phase has positive health (used to decide whether to send SVC_FINALE or not)
-               e.solid = SOLID_NOT;
-               set_movetype(e, MOVETYPE_NONE);
-               e.takedamage = DAMAGE_NO;
                for (int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
                {
                    .entity weaponentity = weaponentities[slot];
@@ -1531,11 +1546,10 @@ only called if a time or frag limit has expired
 */
 void NextLevel()
 {
-       gameover = true;
+       game_stopped = true;
+       intermission_running = 1; // game over
 
-       intermission_running = 1;
-
-// enforce a wait time before allowing changelevel
+       // enforce a wait time before allowing changelevel
        if(player_count > 0)
                intermission_exittime = time + autocvar_sv_mapchange_delay;
        else
@@ -1568,7 +1582,7 @@ void NextLevel()
        FOREACH_CLIENT(IS_PLAYER(it), LAMBDA(
                FixIntermissionClient(it);
                if(it.winning)
-                       bprint(it.netname, " ^7wins.\n");
+                       bprint(playername(it, false), " ^7wins.\n");
        ));
 
        target_music_kill();
@@ -1590,7 +1604,7 @@ Exit deathmatch games upon conditions
 */
 void CheckRules_Player(entity this)
 {
-       if (gameover)   // someone else quit the game already
+       if (game_stopped) // someone else quit the game already
                return;
 
        if(!IS_DEAD(this))
@@ -1842,7 +1856,7 @@ void CheckRules_World()
 
        SetDefaultAlpha();
 
-       if (gameover)   // someone else quit the game already
+       if (intermission_running) // someone else quit the game already
        {
                if(player_count == 0) // Nobody there? Then let's go to the next map
                        MapVote_Start();
@@ -2033,7 +2047,9 @@ void Physics_Frame()
                if(IS_CLIENT(it) || it.classname == "" || it.move_movetype == MOVETYPE_PUSH || it.move_movetype == MOVETYPE_FAKEPUSH || it.move_movetype == MOVETYPE_PHYSICS)
                        continue;
 
-               set_movetype(it, it.move_movetype);
+               //set_movetype(it, it.move_movetype);
+               // inline the set_movetype function, since this is called a lot
+               it.movetype = (it.move_qcphysics) ? MOVETYPE_NONE : it.move_movetype;
 
                if(it.move_movetype == MOVETYPE_NONE)
                        continue;
@@ -2071,6 +2087,8 @@ void EndFrame()
                entity e = IS_SPEC(it) ? it.enemy : it;
                if (e.typehitsound) {
                        it.typehit_time = time;
+               } else if (e.killsound) {
+                       it.kill_time = time;
                } else if (e.damage_dealt) {
                        it.hit_time = time;
                        it.damage_dealt_total += ceil(e.damage_dealt);
@@ -2085,16 +2103,13 @@ void EndFrame()
        FOREACH_CLIENT(true, {
                it.typehitsound = false;
                it.damage_dealt = 0;
+               it.killsound = false;
                antilag_record(it, CS(it), altime);
        });
        IL_EACH(g_monsters, true,
        {
                antilag_record(it, it, altime);
        });
-       FOREACH_CLIENT(PS(it), {
-               PlayerState s = PS(it);
-               s.ps_push(s, it);
-       });
        systems_update();
        IL_ENDFRAME();
 }
@@ -2167,7 +2182,7 @@ void RestoreGame()
 
 void Shutdown()
 {
-       gameover = 2;
+       game_stopped = 2;
 
        if(world_initialized > 0)
        {