Files
IL-GSC/GHOSTS/PC/SP/animscripts/reactions.gsc
2023-10-27 03:49:01 -04:00

290 lines
6.7 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\reactions.gsc
* Game: Call of Duty: Ghosts
* Platform: PC
* Function Count: 11
* Decompile Time: 197 ms
* Timestamp: 10/27/2023 1:24:17 AM
*******************************************************************/
//Function Number: 1
func_4FDD()
{
self endon("killanimscript");
animscripts/utility::func_4622("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.var_4C94 = 0;
}
//Function Number: 3
func_63BF()
{
thread bulletwhizbycheckloop();
}
//Function Number: 4
canreactagain()
{
return !isdefined(self.var_4C91) || gettime() - self.var_4C91 > 2000;
}
//Function Number: 5
bulletwhizbyreaction()
{
self endon("killanimscript");
self.var_4C91 = gettime();
self.a.var_5486 = "stop";
var_00 = isdefined(self.var_8DE9) && distancesquared(self.origin,self.var_8DE9.origin) < 160000;
self animmode("gravity");
self orientmode("face current");
if(var_00 || common_scripts\utility::func_1DE9())
{
self clearanim(%root,0.1);
var_01 = [];
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(%root,0.1);
if(!var_00 && self.stairsstate == "none" && !isdefined(self.var_275C))
{
var_04 = 1 + randomfloat(0.2);
var_05 = animscripts/utility::func_632D(%exposed_dive_grenade_b,%exposed_dive_grenade_f);
self setflaggedanimknobrestart("dive",var_05,1,0.1,var_04);
animscripts/shared::func_2986("dive");
}
}
else
{
wait(randomfloat(0.2));
var_04 = 1.2 + randomfloat(0.3);
if(self.a.var_60B1 == "stand")
{
self clearanim(%root,0.1);
self setflaggedanimknobrestart("crouch",%exposed_stand_2_crouch,1,0.1,var_04);
animscripts/shared::func_2986("crouch");
}
var_06 = anglestoforward(self.angles);
if(isdefined(self.var_8DE9))
{
var_07 = vectornormalize(self.var_8DE9.origin - self.origin);
}
else
{
var_07 = var_07;
}
if(vectordot(var_07,var_06) > 0)
{
var_08 = animscripts/utility::func_632D(%exposed_crouch_idle_twitch_v2,%exposed_crouch_idle_twitch_v3);
self clearanim(%root,0.1);
self setflaggedanimknobrestart("twitch",var_08,1,0.1,1);
animscripts/shared::func_2986("twitch");
}
else
{
var_09 = animscripts/utility::func_632D(%exposed_crouch_turn_180_left,%exposed_crouch_turn_180_right);
self clearanim(%root,0.1);
self setflaggedanimknobrestart("turn",var_09,1,0.1,1);
animscripts/shared::func_2986("turn");
}
}
self clearanim(%root,0.1);
self.var_8DE9 = undefined;
self animmode("normal");
self orientmode("face default");
}
//Function Number: 6
bulletwhizbycheckloop()
{
self endon("killanimscript");
if(isdefined(self.var_279D))
{
}
for(;;)
{
self waittill("bulletwhizby",var_00);
if(!isdefined(var_00.team) || self.team == var_00.team)
{
continue;
}
if(isdefined(self.var_1FCA) || isdefined(self.var_CFA))
{
continue;
}
if(self.a.var_60B1 != "stand")
{
continue;
}
if(!canreactagain())
{
continue;
}
self.var_8DE9 = var_00;
self animcustom(::bulletwhizbyreaction);
}
}
//Function Number: 7
func_1D46()
{
self endon("killanimscript");
wait(0.3);
self setlookatentity();
}
//Function Number: 8
getnewenemyreactionanim()
{
var_00 = undefined;
if(self nearclaimnodeandangle())
{
var_01 = animscripts/utility::func_4F5D("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 = [];
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.var_60B1 == "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(%root,0.2);
if(randomint(4) < 3)
{
self orientmode("face enemy");
self setflaggedanimknobrestart("reactanim",%exposed_idle_reactb,1,0.2,1);
var_00 = getanimlength(%exposed_idle_reactb);
animscripts/notetracks::donotetracksfortime(var_00 * 0.8,"reactanim");
self orientmode("face current");
}
self orientmode("face enemy");
self setflaggedanimknobrestart("reactanim",%exposed_backpedal,1,0.2,1);
var_00 = getanimlength(%exposed_backpedal);
animscripts/notetracks::donotetracksfortime(var_00 * 0.8,"reactanim");
self orientmode("face current");
self clearanim(%root,0.2);
self setflaggedanimknobrestart("reactanim",%exposed_backpedal_v2,1,0.2,1);
animscripts/shared::func_2986("reactanim");
}
//Function Number: 10
func_55C7()
{
self endon("death");
self endon("endNewEnemyReactionAnim");
self.var_4C91 = gettime();
self.a.var_5486 = "stop";
if(isdefined(self._stealth) && self.alertlevel != "combat")
{
stealthnewenemyreactanim();
}
else
{
var_00 = getnewenemyreactionanim();
self clearanim(%root,0.2);
self setflaggedanimknobrestart("reactanim",var_00,1,0.2,1);
animscripts/shared::func_2986("reactanim");
}
self notify("newEnemyReactionDone");
}
//Function Number: 11
newenemysurprisedreaction()
{
self endon("death");
if(isdefined(self.var_27BB))
{
}
if(!canreactagain())
{
}
if(self.a.var_60B1 == "prone" || isdefined(self.a.onback))
{
}
self animmode("gravity");
if(isdefined(self.enemy))
{
func_55C7();
}
}