X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fmutator_campcheck.qc;h=2839ae09b6e546ee01faa1adf04be0ed0fc39e90;hp=2ec584db4cb23d265c5b105aceb2dbf6a3f33c7b;hb=86c9dc7c3696c329496b06375c1e79fb407401ce;hpb=bf5c2d4a98483e1f56f585ec7f22f1bff3c2e954 diff --git a/qcsrc/server/mutators/mutator_campcheck.qc b/qcsrc/server/mutators/mutator_campcheck.qc index 2ec584db4c..2839ae09b6 100644 --- a/qcsrc/server/mutators/mutator_campcheck.qc +++ b/qcsrc/server/mutators/mutator_campcheck.qc @@ -1,11 +1,17 @@ +#include "../_all.qh" + +#include "mutator.qh" + +#include "../campaign.qh" + .float campcheck_nextcheck; .float campcheck_traveled_distance; MUTATOR_HOOKFUNCTION(campcheck_PlayerDies) { - Kill_Notification(NOTIF_ONE_ONLY, self, MSG_CENTER_CPID, CPID_CAMPCHECK); + Kill_Notification(NOTIF_ONE, self, MSG_CENTER_CPID, CPID_CAMPCHECK); - return FALSE; + return false; } MUTATOR_HOOKFUNCTION(campcheck_PlayerDamage) @@ -18,21 +24,26 @@ MUTATOR_HOOKFUNCTION(campcheck_PlayerDamage) frag_attacker.campcheck_traveled_distance = autocvar_g_campcheck_distance; } - return FALSE; + return false; } MUTATOR_HOOKFUNCTION(campcheck_PlayerThink) { + if(!gameover) + if(!warmup_stage) // don't consider it camping during warmup? + if(time >= game_starttime) if(IS_PLAYER(self)) + if(IS_REAL_CLIENT(self)) // bots may camp, but that's no reason to constantly kill them if(self.deadflag == DEAD_NO) if(!self.frozen) + if(!self.BUTTON_CHAT) if(autocvar_g_campcheck_interval) { vector dist; // calculate player movement (in 2 dimensions only, so jumping on one spot doesn't count as movement) dist = self.prevorigin - self.origin; - dist_z = 0; + dist.z = 0; self.campcheck_traveled_distance += fabs(vlen(dist)); if((autocvar_g_campaign && !campaign_bots_may_start) || (time < game_starttime) || (round_handler_IsActive() && !round_handler_IsRoundStarted())) @@ -54,9 +65,12 @@ MUTATOR_HOOKFUNCTION(campcheck_PlayerThink) self.campcheck_nextcheck = time + autocvar_g_campcheck_interval; self.campcheck_traveled_distance = 0; } + + return false; } - return FALSE; + self.campcheck_nextcheck = time + autocvar_g_campcheck_interval; // one of the above checks failed, so keep the timer up to date + return false; } MUTATOR_HOOKFUNCTION(campcheck_PlayerSpawn) @@ -64,13 +78,13 @@ MUTATOR_HOOKFUNCTION(campcheck_PlayerSpawn) self.campcheck_nextcheck = time + autocvar_g_campcheck_interval * 2; self.campcheck_traveled_distance = 0; - return FALSE; + return false; } MUTATOR_HOOKFUNCTION(campcheck_BuildMutatorsString) { ret_string = strcat(ret_string, ":CampCheck"); - return FALSE; + return false; } MUTATOR_DEFINITION(mutator_campcheck) @@ -81,5 +95,5 @@ MUTATOR_DEFINITION(mutator_campcheck) MUTATOR_HOOK(PlayerSpawn, campcheck_PlayerSpawn, CBC_ORDER_ANY); MUTATOR_HOOK(BuildMutatorsString, campcheck_BuildMutatorsString, CBC_ORDER_ANY); - return FALSE; + return false; }