434 lines
12 KiB
Plaintext
434 lines
12 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
ally_advance_watcher( var_0, var_1, var_2, var_3, var_4, var_5 )
|
|
{
|
|
var_6 = [];
|
|
|
|
if ( isarray( self ) )
|
|
var_6 = self;
|
|
else
|
|
var_6[0] = self;
|
|
|
|
level notify( var_0 + "kill" );
|
|
level endon( var_0 + "kill" );
|
|
|
|
if ( !common_scripts\utility::flag_exist( "flag_allies_moving" ) )
|
|
common_scripts\utility::flag_init( "flag_allies_moving" );
|
|
|
|
if ( !common_scripts\utility::flag_exist( "flag_allies_player_near" ) )
|
|
common_scripts\utility::flag_init( "flag_allies_player_near" );
|
|
|
|
var_7 = getent( var_0, "script_noteworthy" );
|
|
|
|
if ( !isdefined( var_7 ) )
|
|
var_7 = getent( var_0, "targetname" );
|
|
|
|
var_8 = 1;
|
|
|
|
if ( isdefined( var_5 ) && var_5 )
|
|
var_8 = 0;
|
|
|
|
if ( isdefined( var_2 ) )
|
|
{
|
|
|
|
}
|
|
|
|
var_9 = [];
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( var_7.script_parameters ) )
|
|
var_7._delay = float( var_7.script_parameters );
|
|
else
|
|
var_7._delay = 0;
|
|
|
|
if ( isdefined( var_7.script_namenumber ) )
|
|
var_7._enemy_num = int( var_7.script_namenumber );
|
|
|
|
var_7._linked_triggers = [];
|
|
var_9 = common_scripts\utility::array_add( var_9, var_7 );
|
|
|
|
if ( isdefined( var_2 ) )
|
|
var_7.flag_end = var_2;
|
|
|
|
if ( isdefined( var_7.target ) )
|
|
{
|
|
var_10 = getentarray( var_7.target, "targetname" );
|
|
var_11 = undefined;
|
|
|
|
foreach ( var_13 in var_10 )
|
|
{
|
|
if ( var_13.classname == "trigger_multiple_friendly" && isdefined( var_11 ) )
|
|
continue;
|
|
|
|
if ( var_13.classname == "trigger_multiple_friendly" )
|
|
{
|
|
var_11 = var_13;
|
|
continue;
|
|
}
|
|
|
|
if ( issubstr( var_13.classname, "trigger" ) )
|
|
{
|
|
var_7._linked_triggers = common_scripts\utility::array_add( var_7._linked_triggers, var_13 );
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if ( !isdefined( var_11 ) )
|
|
break;
|
|
|
|
var_7 = var_11;
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
if ( !isdefined( level._ally_trigs ) )
|
|
level._ally_trigs = [];
|
|
|
|
level._ally_trigs[var_0] = var_9;
|
|
common_scripts\utility::flag_set( "flag_allies_player_near" );
|
|
common_scripts\utility::flag_init( var_0 );
|
|
|
|
for ( var_15 = 0; var_15 < var_9.size; var_15++ )
|
|
{
|
|
var_7 = var_9[var_15];
|
|
var_7._index = var_15;
|
|
|
|
if ( !isdefined( var_7.flag_end ) || isdefined( var_7.flag_end ) && !common_scripts\utility::flag( var_7.flag_end ) )
|
|
var_6 ally_advance( var_7, var_1 );
|
|
|
|
if ( var_15 == 0 )
|
|
common_scripts\utility::flag_set( var_0 );
|
|
|
|
if ( var_8 || isdefined( var_7.flag_end ) && common_scripts\utility::flag( var_7.flag_end ) )
|
|
{
|
|
if ( isdefined( var_7._linked_triggers ) )
|
|
{
|
|
foreach ( var_17 in var_7._linked_triggers )
|
|
{
|
|
if ( isdefined( var_17 ) && !issubstr( var_17.classname, "friendly" ) )
|
|
var_17 delete();
|
|
}
|
|
}
|
|
|
|
var_7 delete();
|
|
}
|
|
}
|
|
|
|
if ( isdefined( var_3 ) )
|
|
{
|
|
if ( isdefined( var_4 ) )
|
|
self [[ var_3 ]]( var_4 );
|
|
else
|
|
self [[ var_3 ]]();
|
|
}
|
|
}
|
|
|
|
ally_advance( var_0, var_1 )
|
|
{
|
|
if ( isdefined( var_0.flag_end ) )
|
|
level endon( var_0.flag_end );
|
|
|
|
var_0 thread waittill_trig_or_time_out();
|
|
|
|
if ( isdefined( var_1 ) && isdefined( var_0._enemy_num ) )
|
|
var_0 thread waittill_enemy_num_remaining( var_1 );
|
|
|
|
var_0 waittill( "trigger" );
|
|
|
|
if ( var_0._linked_triggers.size > 0 )
|
|
{
|
|
foreach ( var_3 in var_0._linked_triggers )
|
|
var_3 notify( "trigger" );
|
|
}
|
|
|
|
var_0 thread waittill_allies_at_goal( self );
|
|
wait 0.05;
|
|
}
|
|
|
|
waittill_trig_or_time_out()
|
|
{
|
|
if ( isdefined( self.flag_end ) )
|
|
level endon( self.flag_end );
|
|
|
|
waittill_time_out();
|
|
common_scripts\utility::flag_wait( "flag_allies_player_near" );
|
|
self notify( "trigger" );
|
|
}
|
|
|
|
waittill_time_out()
|
|
{
|
|
self endon( "trigger" );
|
|
|
|
if ( isdefined( self.flag_end ) )
|
|
level endon( self.flag_end );
|
|
|
|
common_scripts\utility::flag_wait( "flag_allies_player_near" );
|
|
|
|
if ( self._delay == 0 )
|
|
self waittill( "trigger" );
|
|
else
|
|
wait( maps\skyway_util::kt_time( self._delay ) );
|
|
}
|
|
|
|
waittill_enemy_num_remaining( var_0 )
|
|
{
|
|
self endon( "trigger" );
|
|
|
|
if ( isdefined( self.flag_end ) )
|
|
level endon( self.flag_end );
|
|
|
|
common_scripts\utility::flag_wait( "flag_allies_player_near" );
|
|
var_1 = [];
|
|
|
|
if ( isstring( var_0 ) )
|
|
{
|
|
if ( isdefined( level._enemies[var_0] ) )
|
|
var_1 = level._enemies[var_0];
|
|
}
|
|
else
|
|
var_1 = var_0;
|
|
|
|
var_2 = abs( self._enemy_num );
|
|
var_3 = undefined;
|
|
var_4 = 0;
|
|
|
|
if ( var_2 != self._enemy_num )
|
|
var_3 = level.player.stats["kills"];
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( var_3 ) )
|
|
{
|
|
if ( level.player.stats["kills"] - var_3 >= var_2 )
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
var_1 = maps\_utility::remove_dead_from_array( var_1 );
|
|
|
|
if ( var_1.size <= var_2 )
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
self notify( "trigger" );
|
|
}
|
|
|
|
waittill_allies_at_goal( var_0 )
|
|
{
|
|
level notify( "notify_kill_allies_at_goal" );
|
|
level endon( "notify_kill_allies_at_goal" );
|
|
|
|
if ( isdefined( self.flag_end ) )
|
|
level endon( self.flag_end );
|
|
|
|
common_scripts\utility::flag_set( "flag_allies_moving" );
|
|
common_scripts\utility::flag_clear( "flag_allies_player_near" );
|
|
var_1 = self._index;
|
|
var_2 = spawnstruct();
|
|
var_2.threads = 0;
|
|
var_3 = [];
|
|
|
|
if ( isarray( var_0 ) )
|
|
var_3 = var_0;
|
|
else
|
|
var_3[0] = var_0;
|
|
|
|
foreach ( var_5 in var_3 )
|
|
{
|
|
var_5._old_goalradius = var_5.goalradius;
|
|
var_5.goalradius = 16;
|
|
var_5 thread common_scripts\utility::waittill_string( "goal", var_2 );
|
|
var_2.threads++;
|
|
}
|
|
|
|
while ( var_2.threads )
|
|
{
|
|
var_2 waittill( "returned" );
|
|
var_2.threads--;
|
|
}
|
|
|
|
var_2 notify( "die" );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
var_5.goalradius = var_5._old_goalradius;
|
|
|
|
common_scripts\utility::flag_clear( "flag_allies_moving" );
|
|
var_3 waittill_proximity();
|
|
common_scripts\utility::flag_set( "flag_allies_player_near" );
|
|
}
|
|
|
|
waittill_proximity()
|
|
{
|
|
var_0 = 250;
|
|
|
|
if ( isdefined( level._ally_dist ) )
|
|
var_0 = level._ally_dist;
|
|
|
|
var_1 = var_0 * var_0;
|
|
|
|
for (;;)
|
|
{
|
|
foreach ( var_3 in self )
|
|
{
|
|
var_4 = distancesquared( var_3.origin, level.player.origin );
|
|
|
|
if ( var_4 <= var_1 )
|
|
return;
|
|
}
|
|
|
|
wait 0.5;
|
|
}
|
|
}
|
|
|
|
ally_killer_tracker_proc()
|
|
{
|
|
self endon( "death" );
|
|
self notify( "stop_killer_tracker" );
|
|
self endon( "stop_killer_tracker" );
|
|
level.killer_tracker = 0;
|
|
self.baseaccuracy_old = self.baseaccuracy;
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "flag_killer_tracker" );
|
|
|
|
while ( common_scripts\utility::flag( "flag_killer_tracker" ) )
|
|
{
|
|
level common_scripts\utility::waittill_any( "killer_tracker_update", "flag_killer_tracker" );
|
|
var_0 = clamp( level.killer_tracker * 0.15, 0.0, 0.75 );
|
|
self.baseaccuracy = 1 - var_0;
|
|
}
|
|
|
|
self.baseaccuracy = self.baseaccuracy_old;
|
|
}
|
|
}
|
|
|
|
add_to_group( var_0 )
|
|
{
|
|
if ( !isdefined( level._enemies ) )
|
|
level._enemies = [];
|
|
|
|
if ( !isdefined( level._enemies[var_0] ) )
|
|
level._enemies[var_0] = [];
|
|
|
|
level._enemies[var_0] = common_scripts\utility::array_add( level._enemies[var_0], self );
|
|
self._current_index = var_0;
|
|
}
|
|
|
|
opfor_killer_tracker()
|
|
{
|
|
self waittill( "death", var_0 );
|
|
|
|
if ( isdefined( var_0 ) && isplayer( var_0 ) )
|
|
level.killer_tracker = 0;
|
|
else
|
|
level.killer_tracker = level.killer_tracker + 1;
|
|
|
|
level notify( "killer_tracker_update" );
|
|
}
|
|
|
|
ignore_everything()
|
|
{
|
|
if ( !isdefined( self ) || !isai( self ) )
|
|
return;
|
|
|
|
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( self ) || !isai( self ) )
|
|
return;
|
|
|
|
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._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;
|
|
}
|
|
|
|
ignore_until_goal( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
ignore_everything();
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 0.05;
|
|
|
|
if ( isdefined( self.script_parameters ) && issubstr( self.script_parameters, "no_ignoreme" ) )
|
|
maps\_utility::delaythread( var_0, maps\_utility::set_ignoreme, 0 );
|
|
|
|
self waittill( "goal" );
|
|
unignore_everything();
|
|
}
|