1 #using scripts\codescripts\struct; 
    3 #using scripts\shared\hostmigration_shared; 
    4 #using scripts\shared\hud_message_shared; 
    5 #using scripts\shared\killstreaks_shared; 
    7 #insert scripts\shared\shared.gsh; 
    9 #using scripts\mp\gametypes\_globallogic_score; 
   10 #using scripts\mp\gametypes\_hostmigration; 
   11 #using scripts\mp\gametypes\_hud_message; 
   13 #using scripts\mp\killstreaks\_killstreaks; 
   15 #namespace globallogic_utils; 
   19     self endon ( 
"death" );
 
   20     self endon ( 
"disconnect" );
 
   26         notifyData = spawnStruct();
 
   27         notifyData.titleText = &
"MP_CHALLENGE_COMPLETED";
 
   28         notifyData.notifyText = 
"wheee";
 
   29         notifyData.sound = 
"mp_challenge_complete";
 
   37     self endon ( 
"death" );
 
   38     self endon ( 
"disconnect" );
 
   44         numShots = randomInt( 6 );
 
   46         for ( i = 0; i < numShots; i++ )
 
   48             iPrintLnBold( numShots );
 
   49             self shellShock( 
"frag_grenade_mp", 0.2 );
 
   57     self endon ( 
"death" );
 
   58     self endon ( 
"disconnect" );
 
   61     hps[hps.size] = 
"radar";
 
   62     hps[hps.size] = 
"artillery";
 
   63     hps[hps.size] = 
"dogs";
 
   70             self playLocalSound( level.killstreaks[hp].informDialog );
 
   82     if ( level.gameEnded )
 
   84         timePassed = (getTime() - level.gameEndTime) / 1000;
 
   85         timeRemaining = level.postRoundTime - timePassed;
 
   87         if ( timeRemaining < 0 )
 
   93     if ( level.inOvertime )
 
   96     if ( level.timeLimit <= 0 )
 
   99     if ( !isdefined( level.startTime ) )
 
  103     timeRemaining = (level.timeLimit * 60) - timePassed;
 
  105     return timeRemaining + level.postRoundTime;
 
  116     if ( !isdefined( level.postRoundEvents ) )
 
  117         level.postRoundEvents = [];
 
  119     level.postRoundEvents[level.postRoundEvents.size] = eventFunc;
 
  124     if ( !isdefined( level.postRoundEvents ) )
 
  127     for ( i = 0 ; i < level.postRoundEvents.size ; i++ )
 
  129         [[level.postRoundEvents[i]]]();
 
  135     if ( value > maxValue )
 
  137     else if ( value < minValue )
 
  146     if ( SessionModeIsZombiesGame() )
 
  148         assert( !isdefined( c ) );
 
  151     return isdefined( c ) && c != 
"";
 
  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");
 
  202     level.startTime = getTime();
 
  203     level.discardTime = 0;
 
  205     if ( isdefined( game[
"roundMillisecondsAlreadyPassed"] ) )
 
  207         level.startTime -= game[
"roundMillisecondsAlreadyPassed"];
 
  208         game[
"roundMillisecondsAlreadyPassed"] = undefined;
 
  211     prevtime = gettime() - 1000; 
 
  213     while ( game[
"state"] == 
"playing" )
 
  215         if ( !level.timerStopped )
 
  218             game[
"timepassed"] += gettime() - prevtime;
 
  220         if ( !level.playableTimerStopped )
 
  222             game[
"playabletimepassed"] += gettime() - prevtime;
 
  224         prevtime = gettime();
 
  233     player endon( 
"death" );
 
  234     player endon( 
"disconnect" );
 
  241     player DisableRoundStartDelay();
 
  246     waitTime = level.roundStartExplosiveDelay - ([[level.getTimePassed]]() / 1000);
 
  257     self endon(
"disconnect");
 
  258     self endon(
"joined_spectators");
 
  261     if( isDefined( level.prematch_over ) && level.prematch_over )
 
  267         level waittill(
"prematch_over");
 
  270     self EnableRoundStartDelay();
 
  276     if ( !isdefined( level.startTime ) )
 
  279     if ( level.timerStopped )
 
  280         return (level.timerPauseTime - level.startTime) - level.discardTime;
 
  282         return (gettime()            - level.startTime) - level.discardTime;
 
  289     level.playableTimerStopped = pausePlayableTimer;
 
  291     if ( level.timerStopped )
 
  294     level.timerStopped = 
true;
 
  295     level.timerPauseTime = gettime();
 
  301     if ( !level.timerStopped )
 
  304     level.timerStopped = 
false;
 
  305     level.playableTimerStopped = 
false;
 
  306     level.discardTime += gettime() - level.timerPauseTime;
 
  311     if ( !level.timerStopped )
 
  314     level.timerStopped = 
false;
 
  315     level.discardTime = discardTime;
 
  320     assert( IsPlayer( 
self ) || isdefined( team ) );
 
  322     scoreLimit = level.scoreLimit;
 
  324     if ( IsPlayer( 
self ) )
 
  327         return scoreLimit - GetTeamScore( team );
 
  332     if ( level.cumulativeRoundScores && isdefined( game[
"lastroundscore"][team] ) )
 
  334         return GetTeamScore( team ) - game[
"lastroundscore"][team];
 
  337     return GetTeamScore( team );
 
  342     assert( IsPlayer( 
self ) || isdefined( team ) );
 
  346     if ( IsPlayer( 
self ) )
 
  355     assert( IsPlayer( 
self ) || isdefined( team ) );
 
  360     if ( !scorePerMinute )
 
  363     return scoreRemaining / scorePerMinute;
 
  369     self endon(
"disconnect");
 
  373         self PlayRumbleOnEntity( 
"damage_heavy" );
 
  380     self endon( notifyname );
 
  387     self endon( notifyname );
 
  389     while( isdefined( level.artilleryInProgress ) )
 
  391         assert( level.artilleryInProgress ); 
 
  397 function isHeadShot( weapon, sHitLoc, sMeansOfDeath, eInflictor )
 
  399     if( sHitLoc != 
"head" && sHitLoc != 
"helmet" )
 
  404     switch( sMeansOfDeath )
 
  407     case "MOD_MELEE_ASSASSINATE":
 
  410        if( weapon.rootWeapon != level.weaponBallisticKnife )
 
  416         if ( !isdefined( eInflictor ) || !isdefined( eInflictor.controlled ) || eInflictor.controlled  == 
false )
 
  435         case "right_arm_upper":
 
  436         case "left_arm_upper":
 
  437         case "right_arm_lower":
 
  438         case "left_arm_lower":
 
  445         case "right_leg_upper":
 
  446         case "left_leg_upper":
 
  448         case "right_leg_lower":
 
  449         case "left_leg_lower":
 
  461     for ( i = 0; i < 50; i++ )
 
  472     for ( index = 0; index < entityList.size; index++ )
 
  474         if ( entity == entityList[index] )
 
  483     startedWaiting = getTime();
 
  485     waitedTime = (getTime() - startedWaiting)/1000;
 
  487     if ( waitedTime < desiredDelay )
 
  489         wait desiredDelay - waitedTime;
 
  501     log_string = wintype;
 
  503     if( isdefined( winner ) )
 
  505         log_string = log_string +  
", win: " + winner;
 
  508     foreach ( team 
in level.teams )
 
  510         log_string = log_string + 
", " + team + 
": " + game[
"teamScores"][team];