1 #using scripts\codescripts\struct;
3 #using scripts\shared\hud_message_shared;
5 #insert scripts\shared\shared.gsh;
7 #using scripts\zm\gametypes\_globallogic_score;
8 #using scripts\zm\gametypes\_hostmigration;
10 #namespace globallogic_utils;
14 self endon (
"death" );
15 self endon (
"disconnect" );
21 notifyData = spawnStruct();
22 notifyData.titleText = &
"MP_CHALLENGE_COMPLETED";
23 notifyData.notifyText =
"wheee";
24 notifyData.sound =
"mp_challenge_complete";
32 self endon (
"death" );
33 self endon (
"disconnect" );
39 numShots = randomInt( 6 );
41 for ( i = 0; i < numShots; i++ )
43 iPrintLnBold( numShots );
44 self shellShock(
"frag_grenade_mp", 0.2 );
52 self endon (
"death" );
53 self endon (
"disconnect" );
56 hps[hps.size] =
"radar";
57 hps[hps.size] =
"artillery";
58 hps[hps.size] =
"dogs";
80 if ( level.gameEnded )
82 timePassed = (getTime() - level.gameEndTime) / 1000;
83 timeRemaining = level.postRoundTime - timePassed;
85 if ( timeRemaining < 0 )
91 if ( level.inOvertime )
94 if ( level.timeLimit <= 0 )
97 if ( !isdefined( level.startTime ) )
101 timeRemaining = (level.timeLimit * 60) - timePassed;
103 return timeRemaining + level.postRoundTime;
114 if ( !isdefined( level.postRoundEvents ) )
115 level.postRoundEvents = [];
117 level.postRoundEvents[level.postRoundEvents.size] = eventFunc;
122 if ( !isdefined( level.postRoundEvents ) )
125 for ( i = 0 ; i < level.postRoundEvents.size ; i++ )
127 [[level.postRoundEvents[i]]]();
133 if ( value > maxValue )
135 else if ( value < minValue )
146 if ( level.oldschool || SessionModeIsZombiesGame() )
148 assert( !isdefined( vclass ) );
151 return isdefined( vclass ) && vclass !=
"";
158 self endon(
"stop_ticking");
159 level endon(
"game_ended");
161 time = level.bombTimer;
165 self playSound( gametype_tick_sound );
193 self notify(
"stop_ticking");
198 level endon (
"game_ended" );
200 level waittill(
"prematch_over");
204 level.startTime = getTime();
205 level.discardTime = 0;
207 if ( isdefined( game[
"roundMillisecondsAlreadyPassed"] ) )
209 level.startTime -= game[
"roundMillisecondsAlreadyPassed"];
210 game[
"roundMillisecondsAlreadyPassed"] = undefined;
213 prevtime = gettime();
215 while ( game[
"state"] ==
"playing" )
217 if ( !level.timerStopped )
220 game[
"timepassed"] += gettime() - prevtime;
222 prevtime = gettime();
229 if ( !isdefined( level.startTime ) )
232 if ( level.timerStopped )
233 return (level.timerPauseTime - level.startTime) - level.discardTime;
235 return (gettime() - level.startTime) - level.discardTime;
242 if ( level.timerStopped )
245 level.timerStopped =
true;
246 level.timerPauseTime = gettime();
252 if ( !level.timerStopped )
255 level.timerStopped =
false;
256 level.discardTime += gettime() - level.timerPauseTime;
262 assert( IsPlayer(
self ) || isdefined( team ) );
264 scoreLimit = level.scoreLimit;
266 if ( IsPlayer(
self ) )
269 return scoreLimit - GetTeamScore( team );
275 assert( IsPlayer(
self ) || isdefined( team ) );
277 scoreLimit = level.scoreLimit;
278 timeLimit = level.timeLimit;
281 if ( IsPlayer(
self ) )
284 return GetTeamScore( team ) / minutesPassed;
290 assert( IsPlayer(
self ) || isdefined( team ) );
295 if ( !scorePerMinute )
298 return scoreRemaining / scorePerMinute;
304 self endon(
"disconnect");
308 self PlayRumbleOnEntity(
"damage_heavy" );
315 self endon( notifyname );
322 self endon( notifyname );
324 while( isdefined( level.artilleryInProgress ) )
326 assert( level.artilleryInProgress );
332 function isHeadShot( weapon, sHitLoc, sMeansOfDeath, eInflictor )
334 if( sHitLoc !=
"head" && sHitLoc !=
"helmet" )
339 switch( sMeansOfDeath )
344 if( weapon != level.weaponBallisticKnife )
369 case "right_arm_upper":
370 case "left_arm_upper":
371 case "right_arm_lower":
372 case "left_arm_lower":
379 case "right_leg_upper":
380 case "left_leg_upper":
382 case "right_leg_lower":
383 case "left_leg_lower":
399 for ( index = 0; index < entityList.size; index++ )
401 if ( entity == entityList[index] )
410 startedWaiting = getTime();
415 waitedTime = (getTime() - startedWaiting)/1000;
417 if ( waitedTime < desiredDelay )
419 wait desiredDelay - waitedTime;