1 #using scripts\codescripts\struct;
3 #using scripts\shared\array_shared;
4 #using scripts\shared\exploder_shared;
5 #using scripts\shared\fx_shared;
6 #using scripts\shared\math_shared;
7 #using scripts\shared\sound_shared;
8 #using scripts\shared\trigger_shared;
9 #using scripts\shared\util_shared;
11 #insert scripts\shared\shared.gsh;
18 println(
"^c*ERROR* ", msg);
21 if (GetDvarString(
"debug") !=
"1")
22 assertmsg(
"This is a forced error - attach the log file");
28 /# println(
"^1WARNING: " + msg ); #/
33 num =
self.v[
"exploder" ];
35 if( isdefined(
self.v[
"delay" ] ) )
37 wait(
self.v[
"delay" ] );
44 if( !isdefined(
self.model ) )
50 assert( isdefined(
self.model ) );
52 if( !isdefined(
self.v[
"fxid" ] ) ||
self.v[
"fxid" ] ==
"No FX" )
54 self.v[
"exploder" ] = undefined;
63 if( isdefined(
self.v[
"delay" ] ) )
65 wait(
self.v[
"delay" ] );
68 assert( isdefined(
self.model ) );
76 if( isdefined(
self.v[
"delay" ] ) )
78 wait(
self.v[
"delay" ] );
83 if( isdefined(
self.v[
"target" ] ) )
85 ent = getent(
self.v[
"target" ],
"targetname" );
88 if( !isdefined( ent ) )
96 startorg =
self.v[
"origin" ];
97 startang =
self.v[
"angles" ];
101 temp_vec = ( org -
self.v[
"origin" ] );
106 self.model rotateVelocity( ( x, y, z ), 12 );
108 self.model moveGravity( ( x, y, z ), 12 );
110 self.v[
"exploder" ] = undefined;
117 assert( isdefined( level.players ) );
119 if ( level.splitscreen )
121 if ( isdefined( level.players[0] ) )
122 level.players[0] playLocalSound(sound);
126 if ( isdefined( team ) )
128 for ( i = 0; i < level.players.size; i++ )
130 player = level.players[i];
131 if ( isdefined( player.pers[
"team"] ) && (player.pers[
"team"] == team))
132 player playLocalSound(sound);
137 for ( i = 0; i < level.players.size; i++ )
138 level.players[i] playLocalSound(sound);
152 return IsSubStr( sMeansOfDeath,
"BULLET" ) || sMeansOfDeath ==
"MOD_HEAD_SHOT";
158 self endon(
"disconnect");
159 self endon(
"end_respawn");
161 while(
self useButtonPressed() !=
true)
168 if ( !isdefined(
self.lowerMessage ) )
171 if ( isdefined(
self.lowerMessageOverride ) && text != &
"" )
173 text =
self.lowerMessageOverride;
177 self notify(
"lower_message_set");
179 self.lowerMessage setText( text );
181 if ( isdefined( time ) && time > 0 )
183 if ( !isdefined( combineMessageAndTimer ) || !combineMessageAndTimer )
184 self.lowerTimer.label = &
"";
187 self.lowerMessage setText(
"" );
188 self.lowerTimer.label = text;
190 self.lowerTimer setTimer( time );
194 self.lowerTimer setText(
"" );
195 self.lowerTimer.label = &
"";
197 if(
self IsSplitscreen() )
198 self.lowerMessage.fontscale = 1.4;
200 self.lowerMessage fadeOverTime( 0.05 );
201 self.lowerMessage.alpha = 1;
202 self.lowerTimer fadeOverTime( 0.05 );
203 self.lowerTimer.alpha = 1;
208 if ( !isdefined(
self.lowerMessage ) )
211 if ( isdefined(
self.lowerMessageOverride ) && text != &
"" )
213 text =
self.lowerMessageOverride;
217 self notify(
"lower_message_set");
218 if ( !isdefined( combineMessage ) || !combineMessage )
219 self.lowerMessage setText( text );
221 self.lowerMessage setText(
"" );
223 if ( isdefined( value ) && value > 0 )
225 if ( !isdefined( combineMessage ) || !combineMessage )
226 self.lowerTimer.label = &
"";
228 self.lowerTimer.label = text;
229 self.lowerTimer setValue( value );
233 self.lowerTimer setText(
"" );
234 self.lowerTimer.label = &
"";
237 if(
self IsSplitscreen() )
238 self.lowerMessage.fontscale = 1.4;
240 self.lowerMessage fadeOverTime( 0.05 );
241 self.lowerMessage.alpha = 1;
242 self.lowerTimer fadeOverTime( 0.05 );
243 self.lowerTimer.alpha = 1;
248 if ( !isdefined(
self.lowerMessage ) )
251 self notify(
"lower_message_set");
253 if ( !isdefined( fadetime) || fadetime == 0 )
259 self endon(
"disconnect");
260 self endon(
"lower_message_set");
262 self.lowerMessage fadeOverTime( fadetime );
263 self.lowerMessage.alpha = 0;
264 self.lowerTimer fadeOverTime( fadetime );
265 self.lowerTimer.alpha = 0;
275 assert( isdefined( level.players ) );
276 for ( i = 0; i < level.players.size; i++ )
278 player = level.players[i];
279 if ( ( isdefined(player.pers[
"team"]) ) && (player.pers[
"team"] == team) )
280 player iprintln(text);
287 assert( isdefined( level.players ) );
288 for ( i = 0; i < level.players.size; i++ )
290 player = level.players[i];
291 if ( ( isdefined(player.pers[
"team"]) ) && (player.pers[
"team"] == team) )
292 player iprintlnbold(text);
300 assert( isdefined( level.players ) );
301 for ( i = 0; i < level.players.size; i++ )
303 player = level.players[i];
304 if ( ( isdefined(player.pers[
"team"]) ) && (player.pers[
"team"] == team) )
305 player iprintlnbold(text, arg);
326 players = level.players;
327 for(i = 0; i < players.size; i++)
329 if ( isdefined( team ) )
331 if((isdefined(players[i].pers[
"team"])) && (players[i].pers[
"team"] == team))
332 players[i] iprintln(text);
336 players[i] iprintln(text);
343 shouldDoSounds = isdefined( soundFriendly );
345 shouldDoEnemySounds =
false;
346 if ( isdefined( soundEnemy ) )
348 assert( shouldDoSounds );
349 shouldDoEnemySounds =
true;
352 if ( !isdefined( printarg ) )
357 if ( level.splitscreen || !shouldDoSounds )
359 for ( i = 0; i < level.players.size; i++ )
361 player = level.players[i];
362 playerteam = player.pers[
"team"];
363 if ( isdefined( playerteam ) )
365 if ( playerteam == team && isdefined( printFriendly ) && printFriendly != &
"" )
366 player iprintln( printFriendly, printarg );
367 else if ( isdefined( printEnemy ) && printEnemy != &
"" )
369 if ( isdefined(enemyteam) && playerteam == enemyteam )
370 player iprintln( printEnemy, printarg );
371 else if ( !isdefined(enemyteam) && playerteam != team )
372 player iprintln( printEnemy, printarg );
376 if ( shouldDoSounds )
378 assert( level.splitscreen );
379 level.players[0] playLocalSound( soundFriendly );
384 assert( shouldDoSounds );
385 if ( shouldDoEnemySounds )
387 for ( i = 0; i < level.players.size; i++ )
389 player = level.players[i];
390 playerteam = player.pers[
"team"];
391 if ( isdefined( playerteam ) )
393 if ( playerteam == team )
395 if( isdefined( printFriendly ) && printFriendly != &
"" )
396 player iprintln( printFriendly, printarg );
397 player playLocalSound( soundFriendly );
399 else if ( (isdefined(enemyteam) && playerteam == enemyteam) || ( !isdefined( enemyteam ) && playerteam != team ) )
401 if( isdefined( printEnemy ) && printEnemy != &
"" )
402 player iprintln( printEnemy, printarg );
403 player playLocalSound( soundEnemy );
410 for ( i = 0; i < level.players.size; i++ )
412 player = level.players[i];
413 playerteam = player.pers[
"team"];
414 if ( isdefined( playerteam ) )
416 if ( playerteam == team )
418 if( isdefined( printFriendly ) && printFriendly != &
"" )
419 player iprintln( printFriendly, printarg );
420 player playLocalSound( soundFriendly );
422 else if ( isdefined( printEnemy ) && printEnemy != &
"" )
424 if ( isdefined(enemyteam) && playerteam == enemyteam )
426 player iprintln( printEnemy, printarg );
428 else if ( !isdefined(enemyteam) && playerteam != team )
430 player iprintln( printEnemy, printarg );
442 if ( level.splitscreen && !
self IsHost() )
445 self playLocalSound( soundAlias );
452 if ( team ==
"allies" )
454 else if ( team ==
"axis" )
459 assertMsg(
"getOtherTeam: invalid team " + team );
465 if ( !level.teambased || !isdefined(team) || !isdefined(level.spawnsystem.iSPAWN_TEAMMASK[team]) )
466 return level.spawnsystem.iSPAWN_TEAMMASK_FREE;
468 return level.spawnsystem.iSPAWN_TEAMMASK[team];
474 foreach( team
in level.teams )
476 if ( team == skip_team )
491 assert( isdefined( level._effect[ fx ] ),
"Fx " + fx +
" is not defined in level._effect." );
492 return level._effect[ fx ];
497 if (!isdefined(reset))
500 if (reset || GetDvarString(dvar)==
"")
502 SetDvar(dvar, value);
506 return GetDvarString(dvar);
511 if (!isdefined(reset))
514 if (reset || GetDvarString(dvar)==
"")
516 SetDvar(dvar, value);
519 return GetDvarFloat(dvar);
524 if (!isdefined(reset))
527 if (reset || GetDvarString(dvar)==
"")
529 SetDvar(dvar, value);
533 return GetDvarInt(dvar);
538 return ( getSubStr( string1, 0, subStr.size ) == subStr );
543 return isdefined( level.killstreaksenabled ) && level.killstreaksenabled;
548 if ( isdefined(
self.carryIcon) )
549 self.carryIcon.alpha = 0;
552 self.usingRemote = remoteName;
554 self disableOffhandWeapons();
555 self notify(
"using_remote" );
562 return self.usingRemote;
567 game[
"strings"][
"objective_"+team] = text;
572 game[
"strings"][
"objective_score_"+team] = text;
577 game[
"strings"][
"objective_hint_"+team] = text;
582 return game[
"strings"][
"objective_"+team];
587 return game[
"strings"][
"objective_score_"+team];
592 return game[
"strings"][
"objective_hint_"+team];
597 level.roundSwitch =
math::clamp( GetGametypeSetting(
"roundSwitch" ), minValue, maxValue );
598 level.roundSwitchMin = minValue;
599 level.roundSwitchMax = maxValue;
604 level.roundLimit =
math::clamp( GetGametypeSetting(
"roundLimit" ), minValue, maxValue );
605 level.roundLimitMin = minValue;
606 level.roundLimitMax = maxValue;
612 level.roundWinLimit =
math::clamp( GetGametypeSetting(
"roundWinLimit" ), minValue, maxValue );
613 level.roundWinLimitMin = minValue;
614 level.roundWinLimitMax = maxValue;
620 level.scoreLimit =
math::clamp( GetGametypeSetting(
"scoreLimit" ), minValue, maxValue );
621 level.scoreLimitMin = minValue;
622 level.scoreLimitMax = maxValue;
623 SetDvar(
"ui_scorelimit", level.scoreLimit );
629 level.timeLimit =
math::clamp( GetGametypeSetting(
"timeLimit" ), minValue, maxValue );
630 level.timeLimitMin = minValue;
631 level.timeLimitMax = maxValue;
632 SetDvar(
"ui_timelimit", level.timeLimit );
638 level.numLives =
math::clamp( GetGametypeSetting(
"playerNumLives" ), minValue, maxValue );
639 level.numLivesMin = minValue;
640 level.numLivesMax = maxValue;
648 for ( i = 0; i < level.players.size; i++ )
650 if ( level.players[i] getEntityNumber() == clientNum )
651 return level.players[i];
658 buildType = GetDvarString(
"buildType" );
660 if ( isdefined( buildType ) && buildtype ==
"press" )
670 return isdefined(
self.flashEndTime ) && gettime() <
self.flashEndTime;
675 if ( isdefined(
self.damagedToDeath ) &&
self.damagedToDeath )
680 if ( isdefined(
self.maxHealth ) )
689 self.damagedToDeath =
true;
691 self DoDamage(
damage, origin, attacker, inflictor, headshot, mod );
720 maxdists2rd = undefined;
721 if ( isdefined( maxdist ) )
723 maxdists2rd = maxdist * maxdist;
729 for ( i = 0; i <
array.size; i++ )
731 if ( !isdefined(
array[ i ] ) )
736 if ( IsInArray( excluders,
array[ i ] ) )
743 length = DistanceSquared( org,
array[ i ] );
747 length = DistanceSquared( org,
array[ i ].origin );
750 if ( isdefined( maxdists2rd ) && maxdists2rd < length )
755 dist[ dist.size ] = length;
756 index[ index.size ] = i;
762 for ( i = 0; i < dist.size - 1; i++ )
764 if ( dist[ i ] <= dist[ i + 1 ] )
771 dist[ i ] = dist[ i + 1 ];
772 dist[ i + 1 ] = temp;
774 index[ i ] = index[ i + 1 ];
775 index[ i + 1 ] = temp;
785 if ( max > dist.size )
790 for ( i = 0; i < max; i++ )
792 newArray[ i ] =
array[ index[ i ] ];