2009 lines
49 KiB
Plaintext
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;
|
|
}
|