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

358 lines
8.3 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\cqb.gsc
* Game: Call of Duty: Modern Warfare Remastered
* Platform: PC
* Function Count: 16
* Decompile Time: 280 ms
* Timestamp: 10/27/2023 2:44:04 AM
*******************************************************************/
//Function Number: 1
movecqb()
{
cqb_checkchangeweapon();
if(self.a.pose != "stand")
{
self clearanim(%animscript_root,0.2);
if(self.a.pose == "prone")
{
animscripts\utility::exitpronewrapper(1);
}
self.a.pose = "stand";
}
self.a.movement = self.movemode;
cqbtracking();
self clearanim(%h1_stairs,0.1);
if(cqb_checkreload())
{
return;
}
var_00 = determinecqbanim();
var_01 = cqb_gettranstime();
var_02 = 0.2;
thread cqb_scaleforslowdown(var_00,var_02);
cqb_animate(var_00,var_02,var_01);
cqb_playfacialanim(var_00);
animscripts\notetracks::donotetracksfortime(var_02,"runanim");
}
//Function Number: 2
cqb_checkchangeweapon()
{
if(!animscripts\stairs_utility::isonstairs())
{
animscripts\run::standrun_checkchangeweapon();
}
}
//Function Number: 3
cqb_checkreload()
{
return !animscripts\stairs_utility::isonstairs() && animscripts\run::standrun_checkreload();
}
//Function Number: 4
cqb_gettranstime()
{
var_00 = animscripts\stairs_utility::getstairtransitionfinishedthisframe();
if(var_00 == "none" && !animscripts\stairs_utility::isonstairs())
{
return 0.3;
}
return 0.1;
}
//Function Number: 5
cqb_animate(param_00,param_01,param_02)
{
if(isdefined(self.timeofmaincqbupdate))
{
var_03 = self.timeofmaincqbupdate;
}
else
{
var_03 = 0;
}
self.timeofmaincqbupdate = gettime();
if(!animscripts\stairs_utility::isonstairs())
{
var_04 = animscripts\stairs_utility::getstairtransitionfinishedthisframe();
var_05 = %walk_and_run_loops;
if(self.timeofmaincqbupdate - var_03 > param_01 * 1000 && var_04 == "none")
{
var_05 = %stand_and_crouch;
}
self setflaggedanimknoball("runanim",param_00,var_05,1,param_02,self.moveplaybackrate * self.cqb_slowdown_scale,1);
animscripts\run::setmovenonforwardanims(animscripts\utility::lookupanim("cqb","move_b"),animscripts\utility::lookupanim("cqb","move_l"),animscripts\utility::lookupanim("cqb","move_r"));
thread animscripts\run::setcombatstandmoveanimweights("cqb");
return;
}
self notify("stop_move_anim_update");
self.update_move_anim_type = undefined;
var_05 = %body;
self setflaggedanimknoball("runanim",param_00,var_05,1,param_02,self.moveplaybackrate * self.cqb_slowdown_scale,1);
}
//Function Number: 6
determinecqbanim()
{
if(isdefined(self.custommoveanimset) && isdefined(self.custommoveanimset["cqb"]))
{
return animscripts\run::getrunanim();
}
if(animscripts\stairs_utility::isonstairs())
{
var_00 = animscripts\stairs_utility::getstairsanimnameatgroundpos();
return animscripts\utility::lookupanim("cqb",var_00);
}
if(self.movemode == "walk")
{
return animscripts\utility::lookupanim("cqb","move_f");
}
if(isdefined(self.a.bdisablemovetwitch) && self.a.bdisablemovetwitch)
{
return animscripts\utility::lookupanim("cqb","straight");
}
if(!isdefined(self.a.runloopcount))
{
return animscripts\utility::lookupanim("cqb","straight");
}
var_01 = animscripts\utility::lookupanim("cqb","straight_twitch");
if(!isdefined(var_01) || var_01.size == 0)
{
return animscripts\utility::lookupanim("cqb","straight");
}
var_02 = animscripts\utility::getrandomintfromseed(self.a.runloopcount,4);
if(var_02 == 0)
{
return animscripts\utility::gettwitchanim(var_01);
}
return animscripts\utility::lookupanim("cqb","straight");
}
//Function Number: 7
cqb_reloadinternal()
{
self endon("movemode");
self endon("should_stairs_transition");
self orientmode("face motion");
var_00 = "reload_" + animscripts\combat_utility::getuniqueflagnameindex();
var_01 = animscripts\utility::lookupanim("cqb","reload");
if(isarray(var_01))
{
var_01 = var_01[randomint(var_01.size)];
}
thread cqb_scaleforslowdown(var_01,getanimlength(var_01));
self setflaggedanimknoballrestart(var_00,var_01,%body,1,0.25,self.moveplaybackrate * self.cqb_slowdown_scale);
cqb_playfacialanim(var_01);
animscripts\run::setmovenonforwardanims(animscripts\utility::lookupanim("cqb","move_b"),animscripts\utility::lookupanim("cqb","move_l"),animscripts\utility::lookupanim("cqb","move_r"));
thread animscripts\run::setcombatstandmoveanimweights("cqb");
childthread animscripts\stairs_utility::threadcheckstairstransition(var_01,0,0.3);
animscripts\shared::donotetracks(var_00);
self notify("killThreadCheckStairsTransition");
}
//Function Number: 8
cqbtracking()
{
var_00 = animscripts\stairs_utility::isonstairs();
var_01 = !var_00 && animscripts\move::mayshootwhilemoving();
animscripts\run::setshootwhilemoving(var_01);
if(var_00)
{
animscripts\run::endfaceenemyaimtracking();
return;
}
thread animscripts\run::faceenemyaimtracking();
}
//Function Number: 9
setupcqbpointsofinterest()
{
level.cqbpointsofinterest = [];
var_00 = getentarray("cqb_point_of_interest","targetname");
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
level.cqbpointsofinterest[var_01] = var_00[var_01].origin;
var_00[var_01] delete();
}
}
//Function Number: 10
findcqbpointsofinterest()
{
if(isdefined(level.findingcqbpointsofinterest))
{
return;
}
anim.findingcqbpointsofinterest = 1;
if(!level.cqbpointsofinterest.size)
{
return;
}
for(;;)
{
var_00 = getaiarray();
var_01 = 0;
foreach(var_03 in var_00)
{
if(isalive(var_03) && var_03 animscripts\utility::iscqbwalking() && !isdefined(var_03.disable_cqb_points_of_interest))
{
var_04 = var_03.a.movement != "stop";
var_05 = (var_03.origin[0],var_03.origin[1],var_03 getshootatpos()[2]);
var_06 = var_05;
var_07 = anglestoforward(var_03.angles);
if(var_04)
{
var_08 = bullettrace(var_06,var_06 + var_07 * 128,0,undefined);
var_06 = var_08["position"];
}
var_09 = -1;
var_0A = 1048576;
for(var_0B = 0;var_0B < level.cqbpointsofinterest.size;var_0B++)
{
var_0C = level.cqbpointsofinterest[var_0B];
var_0D = distancesquared(var_0C,var_06);
if(var_0D < var_0A)
{
if(var_04)
{
if(distancesquared(var_0C,var_05) < 4096)
{
continue;
}
var_0E = vectordot(vectornormalize(var_0C - var_05),var_07);
if(var_0E < 0.643 || var_0E > 0.966)
{
continue;
}
}
else if(var_0D < 2500)
{
continue;
}
if(!sighttracepassed(var_06,var_0C,0,undefined))
{
continue;
}
var_0A = var_0D;
var_09 = var_0B;
}
}
if(var_09 < 0)
{
var_03.cqb_point_of_interest = undefined;
}
else
{
var_03.cqb_point_of_interest = level.cqbpointsofinterest[var_09];
}
wait(0.05);
var_01 = 1;
}
}
if(!var_01)
{
wait(0.25);
}
}
}
//Function Number: 11
cqb_playfacialanim(param_00)
{
self.facialidx = animscripts\face::playfacialanim(param_00,"run",self.facialidx);
}
//Function Number: 12
cqb_clearfacialanim()
{
self.facialidx = undefined;
self clearanim(%head,0.2);
}
//Function Number: 13
cqb_scaleforslowdown(param_00,param_01)
{
self.cqb_slowdown_anim = param_00;
self.cqb_slowdown_move_time = param_01;
if(isdefined(self.cqb_slowdown_watcher_running))
{
return;
}
self.cqb_slowdown_watcher_running = 1;
thread cqb_slowdownwatcher_ender();
cqb_slowdownwatcher();
self.cqb_slowdown_watcher_running = undefined;
}
//Function Number: 14
cqb_slowdownwatcher()
{
self notify("end_cqb_slowdown_watcher");
self endon("death");
self endon("killanimscript");
self endon("move_interrupt");
self endon("end_cqb_slowdown_watcher");
if(isdefined(self.cqb_slowdown_scale) && self.cqb_slowdown_scale != 1)
{
self waittill("slow_down_stop");
}
for(;;)
{
cqb_slowdownscale(1);
self waittill("slow_down_start");
cqb_slowdownscale(0.75);
self waittill("slow_down_stop");
}
}
//Function Number: 15
cqb_slowdownscale(param_00)
{
self.cqb_slowdown_scale = param_00;
self setanimrate(self.cqb_slowdown_anim,self.moveplaybackrate * self.cqb_slowdown_scale);
}
//Function Number: 16
cqb_slowdownwatcher_ender()
{
self endon("death");
self endon("killanimscript");
self endon("move_interrupt");
wait(self.cqb_slowdown_move_time);
while(animscripts\utility::shouldcqb())
{
wait(self.cqb_slowdown_move_time);
}
self notify("end_cqb_slowdown_watcher");
}