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

1458 lines
43 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _controlled_sniperdrone.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 76
* Decompile Time: 1142 ms
* Timestamp: 4/22/2024 2:20:27 AM
*******************************************************************/
//Function Number: 1
precacheassets()
{
precacheshader("white_multiply");
precacheshader("overlay_static_digital");
precacheshader("sentinel_drone_scanlines");
precacheshader("sentinel_drone_overlay_distort");
precacheshader("ugv_vignette_overlay");
precacheshader("remote_chopper_overlay_scratches");
precacheshader("wasp_screencrack");
precacheitem("hms_sniperdrone");
precacheshellshock("barrett");
precachestring(&"sniper_drone_hud");
precachestring(&"sniper_drone_hud_update");
maps\_utility::add_control_based_hint_strings("drone_move",&"GREECE_HINT_DRONE_MOVE",::hintdronemoveoff,&"GREECE_HINT_DRONE_MOVE_KB",&"GREECE_HINT_DRONE_MOVE_SP");
maps\_utility::add_control_based_hint_strings("drone_shoot",&"GREECE_HINT_DRONE_JUSTSHOOT",::hintdroneshootoff);
precachestring(&"GREECE_WARN_DRONE_DRYFIRE");
precachestring(&"GREECE_WARN_INCOMING_MISSILE");
precachemodel("vehicle_sniper_drone_outerparts");
precachemodel("vehicle_sniper_drone_outerparts_cloak");
precachemodel("vehicle_vm_sniper_drone");
precachemodel("vehicle_vm_sniper_drone_cloak");
precachemodel("vehicle_sniper_drone_hud_glass");
precachemodel("vehicle_sniper_drone_hud_glass_break");
}
//Function Number: 2
initializesniperdronedata()
{
var_00 = spawnstruct();
var_00.droneangularvelocity = 0;
var_00.droneverticalvelocity = 0;
var_00.calculatenewhoverdestination = 1;
var_00.dronehoverdirection = (0,0,-1);
var_00.hoverspeed = 1;
var_00.lasthoveroffset = (0,0,0);
var_00.hoverbounceconeangle = 120;
var_00.lastrecoiloffset = (0,0,0);
var_00.recoildirection = (0,0,0);
var_00.currentvelocity = (0,0,0);
var_00.targetangularacceleration = 0;
var_00.stickhorizontalinputlength = 0;
var_00.brakingcurrenttime = 0;
var_00.bodyrollvelocity = (0,0,0);
var_00.framerollacceleration = (0,0,0);
var_00.barrelrollacceleration = (0,0,0);
var_00.frameviewmodeloffset = (0,0,0);
var_00.barrelviewmodeloffset = (0,0,0);
var_00.horizontaloffsetstrafe = 0;
var_00.verticaloffsetstrafe = 0;
var_00.horizontaloffsetlook = 0;
var_00.verticaloffsetlook = 0;
var_00.dronesattackspeedmultiplier = 0.9;
return var_00;
}
//Function Number: 3
alerthighlighthudeffect(param_00)
{
level.player notify("AlertHudEffect");
level.player endon("AlertHudEffect");
var_01 = newclienthudelem(level.player);
var_01.color = (1,0.05,0.025);
var_01.alpha = 1;
var_01 setradarhighlight(param_00);
return var_01;
}
//Function Number: 4
initdroneflyinturnrate()
{
setsaveddvar("aim_turnrate_pitch",30);
setsaveddvar("aim_turnrate_pitch_ads",25);
setsaveddvar("aim_turnrate_yaw",60);
setsaveddvar("aim_turnrate_yaw_ads",40);
setsaveddvar("aim_accel_turnrate_lerp",300);
}
//Function Number: 5
initdroneturnrate()
{
setsaveddvar("aim_turnrate_pitch",70);
setsaveddvar("aim_turnrate_pitch_ads",55);
setsaveddvar("aim_turnrate_yaw",125);
setsaveddvar("aim_turnrate_yaw_ads",90);
setsaveddvar("aim_accel_turnrate_lerp",600);
}
//Function Number: 6
savedefaultturnrate()
{
self.aim_turnrate_pitch = getdvarint("aim_turnrate_pitch");
self.aim_turnrate_pitch_ads = getdvarint("aim_turnrate_pitch_ads");
self.aim_turnrate_yaw = getdvarint("aim_turnrate_yaw");
self.aim_turnrate_yaw_ads = getdvarint("aim_turnrate_yaw_ads");
self.aim_accel_turnrate_lerp = getdvarint("aim_accel_turnrate_lerp");
}
//Function Number: 7
restoredefaultturnrate()
{
setsaveddvar("aim_turnrate_pitch",self.aim_turnrate_pitch);
setsaveddvar("aim_turnrate_pitch_ads",self.aim_turnrate_pitch_ads);
setsaveddvar("aim_turnrate_yaw",self.aim_turnrate_yaw);
setsaveddvar("aim_turnrate_yaw_ads",self.aim_turnrate_yaw_ads);
setsaveddvar("aim_accel_turnrate_lerp",self.aim_accel_turnrate_lerp);
}
//Function Number: 8
startdronecontrol(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = getdvarfloat("g_friendlyNameDist");
setomnvar("ui_sniperdrone",1);
maps\_shg_utility::hide_player_hud();
setsaveddvar("compass","1");
common_scripts\utility::create_dvar("SniperDrone_Hide",0);
var_07 = level.player getcurrentweapon();
var_08 = getdvarint("cg_fov",65) * getdvarfloat("cg_playerFovScale0",1);
var_09 = distance2d(param_00.origin,param_01.origin);
var_0A = vectortoangles(param_01.origin - param_00.origin);
level.player hideviewmodel();
level.player disableweaponswitch();
level.player disableoffhandweapons();
level.player allowcrouch(0);
var_0B = initializesniperdronedata();
var_0C = common_scripts\utility::spawn_tag_origin();
level.player.sniperdronelink = var_0C;
level.player.sniperdronedata = var_0B;
initorbitlowerbounds(param_00.origin,param_05);
soundscripts\_snd::snd_message("start_sniper_drone");
level.droneweapon = "hms_sniperdrone";
level.player giveweapon(level.droneweapon);
level.player switchtoweaponimmediate(level.droneweapon);
level.variable_scope_weapons = ["hms_sniperdrone"];
maps\_hms_utility::printlnscreenandconsole("Drone is now armed with " + level.droneweapon);
var_0B.frameviewmodel = spawn("script_model",var_0C.origin);
var_0B.frameviewmodel setmodel("vehicle_sniper_drone_outerparts_cloak");
var_0B.frameviewmodel linktoplayerview(level.player,"tag_origin",(13,0,-3),(0,0,0),1);
var_0C.frameviewmodel = var_0B.frameviewmodel;
var_0B.frameviewmodel childthread viewmodelanimupdate(%sniper_drone_outerparts_idle,%sniper_drone_outerparts_fire);
var_0B.frameviewmodel thread sniperdronecloak();
var_0B.barrelviewmodel = spawn("script_model",var_0C.origin);
var_0B.barrelviewmodel setmodel("vehicle_vm_sniper_drone_cloak");
var_0B.barrelviewmodel linktoplayerview(level.player,"tag_origin",(-1,0,-1.75),(0,0,0),1);
var_0C.barrelviewmodel = var_0B.barrelviewmodel;
var_0B.barrelviewmodel childthread viewmodelanimupdate(%sniper_drone_vm_idle,%sniper_drone_vm_fire);
var_0B.barrelviewmodel thread sniperdronecloak();
if(!level.currentgen)
{
var_0B.lensviewmodel = spawn("script_model",var_0C.origin);
var_0B.lensviewmodel setmodel("vehicle_sniper_drone_hud_glass");
var_0B.lensviewmodel linktoplayerview(level.player,"tag_origin",(9,0,0),(0,0,0),1);
childthread sniperdronelensdamaged();
}
playfxontag(common_scripts\utility::getfx("sniper_drone_thruster_view"),var_0B.barrelviewmodel,"TAG_ORIGIN");
playfxontag(common_scripts\utility::getfx("sniper_drone_wind_marker"),var_0B.barrelviewmodel,"TAG_ORIGIN");
setsaveddvar("cg_drawBreathHint",0);
var_0D = sniperdroneoverlays();
var_0E = alerthighlighthudeffect(3600);
level.player enableweapons();
level.player enableinvulnerability();
childthread dofiringeffects();
childthread doadsblur(param_04);
childthread adjustfov(param_04,var_0D["black_sides"],var_0D["tech"]);
childthread adjustshadowcenter(param_04);
childthread cameralookatescapevehicle(param_00,var_0A,var_09);
childthread updateflyinscopeoverlay(var_0D["scope"],param_01.origin[2]);
childthread updateviewmodelvisibility();
if(!param_04)
{
thread disabledronefiringatstart(param_03);
}
level.player.sniperdronelink savedefaultturnrate();
if(param_03)
{
var_0C initdroneflyinturnrate();
maps\greece_conf_center::sniperdroneflyin(var_0C);
level.player playerlinktodelta(var_0C,"tag_origin",0,90,90,20,60,1);
var_0F = var_0C.angles;
var_10 = vectortoangles(param_00.origin - param_01.origin) * (0,1,0);
var_11 = 0;
while(var_11 <= 1)
{
wait(0.05);
var_11 = var_11 + 0.1;
var_12 = euler_lerp(var_0F * (1,0,0),var_10 * (1,0,0),var_11) * (1,0,0);
var_0C.angles = (var_12[0],var_0C.angles[1],var_0C.angles[2]);
}
var_11 = 0;
while(var_11 <= 1)
{
wait(0.05);
var_11 = var_11 + 0.2;
var_13 = euler_lerp(var_0F * (0,1,0),var_10 * (0,1,0),var_11) * (0,1,0);
var_0C.angles = (var_0C.angles[0],var_13[1],var_0C.angles[2]);
}
}
else
{
level.player setplayerangles(vectortoangles(param_02.origin - param_01.origin));
}
initdroneturnrate();
calculateinitialposition(param_01.origin,param_00,var_0A,var_09);
level.player playerlinktodelta(var_0C,"tag_origin",1,90,90,20,60,1);
var_14 = var_0C.origin;
var_15 = 0;
var_16 = 0;
setsaveddvar("g_friendlyNameDist",15000);
while(isdefined(level.player.sniperdronelink))
{
wait(0.05);
if(common_scripts\utility::flag("FlagPlayerEndDroneStatic") || common_scripts\utility::flag("FlagSniperDroneAnimating") || common_scripts\utility::flag("FlagSniperDroneLookAt"))
{
continue;
}
setomnvar("ui_sniperdrone",1);
updatescopeoverlay(var_0D["scope"],var_16,param_04);
updatedronesattackspeedmultiplier();
var_0B.droneangularvelocity = updatehorizontalvelocity();
var_0B.droneverticalvelocity = updateverticalvelocity();
var_17 = angleclamp(var_15 + var_0B.droneangularvelocity * 0.05);
var_18 = combineangles((0,var_17,0),var_0A);
var_19 = var_16 + var_0B.droneverticalvelocity * 0.05;
var_19 = clamp(var_19,-900,900);
var_1A = var_14;
var_1B = param_00.origin + (0,0,var_19);
var_14 = var_1B + anglestoforward(var_18) * var_09;
var_1C = clamppositiontolowerbounds(var_14,param_00.origin);
var_14 = (var_14[0],var_14[1],var_14[2] + var_1C);
var_19 = var_19 + var_1C;
var_17 = clampyaworbitoffset(var_14,param_00.origin,var_0A);
var_1D = updatehoveridle(var_14);
var_0B.lasthoveroffset = var_0B.lasthoveroffset + var_1D;
var_1E = updaterecoiloffset();
var_0C.origin = var_14 + var_0B.lasthoveroffset + var_1E;
var_0B.currentvelocity = var_14 - var_1A;
var_1F = vectortoangles(var_1B - var_14);
var_1F = var_1F * (0,1,0);
var_1F = updatebodyroll(var_1F);
var_0C.angles = var_1F;
var_15 = var_17;
var_16 = var_19;
}
setsaveddvar("sm_sunShadowCenter","0 0 0");
setsaveddvar("sm_lightScore_eyeProjectDist",64);
setsaveddvar("sv_znear","0");
common_scripts\utility::flag_set("init_safehouse_outro_start_lighting");
level.player disableinvulnerability();
level.player enableweaponswitch();
level.player enableoffhandweapons();
level.player allowads(1);
level.player allowcrouch(1);
level.player takeweapon(level.droneweapon);
maps\_shg_utility::show_player_hud();
foreach(var_21 in var_0D)
{
var_21 destroy();
}
var_0E destroy();
var_0B.frameviewmodel unlinkfromplayerview(level.player);
var_0B.barrelviewmodel unlinkfromplayerview(level.player);
if(!level.currentgen)
{
var_0B.damagedlensviewmodel unlinkfromplayerview(level.player);
}
level.player unlink();
maps\_utility::teleport_player(common_scripts\utility::getstruct("PlayerStartConfCenter","targetname"));
level.player showviewmodel();
level.player lerpfov(var_08,0.5);
level.player disablefocus(2);
level.player disableaudiozoom(1);
setsaveddvar("cg_drawBreathHint",1);
setsaveddvar("g_friendlyNameDist",var_06);
soundscripts\_snd::snd_message("stop_sniper_drone");
level.player switchtoweaponimmediate(var_07);
}
//Function Number: 9
sniperdronecloak()
{
self drawpostresolve();
self setmaterialscriptparam(0,0);
common_scripts\utility::flag_wait("FlagSniperDroneCloakOff");
self drawpostresolveoff();
self setmaterialscriptparam(1,1);
}
//Function Number: 10
sniperdroneoverlays()
{
var_00 = [];
var_00["scope"] = createoverlay("white_multiply",0);
var_00["static"] = createoverlay("overlay_static_digital",0.01);
var_00["scanlines"] = createoverlay("sentinel_drone_scanlines",0);
var_00["distort"] = createoverlay("sentinel_drone_overlay_distort",0);
var_00["scratches"] = createoverlay("remote_chopper_overlay_scratches",0);
childthread flickerstaticoverlay(var_00["static"],"FlagPlayerStartDroneFlight",0.1,2.5,0,0.1);
childthread flickerstaticoverlay(var_00["scanlines"],"FlagSniperDroneFlinch",0.5,7.5,0,0.25);
childthread flickerstaticoverlay(var_00["static"],"FlagSniperDroneFlinch",0.25,2.5);
childthread adjuststaticoverlay(var_00["scratches"],"FlagSniperDroneFlinch",1,undefined,0.5);
thread sniperdronemissilewarnmsg();
childthread flickerstaticoverlay(var_00["scanlines"],"FlagSniperDroneHit",0.75,5,0,0.25);
childthread flickerstaticoverlay(var_00["static"],"FlagSniperDroneHit",0.5,5);
childthread adjuststaticoverlay(var_00["static"],"FlagPlayerEndDroneStatic",1);
childthread flickerstaticoverlay(var_00["scanlines"],"FlagPlayerEndDroneStatic",0.75,1);
return var_00;
}
//Function Number: 11
viewmodelanimupdate(param_00,param_01)
{
self useanimtree(#animtree);
var_02 = getanimlength(param_01);
var_03 = 0;
while(isdefined(level.player.sniperdronelink))
{
if(!var_03)
{
self setanimknob(param_00);
level.player waittill("weapon_fired");
}
self setanimknobrestart(param_01);
var_03 = 0;
if(!isdefined(waittillplayerfireortime(var_02)))
{
var_03 = 1;
}
}
}
//Function Number: 12
waittillplayerfireortime(param_00)
{
level.player endon("weapon_fired");
wait(param_00);
return 1;
}
//Function Number: 13
disabledronefiringatstart(param_00)
{
level.player allowfire(0);
if(param_00 == 1)
{
common_scripts\utility::flag_wait("FlagPlayerEndDroneFlight");
}
thread sniperdronedryfire("FlagOkayToShootDrone");
wait(1);
hintsniperdronemove();
common_scripts\utility::flag_wait("FlagOkayToShootDrone");
level notify("SniperdroneSafetyOff");
level.player allowfire(1);
wait(0.05);
thread maps\greece_code::warning_fade();
hintsniperdroneshoot();
}
//Function Number: 14
disabledronefiringafterkill()
{
level.player allowfire(0);
thread sniperdronedryfire("FlagConfRoomAlliesRecover");
common_scripts\utility::flag_wait("FlagConfRoomAlliesRecover");
level notify("SniperdroneSafetyOff");
level.player allowfire(1);
wait(0.05);
thread maps\greece_code::warning_fade();
}
//Function Number: 15
disabledronefiringduringcrash()
{
level.player allowfire(0);
level.player allowads(0);
thread sniperdronebadfire();
}
//Function Number: 16
sniperdronedryfire(param_00)
{
level endon("SniperdroneSafetyOff");
while(!common_scripts\utility::flag(param_00))
{
if(level.player attackbuttonpressed())
{
soundscripts\_snd::snd_message("sniper_drone_dry_fire");
thread sniperdronedryfiremsg();
}
wait 0.05;
}
thread maps\greece_code::warning_fade();
}
//Function Number: 17
sniperdronedryfiremsg()
{
thread maps\greece_code::warning(&"GREECE_WARN_DRONE_DRYFIRE");
wait(3);
thread maps\greece_code::warning_fade();
}
//Function Number: 18
sniperdronemissilewarnmsg()
{
common_scripts\utility::flag_wait("FlagHadesVehicleDroneLaunch");
thread maps\greece_code::warning(&"GREECE_WARN_INCOMING_MISSILE",undefined,60,2);
common_scripts\utility::flag_wait("FlagSniperDroneHit");
thread maps\greece_code::warning_fade();
}
//Function Number: 19
sniperdronebadfire()
{
level endon("EndDroneControl");
while(!common_scripts\utility::flag("FlagPlayerEndDroneControl"))
{
if(level.player attackbuttonpressed())
{
soundscripts\_snd::snd_message("sniper_drone_dmg_fire");
}
wait 0.05;
}
}
//Function Number: 20
initorbitlowerbounds(param_00,param_01)
{
level.player.sniperdronedata.orbitlowerbounds = maps\_sarray::sarray_spawn();
for(var_02 = 0;var_02 < param_01.size;var_02++)
{
if(!isdefined(param_01[var_02]))
{
continue;
}
var_03 = vectortoangles(param_00 - param_01[var_02].origin);
param_01[var_02].orbitangle = var_03[1];
level.player.sniperdronedata.orbitlowerbounds maps\_sarray::sarray_push(param_01[var_02]);
}
maps\_sarray::sarray_sort_by_handler(level.player.sniperdronedata.orbitlowerbounds,maps\_sarray::sarray_create_func_obj(::compareorbitangle));
}
//Function Number: 21
calculateinitialposition(param_00,param_01,param_02,param_03)
{
level.player.sniperdronelink.origin = param_01.origin + anglestoforward(param_02) * param_03;
level.player.sniperdronelink.angles = vectortoangles(param_01.origin - param_00) * (0,1,0);
}
//Function Number: 22
clamplookangle(param_00)
{
if(param_00 > 180)
{
return param_00 - 360;
}
if(param_00 < -180)
{
return param_00 + 360;
}
return param_00;
}
//Function Number: 23
getlookpitch()
{
var_00 = level.player getplayerangles();
return clamplookangle(var_00[0]);
}
//Function Number: 24
getlookyaw()
{
var_00 = level.player getplayerangles();
return clamplookangle(var_00[1]) - clamplookangle(level.player.sniperdronelink.angles[1]);
}
//Function Number: 25
clearmovementparameters()
{
level.player.sniperdronedata.bodyrollvelocity = (0,0,0);
level.player.sniperdronedata.bodyrollvelocity = (0,0,0);
level.player.sniperdronedata.framerollacceleration = (0,0,0);
level.player.sniperdronedata.barrelrollacceleration = (0,0,0);
level.player.sniperdronedata.targetangularacceleration = 0;
level.player.sniperdronedata.droneangularvelocity = 0;
level.player.sniperdronedata.droneverticalvelocity = 0;
}
//Function Number: 26
lerpplayerlook(param_00)
{
var_01 = level.player getplayerangles();
var_02 = 0;
while(var_02 <= 1)
{
var_03 = euler_lerp(var_01,param_00,var_02);
level.player setplayerangles(var_03);
var_02 = var_02 + 0.1;
wait(0.05);
}
}
//Function Number: 27
updateviewmodelvisibility()
{
level.player endon("death");
level endon("end_sniper_drone");
var_00 = 0;
for(;;)
{
wait(0.05);
if(getdvarint("SniperDrone_Hide") == 1 && !var_00)
{
level.player.sniperdronedata.frameviewmodel hide();
level.player.sniperdronedata.barrelviewmodel hide();
if(isdefined(level.player.sniperdronedata.lensviewmodel))
{
level.player.sniperdronedata.lensviewmodel hide();
}
var_00 = 1;
continue;
}
if(getdvarint("SniperDrone_Hide") == 0 && var_00)
{
level.player.sniperdronedata.frameviewmodel show();
level.player.sniperdronedata.barrelviewmodel show();
if(isdefined(level.player.sniperdronedata.lensviewmodel))
{
level.player.sniperdronedata.lensviewmodel show();
}
var_00 = 0;
}
}
}
//Function Number: 28
cameralookatescapevehicle(param_00,param_01,param_02)
{
level.player endon("death");
level endon("end_sniper_drone");
common_scripts\utility::flag_wait("FlagHadesVehicleDroneLaunch");
var_03 = getvehiclenode("HadesEscapeVehicleStart","targetname");
common_scripts\utility::flag_set("FlagSniperDroneLookAt");
level.player allowads(0);
var_04 = (0,0,0);
foreach(var_06 in level.allenemyvehicles)
{
if(isdefined(var_06.escapevehicle))
{
var_04 = var_06.origin;
}
}
var_08 = vectortoangles(var_04 - level.player.sniperdronelink.origin);
clearmovementparameters();
lerpplayerlook(var_08);
common_scripts\utility::flag_clear("FlagSniperDroneLookAt");
}
//Function Number: 29
updateflyinscopeoverlay(param_00,param_01)
{
while(isdefined(level.player.sniperdronelink))
{
var_02 = level.player.sniperdronelink.angles;
wait(0.05);
if(!common_scripts\utility::flag("FlagSniperDroneAnimating") && !common_scripts\utility::flag("FlagSniperDroneLookAt"))
{
continue;
}
var_03 = level.player.sniperdronelink.origin[2] - param_01;
var_04 = var_02[1] - level.player.sniperdronelink.angles[1];
var_04 = clamp(var_04,-1,1);
updatescopeoverlayalpha(0,param_00);
luinotifyevent(&"sniper_drone_hud_update",8,int(maps\_utility::round_float(var_04 * 100,0,0)),0,int(var_03),0,0,int(param_00.alpha * 10),0,gettime());
var_05 = level.player.sniperdronelink.angles[0];
if(common_scripts\utility::flag("FlagSniperDroneLookAt"))
{
var_05 = getlookpitch();
}
updateviewmodelpitchoffset(var_05);
level.player.sniperdronedata.frameviewmodel unlinkfromplayerview(level.player);
level.player.sniperdronedata.frameviewmodel linktoplayerview(level.player,"tag_origin",level.player.sniperdronedata.frameviewmodeloffset,(0,0,0),1);
level.player.sniperdronedata.barrelviewmodel unlinkfromplayerview(level.player);
level.player.sniperdronedata.barrelviewmodel linktoplayerview(level.player,"tag_origin",level.player.sniperdronedata.barrelviewmodeloffset,(0,0,0),1);
}
}
//Function Number: 30
hintsniperdronemove()
{
thread notifyonplayermovingsniperdrone();
thread maps\_utility::hintdisplaymintimehandler("drone_move",15,5);
}
//Function Number: 31
hintdronemoveoff()
{
if(isdefined(level.playermovingdrone) && level.playermovingdrone == 1)
{
return level.playermovingdrone;
}
else if(common_scripts\utility::flag("FlagGateGuardsAtAllyVehicle"))
{
return 1;
}
return 0;
}
//Function Number: 32
notifyonplayermovingsniperdrone()
{
for(;;)
{
var_00 = level.player getnormalizedmovement();
if(length(var_00) != 0)
{
level.playermovingdrone = 1;
break;
}
wait(0.05);
}
}
//Function Number: 33
hintsniperdroneshoot()
{
thread maps\_utility::hintdisplaymintimehandler("drone_shoot",10,3);
}
//Function Number: 34
hintdroneshootoff()
{
return level.player attackbuttonpressed();
}
//Function Number: 35
dofiringeffects()
{
level endon("end_sniper_drone");
level.player endon("death");
var_00 = common_scripts\utility::getfx("sniper_drone_flash_view");
var_01 = common_scripts\utility::getfx("sniper_drone_tracer");
var_02 = level.player common_scripts\utility::spawn_tag_origin();
var_02 linktoplayerview(level.player,"tag_origin",(0,0,-5),(0,0,0),1);
while(level.droneweapon == "hms_sniperdrone")
{
level.player waittill("weapon_fired");
level.player shellshock("barrett",0.3);
level.player.sniperdronedata.recoildirection = anglestoforward(level.player getgunangles()) * -1;
level.player.sniperdronedata.calculatenewhoverdestination = 1;
level.player.sniperdronedata.lastrecoiloffset = (0,0,0);
if(level.player adsbuttonpressed())
{
var_03 = level.player geteye();
var_04 = anglestoforward(level.player getgunangles());
var_05 = var_03 + var_04 * 100;
var_06 = var_03 + var_04 * 5000;
var_07 = bullettrace(var_05,var_06,1,undefined,0,1);
var_08 = var_03 - (0,0,5);
var_09 = var_07["position"] - var_08;
playfx(var_01,var_08,var_09,(0,0,1));
screenshake(level.player.origin,0.25,0,0,0.2,0.1,0.1,0,0.5);
continue;
}
playfxontag(var_00,level.player.sniperdronedata.barrelviewmodel,"tag_flash");
playfxontag(var_01,level.player.sniperdronedata.barrelviewmodel,"tag_flash");
}
}
//Function Number: 36
updaterecoiloffset(param_00)
{
if(level.player.sniperdronedata.recoildirection != (0,0,0))
{
var_01 = level.player.sniperdronedata.recoildirection * 250;
level.player.sniperdronedata.recoildirection = (0,0,0);
level.player.sniperdronedata.lastrecoiloffset = var_01;
return var_01;
}
if(level.player.sniperdronedata.lastrecoiloffset == (0,0,0))
{
return (0,0,0);
}
level.player.sniperdronedata.lastrecoiloffset = vectorlerp(level.player.sniperdronedata.lastrecoiloffset,(0,0,0),0.1);
return level.player.sniperdronedata.lastrecoiloffset;
}
//Function Number: 37
isadsenabled(param_00)
{
if(common_scripts\utility::flag("FlagHadesVehicleDroneLaunch") || common_scripts\utility::flag("FlagConfRoomExplosion"))
{
return 0;
}
if(!param_00 && !common_scripts\utility::flag("FlagMonitorZoomOnHades") && !common_scripts\utility::flag("FlagGateGuardsApproachingAllyVehicle") && !common_scripts\utility::flag("FlagConfRoomExplosion") && !common_scripts\utility::flag("FlagHadesVehicleDroneLaunch"))
{
return 0;
}
return 1;
}
//Function Number: 38
doadsblur(param_00)
{
level.player endon("death");
level endon("end_sniper_drone");
var_01 = level.player adsbuttonpressed();
for(;;)
{
wait(0.05);
if(common_scripts\utility::flag("FlagForcePlayerADS") || !isadsenabled(param_00))
{
continue;
}
var_02 = level.player adsbuttonpressed();
if(!var_01 && var_02)
{
level.player setblurforplayer(2,0.1);
wait(0.3);
level.player setblurforplayer(0,0.1);
}
else if(var_01 && !var_02)
{
level.player setblurforplayer(2,0.1);
wait(0.3);
level.player setblurforplayer(0,0.1);
}
var_01 = var_02;
}
}
//Function Number: 39
adjustfov(param_00,param_01,param_02)
{
level.player endon("death");
level endon("end_sniper_drone");
var_03 = 40;
var_04 = 7.5;
var_05 = 0;
var_06 = 0;
level.player lerpfov(var_03,0.5);
level.player enablefocus(var_04 / 2,var_04,1,0);
while(isdefined(level.player.sniperdronelink))
{
wait(0.05);
if(!isdefined(level.player.sniperdronelink))
{
break;
}
if(issaverecentlyloaded() && !var_06)
{
var_05 = 1;
var_06 = 1;
}
else if(!issaverecentlyloaded())
{
var_06 = 0;
}
if((isadsenabled(param_00) && level.player adsbuttonpressed()) || common_scripts\utility::flag("FlagForcePlayerADS"))
{
if(!var_05)
{
level.player lerpfov(var_04,0.25);
level.player enablefocus(7.5,20,0.125,1);
level.player enableaudiozoom(2,1);
var_05 = 1;
}
continue;
}
if(var_05)
{
level.player lerpfov(var_03,0.5);
level.player enablefocus(7.5,20,1,1);
level.player disableaudiozoom(1);
var_05 = 0;
}
}
}
//Function Number: 40
updatesunshadowcenter(param_00,param_01)
{
var_02 = anglestoforward(level.player getgunangles());
var_03 = param_01;
var_04 = level.player geteye() + var_02 * 100;
var_05 = level.player.origin + var_02 * 5000;
var_06 = bullettrace(var_04,var_05,1,level.player);
if(isdefined(var_06["position"]))
{
var_07 = distance(var_04,var_06["position"]);
var_03 = param_00.origin + var_02 * var_07 * 0.9;
}
setsaveddvar("sm_sunShadowCenter",var_03);
}
//Function Number: 41
adjustshadowcenter(param_00)
{
level.player endon("death");
level endon("end_sniper_drone");
var_01 = 0;
var_02 = getent("PlayerDroneTargetpoint","targetname");
while(isdefined(level.player.sniperdronelink))
{
wait(0.1);
if(!isdefined(level.player.sniperdronelink))
{
break;
}
if((isadsenabled(param_00) && level.player adsbuttonpressed()) || common_scripts\utility::flag("FlagForcePlayerADS"))
{
updatesunshadowcenter(level.player.sniperdronelink,var_02);
if(!var_01)
{
level.player lightsetforplayer("confcenter_drone_zoom");
var_01 = 1;
}
continue;
}
if(var_01)
{
setsaveddvar("sm_sunShadowCenter","0 0 0");
level.player lightsetforplayer("confcenter_start");
var_01 = 0;
}
}
}
//Function Number: 42
adjuststaticoverlay(param_00,param_01,param_02,param_03,param_04)
{
var_05 = param_00.alpha;
common_scripts\utility::flag_wait(param_01);
if(isdefined(param_04))
{
wait(param_04);
}
param_00.alpha = param_02;
if(isdefined(param_03))
{
wait(param_03);
param_00.alpha = var_05;
}
}
//Function Number: 43
flickerstaticoverlay(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = param_00.alpha;
if(!isdefined(param_04))
{
param_04 = 0;
}
var_07 = 0.01 + param_04;
var_08 = 0.05 + param_04;
if(!isdefined(param_05))
{
param_05 = 0;
}
var_09 = 0.25 + param_05;
var_0A = 0.75 + param_05;
common_scripts\utility::flag_wait(param_01);
var_0B = gettime() * 0.001;
var_0C = 0;
while(var_0C < param_03)
{
if(isdefined(param_00))
{
param_00.alpha = param_02;
}
wait(randomfloatrange(var_07,var_08));
soundscripts\_snd::snd_message("start_wasp_flicker");
if(isdefined(param_00))
{
param_00.alpha = var_06;
}
wait(randomfloatrange(var_09,var_0A));
var_0D = gettime() * 0.001;
var_0C = var_0D - var_0B;
wait(0.05);
}
}
//Function Number: 44
adjustmissileoverlay(param_00,param_01,param_02)
{
common_scripts\utility::flag_wait(param_01);
param_00.alpha = 1;
soundscripts\_snd::snd_message("start_wasp_missile_warning");
common_scripts\utility::flag_wait(param_02);
param_00.alpha = 0;
soundscripts\_snd::snd_message("stop_wasp_missile_warning");
}
//Function Number: 45
sniperdronelensdamaged()
{
level.player waittill("kamikaze_damaged_lens");
level.player.sniperdronedata.lensviewmodel unlinkfromplayerview(level.player);
level.player.sniperdronedata.lensviewmodel hide();
level.player.sniperdronedata.lensviewmodel delete();
level.player.sniperdronedata.damagedlensviewmodel = spawn("script_model",level.player.sniperdronelink.origin);
level.player.sniperdronedata.damagedlensviewmodel setmodel("vehicle_sniper_drone_hud_glass_break");
level.player.sniperdronedata.damagedlensviewmodel linktoplayerview(level.player,"tag_origin",(9,0,0),(0,0,0),1);
}
//Function Number: 46
enddronecontrol()
{
rumblesniperdronetakenout();
level.player.sniperdronelink restoredefaultturnrate();
wait(0.75);
level.player setblurforplayer(10,0.5);
maps\_hud_util::fade_out(0.25,"white");
level.player.sniperdronelink = undefined;
setomnvar("ui_sniperdrone",0);
soundscripts\_snd::snd_message("stop_drone_death_static");
wait(0.25);
common_scripts\utility::flag_set("init_safehouse_outro_start_lighting");
level.player setblurforplayer(0,0.1);
common_scripts\utility::flag_set("FlagSafeHouseOutroStart");
}
//Function Number: 47
iscontrollingdrone()
{
return isdefined(level.player.sniperdronelink);
}
//Function Number: 48
createoverlay(param_00,param_01)
{
var_02 = newclienthudelem(level.player);
var_02.x = 0;
var_02.y = 0;
var_02.alignx = "left";
var_02.aligny = "top";
var_02.horzalign = "fullscreen";
var_02.vertalign = "fullscreen";
var_02 setshader(param_00,640,480);
var_02.alpha = param_01;
var_02.sort = -3;
return var_02;
}
//Function Number: 49
createmissileoverlay(param_00,param_01)
{
var_02 = newclienthudelem(level.player);
var_02.x = 320;
var_02.y = 350;
var_02.sort = 0;
var_02.alignx = "center";
var_02.aligny = "middle";
var_02 setshader(param_00,256,64);
var_02.alpha = 0;
return var_02;
}
//Function Number: 50
updatescopeoverlayalpha(param_00,param_01)
{
if(((isadsenabled(param_00) && level.player adsbuttonpressed()) || common_scripts\utility::flag("FlagForcePlayerADS")) && param_01.alpha < 1)
{
param_01.alpha = param_01.alpha + 0.2;
soundscripts\_snd::snd_message("start_sniper_drone_zoom");
return;
}
if(!level.player adsbuttonpressed() || common_scripts\utility::flag("FlagForcePlayerADS") && param_01.alpha > 0)
{
param_01.alpha = param_01.alpha - 0.2;
soundscripts\_snd::snd_message("stop_sniper_drone_zoom");
}
}
//Function Number: 51
updatescopeoverlay(param_00,param_01,param_02)
{
var_03 = level.player getnormalizedmovement();
var_04 = level.player getnormalizedcameramovements();
updatescopeoverlayalpha(param_02,param_00);
luinotifyevent(&"sniper_drone_hud_update",8,int(maps\_utility::round_float(var_03[1] * 100,0,0)),int(maps\_utility::round_float(var_04[1] * 100,0,0)),int(param_01),int(getlookpitch()),int(getlookyaw()),int(param_00.alpha * 10),int(level.player.sniperdronedata.droneangularvelocity),gettime());
}
//Function Number: 52
updatedronesattackspeedmultiplier()
{
if(!common_scripts\utility::flag("FlagHadesVehicleDriveStart"))
{
return;
}
level.player.sniperdronedata.dronesattackspeedmultiplier = level.player.sniperdronedata.dronesattackspeedmultiplier - 0.015;
level.player.sniperdronedata.dronesattackspeedmultiplier = clamp(level.player.sniperdronedata.dronesattackspeedmultiplier,0.75,1);
}
//Function Number: 53
setupsniperdebughudelem()
{
var_00 = newhudelem();
var_00.alignx = "left";
var_00.aligny = "top";
var_00.x = 40;
var_00.y = 40;
var_00.alpha = 0.6;
var_00.fontscale = 1.5;
var_00.foreground = 1;
var_00.horzalign = "fullscreen";
var_00.vertalign = "fullscreen";
return var_00;
}
//Function Number: 54
drawsniperdebug(param_00,param_01,param_02,param_03,param_04)
{
var_05 = "yawOrbitOffset " + param_01 + " verticalOffset " + param_02;
param_00 settext(var_05);
common_scripts\utility::draw_arrow_time(param_03,param_04,(0,1,0),0.05);
}
//Function Number: 55
compareorbitangle(param_00,param_01)
{
return param_00.orbitangle < param_01.orbitangle;
}
//Function Number: 56
settargetangularacceleration(param_00)
{
if(abs(level.player.sniperdronedata.targetangularacceleration) > abs(param_00))
{
return;
}
level.player.sniperdronedata.targetangularacceleration = param_00;
}
//Function Number: 57
updatetargetangularacceleration()
{
if(!isdefined(level.player.sniperdronedata))
{
return;
}
level.player.sniperdronedata.targetangularacceleration = level.player.sniperdronedata.targetangularacceleration * 0.95;
}
//Function Number: 58
updatevelocity(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
var_09 = clamp(abs(param_01),0,1);
var_0A = 0;
if(param_02 * param_01 < 0)
{
if(level.player adsbuttonpressed() || common_scripts\utility::flag("FlagForcePlayerADS"))
{
var_0A = param_08 * param_01;
}
else
{
var_0A = param_07 * param_01;
}
}
param_02 = param_02 + param_03 * param_01 + var_0A;
param_02 = clamp(param_02,-1 * param_04,param_04);
if(isdefined(param_00))
{
updatetargetangularacceleration();
param_00.stickhorizontalinputlength = var_09;
if(var_09 > 0)
{
param_00.targetangularacceleration = param_03 * param_01;
param_00.brakingcurrenttime = 0;
}
}
if(var_09 == 0)
{
var_0B = param_02;
if(level.player adsbuttonpressed() || common_scripts\utility::flag("FlagForcePlayerADS"))
{
param_02 = param_02 * param_06;
}
else
{
param_02 = param_02 * param_05;
}
if(isdefined(param_00))
{
settargetangularacceleration(var_0B - param_02 * -1);
}
}
return param_02;
}
//Function Number: 59
scalevelocity(param_00)
{
if(level.player adsbuttonpressed() || common_scripts\utility::flag("FlagForcePlayerADS"))
{
param_00 = param_00 * 0.85;
}
if(common_scripts\utility::flag("FlagHadesVehicleDriveStart") || common_scripts\utility::flag("FlagForcePlayerSlowMovement"))
{
param_00 = param_00 * level.player.sniperdronedata.dronesattackspeedmultiplier;
}
if(level.player adsbuttonpressed() && level.player enemyincrosshairs())
{
param_00 = param_00 * 0.85;
}
return param_00;
}
//Function Number: 60
updatehorizontalvelocity()
{
var_00 = maps\greece_code::calculateleftstickdeadzone();
var_01 = updatevelocity(level.player.sniperdronedata,var_00[1],level.player.sniperdronedata.droneangularvelocity,1.25,35,0.9,0.4,10,8);
return scalevelocity(var_01);
}
//Function Number: 61
updateverticalvelocity()
{
var_00 = maps\greece_code::calculateleftstickdeadzone();
var_01 = updatevelocity(undefined,var_00[0],level.player.sniperdronedata.droneverticalvelocity,15,375,0.75,0.4,150,125);
return scalevelocity(var_01);
}
//Function Number: 62
clamppositiontolowerbounds(param_00,param_01)
{
var_02 = vectortoangles(param_01 - param_00);
var_03 = level.player.sniperdronedata.orbitlowerbounds maps\_sarray::sarray_length() - 1;
var_04 = 0;
for(var_04 = 0;var_04 < level.player.sniperdronedata.orbitlowerbounds maps\_sarray::sarray_length();var_04++)
{
if(var_02[1] < level.player.sniperdronedata.orbitlowerbounds maps\_sarray::sarray_get(var_04).orbitangle)
{
break;
}
var_03 = var_04;
}
var_04 = var_04 % level.player.sniperdronedata.orbitlowerbounds maps\_sarray::sarray_length();
var_05 = level.player.sniperdronedata.orbitlowerbounds maps\_sarray::sarray_get(var_03).orbitangle;
var_06 = level.player.sniperdronedata.orbitlowerbounds maps\_sarray::sarray_get(var_04).orbitangle;
if(var_05 > var_06)
{
var_05 = var_05 - 360;
}
var_07 = abs(var_02[1] - var_05) / abs(var_06 - var_05);
var_08 = level.player.sniperdronedata.orbitlowerbounds maps\_sarray::sarray_get(var_03).origin;
var_09 = level.player.sniperdronedata.orbitlowerbounds maps\_sarray::sarray_get(var_04).origin;
var_0A = var_08[2] + var_09[2] - var_08[2] * var_07;
if(param_00[2] < var_0A)
{
return var_0A - param_00[2];
}
return 0;
}
//Function Number: 63
clampyaworbitoffset(param_00,param_01,param_02)
{
var_03 = vectortoangles(param_00 - param_01 * (1,1,0));
var_03 = var_03 - param_02;
return var_03[1];
}
//Function Number: 64
calculatehoverlocation(param_00)
{
var_01 = param_00 + level.player.sniperdronedata.dronehoverdirection * 50;
return vectornormalize(var_01 - level.player.sniperdronelink.origin) * level.player.sniperdronedata.hoverspeed;
}
//Function Number: 65
updatehoverspeed(param_00)
{
var_01 = param_00 + level.player.sniperdronedata.dronehoverdirection * 50;
var_02 = 10;
var_03 = length(var_01 - level.player.sniperdronelink.origin);
if(var_03 > var_02)
{
level.player.sniperdronedata.hoverspeed = level.player.sniperdronedata.hoverspeed + 0.5;
level.player.sniperdronedata.hoverspeed = clamp(level.player.sniperdronedata.hoverspeed,-1,1);
return;
}
var_04 = maps\_shg_utility::linear_map_clamp(var_03,0,var_02,0,1);
level.player.sniperdronedata.hoverspeed = maps\_utility::linear_interpolate(var_04,0.5,1);
}
//Function Number: 66
updatehoveridle(param_00)
{
if(level.player maps\_utility::isads())
{
level.player.sniperdronedata.calculatenewhoverdestination = 1;
}
else if(abs(level.player.sniperdronedata.droneangularvelocity) > 0.05 || abs(level.player.sniperdronedata.droneverticalvelocity) > 0.05)
{
level.player.sniperdronedata.calculatenewhoverdestination = 1;
level.player.sniperdronedata.hoverbounceconeangle = 30;
level.player.sniperdronedata.dronehoverdirection = vectornormalize(level.player.sniperdronedata.currentvelocity) * -1;
}
else if(level.player.sniperdronedata.calculatenewhoverdestination)
{
level.player.sniperdronedata.calculatenewhoverdestination = 0;
level.player.sniperdronedata.dronehoverdirection = common_scripts\utility::randomvectorincone(level.player.sniperdronedata.dronehoverdirection * -1,level.player.sniperdronedata.hoverbounceconeangle);
level.player.sniperdronedata.dronehoverdirection = vectornormalize(level.player.sniperdronedata.dronehoverdirection);
level.player.sniperdronedata.hoverbounceconeangle = 120;
level.player.sniperdronedata.hoverspeed = 0;
return calculatehoverlocation(param_00);
}
else
{
updatehoverspeed(param_00);
var_01 = param_00 + level.player.sniperdronedata.dronehoverdirection * 50;
if(lengthsquared(level.player.sniperdronelink.origin - var_01) < squared(3))
{
level.player.sniperdronedata.calculatenewhoverdestination = 1;
}
return calculatehoverlocation(param_00);
}
return (0,0,0);
}
//Function Number: 67
updateviewmodelacceleration(param_00)
{
var_01 = level.player.sniperdronedata;
if(level.player maps\_utility::isads())
{
var_01.framerollacceleration = vectorlerp(var_01.framerollacceleration,(0,0,0),0.1);
var_01.barrelrollacceleration = vectorlerp(var_01.barrelrollacceleration,(0,0,0),0.1);
return;
}
if(var_01.stickhorizontalinputlength >= 0.1)
{
var_01.framerollacceleration = vectorlerp(var_01.framerollacceleration,param_00 * var_01.targetangularacceleration,0.1);
var_01.barrelrollacceleration = vectorlerp(var_01.barrelrollacceleration,param_00 * var_01.targetangularacceleration,0.05);
return;
}
var_02 = 0.4 * squared(var_01.brakingcurrenttime);
var_03 = 0.9 * squared(var_01.brakingcurrenttime);
var_01.framerollacceleration = vectorlerp(var_01.framerollacceleration,param_00 * var_01.targetangularacceleration,var_02);
var_01.barrelrollacceleration = vectorlerp(var_01.barrelrollacceleration,param_00 * var_01.targetangularacceleration,var_03);
var_01.brakingcurrenttime = var_01.brakingcurrenttime + 0.05;
var_01.brakingcurrenttime = clamp(var_01.brakingcurrenttime,0,1);
}
//Function Number: 68
updateviewmodellookoffset(param_00)
{
if(level.player maps\_utility::isads())
{
level.player.sniperdronedata.horizontaloffsetlook = maps\_utility::linear_interpolate(0.1,level.player.sniperdronedata.horizontaloffsetlook,0);
level.player.sniperdronedata.verticaloffsetlook = maps\_utility::linear_interpolate(0.075,level.player.sniperdronedata.verticaloffsetlook,0);
return;
}
var_01 = level.player getnormalizedcameramovements();
var_02 = 0;
if(var_01[1] > 0)
{
var_02 = maps\_utility::linear_interpolate(var_01[1],0,1.5);
}
else
{
var_02 = maps\_utility::linear_interpolate(-1 * var_01[1],0,1.5) * -1;
}
var_03 = 0;
if(var_01[0] > 0)
{
var_03 = maps\_utility::linear_interpolate(var_01[0],0,1) * -1;
}
else
{
var_03 = maps\_utility::linear_interpolate(-1 * var_01[0],0,1);
}
level.player.sniperdronedata.horizontaloffsetlook = maps\_utility::linear_interpolate(0.05,level.player.sniperdronedata.horizontaloffsetlook,var_02);
level.player.sniperdronedata.verticaloffsetlook = maps\_utility::linear_interpolate(0.03,level.player.sniperdronedata.verticaloffsetlook,var_03);
}
//Function Number: 69
getviewmodelrotation(param_00,param_01,param_02,param_03)
{
var_04 = (0,0,1) + param_00 * maps\_utility::linear_interpolate(param_01,0,param_03);
var_05 = vectorcross(var_04,param_02);
param_02 = vectorcross(var_05,var_04);
return axistoangles(param_02,var_05 * -1,var_04);
}
//Function Number: 70
updateviewmodelpitchoffset(param_00)
{
param_00 = clamplookangle(param_00);
var_01 = 120;
var_02 = 1.5;
var_03 = param_00 + 60 / var_01;
var_03 = 1 - clamp(var_03,0,1);
var_04 = (13,0,-3)[0];
var_05 = (-1,0,-1.75)[0];
var_06 = maps\_utility::linear_interpolate(var_03,var_04 + var_02,var_04 - var_02);
var_07 = maps\_utility::linear_interpolate(var_03,var_05 + var_02,var_05 - var_02);
level.player.sniperdronedata.frameviewmodeloffset = (var_06,0,(13,0,-3)[2]);
level.player.sniperdronedata.barrelviewmodeloffset = (var_07,0,(-1,0,-1.75)[2]);
}
//Function Number: 71
getviewmodelstrafeoffset()
{
level.player.sniperdronedata.horizontaloffsetstrafe = maps\_utility::linear_interpolate(0.2,level.player.sniperdronedata.horizontaloffsetstrafe,level.player.sniperdronedata.droneangularvelocity / 35);
level.player.sniperdronedata.verticaloffsetstrafe = maps\_utility::linear_interpolate(0.2,level.player.sniperdronedata.verticaloffsetstrafe,level.player.sniperdronedata.droneverticalvelocity / 375);
return (0,level.player.sniperdronedata.horizontaloffsetstrafe * 1.5,level.player.sniperdronedata.verticaloffsetstrafe);
}
//Function Number: 72
updatebodyroll(param_00)
{
var_01 = level.player.sniperdronedata;
if(level.player maps\_utility::isads())
{
var_01.bodyrollvelocity = vectorlerp(var_01.bodyrollvelocity,(0,0,0),0.1);
}
else
{
var_01.bodyrollvelocity = vectorlerp(var_01.bodyrollvelocity,var_01.currentvelocity * (1,1,0),0.2);
}
var_02 = anglestoforward(level.player getplayerangles() * (0,1,0));
var_02 = vectornormalize(var_02 * (1,1,0));
var_03 = anglestoforward(param_00 * (0,1,0));
var_04 = vectordot(var_02,var_03);
var_04 = clamp(var_04,-1,1);
var_05 = acos(var_04) / 90;
var_06 = clamp(var_05,0,1);
var_06 = 1 - squared(var_06);
var_07 = (0,0,1) + var_01.bodyrollvelocity * maps\_utility::linear_interpolate(var_06,0.0001,0.0025);
var_08 = vectorcross(var_07,var_03);
var_09 = vectorcross(var_08,var_07);
var_0A = vectorcross(var_09,(0,0,1));
var_0A = vectornormalize(var_0A);
var_0B = axistoangles(var_09,var_08 * -1,var_07);
updateviewmodelacceleration(var_0A);
updateviewmodellookoffset(param_00);
var_01.lastplayerangles = level.player getplayerangles();
var_0C = getviewmodelrotation(var_01.framerollacceleration,var_06,var_09,0.125);
updateviewmodelpitchoffset(getlookpitch());
var_0D = getviewmodelstrafeoffset();
var_0D = (0,var_0D[1] + var_01.horizontaloffsetlook,var_0D[2] + var_01.verticaloffsetlook);
var_01.frameviewmodel unlinkfromplayerview(level.player);
var_01.frameviewmodel linktoplayerview(level.player,"tag_origin",var_01.frameviewmodeloffset + var_0D,var_0C * (0,0,1),1);
var_0E = getviewmodelrotation(var_01.barrelrollacceleration,var_06,var_09,0.125);
var_01.barrelviewmodel unlinkfromplayerview(level.player);
var_01.barrelviewmodel linktoplayerview(level.player,"tag_origin",var_01.barrelviewmodeloffset + var_0D * 0.5,var_0E * (0,0,1),1);
return var_0B;
}
//Function Number: 73
angle_lerp(param_00,param_01,param_02)
{
return angleclamp(param_00 + angleclamp180(param_01 - param_00) * param_02);
}
//Function Number: 74
euler_lerp(param_00,param_01,param_02)
{
return (angle_lerp(param_00[0],param_01[0],param_02),angle_lerp(param_00[1],param_01[1],param_02),angle_lerp(param_00[2],param_01[2],param_02));
}
//Function Number: 75
rumblesniperdronefire()
{
level.player playrumbleonentity("heavygun_fire");
earthquake(0.1,0.1,level.player.origin,100);
}
//Function Number: 76
rumblesniperdronetakenout()
{
level.player playrumbleonentity("damage_heavy");
earthquake(0.5,1,level.player.origin,100);
}