1246 lines
39 KiB
Plaintext
1246 lines
39 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
nonlinear_progression_init()
|
|
{
|
|
level.num_conduit_completed = 0;
|
|
level.num_transition_completed = 0;
|
|
level.allow_backtrack_encounters = 1;
|
|
level.force_blocker_order = 0;
|
|
level.drill_detonate_override = ::encounter_complete;
|
|
level.hotjoin_skill_points_fun = ::last_hotjoin_skill_points;
|
|
level.automatic_drill = 1;
|
|
common_scripts\utility::flag_init( "drill_detonated" );
|
|
common_scripts\utility::flag_init( "drill_destroyed" );
|
|
common_scripts\utility::flag_init( "drill_drilling" );
|
|
level.drill_health_hardcore = 1250;
|
|
|
|
if ( maps\mp\alien\_utility::isplayingsolo() )
|
|
level.drill_health_hardcore = 2000;
|
|
|
|
level.gas_station_conduits_completed = 0;
|
|
level.parking_conduits_completed = 0;
|
|
level.rooftop_conduits_completed = 0;
|
|
level.skill_points_earned_from_progression = 0;
|
|
}
|
|
|
|
init_fake_drill()
|
|
{
|
|
common_scripts\utility::flag_init( "drill_detonated" );
|
|
common_scripts\utility::flag_init( "drill_destroyed" );
|
|
common_scripts\utility::flag_init( "drill_drilling" );
|
|
level.drill_id = 0;
|
|
level.drill_marker_id = 1;
|
|
level.drill = undefined;
|
|
level.drill_carrier = undefined;
|
|
maps\mp\alien\_drill::init_fx();
|
|
maps\mp\alien\_drill::init_drill_drop_loc();
|
|
thread maps\mp\alien\_drill::drill_threat_think();
|
|
}
|
|
|
|
register_nonlinear_outpost( var_0, var_1 )
|
|
{
|
|
var_2 = common_scripts\utility::getstruct( "outpost_" + var_0, "targetname" );
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
return;
|
|
|
|
var_2.name = var_0;
|
|
var_2.opened = common_scripts\utility::ter_op( isdefined( var_1 ), var_1, 0 );
|
|
var_2.outpost_encounters = [];
|
|
var_3 = common_scripts\utility::getstructarray( var_2.target, "targetname" );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
{
|
|
if ( isdefined( var_5.script_parameters ) )
|
|
{
|
|
if ( var_5.script_parameters == "outpost_transition" )
|
|
level setup_transition_encounter( var_5 );
|
|
else if ( var_5.script_parameters == "outpost_conduit" )
|
|
level setup_conduit_encounter( var_5 );
|
|
}
|
|
|
|
var_2.outpost_encounters[var_5.name] = var_5;
|
|
}
|
|
|
|
if ( !isdefined( level.outposts ) )
|
|
level.outposts = [];
|
|
|
|
level.outposts[var_0] = var_2;
|
|
}
|
|
|
|
register_nonlinear_transition( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
|
|
{
|
|
if ( !isdefined( level.outposts[var_0] ) )
|
|
{
|
|
|
|
}
|
|
|
|
if ( !isdefined( level.outposts[var_0].outpost_encounters[var_1] ) )
|
|
{
|
|
|
|
}
|
|
|
|
var_8 = level.outposts[var_0].outpost_encounters[var_1];
|
|
var_8.name = var_1;
|
|
var_8.skill_point = var_2;
|
|
var_8.hardcore_skill_point = var_3;
|
|
var_8.outpost_name = var_0;
|
|
var_8.opener_func = var_4;
|
|
var_8.open_delta = var_5;
|
|
var_8.close_delta = var_6;
|
|
var_8.connected_outpost = var_7;
|
|
var_8.force_end_func = ::force_end_transition;
|
|
var_8.type = "transition";
|
|
}
|
|
|
|
register_nonlinear_conduit( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8 )
|
|
{
|
|
if ( !isdefined( level.outposts[var_0] ) )
|
|
{
|
|
|
|
}
|
|
|
|
if ( !isdefined( level.outposts[var_0].outpost_encounters[var_1] ) )
|
|
{
|
|
|
|
}
|
|
|
|
var_9 = level.outposts[var_0].outpost_encounters[var_1];
|
|
var_9.name = var_1;
|
|
var_9.outpost_name = var_0;
|
|
var_9.cycle_count = var_2;
|
|
var_9.med_cycle = var_3;
|
|
var_9.hard_cycle = var_4;
|
|
var_9.skill_point = var_5;
|
|
var_9.hardcore_skill_point = var_6;
|
|
var_9.encounter_func = var_7;
|
|
var_9.blocker = common_scripts\utility::ter_op( isdefined( var_8 ), var_8, 0 );
|
|
var_9.force_end_func = ::force_end_conduit;
|
|
var_9.type = "conduit";
|
|
}
|
|
|
|
run_non_linear_encounters()
|
|
{
|
|
level endon( "game_ended" );
|
|
level endon( "start_cross_vignette" );
|
|
level.cycle_count = 1;
|
|
level.current_area_name = "main_base";
|
|
|
|
if ( !handle_non_linear_jump_to_start() )
|
|
return;
|
|
|
|
level waittill( "enable_encounters" );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = level.outposts[level.current_area_name];
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
foreach ( var_2 in var_0.outpost_encounters )
|
|
level thread outpost_encounter_enable( var_2 );
|
|
|
|
if ( level.allow_backtrack_encounters )
|
|
{
|
|
foreach ( var_5 in level.outposts )
|
|
{
|
|
if ( var_5.name != level.current_area_name && var_5.opened )
|
|
{
|
|
foreach ( var_2 in var_5.outpost_encounters )
|
|
level thread outpost_encounter_enable( var_2 );
|
|
}
|
|
}
|
|
}
|
|
|
|
level waittill( "outpost_encounter_started" );
|
|
common_scripts\utility::flag_set( "outpost_encounter_running" );
|
|
level waittill( "outpost_encounter_completed" );
|
|
common_scripts\utility::flag_clear( "outpost_encounter_running" );
|
|
wait 5.0;
|
|
|
|
if ( common_scripts\utility::flag( "start_cross_vignette" ) )
|
|
return;
|
|
}
|
|
}
|
|
|
|
outpost_encounter_enable( var_0 )
|
|
{
|
|
level endon( "outpost_encounter_started" );
|
|
level endon( "start_cross_vignette" );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
if ( !isdefined( var_0.use_trigger ) )
|
|
return;
|
|
|
|
if ( isdefined( var_0.use_trigger.marked_for_delete ) || isdefined( var_0.completed ) )
|
|
return;
|
|
|
|
if ( level.force_blocker_order && var_0.type == "conduit" && var_0.blocker )
|
|
{
|
|
var_1 = level.outposts[var_0.outpost_name].outpost_encounters;
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( var_3.name != var_0.name && var_3.type == "conduit" )
|
|
return;
|
|
}
|
|
}
|
|
|
|
level thread encounter_outline_icon_hinttext( var_0 );
|
|
var_0.use_trigger makeusable();
|
|
var_0.use_trigger waittill( "trigger", var_5 );
|
|
|
|
if ( var_0.type == "conduit" && !level.force_blocker_order )
|
|
var_0 = update_conduit_struct_any_order( var_0 );
|
|
|
|
level thread [[ var_0.encounter_start_func ]]( var_0, var_5 );
|
|
level notify( "outpost_encounter_started" );
|
|
}
|
|
|
|
encounter_outline_icon_hinttext( var_0 )
|
|
{
|
|
if ( isdefined( var_0.completed ) )
|
|
return;
|
|
|
|
var_1 = "waypoint_alien_conduit";
|
|
|
|
if ( var_0.type == "transition" )
|
|
var_1 = "waypoint_alien_gate";
|
|
|
|
var_0.use_trigger thread maps\mp\alien\_hive::set_hive_icon( var_1, 1300 );
|
|
var_0.use_trigger setcursorhint( "HINT_NOICON" );
|
|
var_0.use_trigger common_scripts\utility::trigger_on();
|
|
|
|
if ( var_0.type == "transition" )
|
|
var_0.use_trigger sethintstring( &"MP_ALIEN_LAST_TRANSITION_OPEN_HINT" );
|
|
else
|
|
var_0.use_trigger sethintstring( &"MP_ALIEN_LAST_CONDUIT_START_HINT" );
|
|
|
|
var_2 = undefined;
|
|
var_3 = undefined;
|
|
|
|
if ( maps\mp\alien\_utility::alien_mode_has( "outline" ) )
|
|
{
|
|
if ( var_0.type == "transition" )
|
|
{
|
|
var_2 = var_0.gate_models[0];
|
|
|
|
if ( isdefined( var_0.gate_model_double ) )
|
|
{
|
|
var_3 = var_0.gate_model_double;
|
|
maps\mp\alien\_outline_proto::add_to_outline_hive_watch_list( var_0.gate_model_double );
|
|
}
|
|
}
|
|
else
|
|
var_2 = var_0.conduit;
|
|
|
|
maps\mp\alien\_outline_proto::add_to_outline_hive_watch_list( var_2 );
|
|
}
|
|
|
|
level common_scripts\utility::waittill_any( "outpost_encounter_started", "game_ended", "start_cross_vignette" );
|
|
var_0.use_trigger notify( "stop_listening" );
|
|
var_0.use_trigger maps\mp\alien\_hive::destroy_hive_icon();
|
|
var_0.use_trigger sethintstring( "" );
|
|
var_0.use_trigger common_scripts\utility::trigger_off();
|
|
|
|
if ( maps\mp\alien\_utility::alien_mode_has( "outline" ) && isdefined( var_2 ) )
|
|
{
|
|
maps\mp\alien\_outline_proto::remove_from_outline_hive_watch_list( var_2 );
|
|
|
|
if ( isdefined( var_3 ) )
|
|
maps\mp\alien\_outline_proto::remove_from_outline_hive_watch_list( var_3 );
|
|
}
|
|
}
|
|
|
|
encounter_complete()
|
|
{
|
|
var_0 = level.current_encounter_info;
|
|
|
|
if ( var_0.type == "transition" )
|
|
thread transition_encounter_complete();
|
|
else
|
|
thread conduit_encounter_complete();
|
|
|
|
level thread maps\mp\mp_alien_last::remove_conduit_vo_once_complete();
|
|
}
|
|
|
|
setup_conduit_encounter( var_0 )
|
|
{
|
|
if ( !isdefined( var_0.script_noteworthy ) )
|
|
return;
|
|
|
|
var_0.name = var_0.script_noteworthy;
|
|
var_0.encounter_start_func = ::run_conduit_encounter;
|
|
var_1 = getentarray( var_0.target, "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( isdefined( var_3.script_parameters ) )
|
|
{
|
|
if ( var_3.script_parameters == "conduit" )
|
|
{
|
|
var_0.conduit = var_3;
|
|
continue;
|
|
}
|
|
|
|
if ( var_3.script_parameters == "use_trigger" )
|
|
var_0.use_trigger = var_3;
|
|
}
|
|
}
|
|
|
|
var_5 = getent( var_0.name + "_scriptable", "targetname" );
|
|
var_0.conduit.scriptable = var_5;
|
|
}
|
|
|
|
run_conduit_encounter( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
level.encounter_type = "conduit";
|
|
level.current_encounter_info = var_0;
|
|
var_1 maps\mp\alien\_persistence::eog_player_update_stat( "drillplants", 1 );
|
|
level.encounter_name = var_0.name;
|
|
level.current_hive_name = var_0.name;
|
|
level.current_area_name = var_0.outpost_name;
|
|
level notify( "drill_planted", var_1, var_0 );
|
|
var_2 = 0.4;
|
|
var_3 = 1.75;
|
|
thread maps\mp\alien\_hive::warn_all_players( var_3, var_2 );
|
|
|
|
if ( isdefined( var_0.encounter_func ) )
|
|
level thread [[ var_0.encounter_func ]]( var_0 );
|
|
|
|
level thread set_area_index_for_encounter( var_0.name );
|
|
maps\mp\_utility::delaythread( 2, maps\mp\alien\_challenge::spawn_challenge );
|
|
level thread conduit_running( var_0, var_0.conduit, var_1 );
|
|
maps\mp\alien\_gamescore_last::update_generator_score_component_name();
|
|
maps\mp\alien\_gamescore::reset_encounter_performance();
|
|
var_4 = level.cycle_count;
|
|
|
|
if ( level.num_conduit_completed < 2 )
|
|
level.cycle_count = var_0.cycle_count;
|
|
else if ( level.num_conduit_completed < 4 )
|
|
level.cycle_count = var_0.med_cycle;
|
|
else
|
|
level.cycle_count = var_0.hard_cycle;
|
|
|
|
maps\mp\alien\_spawn_director::start_cycle( level.cycle_count );
|
|
level.cycle_count = level.cycle_count + 1;
|
|
common_scripts\utility::flag_wait( "drill_detonated" );
|
|
common_scripts\utility::flag_clear( "drill_drilling" );
|
|
level.drill.inuse = 0;
|
|
maps\mp\alien\_spawn_director::end_cycle();
|
|
var_0.completed = 1;
|
|
level.cycle_count = var_4;
|
|
var_0.conduit thread maps\mp\alien\_drill::drill_detonate();
|
|
level thread maps\mp\alien\_spawnlogic::remaining_alien_management();
|
|
maps\mp\alien\_challenge::end_current_challenge();
|
|
maps\mp\alien\_challenge::remove_all_challenge_cases();
|
|
maps\mp\alien\_gamescore::calculate_and_show_encounter_scores( level.players, get_conduit_score_component_name_list() );
|
|
setomnvar( "ui_alien_drill_state", 0 );
|
|
|
|
if ( isdefined( var_0.scene_trig ) )
|
|
var_0.scene_trig notify( "trigger", level.players[0] );
|
|
|
|
increment_conduit_progress();
|
|
give_players_rewards( var_0 );
|
|
level.current_encounter_info = undefined;
|
|
level.encounter_type = undefined;
|
|
level notify( "outpost_encounter_completed" );
|
|
common_scripts\utility::flag_clear( "outpost_encounter_running" );
|
|
}
|
|
|
|
conduit_running( var_0, var_1, var_2 )
|
|
{
|
|
var_1 endon( "stop_listening" );
|
|
var_1 endon( "drill_complete" );
|
|
level.drill = var_1;
|
|
level.drill.state = "planted";
|
|
level.drill endon( "death" );
|
|
level.drill.owner = var_2;
|
|
level.drill.stronghold = var_1;
|
|
level.drill.times_stuck = 0;
|
|
level.drill.start_time = gettime();
|
|
level.drill.hive_is_really_a_door = 0;
|
|
var_1.scriptables = [];
|
|
var_1.removeables = [];
|
|
var_1.fx_ents = [];
|
|
var_3 = level.drill_health_hardcore;
|
|
level.drill.maxhealth = 20000 + var_3;
|
|
level.drill.health = int( 20000 + var_3 * level.drill.owner maps\mp\alien\_perk_utility::perk_getdrillhealthscalar() );
|
|
level.drill thread maps\mp\alien\_drill::watch_to_repair( level.drill );
|
|
level.drill thread maps\mp\alien\_drill::watch_drill_health_for_challenge();
|
|
level.drill thread watch_drill_health_for_fx();
|
|
|
|
if ( maps\mp\alien\_utility::alien_mode_has( "outline" ) )
|
|
maps\mp\alien\_outline_proto::add_to_outline_drill_watch_list( level.drill, 0 );
|
|
|
|
var_1 playsound( "alien_conduit_on" );
|
|
level notify( "dlc_vo_notify", "last_vo", "conduit_start" );
|
|
thread maps\mp\alien\_drill::destroy_drill_icon();
|
|
common_scripts\utility::flag_set( "drill_drilling" );
|
|
wait 2;
|
|
var_1 thread init_drilling_parameters( var_0 );
|
|
var_1 thread set_conduit_state_run( var_2 );
|
|
maps\mp\alien\_hive::hive_play_drill_planted_animations();
|
|
level.drill waittill( "offline", var_4, var_5 );
|
|
var_1 thread set_conduit_state_offline();
|
|
wait 2;
|
|
maps\mp\gametypes\aliens::alienendgame( "axis", maps\mp\alien\_hud::get_end_game_string_index( "generator_destroyed" ) );
|
|
}
|
|
|
|
set_conduit_state_run( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "stop_listening" );
|
|
level.drill.state = "online";
|
|
level.drill notify( "online" );
|
|
level.drill setcandamage( 1 );
|
|
level.drill makeunusable();
|
|
level.drill sethintstring( "" );
|
|
var_1 = level.drill_health_hardcore;
|
|
level.drill.maxhealth = 20000 + var_1;
|
|
level.drill.health = int( 20000 + var_1 * level.drill.owner maps\mp\alien\_perk_utility::perk_getdrillhealthscalar() );
|
|
level.drill.threatbias = -3000;
|
|
level.drill makeentitysentient( "allies" );
|
|
level.drill setthreatbiasgroup( "drill" );
|
|
maps\mp\alien\_drill::update_drill_health_hud();
|
|
|
|
foreach ( var_3 in level.agentarray )
|
|
{
|
|
if ( isdefined( var_3.wave_spawned ) && var_3.wave_spawned )
|
|
var_3 getenemyinfo( level.drill );
|
|
}
|
|
|
|
thread sfx_conduit_on();
|
|
thread conduit_fx_warm_up();
|
|
thread maps\mp\alien\_drill::handle_bomb_damage();
|
|
self.depth_marker = gettime();
|
|
thread maps\mp\alien\_drill::monitor_drill_complete( self.depth );
|
|
thread maps\mp\alien\_hive::hive_pain_monitor();
|
|
thread maps\mp\alien\_hive::set_hive_icon( "waypoint_alien_defend" );
|
|
thread offset_conduit_icon();
|
|
thread maps\mp\alien\_drill::destroy_drill_icon();
|
|
thread maps\mp\alien\_hud::turn_on_drill_meter_hud( self.depth );
|
|
|
|
if ( level.encounter_type == "conduit" )
|
|
level thread maps\mp\alien\_drill::watch_drill_depth_for_vo( self.depth );
|
|
}
|
|
|
|
offset_conduit_icon()
|
|
{
|
|
level endon( "drill_detonated" );
|
|
level endon( "game_ended" );
|
|
|
|
while ( !isdefined( self.icon ) )
|
|
wait 0.1;
|
|
|
|
self.icon.z = self.icon.z + 70;
|
|
}
|
|
|
|
conduit_fx_warm_up()
|
|
{
|
|
level.drill.scriptable setscriptablepartstate( "base", "warm_up" );
|
|
}
|
|
|
|
conduit_fx_on()
|
|
{
|
|
level.drill.scriptable setscriptablepartstate( "base", "on" );
|
|
}
|
|
|
|
conduit_fx_damaged()
|
|
{
|
|
level.drill.scriptable setscriptablepartstate( "base", "damaged" );
|
|
}
|
|
|
|
conduit_encounter_complete()
|
|
{
|
|
maps\mp\alien\_hive::destroy_hive_icon();
|
|
self makeunusable();
|
|
self sethintstring( "" );
|
|
|
|
if ( maps\mp\alien\_utility::alien_mode_has( "outline" ) )
|
|
maps\mp\alien\_outline_proto::remove_from_outline_drill_watch_list( self );
|
|
|
|
thread sfx_conduit_off();
|
|
thread conduit_fx_on();
|
|
|
|
if ( isdefined( level.drill ) )
|
|
level.drill.ignoreme = 1;
|
|
|
|
level.num_conduit_completed++;
|
|
common_scripts\utility::flag_clear( "drill_detonated" );
|
|
wait 4;
|
|
level thread maps\mp\mp_alien_last::play_conduit_encounter_complete_vo();
|
|
}
|
|
|
|
set_conduit_state_offline()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "stop_listening" );
|
|
self.state = "offline";
|
|
thread sfx_conduit_offline();
|
|
var_0 = ( gettime() - self.depth_marker ) / 1000;
|
|
self.depth = max( 0, self.depth - var_0 );
|
|
wait 1.0;
|
|
self setcandamage( 0 );
|
|
self freeentitysentient();
|
|
maps\mp\alien\_hive::destroy_hive_icon();
|
|
setomnvar( "ui_alien_drill_state", 2 );
|
|
}
|
|
|
|
force_end_conduit()
|
|
{
|
|
if ( !common_scripts\utility::flag( "drill_drilling" ) )
|
|
common_scripts\utility::waittill_any_timeout( 4, "drill_drilling" );
|
|
|
|
var_0 = level.current_encounter_info.conduit;
|
|
var_0.layers = [];
|
|
var_0 notify( "force_drill_complete" );
|
|
wait 1.0;
|
|
}
|
|
|
|
update_conduit_struct_any_order( var_0 )
|
|
{
|
|
var_0 = level.outposts[var_0.outpost_name].outpost_encounters[var_0.name];
|
|
|
|
if ( var_0.name == "conduit_gas_station_2" && level.gas_station_conduits_completed == 0 )
|
|
swap_conduit_cycles_and_encounter( "gas_station", "conduit_gas_station_1", "conduit_gas_station_2" );
|
|
else if ( var_0.name == "conduit_parking_2" && level.parking_conduits_completed == 0 )
|
|
swap_conduit_cycles_and_encounter( "parking", "conduit_parking_1", "conduit_parking_2" );
|
|
else if ( var_0.name == "conduit_rooftop_2" && level.rooftop_conduits_completed == 0 )
|
|
swap_conduit_cycles_and_encounter( "rooftop", "conduit_rooftop_1", "conduit_rooftop_2" );
|
|
|
|
return var_0;
|
|
}
|
|
|
|
swap_conduit_cycles_and_encounter( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = level.outposts[var_0].outpost_encounters[var_2].cycle_count;
|
|
var_4 = level.outposts[var_0].outpost_encounters[var_2].med_cycle;
|
|
var_5 = level.outposts[var_0].outpost_encounters[var_2].hard_cycle;
|
|
var_6 = level.outposts[var_0].outpost_encounters[var_2].encounter_func;
|
|
var_7 = level.outposts[var_0].outpost_encounters[var_2].blocker;
|
|
level.outposts[var_0].outpost_encounters[var_2].cycle_count = level.outposts[var_0].outpost_encounters[var_1].cycle_count;
|
|
level.outposts[var_0].outpost_encounters[var_2].med_cycle = level.outposts[var_0].outpost_encounters[var_1].med_cycle;
|
|
level.outposts[var_0].outpost_encounters[var_2].hard_cycle = level.outposts[var_0].outpost_encounters[var_1].hard_cycle;
|
|
level.outposts[var_0].outpost_encounters[var_2].encounter_func = level.outposts[var_0].outpost_encounters[var_1].encounter_func;
|
|
level.outposts[var_0].outpost_encounters[var_2].blocker = level.outposts[var_0].outpost_encounters[var_1].blocker;
|
|
level.outposts[var_0].outpost_encounters[var_1].cycle_count = var_3;
|
|
level.outposts[var_0].outpost_encounters[var_1].med_cycle = var_4;
|
|
level.outposts[var_0].outpost_encounters[var_1].hard_cycle = var_5;
|
|
level.outposts[var_0].outpost_encounters[var_1].encounter_func = var_6;
|
|
level.outposts[var_0].outpost_encounters[var_1].blocker = var_7;
|
|
}
|
|
|
|
increment_conduit_progress()
|
|
{
|
|
level.num_hive_destroyed++;
|
|
|
|
foreach ( var_1 in level.players )
|
|
var_1 maps\mp\alien\_persistence::eog_player_update_stat( "hivesdestroyed", 1 );
|
|
}
|
|
|
|
watch_drill_health_for_fx()
|
|
{
|
|
self endon( "drill_complete" );
|
|
self endon( "death" );
|
|
var_0 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = ( level.drill.health - 20000 ) / level.drill_health_hardcore;
|
|
|
|
if ( var_1 <= 0.75 && !var_0 )
|
|
{
|
|
var_0 = 1;
|
|
conduit_fx_damaged();
|
|
}
|
|
else if ( var_1 > 0.75 && var_0 )
|
|
{
|
|
var_0 = 0;
|
|
conduit_fx_warm_up();
|
|
}
|
|
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
sfx_conduit_on()
|
|
{
|
|
wait 0.1;
|
|
var_0 = level.drill;
|
|
level.drill_sfx_lp = spawn( "script_origin", var_0.origin );
|
|
level.drill_sfx_lp linkto( var_0 );
|
|
|
|
if ( !isdefined( level.drill_sfx_dist_lp ) )
|
|
{
|
|
level.drill_sfx_dist_lp = spawn( "script_origin", var_0.origin );
|
|
level.drill_sfx_dist_lp linkto( var_0 );
|
|
}
|
|
|
|
wait 0.1;
|
|
|
|
if ( isdefined( level.drill_sfx_lp ) )
|
|
level.drill_sfx_lp playloopsound( "alien_conduit_on_lp" );
|
|
}
|
|
|
|
sfx_conduit_off()
|
|
{
|
|
var_0 = level.drill;
|
|
var_0 playsound( "alien_conduit_powered_up" );
|
|
|
|
if ( isdefined( level.drill_sfx_lp ) )
|
|
{
|
|
level.drill_sfx_lp stoploopsound( "alien_conduit_on_lp" );
|
|
level.drill_sfx_lp playloopsound( "alien_conduit_powered_lp" );
|
|
}
|
|
|
|
if ( isdefined( level.drill_sfx_dist_lp ) )
|
|
level.drill_sfx_dist_lp delete();
|
|
|
|
if ( isdefined( level.drill_overheat_lp ) )
|
|
level.drill_overheat_lp delete();
|
|
|
|
if ( isdefined( level.drill_overheat_lp_02 ) )
|
|
level.drill_overheat_lp_02 delete();
|
|
}
|
|
|
|
sfx_conduit_offline()
|
|
{
|
|
var_0 = level.drill;
|
|
|
|
if ( isdefined( level.drill_sfx_lp ) )
|
|
level.drill_sfx_lp delete();
|
|
|
|
if ( isdefined( level.drill_sfx_dist_lp ) )
|
|
level.drill_sfx_dist_lp delete();
|
|
|
|
if ( isdefined( level.drill_overheat_lp_02 ) )
|
|
level.drill_overheat_lp_02 delete();
|
|
}
|
|
|
|
setup_transition_encounter( var_0 )
|
|
{
|
|
if ( !isdefined( var_0.script_noteworthy ) )
|
|
return;
|
|
|
|
var_0.name = var_0.script_noteworthy;
|
|
var_0.encounter_start_func = ::run_transition_encounter;
|
|
var_0.gate_models = [];
|
|
var_0.gate_clip = undefined;
|
|
var_0.gate_pivot = undefined;
|
|
var_0.gate_model_double = undefined;
|
|
var_0.gate_clip_double = undefined;
|
|
var_0.gate_pivot_double = undefined;
|
|
var_1 = getentarray( var_0.target, "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( isdefined( var_3.script_parameters ) )
|
|
{
|
|
if ( var_3.script_parameters == "use_trigger" )
|
|
{
|
|
var_0.use_trigger = var_3;
|
|
continue;
|
|
}
|
|
|
|
if ( var_3.script_parameters == "outpost_gate_model" )
|
|
{
|
|
var_0.gate_models[var_0.gate_models.size] = var_3;
|
|
continue;
|
|
}
|
|
|
|
if ( var_3.script_parameters == "outpost_gate_clip" )
|
|
{
|
|
var_0.gate_clip = var_3;
|
|
continue;
|
|
}
|
|
|
|
if ( var_3.script_parameters == "outpost_gate_pivot" )
|
|
{
|
|
var_0.gate_pivot = var_3;
|
|
continue;
|
|
}
|
|
|
|
if ( var_3.script_parameters == "objective_marker" )
|
|
{
|
|
var_0.objective_marker = var_3;
|
|
continue;
|
|
}
|
|
|
|
if ( var_3.script_parameters == "outpost_gate_model_double" )
|
|
{
|
|
var_0.gate_model_double = var_3;
|
|
continue;
|
|
}
|
|
|
|
if ( var_3.script_parameters == "outpost_gate_clip_double" )
|
|
{
|
|
var_0.gate_clip_double = var_3;
|
|
continue;
|
|
}
|
|
|
|
if ( var_3.script_parameters == "outpost_gate_pivot_double" )
|
|
var_0.gate_pivot_double = var_3;
|
|
}
|
|
}
|
|
|
|
if ( isdefined( var_0.gate_pivot ) && isdefined( var_0.gate_clip ) )
|
|
var_0.gate_clip linkto( var_0.gate_pivot );
|
|
|
|
if ( isdefined( var_0.gate_pivot ) )
|
|
{
|
|
foreach ( var_6 in var_0.gate_models )
|
|
var_6 linkto( var_0.gate_pivot );
|
|
}
|
|
|
|
if ( isdefined( var_0.gate_pivot_double ) && isdefined( var_0.gate_clip_double ) )
|
|
var_0.gate_clip_double linkto( var_0.gate_pivot_double );
|
|
|
|
if ( isdefined( var_0.gate_pivot_double ) )
|
|
var_0.gate_model_double linkto( var_0.gate_pivot_double );
|
|
}
|
|
|
|
run_transition_encounter( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
level.encounter_type = "transition";
|
|
level.current_encounter_info = var_0;
|
|
level notify( "dlc_vo_notify", "transition_start" );
|
|
[[ var_0.opener_func ]]( var_0, 0 );
|
|
var_1 maps\mp\alien\_persistence::eog_player_update_stat( "drillplants", 1 );
|
|
level.encounter_name = var_0.name;
|
|
level.current_hive_name = var_0.name;
|
|
level.current_area_name = var_0.outpost_name;
|
|
level notify( "drill_planted", var_1, var_0 );
|
|
var_2 = 0.4;
|
|
var_3 = 1.75;
|
|
thread maps\mp\alien\_hive::warn_all_players( var_3, var_2 );
|
|
|
|
if ( level.cycle_count == 1 )
|
|
level maps\mp\_utility::delaythread( 1, maps\mp\alien\_music_and_dialog::playvoforwavestart );
|
|
|
|
level thread set_area_index_for_encounter( var_0.name );
|
|
maps\mp\_utility::delaythread( 2, maps\mp\alien\_challenge::spawn_challenge );
|
|
level thread transition_running( var_0, var_0.use_trigger, var_1 );
|
|
maps\mp\alien\_gamescore_last::update_street_score_component_name();
|
|
maps\mp\alien\_gamescore::reset_encounter_performance();
|
|
maps\mp\alien\_spawn_director::start_cycle( level.cycle_count );
|
|
level.cycle_count++;
|
|
var_4 = level.cycle_data.cycle_drill_layers[level.cycle_count - 1];
|
|
setomnvar( "ui_alien_nuke_timer", gettime() + var_4[0] * 1000 );
|
|
thread show_transition_objective( var_0, var_4[0] - 15 );
|
|
common_scripts\utility::flag_wait( "drill_detonated" );
|
|
common_scripts\utility::flag_clear( "drill_drilling" );
|
|
maps\mp\alien\_spawn_director::end_cycle();
|
|
var_0.completed = 1;
|
|
var_0.use_trigger thread maps\mp\alien\_drill::drill_detonate();
|
|
level thread maps\mp\alien\_challenge::end_current_challenge();
|
|
level thread maps\mp\alien\_challenge::remove_all_challenge_cases();
|
|
level thread maps\mp\alien\_gamescore::calculate_and_show_encounter_scores( level.players, get_transition_score_component_name_list() );
|
|
setomnvar( "ui_alien_drill_state", 0 );
|
|
setomnvar( "ui_alien_nuke_timer", 0 );
|
|
var_5 = var_0.connected_outpost;
|
|
var_6 = level.outposts[var_5].outpost_encounters[var_0.name];
|
|
[[ var_6.opener_func ]]( var_6, 0 );
|
|
var_6.completed = 1;
|
|
level.outposts[var_5].opened = 1;
|
|
|
|
if ( isdefined( var_0.use_trigger ) )
|
|
thread wait_and_delete_proxy( var_0.use_trigger );
|
|
|
|
if ( isdefined( var_6.use_trigger ) )
|
|
thread wait_and_delete_proxy( var_6.use_trigger );
|
|
|
|
if ( var_0.name != "transition_left" && var_0.name != "transition_middle" && var_0.name != "transition_right" )
|
|
{
|
|
level.outposts[level.current_area_name].outpost_encounters[var_0.name] = undefined;
|
|
level.outposts[var_5].outpost_encounters[var_0.name] = undefined;
|
|
}
|
|
|
|
level.num_transition_completed++;
|
|
|
|
if ( isdefined( var_0.scene_trig ) )
|
|
var_0.scene_trig notify( "trigger", level.players[0] );
|
|
|
|
give_players_rewards( var_0 );
|
|
level.current_area_name = var_5;
|
|
level.current_encounter_info = undefined;
|
|
level.encounter_type = undefined;
|
|
level notify( "outpost_encounter_completed" );
|
|
common_scripts\utility::flag_clear( "outpost_encounter_running" );
|
|
}
|
|
|
|
wait_and_delete_proxy( var_0 )
|
|
{
|
|
var_0.marked_for_delete = 1;
|
|
var_0 notify( "stop_listening" );
|
|
level.next_hive_vo_cycle = 99;
|
|
wait 5;
|
|
var_0 delete();
|
|
}
|
|
|
|
transition_running( var_0, var_1, var_2 )
|
|
{
|
|
var_1 endon( "stop_listening" );
|
|
var_1 endon( "drill_complete" );
|
|
|
|
if ( isdefined( level.drill ) )
|
|
level.drill = undefined;
|
|
|
|
var_3 = common_scripts\utility::getstruct( "hidden_drill_pos", "targetname" );
|
|
level.drill = spawn( "script_model", var_3.origin );
|
|
level.drill.state = "planted";
|
|
level thread maps\mp\alien\_music_and_dialog::playvoforbombplant( var_2 );
|
|
thread maps\mp\alien\_drill::destroy_drill_icon();
|
|
level.drill endon( "death" );
|
|
level.drill.owner = var_2;
|
|
level.drill.stronghold = var_1;
|
|
level.drill.times_stuck = 0;
|
|
level.drill.start_time = gettime();
|
|
var_1.scriptables = [];
|
|
var_1.removeables = [];
|
|
var_1.fx_ents = [];
|
|
common_scripts\utility::flag_set( "drill_drilling" );
|
|
var_1 init_drilling_parameters( var_0 );
|
|
var_1 thread set_transition_state_run( var_2 );
|
|
maps\mp\alien\_hive::hive_play_drill_planted_animations();
|
|
level.drill waittill( "offline", var_4, var_5 );
|
|
}
|
|
|
|
set_transition_state_run( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "stop_listening" );
|
|
level.drill.state = "online";
|
|
level.drill notify( "online" );
|
|
level.drill setcandamage( 0 );
|
|
level.drill makeunusable();
|
|
level.drill sethintstring( "" );
|
|
var_1 = level.drill_health_hardcore;
|
|
level.drill.maxhealth = 20000 + var_1;
|
|
level.drill.health = int( 20000 + var_1 * 1.0 );
|
|
level.drill.threatbias = -3000;
|
|
level.drill makeentitysentient( "allies" );
|
|
thread maps\mp\alien\_drill::monitor_drill_complete( self.depth );
|
|
maps\mp\alien\_drill::destroy_drill_icon();
|
|
level thread maps\mp\alien\_drill::watch_drill_depth_for_vo( self.depth );
|
|
}
|
|
|
|
transition_encounter_complete()
|
|
{
|
|
if ( isdefined( level.drill ) )
|
|
{
|
|
level.drill.ignoreme = 1;
|
|
level.drill delete();
|
|
}
|
|
|
|
common_scripts\utility::flag_clear( "drill_detonated" );
|
|
level thread maps\mp\mp_alien_last::play_transition_encounter_complete_vo();
|
|
}
|
|
|
|
show_transition_objective( var_0, var_1 )
|
|
{
|
|
wait( var_1 );
|
|
|
|
if ( !isdefined( var_0 ) || maps\mp\alien\_utility::is_true( var_0.completed ) || !isdefined( var_0.objective_marker ) )
|
|
return;
|
|
|
|
if ( isdefined( level.waypoint_icon ) )
|
|
level.waypoint_icon destroy();
|
|
|
|
if ( isdefined( level.ring_waypoint_icon ) )
|
|
level.ring_waypoint_icon destroy();
|
|
|
|
var_2 = "waypoint_alien_blocker";
|
|
var_3 = 14;
|
|
var_4 = 14;
|
|
var_5 = 0.75;
|
|
var_6 = var_0.objective_marker.origin;
|
|
level.waypoint_icon = maps\mp\alien\_hud::make_waypoint( var_2, var_3, var_4, var_5, var_6 );
|
|
var_0.use_trigger waittill( "drill_complete" );
|
|
level.waypoint_icon destroy();
|
|
var_0.objective_marker delete();
|
|
}
|
|
|
|
force_end_transition()
|
|
{
|
|
if ( !common_scripts\utility::flag( "drill_drilling" ) )
|
|
common_scripts\utility::waittill_any_timeout( 4, "drill_drilling" );
|
|
|
|
var_0 = level.current_encounter_info.use_trigger;
|
|
var_0.layers = [];
|
|
var_0 notify( "force_drill_complete" );
|
|
level notify( "debug_beat_current_encounter" );
|
|
wait 1.0;
|
|
}
|
|
|
|
opener_pivot( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_0.gate_pivot ) )
|
|
return;
|
|
|
|
var_2 = common_scripts\utility::ter_op( var_1, var_0.close_delta, var_0.open_delta );
|
|
|
|
if ( !var_1 )
|
|
var_0.gate_clip connectpaths();
|
|
|
|
level thread play_door_sounds( var_0 );
|
|
var_0.gate_pivot rotateby( ( 0, var_2, 0 ), 1.0, 0.2, 0.2 );
|
|
wait 1.5;
|
|
var_0.gate_clip disconnectpaths();
|
|
}
|
|
|
|
opener_slide( var_0, var_1, var_2 )
|
|
{
|
|
if ( !isdefined( var_0.gate_pivot ) )
|
|
return;
|
|
|
|
var_3 = common_scripts\utility::ter_op( var_1, var_0.close_delta, var_0.open_delta );
|
|
|
|
if ( !var_1 )
|
|
var_0.gate_clip connectpaths();
|
|
|
|
level thread play_door_sounds( var_0 );
|
|
|
|
if ( maps\mp\alien\_utility::is_true( var_2 ) )
|
|
var_0.gate_pivot movex( var_3, 1.0, 0.1, 0.1 );
|
|
else
|
|
var_0.gate_pivot movez( var_3, 1.0, 0.1, 0.1 );
|
|
|
|
wait 1.5;
|
|
var_0.gate_clip disconnectpaths();
|
|
}
|
|
|
|
opener_slide_x( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_0.gate_pivot ) )
|
|
return;
|
|
|
|
var_2 = common_scripts\utility::ter_op( var_1, var_0.close_delta, var_0.open_delta );
|
|
|
|
if ( !var_1 )
|
|
var_0.gate_clip connectpaths();
|
|
|
|
level thread play_door_sounds( var_0 );
|
|
var_0.gate_pivot movex( var_2, 2.0, 0.3, 0.6 );
|
|
wait 1.5;
|
|
var_0.gate_clip disconnectpaths();
|
|
}
|
|
|
|
opener_doors( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_0.gate_pivot ) )
|
|
return;
|
|
|
|
var_2 = common_scripts\utility::ter_op( var_1, var_0.close_delta, var_0.open_delta );
|
|
|
|
if ( !var_1 )
|
|
{
|
|
var_0.gate_clip connectpaths();
|
|
var_0.gate_clip_double connectpaths();
|
|
}
|
|
|
|
level thread play_door_sounds( var_0 );
|
|
var_0.gate_pivot rotateby( ( 0, var_2, 0 ), 1.0, 0.2, 0.2 );
|
|
var_0.gate_pivot_double rotateby( ( 0, var_2 * -1, 0 ), 1.0, 0.2, 0.2 );
|
|
wait 1.5;
|
|
var_0.gate_clip disconnectpaths();
|
|
var_0.gate_clip_double disconnectpaths();
|
|
}
|
|
|
|
play_door_sounds( var_0 )
|
|
{
|
|
if ( isdefined( var_0.gate_pivot.script_noteworthy ) )
|
|
{
|
|
switch ( var_0.gate_pivot.script_noteworthy )
|
|
{
|
|
case "main_gate":
|
|
var_0.gate_pivot playsound( "scn_main_gate_open" );
|
|
break;
|
|
case "fence_gate":
|
|
var_0.gate_pivot playsound( "scn_chn_fence_open" );
|
|
break;
|
|
case "office_door":
|
|
var_0.gate_pivot playsound( "scn_office_exit_open" );
|
|
break;
|
|
case "linked_grate":
|
|
var_0.gate_pivot playsound( "scn_grate_lift_open" );
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
handle_non_linear_jump_to_start()
|
|
{
|
|
var_0 = maps\mp\gametypes\aliens::is_start_point_enable();
|
|
var_1 = maps\mp\gametypes\aliens::get_start_point_index( var_0 );
|
|
var_2 = 1;
|
|
|
|
switch ( var_1 )
|
|
{
|
|
case 1:
|
|
case 0:
|
|
break;
|
|
case 2:
|
|
maps\mp\mp_alien_last_encounters::jump_to_gas_station();
|
|
set_debug_startpointlocations();
|
|
break;
|
|
case 3:
|
|
maps\mp\mp_alien_last_encounters::jump_to_parking();
|
|
set_debug_startpointlocations();
|
|
break;
|
|
case 4:
|
|
maps\mp\mp_alien_last_encounters::jump_to_rooftop();
|
|
set_debug_startpointlocations();
|
|
break;
|
|
case 5:
|
|
level.current_area_name = "parking";
|
|
set_debug_startpointlocations();
|
|
|
|
foreach ( var_4 in level.outposts )
|
|
{
|
|
foreach ( var_6 in var_4.outpost_encounters )
|
|
{
|
|
if ( var_6.type == "transition" )
|
|
{
|
|
var_6.completed = 1;
|
|
[[ var_6.opener_func ]]( var_6, 0 );
|
|
wait 0.1;
|
|
}
|
|
}
|
|
}
|
|
|
|
maps\mp\mp_alien_last_final_battle::jump_to_return_to_base();
|
|
var_2 = 1;
|
|
break;
|
|
case 6:
|
|
level.current_area_name = "main_base";
|
|
set_debug_startpointlocations();
|
|
maps\mp\mp_alien_last_final_battle::jump_to_final_left();
|
|
var_2 = 0;
|
|
break;
|
|
case 7:
|
|
level.current_area_name = "main_base";
|
|
set_debug_startpointlocations();
|
|
maps\mp\mp_alien_last_final_battle::jump_to_final_middle();
|
|
var_2 = 0;
|
|
break;
|
|
case 8:
|
|
level.current_area_name = "main_base";
|
|
set_debug_startpointlocations();
|
|
maps\mp\mp_alien_last_final_battle::jump_to_final_right();
|
|
var_2 = 0;
|
|
break;
|
|
case 9:
|
|
level.current_area_name = "main_base";
|
|
set_debug_startpointlocations();
|
|
thread maps\mp\mp_alien_last_final_battle::jump_to_final_battle();
|
|
var_2 = 0;
|
|
break;
|
|
case 10:
|
|
level.current_area_name = "main_base";
|
|
set_debug_startpointlocations();
|
|
thread maps\mp\mp_alien_last_final_battle::jump_to_ending();
|
|
var_2 = 0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return var_2;
|
|
}
|
|
|
|
set_debug_startpointlocations()
|
|
{
|
|
var_0 = 1;
|
|
|
|
for ( level.debug_startpointlocations = []; var_0 <= 4; var_0++ )
|
|
{
|
|
var_1 = level.current_area_name + "_spawn_" + var_0;
|
|
var_2 = common_scripts\utility::getstruct( var_1, "targetname" );
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
return;
|
|
|
|
level.debug_startpointlocations[level.debug_startpointlocations.size] = common_scripts\utility::drop_to_ground( var_2.origin, 100, -250 );
|
|
}
|
|
}
|
|
|
|
init_drilling_parameters( var_0 )
|
|
{
|
|
if ( var_0.type == "transition" )
|
|
var_1 = level.cycle_count;
|
|
else
|
|
var_1 = var_0.cycle_count;
|
|
|
|
var_2 = level.cycle_data.cycle_drill_layers[var_1];
|
|
self.depth = var_2[var_2.size - 1];
|
|
self.total_depth = self.depth;
|
|
self.layer_completed = 0;
|
|
self.layers[0] = 0;
|
|
|
|
for ( var_3 = 0; var_3 <= var_2.size - 2; var_3++ )
|
|
self.layers[self.layers.size] = var_2[var_3];
|
|
}
|
|
|
|
give_players_rewards( var_0, var_1, var_2 )
|
|
{
|
|
foreach ( var_4 in level.players )
|
|
var_4 thread maps\mp\alien\_hive::wait_to_give_rewards();
|
|
|
|
if ( !maps\mp\alien\_utility::is_hardcore_mode() )
|
|
{
|
|
if ( isdefined( var_0 ) && isdefined( var_0.skill_point ) )
|
|
give_players_skill_points( var_0.skill_point );
|
|
else
|
|
give_players_skill_points( var_1 );
|
|
}
|
|
else if ( isdefined( var_0 ) && isdefined( var_0.hardcore_skill_point ) )
|
|
give_players_skill_points( var_0.hardcore_skill_point );
|
|
else
|
|
give_players_skill_points( var_2 );
|
|
|
|
if ( isdefined( var_0 ) && maps\mp\alien\_utility::is_true( var_0.blocker ) )
|
|
{
|
|
foreach ( var_4 in level.players )
|
|
var_4 maps\mp\alien\_persistence::try_award_bonus_pool_token();
|
|
}
|
|
|
|
if ( maps\mp\alien\_utility::isplayingsolo() && !issplitscreen() && isdefined( var_0 ) )
|
|
{
|
|
if ( var_0.type == "transition" && ( level.num_transition_completed == 3 || level.num_transition_completed == 5 ) )
|
|
maps\mp\alien\_laststand::give_laststand( level.players[0], 1 );
|
|
}
|
|
}
|
|
|
|
get_transition_score_component_name_list()
|
|
{
|
|
if ( maps\mp\alien\_utility::isplayingsolo() )
|
|
return [ "street_personal", "street_challenge" ];
|
|
else
|
|
return [ "street_team", "street_personal", "street_challenge" ];
|
|
}
|
|
|
|
get_conduit_score_component_name_list()
|
|
{
|
|
if ( maps\mp\alien\_utility::isplayingsolo() )
|
|
return [ "generator", "generator_personal", "generator_challenge" ];
|
|
else
|
|
return [ "generator", "generator_team", "generator_personal", "generator_challenge" ];
|
|
}
|
|
|
|
last_get_current_player_volumes_override_func()
|
|
{
|
|
var_0 = [];
|
|
var_1 = [];
|
|
var_2 = level.encounter_name;
|
|
|
|
foreach ( var_4 in level.cycle_data.spawn_zones )
|
|
{
|
|
var_0[var_0.size] = var_4.volume;
|
|
|
|
if ( isdefined( var_2 ) && isdefined( var_4.volume.script_parameters ) && var_4.volume.script_parameters == var_2 )
|
|
{
|
|
var_5 = var_4.volume.script_linkname;
|
|
var_1[var_5] = spawnstruct();
|
|
var_1[var_5].players = [];
|
|
var_1[var_5].origin = var_4.volume.origin;
|
|
var_1[var_5].name = var_5;
|
|
}
|
|
}
|
|
|
|
foreach ( var_8 in level.players )
|
|
{
|
|
var_9 = var_8 getistouchingentities( var_0 );
|
|
|
|
foreach ( var_11 in var_9 )
|
|
{
|
|
var_12 = 0;
|
|
|
|
if ( !isdefined( var_1[var_11.script_linkname] ) )
|
|
{
|
|
var_5 = var_11.script_linkname;
|
|
var_1[var_5] = spawnstruct();
|
|
var_1[var_5].players = [];
|
|
var_1[var_5].origin = var_11.origin;
|
|
var_1[var_5].name = var_5;
|
|
}
|
|
|
|
var_12 = var_1[var_11.script_linkname].players.size;
|
|
var_1[var_11.script_linkname].players[var_12] = var_8;
|
|
}
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
set_area_index_for_encounter( var_0 )
|
|
{
|
|
var_1 = 0;
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case "main_base":
|
|
var_1 = 0;
|
|
break;
|
|
case "conduit_gas_station_1":
|
|
case "conduit_gas_station_2":
|
|
var_1 = 1;
|
|
break;
|
|
case "conduit_parking_1":
|
|
case "conduit_parking_2":
|
|
var_1 = 2;
|
|
break;
|
|
case "conduit_rooftop_1":
|
|
case "conduit_rooftop_2":
|
|
var_1 = 3;
|
|
break;
|
|
case "transition_left":
|
|
var_1 = 4;
|
|
break;
|
|
case "transition_upper_left":
|
|
var_1 = 5;
|
|
break;
|
|
case "transition_middle":
|
|
var_1 = 6;
|
|
break;
|
|
case "transition_upper_right":
|
|
var_1 = 7;
|
|
break;
|
|
case "transition_right":
|
|
var_1 = 8;
|
|
break;
|
|
}
|
|
|
|
level.current_area_index = var_1;
|
|
}
|
|
|
|
give_players_skill_points( var_0 )
|
|
{
|
|
level.skill_points_earned_from_progression = level.skill_points_earned_from_progression + var_0;
|
|
maps\mp\gametypes\aliens::give_players_points( var_0 );
|
|
}
|
|
|
|
last_hotjoin_skill_points()
|
|
{
|
|
var_0 = 1;
|
|
|
|
if ( maps\mp\alien\_utility::is_hardcore_mode() )
|
|
var_1 = 0;
|
|
else
|
|
var_1 = max( 0, level.skill_points_earned_from_progression - var_0 );
|
|
|
|
var_2 = maps\mp\alien\_challenge::get_num_challenge_completed();
|
|
return var_1 + var_2;
|
|
}
|