IL-GSC/AW/PC/maps/lab_breach.gsc
InfinityLoader b2389dbcb9 Full AW Dump
2024-04-22 02:38:24 -04:00

610 lines
18 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: lab_breach.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 32
* Decompile Time: 468 ms
* Timestamp: 4/22/2024 2:32:37 AM
*******************************************************************/
//Function Number: 1
init_facility_breach()
{
common_scripts\utility::flag_init("breach_done");
common_scripts\utility::flag_init("lab_breach_all_guys_dead");
common_scripts\utility::flag_init("flag_burke_kills_guy");
common_scripts\utility::flag_init("burke_is_in_position_for_facility_breach");
level.breachfriendlies = [];
level.breachfriendlies[level.breachfriendlies.size] = level.burke;
level.breachfriendlies[level.breachfriendlies.size] = level.cormack;
level.breachfriendlies[level.breachfriendlies.size] = level.knox;
var_00 = "none";
if(level.currentgen)
{
if(istransientloaded("lab_intro_tr"))
{
var_00 = "intro";
}
else if(istransientloaded("lab_middle_tr"))
{
var_00 = "middle";
}
else if(istransientloaded("lab_outro_tr"))
{
var_00 = "outro";
}
}
init_facility_breach_anims(var_00);
if(level.currentgen)
{
if(var_00 == "intro")
{
thread notetrack_setup_middle();
}
if(var_00 == "intro" || var_00 == "middle")
{
thread notetrack_setup_outro();
}
}
}
//Function Number: 2
init_facility_breach_anims(param_00)
{
init_facility_breach_model_anims(param_00);
init_facility_breach_npc_anims(param_00);
init_facility_breach_view_model_anims(param_00);
}
//Function Number: 3
init_facility_breach_model_anims(param_00)
{
level.scr_animtree["facility_breach_charge"] = #animtree;
level.scr_model["facility_breach_charge"] = "breach_charge";
level.scr_anim["facility_breach_charge"]["facility_breach"] = %lab_breachroom_breach_charge;
level.scr_animtree["facility_breach_mute_device"] = #animtree;
level.scr_model["facility_breach_mute_device"] = "muteCharge";
level.scr_anim["facility_breach_mute_device"]["facility_breach"] = %lab_breachroom_breach_mute;
if(level.nextgen || param_00 == "middle")
{
maps\_anim::addnotetrack_customfunction("facility_breach_mute_device","vfx_mute_device_plant",::maps\lab_fx::mute_device_plant_fx,"facility_breach");
}
level.scr_animtree["facility_breach_crate"] = #animtree;
level.scr_model["facility_breach_crate"] = "genericProp";
level.scr_anim["facility_breach_crate"]["facility_breach"] = %lab_breachroom_breach_box;
}
//Function Number: 4
init_facility_breach_npc_anims(param_00)
{
level.scr_anim["burke"]["facility_breach"] = %lab_breachroom_breach_hero_01;
level.scr_anim["burke"]["facility_breach_idle"][0] = %lab_breachroom_breach_hero_01_idle;
level.scr_anim["burke"]["facility_breach_end"] = %lab_breachroom_breach_hero_01_exit;
if(level.nextgen || param_00 == "middle")
{
maps\_anim::addnotetrack_customfunction("burke","interrupt_anim",::no_interrupt,"facility_breach");
maps\_anim::addnotetrack_customfunction("burke","glass_break",::break_glass,"facility_breach");
}
level.facility_breach_guys = [];
level.facility_breach_guys[0] = getent("facility_breach_guy_01","targetname");
level.facility_breach_guys[0].animname = "facility_breach_guy_01";
level.scr_anim["facility_breach_guy_01"]["facility_breach"] = %lab_breachroom_breach_guy_01;
level.facility_breach_guys[1] = getent("facility_breach_guy_02","targetname");
level.facility_breach_guys[1].animname = "facility_breach_guy_02";
level.scr_anim["facility_breach_guy_02"]["facility_breach"] = %lab_breachroom_breach_guy_02;
level.facility_breach_guys[2] = getent("facility_breach_guy_03","targetname");
level.facility_breach_guys[2].animname = "facility_breach_guy_03";
level.scr_anim["facility_breach_guy_03"]["facility_breach"] = %lab_breachroom_breach_guy_03;
level.facility_breach_guys[3] = getent("facility_breach_guy_04","targetname");
level.facility_breach_guys[3].animname = "facility_breach_guy_04";
level.scr_anim["facility_breach_guy_04"]["facility_breach"] = %lab_breachroom_breach_guy_04;
level.facility_breach_guys[4] = getent("facility_breach_guy_05","targetname");
level.facility_breach_guys[4].animname = "facility_breach_guy_05";
level.scr_anim["facility_breach_guy_05"]["facility_breach"] = %lab_breachroom_breach_guy_05;
if(level.nextgen || param_00 == "middle")
{
maps\_anim::addnotetrack_customfunction("facility_breach_guy_05","start_ragdoll",::maps\lab_anim::ai_kill,"facility_breach");
}
}
//Function Number: 5
init_facility_breach_view_model_anims(param_00)
{
level.scr_anim["player_rig"]["facility_breach"] = %lab_breachroom_breach_vm;
if(level.nextgen || param_00 == "middle")
{
maps\_anim::addnotetrack_customfunction("player_rig","Start_slowdown",::breach_slow_down,"facility_breach");
maps\_anim::addnotetrack_customfunction("player_rig","Blow_charge",::blow_door,"facility_breach");
maps\_anim::addnotetrack_customfunction("player_rig","enable_player_control",::enable_player_control,"facility_breach");
}
}
//Function Number: 6
notetrack_setup_middle()
{
level waittill("tff_post_intro_to_middle");
maps\_anim::addnotetrack_customfunction("facility_breach_mute_device","vfx_mute_device_plant",::maps\lab_fx::mute_device_plant_fx,"facility_breach");
maps\_anim::addnotetrack_customfunction("burke","interrupt_anim",::no_interrupt,"facility_breach");
maps\_anim::addnotetrack_customfunction("burke","glass_break",::break_glass,"facility_breach");
maps\_anim::addnotetrack_customfunction("facility_breach_guy_05","start_ragdoll",::maps\lab_anim::ai_kill,"facility_breach");
maps\_anim::addnotetrack_customfunction("player_rig","Start_slowdown",::breach_slow_down,"facility_breach");
maps\_anim::addnotetrack_customfunction("player_rig","Blow_charge",::blow_door,"facility_breach");
maps\_anim::addnotetrack_customfunction("player_rig","enable_player_control",::enable_player_control,"facility_breach");
}
//Function Number: 7
notetrack_setup_outro()
{
level waittill("tff_post_middle_to_outro");
}
//Function Number: 8
facility_breach_get_burke_into_position()
{
var_00 = getnode("node_burke_facility_breach","targetname");
level.burke setgoalnode(var_00);
var_01 = level.burke.goalradius;
level.burke.goalradius = 16;
level.burke waittill("goal");
level.burke.goalradius = var_01;
common_scripts\utility::flag_set("burke_is_in_position_for_facility_breach");
}
//Function Number: 9
facility_breach_spawn_bad_guys(param_00)
{
level.facility_breach_guys = [];
level.facility_breach_guys[0] = getent("facility_breach_guy_01","targetname") maps\_utility::spawn_ai(1);
level.facility_breach_guys[0].animname = "facility_breach_guy_01";
level.facility_breach_guys[1] = getent("facility_breach_guy_02","targetname") maps\_utility::spawn_ai(1);
level.facility_breach_guys[1].animname = "facility_breach_guy_02";
level.facility_breach_guys[2] = getent("facility_breach_guy_03","targetname") maps\_utility::spawn_ai(1);
level.facility_breach_guys[2].animname = "facility_breach_guy_03";
level.facility_breach_guys[3] = getent("facility_breach_guy_04","targetname") maps\_utility::spawn_ai(1);
level.facility_breach_guys[3].animname = "facility_breach_guy_04";
level.facility_breach_guys[4] = getent("facility_breach_guy_05","targetname") maps\_utility::spawn_ai(1);
level.facility_breach_guys[4].animname = "facility_breach_guy_05";
param_00 maps\_anim::anim_first_frame(level.facility_breach_guys,"facility_breach");
foreach(var_02 in level.facility_breach_guys)
{
level thread breach_enemy_track_status(var_02);
var_02.allowdeath = 1;
var_02.health = 10;
var_02 maps\_utility::disable_surprise();
var_02.ignoresonicaoe = 1;
}
}
//Function Number: 10
facility_breach()
{
common_scripts\utility::flag_wait("burke_is_in_position_for_facility_breach");
var_00 = getent("facility_breach_trigger","targetname");
var_00 thread maps\_utility::addhinttrigger(&"LAB_PLANT_MUTE_HINT",&"LAB_PLANT_MUTE_HINT_PC");
var_00 thread maps\lab_utility::disable_trigger_while_player_animating("breaching");
var_01 = var_00 maps\_shg_utility::hint_button_trigger("x");
for(;;)
{
var_00 waittill("trigger");
if(!isdefined(var_00.trigger_off))
{
break;
}
}
var_00 delete();
var_01 maps\_shg_utility::hint_button_clear();
common_scripts\utility::flag_set("breach_start");
var_02 = getent("facility_breach_animation_origin","targetname");
level.breachenemies_active = 0;
level.breachenemies_alive = 0;
level.player_rig = maps\lab_utility::spawn_player_rig();
level.player_rig hide();
var_03 = getent("facility_breach_crate_model","targetname");
var_04 = getent("facility_breach_crate_clip","targetname");
var_04 linkto(var_03);
level.facility_breach_crate = maps\_utility::spawn_anim_model("facility_breach_crate",var_03.origin);
soundscripts\_snd::snd_message("lab_mute_gun_holster");
var_02 maps\_anim::anim_first_frame_solo(level.facility_breach_crate,"facility_breach");
var_03 linkto(level.facility_breach_crate,"tag_origin_animated",(0,0,0),(0,0,0));
level.facility_breach_charge = maps\_utility::spawn_anim_model("facility_breach_charge",var_02.origin);
level.facility_breach_charge hide();
var_02 maps\_anim::anim_first_frame_solo(level.facility_breach_charge,"facility_breach");
level.facility_breach_mute_device = maps\_utility::spawn_anim_model("facility_breach_mute_device",var_02.origin);
level.facility_breach_mute_device hide();
var_02 maps\_anim::anim_first_frame_solo(level.facility_breach_mute_device,"facility_breach");
level notify("breaching");
breach_friendlies_take_grenades();
level.player freezecontrols(1);
level.player maps\_shg_utility::setup_player_for_scene(1);
maps\_player_exo::player_exo_deactivate();
thread facility_breach_setup_player();
var_05 = 0.4;
var_02 maps\_anim::anim_first_frame_solo(level.player_rig,"facility_breach");
level.player playerlinktoblend(level.player_rig,"tag_player",var_05);
level.burke.animname = "burke";
var_06 = [level.facility_breach_charge,level.facility_breach_mute_device,level.player_rig,level.facility_breach_crate];
wait(var_05);
level.facility_breach_mute_device soundscripts\_snd::snd_message("aud_facility_breach_start");
level.facility_breach_charge show();
level.facility_breach_mute_device show();
level.player_rig show();
var_02 thread maps\_anim::anim_single(var_06,"facility_breach");
level.burke thread burke_breach(var_02);
facility_breach_spawn_bad_guys(var_02);
var_02 thread maps\_anim::anim_single(level.facility_breach_guys,"facility_breach");
thread burke_breach_interrupt();
level.facility_breach_guys[0] maps\_utility::delaythread(15,::maps\lab_utility::bloody_death,1,level.burke);
level.facility_breach_guys[1] maps\_utility::delaythread(15,::maps\lab_utility::bloody_death,1,level.burke);
level.facility_breach_guys[2] maps\_utility::delaythread(15,::maps\lab_utility::bloody_death,1,level.burke);
level.facility_breach_guys[3] maps\_utility::delaythread(15,::maps\lab_utility::bloody_death,1,level.burke);
maps\_utility::delaythread(15,::common_scripts\utility::flag_set,"lab_breach_all_guys_dead");
level.player thread breach_top_off_weapon();
var_04 disconnectpaths();
for(;;)
{
if(level.breachenemies_alive <= 0)
{
break;
}
wait(0.05);
}
common_scripts\utility::flag_set("breach_done");
}
//Function Number: 11
burke_breach(param_00)
{
param_00 maps\_anim::anim_single_solo(self,"facility_breach");
if(common_scripts\utility::flag("flag_burke_kills_guy"))
{
param_00 thread maps\_anim::anim_loop_solo(self,"facility_breach_idle","ender");
common_scripts\utility::flag_wait("flag_breach_patrol_01_clear");
param_00 notify("ender");
self stopanimscripted();
param_00 maps\_anim::anim_single_solo_run(self,"facility_breach_end");
}
}
//Function Number: 12
burke_breach_interrupt()
{
level endon("burke_breach_uninterruptable");
level.facility_breach_guys[4] waittill("death");
level.burke notify("single anim","end");
level.burke stopanimscripted();
}
//Function Number: 13
facility_breach_setup_player()
{
level.player enableinvulnerability();
level.player disableweaponswitch();
level.player disableoffhandweapons();
level.player allowcrouch(0);
level.player allowprone(0);
level.player allowsprint(0);
level.player allowjump(0);
}
//Function Number: 14
facility_breach_cleanup_player()
{
level.player disableinvulnerability();
level.player enableweaponswitch();
level.player enableoffhandweapons();
level.player allowcrouch(1);
level.player allowprone(1);
level.player allowjump(1);
}
//Function Number: 15
breach_top_off_weapon(param_00)
{
param_00 = self getcurrentweapon();
if(should_topoff_breach_weapon())
{
var_01 = weaponclipsize(param_00);
if(self getweaponammoclip(param_00) < var_01)
{
self setweaponammoclip(param_00,var_01);
}
}
}
//Function Number: 16
should_topoff_breach_weapon()
{
if(level.gameskill > 1)
{
return 0;
}
return 1;
}
//Function Number: 17
breach_slow_down(param_00)
{
thread slowmo_begins(1);
}
//Function Number: 18
enable_player_control(param_00)
{
level.player unlink();
level.player_rig delete();
maps\_player_exo::player_exo_activate();
thread facility_breach_cleanup_player();
}
//Function Number: 19
blow_door(param_00)
{
level.facility_breach_charge hide();
var_01 = getent("facility_breach_door","targetname");
var_02 = getent("facility_breach_door_clip","targetname");
var_02 connectpaths();
var_01 delete();
var_02 delete();
level thread maps\lab_fx::mute_breach_explosion();
level notify("breach_explosion");
level.player_rig hide();
level.player enableweapons();
level.player freezecontrols(0);
setsaveddvar("ammoCounterHide",0);
}
//Function Number: 20
slowmo_begins(param_00)
{
if(!isdefined(param_00))
{
param_00 = 0.25;
}
level.slomobreachduration = 3.5;
var_01 = 0.5;
var_02 = 0.75;
if(isdefined(level.breaching) && level.breaching == 1)
{
return;
}
level.breaching = 1;
var_03 = 0.2;
if(isdefined(level.slomobreachplayerspeed))
{
var_03 = level.slomobreachplayerspeed;
}
var_04 = level.player;
common_scripts\utility::flag_clear("can_save");
var_04 allowmelee(0);
maps\_utility::slowmo_setspeed_slow(param_00);
maps\_utility::slowmo_setlerptime_in(var_01);
maps\_utility::slowmo_lerp_in();
var_04 setmovespeedscale(var_03);
var_05 = gettime();
var_06 = var_05 + level.slomobreachduration * 1000;
var_04 thread catch_weapon_switch();
var_04 thread catch_mission_failed();
var_07 = 500;
var_08 = 1000;
for(;;)
{
if(isdefined(level.forced_slowmo_breach_slowdown))
{
if(!level.forced_slowmo_breach_slowdown)
{
if(isdefined(level.forced_slowmo_breach_lerpout))
{
var_02 = level.forced_slowmo_breach_lerpout;
}
break;
}
wait(0.05);
continue;
}
if(gettime() >= var_06)
{
break;
}
if(level.breachenemies_active <= 0)
{
var_02 = 1.15;
break;
}
if(!maps\_utility::is_coop())
{
if(var_04.lastreloadstarttime >= var_05 + var_07)
{
break;
}
if(var_04.switchedweapons && gettime() - var_05 > var_08)
{
break;
}
}
if(maps\_utility::is_specialop() && common_scripts\utility::flag("special_op_terminated"))
{
break;
}
if(var_04.breach_missionfailed)
{
var_02 = 0.5;
break;
}
wait(0.05);
}
level notify("slowmo_breach_ending",var_02);
level notify("stop_player_heartbeat");
var_04 thread maps\_utility::play_sound_on_entity("slomo_whoosh");
maps\_utility::slowmo_setlerptime_out(var_02);
maps\_utility::slowmo_lerp_out();
var_04 allowmelee(1);
maps\_utility::slowmo_end();
common_scripts\utility::flag_set("can_save");
level.player_one_already_breached = undefined;
var_04 slowmo_player_cleanup();
var_04 allowsprint(1);
level notify("slomo_breach_over");
level.breaching = 0;
setsaveddvar("objectiveHide",0);
}
//Function Number: 21
slowmo_player_cleanup()
{
if(isdefined(level.playerspeed))
{
self setmovespeedscale(level.playerspeed);
return;
}
self setmovespeedscale(1);
}
//Function Number: 22
breach_enemy_waitfor_death(param_00)
{
self endon("breach_status_change");
param_00 waittill("death");
self notify("breach_status_change","death");
}
//Function Number: 23
breach_enemy_waitfor_death_counter(param_00)
{
level.breachenemies_alive++;
param_00 waittill("death");
level.breachenemies_alive--;
if(level.breachenemies_alive <= 0)
{
breach_friendlies_restore_grenades();
}
level notify("breach_all_enemies_dead");
}
//Function Number: 24
breach_enemy_catch_exceptions(param_00)
{
self endon("breach_status_change");
while(isalive(param_00))
{
wait(0.05);
}
self notify("breach_status_change","exception");
}
//Function Number: 25
breach_enemy_waitfor_breach_ending()
{
self endon("breach_status_change");
level waittill("slowmo_breach_ending");
self notify("breach_status_change","breach_ending");
}
//Function Number: 26
breach_enemy_track_status(param_00)
{
level.breachenemies_active++;
var_01 = spawnstruct();
var_01.enemy = param_00;
var_01 thread breach_enemy_waitfor_death(param_00);
var_01 thread breach_enemy_waitfor_death_counter(param_00);
var_01 thread breach_enemy_catch_exceptions(param_00);
var_01 thread breach_enemy_waitfor_breach_ending();
var_01 waittill("breach_status_change",var_02);
level.breachenemies_active--;
var_01 = undefined;
}
//Function Number: 27
catch_mission_failed()
{
level endon("slowmo_breach_ending");
self.breach_missionfailed = 0;
level waittill("mission failed");
self.breach_missionfailed = 1;
}
//Function Number: 28
catch_weapon_switch()
{
level endon("slowmo_breach_ending");
self.switchedweapons = 0;
common_scripts\utility::waittill_any("weapon_switch_started","night_vision_on","night_vision_off");
self.switchedweapons = 1;
}
//Function Number: 29
breach_friendlies_take_grenades()
{
if(!isdefined(level.breachfriendlies))
{
return;
}
level.breachfriendlies_grenades_empty = 1;
foreach(var_01 in level.breachfriendlies)
{
var_01.grenadeammo_prebreach = var_01.grenadeammo;
var_01.grenadeammo = 0;
}
}
//Function Number: 30
breach_friendlies_restore_grenades()
{
if(!isdefined(level.breachfriendlies))
{
return;
}
if(!isdefined(level.breachfriendlies_grenades_empty))
{
return;
}
foreach(var_01 in level.breachfriendlies)
{
var_01.grenadeammo = var_01.grenadeammo_prebreach;
var_01.grenadeammo_prebreach = undefined;
}
level.breachfriendlies_grenades_empty = undefined;
}
//Function Number: 31
no_interrupt(param_00)
{
level notify("burke_breach_uninterruptable");
common_scripts\utility::flag_set("flag_burke_kills_guy");
level.facility_breach_guys[4].allowdeath = 0;
}
//Function Number: 32
break_glass(param_00)
{
glassradiusdamage(param_00.origin,100,300,100);
}