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

346 lines
8.1 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: reactions.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 12
* Decompile Time: 188 ms
* Timestamp: 4/22/2024 2:00:46 AM
*******************************************************************/
//Function Number: 1
main()
{
self endon("killanimscript");
animscripts\utility::initialize("reactions");
newenemysurprisedreaction();
}
//Function Number: 2
init_animset_reactions()
{
var_00 = [];
var_00["cover_stand"] = [%stand_cover_reaction_a,%stand_cover_reaction_b];
var_00["cover_crouch"] = [%stand_cover_reaction_a,%stand_cover_reaction_b];
var_00["cover_left"] = [%stand_cover_reaction_a,%stand_cover_reaction_b];
var_00["cover_right"] = [%stand_cover_reaction_a,%stand_cover_reaction_b];
level.archetypes["soldier"]["cover_reactions"] = var_00;
var_00 = [];
var_00[0] = %run_wizby_a;
var_00[1] = %run_wizby_b;
level.archetypes["soldier"]["running_react_to_bullets"] = var_00;
anim.lastrunningreactanim = 0;
}
//Function Number: 3
reactionscheckloop()
{
thread bulletwhizbycheckloop();
}
//Function Number: 4
canreactagain()
{
return !isdefined(self.lastreacttime) || gettime() - self.lastreacttime > 2000;
}
//Function Number: 5
bulletwhizbyreaction()
{
self endon("killanimscript");
self.lastreacttime = gettime();
self.a.movement = "stop";
var_00 = isdefined(self.whizbyenemy) && distancesquared(self.origin,self.whizbyenemy.origin) < 160000;
self animmode("gravity");
self orientmode("face current");
if(var_00 || common_scripts\utility::cointoss())
{
self clearanim(%animscript_root,0.1);
var_01 = [];
if(animscripts\utility::usingsmg())
{
var_01[0] = %smg_exposed_idle_reacta;
var_01[1] = %smg_exposed_idle_reactb;
var_01[2] = %smg_exposed_idle_twitch;
var_01[3] = %smg_exposed_idle_twitch_v4;
}
else
{
var_01[0] = %exposed_idle_reacta;
var_01[1] = %exposed_idle_reactb;
var_01[2] = %exposed_idle_twitch;
var_01[3] = %exposed_idle_twitch_v4;
}
var_02 = var_01[randomint(var_01.size)];
if(var_00)
{
var_03 = 1 + randomfloat(0.5);
}
else
{
var_03 = 0.2 + randomfloat(0.5);
}
self setflaggedanimknobrestart("reactanim",var_02,1,0.1,1);
animscripts\notetracks::donotetracksfortime(var_03,"reactanim");
self clearanim(%animscript_root,0.1);
if(!var_00 && self.stairsstate == "none" && !isdefined(self.disable_dive_whizby_react))
{
var_04 = 1 + randomfloat(0.2);
var_05 = animscripts\utility::randomanimoftwo(%exposed_dive_grenade_b,%exposed_dive_grenade_f);
self setflaggedanimknobrestart("dive",var_05,1,0.1,var_04);
animscripts\shared::donotetracks("dive");
}
}
else
{
wait(randomfloat(0.2));
var_04 = 1.2 + randomfloat(0.3);
if(self.a.pose == "stand")
{
self clearanim(%animscript_root,0.1);
self setflaggedanimknobrestart("crouch",%exposed_stand_2_crouch,1,0.1,var_04);
animscripts\shared::donotetracks("crouch");
}
var_06 = anglestoforward(self.angles);
if(isdefined(self.whizbyenemy))
{
var_07 = vectornormalize(self.whizbyenemy.origin - self.origin);
}
else
{
var_07 = var_07;
}
if(vectordot(var_07,var_06) > 0)
{
var_08 = animscripts\utility::randomanimoftwo(%exposed_crouch_idle_twitch_v2,%exposed_crouch_idle_twitch_v3);
self clearanim(%animscript_root,0.1);
self setflaggedanimknobrestart("twitch",var_08,1,0.1,1);
animscripts\shared::donotetracks("twitch");
}
else
{
var_09 = animscripts\utility::randomanimoftwo(%exposed_crouch_turn_180_left,%exposed_crouch_turn_180_right);
self clearanim(%animscript_root,0.1);
self setflaggedanimknobrestart("turn",var_09,1,0.1,1);
animscripts\shared::donotetracks("turn");
}
}
self clearanim(%animscript_root,0.1);
self.whizbyenemy = undefined;
self animmode("normal");
self orientmode("face default");
}
//Function Number: 6
bulletwhizbycheckloop()
{
self endon("killanimscript");
if(isdefined(self.disablebulletwhizbyreaction))
{
return;
}
for(;;)
{
self waittill("bulletwhizby",var_00);
if(!isdefined(var_00.team) || self.team == var_00.team)
{
continue;
}
if(isdefined(self.covernode) || isdefined(self.ambushnode))
{
continue;
}
if(self.a.pose != "stand")
{
continue;
}
if(!canreactagain())
{
continue;
}
self.whizbyenemy = var_00;
self animcustom(::bulletwhizbyreaction);
}
}
//Function Number: 7
clearlookatthread()
{
self endon("killanimscript");
wait(0.3);
self setlookatentity();
}
//Function Number: 8
getnewenemyreactionanim()
{
var_00 = undefined;
if(self nearclaimnodeandangle())
{
var_01 = animscripts\utility::lookupanimarray("cover_reactions");
if(isdefined(var_01[self.prevscript]))
{
var_02 = anglestoforward(self.node.angles);
var_03 = vectornormalize(self.reactiontargetpos - self.origin);
if(vectordot(var_02,var_03) < -0.5)
{
self orientmode("face current");
var_04 = randomint(var_01[self.prevscript].size);
var_00 = var_01[self.prevscript][var_04];
}
}
}
if(!isdefined(var_00))
{
var_05 = [];
if(animscripts\utility::usingsmg())
{
var_05[0] = %smg_exposed_backpedal;
var_05[1] = %smg_exposed_idle_reactb;
}
else if(isdefined(self.animarchetype) && self.animarchetype == "s1_soldier")
{
var_05[0] = %s1_exposed_backpedal;
var_05[1] = %s1_exposed_idle_alert_v5;
}
else
{
var_05[0] = %exposed_backpedal;
var_05[1] = %exposed_idle_reactb;
}
if(isdefined(self.enemy) && distancesquared(self.enemy.origin,self.reactiontargetpos) < 65536)
{
self orientmode("face enemy");
}
else
{
self orientmode("face point",self.reactiontargetpos);
}
if(self.a.pose == "crouch")
{
var_03 = vectornormalize(self.reactiontargetpos - self.origin);
var_06 = anglestoforward(self.angles);
if(vectordot(var_06,var_03) < -0.5)
{
self orientmode("face current");
var_05[0] = %crouch_cover_reaction_a;
var_05[1] = %crouch_cover_reaction_b;
}
}
var_00 = var_05[randomint(var_05.size)];
}
return var_00;
}
//Function Number: 9
stealthnewenemyreactanim()
{
self clearanim(%animscript_root,0.2);
if(randomint(4) < 3)
{
self orientmode("face enemy");
var_00 = %exposed_idle_reactb;
if(animscripts\utility::usingsmg())
{
var_00 = %smg_exposed_idle_reactb;
}
self setflaggedanimknobrestart("reactanim",var_00,1,0.2,1);
var_01 = getanimlength(var_00);
animscripts\notetracks::donotetracksfortime(var_01 * 0.8,"reactanim");
self orientmode("face current");
return;
}
self orientmode("face enemy");
var_02 = %exposed_backpedal;
var_03 = %exposed_backpedal_v2;
if(animscripts\utility::usingsmg())
{
var_02 = %smg_exposed_backpedal;
var_03 = %smg_exposed_backpedal_v2;
}
self setflaggedanimknobrestart("reactanim",var_02,1,0.2,1);
var_01 = getanimlength(var_02);
animscripts\notetracks::donotetracksfortime(var_01 * 0.8,"reactanim");
self orientmode("face current");
self clearanim(%animscript_root,0.2);
self setflaggedanimknobrestart("reactanim",var_03,1,0.2,1);
animscripts\shared::donotetracks("reactanim");
}
//Function Number: 10
newenemyreactionanim()
{
self endon("death");
self endon("endNewEnemyReactionAnim");
self.lastreacttime = gettime();
self.a.movement = "stop";
self.playing_new_enemy_reaction_anim = 1;
if(isdefined(self._stealth) && self.alertlevel != "combat")
{
stealthnewenemyreactanim();
}
else
{
var_00 = getnewenemyreactionanim();
self clearanim(%animscript_root,0.2);
self setflaggedanimknobrestart("reactanim",var_00,1,0.2,1);
animscripts\shared::donotetracks("reactanim");
}
self notify("newEnemyReactionDone");
self.playing_new_enemy_reaction_anim = undefined;
}
//Function Number: 11
newenemysurprisedreaction()
{
self endon("death");
if(isdefined(self.disablereactionanims))
{
return;
}
if(!canreactagain())
{
return;
}
if(self.a.pose == "prone" || isdefined(self.a.onback))
{
return;
}
self animmode("gravity");
if(isdefined(self.enemy))
{
newenemyreactionanim();
}
}
//Function Number: 12
end_script()
{
if(isdefined(self.playing_new_enemy_reaction_anim))
{
self notify("newEnemyReactionDone");
self.playing_new_enemy_reaction_anim = undefined;
}
}