mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
517 lines
14 KiB
Plaintext
517 lines
14 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: _player_fastzip.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 25
|
|
* Decompile Time: 347 ms
|
|
* Timestamp: 4/22/2024 2:22:15 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
main()
|
|
{
|
|
common_scripts\utility::flag_init("use_fastzip_hint");
|
|
common_scripts\utility::flag_init("flag_zipline_fire_button_pressed");
|
|
maps\_utility::add_control_based_hint_strings("hint_use_fastzip",&"FASTZIP_HARPOON_SWITCH",::should_end_fastzip_hint);
|
|
maps\_utility::add_control_based_hint_strings("hint_fire_fastzip",&"FASTZIP_FIRE_ZIPLINE",::should_end_fastzip_fire_hint);
|
|
precacheturret("zipline_gun_player");
|
|
load_fx();
|
|
load_model_anims();
|
|
load_player_anims();
|
|
}
|
|
|
|
//Function Number: 2
|
|
load_fx()
|
|
{
|
|
level._effect["zipline_flash_view"] = loadfx("vfx/muzzleflash/zipline_flash_view");
|
|
level._effect["harpoon_dust"] = loadfx("vfx/trail/harpoon_dust");
|
|
level._effect["landing_target_valid"] = loadfx("fx/misc/ui_flagbase_gold");
|
|
level._effect["landing_target_invalid"] = loadfx("fx/misc/ui_flagbase_red");
|
|
}
|
|
|
|
//Function Number: 3
|
|
load_model_anims()
|
|
{
|
|
level.scr_anim["_turret_fastzip"]["fastzip_aim_idle"] = %fastzip_launcher_ads;
|
|
}
|
|
|
|
//Function Number: 4
|
|
load_player_anims()
|
|
{
|
|
level.scr_anim["_player_arms_fastzip"]["fastzip_pullout"] = %fastzip_launcher_pullout_vm;
|
|
level.scr_anim["_player_arms_fastzip"]["fastzip_ads"] = %fastzip_launcher_ads_vm;
|
|
level.scr_anim["_player_arms_fastzip"]["fastzip_putaway"] = %fastzip_launcher_putaway_vm;
|
|
level.scr_anim["_player_arms_fastzip"]["fastzip_land"] = %fastzip_launcher_land_vm;
|
|
}
|
|
|
|
//Function Number: 5
|
|
should_end_fastzip_hint()
|
|
{
|
|
return common_scripts\utility::flag("use_fastzip_hint");
|
|
}
|
|
|
|
//Function Number: 6
|
|
should_end_fastzip_fire_hint()
|
|
{
|
|
return common_scripts\utility::flag("flag_zipline_fire_button_pressed");
|
|
}
|
|
|
|
//Function Number: 7
|
|
fire_hint_display()
|
|
{
|
|
self endon("flag_zipline_fire_button_pressed");
|
|
wait(4);
|
|
if(!common_scripts\utility::flag("flag_zipline_fire_button_pressed"))
|
|
{
|
|
maps\_utility::hintdisplayhandler("hint_fire_fastzip");
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
copy_script_model(param_00)
|
|
{
|
|
var_01 = spawn("script_model",param_00.origin);
|
|
var_01 maps\_utility::assign_animtree(param_00.animname);
|
|
var_01 setmodel(param_00.model);
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 9
|
|
fastzip_turret_think(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon("death");
|
|
var_04 = copy_script_model(param_02);
|
|
var_04.animname = "_player_arms_fastzip";
|
|
var_04 hide();
|
|
var_05 = getentarray("valid_landing","targetname");
|
|
wait_for_player_switch_to_turret();
|
|
level.player maps\_shg_utility::setup_player_for_scene(1);
|
|
level.player allowjump(0);
|
|
var_06 = getdvarint("turret_adsEnabled",1);
|
|
setsaveddvar("turret_adsEnabled",0);
|
|
waittillframeend;
|
|
self notify("using_zip");
|
|
var_07 = param_00.zipline_gun_model[param_01];
|
|
var_08 = vehicle_scripts\_xh9_warbird::setup_zipline_gun("zipline_gun_player",param_00,param_01,var_07.model,var_07.rope_model,"_turret_fastzip");
|
|
var_09 = vehicle_scripts\_xh9_warbird::setup_zipline_gun("zipline_gun_rope",param_00,param_01,var_07.rope_model,undefined,"_turret_fastzip");
|
|
fastzip_turret_pullout(param_00,param_01,var_04,var_07);
|
|
var_08 show();
|
|
var_04 hide();
|
|
var_08 makeusable();
|
|
var_08 setmode("manual");
|
|
var_09 setmode("manual");
|
|
var_08 useby(self);
|
|
var_08 turretfiredisable();
|
|
self disableturretdismount();
|
|
var_08 makeunusable();
|
|
var_08.ground_target = common_scripts\utility::spawn_tag_origin();
|
|
var_09 settargetentity(var_08.ground_target,(0,0,0));
|
|
thread fire_hint_display();
|
|
wait_to_fire_rope(param_00,var_08,var_05);
|
|
self playrumbleonentity("damage_heavy");
|
|
var_0A = var_09 fire_rope(var_08,var_08.ground_target.origin,var_07);
|
|
var_08 set_landing_target_fx(undefined);
|
|
var_08 useby(self);
|
|
var_08 settargetentity(var_08.ground_target);
|
|
setsaveddvar("turret_adsEnabled",var_06);
|
|
fastzip_turret_putaway(param_00,param_01,var_04,var_08,var_07);
|
|
thread player_fastzip(var_09,var_08.ground_target.origin,var_04,param_03);
|
|
var_0B = maps\_utility::get_rumble_ent("steady_rumble");
|
|
var_0B.intensity = 0.2;
|
|
self waittill("fastzip_arrived");
|
|
stopallrumbles();
|
|
self waittill("fastzip_landed");
|
|
var_04 delete();
|
|
self playrumbleonentity("damage_heavy");
|
|
wait(0.5);
|
|
var_09 retract_rope(var_0A,"left");
|
|
var_09 delete();
|
|
var_08.ground_target delete();
|
|
var_08 delete();
|
|
}
|
|
|
|
//Function Number: 10
|
|
fastzip_turret_pullout(param_00,param_01,param_02,param_03)
|
|
{
|
|
param_02 linkto(param_00,param_01,(0,0,0),(0,0,0));
|
|
var_04 = [];
|
|
var_04[0] = param_02;
|
|
var_04[1] = param_03;
|
|
param_03 clear_script_model_anim(0);
|
|
soundscripts\_snd::snd_message("fastzip_turret_switch_to");
|
|
param_00 maps\_anim::anim_first_frame(var_04,"fastzip_pullout",param_01);
|
|
var_05 = 0.15;
|
|
level.player playerlinktoblend(param_02,"tag_player",var_05);
|
|
level.player common_scripts\utility::delaycall(var_05,::playerlinktodelta,param_02,"tag_player",1,0,0,0,0,1);
|
|
param_02 common_scripts\utility::delaycall(var_05,::show);
|
|
maps\_utility::delaythread(1.2,::maps\_utility::lerp_fov_overtime,2,55);
|
|
param_00 maps\_anim::anim_single(var_04,"fastzip_pullout",param_01);
|
|
param_02 maps\_utility::anim_stopanimscripted();
|
|
param_02 setanim(level.scr_anim["_player_arms_fastzip"]["fastzip_ads"],1,0,1);
|
|
param_02 unlink();
|
|
param_03 hide();
|
|
if(isdefined(param_03.attachment))
|
|
{
|
|
param_03.attachment hide();
|
|
}
|
|
|
|
soundscripts\_snd::snd_message("fastzip_turret_switch_complete");
|
|
self unlink();
|
|
}
|
|
|
|
//Function Number: 11
|
|
set_landing_target_fx(param_00)
|
|
{
|
|
if(!isdefined(self.current_landing_fx))
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
self.current_landing_fx = param_00;
|
|
playfxontag(common_scripts\utility::getfx(self.current_landing_fx),self.ground_target,"tag_origin");
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.current_landing_fx) && !isdefined(param_00))
|
|
{
|
|
stopfxontag(common_scripts\utility::getfx(self.current_landing_fx),self.ground_target,"tag_origin");
|
|
self.current_landing_fx = undefined;
|
|
return;
|
|
}
|
|
|
|
if(self.current_landing_fx != param_00)
|
|
{
|
|
stopfxontag(common_scripts\utility::getfx(self.current_landing_fx),self.ground_target,"tag_origin");
|
|
self.current_landing_fx = param_00;
|
|
playfxontag(common_scripts\utility::getfx(self.current_landing_fx),self.ground_target,"tag_origin");
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
wait_to_fire_rope(param_00,param_01,param_02)
|
|
{
|
|
param_01.ground_target.angles = (-90,0,0);
|
|
param_01.current_landing_fx = undefined;
|
|
for(;;)
|
|
{
|
|
var_03 = param_01 gettagorigin("tag_player");
|
|
var_04 = param_01 gettagangles("tag_player");
|
|
var_05 = vectornormalize(anglestoforward(var_04));
|
|
var_06 = var_03 + var_05 * 100;
|
|
var_07 = var_03 + var_05 * 10000;
|
|
var_08 = 0;
|
|
param_01.ground_target.origin = var_07;
|
|
var_09 = bullettrace(var_06,var_07,0);
|
|
if(isdefined(var_09["position"]))
|
|
{
|
|
param_01.ground_target.origin = var_09["position"];
|
|
foreach(var_0B in param_02)
|
|
{
|
|
if(param_01.ground_target istouching(var_0B))
|
|
{
|
|
var_08 = 1;
|
|
param_01 set_landing_target_fx("landing_target_valid");
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(var_08)
|
|
{
|
|
if(self attackbuttonpressed())
|
|
{
|
|
common_scripts\utility::flag_set("flag_zipline_fire_button_pressed");
|
|
soundscripts\_snd::snd_message("fastzip_turret_fire");
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
param_01 set_landing_target_fx("landing_target_invalid");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
param_01 set_landing_target_fx(undefined);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
fire_rope(param_00,param_01,param_02)
|
|
{
|
|
var_03 = 200;
|
|
var_04 = 210;
|
|
var_05 = var_04 / 30;
|
|
param_00 detach(param_02.rope_model);
|
|
param_02 detach(param_02.rope_model);
|
|
self show();
|
|
var_06 = param_00 gettagorigin("tag_player");
|
|
var_07 = distance(var_06,param_01) / 12;
|
|
var_08 = var_07 / var_03;
|
|
playfxontag(common_scripts\utility::getfx("harpoon_dust"),self,"jnt_harpoon");
|
|
playfxontag(common_scripts\utility::getfx("zipline_flash_view"),self,"TAG_FLASH");
|
|
var_09 = %fastzip_launcher_fire_left;
|
|
var_0A = getanimlength(var_09);
|
|
var_0B = var_0A / var_05 * var_08;
|
|
self setanimknob(var_09,1,0.2,var_05);
|
|
param_00 setanimknob(var_09,1,0.2,1);
|
|
var_0B = var_0B - 0.05;
|
|
if(var_0B > 0.05)
|
|
{
|
|
wait(var_0B);
|
|
}
|
|
|
|
self setanim(var_09,1,0,0);
|
|
self setanimtime(var_09,var_08);
|
|
return var_07;
|
|
}
|
|
|
|
//Function Number: 14
|
|
fastzip_turret_putaway(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
thread maps\_utility::lerp_fov_overtime(2,65);
|
|
param_03 hide();
|
|
param_04 show();
|
|
if(isdefined(param_04.attachment))
|
|
{
|
|
param_04.attachment show();
|
|
}
|
|
|
|
var_05 = [];
|
|
var_05[0] = param_02;
|
|
var_05[1] = param_04;
|
|
param_03 clear_script_model_anim(0.2);
|
|
param_00 maps\_anim::anim_first_frame(var_05,"fastzip_putaway",param_01);
|
|
self playerlinktodelta(param_02,"tag_player",1,0,0,0,0,1);
|
|
soundscripts\_snd::snd_message("fastzip_turret_putaway");
|
|
self setplayerangles(self getplayerangles());
|
|
wait(0.2);
|
|
param_02 show();
|
|
param_00 maps\_anim::anim_single(var_05,"fastzip_putaway",param_01);
|
|
param_04 maps\_utility::anim_stopanimscripted();
|
|
param_04 clear_script_model_anim(0);
|
|
param_04 setanim(%fastzip_launcher_folded_idle_left,1,0,1);
|
|
}
|
|
|
|
//Function Number: 15
|
|
player_fastzip(param_00,param_01,param_02,param_03)
|
|
{
|
|
thread player_camera_shake();
|
|
self notify("fastzip_start");
|
|
var_04 = %fastzip_launcher_slidedown_left;
|
|
param_00 setanimlimited(%add_slide,1,0,1);
|
|
param_00 setanimlimited(var_04,1,0,1);
|
|
self playerlinktodelta(param_00,"TAG_PLAYER_ATTACH",1,20,20,20,20,1);
|
|
soundscripts\_snd::snd_message("fastzip_rappel");
|
|
if(isdefined(param_03))
|
|
{
|
|
wait(param_03);
|
|
}
|
|
else
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
var_05 = self.origin;
|
|
var_06["fraction"] = 1;
|
|
var_07 = (0,0,0);
|
|
var_08 = (0,0,0);
|
|
while(var_06["fraction"] == 1)
|
|
{
|
|
wait(0.05);
|
|
var_09 = self.origin;
|
|
var_08 = var_09 - var_05;
|
|
var_07 = var_08 * 3;
|
|
var_06 = bullettrace(var_09,var_09 + var_07,0,self);
|
|
var_05 = var_09;
|
|
}
|
|
|
|
self unlink();
|
|
self notify("kill_camera_shake");
|
|
thread player_fastzip_land(var_08,param_02);
|
|
self notify("fastzip_arrived");
|
|
param_00 setanimlimited(var_04,1,0,0);
|
|
}
|
|
|
|
//Function Number: 16
|
|
player_fastzip_land(param_00,param_01)
|
|
{
|
|
var_02 = param_00 * 20;
|
|
self setvelocity(var_02);
|
|
thread prevent_look_until_notify("fastzip_hit_the_ground");
|
|
var_03 = undefined;
|
|
while(!self isonground())
|
|
{
|
|
var_03 = self getvelocity();
|
|
wait(0.05);
|
|
}
|
|
|
|
self notify("fastzip_hit_the_ground");
|
|
soundscripts\_snd::snd_message("fastzip_hit_the_ground");
|
|
var_04 = vectortoangles(param_00);
|
|
var_05 = spawnstruct();
|
|
var_05.origin = self.origin;
|
|
var_05.angles = (0,var_04[1] + 90,0);
|
|
var_05 maps\_anim::anim_first_frame_solo(param_01,"fastzip_land");
|
|
var_06 = getmovedelta(param_01 maps\_utility::getanim("fastzip_land"),0,1);
|
|
var_07 = param_01 localtoworldcoords(var_06);
|
|
var_08 = var_07 + (0,0,24);
|
|
var_09 = playerphysicstraceinfo(var_07,var_08);
|
|
if(var_09["fraction"] > 0)
|
|
{
|
|
var_08 = var_09["position"] - (0,0,1);
|
|
}
|
|
|
|
var_09 = playerphysicstraceinfo(var_08,var_08 - (0,0,36));
|
|
if(var_09["fraction"] > 0)
|
|
{
|
|
if(var_09["fraction"] < 1)
|
|
{
|
|
var_0A = var_09["position"];
|
|
var_0B = var_0A - var_07;
|
|
var_05.origin = var_05.origin + var_0B;
|
|
}
|
|
|
|
self playerlinktodelta(param_01,"tag_player",1,20,20,20,20,1);
|
|
var_05 maps\_anim::anim_single_solo(param_01,"fastzip_land");
|
|
self unlink();
|
|
}
|
|
else
|
|
{
|
|
}
|
|
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
level.player allowjump(1);
|
|
self notify("fastzip_landed");
|
|
}
|
|
|
|
//Function Number: 17
|
|
prevent_look_until_notify(param_00)
|
|
{
|
|
var_01 = getdvarint("aim_turnrate_pitch");
|
|
var_02 = getdvarint("aim_turnrate_pitch_ads");
|
|
var_03 = getdvarint("aim_turnrate_yaw");
|
|
var_04 = getdvarint("aim_turnrate_yaw_ads");
|
|
setsaveddvar("aim_turnrate_pitch",0);
|
|
setsaveddvar("aim_turnrate_pitch_ads",0);
|
|
setsaveddvar("aim_turnrate_yaw",0);
|
|
setsaveddvar("aim_turnrate_yaw_ads",0);
|
|
self waittill(param_00);
|
|
setsaveddvar("aim_turnrate_pitch",var_01);
|
|
setsaveddvar("aim_turnrate_pitch_ads",var_02);
|
|
setsaveddvar("aim_turnrate_yaw",var_03);
|
|
setsaveddvar("aim_turnrate_yaw_ads",var_04);
|
|
}
|
|
|
|
//Function Number: 18
|
|
player_camera_shake()
|
|
{
|
|
self endon("fastzip_arrived");
|
|
self endon("kill_camera_shake");
|
|
var_00 = 0.1;
|
|
var_01 = 0.8;
|
|
var_02 = 0.1;
|
|
var_03 = 0.45;
|
|
var_04 = var_01;
|
|
for(;;)
|
|
{
|
|
earthquake(min(var_00,var_03),var_02,self.origin,100);
|
|
wait(var_02);
|
|
var_04 = var_04 - var_02;
|
|
if(var_04 < 0)
|
|
{
|
|
var_00 = var_00 + 0.1;
|
|
var_04 = var_01;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
player_camera_shake_land()
|
|
{
|
|
self endon("kill_camera_shake");
|
|
var_00 = 0.5;
|
|
var_01 = 0.2;
|
|
while(var_00 > 0)
|
|
{
|
|
earthquake(var_00,var_01,self.origin,100);
|
|
wait(var_01);
|
|
var_00 = var_00 - 0.1;
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
retract_rope(param_00,param_01)
|
|
{
|
|
var_02 = 200;
|
|
var_03 = param_00 / var_02;
|
|
var_03 = 1 - min(var_03,1);
|
|
var_04 = 30;
|
|
var_05 = 1;
|
|
var_06 = %fastzip_launcher_retract_left;
|
|
if(param_01 == "right")
|
|
{
|
|
var_06 = %fastzip_launcher_retract_right;
|
|
}
|
|
|
|
self setanimknob(var_06,1,0.2,var_05);
|
|
self setanimtime(var_06,var_03);
|
|
var_07 = var_04 * 1 - var_03 / 30 * var_05;
|
|
wait(var_07 + 0.05);
|
|
}
|
|
|
|
//Function Number: 21
|
|
clear_script_model_anim(param_00)
|
|
{
|
|
self clearanim(%root,param_00);
|
|
}
|
|
|
|
//Function Number: 22
|
|
clear_player_anim()
|
|
{
|
|
self clearanim(%root,0);
|
|
}
|
|
|
|
//Function Number: 23
|
|
wait_for_player_to_complete_reloading()
|
|
{
|
|
while(level.player isreloading())
|
|
{
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
wait_for_player_switch_to_turret()
|
|
{
|
|
thread display_hint_until_zip_activated();
|
|
var_00 = 0;
|
|
while(var_00 < 1)
|
|
{
|
|
var_00 = 0;
|
|
while(level.player usebuttonpressed() && var_00 < 1)
|
|
{
|
|
var_00 = var_00 + 0.1;
|
|
wait 0.05;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
common_scripts\utility::flag_set("use_fastzip_hint");
|
|
}
|
|
|
|
//Function Number: 25
|
|
display_hint_until_zip_activated()
|
|
{
|
|
self endon("using_zip");
|
|
for(;;)
|
|
{
|
|
maps\_utility::hintdisplayhandler("hint_use_fastzip");
|
|
wait(35);
|
|
}
|
|
} |