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

851 lines
15 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: shared.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 33
* Decompile Time: 471 ms
* Timestamp: 4/22/2024 2:00:54 AM
*******************************************************************/
//Function Number: 1
placeweaponon(param_00,param_01,param_02)
{
self notify("weapon_position_change");
var_03 = self.weaponinfo[param_00].position;
if(param_01 != "none" && self.a.weaponpos[param_01] == param_00)
{
return;
}
detachallweaponmodels();
if(var_03 != "none")
{
detachweapon(param_00);
}
if(param_01 == "none")
{
updateattachedweaponmodels();
return;
}
if(self.a.weaponpos[param_01] != "none")
{
detachweapon(self.a.weaponpos[param_01]);
}
else if(isdefined(self.weaponinfo["none"]))
{
self.weaponinfo["none"].position = "none";
}
if(!isdefined(param_02))
{
param_02 = 1;
}
if(param_02 && param_01 == "left" || param_01 == "right")
{
attachweapon(param_00,param_01);
self.weapon = param_00;
}
else
{
attachweapon(param_00,param_01);
}
updateattachedweaponmodels();
}
//Function Number: 2
detachweapon(param_00)
{
self.a.weaponpos[self.weaponinfo[param_00].position] = "none";
self.weaponinfo[param_00].position = "none";
}
//Function Number: 3
attachweapon(param_00,param_01)
{
self.weaponinfo[param_00].position = param_01;
self.a.weaponpos[param_01] = param_00;
if(self.a.weaponposdropping[param_01] != "none")
{
self notify("end_weapon_drop_" + param_01);
self.a.weaponposdropping[param_01] = "none";
}
}
//Function Number: 4
getweaponforpos(param_00)
{
var_01 = self.a.weaponpos[param_00];
if(var_01 == "none")
{
return self.a.weaponposdropping[param_00];
}
return var_01;
}
//Function Number: 5
detachallweaponmodels()
{
var_00 = [];
var_00[var_00.size] = "right";
var_00[var_00.size] = "left";
var_00[var_00.size] = "chest";
var_00[var_00.size] = "back";
self laseroff();
foreach(var_02 in var_00)
{
var_03 = getweaponforpos(var_02);
if(var_03 == "none")
{
continue;
}
if(weapontype(var_03) == "riotshield" && isdefined(self.shieldmodelvariant))
{
if(isdefined(self.shieldbroken) && self.shieldbroken)
{
playfxontag(common_scripts\utility::getfx("riot_shield_dmg"),self,"TAG_BRASS");
self.shieldbroken = undefined;
}
}
}
self updateentitywithweapons();
}
//Function Number: 6
updateattachedweaponmodels()
{
var_00 = [];
var_01 = [];
var_02 = [];
var_00[var_00.size] = "right";
var_00[var_00.size] = "left";
var_00[var_00.size] = "chest";
var_00[var_00.size] = "back";
foreach(var_04 in var_00)
{
var_01[var_01.size] = getweaponforpos(var_04);
var_02[var_02.size] = gettagforpos(var_04);
}
self updateentitywithweapons(var_01[0],var_02[0],var_01[1],var_02[1],var_01[2],var_02[2],var_01[3],var_02[3]);
foreach(var_04 in var_00)
{
var_07 = getweaponforpos(var_04);
if(var_07 == "none")
{
continue;
}
if(self.weaponinfo[var_07].useclip && !self.weaponinfo[var_07].hasclip)
{
self hidepart("tag_clip");
}
}
updatelaserstatus();
}
//Function Number: 7
updatelaserstatus()
{
if(isdefined(self.custom_laser_function))
{
[[ self.custom_laser_function ]]();
return;
}
if(self.a.weaponpos["right"] == "none")
{
return;
}
if(canuselaser())
{
self laseron("nvg_laser");
return;
}
self laseroff();
}
//Function Number: 8
canuselaser()
{
if(!self.a.laseron)
{
return 0;
}
if(animscripts\utility::isshotgun(self.weapon))
{
return 0;
}
return isalive(self);
}
//Function Number: 9
gettagforpos(param_00)
{
switch(param_00)
{
case "chest":
return "tag_weapon_chest";
case "back":
return "tag_stowed_back";
case "left":
return "tag_weapon_left";
case "right":
return "tag_weapon_right";
case "hand":
return "tag_inhand";
default:
break;
}
}
//Function Number: 10
dropaiweapon(param_00)
{
if(!isdefined(param_00))
{
param_00 = self.weapon;
}
if(param_00 == "none")
{
return;
}
if(isdefined(self.nodrop))
{
return;
}
detachallweaponmodels();
var_01 = self.weaponinfo[param_00].position;
if(self.dropweapon && var_01 != "none")
{
thread dropweaponwrapper(param_00,var_01);
}
detachweapon(param_00);
if(param_00 == self.weapon)
{
self.weapon = "none";
}
updateattachedweaponmodels();
}
//Function Number: 11
dropallaiweapons()
{
if(isdefined(self.nodrop))
{
return "none";
}
var_00 = [];
var_00[var_00.size] = "left";
var_00[var_00.size] = "right";
var_00[var_00.size] = "chest";
var_00[var_00.size] = "back";
detachallweaponmodels();
foreach(var_02 in var_00)
{
var_03 = self.a.weaponpos[var_02];
if(var_03 == "none")
{
continue;
}
self.weaponinfo[var_03].position = "none";
self.a.weaponpos[var_02] = "none";
if(self.dropweapon)
{
thread dropweaponwrapper(var_03,var_02);
}
}
self.weapon = "none";
updateattachedweaponmodels();
}
//Function Number: 12
dropweaponwrapper(param_00,param_01)
{
if(self isragdoll())
{
return "none";
}
self.a.weaponposdropping[param_01] = param_00;
var_02 = param_00;
if(issubstr(tolower(var_02),"rpg"))
{
var_02 = "rpg_player";
}
if(issubstr(tolower(var_02),"mahem"))
{
var_02 = "iw5_mahemplayer_sp_mahemscopebase";
}
self dropweapon(var_02,param_01,0);
self endon("end_weapon_drop_" + param_01);
wait(0.05);
if(!isdefined(self))
{
return;
}
detachallweaponmodels();
self.a.weaponposdropping[param_01] = "none";
updateattachedweaponmodels();
}
//Function Number: 13
donotetracks(param_00,param_01,param_02,param_03)
{
for(;;)
{
self waittill(param_00,var_04);
if(!isdefined(var_04))
{
var_04 = "undefined";
}
var_05 = animscripts\notetracks::handlenotetrack(var_04,param_00,param_01,param_03);
if(isdefined(var_05))
{
return var_05;
}
}
}
//Function Number: 14
getpredictedaimyawtoshootentorpos(param_00)
{
if(!isdefined(self.shootent))
{
if(!isdefined(self.shootpos))
{
return 0;
}
return getaimyawtopoint(self.shootpos);
}
var_01 = self.shootent.origin + self.shootentvelocity * param_00;
return getaimyawtopoint(var_01);
}
//Function Number: 15
getaimyawtoshootentorpos()
{
if(!isdefined(self.shootent))
{
if(!isdefined(self.shootpos))
{
return 0;
}
return getaimyawtopoint(self.shootpos);
}
if(common_scripts\utility::flag("_cloaked_stealth_enabled"))
{
return getaimyawtopoint(animscripts\combat_utility::get_last_known_shoot_pos(self.shootent));
}
return getaimyawtopoint(self.shootent getshootatpos());
}
//Function Number: 16
getaimpitchtoshootentorpos()
{
var_00 = getpitchtoshootentorpos();
if(self.script == "cover_crouch" && isdefined(self.a.covermode) && self.a.covermode == "lean")
{
var_00 = var_00 - level.covercrouchleanpitch;
}
return var_00;
}
//Function Number: 17
getpitchtoshootentorpos()
{
if(!isdefined(self.shootent))
{
if(!isdefined(self.shootpos))
{
return 0;
}
return animscripts\combat_utility::getpitchtospot(self.shootpos);
}
if(common_scripts\utility::flag("_cloaked_stealth_enabled"))
{
return animscripts\combat_utility::getpitchtospot(animscripts\combat_utility::get_last_known_shoot_pos(self.shootent));
}
return animscripts\combat_utility::getpitchtospot(self.shootent getshootatpos());
}
//Function Number: 18
getshootfrompos()
{
if(isdefined(self.usemuzzlesideoffset))
{
var_00 = self getmuzzlesideoffsetpos();
return (var_00[0],var_00[1],self geteye()[2]);
}
if(isdefined(self.usemuzzleforaim) && self.usemuzzleforaim)
{
if(self gettagindex("tag_flash") != -1)
{
var_01 = self gettagorigin("tag_flash");
if(isdefined(var_01))
{
return var_01;
}
}
}
return (self.origin[0],self.origin[1],self geteye()[2]);
}
//Function Number: 19
getaimyawtopoint(param_00)
{
var_01 = animscripts\utility::getyawtospot(param_00);
var_02 = distance(self.origin,param_00);
if(var_02 > 3)
{
var_03 = asin(-3 / var_02);
var_01 = var_01 + var_03;
}
var_01 = angleclamp180(var_01);
return var_01;
}
//Function Number: 20
ramboaim(param_00)
{
self endon("killanimscript");
ramboaiminternal(param_00);
self clearanim(%generic_aim_left,0.5);
self clearanim(%generic_aim_right,0.5);
}
//Function Number: 21
ramboaiminternal(param_00)
{
self endon("rambo_aim_end");
waittillframeend;
self clearanim(%generic_aim_left,0.2);
self clearanim(%generic_aim_right,0.2);
self setanimlimited(%generic_aim_45l,1,0.2);
self setanimlimited(%generic_aim_45r,1,0.2);
var_01 = 0.2;
var_02 = 0;
for(;;)
{
if(isdefined(self.shootpos))
{
var_03 = animscripts\utility::getyaw(self.shootpos) - self.covernode.angles[1];
var_03 = angleclamp180(var_03 - param_00);
if(abs(var_03 - var_02) > 10)
{
if(var_03 > var_02)
{
var_03 = var_02 + 10;
}
else
{
var_03 = var_02 - 10;
}
}
var_02 = var_03;
}
if(var_02 < 0)
{
var_04 = var_02 / -45;
if(var_04 > 1)
{
var_04 = 1;
}
self setanimlimited(%generic_aim_right,var_04,var_01);
self setanimlimited(%generic_aim_left,0,var_01);
}
else
{
var_04 = var_02 / 45;
if(var_04 > 1)
{
var_04 = 1;
}
self setanimlimited(%generic_aim_left,var_04,var_01);
self setanimlimited(%generic_aim_right,0,var_01);
}
wait(var_01);
}
}
//Function Number: 22
decidenumshotsforburst()
{
var_00 = 0;
var_01 = weaponburstcount(self.weapon);
if(var_01)
{
var_00 = var_01;
}
else if(animscripts\weaponlist::usingsemiautoweapon())
{
var_00 = level.semifirenumshots[randomint(level.semifirenumshots.size)];
}
else if(self.fastburst)
{
var_00 = level.fastburstfirenumshots[randomint(level.fastburstfirenumshots.size)];
}
else
{
var_00 = level.burstfirenumshots[randomint(level.burstfirenumshots.size)];
}
if(var_00 <= self.bulletsinclip)
{
return var_00;
}
if(self.bulletsinclip <= 0)
{
return 1;
}
return self.bulletsinclip;
}
//Function Number: 23
decidenumshotsforfull()
{
var_00 = self.bulletsinclip;
if(weaponclass(self.weapon) == "mg")
{
var_01 = randomfloat(10);
if(var_01 < 3)
{
var_00 = randomintrange(2,6);
}
else if(var_01 < 8)
{
var_00 = randomintrange(6,12);
}
else
{
var_00 = randomintrange(12,20);
}
}
return var_00;
}
//Function Number: 24
handledropclip(param_00)
{
self endon("killanimscript");
self endon("abort_reload");
var_01 = undefined;
if(self.weaponinfo[self.weapon].useclip)
{
var_01 = getweaponclipmodel(self.weapon);
}
if(self.weaponinfo[self.weapon].hasclip)
{
if(animscripts\utility::usingsidearm())
{
self playsound("weap_reload_pistol_clipout_npc");
}
else
{
self playsound("weap_reload_smg_clipout_npc");
}
if(isdefined(var_01))
{
self hidepart("tag_clip");
thread dropclipmodel(var_01,"tag_clip");
self.weaponinfo[self.weapon].hasclip = 0;
thread resetcliponabort(var_01);
}
}
for(;;)
{
self waittill(param_00,var_02);
switch(var_02)
{
case "attach clip right":
case "attach clip left":
if(isdefined(var_01))
{
self attach(var_01,"tag_inhand");
thread resetcliponabort(var_01,"tag_inhand");
if(!self.weaponinfo[self.weapon].hasclip)
{
self hidepart("tag_clip");
}
}
animscripts\weaponlist::refillclip();
break;
case "detach clip nohand":
if(isdefined(var_01))
{
self detach(var_01,"tag_inhand");
}
break;
case "detach clip right":
case "detach clip left":
if(isdefined(var_01))
{
self detach(var_01,"tag_inhand");
self showpart("tag_clip");
self notify("clip_detached");
self.weaponinfo[self.weapon].hasclip = 1;
}
if(animscripts\utility::usingsidearm())
{
self playsound("weap_reload_pistol_clipin_npc");
}
else
{
self playsound("weap_reload_smg_clipin_npc");
}
self.a.needstorechamber = 0;
break;
}
}
}
//Function Number: 25
resetcliponabort(param_00,param_01)
{
self notify("clip_detached");
self endon("clip_detached");
common_scripts\utility::waittill_any("killanimscript","abort_reload");
if(!isdefined(self))
{
return;
}
if(isdefined(param_01))
{
self detach(param_00,param_01);
}
if(isalive(self))
{
if(self.weapon != "none" && self.weaponinfo[self.weapon].position != "none")
{
self showpart("tag_clip");
}
self.weaponinfo[self.weapon].hasclip = 1;
return;
}
if(isdefined(param_01))
{
dropclipmodel(param_00,param_01);
}
}
//Function Number: 26
dropclipmodel(param_00,param_01)
{
var_02 = spawn("script_model",self gettagorigin(param_01));
var_02 setmodel(param_00);
var_02.angles = self gettagangles(param_01);
var_02 physicslaunchclient(var_02.origin,(0,0,0));
wait(10);
if(isdefined(var_02))
{
var_02 delete();
}
}
//Function Number: 27
movetonodeovertime(param_00,param_01)
{
self endon("killanimscript");
var_02 = param_00.origin;
var_03 = distancesquared(self.origin,var_02);
if(var_03 < 1)
{
self safeteleport(var_02);
return;
}
if(var_03 > 256 && !self maymovetopoint(var_02,!self.swimmer))
{
return;
}
self.keepclaimednodeifvalid = 1;
var_04 = distance(self.origin,var_02);
var_05 = int(param_01 * 20);
for(var_06 = 0;var_06 < var_05;var_06++)
{
var_02 = param_00.origin;
var_07 = self.origin - var_02;
var_07 = vectornormalize(var_07);
var_08 = var_02 + var_07 * var_04;
var_09 = var_08 + var_02 - var_08 * var_06 + 1 / var_05;
self safeteleport(var_09);
wait(0.05);
}
self.keepclaimednodeifvalid = 0;
}
//Function Number: 28
returntrue()
{
return 1;
}
//Function Number: 29
playlookanimation(param_00,param_01,param_02)
{
if(!isdefined(param_02))
{
param_02 = ::returntrue;
}
for(var_03 = 0;var_03 < param_01 * 10;var_03++)
{
if(isalive(self.enemy))
{
if(animscripts\utility::canseeenemy() && [[ param_02 ]]())
{
return;
}
}
if(animscripts\utility::issuppressedwrapper() && [[ param_02 ]]())
{
return;
}
self setanimknoball(param_00,%body,1,0.1);
wait(0.1);
}
}
//Function Number: 30
throwdownweapon(param_00)
{
self endon("killanimscript");
placeweaponon(self.secondaryweapon,"right");
maps\_gameskill::didsomethingotherthanshooting();
}
//Function Number: 31
rpgplayerrepulsor()
{
var_00 = rpgplayerrepulsor_getnummisses();
if(var_00 == 0)
{
return;
}
self endon("death");
for(;;)
{
level waittill("an_enemy_shot",var_01);
if(var_01 != self)
{
continue;
}
if(!isdefined(var_01.enemy))
{
continue;
}
if(var_01.enemy != level.player)
{
continue;
}
if(isdefined(level.createrpgrepulsors) && level.createrpgrepulsors == 0)
{
continue;
}
thread rpgplayerrepulsor_create();
var_00--;
if(var_00 <= 0)
{
return;
}
}
}
//Function Number: 32
rpgplayerrepulsor_getnummisses()
{
var_00 = maps\_utility::getdifficulty();
switch(var_00)
{
case "gimp":
case "easy":
return 2;
case "difficult":
case "hard":
case "medium":
return 1;
case "fu":
return 0;
}
return 2;
}
//Function Number: 33
rpgplayerrepulsor_create()
{
var_00 = missile_createrepulsorent(level.player,5000,800);
wait(4);
missile_deleteattractor(var_00);
}