752 lines
19 KiB
Plaintext
752 lines
19 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 = [];
|
|
|
|
if ( isarray( self ) )
|
|
var_4 = self;
|
|
else
|
|
var_4[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_5 = getent( var_0, "script_noteworthy" );
|
|
|
|
if ( !isdefined( var_5 ) )
|
|
var_5 = getent( var_0, "targetname" );
|
|
|
|
var_6 = 1;
|
|
|
|
if ( isdefined( var_3 ) && var_3 )
|
|
var_6 = 0;
|
|
|
|
if ( isdefined( var_2 ) )
|
|
{
|
|
|
|
}
|
|
|
|
var_7 = [];
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( var_5.script_parameters ) )
|
|
var_5._delay = float( var_5.script_parameters );
|
|
else
|
|
var_5._delay = 0;
|
|
|
|
if ( isdefined( var_5.script_namenumber ) )
|
|
var_5._enemy_num = int( var_5.script_namenumber );
|
|
|
|
var_5._linked_triggers = [];
|
|
var_7 = common_scripts\utility::array_add( var_7, var_5 );
|
|
|
|
if ( isdefined( var_2 ) )
|
|
var_5.flag_end = var_2;
|
|
|
|
if ( isdefined( var_5.target ) )
|
|
{
|
|
var_8 = getentarray( var_5.target, "targetname" );
|
|
var_9 = undefined;
|
|
|
|
foreach ( var_11 in var_8 )
|
|
{
|
|
if ( var_11.classname == "trigger_multiple_friendly" && isdefined( var_9 ) )
|
|
continue;
|
|
|
|
if ( var_11.classname == "trigger_multiple_friendly" )
|
|
{
|
|
var_9 = var_11;
|
|
continue;
|
|
}
|
|
|
|
if ( issubstr( var_11.classname, "trigger" ) )
|
|
{
|
|
var_5._linked_triggers = common_scripts\utility::array_add( var_5._linked_triggers, var_11 );
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if ( !isdefined( var_9 ) )
|
|
break;
|
|
|
|
var_5 = var_9;
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
if ( !isdefined( level._ally_trigs ) )
|
|
level._ally_trigs = [];
|
|
|
|
level._ally_trigs[var_0] = var_7;
|
|
common_scripts\utility::flag_set( "flag_allies_player_near" );
|
|
common_scripts\utility::flag_init( var_0 );
|
|
|
|
for ( var_13 = 0; var_13 < var_7.size; var_13++ )
|
|
{
|
|
var_5 = var_7[var_13];
|
|
var_5._index = var_13;
|
|
|
|
if ( !isdefined( var_5.flag_end ) || isdefined( var_5.flag_end ) && !common_scripts\utility::flag( var_5.flag_end ) )
|
|
var_4 ally_advance( var_5, var_1 );
|
|
|
|
if ( var_13 == 0 )
|
|
common_scripts\utility::flag_set( var_0 );
|
|
|
|
if ( var_6 || isdefined( var_5.flag_end ) && common_scripts\utility::flag( var_5.flag_end ) )
|
|
{
|
|
if ( isdefined( var_5._linked_triggers ) )
|
|
{
|
|
foreach ( var_15 in var_5._linked_triggers )
|
|
{
|
|
if ( isdefined( var_15 ) && !issubstr( var_15.classname, "friendly" ) )
|
|
var_15 delete();
|
|
}
|
|
}
|
|
|
|
var_5 delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
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( 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 = 300;
|
|
|
|
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;
|
|
}
|
|
}
|
|
|
|
add_to_group( var_0, var_1 )
|
|
{
|
|
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;
|
|
|
|
if ( !isdefined( self._current_goal_volume ) )
|
|
{
|
|
self notify( "stop_going_to_node" );
|
|
|
|
if ( isdefined( var_1 ) && !isstring( var_1 ) && !var_1 )
|
|
return;
|
|
else if ( isstring( var_1 ) )
|
|
thread go_to_goal_vol( var_1 );
|
|
else
|
|
{
|
|
var_2 = self getgoalvolume();
|
|
|
|
if ( isdefined( var_2 ) )
|
|
thread go_to_goal_vol( var_2 );
|
|
else if ( !isdefined( self.target ) && isdefined( level._retreat_current_volumes ) && isdefined( level._retreat_current_volumes[var_0] ) && level._retreat_current_volumes[var_0].size > 0 )
|
|
thread go_to_goal_vol();
|
|
}
|
|
}
|
|
}
|
|
|
|
check_enemy_index( var_0 )
|
|
{
|
|
|
|
}
|
|
|
|
retreat_watcher( var_0, var_1, var_2, var_3 )
|
|
{
|
|
check_vol_index( var_2 );
|
|
level notify( var_0 + "kill" );
|
|
level endon( var_0 + "kill" );
|
|
|
|
if ( !isdefined( level._retreat_volumes_list ) )
|
|
level._retreat_volumes_list = [];
|
|
|
|
if ( !isdefined( level._retreat_volumes_list[var_1] ) )
|
|
{
|
|
level._retreat_volumes_list[var_1] = [];
|
|
level._retreat_volumes_list[var_1] = build_vol_list( var_2 );
|
|
}
|
|
|
|
if ( !isdefined( level._retreat_current_volumes ) )
|
|
level._retreat_current_volumes = [];
|
|
|
|
if ( !isdefined( level._retreat_current_volumes[var_1] ) )
|
|
level._retreat_current_volumes[var_1] = var_2;
|
|
|
|
var_4 = getentarray( var_0, "script_noteworthy" );
|
|
|
|
if ( var_4.size == 0 )
|
|
var_4 = getentarray( var_0, "targetname" );
|
|
|
|
level._retreat_trigs[var_0] = var_4;
|
|
common_scripts\utility::array_thread( var_4, ::trigger_wait_retreat, var_1, var_3 );
|
|
}
|
|
|
|
trigger_wait_retreat( var_0, var_1 )
|
|
{
|
|
level endon( "notify_stop_retreat_all" );
|
|
self waittill( "trigger" );
|
|
var_2 = [];
|
|
|
|
if ( isarray( var_0 ) )
|
|
var_2 = var_0;
|
|
else if ( isstring( var_0 ) )
|
|
var_2[0] = var_0;
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
foreach ( var_4 in var_2 )
|
|
enemy_retreat( var_0, undefined, var_1 );
|
|
|
|
self delete();
|
|
}
|
|
|
|
enemy_retreat( var_0, var_1, var_2 )
|
|
{
|
|
check_enemy_index( var_0 );
|
|
level notify( "notify_kill_retreat" + var_0 );
|
|
level endon( "notify_kill_retreat" + var_0 );
|
|
var_3 = maps\_utility::remove_dead_from_array( level._enemies[var_0] );
|
|
var_3 = sortbydistance( var_3, level.player.origin );
|
|
var_4 = 0.05;
|
|
|
|
if ( isdefined( var_2 ) && var_2 > var_4 )
|
|
var_4 = var_2;
|
|
|
|
if ( level._retreat_volumes_list[var_0].size > 0 )
|
|
{
|
|
level._retreat_current_volumes[var_0] = level._retreat_volumes_list[var_0][0];
|
|
level._retreat_volumes_list[var_0] = maps\_utility::array_remove_index( level._retreat_volumes_list[var_0], 0 );
|
|
}
|
|
|
|
for ( var_5 = var_3.size - 1; var_5 >= 0; var_5-- )
|
|
{
|
|
var_3[var_5] thread go_to_goal_vol( var_1, var_4 );
|
|
var_4 = int( var_4 - var_4 / var_3.size );
|
|
}
|
|
}
|
|
|
|
go_to_goal_vol( var_0, var_1 )
|
|
{
|
|
if ( self._current_index == "seek" )
|
|
return 0;
|
|
|
|
self notify( "stop_go_to_goal_vol" );
|
|
wait 0.05;
|
|
self endon( "death" );
|
|
self endon( "stop_go_to_goal_vol" );
|
|
var_2 = choose_goal_vol( var_0 );
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
return 0;
|
|
|
|
if ( isstring( var_2 ) && var_2 == "seek" )
|
|
{
|
|
self notify( "notify_stop_retreat" );
|
|
self._current_goal_volume = undefined;
|
|
self cleargoalvolume();
|
|
|
|
if ( isdefined( self._current_index ) )
|
|
{
|
|
level._enemies[self._current_index] = common_scripts\utility::array_remove( level._enemies[self._current_index], self );
|
|
add_to_group( "seek", 0 );
|
|
self._current_index = "seek";
|
|
}
|
|
|
|
thread maps\_utility::player_seek_enable();
|
|
}
|
|
else
|
|
{
|
|
var_3 = 0.05;
|
|
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
if ( var_1 >= var_3 )
|
|
wait( randomfloatrange( 0, var_1 ) );
|
|
}
|
|
else
|
|
wait( randomfloatrange( 0, var_3 ) );
|
|
|
|
if ( isdefined( self._current_index ) && isdefined( level._retreat_current_volumes ) && isdefined( level._retreat_current_volumes[self._current_index] ) && !current_vol_acceptable() )
|
|
add_to_standby();
|
|
else
|
|
self._retreat_standby = undefined;
|
|
|
|
maps\_utility::set_fixednode_false();
|
|
self._current_goal_volume = var_2;
|
|
self setgoalvolumeauto( var_2 );
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
choose_goal_vol( var_0 )
|
|
{
|
|
var_1 = undefined;
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_1 = choose_goal_vol_chain( var_0 );
|
|
else if ( isdefined( level._retreat_final ) )
|
|
var_1 = choose_goal_vol_chain( level._retreat_final );
|
|
else if ( isdefined( self._current_goal_volume ) )
|
|
{
|
|
if ( current_vol_acceptable() )
|
|
return;
|
|
|
|
if ( isdefined( self._current_goal_volume._target_vols ) && self._current_goal_volume._target_vols.size > 0 )
|
|
{
|
|
var_2 = sortbydistance( self._current_goal_volume._target_vols, self.origin );
|
|
|
|
foreach ( var_4 in var_2 )
|
|
{
|
|
var_1 = choose_goal_vol_chain( var_4 );
|
|
|
|
if ( isdefined( var_1 ) )
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if ( !isdefined( self._current_index ) )
|
|
{
|
|
foreach ( var_7 in level._vols )
|
|
{
|
|
foreach ( var_9 in var_7 )
|
|
{
|
|
if ( self istouching( var_9 ) )
|
|
var_1 = choose_goal_vol_chain( var_9 );
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
{
|
|
if ( isdefined( self._current_index ) && isdefined( level._retreat_current_volumes ) && isdefined( level._retreat_current_volumes[self._current_index] ) )
|
|
var_1 = choose_goal_vol_chain( level._retreat_current_volumes[self._current_index] );
|
|
}
|
|
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
if ( isdefined( level._retreat_final ) )
|
|
{
|
|
thread ignore_to_goal();
|
|
var_12 = [ self ];
|
|
thread maps\_utility::ai_delete_when_out_of_sight( var_12, 256 );
|
|
level notify( "notify_stop_retreat_all" );
|
|
}
|
|
|
|
if ( isdefined( self._current_goal_volume ) && var_1 == self._current_goal_volume )
|
|
return;
|
|
|
|
update_vol_node_count( var_1 );
|
|
return var_1;
|
|
}
|
|
|
|
if ( isdefined( self._retreat_standby ) && self._retreat_standby )
|
|
add_to_standby();
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
current_vol_acceptable()
|
|
{
|
|
if ( isdefined( self._current_index ) )
|
|
{
|
|
if ( isdefined( level._retreat_current_volumes ) && isdefined( level._retreat_current_volumes[self._current_index] ) && level._retreat_current_volumes[self._current_index].size > 0 )
|
|
{
|
|
if ( self._current_goal_volume.script_noteworthy == level._retreat_current_volumes[self._current_index] )
|
|
return 1;
|
|
}
|
|
|
|
if ( isdefined( level._retreat_volumes_list[self._current_index] ) )
|
|
{
|
|
foreach ( var_1 in level._retreat_volumes_list[self._current_index] )
|
|
{
|
|
if ( self._current_goal_volume.script_noteworthy == var_1 )
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
choose_goal_vol_chain( var_0 )
|
|
{
|
|
var_1 = [];
|
|
|
|
if ( !isstring( var_0 ) )
|
|
{
|
|
var_2 = var_0;
|
|
|
|
if ( isdefined( var_2._num_ai ) && isdefined( var_2._max_ai ) )
|
|
{
|
|
if ( var_2._num_ai < var_2._max_ai )
|
|
return var_2;
|
|
}
|
|
|
|
var_1[0] = var_2;
|
|
}
|
|
else
|
|
{
|
|
check_vol_index( var_0 );
|
|
var_1 = level._vols[var_0];
|
|
var_1 = sortbydistance( var_1, self.origin );
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
if ( var_4._num_ai < var_4._max_ai )
|
|
return var_4;
|
|
}
|
|
}
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
if ( isdefined( var_4._target_vols ) && var_4._target_vols.size > 0 )
|
|
{
|
|
var_1 = sortbydistance( var_4._target_vols, self.origin );
|
|
|
|
foreach ( var_8 in var_1 )
|
|
{
|
|
var_2 = choose_goal_vol_chain( var_8 );
|
|
|
|
if ( isdefined( var_2 ) )
|
|
return var_2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
update_vol_node_count( var_0 )
|
|
{
|
|
if ( isdefined( self._current_goal_volume ) )
|
|
self._current_goal_volume._num_ai--;
|
|
|
|
self._current_goal_volume = var_0;
|
|
var_0._num_ai++;
|
|
thread deathfunc_vol_num_decrement( var_0 );
|
|
}
|
|
|
|
deathfunc_vol_num_decrement( var_0 )
|
|
{
|
|
self notify( "notify_new_vol" );
|
|
self endon( "notify_new_vol" );
|
|
common_scripts\utility::waittill_either( "death", "notify_stop_retreat" );
|
|
var_0._num_ai--;
|
|
}
|
|
|
|
add_to_standby()
|
|
{
|
|
self._retreat_standby = 1;
|
|
|
|
if ( !isdefined( level._retreat_standby ) )
|
|
level._retreat_standby = [];
|
|
|
|
if ( !isdefined( level._retreat_standby[self._current_index] ) )
|
|
level._retreat_standby[self._current_index] = [];
|
|
|
|
level._retreat_standby[self._current_index] = common_scripts\utility::array_add( level._retreat_standby[self._current_index], self );
|
|
thread standby_watcher( self._current_index );
|
|
}
|
|
|
|
standby_watcher( var_0 )
|
|
{
|
|
level notify( "notify_stop_standby_watcher_" + var_0 );
|
|
level endon( "notify_stop_standby_watcher_" + var_0 );
|
|
level endon( "notify_stop_retreat_all" );
|
|
|
|
for (;;)
|
|
{
|
|
wait 3;
|
|
var_1 = maps\_utility::remove_dead_from_array( level._retreat_standby[var_0] );
|
|
level._retreat_standby[var_0] = [];
|
|
|
|
if ( var_1.size == 0 )
|
|
break;
|
|
|
|
if ( isdefined( level._retreat_current_volumes[var_0] ) )
|
|
{
|
|
foreach ( var_3 in var_1 )
|
|
var_3 thread go_to_goal_vol( level._retreat_current_volumes[var_0] );
|
|
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
setup_retreat_vols()
|
|
{
|
|
var_0 = getallnodes();
|
|
var_1 = getentarray( "info_volume", "classname" );
|
|
var_2 = [];
|
|
var_3 = common_scripts\utility::spawn_tag_origin();
|
|
|
|
foreach ( var_5 in var_1 )
|
|
{
|
|
if ( isdefined( var_5.script_noteworthy ) )
|
|
{
|
|
if ( isdefined( var_5.script_parameters ) )
|
|
var_5._max_ai = int( var_5.script_parameters );
|
|
else
|
|
{
|
|
if ( !isdefined( var_5.nodes ) )
|
|
var_5.nodes = [];
|
|
|
|
foreach ( var_7 in var_0 )
|
|
{
|
|
var_3.origin = var_7.origin;
|
|
|
|
if ( var_3 istouching( var_5 ) )
|
|
{
|
|
if ( issubstr( var_7.type, "Cover" ) || issubstr( var_7.type, "Conceal" ) || issubstr( var_7.type, "Exposed" ) )
|
|
{
|
|
if ( isdefined( var_7.script_parameters ) && var_7.script_parameters == "no_axis" )
|
|
continue;
|
|
|
|
var_5.nodes = common_scripts\utility::array_add( var_5.nodes, var_7 );
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( !isdefined( var_5.nodes ) )
|
|
iprintln( "Warning - Volume '" + var_5.script_noteworthy + "' has no cover nodes!" );
|
|
|
|
var_5._max_ai = var_5.nodes.size;
|
|
}
|
|
|
|
if ( !isdefined( var_2[var_5.script_noteworthy] ) )
|
|
var_2[var_5.script_noteworthy] = [];
|
|
|
|
var_5._target_vols = [];
|
|
|
|
if ( isdefined( var_5.target ) )
|
|
{
|
|
var_9 = getentarray( var_5.target, "targetname" );
|
|
|
|
foreach ( var_11 in var_9 )
|
|
var_5._target_vols = common_scripts\utility::array_add( var_5._target_vols, var_11 );
|
|
}
|
|
|
|
var_2[var_5.script_noteworthy] = common_scripts\utility::array_add( var_2[var_5.script_noteworthy], var_5 );
|
|
var_5._num_ai = 0;
|
|
}
|
|
}
|
|
|
|
var_3 delete();
|
|
level._vols = var_2;
|
|
}
|
|
|
|
check_vol_index( var_0 )
|
|
{
|
|
|
|
}
|
|
|
|
build_vol_list( var_0 )
|
|
{
|
|
check_vol_index( var_0 );
|
|
var_1 = [];
|
|
|
|
for (;;)
|
|
{
|
|
var_2 = undefined;
|
|
|
|
foreach ( var_4 in level._vols[var_0] )
|
|
{
|
|
if ( isdefined( var_4._target_vols ) && var_4._target_vols.size > 0 )
|
|
var_2 = var_4._target_vols[0].script_noteworthy;
|
|
}
|
|
|
|
if ( isdefined( var_2 ) )
|
|
var_1 = common_scripts\utility::array_add( var_1, var_2 );
|
|
else
|
|
break;
|
|
|
|
var_0 = var_2;
|
|
var_2 = undefined;
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
ignore_to_goal( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self.old_goalradius = self.goalradius;
|
|
self.goalradius = 16;
|
|
self.ignoreall = 1;
|
|
self waittill( "goal" );
|
|
self.ignoreall = 0;
|
|
self.goalradius = self.old_goalradius;
|
|
|
|
if ( isdefined( var_0 ) )
|
|
self [[ var_0 ]]();
|
|
}
|