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

379 lines
8.7 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: stop.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 12
* Decompile Time: 204 ms
* Timestamp: 4/22/2024 2:01:00 AM
*******************************************************************/
//Function Number: 1
init_animset_idle()
{
var_00 = [];
var_00["stand"][0] = [%casual_stand_idle,%casual_stand_idle_twitch,%casual_stand_idle_twitchb];
var_00["stand"][1] = [%casual_stand_v2_idle,%casual_stand_v2_twitch_radio,%casual_stand_v2_twitch_shift,%casual_stand_v2_twitch_talk];
var_00["stand_cqb"][0] = [%cqb_stand_idle,%cqb_stand_twitch];
var_00["crouch"][0] = [%casual_crouch_idle];
level.archetypes["soldier"]["idle"] = var_00;
var_00 = [];
var_00["stand"][0] = [2,1,1];
var_00["stand"][1] = [10,4,7,4];
var_00["stand_cqb"][0] = [2,1];
var_00["crouch"][0] = [6];
level.archetypes["soldier"]["idle_weights"] = var_00;
var_00 = [];
var_00["stand"] = %casual_stand_idle_trans_in;
var_00["crouch"] = %casual_crouch_idle_in;
var_00["stand_smg"] = %smg_casual_stand_idle_trans_in;
level.archetypes["soldier"]["idle_transitions"] = var_00;
}
//Function Number: 2
main()
{
if(isdefined(self.no_ai))
{
return;
}
if(isdefined(self.custom_animscript))
{
if(isdefined(self.custom_animscript["stop"]))
{
[[ self.custom_animscript["stop"] ]]();
return;
}
}
self notify("stopScript");
self endon("killanimscript");
[[ self.exception["stop_immediate"] ]]();
thread delayedexception();
animscripts\utility::initialize("stop");
if(isdefined(self.specialidleanim))
{
specialidleloop();
}
animscripts\utility::randomizeidleset();
thread setlaststoppedtime();
thread animscripts\reactions::reactionscheckloop();
var_00 = isdefined(self.customidleanimset);
if(!var_00)
{
if(self.a.weaponpos["right"] == "none" && self.a.weaponpos["left"] == "none")
{
var_00 = 1;
}
else if(angleclamp180(self getmuzzleangle()[0]) > 20)
{
var_00 = 1;
}
}
if(self.swimmer && !isdefined(self.enemy))
{
var_01 = animscripts\exit_node::getexitnode();
if(isdefined(var_01))
{
self setflaggedanimknoballrestart("idle",self.customidleanimset["stand"],%body,1,0.5,self.animplaybackrate);
turntoangle(var_01.angles[1]);
}
else
{
self orientmode("face angle",self.angles[1]);
}
}
for(;;)
{
var_02 = getdesiredidlepose();
if(var_02 == "prone")
{
var_00 = 1;
pronestill();
continue;
}
if(self.a.pose != var_02)
{
self clearanim(%animscript_root,0.3);
var_00 = 0;
}
animscripts\setposemovement::setposemovement(var_02,"stop");
if(!var_00)
{
transitiontoidle(var_02,self.a.idleset);
var_00 = 1;
continue;
}
playidle(var_02,self.a.idleset);
}
}
//Function Number: 3
turntoangle(param_00)
{
var_01 = self.angles[1];
var_02 = angleclamp180(param_00 - var_01);
if(-20 < var_02 && var_02 < 20)
{
rotatetoangle(param_00,2);
return;
}
var_03 = animscripts\swim::getswimanim("idle_turn");
if(var_02 < -80)
{
var_04 = var_03[2];
}
else if(var_03 < -20)
{
var_04 = var_04[3];
}
else if(var_03 < 80)
{
var_04 = var_04[5];
}
else
{
var_04 = var_04[6];
}
var_05 = getanimlength(var_04);
var_06 = abs(var_02) / self.turnrate;
var_06 = var_06 / 1000;
var_07 = var_05 / var_06;
self orientmode("face angle",param_00);
self setflaggedanimrestart("swim_turn",var_04,1,0.2,var_07 * self.moveplaybackrate);
animscripts\shared::donotetracks("swim_turn");
self clearanim(var_04,0.2);
}
//Function Number: 4
rotatetoangle(param_00,param_01)
{
self orientmode("face angle",param_00);
while(angleclamp(param_00 - self.angles[1]) > param_01)
{
wait(0.1);
}
}
//Function Number: 5
setlaststoppedtime()
{
self endon("death");
self waittill("killanimscript");
self.laststoppedtime = gettime();
}
//Function Number: 6
specialidleloop()
{
self endon("stop_specialidle");
self.a.movement = "stop";
var_00 = self.specialidleanim;
self animmode("gravity");
self orientmode("face current");
self clearanim(%animscript_root,0.2);
if(var_00.size == 0)
{
return;
}
var_01 = [];
var_02 = var_00[0];
for(;;)
{
if(var_01.size == 0)
{
var_01 = common_scripts\utility::array_randomize(var_00);
}
if(var_01[0] == var_02 && var_01.size > 1)
{
var_02 = var_01[1];
}
else
{
var_02 = var_01[0];
}
var_01 = common_scripts\utility::array_remove(var_01,var_02);
self setflaggedanimrestart("special_idle",var_02,1,0.2,self.animplaybackrate);
childthread animscripts\shared::donotetracks("special_idle");
self waittillmatch("end","special_idle");
if(var_00.size > 1)
{
self clearanim(var_02,0.2);
}
}
}
//Function Number: 7
getdesiredidlepose()
{
var_00 = animscripts\utility::getclaimednode();
if(isdefined(var_00))
{
var_01 = var_00.angles[1];
var_02 = var_00.type;
}
else
{
var_01 = self.desiredangle;
var_02 = "node was undefined";
}
animscripts\face::setidleface(level.alertface);
var_03 = animscripts\utility::choosepose();
if(var_02 == "Cover Stand" || var_02 == "Conceal Stand")
{
var_03 = animscripts\utility::choosepose("stand");
}
else if(var_02 == "Cover Crouch" || var_02 == "Conceal Crouch")
{
var_03 = animscripts\utility::choosepose("crouch");
}
else if(var_02 == "Cover Prone" || var_02 == "Conceal Prone")
{
var_03 = animscripts\utility::choosepose("prone");
}
return var_03;
}
//Function Number: 8
transitiontoidle(param_00,param_01)
{
if(animscripts\utility::iscqbwalking() && self.a.pose == "stand")
{
param_00 = "stand_cqb";
}
else if(animscripts\utility::usingsmg() && self.a.pose == "stand")
{
param_00 = "stand_smg";
}
var_02 = animscripts\utility::lookupanimarray("idle_transitions");
if(isdefined(var_02[param_00]))
{
var_03 = var_02[param_00];
self setflaggedanimknoballrestart("idle_transition",var_03,%body,1,0.2,self.animplaybackrate);
animscripts\shared::donotetracks("idle_transition");
}
}
//Function Number: 9
playidle(param_00,param_01)
{
if(animscripts\utility::iscqbwalking() && self.a.pose == "stand")
{
param_00 = "stand_cqb";
}
var_02 = undefined;
if(isdefined(self.customidleanimset) && isdefined(self.customidleanimset[param_00]))
{
if(isarray(self.customidleanimset[param_00]))
{
var_03 = animscripts\utility::anim_array(self.customidleanimset[param_00],self.customidleanimweights[param_00]);
}
else
{
var_03 = self.customidleanimset[param_01];
var_04 = param_00 + "_add";
if(isdefined(self.customidleanimset[var_04]))
{
var_02 = self.customidleanimset[var_04];
}
}
}
else if(isdefined(level.readyanimarray) && param_01 == "stand" || param_01 == "stand_cqb" && isdefined(self.busereadyidle) && self.busereadyidle == 1)
{
var_03 = animscripts\utility::anim_array(level.readyanimarray["stand"][0],level.readyanimweights["stand"][0]);
}
else
{
var_05 = animscripts\utility::lookupanimarray("idle");
var_06 = animscripts\utility::lookupanimarray("idle_weights");
param_01 = param_01 % var_05[param_00].size;
var_03 = animscripts\utility::anim_array(var_05[param_00][param_01],var_06[param_00][param_01]);
}
var_07 = 0.2;
if(gettime() == self.a.scriptstarttime)
{
var_07 = 0.5;
}
if(isdefined(var_02))
{
self setanimknoball(var_03,%body,1,var_07,1);
self setanim(%add_idle);
self setflaggedanimknoballrestart("idle",var_02,%add_idle,1,var_07,self.animplaybackrate);
}
else
{
self setflaggedanimknoballrestart("idle",var_03,%body,1,var_07,self.animplaybackrate);
}
animscripts\shared::donotetracks("idle");
}
//Function Number: 10
pronestill()
{
if(self.a.pose != "prone")
{
var_00["stand_2_prone"] = %stand_2_prone;
var_00["crouch_2_prone"] = %crouch_2_prone;
var_01 = var_00[self.a.pose + "_2_prone"];
self setflaggedanimknoballrestart("trans",var_01,%body,1,0.2,1);
animscripts\shared::donotetracks("trans");
self.a.movement = "stop";
self setproneanimnodes(-45,45,%prone_legs_down,%exposed_modern,%prone_legs_up);
return;
}
thread updatepronethread();
if(randomint(10) < 3)
{
var_02 = animscripts\utility::lookupanim("cover_prone","twitch");
var_03 = var_02[randomint(var_02.size)];
self setflaggedanimknoball("prone_idle",var_03,%exposed_modern,1,0.2);
}
else
{
self setanimknoball(animscripts\utility::lookupanim("cover_prone","straight_level"),%exposed_modern,1,0.2);
self setflaggedanimknob("prone_idle",animscripts\utility::lookupanim("cover_prone","exposed_idle")[0],1,0.2);
}
self waittillmatch("end","prone_idle");
self notify("kill UpdateProneThread");
}
//Function Number: 11
updatepronethread()
{
self endon("killanimscript");
self endon("kill UpdateProneThread");
for(;;)
{
animscripts\cover_prone::updatepronewrapper(0.1);
wait(0.1);
}
}
//Function Number: 12
delayedexception()
{
self endon("killanimscript");
wait(0.05);
[[ self.exception["stop"] ]]();
}