X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fg_world.qc;h=f8a1ec1529135044333dfc2c11a996dfb1e970c9;hb=9b017dd54aa032031cf6a923526883789791a579;hp=4af2430db73bd1c99f23a51fac4ed3d0af06fbef;hpb=931d24d4337e58557fa82a68aa8a740e523c2f22;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 4af2430db..f8a1ec152 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -19,6 +19,7 @@ #include "teamplay.qh" #include "weapons/weaponstats.qh" #include "../common/constants.qh" +#include #include "../common/deathtypes/all.qh" #include "../common/mapinfo.qh" #include "../common/monsters/_mod.qh" @@ -320,17 +321,20 @@ void cvar_changes_init() BADCVAR("g_invasion_point_limit"); BADCVAR("g_keyhunt_point_leadlimit"); BADCVAR("g_nexball_goalleadlimit"); + BADCVAR("g_new_toys_use_pickupsound"); + BADCVAR("g_physics_predictall"); + BADCVAR("g_piggyback"); BADCVAR("g_tdm_point_leadlimit"); BADCVAR("g_tdm_point_limit"); BADCVAR("leadlimit_and_fraglimit"); BADCVAR("leadlimit_override"); BADCVAR("pausable"); - BADCVAR("sv_allow_fullbright"); BADCVAR("sv_checkforpacketsduringsleep"); BADCVAR("sv_intermission_cdtrack"); BADCVAR("sv_minigames"); BADCVAR("sv_namechangetimer"); BADCVAR("sv_precacheplayermodels"); + BADCVAR("sv_stepheight"); BADCVAR("sv_timeout"); BADPREFIX("crypto_"); BADPREFIX("gameversion_"); @@ -342,9 +346,11 @@ void cvar_changes_init() BADPREFIX("net_"); BADPREFIX("prvm_"); BADPREFIX("skill_"); + BADPREFIX("sv_allow_"); BADPREFIX("sv_cullentities_"); BADPREFIX("sv_maxidle_"); BADPREFIX("sv_minigames_"); + BADPREFIX("sv_radio_"); BADPREFIX("sv_timeout_"); BADPREFIX("sv_vote_"); BADPREFIX("timelimit_"); @@ -369,6 +375,7 @@ void cvar_changes_init() BADCVAR("g_balance_teams_scorefactor"); BADCVAR("g_ban_sync_trusted_servers"); BADCVAR("g_ban_sync_uri"); + BADCVAR("g_buffs"); BADCVAR("g_ca_teams_override"); BADCVAR("g_ctf_ignore_frags"); BADCVAR("g_domination_point_limit"); @@ -391,6 +398,9 @@ void cvar_changes_init() 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"); @@ -443,6 +453,7 @@ void cvar_changes_init() BADCVAR("g_grappling_hook"); BADCVAR("g_jetpack"); +#undef BADPRESUFFIX #undef BADPREFIX #undef BADCVAR @@ -908,7 +919,8 @@ spawnfunc(worldspawn) if(cvar_string("g_mod_config") != cvar_defstring("g_mod_config")) modname = cvar_string("g_mod_config"); // extra mutators that deserve to count as mod - MUTATOR_CALLHOOK(SetModname); + MUTATOR_CALLHOOK(SetModname, modname); + modname = M_ARGV(0, string); // save it for later modname = strzone(modname); @@ -1297,7 +1309,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); @@ -1437,11 +1448,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) @@ -1485,9 +1496,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]; @@ -1503,7 +1511,7 @@ void FixIntermissionClient(entity e) stuffcmd(e, "\nscr_printspeed 1000000\n"); RandomSelection_Init(); FOREACH_WORD(autocvar_sv_intermission_cdtrack, true, LAMBDA( - RandomSelection_Add(NULL, 0, it, 1, 1); + RandomSelection_AddString(it, 1, 1); )); if (RandomSelection_chosen_string != "") { @@ -1521,11 +1529,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 @@ -1558,7 +1565,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(); @@ -1580,7 +1587,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)) @@ -1832,7 +1839,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(); @@ -2153,7 +2160,7 @@ void RestoreGame() void Shutdown() { - gameover = 2; + game_stopped = 2; if(world_initialized > 0) {