iw6-scripts/maps/black_ice_util.gsc
2024-02-13 13:20:49 +01:00

2009 lines
49 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
player_start( var_0 )
{
var_1 = getent( var_0, "targetname" );
level.player setorigin( var_1.origin );
level.player setplayerangles( var_1.angles );
}
player_setup()
{
level.player.animname = "player";
level.player setthreatbiasgroup( "player" );
level.player thread fire_death_watcher();
level.player thread ammo_hack();
}
ammo_hack( var_0 )
{
while ( !isdefined( var_0 ) || var_0.size == 0 )
{
var_0 = self getweaponslistall();
wait 0.05;
}
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
self givestartammo( var_0[var_1] );
}
fire_death_watcher( var_0, var_1 )
{
for (;;)
{
common_scripts\utility::flag_wait( "flag_fire_damage_on" );
self waittill( "damage", var_0, var_1, var_2, var_3, var_4 );
if ( isdefined( var_1 ) && var_1.classname != "worldspawn" )
{
if ( var_1 == level._fire_damage_ent && self.health - var_0 <= 0 )
{
setdvar( "ui_deadquote", &"BLACK_ICE_DEATH_FIRE" );
maps\_utility::missionfailedwrapper();
}
}
}
}
exploder_damage_loop( var_0, var_1 )
{
var_2 = [];
var_3 = maps\_utility::get_exploder_array( var_0 );
foreach ( var_5 in var_3 )
{
if ( isdefined( var_5.v["damage"] ) && var_5.v["damage"] > 0 )
{
var_5.v["origin"] = getgroundposition( var_5.v["origin"], 1 );
var_2 = common_scripts\utility::array_add( var_2, var_5 );
}
}
if ( !isdefined( level._fires ) )
level._fires = [];
level._fires[var_0] = var_2;
while ( var_2.size > 0 )
{
common_scripts\utility::flag_wait( "flag_fire_damage_on" );
level._fires[var_0] = var_2;
foreach ( var_5 in var_2 )
{
if ( isdefined( var_5.looper ) )
{
var_5 thread fire_damage( var_1 );
continue;
}
var_2 = common_scripts\utility::array_remove( var_2, var_5 );
}
wait 0.1;
}
}
fire_damage( var_0, var_1 )
{
if ( isdefined( self.v["delay"] ) )
var_2 = self.v["delay"];
else
var_2 = 1;
if ( isdefined( self.v["damage_radius"] ) )
var_3 = self.v["damage_radius"];
else
var_3 = 128;
if ( !isdefined( var_1 ) )
var_1 = 4;
var_4 = self.v["origin"];
wait( var_2 );
radiusdamage( var_4, var_3, var_1, var_1, var_0 );
}
add_fire( var_0, var_1, var_2, var_3 )
{
var_4 = spawnstruct();
if ( isdefined( var_1 ) )
var_4.v["origin"] = var_1;
if ( isdefined( var_2 ) )
var_4.v["damage_radius"] = var_2;
if ( isdefined( var_3 ) )
var_4.v["delay"] = var_3;
level._fires[var_0] = common_scripts\utility::array_add( level._fires[var_0], var_4 );
}
normalize_value( var_0, var_1, var_2 )
{
if ( var_2 > var_1 )
return 1.0;
else if ( var_2 < var_0 )
return 0.0;
return ( var_2 - var_0 ) / ( var_1 - var_0 );
}
factor_value_min_max( var_0, var_1, var_2 )
{
return var_1 * var_2 + var_0 * ( 1 - var_2 );
}
spawn_allies()
{
var_0 = 2;
var_1 = getentarray( "spawner_allies", "script_noteworthy" );
common_scripts\utility::array_thread( var_1, maps\_utility::add_spawn_function, ::spawnfunc_ally );
level._allies = spawn_allies_group( var_1 );
maps\_utility::delaythread( 0.05, maps\_utility::set_team_bcvoice, "allies", "taskforce" );
}
spawn_allies_swim()
{
var_0 = getentarray( "spawner_allies_swim", "script_noteworthy" );
var_1 = spawn_allies_group( var_0, 1 );
var_2 = [];
var_2[0] = var_1[0];
var_2[1] = var_1[1];
return var_2;
}
spawn_allies_group( var_0, var_1 )
{
var_2 = [];
foreach ( var_4 in var_0 )
{
if ( issubstr( var_4.targetname, "ally_01" ) )
{
var_4.script_friendname = "Merrick";
var_5 = var_4 maps\_utility::spawn_ai();
var_5.animname = "ally1";
var_5.v.invincible = 1;
var_2[0] = var_5;
continue;
}
if ( issubstr( var_4.targetname, "ally_02" ) )
{
if ( isdefined( var_1 ) && var_1 )
var_4.script_friendname = "Kick";
else
var_4.script_friendname = "Hesh";
var_5 = var_4 maps\_utility::spawn_ai();
var_5.animname = "ally2";
var_5.v.invincible = 1;
var_2[1] = var_5;
continue;
}
}
return var_2;
}
spawnfunc_ally()
{
maps\_utility::set_archetype( "black_ice_ally" );
maps\_utility::magic_bullet_shield();
self.hero = 1;
}
teleport_allies( var_0 )
{
var_1 = [];
foreach ( var_3 in var_0 )
var_1 = common_scripts\utility::array_add( var_1, common_scripts\utility::getstruct( var_3, "targetname" ) );
if ( var_1.size == 0 )
{
foreach ( var_3 in var_0 )
{
var_6 = getent( var_3, "targetname" );
var_1 = common_scripts\utility::array_add( var_1, var_6 );
}
}
if ( var_1.size != self.size )
{
}
for ( var_8 = 0; var_8 < self.size; var_8++ )
{
if ( !isdefined( var_1[var_8].angles ) )
var_1[var_8].angles = self[var_8].angles;
self[var_8] forceteleport( var_1[var_8].origin, var_1[var_8].angles );
}
}
spawn_bravo()
{
var_0 = getentarray( "spawner_bravo", "script_noteworthy" );
foreach ( var_2 in var_0 )
var_2 maps\_utility::add_spawn_function( ::spawnfunc_bravo );
level._bravo = spawn_bravo_group( var_0 );
maps\_utility::delaythread( 0.05, maps\_utility::set_team_bcvoice, "allies", "taskforce" );
}
spawn_bravo_group( var_0 )
{
var_1 = [];
foreach ( var_3 in var_0 )
{
if ( issubstr( var_3.targetname, "bravo_01" ) )
{
var_3.script_friendname = "Keegan";
var_4 = var_3 maps\_utility::spawn_ai();
var_4.disable_sniper_glint = 1;
var_4.animname = "bravo1";
var_1[0] = var_4;
continue;
}
if ( issubstr( var_3.targetname, "bravo_02" ) )
{
var_3.script_friendname = "Kick";
var_4 = var_3 maps\_utility::spawn_ai();
var_4.animname = "bravo2";
var_1[1] = var_4;
continue;
}
}
return var_1;
}
spawnfunc_bravo()
{
maps\_utility::magic_bullet_shield();
}
hide_dufflebag()
{
var_0 = [];
var_0[var_0.size] = "J_Cog";
var_0[var_0.size] = "J_Strap_Base";
var_0[var_0.size] = "J_Strap_End";
var_0[var_0.size] = "J_Strap_1";
var_0[var_0.size] = "J_Strap_2";
var_0[var_0.size] = "J_Strap_3";
var_0[var_0.size] = "J_Strap_4";
var_0[var_0.size] = "J_Strap_5";
var_0[var_0.size] = "J_Strap_6";
var_0[var_0.size] = "J_Strap_7";
var_0[var_0.size] = "J_Strap_8";
var_0[var_0.size] = "J_Strap_9";
var_0[var_0.size] = "J_Strap_10";
var_0[var_0.size] = "J_Strap_11";
var_0[var_0.size] = "J_Strap_12";
var_0[var_0.size] = "J_Strap_13";
var_0[var_0.size] = "J_Strap_14";
foreach ( var_2 in var_0 )
self hidepart( var_2 );
}
ai_alert_range( var_0, var_1, var_2, var_3, var_4 )
{
self endon( "death" );
self endon( "alert" );
var_5 = var_1 * var_1;
for (;;)
{
var_6 = distancesquared( self.origin, var_0.origin );
if ( distancesquared( self.origin, var_0.origin ) <= var_5 )
{
if ( isdefined( var_2 ) && var_2 )
{
if ( self cansee( var_0 ) )
break;
}
else
break;
}
wait 0.05;
}
thread ai_alert( var_3, var_4 );
}
ai_alert_bullet( var_0, var_1 )
{
self endon( "death" );
self endon( "alert" );
for (;;)
{
self waittill( "bulletwhizby", var_2, var_3 );
if ( var_3 < 70.0 && var_2 getthreatbiasgroup() == "alpha" )
break;
}
thread ai_alert( var_0, var_1 );
}
ai_alert_damage( var_0, var_1 )
{
self endon( "death" );
self endon( "alert" );
var_2 = var_1;
if ( isstring( var_2 ) )
{
var_3 = maps\_utility::get_ai_group_ai( var_2 );
foreach ( var_5 in var_3 )
{
if ( var_5 != self )
var_5 thread ai_alert_friend_death( self, 0, 0 );
}
var_2 = 1;
}
if ( var_2 && isdefined( self.script_aigroup ) )
{
var_3 = maps\_utility::get_ai_group_ai( self.script_aigroup );
foreach ( var_5 in var_3 )
{
if ( var_5 != self )
var_5 thread ai_alert_friend_death( self, 0, 0 );
}
}
for (;;)
{
self waittill( "damage", var_9, var_10 );
if ( var_10 getthreatbiasgroup() == "alpha" )
break;
}
thread ai_alert( var_0, var_1 );
}
ai_alert_friend_death( var_0, var_1, var_2 )
{
self endon( "death" );
self endon( "alert" );
self notify( var_0.unique_id );
self endon( var_0.unique_id );
var_0 waittill( "death" );
thread ai_alert( var_1, var_2 );
}
ai_alert( var_0, var_1 )
{
self endon( "death" );
if ( !isdefined( var_0 ) )
var_0 = 0;
if ( !isdefined( var_1 ) )
var_1 = 0;
self stopanimscripted();
maps\_utility::enable_danger_react( 10 );
maps\_utility::clear_run_anim();
maps\_utility::clear_deathanim();
if ( var_0 && isdefined( self.surprise_anims ) )
{
self.animname = "generic";
var_2 = self.surprise_anims;
thread maps\_anim::anim_single_solo( self, common_scripts\utility::random( var_2 ) );
self.allowdeath = 1;
wait( randomfloatrange( 0.7, 1.0 ) );
self stopanimscripted();
}
self notify( "stop_going_to_node" );
if ( self getthreatbiasgroup() != "axis" )
{
setthreatbias( self getthreatbiasgroup(), "alpha", 100 );
setthreatbias( "alpha", self getthreatbiasgroup(), 100 );
}
else
{
maps\_utility::set_ignoreall( 0 );
maps\_utility::set_ignoreme( 0 );
}
thread maps\_utility::gun_recall();
if ( isstring( var_1 ) )
{
var_3 = maps\_utility::get_ai_group_ai( var_1 );
foreach ( var_5 in var_3 )
{
if ( var_5 != self )
var_5 thread ai_alert( 0, 0 );
}
var_1 = 1;
}
if ( var_1 && isdefined( self.script_aigroup ) )
{
var_3 = maps\_utility::get_ai_group_ai( self.script_aigroup );
foreach ( var_5 in var_3 )
{
if ( var_5 != self )
var_5 thread ai_alert( 0, 0 );
}
}
self notify( "alert" );
}
flash_grenade_proc( var_0, var_1 )
{
var_2 = var_0 gettagorigin( "J_Wrist_LE" );
var_3 = getent( var_1, "targetname" );
var_3 = var_3.origin;
var_4 = distance( var_3, var_0.origin ) * 2.0;
var_4 = clamp( var_4, 300, 1000 );
var_5 = vectornormalize( var_3 - var_0.origin );
var_6 = var_5 * var_4;
magicgrenademanual( "flash_grenade", var_2, var_6, 1.0 );
}
delay_retreat( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
if ( isdefined( var_2 ) )
thread opfor_retreat( var_0, var_2, var_3, var_4, var_5, var_6 );
common_scripts\utility::flag_wait_or_timeout( var_3, var_1 );
if ( common_scripts\utility::flag( var_3 ) )
return;
thread retreat_proc( var_3, var_4, var_5, var_6 );
}
opfor_retreat( var_0, var_1, var_2, var_3, var_4, var_5 )
{
while ( maps\_utility::get_ai_group_sentient_count( var_0 ) > var_1 && !common_scripts\utility::flag( var_2 ) )
wait 0.1;
if ( common_scripts\utility::flag( var_2 ) )
return;
thread retreat_proc( var_2, var_3, var_4, var_5 );
}
retreat_proc( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_1 ) && !isarray( var_1 ) )
var_1 = [ var_1 ];
if ( isdefined( var_1 ) )
{
var_4 = [];
foreach ( var_6 in var_1 )
{
var_6 = getent( var_6, "targetname" );
if ( isdefined( var_6 ) )
var_4[var_4.size] = var_6;
}
if ( var_4.size > 0 )
var_1 = var_4;
else
var_1 = undefined;
}
if ( isdefined( var_1 ) )
{
var_1[0] notify( "trigger" );
if ( isdefined( var_2 ) && var_2 )
common_scripts\utility::array_thread( var_1, common_scripts\utility::trigger_off );
}
if ( !common_scripts\utility::flag( var_0 ) )
common_scripts\utility::flag_set( var_0 );
if ( isdefined( var_3 ) && !isarray( var_3 ) )
var_3 = [ var_3 ];
if ( isdefined( var_3 ) )
{
foreach ( var_9 in var_3 )
level notify( var_9 );
}
}
temp_dialogue_line( var_0, var_1, var_2 )
{
if ( getdvarint( "loc_warnings", 0 ) )
return;
if ( !isdefined( level.dialogue_huds ) )
level.dialogue_huds = [];
var_3 = 0;
for (;;)
{
if ( !isdefined( level.dialogue_huds[var_3] ) )
break;
var_3++;
}
var_4 = "^3";
if ( !isdefined( var_2 ) )
var_2 = 1;
var_2 = max( 1, var_2 );
level.dialogue_huds[var_3] = 1;
var_5 = maps\_hud_util::createfontstring( "default", 1.5 );
var_5.location = 0;
var_5.alignx = "left";
var_5.aligny = "top";
var_5.foreground = 1;
var_5.sort = 20;
var_5.alpha = 0;
var_5 fadeovertime( 0.5 );
var_5.alpha = 1;
var_5.x = 40;
var_5.y = 260 + var_3 * 18;
var_5.label = " " + var_4 + "< " + var_0 + " > ^7" + var_1;
var_5.color = ( 1, 1, 1 );
wait( var_2 );
var_6 = 10.0;
var_5 fadeovertime( 0.5 );
var_5.alpha = 0;
for ( var_7 = 0; var_7 < var_6; var_7++ )
{
var_5.color = ( 1, 1, 0 / ( var_6 - var_7 ) );
wait 0.05;
}
wait 0.25;
var_5 destroy();
level.dialogue_huds[var_3] = undefined;
}
check_anim_time( var_0, var_1, var_2 )
{
var_3 = self getanimtime( level.scr_anim[var_0][var_1] );
if ( var_3 >= var_2 )
return 1;
return 0;
}
delete_at_anim_end( var_0, var_1, var_2 )
{
while ( !check_anim_time( var_0, var_1, 1.0 ) )
wait( level.timestep );
if ( isdefined( var_2 ) && var_2 )
maps\_vignette_util::vignette_actor_delete();
else
self delete();
}
ignore_everything()
{
if ( isdefined( self._ignore_settings_old ) )
unignore_everything();
self._ignore_settings_old = [];
self.disableplayeradsloscheck = set_ignore_setting( self.disableplayeradsloscheck, "disableplayeradsloscheck", 1 );
self.ignoreall = set_ignore_setting( self.ignoreall, "ignoreall", 1 );
self.ignoreme = set_ignore_setting( self.ignoreme, "ignoreme", 1 );
self.grenadeawareness = set_ignore_setting( self.grenadeawareness, "grenadeawareness", 0 );
self.ignoreexplosionevents = set_ignore_setting( self.ignoreexplosionevents, "ignoreexplosionevents", 1 );
self.ignorerandombulletdamage = set_ignore_setting( self.ignorerandombulletdamage, "ignorerandombulletdamage", 1 );
self.ignoresuppression = set_ignore_setting( self.ignoresuppression, "ignoresuppression", 1 );
self.dontavoidplayer = set_ignore_setting( self.dontavoidplayer, "dontavoidplayer", 1 );
self.newenemyreactiondistsq = set_ignore_setting( self.newenemyreactiondistsq, "newEnemyReactionDistSq", 0 );
self.disablebulletwhizbyreaction = set_ignore_setting( self.disablebulletwhizbyreaction, "disableBulletWhizbyReaction", 1 );
self.disablefriendlyfirereaction = set_ignore_setting( self.disablefriendlyfirereaction, "disableFriendlyFireReaction", 1 );
self.dontmelee = set_ignore_setting( self.dontmelee, "dontMelee", 1 );
self.flashbangimmunity = set_ignore_setting( self.flashbangimmunity, "flashBangImmunity", 1 );
self.dodangerreact = set_ignore_setting( self.dodangerreact, "doDangerReact", 0 );
self.neversprintforvariation = set_ignore_setting( self.neversprintforvariation, "neverSprintForVariation", 1 );
self.a.disablepain = set_ignore_setting( self.a.disablepain, "a.disablePain", 1 );
self.allowpain = set_ignore_setting( self.allowpain, "allowPain", 0 );
self pushplayer( 1 );
}
set_ignore_setting( var_0, var_1, var_2 )
{
if ( isdefined( var_0 ) )
self._ignore_settings_old[var_1] = var_0;
else
self._ignore_settings_old[var_1] = "none";
return var_2;
}
unignore_everything( var_0 )
{
if ( isdefined( var_0 ) && var_0 )
{
if ( isdefined( self._ignore_settings_old ) )
self._ignore_settings_old = undefined;
}
self.disableplayeradsloscheck = restore_ignore_setting( "disableplayeradsloscheck", 0 );
self.ignoreall = restore_ignore_setting( "ignoreall", 0 );
self.ignoreme = restore_ignore_setting( "ignoreme", 0 );
self.grenadeawareness = restore_ignore_setting( "grenadeawareness", 1 );
self.ignoreexplosionevents = restore_ignore_setting( "ignoreexplosionevents", 0 );
self.ignorerandombulletdamage = restore_ignore_setting( "ignorerandombulletdamage", 0 );
self.ignoresuppression = restore_ignore_setting( "ignoresuppression", 0 );
self.dontavoidplayer = restore_ignore_setting( "dontavoidplayer", 0 );
self.newenemyreactiondistsq = restore_ignore_setting( "newEnemyReactionDistSq", 262144 );
self.disablebulletwhizbyreaction = restore_ignore_setting( "disableBulletWhizbyReaction", undefined );
self.disablefriendlyfirereaction = restore_ignore_setting( "disableFriendlyFireReaction", undefined );
self.dontmelee = restore_ignore_setting( "dontMelee", undefined );
self.flashbangimmunity = restore_ignore_setting( "flashBangImmunity", undefined );
self.dodangerreact = restore_ignore_setting( "doDangerReact", 1 );
self.neversprintforvariation = restore_ignore_setting( "neverSprintForVariation", undefined );
self.a.disablepain = restore_ignore_setting( "a.disablePain", 0 );
self.allowpain = restore_ignore_setting( "allowPain", 1 );
self pushplayer( 0 );
self._ignore_settings_old = undefined;
}
restore_ignore_setting( var_0, var_1 )
{
if ( isdefined( self._ignore_settings_old ) )
{
if ( isstring( self._ignore_settings_old[var_0] ) && self._ignore_settings_old[var_0] == "none" )
return var_1;
else
return self._ignore_settings_old[var_0];
}
return var_1;
}
quake( var_0, var_1 )
{
if ( !isdefined( var_1 ) )
var_1 = 0.0;
level.player playsound( var_0 );
wait( var_1 );
earthquake( 0.5, 1, level.player.origin, 3000 );
}
array_thread_targetname( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10 )
{
var_11 = getentarray( var_0, "targetname" );
if ( var_11.size > 0 )
common_scripts\utility::array_thread( var_11, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10 );
}
trig_stairs_setup()
{
level endon( "turn_off_stairs_trigs" );
var_0 = getentarray( "trig_stairs", "script_noteworthy" );
common_scripts\utility::array_thread( var_0, ::trig_stairs_proc );
}
trig_stairs_proc()
{
level endon( "turn_off_stairs_trigs" );
var_0 = undefined;
if ( isdefined( self.script_parameters ) && self.script_parameters == "allow_cqb" )
var_0 = 1;
for (;;)
{
self waittill( "trigger", var_1 );
if ( !isdefined( var_1.instairstrig ) )
var_1 thread ai_stairs_proc( self, var_0 );
}
}
ai_stairs_proc( var_0, var_1 )
{
self endon( "death" );
self.instairstrig = 1;
if ( isplayer( self ) )
thread maps\_utility::blend_movespeedscale( 0.6 );
else
{
if ( !isdefined( var_1 ) && isdefined( self.cqbwalking ) )
{
self.wascqb = 1;
thread maps\_utility::disable_cqbwalk();
}
self.old_move_rate = self.moveplaybackrate;
maps\_utility::set_moveplaybackrate( 1.25, 0.25 );
}
while ( self istouching( var_0 ) )
{
if ( isplayer( self ) && !isdefined( self.stairs_low_speed ) )
{
var_2 = common_scripts\utility::getclosest( self.origin, level._allies, 128 );
if ( isdefined( var_2 ) && common_scripts\utility::within_fov( level.player.origin, level.player.angles, var_2.origin, 0 ) )
{
self.stairs_low_speed = 1;
thread maps\_utility::blend_movespeedscale( 0.5 );
}
}
wait 0.05;
}
if ( isplayer( self ) )
{
if ( isdefined( self.stairs_low_speed ) )
thread maps\_utility::blend_movespeedscale_default( 0.4 );
else
thread maps\_utility::blend_movespeedscale_default( 0.25 );
}
else
{
if ( isdefined( self.wascqb ) )
{
self.wascqb = undefined;
thread maps\_utility::enable_cqbwalk();
}
maps\_utility::set_moveplaybackrate( self.old_move_rate, 0.25 );
}
self.instairstrig = undefined;
self.stairs_low_speed = undefined;
}
waittill_trigger_ent_targetname( var_0, var_1, var_2, var_3 )
{
var_4 = getent( var_0, "targetname" );
var_4 waittill_trigger_ent( var_1, var_2, var_3 );
}
waittill_trigger_ent( var_0, var_1, var_2 )
{
var_3 = [];
if ( isarray( var_0 ) )
var_3 = var_0;
else
var_3[0] = var_0;
var_4 = 0;
var_5 = var_3;
for (;;)
{
self waittill( "trigger", var_6 );
foreach ( var_8 in var_5 )
{
if ( var_8 == var_6 )
{
var_4++;
var_5 = common_scripts\utility::array_remove( var_5, var_8 );
if ( isdefined( var_1 ) )
{
if ( isdefined( var_2 ) )
var_6 thread [[ var_1 ]]( var_2 );
else
var_6 thread [[ var_1 ]]();
}
break;
}
}
if ( var_4 == var_3.size )
break;
}
}
getentany( var_0, var_1 )
{
var_2 = "targetname";
if ( isdefined( var_1 ) )
var_2 = var_1;
var_3 = undefined;
var_3 = getentarray( var_0, var_2 );
if ( var_3.size == 0 )
var_3 = common_scripts\utility::getstructarray( var_0, var_2 );
else if ( var_3.size == 1 )
return var_3[0];
else
return var_3;
if ( var_3.size == 0 )
var_3 = getnodearray( var_0, var_2 );
else if ( var_3.size == 1 )
return var_3[0];
else
return var_3;
if ( var_3.size == 0 )
var_3 = getvehiclenodearray( var_0, var_2 );
else if ( var_3.size == 1 )
return var_3[0];
else
return var_3;
if ( var_3.size == 0 )
return;
if ( var_3.size == 1 )
return var_3[0];
else
{
return var_3;
return;
}
}
setup_door( var_0, var_1, var_2 )
{
var_3 = undefined;
if ( isstring( var_0 ) )
var_3 = getent( var_0, "targetname" );
else
var_3 = var_0;
if ( var_3.classname != "script_model" && var_3.classname != "script_brushmodel" )
{
}
var_4 = undefined;
if ( isdefined( var_3.target ) )
{
var_5 = getentarray( var_3.target, "targetname" );
foreach ( var_7 in var_5 )
{
if ( var_7.classname == "script_brushmodel" )
{
var_4 = var_7;
continue;
}
if ( var_7.classname == "script_origin" )
{
if ( !isdefined( var_2 ) )
{
var_3.hinge = var_7;
var_3.hinge.tag_name = var_2;
var_3 linkto( var_3.hinge );
}
}
}
}
if ( isdefined( var_2 ) )
{
var_3.hinge = common_scripts\utility::spawn_tag_origin();
var_3.hinge.origin = var_3 gettagorigin( var_2 );
var_3.hinge.angles = var_3 gettagangles( var_2 );
if ( !isdefined( var_1 ) )
var_3 linkto( var_3.hinge );
}
if ( isdefined( var_4 ) )
{
var_3.col_brush = var_4;
if ( isdefined( var_2 ) )
var_3.col_brush linkto( var_3, var_2 );
else
var_3.col_brush linkto( var_3 );
}
else if ( var_3.classname == "script_brushmodel" )
var_3.col_brush = var_3;
var_3.original_angles = var_3.angles;
if ( isdefined( var_1 ) )
var_3 maps\_utility::assign_animtree( var_1 );
return var_3;
}
rebuild_door( var_0 )
{
var_1 = var_0.origin;
var_2 = var_0.angles;
var_3 = var_0.animname;
var_4 = var_0.original_angles;
var_5 = undefined;
var_6 = undefined;
var_7 = undefined;
if ( isdefined( var_0.targetname ) )
var_5 = var_0.targetname;
if ( isdefined( var_0.target ) )
var_6 = var_0.target;
if ( isdefined( var_0.hinge ) )
var_7 = var_0.hinge.tag_name;
var_0 delete();
var_0 = maps\_utility::spawn_anim_model( var_3, var_1 );
var_0.angles = var_2;
var_0.target = var_6;
var_0 = setup_door( var_0, var_3, var_7 );
var_0.original_angles = var_4;
return var_0;
}
close_door( var_0, var_1, var_2 )
{
var_3 = self;
if ( isdefined( self._lastanimtime ) )
{
self._lastanimtime = undefined;
self stopuseanimtree();
}
var_4 = undefined;
if ( isdefined( var_3.hinge ) )
{
if ( !var_3 islinked() )
var_3 linkto( var_3.hinge );
var_4 = var_3.hinge;
}
else
var_4 = var_3;
var_5 = 0.05;
if ( isdefined( var_1 ) )
var_5 = var_1;
if ( isdefined( var_0 ) )
var_4 rotateyaw( var_0, var_5 );
else
var_4 rotateto( var_3.original_angles, var_5 );
if ( isdefined( var_2 ) )
wait( var_2 );
else
wait( var_5 );
if ( isdefined( var_3.col_brush ) )
var_3.col_brush disconnectpaths();
}
open_door( var_0, var_1, var_2 )
{
var_3 = self;
if ( isdefined( self._lastanimtime ) )
{
self._lastanimtime = undefined;
self stopuseanimtree();
}
var_4 = undefined;
if ( isdefined( var_3.hinge ) )
{
if ( !var_3 islinked() )
var_3 linkto( var_3.hinge );
var_4 = var_3.hinge;
}
else
var_4 = var_3;
var_5 = undefined;
var_6 = undefined;
if ( isarray( var_0 ) )
{
var_5 = var_0[0];
var_6 = var_0[1];
}
else
var_5 = var_0;
var_7 = 0.05;
if ( isdefined( var_1 ) )
var_7 = var_1;
var_4 rotateyaw( var_5, var_7 );
if ( isdefined( var_2 ) )
wait( var_2 );
else
wait( var_7 );
if ( isdefined( var_3.col_brush ) )
var_3.col_brush connectpaths();
if ( isdefined( var_2 ) && var_2 < var_7 )
wait( var_7 - var_2 );
wait 0.05;
if ( isdefined( var_6 ) )
var_4 rotateyaw( var_6, 2.5, 0.05, 2.45 );
}
close_gate( var_0, var_1, var_2 )
{
self moveto( var_0, var_1 );
if ( isdefined( var_2 ) )
wait( var_2 );
else
wait( var_1 );
self.col_brush disconnectpaths();
}
open_gate( var_0, var_1, var_2 )
{
self moveto( var_0, var_1 );
if ( isdefined( var_2 ) )
wait( var_2 );
else
wait( var_1 );
self.col_brush connectpaths();
}
vision_hit_transition( var_0, var_1, var_2, var_3, var_4 )
{
thread maps\_utility::vision_set_fog_changes( var_0, var_2 );
wait( var_2 );
wait( var_3 );
thread maps\_utility::vision_set_fog_changes( var_1, var_4 );
wait( var_4 );
}
vision_watcher( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
if ( !isdefined( level.flag[var_0] ) )
common_scripts\utility::flag_init( var_0 );
if ( !isdefined( level._vision_sets_active ) )
level._vision_sets_active = 0;
thread vision_watcher_thread( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 );
}
vision_watcher_thread( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
if ( isdefined( var_7 ) )
level endon( var_7 );
var_8 = 0;
for (;;)
{
if ( common_scripts\utility::flag( var_0 ) && !var_8 )
{
maps\_utility::vision_set_fog_changes( var_1, var_2 );
if ( isdefined( var_5 ) )
thread [[ var_5 ]]();
var_8 = 1;
level._vision_sets_active++;
}
else if ( !common_scripts\utility::flag( var_0 ) && var_8 )
{
if ( level._vision_sets_active == 1 )
maps\_utility::vision_set_fog_changes( var_3, var_4 );
if ( isdefined( var_6 ) )
thread [[ var_6 ]]();
var_8 = 0;
level._vision_sets_active--;
}
wait 0.05;
}
}
flag_watcher( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_3 ) )
level endon( var_3 );
if ( !common_scripts\utility::flag_exist( var_0 ) )
common_scripts\utility::flag_init( var_0 );
var_4 = 0;
for (;;)
{
if ( common_scripts\utility::flag( var_0 ) && !var_4 )
{
if ( isdefined( var_1 ) )
thread [[ var_1 ]]();
var_4 = 1;
}
else if ( !common_scripts\utility::flag( var_0 ) && var_4 )
{
if ( isdefined( var_2 ) )
thread [[ var_2 ]]();
var_4 = 0;
}
wait 0.05;
}
}
real_reload()
{
self endon( "death" );
for (;;)
{
self waittill( "reload_start" );
var_0 = self getcurrentweapon();
var_1 = self getcurrentweaponclipammo();
thread real_reload_proc( var_0, var_1 );
}
}
real_reload_proc( var_0, var_1 )
{
self endon( "death" );
self endon( "weapon_fire" );
self endon( "weapon_change" );
self endon( "weapon_dropped" );
self waittill( "reload" );
if ( var_0 == self getcurrentweapon() && var_1 != self getcurrentweaponclipammo() )
{
var_2 = self getweaponammostock( var_0 );
self setweaponammostock( var_0, var_2 - var_1 );
}
}
black_ice_geyser_pulse()
{
var_0 = getentarray( "firegeyser_flicker", "targetname" );
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
{
if ( maps\_utility::is_gen4() )
{
var_0[var_1] thread flicker( 0.3, 1.0, "notify_stop_flicker" );
continue;
}
var_0[var_1] thread flicker();
}
}
black_ice_geyser2_pulse()
{
var_0 = getentarray( "blackice_flicker2", "script_noteworthy" );
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
{
if ( maps\_utility::is_gen4() )
{
var_0[var_1] thread flicker( 0.3, 1.0, "notify_stop_flicker" );
continue;
}
var_0[var_1] thread flicker();
}
}
flicker( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_0 ) )
var_0 = 0.2;
if ( var_0 > 0.999 )
var_0 = 0.999;
if ( !isdefined( var_1 ) )
var_1 = 1.0;
self endon( "notify_stop_flicker" );
if ( maps\_utility::is_gen4() )
thread jittermove( 10, 0.2, 0.1 );
else
thread jittermove( 3.5, 0.2, 0.1 );
var_4 = [ 0.1, 0.05, 0.1, 0.05, 0.25, 0.05, 0.075, 0.05, 0.15, 0.075 ];
var_5 = [ 0.0, 0.25, 0.5, 0.4, 0.05, 0.45, 1.0, 0.25, 0.02, 0.75 ];
if ( !isdefined( var_3 ) )
var_3 = self getlightintensity();
var_6 = 0;
for (;;)
{
self setlightintensity( var_3 * ( 1 - var_0 * var_5[var_6] ) );
wait( var_4[var_6] * var_1 );
var_6 = var_6 + 1;
if ( var_6 == var_4.size )
var_6 = 0;
}
}
jittermove( var_0, var_1, var_2 )
{
if ( !isdefined( var_0 ) )
var_0 = 2.0;
var_3 = 1.0;
if ( !isdefined( var_1 ) )
var_1 = 0.25;
if ( !isdefined( var_2 ) )
var_2 = 0.1;
var_4 = self.origin;
for (;;)
{
var_5 = var_4 + common_scripts\utility::randomvectorrange( var_3, var_0 );
var_6 = randomfloatrange( var_2, var_1 );
self moveto( var_5, var_6 );
wait( var_6 );
self moveto( var_4, 0.1 );
wait 0.1;
}
}
rotatelights( var_0, var_1, var_2 )
{
var_3 = getentarray( var_1, "targetname" );
var_4 = getent( var_0, "targetname" );
var_4 thread rotateme( -360, var_2 );
foreach ( var_6 in var_3 )
var_6 thread maps\_utility::manual_linkto( var_4, var_6.origin - var_4.origin );
}
rotateme( var_0, var_1 )
{
for (;;)
{
switch ( var_1 )
{
case "yaw":
self rotateyaw( var_0, 1 );
wait 1;
break;
case "pitch":
self rotatepitch( var_0, 1 );
wait 1;
break;
case "roll":
self rotateroll( var_0, 1 );
wait 1;
break;
default:
wait 1;
break;
}
}
}
god_rays_from_world_location( var_0, var_1, var_2, var_3, var_4 )
{
if ( maps\_utility::is_gen4() )
{
if ( isdefined( var_1 ) )
common_scripts\utility::flag_wait( var_1 );
var_5 = 0;
var_6 = 0;
if ( isdefined( var_3 ) )
maps\_utility::vision_set_fog_changes( var_3, 5 );
var_7 = maps\_utility::create_sunflare_setting( "default" );
for (;;)
{
var_5 = atan( ( level.player.origin[2] - var_0[2] ) / sqrt( squared( level.player.origin[0] - var_0[0] ) + squared( level.player.origin[1] - var_0[1] ) ) );
if ( level.player.origin[0] < var_0[0] )
var_6 = atan( ( level.player.origin[1] - var_0[1] ) / ( level.player.origin[0] - var_0[0] ) );
else
var_6 = 180 + atan( ( level.player.origin[1] - var_0[1] ) / ( level.player.origin[0] - var_0[0] ) );
var_7.position = ( var_5, var_6, 0 );
maps\_art::sunflare_changes( "default", 0 );
wait 0.05;
if ( isdefined( var_2 ) )
{
if ( common_scripts\utility::flag( var_2 ) )
break;
}
}
if ( isdefined( var_4 ) )
{
maps\_utility::vision_set_fog_changes( var_4, 5 );
wait 5;
maps\_utility::vision_set_fog_changes( "", 1 );
}
}
}
set_forcesuppression( var_0 )
{
if ( var_0 )
self.forcesuppression = 1;
else
self.forcesuppression = 0;
}
push_player_impulse( var_0, var_1, var_2 )
{
var_3 = var_2;
var_0 = var_0 * var_1;
for ( var_4 = var_0; var_3 > 0.0; var_3 = var_3 - level.timestep )
{
var_5 = normalize_value( 0, var_2, var_3 );
var_0 = var_4 * var_5;
level.player pushplayervector( var_0 );
wait( level.timestep );
}
var_0 = ( 0, 0, 0 );
level.player pushplayervector( var_0 );
}
player_view_shake_blender( var_0, var_1, var_2 )
{
for ( var_3 = var_0; var_3 > 0; var_3 = var_3 - level.timestep )
{
var_4 = normalize_value( 0, var_0, var_3 );
var_5 = factor_value_min_max( var_2, var_1, var_4 );
earthquake( var_5, 0.2, level.player.origin, 100000.0 );
wait( level.timestep );
}
}
debug_pos_3d( var_0 )
{
self endon( "stop_print3d" );
self endon( "death" );
var_1 = "(.)";
if ( isdefined( var_0 ) )
var_1 = var_0;
for (;;)
wait 0.05;
}
ally_cqb_kill( var_0, var_1, var_2, var_3, var_4 )
{
level endon( "stop_ally_cqb_kill" );
if ( isdefined( var_4 ) )
level endon( var_4 );
maps\_utility::enable_cqbwalk();
while ( level._enemies[var_0].size == 0 )
wait 0.05;
var_5 = 192;
var_6 = maps\_utility::remove_dead_from_array( level._enemies[var_0] );
if ( var_6.size == 0 )
return;
var_6 = sortbydistance( var_6, self.origin );
if ( isdefined( var_1 ) )
var_5 = var_1;
if ( !isdefined( var_2 ) )
var_2 = var_6.size;
if ( var_2 > var_6.size )
var_2 = var_6.size;
for ( var_7 = 0; var_7 < var_2; var_7++ )
{
ally_cqb_kill_solo( var_6[var_7], var_5, var_3 );
wait 0.05;
}
}
ally_cqb_kill_solo( var_0, var_1, var_2 )
{
var_0 endon( "death" );
var_0 endon( "kill" );
while ( isalive( var_0 ) )
{
var_3 = 0;
var_4 = undefined;
var_4 = common_scripts\utility::spawn_tag_origin();
var_4.origin = var_0 gettagorigin( "j_head" );
var_4 linkto( var_0 );
if ( animscripts\utility::canseeandshootpoint( var_4.origin ) )
{
var_3 = 1;
maps\_utility::cqb_aim( var_4 );
wait 0.5;
}
if ( isdefined( var_2 ) && var_2 )
{
while ( !level.player maps\_utility::player_looking_at( var_0.origin ) )
wait 0.05;
}
var_5 = distancesquared( self.origin, var_0.origin );
if ( var_5 <= var_1 * var_1 )
{
if ( var_3 )
{
self shoot( 1000, var_4.origin );
var_0 maps\black_ice_vignette::vignette_kill();
break;
}
}
wait 0.05;
var_4 delete();
}
}
cover_left_idle( var_0 )
{
var_1 = self;
if ( isdefined( var_0 ) )
{
var_2 = getnode( var_0, "targetname" );
var_1 = common_scripts\utility::spawn_tag_origin();
var_1.origin = var_2.origin;
var_1.angles = vectortoangles( anglestoright( var_2.angles ) );
thread idle_cleanup( var_1 );
}
var_1 thread maps\_anim::anim_loop_solo( self, "cover_left_idle" );
}
idle_cleanup( var_0 )
{
self waittill( "stop_loop" );
var_0 notify( "stop_loop" );
var_0 delete();
}
waittill_trigger_activate_looking_at( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
var_7 = 0.5;
if ( isdefined( var_3 ) )
var_7 = var_3;
var_8 = 64;
if ( isdefined( var_2 ) )
var_8 = var_2;
var_9 = var_0;
if ( isdefined( var_4 ) )
{
var_9 = var_0 common_scripts\utility::spawn_tag_origin();
var_9 linkto( var_0, var_4, ( 0, 0, 0 ), ( 0, 0, 0 ) );
}
if ( !isdefined( var_5 ) )
var_5 = 5;
var_10 = var_1;
if ( !common_scripts\utility::flag_exist( var_10 ) )
common_scripts\utility::flag_init( var_10 );
var_11 = 0;
var_12 = 0;
for (;;)
{
if ( level.player ismeleeing() || level.player isthrowinggrenade() || !level.player isonground() || level.player getstance() == "prone" )
{
common_scripts\utility::flag_clear( var_10 );
var_12 = 0;
level.player enableweaponpickup();
}
else if ( level.player maps\_utility::player_looking_at( var_9.origin, var_7, 1 ) )
{
if ( isdefined( var_6 ) )
{
if ( common_scripts\utility::flag( var_6 ) )
{
if ( !common_scripts\utility::flag( var_10 ) )
var_11 = 1;
}
else
{
common_scripts\utility::flag_clear( var_10 );
var_12 = 0;
level.player enableweaponpickup();
}
}
else if ( distance( level.player geteye(), var_9.origin ) <= var_8 )
{
if ( !common_scripts\utility::flag( var_10 ) )
var_11 = 1;
}
else
{
common_scripts\utility::flag_clear( var_10 );
var_12 = 0;
level.player enableweaponpickup();
}
}
else
{
common_scripts\utility::flag_clear( var_10 );
var_12 = 0;
level.player enableweaponpickup();
}
if ( level.player usebuttonpressed() )
var_12++;
if ( common_scripts\utility::flag( var_10 ) && var_12 >= var_5 )
break;
if ( var_11 )
{
common_scripts\utility::flag_set( var_10 );
maps\_utility::display_hint_timeout( var_1 );
var_11 = 0;
level.player disableweaponpickup();
}
wait 0.05;
}
level.player enableweaponpickup();
common_scripts\utility::flag_clear( var_10 );
if ( isdefined( var_4 ) )
var_9 delete();
}
setup_tag_anim_rig( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_2 ) )
var_2 = 3;
var_4 = getent( var_0, "script_noteworthy" );
var_4.anim_node = common_scripts\utility::spawn_tag_origin();
var_4.anim_node.origin = var_4.origin;
var_4.anim_node.angles = var_4.angles;
var_4 maps\_utility::assign_animtree( var_1 );
var_0 = var_4.model;
var_5 = getnumparts( var_0 );
for ( var_6 = 0; var_6 < var_5; var_6++ )
{
var_7 = getpartname( var_0, var_6 );
if ( getsubstr( var_7, 0, 4 ) == "mdl_" )
{
var_8 = getsubstr( var_7, 4, var_7.size - var_2 );
var_9 = spawn( "script_model", var_4 gettagorigin( var_7 ) );
var_9 setmodel( var_8 );
var_9.angles = var_4 gettagangles( var_7 );
var_9 linkto( var_4, var_7 );
if ( isdefined( var_3 ) && var_3 )
{
var_9.coll = "coll_" + getsubstr( var_7, 4, var_7.size );
level.tag_anim_rig_models[level.tag_anim_rig_models.size] = var_9;
}
}
}
return var_4;
}
tag_anim_rig_init_and_flag_wait( var_0, var_1 )
{
if ( !common_scripts\utility::flag_exist( var_0 ) )
common_scripts\utility::flag_init( var_0 );
self.anim_node maps\_anim::anim_first_frame_solo( self, var_1 );
common_scripts\utility::flag_wait( var_0 );
self.anim_node maps\_anim::anim_single_solo( self, var_1 );
}
waittill_trigger( var_0 )
{
self waittill( "trigger" );
level notify( var_0 );
}
start_point_is_after( var_0, var_1 )
{
var_2 = undefined;
var_3 = undefined;
var_0 = tolower( var_0 );
var_4 = getarraykeys( level.start_arrays );
for ( var_5 = 0; var_5 < var_4.size; var_5++ )
{
if ( var_4[var_5] == var_0 )
var_2 = var_5;
if ( var_4[var_5] == level.start_point )
var_3 = var_5;
}
if ( isdefined( var_1 ) && var_1 )
{
if ( var_3 >= var_2 )
return 1;
}
else if ( var_3 > var_2 )
return 1;
return 0;
}
start_point_is_before( var_0, var_1 )
{
var_2 = undefined;
var_3 = undefined;
var_0 = tolower( var_0 );
var_4 = getarraykeys( level.start_arrays );
for ( var_5 = 0; var_5 < var_4.size; var_5++ )
{
if ( var_4[var_5] == var_0 )
var_2 = var_5;
if ( var_4[var_5] == level.start_point )
var_3 = var_5;
}
if ( isdefined( var_1 ) && var_1 )
{
if ( var_3 <= var_2 )
return 1;
}
else if ( var_3 < var_2 )
return 1;
return 0;
}
setup_player_for_animated_sequence( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
if ( !isdefined( var_0 ) )
var_0 = 1;
if ( var_0 )
{
if ( !isdefined( var_1 ) )
var_1 = 60;
}
if ( !isdefined( var_2 ) )
var_2 = level.player.origin;
if ( !isdefined( var_3 ) )
var_3 = level.player.angles;
if ( !isdefined( var_4 ) )
var_4 = 1;
var_7 = maps\_utility::spawn_anim_model( "player_rig", var_2 );
level.player_rig = var_7;
var_7.angles = var_3;
var_7.animname = "player_rig";
if ( isdefined( var_6 ) )
var_8 = maps\_utility::spawn_anim_model( var_6 );
else
var_8 = common_scripts\utility::spawn_tag_origin();
level.player_mover = var_8;
var_8.origin = var_2;
var_8.angles = var_3;
var_7 linkto( var_8 );
if ( var_0 )
level.player playerlinktodelta( var_7, "tag_player", 1, var_1, var_1, var_1, var_1, 1 );
if ( var_4 )
thread player_animated_sequence_restrictions( var_5 );
}
player_animated_sequence_restrictions( var_0 )
{
if ( isdefined( var_0 ) && var_0 )
level.player waittill( "notify_player_animated_sequence_restrictions" );
level.player.disablereload = 1;
level.player disableweapons();
level.player disableoffhandweapons();
level.player disableweaponswitch();
level.player allowcrouch( 0 );
level.player allowjump( 0 );
level.player allowmelee( 0 );
level.player allowprone( 0 );
level.player allowsprint( 0 );
}
player_animated_sequence_cleanup()
{
if ( !isdefined( level.player.early_weapon_enabled ) || !level.player.early_weapon_enabled )
{
level.player.early_weapon_enabled = undefined;
level.player.disablereload = 0;
level.player enableweapons();
level.player enableoffhandweapons();
level.player enableweaponswitch();
}
level.player allowcrouch( 1 );
level.player allowjump( 1 );
level.player allowmelee( 1 );
level.player allowprone( 1 );
level.player allowsprint( 1 );
level.player unlink();
if ( isdefined( level.player_mover ) )
level.player_mover delete();
if ( isdefined( level.player_rig ) )
level.player_rig delete();
}
get_rumble_ent_linked( var_0, var_1 )
{
if ( maps\_utility::is_coop() )
{
}
var_2 = maps\_utility::get_player_from_self();
if ( !isdefined( var_1 ) )
var_1 = "steady_rumble";
var_3 = spawn( "script_origin", var_0.origin );
var_3.intensity = 1;
var_3 thread update_rumble_intensity_linked( var_2, var_1, var_0 );
return var_3;
}
update_rumble_intensity_linked( var_0, var_1, var_2 )
{
self endon( "death" );
var_3 = 0;
for (;;)
{
if ( self.intensity > 0.0001 && gettime() > 300 )
{
if ( !var_3 )
{
self playrumblelooponentity( var_1 );
var_3 = 1;
}
}
else if ( var_3 )
{
self stoprumble( var_1 );
var_3 = 0;
}
var_4 = 1 - self.intensity;
var_4 = var_4 * 1000;
self.origin = var_2.origin + ( 0, 0, var_4 );
wait 0.05;
}
}
ally_catchup( var_0, var_1, var_2 )
{
common_scripts\utility::array_thread( var_0, ::ally_catchup_solo, var_1, var_2, self );
}
ally_catchup_solo( var_0, var_1, var_2 )
{
self notify( "notify_ally_catchup_stop" );
self endon( "notify_ally_catchup_stop" );
var_3 = 400;
var_4 = 600;
if ( isdefined( var_0 ) )
var_3 = var_0;
if ( isdefined( var_1 ) )
var_4 = var_1;
var_5 = getallnodes();
if ( isdefined( var_2 ) && isdefined( var_2.target ) )
{
var_6 = getent( var_2.target, "targetname" );
var_7 = var_5;
var_5 = [];
foreach ( var_9 in var_5 )
{
if ( var_9.type == "Path" && var_9 istouching( var_6 ) )
var_5 = common_scripts\utility::array_add( var_5, var_9 );
}
}
while ( distance( self.origin, level.player.origin ) > var_3 )
{
if ( !level.player maps\_utility::player_looking_at( self.origin, 0.1, 1 ) )
{
foreach ( var_9 in var_5 )
{
if ( issubstr( var_9.type, "Path" ) && distance( var_9.origin, level.player.origin ) <= var_4 && distance( var_9.origin, level.player.origin ) >= var_3 && abs( var_9.origin[2] - level.player.origin[2] < 10 ) && !level.player maps\_utility::player_looking_at( var_9.origin, 0.1, 1 ) )
{
self forceteleport( var_9.origin, vectortoangles( level.player.origin - var_9.origin ) );
break;
}
}
}
wait 0.05;
}
}
deathfunc_grenade_drop()
{
maps\_spawner::waittilldeathorpaindeath();
if ( !isdefined( self ) )
return;
if ( self.grenadeammo > 0 )
return;
if ( isdefined( self.nodrop ) )
return;
level.nextgrenadedrop--;
if ( level.nextgrenadedrop > 0 )
return;
level.nextgrenadedrop = 2 + randomint( 2 );
var_0 = 25;
var_1 = 12;
var_2 = self.origin + ( randomint( var_0 ) - var_1, randomint( var_0 ) - var_1, 2 ) + ( 0, 0, 42 );
var_3 = ( 0, randomint( 360 ), 90 );
thread maps\_spawner::spawn_grenade_bag( var_2, var_3, self.team );
}
waittill_notify_flag_set( var_0, var_1 )
{
if ( !common_scripts\utility::flag_exist( var_1 ) )
common_scripts\utility::flag_init( var_1 );
self waittill( var_0 );
common_scripts\utility::flag_set( var_1 );
}
flag_wait_func( var_0, var_1, var_2 )
{
common_scripts\utility::flag_wait( var_0 );
if ( isdefined( var_2 ) )
self [[ var_1 ]]( var_2 );
else
self [[ var_1 ]]();
}
waittill_notify_func( var_0, var_1, var_2, var_3 )
{
self waittill( var_0 );
if ( isdefined( var_3 ) )
self [[ var_1 ]]( var_2, var_3 );
else if ( isdefined( var_2 ) )
self [[ var_1 ]]( var_2 );
else
self [[ var_1 ]]();
}
black_ice_hide_hud()
{
level.black_ice_hud = 1;
level.black_ice_hud_ammocounterhide = getdvarint( "ammoCounterHide" );
level.black_ice_hud_actionslotshide = getdvarint( "actionSlotsHide" );
level.black_ice_hud_showstance = getdvarint( "hud_showStance" );
level.black_ice_hud_compass = getdvarint( "compass" );
setsaveddvar( "ammoCounterHide", 1 );
setsaveddvar( "actionSlotsHide", 1 );
setsaveddvar( "hud_showStance", 0 );
setsaveddvar( "compass", 0 );
}
black_ice_show_previous_hud()
{
if ( !isdefined( level.black_ice_hud ) )
return;
setsaveddvar( "ammoCounterHide", level.black_ice_hud_ammocounterhide );
setsaveddvar( "actionSlotsHide", level.black_ice_hud_actionslotshide );
setsaveddvar( "hud_showStance", level.black_ice_hud_showstance );
setsaveddvar( "compass", level.black_ice_hud_compass );
level.black_ice_hud = undefined;
level.black_ice_hud_ammocounterhide = undefined;
level.black_ice_hud_actionslotshide = undefined;
level.black_ice_hud_showstance = undefined;
level.black_ice_hud_compass = undefined;
}