1 #using scripts\shared\gameobjects_shared;
2 #using scripts\shared\math_shared;
3 #using scripts\shared\util_shared;
5 #insert scripts\shared\shared.gsh;
7 #using scripts\mp\gametypes\_globallogic;
8 #using scripts\mp\gametypes\_globallogic_audio;
9 #using scripts\mp\gametypes\_globallogic_score;
10 #using scripts\mp\gametypes\_globallogic_spawn;
11 #using scripts\mp\gametypes\_spawning;
12 #using scripts\mp\gametypes\_spawnlogic;
13 #using scripts\mp\killstreaks\_killstreaks;
14 #using scripts\mp\gametypes\_dogtags;
16 #using scripts\mp\_teamops;
18 #using scripts\mp\_util;
86 #precache( "string", "OBJECTIVES_TDM" );
87 #precache( "string", "OBJECTIVES_TDM_SCORE" );
88 #precache( "string", "OBJECTIVES_TDM_HINT" );
103 level.scoreRoundWinBased = ( GetGametypeSetting(
"cumulativeRoundScores" ) == false );
104 level.teamScorePerKill = GetGametypeSetting(
"teamScorePerKill" );
105 level.teamScorePerDeath = GetGametypeSetting(
"teamScorePerDeath" );
106 level.teamScorePerHeadshot = GetGametypeSetting(
"teamScorePerHeadshot" );
107 level.killstreaksGiveGameScore = GetGametypeSetting(
"killstreaksGiveGameScore" );
108 level.teamBased =
true;
109 level.overrideTeamScore =
true;
126 setClientNameMode(
"auto_change");
128 if ( !isdefined( game[
"switchedsides"] ) )
129 game[
"switchedsides"] =
false;
131 if ( game[
"switchedsides"] )
133 oldAttackers = game[
"attackers"];
134 oldDefenders = game[
"defenders"];
135 game[
"attackers"] = oldDefenders;
136 game[
"defenders"] = oldAttackers;
139 level.displayRoundEndText =
false;
144 level.spawnMins = ( 0, 0, 0 );
145 level.spawnMaxs = ( 0, 0, 0 );
147 foreach( team
in level.teams )
152 if ( level.splitscreen )
169 level.spawn_start = [];
171 foreach( team
in level.teams )
177 setMapCenter( level.mapCenter );
180 setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
189 level.displayRoundEndText =
true;
190 if( level.scoreRoundWinBased )
196 if(
IS_TRUE( level.droppedTagRespawn ) )
202 self.usingObj = undefined;
204 if ( level.useStartSpawns && !level.inGracePeriod && !level.playerQueuedRespawn )
206 level.useStartSpawns =
false;
214 if ( isdefined( winningTeam ) && isdefined( level.teams[winningTeam] ) )
220 game[
"switchedsides"] = !game[
"switchedsides"];
222 if ( level.scoreRoundWinBased )
224 foreach( team
in level.teams )
226 [[level._setTeamScore]]( team, game[
"roundswon"][team] );
233 if ( level.scoreRoundWinBased )
235 foreach( team
in level.teams )
237 [[level._setTeamScore]]( team, game[
"roundswon"][team] );
241 return [[level.determineWinner]]();
248 while( !level.gameEnded )
250 scoreLimit = level.scoreLimit;
251 scoreThreshold = scoreLimit * .1;
252 scoreThresholdStart = abs(scoreLimit - scoreThreshold);
253 scoreLimitCheck = scoreLimit - 10;
257 foreach( team
in level.teams )
259 score = [[level._getTeamScore]]( team );
261 if ( score > topScore )
263 runnerUpScore = topScore;
266 else if ( score > runnerUpScore )
268 runnerUpScore = score;
272 scoreDif = (topScore - runnerUpScore);
274 if( topScore >= scoreLimit*.5)
276 level notify(
"sndMusicHalfway" );
284 function onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, weapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration )
286 if(
IS_TRUE( level.droppedTagRespawn ) )
299 if ( isPlayer( attacker ) ==
false || attacker.team ==
self.team )
306 if ( sMeansOfDeath ==
"MOD_HEAD_SHOT" )