IL-GSC/IW/PC/ALL/2936.gsc
2023-10-27 03:49:01 -04:00

3874 lines
77 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: 2936.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 141
* Decompile Time: 98 ms
* Timestamp: 10/27/2023 12:24:57 AM
*******************************************************************/
//Function Number: 1
unlockspecialist()
{
if(getdvarint("mis_cheat") == 0)
{
return;
}
if(level.script == "europa")
{
wait(1);
var_00 = gettime() + 10000;
while(gettime() < var_00 && level.player buttonpressed("BUTTON_LSTICK") || level.player buttonpressed("m"))
{
wait(0.05);
}
if(gettime() >= var_00)
{
level.player method_84C7("unlockedRealism",1);
level.player method_84C7("beatRealism",1);
scripts\sp\_endmission::func_725B(1);
level.player playrumbleonentity("light_2s");
var_01 = newhudelem();
var_01.horzalign = "center";
var_01.vertalign = "fullscreen";
var_01.alignx = "center";
var_01.aligny = "top";
var_01.y = 10;
var_01 setshader("white",1,1);
wait(0.1);
var_01 destroy();
}
}
}
//Function Number: 2
init()
{
precacheshellshock("plane_sway");
precacheshader("hud_injury_leg_right");
precacheshader("hud_injury_arm_right");
precacheshader("hud_injury_arm_left");
precacheshader("hud_injury_leg_left");
precacheshader("hud_injury_pristine");
precacheshader("hud_injury_scanner");
precacheshader("hud_injury_chest");
precacheshader("hud_injury_skull");
precacheshader("helmet_crack_00");
precacheshader("helmet_crack_01");
precacheshader("helmet_burn_00");
precacheshader("helmet_burn_01");
precacheshader("helmet_broken");
precacheitem("iw7_fists_specialist_mode");
precacheitem("nanoshot");
precacheitem("helmet");
precachemodel("equipment_mp_nanoshot_wm");
precachemodel("mil_grenade_box_dynamic");
function_01C5("ai_suppression_decrement_enemy",0.001);
function_01C5("cg_drawDamageDirection",0);
scripts\sp\_utility::func_16EB("helmet_tutorial_hint",&"SPECIALIST_MODE_TUTORIAL_HELMET");
scripts\sp\_utility::func_16EB("nanoshot_tutorial_hint",&"SPECIALIST_MODE_TUTORIAL_NANOSHOT");
scripts\sp\_utility::func_16EB("suffocate_tutorial_hint",&"SPECIALIST_MODE_TUTORIAL_SUFFOCATE");
scripts\sp\_utility::func_16EB("left_arm_tutorial_hint_equipment",&"SPECIALIST_MODE_TUTORIAL_LEFT_ARM_EQUIPMENT");
scripts\sp\_utility::func_16EB("left_arm_tutorial_hint_melee",&"SPECIALIST_MODE_TUTORIAL_LEFT_ARM_MELEE");
scripts\sp\_utility::func_16EB("helmet_already_on_tutorial_hint",&"SPECIALIST_MODE_TUTORIAL_HELMET_ALREADY_ON");
scripts\sp\_utility::func_16EB("nanoshot_tutorial_hint_at_max_health",&"SPECIALIST_MODE_TUTORIAL_NANOSHOT_MAX_HEALTH");
scripts\sp\_utility::func_16EB("helmet_find",&"SPECIALIST_MODE_TUTORIAL_HELMET_FIND");
scripts\sp\_utility::func_16EB("helmet_equip",&"SPECIALIST_MODE_TUTORIAL_HELMET_EQUIP");
scripts\sp\_utility::func_16EB("press_use_pc",&"SPECIALIST_MODE_USE_PC",::func_86C8);
scripts\sp\_utility::func_16EB("press_use_console",&"SPECIALIST_MODE_USE_CONSOLE",::func_86C8);
scripts\sp\_utility::func_16EB("specialist_loadout",&"SPECIALIST_MODE_LOADOUT");
level.var_10DB5 = 5;
level._effect["vfx_blood_impact"] = loadfx("vfx/code/impacts/flesh_hit_knife.vfx");
level._effect["vfx_gun_sparks"] = loadfx("vfx/misc/specialist_mode/gun_sparks.vfx");
level.var_10964 = spawnstruct();
level.var_10964.allowhints = 1;
level.var_10964.var_98EC = 0;
level.var_10964.ignorehelmetfuncs = 1;
func_F2D2(0);
var_00 = getentarray("specialist_mode_only","targetname");
foreach(var_02 in var_00)
{
if(isdefined(var_02.var_EE79))
{
if(var_02.var_EE79 == "notsolid")
{
var_02 notsolid();
}
}
}
thread unlockspecialist();
level.var_10964.var_2610 = spawn("script_origin",level.player.origin);
level.var_10964.var_2610 linkto(level.player);
}
//Function Number: 3
main()
{
level.player notifyonplayercommand("reload_pressed","+usereload");
level.player notifyonplayercommand("reload_pressed","+reload");
level.player notifyonplayercommand("use_pressed","+activate");
level.player notifyonplayercommand("use_pressed","+usereload");
level.player notifyonplayercommand("frag_pressed","+frag");
level.player notifyonplayercommand("smoke_pressed","+smoke");
level.player notifyonplayercommand("melee_pressed","+melee");
level.player notifyonplayercommand("melee_pressed","+melee_zoom");
level.player notifyonplayercommand("melee_pressed","+melee_sprint");
level.player notifyonplayercommand("actionslot_weapon_pressed","+actionslot 1");
level.player method_857E(1);
level.player scripts\common\utility::func_1C3A(0);
level.player scripts\sp\_utility::func_1C3E(0);
lib_0B61::func_95A4();
self.var_86F4 = 3;
self.var_BFAA = 0;
self.var_D430 = 0;
self.var_8E12 = 0;
self.var_D467 = 0;
self.var_4C97 = 0;
self.var_58DE = 0;
self.var_111BE = 0;
self.var_BF7E = 0;
self.var_10B3B = 0;
self.var_8E1B = 0;
self.helmetimpacts = [];
self.hidehelmetimpacts = 0;
var_00 = ["arm_left","arm_right","leg_left","leg_right","chest"];
self.var_2C19 = [];
foreach(var_02 in var_00)
{
self.var_2C19[var_02] = spawnstruct();
self.var_2C19[var_02].name = var_02;
self.var_2C19[var_02].maxhealth = 60;
self.var_2C19[var_02].health = 60;
}
func_9150(var_00);
func_F3FF(0);
func_F2A6(0);
func_F53C(1);
func_F400(0);
thread func_4D05();
thread func_BE50();
thread func_8DE3();
thread func_4E1B();
thread func_25FD();
thread func_12AAF();
thread spawn_specialist_crates();
thread move_specialist_crates();
thread delete_specialist_crates();
}
//Function Number: 4
func_4D05()
{
level.player endon("death");
level.player endon("headshot_death");
for(;;)
{
level.player waittill("damage",var_00,var_01,var_02,var_03,var_04,var_05,var_05,var_05,var_05,var_06);
if(!func_2C8C())
{
continue;
}
if(func_2C8D())
{
thread func_4E1A(1);
break;
}
if(isdefined(level.player.var_3294) && level.player.var_3294)
{
func_4CE0("chest",0.25);
func_4CE0("arm_left",0.25);
continue;
}
thread func_25E3();
level.player playsound("melee_knife_stab_upper_hit_plr");
if(vectortoangles(var_02) == (90,0,0))
{
thread func_4D16(scripts\common\utility::random(["left","right"]),var_00);
continue;
}
var_07 = level.player geteye()[2] + 12 - level.player.origin[2];
var_08 = var_03[2] - level.player.origin[2] / var_07;
if(var_08 > 0.79)
{
var_09 = var_01.origin;
if(isai(var_01))
{
var_09 = var_01 geteye();
}
else if(var_01.classname != "worldspawn" && isdefined(var_01.model) && scripts\sp\_utility::func_8C32(var_01.model,"j_head"))
{
var_09 = var_01 gettagorigin("j_head");
}
thread func_4D14(var_00,var_04,var_09,var_06);
}
else if(var_08 > 0.61)
{
thread func_4D18(func_4CFA(var_03,1),var_00);
}
else
{
thread func_4D16(func_4CFA(var_03,0),var_00);
}
func_F531(0.55);
func_F49E(1);
thread func_F49E(0,1.83);
}
}
//Function Number: 5
func_4CFA(param_00,param_01)
{
var_02 = param_00 - level.player.origin;
var_03 = lib_0B4D::func_EB9B(function_02D3(level.player.angles),var_02);
var_04 = lib_0B4D::func_EB9B(anglestoright(level.player.angles),var_02);
var_05 = max(var_03,var_04);
if(var_05 <= 1.35 && param_01)
{
return "chest";
}
else if(var_05 == var_03)
{
return "left";
}
return "right";
}
//Function Number: 6
func_4D14(param_00,param_01,param_02,param_03)
{
if(param_01 == "MOD_MELEE")
{
var_04 = 0;
}
else
{
var_04 = 0.422618;
}
if(!scripts\common\utility::func_13D90(level.player.origin,level.player.angles,param_02,var_04))
{
var_05 = ["chest","left","right"];
thread func_4D18(scripts\common\utility::random(var_05),param_00);
return;
}
if(func_2C95() && self.var_8E1B < 4)
{
if(isdefined(var_04) && weaponclass(var_04) == "sniper" && self.var_8E1B < 3)
{
self.var_8E1B = 3;
param_01 = param_01 * 0.75;
}
else
{
self.var_8E1B++;
}
func_F52C(level.player.health + param_01);
if(self.var_8E1B >= 4)
{
thread func_4CE1();
return;
}
thread func_25E9("injury","helmet");
if(level.var_10964.var_8E1B == 3)
{
thread func_9147(1);
}
else if(param_02 == "MOD_MELEE")
{
func_4CFB(0,1,param_03);
}
else
{
func_4CFB(1,1,param_03);
}
if(!self.var_8E12)
{
thread func_9146();
return;
}
return;
}
thread func_4E1A(0);
}
//Function Number: 7
func_4D16(param_00,param_01)
{
level.player endon("death");
if(level.player getstance() == "prone")
{
thread func_4D18(param_00,param_01);
return;
}
function_01A2(level.player.origin,10,20,5,0.75);
var_02 = "leg_" + param_00;
var_03 = func_2C94(var_02);
func_4CE0(var_02,param_01);
if(var_03)
{
return;
}
if(!func_2C94(var_02))
{
thread func_25E9("injury","leg","generic");
return;
}
thread func_4D12();
var_04 = func_2C94("leg_right") && func_2C94("leg_left");
if(var_04)
{
thread func_25E9("injury","legs","critical");
return;
}
thread func_4D39();
thread func_25E9("injury","leg","critical");
}
//Function Number: 8
func_4D39()
{
level.player endon("nanoshot_healing");
level.player notify("leg_damage");
childthread damage_leg_view_dvar_thread();
for(;;)
{
var_00 = 1;
var_01 = 6;
var_02 = 0.5;
var_03 = level.player getstance();
if(var_03 == "crouch")
{
var_00 = var_00 * 0.5;
var_01 = var_01 * 0.5;
}
if(level.player method_822E() > 0)
{
var_00 = var_00 * 0.5;
var_01 = var_01 * 0.4;
var_02 = var_02 * 0.333333;
}
if(scripts\sp\_utility::func_93AC() || func_2C97())
{
scripts\sp\_utility::func_AB9A("bg_viewBobMax",0,0.5);
level.player method_82B5(0);
}
else if(level.player isonground())
{
level.player method_82B5(var_00);
scripts\sp\_utility::func_AB9A("bg_viewBobMax",var_01,var_02);
}
else
{
level.player method_82B5(1);
scripts\sp\_utility::func_AB9A("bg_viewBobMax",7,0.5);
}
wait(0.05);
}
}
//Function Number: 9
damage_leg_view_dvar_thread()
{
for(;;)
{
var_00 = getdvarint("bg_viewBobConstantAmplitude");
if(level.player islinked() && var_00 == 1)
{
function_01C5("bg_viewBobConstantAmplitude",0);
}
else if(!level.player islinked() && var_00 == 0)
{
function_01C5("bg_viewBobConstantAmplitude",1);
}
wait(0.05);
}
}
//Function Number: 10
func_4D12()
{
level.player endon("death");
if(issubstr(level.player getcurrentprimaryweapon(),"steeldragon"))
{
return;
}
if(!level.player isonground())
{
return;
}
if(scripts\sp\_utility::func_93AC())
{
return;
}
var_00 = level.player getstance();
if(var_00 == "prone")
{
return;
}
level.player scripts\common\utility::func_1C68(0);
if(not_able_to_prone())
{
level.player setstance("crouch");
var_01 = 0;
}
else
{
level.player scripts\common\utility::func_1C40(0);
level.player setstance("prone");
var_01 = 1;
}
level.player scripts\common\utility::allow_jump(0);
thread func_4D13(var_01);
}
//Function Number: 11
not_able_to_prone()
{
if(isdefined(level.player.var_55DC) && level.player.var_55DC > 0)
{
return 1;
}
var_00 = getentarray("trigger_multiple_no_prone","classname");
foreach(var_02 in var_00)
{
if(level.player istouching(var_02))
{
return 1;
}
}
return 0;
}
//Function Number: 12
func_4D18(param_00,param_01)
{
level.player endon("death");
if(param_00 == "chest")
{
thread func_4D11(param_01);
return;
}
var_02 = "arm_" + param_00;
if(func_2C8A() && var_02 == "arm_right")
{
self.var_BF7E = gettime() + 120000 + randomint(120000);
thread func_4D1D();
func_F52C(level.player.health + param_01);
return;
}
playfx(level._effect["vfx_blood_impact"],level.player geteye());
function_01A2(level.player.origin,20,30,10,0.75);
var_03 = func_2C94(var_02);
func_4CE0(var_02,param_01);
if(var_03)
{
return;
}
if(!func_2C94(var_02))
{
thread func_25E9("injury","arm","generic");
return;
}
if(var_02 == "arm_left")
{
thread func_4D36();
if(func_2C94("arm_right"))
{
thread func_4D31();
}
}
else if(var_02 == "arm_right")
{
if(func_2C94("arm_left"))
{
thread func_4D31();
}
else
{
thread func_4D3E();
}
}
var_04 = func_2C94("arm_right") && func_2C94("arm_left");
if(var_04)
{
thread func_25E9("injury","arms","critical");
return;
}
thread func_25E9("injury","arm","critical");
}
//Function Number: 13
func_4D11(param_00)
{
var_01 = func_2C94("chest");
function_01A2(level.player.origin,20,30,10,0.75);
func_4CE0("chest",param_00);
if(var_01)
{
return;
}
if(!func_2C94("chest"))
{
return;
}
thread func_25E9("injury","chest","critical");
}
//Function Number: 14
func_4D13(param_00)
{
level.player endon("death");
level.player method_846F("ges_hold_here",undefined,0.25,0,1,0);
wait(0.6);
level.player stopgestureviewmodel("ges_hold_here");
level.player scripts\common\utility::func_1C68(1);
if(param_00)
{
level.player scripts\common\utility::func_1C40(1);
}
level.player scripts\common\utility::allow_jump(1);
}
//Function Number: 15
func_4D36()
{
level.player endon("death");
level.player endon("both_arms_hurt");
level.player scripts\common\utility::func_1C62(0);
level.player scripts\common\utility::func_1C53(0);
level.player scripts\common\utility::func_1C35(0);
level.player scripts\common\utility::func_1C58(0);
level.player scripts\sp\_utility::func_1C72(0);
level.player scripts\sp\_utility::func_1C34(0);
level notify("pause_jackal_streak_message");
if(scripts\sp\_utility::func_D0BD("grapplingdevice",1))
{
level.player notify("spacegrapple_cancel");
level.player method_8507();
}
thread func_4D37();
thread func_4D38();
thread func_4D35();
level.player waittill("nanoshot_healing");
level.player scripts\common\utility::func_1C62(1);
level.player stopgestureviewmodel("ges_left_arm_damage");
level.player stopgestureviewmodel("ges_left_arm_damage_reload");
}
//Function Number: 16
func_4D35()
{
level.player endon("nanoshot_healing");
level endon("both_arms_hurt");
level.player method_846F("ges_left_arm_damage",undefined,0.2,0,1,0);
var_00 = 1;
wait(var_00);
for(;;)
{
wait(0.05);
if(!func_2C88())
{
continue;
}
level.player method_846F("ges_left_arm_damage",undefined,0,var_00,1,1);
}
}
//Function Number: 17
func_4D37()
{
level.player endon("nanoshot_healing");
level.player endon("headshot_death");
level.player endon("death");
for(;;)
{
level.player waittill("frag_pressed");
if(func_2C87())
{
level.player playsound("melee_knife_human_default_fatal_plr");
var_00 = level.player getweaponammostock("nanoshot");
level.player setweaponammostock("nanoshot",var_00 - 1);
wait(1);
level.player stopgestureviewmodel("ges_both_arm_damage",0.75,1);
level.player stopgestureviewmodel("ges_left_arm_damage",0.75,1);
thread func_BE54();
}
wait(0.05);
}
}
//Function Number: 18
func_4D38()
{
level.player endon("nanoshot_healing");
for(;;)
{
level.player waittill("reload_pressed");
if(!func_2C89())
{
continue;
}
thread damageed_left_arm_reload_internal();
level.player waittill("damaged_left_arm_reload_done");
}
}
//Function Number: 19
damageed_left_arm_reload_internal()
{
self.var_4C97 = 1;
level.player method_846F("ges_left_arm_damage_reload",undefined,0.2,0,1,1);
level.player scripts\common\utility::func_1C46(0);
wait(2.7);
if(func_2C94("arm_right") && func_2C94("arm_left"))
{
level.player method_846F("ges_both_arm_damage",undefined,0.5,0,1,1);
}
else if(func_2C94("arm_left"))
{
level.player method_846F("ges_left_arm_damage",undefined,0.2,1,1,1);
}
var_00 = level.player getcurrentprimaryweapon();
var_01 = weaponclipsize(var_00);
var_02 = level.player method_8118();
var_03 = level.player getweaponammostock(var_00);
var_04 = min(var_01 - var_02,var_03);
level.player setweaponammoclip(var_00,int(var_02 + var_04));
level.player setweaponammostock(var_00,int(var_03 - var_04));
level.player scripts\common\utility::func_1C46(1);
self.var_4C97 = 0;
level.player notify("damaged_left_arm_reload_done");
}
//Function Number: 20
func_4D3E()
{
level.player endon("nanoshot_healing");
level endon("both_arms_hurt");
for(;;)
{
wait(0.05);
if(!func_2C88())
{
continue;
}
level.player method_846F("ges_right_arm_damage",undefined,0.5,0,1,1);
}
}
//Function Number: 21
func_4D31()
{
level notify("both_arms_hurt");
level.player endon("nanoshot_healing");
for(;;)
{
wait(0.05);
if(!func_2C88())
{
continue;
}
level.player method_846F("ges_both_arm_damage",undefined,0.5,0,1,1);
}
}
//Function Number: 22
func_4D1D()
{
level.player specialist_allow_invulnerability(1);
level.player playgestureviewmodel("ges_shocknade_loop",undefined,1,0.25,0,0);
function_0178("bullet_ricochet_heavy",level.player geteye());
self.var_86F4--;
level.player giveweapon("iw7_fists_specialist_mode");
level.player switchtoweapon("iw7_fists_specialist_mode");
level.player disableweaponpickup();
thread func_86CB(0);
wait(0.5);
level.player stopgestureviewmodel("ges_shocknade_loop");
}
//Function Number: 23
func_86CB(param_00)
{
var_01 = level.player getcurrentprimaryweapon();
if(level.player method_8519(var_01,1) && !issubstr(var_01,"iw7_fmg"))
{
var_01 = weaponaltweaponname(var_01);
}
var_02 = level.player method_8446() || !level.player isonground();
if(!var_02)
{
level.player allowmovement(0);
wait(0.1);
}
var_03 = level.player geteye() + (0,0,-3);
var_03 = var_03 + anglestoforward(level.player.angles) * 19;
var_03 = var_03 + anglestoright(level.player.angles) * 7;
var_04 = spawn("weapon_" + var_01,var_03);
var_04.angles = level.player.angles;
if(!param_00)
{
var_04 thread func_86CC(var_01,var_02);
return;
}
level.player takeweapon(var_01);
var_04 physicslaunchserveritem(var_04.origin,var_04.origin + anglestoforward(level.player.angles) * 30);
}
//Function Number: 24
func_86CC(param_00,param_01)
{
var_02 = level.player method_8118();
var_03 = level.player getweaponammostock(param_00);
if(!param_01)
{
thread func_86CE(0.5);
}
else
{
thread gun_drop_while_wallrunning();
}
level.player takeweapon(level.player getcurrentprimaryweapon());
var_04 = level.player getplayerangles();
var_05 = vectortoangles(self.origin - level.player geteye());
level.player setplayerangles(var_05);
level.player method_80D8(0.05,0.05);
scripts\sp\_audio::func_F5A0();
setslowmotion(1,0.1,0.05);
var_06 = scripts\common\utility::spawn_tag_origin(self.origin,(0,0,0));
var_06 linkto(self);
playfxontag(level._effect["vfx_gun_sparks"],var_06,"tag_origin");
scripts\common\utility::func_C0A6(0.1,::playfxontag,level._effect["vfx_gun_sparks"],var_06,"tag_origin");
var_06 scripts\common\utility::delaycall(1,::delete);
thread scripts\sp\_utility::func_C12D("weapon_pickup_failed",0.5);
level.player scripts\common\utility::delaycall(0.5,::enableweaponpickup);
thread func_86C9();
thread func_86CF(param_00);
level scripts\common\utility::waittill_any_3("weapon_pickup_failed","player_grabbed_weapon");
setslowmotion(0.25,1,0.4);
level.player method_80D8(1,1);
level.player allowmovement(1);
level.player specialist_allow_invulnerability(0);
scripts\sp\_audio::func_F59F();
thread func_86CD(param_00,var_02,var_03);
}
//Function Number: 25
func_86CD(param_00,param_01,param_02)
{
for(;;)
{
level.player waittill("weapon_change",var_03);
if(isdefined(var_03) && var_03 == "none" || var_03 == "iw7_fists_specialist_mode")
{
continue;
}
if(scripts\sp\_utility::func_D0CA("iw7_fists_specialist_mode"))
{
level.player takeweapon("iw7_fists_specialist_mode");
}
if(isdefined(self))
{
if(distance2dsquared(self.origin,level.player.origin) > 1000000)
{
break;
}
continue;
}
else if(var_03 == param_00)
{
level.player setweaponammoclip(var_03,param_01);
level.player setweaponammostock(var_03,param_02);
break;
}
}
}
//Function Number: 26
func_86CE(param_00)
{
level endon("player_grabbed_weapon");
var_01 = 0.27;
var_02 = gettime() + var_01 * 1000;
var_03 = param_00 - var_01;
var_04 = 20;
var_05 = 15;
var_06 = 1;
var_07 = 2.5;
while(gettime() < var_02)
{
if(!isdefined(self))
{
break;
}
var_08 = level.player geteye();
var_09 = anglestoforward(level.player.angles);
var_0A = anglestoup(level.player.angles);
var_0B = var_08 + var_09 * var_04;
var_0B = var_0B + var_0A * var_05;
var_0C = distance(self.origin,var_0B);
var_0D = vectortoangles(var_0B - self.origin);
var_0D = anglestoforward(var_0D);
var_0E = lib_0B4D::func_C097(0,var_04,var_0C);
self.origin = self.origin + var_0D * var_07;
var_0F = randomfloatrange(-11,-9);
self.angles = self.angles + (var_0F,var_0F,var_0F);
wait(0.05);
}
wait(var_03);
level notify("weapon_pickup_failed");
}
//Function Number: 27
gun_drop_while_wallrunning()
{
level endon("player_grabbed_weapon");
var_00 = anglestoforward(level.player getplayerangles());
self.origin = self.origin + var_00 * 20;
var_01 = vectornormalize(level.player getvelocity() + (0,0,10));
self physicslaunchserveritem(self.origin,var_01 * 1700);
wait(0.5);
level notify("weapon_pickup_failed");
}
//Function Number: 28
func_86C9()
{
if(level.console || level.player usinggamepad())
{
scripts\sp\_utility::func_56BE("press_use_console",0.5);
return;
}
scripts\sp\_utility::func_56BE("press_use_pc",0.5);
}
//Function Number: 29
func_86C8()
{
return level.player usebuttonpressed();
}
//Function Number: 30
func_86CF(param_00)
{
level.player endon("death");
level endon("weapon_pickup_failed");
level.player waittill("use_pressed");
level.player stopgestureviewmodel("ges_shocknade_loop",0);
level.player playgestureviewmodel("ges_swipe",self,1,0,0.3,1);
var_01 = level.player.origin + anglestoforward(level.player.angles) * -30;
if(!scripts\common\utility::func_13D90(var_01,level.player.angles,self.origin,0.5))
{
return;
}
if(distancesquared(level.player geteye(),self.origin) > 2500)
{
return;
}
level notify("player_grabbed_weapon");
func_86CA();
function_0178("scrap_pickup_small",level.player.origin);
level.player giveweapon(param_00);
level.player switchtoweapon(param_00);
if(scripts\sp\_utility::func_D0CA("iw7_fists_specialist_mode"))
{
level.player takeweapon("iw7_fists_specialist_mode");
}
}
//Function Number: 31
func_86CA()
{
var_00 = level.player geteye() + (0,0,-20);
var_00 = var_00 + anglestoright(level.player getplayerangles()) * 5;
var_00 = var_00 + anglestoforward(level.player getplayerangles()) * -25;
var_01 = distance(var_00,self.origin);
var_02 = vectortoangles(var_00 - self.origin);
var_02 = anglestoforward(var_02);
var_03 = self.origin;
var_04 = 0.5;
var_05 = 0;
while(var_05 < 1 && isdefined(self))
{
self.origin = var_03 + var_02 * var_01 * var_05;
var_05 = var_05 + var_04;
wait(0.05);
}
if(isdefined(self))
{
self delete();
}
}
//Function Number: 32
func_BE50()
{
level.player endon("death");
thread func_BE4F();
thread nanoshot_pickup_watcher();
for(;;)
{
level.player waittill("grenade_fire",var_00,var_01);
if(var_01 == "nanoshot")
{
level.player playsound("melee_knife_human_default_fatal_plr");
var_00 delete();
thread func_BE54();
}
wait(0.05);
}
}
//Function Number: 33
func_BE4F()
{
level.player endon("death");
for(;;)
{
wait(0.05);
if(func_2C99())
{
level.player method_858B();
continue;
}
level.player method_858C();
}
}
//Function Number: 34
func_BE54()
{
level.player notify("nanoshot_healing");
thread func_BE53();
thread func_BE51();
thread announce_healed();
var_00 = func_2296(0);
foreach(var_02 in var_00)
{
thread func_BE52(var_02);
}
func_F52C(level.player.maxhealth);
}
//Function Number: 35
announce_healed()
{
var_00 = 0;
var_01 = 0;
var_02 = func_2C94("leg_left") || func_2C94("leg_right");
if(var_02)
{
var_00 = func_2C94("leg_left") && func_2C94("leg_right");
}
var_03 = func_2C94("arm_left") || func_2C94("arm_right");
if(var_03)
{
var_01 = func_2C94("arm_left") && func_2C94("arm_right");
}
if(!var_02 && var_03)
{
if(var_01)
{
if(scripts\common\utility::func_4347())
{
thread func_25E9("repair","arms");
return;
}
thread func_25E9("repair","status");
return;
}
thread func_25E9("repair","arm");
return;
}
if(var_02 && !var_03)
{
if(var_00)
{
if(scripts\common\utility::func_4347())
{
thread func_25E9("repair","legs");
return;
}
thread func_25E9("repair","status");
return;
}
thread func_25E9("repair","leg");
return;
}
thread func_25E9("repair","status");
}
//Function Number: 36
func_BE53()
{
var_00 = func_2C94("leg_left") || func_2C94("leg_right");
if(var_00)
{
var_01 = 0.25;
thread scripts\sp\_utility::func_AB9A("bg_viewBobMax",7,var_01);
level.player method_82B5(0);
level.player endon("leg_damage");
wait(var_01);
function_01C5("bg_viewBobConstantAmplitude",0);
}
}
//Function Number: 37
func_BE51()
{
if(func_2C94("arm_left"))
{
level.player scripts\common\utility::func_1C53(1);
level.player scripts\common\utility::func_1C35(1);
level.player scripts\common\utility::func_1C58(1);
level.player scripts\sp\_utility::func_1C72(1);
level.player scripts\sp\_utility::func_1C34(1);
if(scripts\sp\_utility::func_D0BD("grapplingdevice",1))
{
level.player method_8503("ges_grapple","ges_grav_jump_combat_fail",level.var_10533,level.var_10532);
}
}
}
//Function Number: 38
func_8DE3()
{
level.player endon("death");
thread func_8DE0();
thread func_8DE1();
for(;;)
{
level.player waittill("smoke_pressed");
if(!func_2C8B())
{
continue;
}
level.var_10964.togglinghelmet = 1;
if(bool_player_helmet_damaged_enough())
{
func_F3FF(0);
}
var_00 = level.player getweaponammostock("helmet");
level.player setweaponammostock("helmet",var_00 - 1);
func_8E05();
level.var_10964.togglinghelmet = undefined;
}
}
//Function Number: 39
func_8DE0()
{
func_137D2();
func_F400(1);
}
//Function Number: 40
func_8DE1()
{
level.player endon("death");
for(;;)
{
var_00 = level.player.var_4B21;
level.player waittill("secondary_equipment_change",var_01);
if(var_01 == "helmet")
{
if(scripts\sp\_utility::func_D0BD("grapplingdevice",1) && !func_2C94("arm_left"))
{
level.player method_8507();
}
level.player scripts\common\utility::func_1C56(0);
continue;
}
if(var_00 == "helmet")
{
if(scripts\sp\_utility::func_D0BD("grapplingdevice",0) && !func_2C94("arm_left"))
{
level.player method_8503("ges_grapple","ges_grav_jump_combat_fail",level.var_10533,level.var_10532);
}
level.player scripts\common\utility::func_1C56(1);
}
}
}
//Function Number: 41
func_8E01()
{
level.var_10964.var_BB4A = 1;
func_F3FF(0);
}
//Function Number: 42
func_4CE0(param_00,param_01)
{
var_02 = level.var_10964.var_2C19[param_00];
var_03 = var_02.health - param_01 <= 30;
if(self.var_BFAA && !var_03)
{
var_04 = var_02.health - param_01 - 30;
param_01 = param_01 + var_04;
func_F52C(level.player.health - var_04);
}
var_02.health = var_02.health - param_01;
var_02.health = clamp(var_02.health,0,var_02.maxhealth);
if(func_2C95())
{
level.var_10964 thread func_9151();
}
var_05 = var_02.health / var_02.maxhealth;
self.var_98F1[param_00] notify("hud_flicker_stop");
self.var_98F1[param_00].alpha_req = 1 - var_05;
}
//Function Number: 43
func_BE52(param_00)
{
self.var_98F1[param_00.name] notify("hud_flicker_stop");
self.var_98F1[param_00.name].alpha_req = 0;
param_00.health = param_00.maxhealth;
}
//Function Number: 44
func_4CFB(param_00,param_01,param_02)
{
level.player playrumbleonentity("grenade_rumble");
if(param_01)
{
function_01A2(level.player.origin,50,60,10,0.75);
function_0178("plr_helmet_glass_break",level.player geteye());
}
if(!isdefined(param_02))
{
param_02 = level.player.origin + scripts\common\utility::func_DCC8(500);
}
var_03 = scripts\common\utility::func_13D90(level.player geteye(),level.player.angles,param_02,0.866025);
var_04 = level.player lib_0B4D::func_9C86(param_02);
if((var_03 && var_04) || !var_03 && !var_04)
{
var_05 = [-55,100];
var_06 = [30,430];
}
else
{
var_05 = [500,650];
var_06 = [30,400];
}
if(isdefined(level.var_10964.var_A99C))
{
var_07 = var_06[1] - var_06[0] * 0.5;
if(level.var_10964.var_A99C > var_07)
{
var_06[1] = var_06[1] - int(var_07);
}
else
{
var_06[0] = var_06[0] + int(var_07);
}
}
var_08 = randomintrange(var_05[0],var_05[1]);
var_09 = randomintrange(var_06[0],var_06[1]);
level.var_10964.var_A99C = var_09;
thread func_914F(var_08,var_09,param_00,!var_04);
}
//Function Number: 45
func_914F(param_00,param_01,param_02,param_03)
{
var_04 = [];
if(param_02)
{
var_05 = ["crack","burn"];
}
else
{
var_05 = ["crack"];
}
var_06 = randomintrange(270,350);
foreach(var_08 in var_05)
{
var_04[var_08] = newclienthudelem(level.player);
var_04[var_08] setshader("helmet_" + var_08 + "_0" + param_03,var_06,var_06);
var_04[var_08].alignx = "center";
var_04[var_08].aligny = "middle";
var_04[var_08].x = param_00;
var_04[var_08].y = param_01;
var_04[var_08].sort = 2;
var_04[var_08].foreground = 1;
}
level.var_10964.helmetimpacts[level.var_10964.helmetimpacts.size] = var_04;
if(param_02)
{
var_04["burn"].alpha = 0.7;
var_0A = 3;
var_04["burn"] scripts\common\utility::func_5127(0.5,::scripts\sp\_hud_util::func_6AAB,0,var_0A - 0.5);
var_04["burn"] thread func_9175(var_0A);
}
func_137D1();
if(isdefined(level.var_10964.var_BB4A) && level.var_10964.var_BB4A)
{
level.var_10964 func_915F(var_04);
}
if(scripts\common\utility::istrue(level.var_10964.jackalhelmetcrackfade))
{
level.var_10964 hud_fade_cracks(var_04,var_05,4);
level.var_10964.jackalhelmetcrackfade = undefined;
}
var_04["crack"] destroy();
if(param_02 && isdefined(var_04["burn"]))
{
var_04["burn"] destroy();
}
scripts\common\utility::func_22BC(level.var_10964.helmetimpacts);
}
//Function Number: 46
func_9147(param_00)
{
level.player playrumbleonentity("grenade_rumble");
if(param_00)
{
function_01A2(level.player.origin,50,60,10,0.75);
function_0178("plr_helmet_glass_break",level.player geteye());
}
var_01 = newclienthudelem(level.player);
var_01.foreground = 1;
var_01.alignx = "left";
var_01.aligny = "top";
var_01.horzalign = "fullscreen";
var_01.vertalign = "fullscreen";
var_01 setshader("helmet_broken",640,480);
level.var_10964.helmetimpacts[level.var_10964.helmetimpacts.size]["crack"] = var_01;
func_137D1();
var_01 destroy();
}
//Function Number: 47
func_4CE1()
{
func_F3FF(0);
function_0178("glass_pane_piece_break",level.player geteye());
function_01A2(level.player.origin,70,80,40,1);
thread func_25E9("injury","helmet");
level.player specialist_allow_invulnerability(1);
level.player scripts\common\utility::func_1C35(0);
playfx(level._effect["vfx_gun_sparks"],level.player geteye(),anglestoforward(level.player.angles),anglestoup(level.player.angles));
if(isdefined(level.var_10964.var_8DDA))
{
level.var_10964.var_8DDA hide();
}
thread func_4D17();
wait(0.5);
level.player scripts\common\utility::func_1C35(1);
wait(1);
level.player specialist_allow_invulnerability(0);
}
//Function Number: 48
func_4D17()
{
level endon("player_replacing_helmet");
level.player endon("death");
level.player endon("headshot_death");
if(!level.player.var_8C0F)
{
level.player playsound("player_death_helmet_decomp");
}
for(;;)
{
if(level.player.var_8C0F)
{
wait(0.05);
continue;
}
self.var_D430 = 1;
if(!func_2C94("arm_left"))
{
level.player scripts\common\utility::delaycall(0.2,::playgestureviewmodel,"ges_neck_grab",undefined,1,0.3,0.2,0);
}
level.player shellshock("plane_sway",12);
level.player method_82C2("phstreets_building_hvt_breach","reverb","mix","filter");
level.player scripts\common\utility::func_1C62(0);
scripts\sp\_utility::func_D020();
thread func_25E9("injury","oxygen");
var_00 = gettime() + 12000;
var_01 = 0;
while(gettime() < var_00)
{
function_01A7(var_01,0.05);
if(func_2C95())
{
self.var_D430 = 0;
level.player stopgestureviewmodel("ges_neck_grab");
level.player stopshellshock();
level.player method_8070(2);
function_01A7(0,1);
level.player scripts\common\utility::func_1C62(1);
level.player scripts\common\utility::func_5127(1.5,::scripts\sp\_utility::func_CE2F,"breathing_better");
scripts\common\utility::func_5127(2,::func_25E9,"repair","oxygen");
level notify("player_replacing_helmet");
break;
}
var_01 = var_01 + 0.025;
wait(0.05);
}
level.player method_80A1();
level.player method_81D0();
scripts\sp\_utility::func_B8D1();
}
}
//Function Number: 49
hide_helmet_impacts()
{
if(!isdefined(level.var_10964.helmetimpacts))
{
return;
}
foreach(var_01 in level.var_10964.helmetimpacts)
{
foreach(var_03 in var_01)
{
if(!isdefined(var_03))
{
continue;
}
var_03.old_alpha = var_03.alpha;
var_03.alpha = 0;
}
}
}
//Function Number: 50
show_helmet_impacts()
{
if(!isdefined(level.var_10964.helmetimpacts))
{
return;
}
foreach(var_01 in level.var_10964.helmetimpacts)
{
foreach(var_03 in var_01)
{
if(!isdefined(var_03))
{
continue;
}
var_03.alpha = var_03.old_alpha;
var_03.old_alpha = undefined;
}
}
}
//Function Number: 51
func_8E05()
{
level.player notify("putting_on_helmet");
if(!isdefined(level.var_10964.var_8DDA))
{
level.var_10964.var_8DDA = spawn("script_model",level.player.origin);
level.var_10964.var_8DDA setmodel("vm_hero_protagonist_helmet");
level.var_10964.var_8DDA method_81E2(level.player,"tag_playerhelmet",(0,0,0),(0,0,0),1,"view_jostle");
level.var_10964.var_8DDA notsolid();
}
level.player method_8024(0.25,0);
level.var_10964.var_8DDA show();
level.var_10964.var_8DDA method_83D0(#animtree);
level.var_10964.var_8DDA method_806F(%vm_gesture_visor_up_visor,0);
level.var_10964.var_8DDA method_82A2(%vm_gesture_visor_down_visor);
thread lib_0E4B::func_8DE2();
level.player playsound("plr_helmet_visor_on");
level.player scripts\common\utility::delaycall(0.65,::method_82C3,"helmet_on_visor_down",0.2,"mix","filter");
level.player scripts\common\utility::delaycall(1.4,::playsound,"plr_helmet_oxygen_lr");
level.player scripts\common\utility::delaycall(2.8,::playsound,"plr_helmet_short_boot_up_lr");
level.player scripts\common\utility::delaycall(3.15,::method_8070,0.2);
level.player method_846F("ges_visor_down",undefined,undefined,undefined,1);
wait(getanimlength(%vm_gesture_visor_down_visor));
func_F3FF(1);
level.var_10964.var_8E1B = 0;
level.player method_8024(0.25,1);
}
//Function Number: 52
specialist_helmet_on_immediate()
{
level.var_10964.var_8DDA = spawn("script_model",level.player.origin);
level.var_10964.var_8DDA setmodel("vm_hero_protagonist_helmet");
level.var_10964.var_8DDA method_81E2(level.player,"tag_playerhelmet",(0,0,0),(0,0,0),1,"view_jostle");
level.var_10964.var_8DDA notsolid();
level.player method_8024(0.25,0);
func_F3FF(1);
}
//Function Number: 53
func_4E1A(param_00)
{
if(!isalive(level.player))
{
return;
}
level.player notify("headshot_death");
if(scripts\sp\_utility::func_93AB())
{
level.player method_8591(1);
function_0229();
scripts\sp\_endmission::func_41ED();
}
level.player scripts\common\utility::func_1C6E(0);
level.player freezecontrols(1);
level.player method_83AD();
scripts\sp\_utility::func_D020();
setomnvar("ui_hide_weapon_info",1);
function_01C5("hud_showstance",0);
function_01C5("actionSlotsHide",1);
level.player method_82C2("phstreets_building_hvt_breach","reverb","mix","filter","occlusion","ambient","ambient_events","player_adsr","weapon_reflection","contexts","full_occlusion");
level.player playrumbleonentity("grenade_rumble");
playfx(level.var_7649["human_gib_head"],level.player geteye(),anglestoforward(level.player.angles),function_02D3(level.player.angles));
playfx(level.var_7649["human_gib_fullbody"],level.player geteye() + (0,0,5));
function_0178("bullet_large_flesh_head_npc",level.player geteye());
function_0178("bullet_impact_headshot",level.player geteye());
self.var_98F1["pristine"].foreground = 1;
self.var_98F1["pristine"].alpha_req = 0.5;
self.var_98F1["skull"].alpha_req = 0.5;
function_01A2(level.player.origin,8,2,2,6);
function_01DC(0,7);
function_01A7(3,3);
thread func_4E0F();
var_01 = level.player getcurrentprimaryweapon();
if(isdefined(var_01) && var_01 != "none" && var_01 != "iw7_fists_specialist_mode" && var_01 != "mars_killstreak")
{
thread func_86CB(1);
}
if(param_00)
{
level.player method_80AA();
level.player method_80A1();
level.player method_81D0();
scripts\sp\_utility::func_B8D1();
return;
}
level.player playsound("plr_death_explosion");
var_02 = scripts\common\utility::spawn_tag_origin(level.player.origin,level.player.angles);
level.player playerlinktoabsolute(var_02,"tag_origin");
func_F52C(1);
level.player specialist_allow_invulnerability(1);
level.player method_84FE();
level.player.ignoreme = 1;
var_02 thread func_4E10();
}
//Function Number: 54
func_4E10()
{
var_00 = level.player isonground();
var_01 = level.player getstance();
if(var_01 == "stand")
{
var_02 = -43;
}
else
{
var_02 = -30;
}
level.player takeweapon(level.player getcurrentprimaryweapon());
var_03 = anglestoforward(level.player.angles) * -30;
self rotatepitch(-20,0.25);
if(var_01 == "crouch")
{
self moveto(self.origin + (0,0,15) + anglestoforward(level.player.angles) * -10,0.35);
}
else if(var_01 == "stand")
{
self moveto(self.origin + (0,0,25) + anglestoforward(level.player.angles) * -10,0.35);
}
wait(0.35);
level.player method_80AA();
wait(0.65);
self rotatepitch(-5,0.25);
if(var_01 == "prone" || !var_00 || scripts\sp\_utility::func_93AC())
{
wait(4);
level.player method_80A1();
level.player method_81D0();
scripts\sp\_utility::func_B8D1();
return;
}
self moveto(self.origin + (0,0,var_02) + var_03 / 15,0.5);
wait(0.5);
level.player playrumbleonentity("grenade_rumble");
wait(0.5);
self rotatepitch(10,0.5,0.5);
wait(0.5);
var_04 = 0.45;
self rotatepitch(92,var_04);
var_05 = self.origin + var_03 + (0,0,11);
level.player playsound("player_death_fall_back");
self moveto(var_05,var_04,0,var_04);
wait(var_04);
earthquake(0.75,0.75,level.player.origin,200);
level.player playrumbleonentity("grenade_rumble");
playfx(level._effect["deathfx_bloodpool_generic"],level.player geteye() + (0,0,-25) + anglestoforward(level.player.angles) * -4);
wait(4);
level.player method_80A1();
level.player method_81D0();
scripts\sp\_utility::func_B8D1();
}
//Function Number: 55
func_4E0F()
{
for(var_00 = 0;var_00 < 4;var_00++)
{
wait(randomfloatrange(0.05,0.25));
playfx(level.var_7649["human_gib_head"],level.player geteye() + (0,0,5));
}
}
//Function Number: 56
func_4E1B()
{
var_00 = level.player scripts\common\utility::func_13734("death","headshot_death");
level waittill("do_death_hint");
var_01 = 204;
var_02 = var_01 + 6;
var_03 = var_02 + 11;
var_04 = var_03 + 6;
var_05 = 0.25;
var_06 = 0.05;
var_01 = randomintrange(var_01,var_02);
var_07 = 0;
var_08 = randomfloat(1);
if(var_08 <= var_06)
{
var_07 = 1;
var_01 = randomintrange(var_03,var_04);
var_09 = 0;
while(getomnvar("ui_death_hint") == var_01)
{
var_01 = randomintrange(var_03,var_04);
var_09++;
if(var_09 % 20)
{
wait(0.05);
}
}
}
else if(var_08 <= var_05)
{
var_01 = randomintrange(var_02,var_03);
var_09 = 0;
while(getomnvar("ui_death_hint") == var_01)
{
var_01 = randomintrange(var_02,var_03);
var_09++;
if(var_09 % 20)
{
wait(0.05);
}
}
}
if(scripts\sp\_utility::func_93AB())
{
var_01 = 230;
}
else if(!func_2C97())
{
if(func_2C96("nanoshot",0,1))
{
var_01 = 200;
}
if(randomint(100) < 40)
{
if(var_00 == "headshot_death" && !func_2C96("helmet",0,1))
{
var_01 = 203;
}
if(var_00 == "headshot_death" && func_2C96("helmet",0,1))
{
var_01 = 201;
}
if(var_00 == "headshot_death" && var_07)
{
var_01 = 226;
}
}
if(level.var_10964.var_D430)
{
if(func_2C96("helmet",0,1))
{
var_01 = 202;
}
else
{
var_01 = 208;
}
}
if(level.script == "europa" && var_07 && randomint(100) < 20)
{
var_01 = 228;
}
else if(level.script == "yard" && var_07 && randomint(100) < 20)
{
var_01 = 229;
}
}
setomnvar("ui_death_hint",var_01);
}
//Function Number: 57
func_12AAF()
{
thread func_12AAC();
thread func_12AAD();
thread func_12AAB();
thread func_12AB2();
thread func_12AAA();
if(func_2C91())
{
thread func_12AB1();
}
}
//Function Number: 58
func_12AAC()
{
level.player endon("headshot_death");
level.player endon("death");
var_00 = 4;
for(;;)
{
var_01 = level.player scripts\common\utility::func_13734("frag_pressed","smoke_pressed","actionslot_weapon_pressed");
if(!isdefined(level.player.var_1586) && var_01 == "actionslot_weapon_pressed")
{
continue;
}
if(func_2C97())
{
continue;
}
if(!func_2C94("arm_left"))
{
continue;
}
var_02 = scripts\sp\_utility::func_7BD6();
if(isdefined(var_02) && var_02 == "nanoshot" && var_01 == "frag_pressed")
{
continue;
}
level.var_10964.var_58DE = 1;
thread scripts\sp\_utility::func_56BE("left_arm_tutorial_hint_equipment",var_00);
wait(var_00);
level.var_10964.var_58DE = 0;
level.var_10964 notify("tutorial_over");
}
}
//Function Number: 59
func_12AAD()
{
level.player endon("headshot_death");
level.player endon("death");
var_00 = 4;
for(;;)
{
level.player waittill("melee_pressed");
if(func_2C97())
{
continue;
}
if(!func_2C94("arm_left"))
{
continue;
}
if(isdefined(level.player.inrodeo) && level.player.inrodeo)
{
continue;
}
level.var_10964.var_58DE = 1;
thread scripts\sp\_utility::func_56BE("left_arm_tutorial_hint_melee",var_00);
wait(var_00);
level.var_10964.var_58DE = 0;
level.var_10964 notify("tutorial_over");
}
}
//Function Number: 60
func_12AAB()
{
level.player endon("headshot_death");
level.player endon("death");
var_00 = 4;
for(;;)
{
level.player waittill("smoke_pressed");
if(func_2C97())
{
continue;
}
if(func_2C94("arm_left"))
{
continue;
}
if(!func_2C95())
{
continue;
}
var_01 = scripts\sp\_utility::func_7C3D();
if(!isdefined(var_01))
{
continue;
}
if(var_01 != "helmet")
{
continue;
}
if(!level.player getweaponammostock(var_01))
{
continue;
}
if(level.var_10964.var_8E1B > 0)
{
continue;
}
level.var_10964.var_58DE = 1;
thread scripts\sp\_utility::func_56BE("helmet_already_on_tutorial_hint",var_00);
wait(var_00);
level.var_10964.var_58DE = 0;
level.var_10964 notify("tutorial_over");
}
}
//Function Number: 61
func_12AB2()
{
level.player endon("headshot_death");
level.player endon("death");
var_00 = 4;
for(;;)
{
level.player waittill("frag_pressed");
if(level.player method_8448())
{
continue;
}
if(!func_2C99())
{
continue;
}
var_01 = scripts\sp\_utility::func_7BD6();
if(!isdefined(var_01))
{
continue;
}
if(var_01 != "nanoshot")
{
continue;
}
if(!level.player getweaponammostock(var_01))
{
continue;
}
level.var_10964.var_58DE = 1;
thread scripts\sp\_utility::func_56BE("nanoshot_tutorial_hint_at_max_health",var_00);
wait(var_00);
level.var_10964.var_58DE = 0;
level.var_10964 notify("tutorial_over");
}
}
//Function Number: 62
func_12AB1()
{
level.player endon("death");
level.player endon("headshot_death");
for(;;)
{
wait(0.05);
func_137F1();
func_1381A();
if(func_2C97())
{
continue;
}
if(!func_2C98())
{
continue;
}
if(!func_2C96("nanoshot",0,0))
{
continue;
}
if(func_2C96("nanoshot",0,1) && !scripts\sp\_utility::func_D0BD("nanoshot",0))
{
level.player lib_0B2A::func_1418();
}
if(isdefined(level.player.inrodeo) && level.player.inrodeo)
{
continue;
}
level.player specialist_allow_invulnerability(1);
var_00 = 1.5;
level.var_10964.var_58DE = 1;
thread scripts\sp\_utility::func_56BE("nanoshot_tutorial_hint",var_00);
level.player scripts\common\utility::waittill_notify_or_timeout("frag_pressed",var_00);
function_01D3(1);
wait(2);
level.player specialist_allow_invulnerability(0);
level.var_10964.var_58DE = 0;
level.var_10964 notify("tutorial_over");
break;
}
}
//Function Number: 63
func_12AAA()
{
level.player endon("death");
level.player endon("headshot_death");
var_00 = 0;
func_137D2();
for(;;)
{
wait(0.05);
func_137D1();
func_1381A();
if(!isdefined(level.var_10964.allowhints))
{
continue;
}
if(func_2C97())
{
continue;
}
if(func_2C95())
{
continue;
}
if(isdefined(level.var_10964.togglinghelmet) && level.var_10964.togglinghelmet)
{
continue;
}
if(func_2C94("arm_left"))
{
continue;
}
if(isdefined(level.player.inrodeo) && level.player.inrodeo)
{
continue;
}
if(func_2C96("helmet",1,1))
{
var_01 = "helmet_tutorial_hint";
}
else if(func_2C96("helmet",0,1))
{
var_01 = "helmet_equip";
}
else
{
var_01 = "helmet_find";
}
var_02 = 0;
if(func_2C91() && func_2C96("helmet",0,1) && !var_00)
{
if(!scripts\sp\_utility::func_D0BD("helmet",0))
{
level.player lib_0B2A::func_1419();
}
var_01 = "helmet_tutorial_hint";
level.player specialist_allow_invulnerability(1);
var_02 = 1;
var_03 = 1.5;
}
else
{
var_03 = 4;
}
level.var_10964.var_58DE = 1;
thread scripts\sp\_utility::func_56BE(var_01,var_03);
level.player scripts\common\utility::waittill_notify_or_timeout("smoke_pressed",var_03);
function_01D3(1);
wait(2);
if(var_02)
{
level.player specialist_allow_invulnerability(0);
}
level.var_10964.var_58DE = 0;
level.var_10964 notify("tutorial_over");
if(func_2C91())
{
var_00 = 1;
continue;
}
func_137D2();
}
}
//Function Number: 64
tutorial_loadout()
{
level.player scripts\common\utility::func_1C6E(0);
wait(0.25);
setslowmotion(1,0.2,0.5);
var_00 = 1.2;
scripts\sp\_utility::func_56BE("specialist_loadout",var_00);
wait(var_00);
setslowmotion(0.2,1,2);
level.player scripts\common\utility::func_1C6E(1);
}
//Function Number: 65
func_25E9(param_00,param_01,param_02)
{
level.var_10964.var_2610 scripts\sp\_utility::func_74D7(::audio_request_suit_vo_internal,param_00,param_01,param_02);
}
//Function Number: 66
audio_request_suit_vo_internal(param_00,param_01,param_02)
{
if(isdefined(param_00) && param_00 == "nag")
{
if(isdefined(param_01) && param_01 == "helmet")
{
if(!level.var_10964.var_8E1B)
{
return;
}
if(isdefined(level.var_10964.togglinghelmet))
{
return;
}
}
if(isdefined(param_01) && param_01 == "nano" || param_01 == "status")
{
if(!func_2C98())
{
return;
}
}
}
else
{
wait(0.7);
}
if(isdefined(param_00) && param_00 == "injury")
{
if(isdefined(param_01))
{
if(!level.var_10964 ispartinjured(param_01))
{
return;
}
}
}
else if(isdefined(param_00) && param_00 == "repair")
{
if(isdefined(param_01) && param_01 == "status")
{
var_03 = ["legs","arms","chest"];
foreach(var_05 in var_03)
{
if(level.var_10964 ispartinjured(var_05))
{
return;
}
}
}
}
if(level.var_10964.var_10B3B > 1)
{
return;
}
level.var_10964.var_10B3B++;
while(level.var_10964.var_111BE)
{
wait(0.05);
}
level.var_10964.var_111BE = 1;
if(isdefined(param_02))
{
level.var_10964.var_2610 playsound("specialist_mode_" + param_00 + "_" + param_01 + "_" + param_02,"vo_over");
}
else
{
level.var_10964.var_2610 playsound("specialist_mode_" + param_00 + "_" + param_01,"vo_over");
}
level.var_10964.var_2610 waittill("vo_over");
level.var_10964.var_111BE = 0;
level.var_10964.var_10B3B--;
}
//Function Number: 67
ispartinjured(param_00)
{
switch(param_00)
{
case "legs":
case "leg":
return self.var_2C19["leg_left"].health != self.var_2C19["leg_left"].maxhealth || self.var_2C19["leg_right"].health != self.var_2C19["leg_right"].maxhealth;
case "arms":
case "arm":
return self.var_2C19["arm_left"].health != self.var_2C19["arm_left"].maxhealth || self.var_2C19["arm_right"].health != self.var_2C19["arm_right"].maxhealth;
case "chest":
return self.var_2C19["chest"].health != self.var_2C19["chest"].maxhealth;
case "oxygen":
return scripts\common\utility::istrue(self.var_D430);
case "helmet":
return scripts\common\utility::istrue(level.var_10964.var_8E1B);
default:
return 0;
}
}
//Function Number: 68
func_25FD()
{
level.player endon("death");
level.player endon("headshot_death");
func_137D2();
thread func_2608();
for(;;)
{
wait(0.05);
if(func_2C97())
{
continue;
}
var_00 = length(level.player getvelocity());
if(func_2C90() && var_00 > 0)
{
continue;
}
if(func_2C98())
{
level.var_10964.var_2610 func_25E1(var_00);
}
}
}
//Function Number: 69
func_2608()
{
level.player endon("death");
level.player endon("headshot_death");
for(;;)
{
wait(0.05);
if(func_2C97())
{
continue;
}
if(!func_2C95())
{
if(level.var_10964.var_D430)
{
thread func_25E9("injury","oxygen");
}
else
{
thread func_25E9("nag","helmet");
if(!func_2C96("helmet",0,0))
{
wait(13);
}
}
wait(13);
continue;
}
if(func_2C98())
{
if(func_2C96("nanoshot",0,1))
{
thread func_25E9("nag","nano");
}
else
{
thread func_25E9("nag","status");
wait(13);
}
wait(13);
}
}
}
//Function Number: 70
func_25E1(param_00)
{
var_01 = func_25E2(param_00);
var_02 = func_25FE(var_01);
var_03 = randomint(100);
if(var_01 == "sprint" || var_03 > 75)
{
var_04 = "breathing_limp";
}
else if(var_02 == "run" || var_04 > 50)
{
var_04 = "breathing_limp_better";
}
else if(var_02 == "walk" || var_04 > 25)
{
var_04 = "breathing_hurt";
}
else
{
var_04 = "breathing_hurt_alt";
}
if(randomint(100) > 50)
{
self playsound(var_04);
func_25BD(var_02);
return;
}
func_25BD(var_02);
self playsound(var_04);
}
//Function Number: 71
func_25BD(param_00)
{
wait(param_00 * 0.5);
level.player playrumbleonentity("damage_light");
if(randomint(100) > 50)
{
self playsound("breathing_heartbeat_fade1");
}
else
{
self playsound("breathing_heartbeat_fade2");
}
wait(param_00 * 0.5);
}
//Function Number: 72
func_25E2(param_00)
{
if(level.player method_81BD())
{
return "sprint";
}
if(param_00 <= 0.1)
{
return "idle";
}
if(param_00 <= 0.5)
{
return "walk";
}
return "run";
}
//Function Number: 73
func_25FE(param_00)
{
switch(param_00)
{
case "idle":
return randomfloatrange(3.5,4.5);
case "walk":
return randomfloatrange(2.5,3.5);
case "run":
return randomfloatrange(1.5,2.5);
case "sprint":
return randomfloatrange(0.75,1.5);
}
}
//Function Number: 74
func_25E3()
{
level.player endon("death");
level.player endon("headshot_death");
if(!self.var_D467)
{
self.var_D467 = 1;
scripts\sp\_utility::func_D020();
if(scripts\common\utility::func_4347())
{
var_00 = "plr_death_generic";
}
else
{
var_00 = "plr_death_explosion";
}
level.player playsound(var_00,"player_done_yelling");
level.player waittill("player_done_yelling");
self.var_D467 = 0;
}
}
//Function Number: 75
func_9150(param_00)
{
level.var_10964.var_98F1 = [];
param_00[param_00.size] = "pristine";
param_00[param_00.size] = "skull";
foreach(var_02 in param_00)
{
var_03 = newhudelem();
var_03.x = 15;
var_03.y = -40;
var_03.width = 70;
var_03.height = 135;
var_03.alignx = "left";
var_03.aligny = "bottom";
var_03.horzalign = "left";
var_03.vertalign = "bottom";
var_03.sort = 1;
var_03.alpha_req = 1;
var_03.hidewheninmenu = 1;
var_03 setshader("hud_injury_" + var_02,var_03.width,var_03.height);
if(var_02 != "pristine")
{
var_03.alpha_req = 0;
var_03.alpha = 0;
var_03.foreground = 1;
}
level.var_10964.var_98F1[var_02] = var_03;
}
thread hud_thread();
}
//Function Number: 76
hudcanshow()
{
if(!level.player method_843C())
{
return 0;
}
var_00 = level.player getcurrentweapon();
if(var_00 == "none" || var_00 == "iw7_gunless")
{
return 0;
}
if(getomnvar("ui_hide_hud"))
{
return 0;
}
if(!isalive(level.player))
{
return 0;
}
if(scripts\sp\_utility::func_7B8C() == "safe")
{
return 0;
}
return 1;
}
//Function Number: 77
usingspecialequipment()
{
if(level.var_10964.hidehelmetimpacts)
{
return 1;
}
var_00 = ["transitiontorobot","controllingrobot","selfdestruct"];
var_01 = lib_0E29::func_87A7();
foreach(var_03 in var_00)
{
if(var_01 == var_03)
{
return 1;
}
}
return 0;
}
//Function Number: 78
hud_thread()
{
level endon("stop_updating_specialist_hud");
for(;;)
{
var_00 = usingspecialequipment();
if(hudcanshow() && !var_00)
{
foreach(var_02 in level.var_10964.var_98F1)
{
var_02 fadeovertime(0.3);
if(var_02.alpha != var_02.alpha_req)
{
var_02.alpha = var_02.alpha_req;
}
}
}
else
{
foreach(var_02 in level.var_10964.var_98F1)
{
var_02 fadeovertime(0.3);
if(var_02.alpha != 0)
{
var_02.alpha = 0;
}
}
}
if(!var_00)
{
foreach(var_07 in level.var_10964.helmetimpacts)
{
foreach(var_02 in var_07)
{
if(!isdefined(var_02))
{
continue;
}
if(isdefined(var_02.og_y))
{
var_02.y = var_02.og_y;
var_02.og_y = undefined;
}
}
}
}
else
{
foreach(var_07 in level.var_10964.helmetimpacts)
{
foreach(var_02 in var_07)
{
if(!isdefined(var_02))
{
continue;
}
if(isdefined(var_02.og_y))
{
continue;
}
var_02.og_y = var_02.y;
var_02.y = var_02.y - 5000;
}
}
}
wait(0.05);
}
}
//Function Number: 79
destroyhelmetimpacts()
{
level notify("stop_updating_specialist_hud");
foreach(var_01 in level.var_10964.helmetimpacts)
{
foreach(var_03 in var_01)
{
if(!isdefined(var_03))
{
continue;
}
var_03 destroy();
}
}
}
//Function Number: 80
func_9160(param_00,param_01)
{
if(!isdefined(level.var_10964.var_98F1))
{
return;
}
if(isdefined(param_01))
{
wait(param_01);
}
foreach(var_03 in level.var_10964.var_98F1)
{
if(param_00)
{
var_03.x = 15;
continue;
}
var_03.x = -985;
}
}
//Function Number: 81
func_9151()
{
level notify("kill_injury_hud_scanner");
level endon("kill_injury_hud_scanner");
if(isdefined(self.var_914B))
{
self.var_914B destroy();
}
var_00 = scripts\sp\_hud_util::createicon("hud_injury_scanner",70,20);
var_00.x = 15;
var_00.y = self.var_98F1["pristine"].y - self.var_98F1["pristine"].height + var_00.height;
var_00.alignx = "left";
var_00.aligny = "bottom";
var_00.horzalign = "left";
var_00.vertalign = "bottom";
var_00.sort = 1;
var_00.foreground = 1;
var_00.alpha_req = 0;
self.var_914B = var_00;
self.var_914B thread scripts\sp\_hud_util::func_6AAB(0.7,0.25);
while(self.var_914B.y < self.var_98F1["pristine"].y - 10)
{
wait(0.05);
self.var_914B.y = self.var_914B.y + 7;
}
self.var_914B thread scripts\sp\_hud_util::func_6AAB(0,0.25);
}
//Function Number: 82
func_9146()
{
if(isdefined(self.var_914B))
{
level notify("kill_injury_hud_scanner");
self.var_914B destroy();
}
self.var_8E12 = 1;
foreach(var_01 in self.var_98F1)
{
var_01 thread func_9144(3);
}
for(var_03 = 0;var_03 < 3;var_03++)
{
setomnvar("ui_hide_hud",1);
wait(randomfloatrange(0.05,0.15));
setomnvar("ui_hide_hud",0);
wait(randomfloatrange(0.15,0.25));
}
wait(3);
self.var_8E12 = 0;
}
//Function Number: 83
func_9144(param_00,param_01)
{
self endon("death");
self endon("hud_flicker_stop");
self.var_8E12 = 1;
var_02 = self.alpha_req;
self.alpha_req = 0;
for(var_03 = 0;var_03 < param_00;var_03++)
{
wait(randomfloatrange(0.05,0.1));
self.alpha_req = randomfloatrange(0.25,0.75);
wait(randomfloatrange(0.1,0.15));
self.alpha_req = 0;
}
wait(randomfloatrange(0.05,0.15));
if(isdefined(param_01) && param_01)
{
self.alpha_req = 1;
}
else
{
self.alpha_req = var_02;
}
self.var_8E12 = 0;
}
//Function Number: 84
hud_fade_cracks(param_00,param_01,param_02)
{
foreach(var_04 in param_01)
{
if(!isdefined(param_00[var_04]))
{
continue;
}
param_00[var_04] fadeovertime(param_02);
param_00[var_04].alpha = 0;
}
wait(param_02);
}
//Function Number: 85
func_915F(param_00)
{
var_01 = param_00["crack"].x + 80;
param_00["crack"] moveovertime(0.1);
param_00["crack"].x = var_01;
if(isdefined(param_00["burn"]))
{
param_00["burn"] moveovertime(0.1);
param_00["burn"].x = var_01;
}
wait(0.35);
var_02 = -200;
param_00["crack"] moveovertime(0.2);
param_00["crack"].y = var_02;
if(isdefined(param_00["burn"]))
{
param_00["burn"] moveovertime(0.2);
param_00["burn"].y = var_02;
}
wait(0.25);
self.var_BB4A = 0;
}
//Function Number: 86
func_9175(param_00)
{
level.player endon("death");
self endon("death");
var_01 = gettime() + param_00 * 1000;
var_02 = param_00 / 0.05;
var_03 = -1 / var_02;
while(gettime() < var_01)
{
var_04 = self.color[0];
var_05 = self.color[1];
var_06 = self.color[2];
self.color = (var_04 + var_03,var_05 + var_03,var_06 + var_03);
wait(0.05);
}
self destroy();
scripts\common\utility::func_22BC(level.var_10964.helmetimpacts);
}
//Function Number: 87
func_2296(param_00)
{
var_01 = [];
foreach(var_03 in level.var_10964.var_2C19)
{
if(param_00)
{
if(func_2C94(var_03.name))
{
var_01 = scripts\common\utility::array_add_safe(var_01,var_03);
}
continue;
}
if(var_03.health < var_03.maxhealth)
{
var_01 = scripts\common\utility::array_add_safe(var_01,var_03);
}
}
return var_01;
}
//Function Number: 88
func_2683()
{
scripts\sp\_utility::func_266B("specialist_mode",undefined,undefined,scripts\sp\_utility::func_93AB());
}
//Function Number: 89
func_2C87()
{
if(!func_2C96("nanoshot",1,1))
{
return 0;
}
if(func_2C97())
{
return 0;
}
var_00 = level.player getweaponammostock("nanoshot");
if(!isdefined(var_00))
{
return 0;
}
if(isdefined(var_00) && var_00 <= 0)
{
return 0;
}
return 1;
}
//Function Number: 90
func_2C88()
{
if(level.player isgestureplaying())
{
return 0;
}
if(func_2C97())
{
return 0;
}
if(level.var_10964.var_4C97)
{
return 0;
}
if(level.player method_81C6())
{
return 0;
}
if(level.player fragbuttonpressed())
{
return 0;
}
if(level.player islinked())
{
return 0;
}
if(!level.player method_843C())
{
return 0;
}
if(isdefined(level.player.inrodeo) && level.player.inrodeo)
{
return 0;
}
return 1;
}
//Function Number: 91
func_2C89()
{
if(level.player.var_55DE > 1)
{
return 0;
}
if(self.var_4C97)
{
return 0;
}
if(func_2C97())
{
return 0;
}
var_00 = level.player getcurrentprimaryweapon();
var_01 = weaponclipsize(var_00);
var_02 = level.player method_8118();
if(var_02 >= var_01)
{
return 0;
}
var_03 = level.player getweaponammostock(var_00);
if(var_03 <= 0)
{
return 0;
}
return 1;
}
//Function Number: 92
func_2C8A()
{
if(self.var_BF7E >= gettime())
{
return 0;
}
if(self.var_86F4 <= 0)
{
return 0;
}
if(func_2C94("arm_left"))
{
return 0;
}
if(!isalive(level.player))
{
return 0;
}
if(scripts\sp\_utility::func_93AC())
{
return 0;
}
if(level.player method_81BD())
{
return 0;
}
if(level.player method_81C6())
{
return 0;
}
if(level.player method_8448())
{
return 0;
}
if(level.player ismeleeing())
{
return 0;
}
if(level.player islinked())
{
return 0;
}
if(level.player.var_C337.var_19)
{
return 0;
}
var_00 = lib_0E29::func_87A7();
if(var_00 != "none")
{
return 0;
}
if(getomnvar("ui_jackal_call_down_active") > 0)
{
return 0;
}
if(getomnvar("ui_c12_active") > 0)
{
return 0;
}
if(scripts\common\utility::func_6E34("player_in_mars_killstreak") && scripts\common\utility::flag("player_in_mars_killstreak"))
{
return 0;
}
var_01 = level.player geteye();
var_02 = anglestoforward(level.player.angles);
if(!scripts\common\trace::func_DCF1(var_01,var_01 + var_02 * 40,level.player))
{
return 0;
}
var_03 = level.player getcurrentweapon();
if(var_03 == "none")
{
return 0;
}
if(issubstr(var_03,"steeldragon"))
{
return 0;
}
if(issubstr(var_03,"fist"))
{
return 0;
}
if(issubstr(var_03,"gunless"))
{
return 0;
}
if(issubstr(var_03,"knife"))
{
return 0;
}
return 1;
}
//Function Number: 93
func_2C8B()
{
if(!func_2C8E())
{
return 0;
}
if(func_2C95() && !bool_player_helmet_damaged_enough())
{
return 0;
}
if(!func_2C96("helmet",1,1))
{
return 0;
}
if(!isalive(level.player))
{
return 0;
}
if(level.player method_81C6())
{
return 0;
}
if(level.player method_8448())
{
return 0;
}
if(level.player ismeleeing())
{
return 0;
}
if(level.player islinked())
{
return 0;
}
if(!level.player method_843C())
{
return 0;
}
if(!level.player scripts\common\utility::func_9EC1())
{
return 0;
}
if(func_2C97())
{
return 0;
}
return 1;
}
//Function Number: 94
func_2C8C()
{
if(lib_0E29::func_87A7() != "none")
{
return 0;
}
if(func_2C97())
{
return 0;
}
if(getomnvar("ui_jackal_call_down_active") > 0)
{
return 0;
}
if(getomnvar("ui_c12_active") > 0)
{
return 0;
}
if(scripts\common\utility::func_6E34("player_in_mars_killstreak") && scripts\common\utility::flag("player_in_mars_killstreak"))
{
return 0;
}
return 1;
}
//Function Number: 95
func_2C8D()
{
return level.var_10964.var_1BFC;
}
//Function Number: 96
func_2C8E()
{
return level.var_10964.var_8E1F;
}
//Function Number: 97
func_2C8F()
{
return level.script == "phspace" || level.script == "moonjackal" || issubstr(level.script,"ja_");
}
//Function Number: 98
func_2C90()
{
return func_2C94("leg_left") || func_2C94("leg_right");
}
//Function Number: 99
func_2C92()
{
return issubstr(level.script,"sa_") && isdefined(level.var_10533) && isdefined(level.var_10532);
}
//Function Number: 100
func_2C91()
{
return level.script == "europa" || level.script == "phparade" || level.script == "phstreets" || level.script == "phspace";
}
//Function Number: 101
func_2C93()
{
if(func_2C8F() || level.script == "heist" || level.script == "sa_wounded" || level.script == "sa_empambush")
{
return 1;
}
return 0;
}
//Function Number: 102
func_2C94(param_00)
{
return func_993F(param_00) <= 30;
}
//Function Number: 103
func_2C95()
{
return level.var_10964.var_8E16;
}
//Function Number: 104
bool_player_helmet_damaged_enough()
{
if(level.var_10964.var_8E1B > 0)
{
return 1;
}
return 0;
}
//Function Number: 105
func_2C96(param_00,param_01,param_02)
{
if(!scripts\sp\_utility::func_D0BD(param_00,1))
{
return 0;
}
if(param_01 && !scripts\sp\_utility::func_D0BD(param_00,0))
{
return 0;
}
if(param_02 && !scripts\sp\_utility::func_799C(param_00))
{
return 0;
}
return 1;
}
//Function Number: 106
func_2C97()
{
return level.var_10964.var_98EC;
}
//Function Number: 107
halt_specialist_hints()
{
if(isdefined(level.var_10964))
{
level.var_10964.allowhints = undefined;
}
}
//Function Number: 108
continue_specialist_hints()
{
if(isdefined(level.var_10964))
{
level.var_10964.allowhints = 1;
}
}
//Function Number: 109
func_2C98()
{
return level.player.health <= level.player.maxhealth * 0.4;
}
//Function Number: 110
func_2C99()
{
var_00 = level.player scripts\sp\_utility::func_7BD6();
if(func_2C97())
{
return 0;
}
if(!isdefined(var_00))
{
return 0;
}
if(var_00 != "nanoshot")
{
return 0;
}
if(level.player.health != level.player.maxhealth)
{
return 0;
}
if(scripts\common\utility::istrue(level.player.disable_nanoshot_hint))
{
return 0;
}
return 1;
}
//Function Number: 111
func_993F(param_00)
{
return level.var_10964.var_2C19[param_00].health;
}
//Function Number: 112
func_F2A6(param_00)
{
level.var_10964.var_1BFC = param_00;
}
//Function Number: 113
func_F2D2(param_00)
{
level.var_10964.var_2687 = param_00;
}
//Function Number: 114
func_F3FF(param_00)
{
level.var_10964.var_8E16 = param_00;
if(param_00)
{
level.var_10964 notify("helmet_on");
setomnvar("ui_helmet_state",1);
}
else
{
level.var_10964 notify("helmet_off");
setomnvar("ui_helmet_state",0);
}
func_9160(param_00);
}
//Function Number: 115
func_F400(param_00)
{
level.var_10964.var_8E1F = param_00;
}
//Function Number: 116
func_F49E(param_00,param_01)
{
level.player endon("damage");
if(isdefined(param_01))
{
wait(param_01);
}
level.var_10964.var_BFAA = param_00;
}
//Function Number: 117
func_F52C(param_00)
{
param_00 = clamp(param_00,1,level.player.maxhealth);
level.player setnormalhealth(param_00 / level.player.maxhealth);
}
//Function Number: 118
func_F52F(param_00)
{
if(!isdefined(level.var_10964.var_8DDA))
{
return;
}
if(param_00)
{
level.var_10964.var_8DDA show();
return;
}
level.var_10964.var_8DDA hide();
}
//Function Number: 119
func_F530(param_00)
{
level.var_10964.var_98EC = param_00;
func_F53C(param_00);
level.var_10964.jackalhelmetcrackfade = param_00;
func_F3FF(!param_00);
if(param_00)
{
level.var_10964 notify("in_jackal");
return;
}
level.var_10964 notify("out_of_jackal");
}
//Function Number: 120
func_F531(param_00)
{
level.player specialist_allow_invulnerability(1);
wait(param_00);
level.player specialist_allow_invulnerability(0);
}
//Function Number: 121
specialist_allow_invulnerability(param_00)
{
if(!isdefined(level.var_10964.allowinvulnerability))
{
level.var_10964.allowinvulnerability = 0;
}
if(param_00)
{
level.var_10964.allowinvulnerability++;
self method_80D1();
return;
}
level.var_10964.allowinvulnerability--;
if(level.var_10964.allowinvulnerability == 0)
{
self method_80A1();
}
}
//Function Number: 122
func_F53C(param_00)
{
level.player.var_8C0F = param_00;
}
//Function Number: 123
func_1381A()
{
if(!level.var_10964.var_58DE)
{
return;
}
level.var_10964 waittill("tutorial_over");
}
//Function Number: 124
func_137D1()
{
if(!func_2C95())
{
return;
}
level.var_10964 waittill("helmet_off");
}
//Function Number: 125
func_137D2()
{
if(func_2C95())
{
return;
}
level.var_10964 waittill("helmet_on");
}
//Function Number: 126
func_137D3()
{
if(func_2C97())
{
return;
}
level.var_10964 waittill("in_jackal");
}
//Function Number: 127
func_137E4()
{
if(!func_2C97())
{
return;
}
level.var_10964 waittill("out_of_jackal");
}
//Function Number: 128
func_137D0()
{
if(!func_2C98())
{
return;
}
level.player waittill("nanoshot_healing");
}
//Function Number: 129
func_137F1()
{
while(!func_2C98())
{
wait(0.05);
}
}
//Function Number: 130
spawn_nanoshot()
{
if(level.player scripts\sp\_utility::func_65DF("zero_gravity") && level.player scripts\sp\_utility::func_65DB("zero_gravity"))
{
return 0;
}
if(isdefined(level.last_nanoshot_drop) && gettime() - level.last_nanoshot_drop < 5000)
{
return 0;
}
if(randomint(100) > 10)
{
return 0;
}
level.last_nanoshot_drop = gettime();
var_00 = vectornormalize(level.player.origin - self.origin);
var_00 = scripts\common\utility::func_6EE6(var_00);
var_01 = anglestoforward((randomintrange(-90,-75),0,0));
var_02 = var_00 + var_01;
var_03 = self gettagorigin("j_head") + (0,0,10);
var_04 = spawn("weapon_nanoshot",var_03);
var_04 setmodel("equipment_mp_nanoshot_wm");
var_04 scripts\sp\_utility::func_9196(3,1,1,"new_weapon");
var_04 thread nanoshot_pickup();
var_04 thread lib_0B77::add_to_grenade_cache("axis");
var_04 physicslaunchserveritem(var_04.origin,var_02 * randomintrange(100,200));
return 1;
}
//Function Number: 131
nanoshot_pickup()
{
var_00 = scripts\common\utility::spawn_tag_origin();
var_00 linkto(self);
self.var_9027 = var_00;
var_00 lib_0E46::func_48C4(undefined,undefined,&"EQUIPMENT_PICKUP_NANOSHOT",40,300,undefined,undefined,undefined,0,&"hud_interaction_prompt_center_equipment");
var_00 makeunusable();
if(!scripts\sp\_utility::func_D0BD("nanoshot",1))
{
var_00 makeusable();
}
nanoshot_waittill_trigger_or_delete(var_00);
var_00 delete();
if(!isdefined(self))
{
return;
}
var_01 = 0;
if(level.player.var_110BD == "")
{
var_01 = 1;
}
var_02 = lib_0B4A::func_7C27(scripts\sp\_utility::func_7BD6());
var_03 = scripts\sp\_utility::func_7BD7();
level.player giveweapon("nanoshot");
level.player setweaponammostock("nanoshot",1);
self delete();
if(var_01)
{
return;
}
if(var_03 <= 0)
{
return;
}
thread drop_equipment_crate(var_02,var_03);
}
//Function Number: 132
drop_equipment_crate(param_00,param_01)
{
var_02 = spawn("script_model",level.player.origin + (0,0,45));
var_02 setmodel("mil_grenade_box_dynamic");
var_02 scripts\sp\_utility::func_9196(3,1,1);
var_02.dont_spawn_models = 1;
var_02.script_noteworthy = param_00;
var_02.var_EDE7 = param_01;
var_02 thread lib_0B04::func_4842("equipment");
var_02 thread lib_0B77::add_to_grenade_cache("axis");
var_02 scripts\common\utility::delaycall(0.05,::physicslaunchserver,var_02.origin,anglestoforward(level.player.angles) * 250);
var_02.var_99F7 linkto(var_02);
var_03 = var_02.var_99F7;
crate_waittill_delete(var_03);
if(isdefined(var_03))
{
var_03 notify("remove_pickup_cache");
var_03 delete();
}
if(isdefined(var_02))
{
var_02 delete();
}
}
//Function Number: 133
nanoshot_waittill_trigger_or_delete(param_00)
{
self endon("entitydeleted");
param_00 waittill("trigger");
}
//Function Number: 134
crate_waittill_delete(param_00)
{
self endon("entitydeleted");
param_00 waittill("entitydeleted");
}
//Function Number: 135
nanoshot_pickup_watcher()
{
if(!isdefined(level.var_8580) || !isdefined(level.var_8580["axis"]))
{
level.var_8581["axis"] = 0;
level.var_8580["axis"] = [];
}
for(;;)
{
while(scripts\sp\_utility::func_D0BD("nanoshot",1))
{
nanoshot_near_pickup_check();
wait(0.15);
}
foreach(var_01 in level.var_8580["axis"])
{
if(isdefined(var_01) && var_01.classname == "weapon_nanoshot")
{
var_01.var_9027 makeusable();
}
}
while(!scripts\sp\_utility::func_D0BD("nanoshot",1))
{
nanoshot_near_pickup_check();
wait(0.15);
}
foreach(var_01 in level.var_8580["axis"])
{
if(isdefined(var_01) && var_01.classname == "weapon_nanoshot")
{
var_01.var_9027 makeunusable();
}
}
}
}
//Function Number: 136
nanoshot_near_pickup_check()
{
var_00 = scripts\sp\_utility::func_7CAF();
if(!isdefined(var_00) || var_00 != "nanoshot")
{
return;
}
foreach(var_02 in level.var_8580["axis"])
{
if(!isdefined(var_02) || var_02.classname != "weapon_nanoshot")
{
continue;
}
if(distancesquared(var_02.origin,level.player.origin) > 1600)
{
continue;
}
var_03 = function_0249("nanoshot");
if(scripts\sp\_utility::func_7CB0() >= var_03)
{
continue;
}
level.player.var_110BE++;
var_02 delete();
}
}
//Function Number: 137
spawn_specialist_crates()
{
var_00 = scripts\common\utility::func_7CF1();
var_01 = 13;
switch(var_00)
{
case "europa":
lib_0B04::spawn_equipment_crate("helmet",(34469.1,-12214.8,-455.859),(0,132,0),1);
lib_0B04::spawn_equipment_crate("nanoshot",(34440,-12225,-455.859),(0,-64,0),3);
break;
case "phstreets":
lib_0B04::spawn_equipment_crate("helmet",(50434.4,29394.1,-34280.9),(0,132,0));
lib_0B04::spawn_equipment_crate("nanoshot",(68113,40290,-34416),(0,274,0),2);
break;
case "titan":
lib_0B04::spawn_equipment_crate("nanoshot",(-59090.7,-34205,-64624.4),(0,132,0),3);
lib_0B04::spawn_equipment_crate("nanoshot",(-47402.7,-39197.5,-64154.3),(0,132,0),2);
lib_0B04::spawn_equipment_crate("nanoshot",(-47482.1,-41287.1,-64375.9),(0,132,0),3);
lib_0B04::spawn_equipment_crate("helmet",(-47487.9,-41254.2,-64375.9),(0,120,0),1);
lib_0B04::spawn_equipment_crate("nanoshot",(-35701.4,-41712,-64787.9),(0,132,0),2);
lib_0B04::spawn_equipment_crate("nanoshot",(-34911.9,-42124.9,-64955.9),(0,-15,0),1);
lib_0B04::spawn_equipment_crate("helmet",(-30218.4,-41231.9,-64988.4),(0,-15,0),1);
lib_0B04::spawn_equipment_crate("nanoshot",(-29564.7,-42645,-64988.9),(0,132,0),2);
break;
case "titanjackal":
lib_0B04::spawn_equipment_crate("helmet",(41986.3,75867.2,-64930.4),(0,132,0),1);
lib_0B04::spawn_equipment_crate("nanoshot",(41940.8,74503.1,-64930.4),(0,132,0),2);
break;
case "prisoner":
lib_0B04::spawn_equipment_crate("helmet",(-4685,-14638,585),(0,0,0),1);
lib_0B04::spawn_equipment_crate("helmet",(912.4,-9570.7,-1774.7),(7.38483,270.432,-1.433),1);
break;
case "heist":
lib_0B04::spawn_equipment_crate("nanoshot",(-11407,16389,-85536),(0,270,0),2);
break;
case "yard":
lib_0B04::spawn_equipment_crate("helmet",(385,25919,1856.14),(0,0,0),1);
lib_0B04::spawn_equipment_crate("nanoshot",(463,25005,2000.12),(0,65,0),2);
break;
case "sa_assassination":
lib_0B04::spawn_equipment_crate("helmet",(-160,-1326,-51 + var_01),(0,59.9999,0));
break;
case "sa_empambush":
break;
case "sa_moon":
lib_0B04::spawn_equipment_crate("helmet",(1449.3,628.471,64.0938),(0,345,0));
break;
case "sa_vips":
lib_0B04::spawn_equipment_crate("helmet",(-142,-1322,-79),(0,183,0));
lib_0B04::spawn_equipment_crate("nanoshot",(-146,-1280,-79),(0,194,0));
lib_0B04::spawn_equipment_crate("helmet",(4438,-907,192),(0,263,0));
lib_0B04::spawn_equipment_crate("helmet",(422,-423,-54),(0,167,0));
lib_0B04::spawn_equipment_crate("helmet",(816,-1477.6,-142.906),(0,183,0));
break;
case "sa_wounded":
lib_0B04::spawn_equipment_crate("nanoshot",(157,-177,-171),(0,76,0));
lib_0B04::spawn_equipment_crate("helmet",(129,-175,-171),(0,91,0));
break;
}
}
//Function Number: 138
move_specialist_crates()
{
wait(0.05);
var_00 = scripts\common\utility::func_7CF1();
switch(var_00)
{
case "europa":
specialist_crate_move("helmet",(29209,-5997.5,-76),(29095,-7658,-53.8869));
break;
case "phstreets":
specialist_crate_move("nanoshot",(52106,30285,-34663),(52184.9,29902.6,-34601),undefined,3);
specialist_crate_move("nanoshot",(57470,32429,-34432),(57520.6,32740.7,-34520.4));
specialist_crate_move("helmet",(57457.5,32408,-34432),(57520.6,32779.3,-34520.2),undefined,2);
specialist_crate_move("helmet",(59335,32407.5,-34408),(59472.9,32698.5,-34407.9));
specialist_crate_move("nanoshot",(59312,32405.5,-34408),(59468.2,32667.1,-34407.9),(0,90,0));
specialist_crate_move("nanoshot",(64669.7,40194.3,-34352),(65053.3,40130.1,-34352.5));
specialist_crate_move("helmet",(66061,40092,-34216),(66015.1,40111.5,-34212));
specialist_crate_move("nanoshot",(65030.5,38658.5,-34088.5),(64308.4,38627.5,-34088));
specialist_crate_move("nanoshot",(62835,36424,-34073),(63063.1,36480.7,-34078.1));
specialist_crate_move("nanoshot",(69272,43712,-34532),(69435.9,43885.4,-34531.4));
specialist_crate_move("helmet",(69281,43690,-34532),(69412.3,43873.3,-34531.4));
break;
case "moon_port":
specialist_crate_move("helmet",(5773.65,9054.83,-54584),(5714.62,9173.35,-54583.9));
specialist_crate_move("helmet",(9244.27,9918.77,-54504),(9441.8,10121.2,-54503.9));
specialist_crate_move("nanoshot",(9021.34,10880.6,-54335),(9064.3,10664.3,-54333.9));
break;
case "prisoner":
specialist_crate_move("nanoshot",(-1622.6,-13669.7,-1757),(-1238,-13988,-1685),undefined,3);
break;
case "marsbase":
specialist_crate_move("nanoshot",(29648,18802,-11512),(31392,18503.8,-11535.9));
specialist_crate_move("helmet",(29680,18794,-11512),(31382.9,18477,-11535.9));
break;
case "yard":
specialist_crate_move("nanoshot",(118.5,19241.5,702.5),(136,19241.6,702.6));
break;
}
}
//Function Number: 139
delete_specialist_crates()
{
wait(0.05);
var_00 = scripts\common\utility::func_7CF1();
switch(var_00)
{
case "phstreets":
specialist_crate_delete((55514,28810,-34608.5));
specialist_crate_delete((61964,34582,-34184));
specialist_crate_delete((61990,34582,-34184));
break;
case "moon_port":
specialist_crate_delete((5760.82,9076.98,-54584));
specialist_crate_delete((9047.96,10888.6,-54335));
specialist_crate_delete((9220.76,9902.43,-54504));
break;
case "marsbase":
specialist_crate_delete((31926,20838,-11464));
specialist_crate_delete((32854,19813,-11316));
specialist_crate_delete((32822,19794,-11316));
break;
}
}
//Function Number: 140
specialist_crate_move(param_00,param_01,param_02,param_03,param_04)
{
var_05 = (0,0,13);
param_01 = param_01 + var_05;
var_06 = scripts\common\utility::getstructarray("equipment_pickup","targetname");
var_07 = scripts\common\utility::getclosest(param_01,var_06);
if(!isdefined(param_03))
{
param_03 = var_07.angles;
}
if(!isdefined(param_04) && isdefined(var_07.var_EDE7))
{
param_04 = var_07.var_EDE7;
}
var_08 = getentarray("specialist_mode_only","targetname");
var_09 = sortbydistance(var_08,var_07.origin);
var_0A = undefined;
var_0B = undefined;
foreach(var_0D in var_09)
{
if(!isdefined(var_0A) && var_0D.classname == "script_model")
{
var_0A = var_0D;
}
else if(!isdefined(var_0B) && var_0D.classname == "script_brushmodel")
{
var_0B = var_0D;
}
if(isdefined(var_0A) && isdefined(var_0B))
{
break;
}
}
if(isdefined(var_07.var_99F7.var_6698))
{
foreach(var_10 in var_07.var_99F7.var_6698)
{
if(isdefined(var_10))
{
var_10 delete();
}
}
}
var_07.var_99F7 notify("remove_pickup_cache");
var_07.var_99F7 delete();
var_0B delete();
var_0A delete();
var_07 = undefined;
thread lib_0B04::spawn_equipment_crate(param_00,param_02,param_03,param_04);
}
//Function Number: 141
specialist_crate_delete(param_00)
{
var_01 = (0,0,13);
param_00 = param_00 + var_01;
var_02 = scripts\common\utility::getstructarray("equipment_pickup","targetname");
var_03 = scripts\common\utility::getclosest(param_00,var_02);
var_04 = getentarray("specialist_mode_only","targetname");
var_05 = sortbydistance(var_04,var_03.origin);
var_06 = undefined;
var_07 = undefined;
foreach(var_09 in var_05)
{
if(!isdefined(var_06) && var_09.classname == "script_model")
{
var_06 = var_09;
}
else if(!isdefined(var_07) && var_09.classname == "script_brushmodel")
{
var_07 = var_09;
}
if(isdefined(var_06) && isdefined(var_07))
{
break;
}
}
if(isdefined(var_03.var_99F7.var_6698))
{
foreach(var_0C in var_03.var_99F7.var_6698)
{
if(isdefined(var_0C))
{
var_0C delete();
}
}
}
var_03.var_99F7 notify("remove_pickup_cache");
var_03.var_99F7 delete();
var_07 delete();
var_06 delete();
var_03 = undefined;
}