mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-29 10:57:53 -05:00
339 lines
5.9 KiB
Plaintext
339 lines
5.9 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\animscripts\zm_move.gsc
|
|
* Game: Call of Duty: Black Ops 2
|
|
* Platform: PC
|
|
* Function Count: 14
|
|
* Decompile Time: 1 ms
|
|
* Timestamp: 10/28/2023 12:11:31 AM
|
|
*******************************************************************/
|
|
|
|
#include common_scripts/utility;
|
|
#include maps/mp/animscripts/shared;
|
|
#include maps/mp/animscripts/utility;
|
|
#include maps/mp/animscripts/zm_run;
|
|
#include maps/mp/animscripts/zm_shared;
|
|
#include maps/mp/animscripts/zm_utility;
|
|
|
|
//Function Number: 1
|
|
main()
|
|
{
|
|
self endon("killanimscript");
|
|
self setaimanimweights(0,0);
|
|
previousscript = self.a.script;
|
|
maps/mp/animscripts/zm_utility::initialize("zombie_move");
|
|
movemainloop();
|
|
}
|
|
|
|
//Function Number: 2
|
|
movemainloop()
|
|
{
|
|
self endon("killanimscript");
|
|
self endon("stop_soon");
|
|
self.needs_run_update = 1;
|
|
self notify("needs_run_update");
|
|
self sidestepinit();
|
|
self thread trysidestepthread();
|
|
for(;;)
|
|
{
|
|
self maps/mp/animscripts/zm_run::moverun();
|
|
if(IsDefined(self.zombie_can_sidestep) && self.zombie_can_sidestep)
|
|
{
|
|
self trysidestep();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
sidestepinit()
|
|
{
|
|
self.a.steppeddir = 0;
|
|
self.a.lastsidesteptime = GetTime();
|
|
}
|
|
|
|
//Function Number: 4
|
|
trysidestepthread()
|
|
{
|
|
self endon("death");
|
|
self notify("new_trySideStepThread");
|
|
self endon("new_trySideStepThread");
|
|
if(!(IsDefined(self.zombie_can_sidestep)))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(IsDefined(self.zombie_can_sidestep) && !self.zombie_can_sidestep)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
while(1)
|
|
{
|
|
self trysidestep();
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
trysidestep()
|
|
{
|
|
if(IsDefined(self.shouldsidestepfunc))
|
|
{
|
|
self.sidesteptype = self [[ self.shouldsidestepfunc ]]();
|
|
}
|
|
else
|
|
{
|
|
self.sidesteptype = shouldsidestep();
|
|
}
|
|
|
|
if(self.sidesteptype == "none")
|
|
{
|
|
if(IsDefined(self.zombie_can_forwardstep) && self.zombie_can_forwardstep)
|
|
{
|
|
self.sidesteptype = shouldforwardstep();
|
|
}
|
|
}
|
|
|
|
if(self.sidesteptype == "none")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self.desiredstepdir = getdesiredsidestepdir(self.sidesteptype);
|
|
self.asd_name = "zm_" + self.sidesteptype + "_" + self.desiredstepdir;
|
|
self.substate_index = self getanimsubstatefromasd(self.asd_name);
|
|
self.stepanim = self getanimfromasd(self.asd_name,self.substate_index);
|
|
if(!(self checkroomforanim(self.stepanim)))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self.allowpain = 0;
|
|
self animcustom(::dosidestep);
|
|
self waittill("sidestep_done");
|
|
self.allowpain = 1;
|
|
}
|
|
|
|
//Function Number: 6
|
|
getdesiredsidestepdir(sidesteptype)
|
|
{
|
|
if(sidesteptype == "roll" || sidesteptype == "phase")
|
|
{
|
|
self.desiredstepdir = "forward";
|
|
return self.desiredstepdir;
|
|
}
|
|
|
|
/#
|
|
assert(sidesteptype == "step","Unsupported SideStepType");
|
|
#/
|
|
randomroll = randomfloat(1);
|
|
if(self.a.steppeddir < 0)
|
|
{
|
|
self.desiredstepdir = "right";
|
|
}
|
|
else if(self.a.steppeddir > 0)
|
|
{
|
|
self.desiredstepdir = "left";
|
|
}
|
|
else if(randomroll < 0.5)
|
|
{
|
|
self.desiredstepdir = "right";
|
|
}
|
|
else
|
|
{
|
|
self.desiredstepdir = "left";
|
|
}
|
|
|
|
return self.desiredstepdir;
|
|
}
|
|
|
|
//Function Number: 7
|
|
checkroomforanim(stepanim)
|
|
{
|
|
if(!(self maymovefrompointtopoint(self.origin,getanimendpos(stepanim))))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 8
|
|
shouldsidestep()
|
|
{
|
|
if(cansidestep() && isplayer(self.enemy) && self.enemy islookingat(self))
|
|
{
|
|
if(self.zombie_move_speed != "sprint" || randomfloat(1) < 0.7)
|
|
{
|
|
return "step";
|
|
}
|
|
else
|
|
{
|
|
return "roll";
|
|
}
|
|
}
|
|
|
|
return "none";
|
|
}
|
|
|
|
//Function Number: 9
|
|
cansidestep()
|
|
{
|
|
if(!IsDefined(self.zombie_can_sidestep) || !self.zombie_can_sidestep)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(GetTime() - self.a.lastsidesteptime < 2000)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!(IsDefined(self.enemy)))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.a.pose != "stand")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
distsqfromenemy = distancesquared(self.origin,self.enemy.origin);
|
|
if(distsqfromenemy < 4096)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(distsqfromenemy > 1000000)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!IsDefined(self.pathgoalpos) || distancesquared(self.origin,self.pathgoalpos) < 4096)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(Abs(self getmotionangle()) > 15)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
yaw = getyawtoorigin(self.enemy.origin);
|
|
if(Abs(yaw) > 45)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 10
|
|
shouldforwardstep()
|
|
{
|
|
if(canforwardstep() && isplayer(self.enemy))
|
|
{
|
|
return "phase";
|
|
}
|
|
|
|
return "none";
|
|
}
|
|
|
|
//Function Number: 11
|
|
canforwardstep()
|
|
{
|
|
if(IsDefined(self.a.lastsidesteptime) && GetTime() - self.a.lastsidesteptime < 2000)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!(IsDefined(self.enemy)))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.a.pose != "stand")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
distsqfromenemy = distancesquared(self.origin,self.enemy.origin);
|
|
if(distsqfromenemy < 14400)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(distsqfromenemy > 5760000)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!IsDefined(self.pathgoalpos) || distancesquared(self.origin,self.pathgoalpos) < 4096)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(Abs(self getmotionangle()) > 15)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
yaw = getyawtoorigin(self.enemy.origin);
|
|
if(Abs(yaw) > 45)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 12
|
|
dosidestep()
|
|
{
|
|
self endon("death");
|
|
self endon("killanimscript");
|
|
self playsidestepanim(self.stepanim,self.sidesteptype);
|
|
if(self.desiredstepdir == "left")
|
|
{
|
|
self.a.steppeddir--;
|
|
}
|
|
else
|
|
{
|
|
self.a.steppeddir++;
|
|
}
|
|
|
|
self.a.lastsidesteptime = GetTime();
|
|
self notify("sidestep_done");
|
|
}
|
|
|
|
//Function Number: 13
|
|
playsidestepanim(stepanim,sidesteptype)
|
|
{
|
|
self animmode("gravity",0);
|
|
self orientmode("face angle",self.angles[1]);
|
|
runblendouttime = 0.2;
|
|
if(IsDefined(self.sidestepfunc))
|
|
{
|
|
self thread [[ self.sidestepfunc ]]("step_anim",stepanim);
|
|
}
|
|
|
|
self setanimstatefromasd(self.asd_name,self.substate_index);
|
|
maps/mp/animscripts/zm_shared::donotetracks("step_anim");
|
|
if(isalive(self))
|
|
{
|
|
self thread facelookaheadforabit();
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
facelookaheadforabit()
|
|
{
|
|
self endon("death");
|
|
self endon("killanimscript");
|
|
lookaheadangles = VectorToAngles(self.lookaheaddir);
|
|
self orientmode("face angle",lookaheadangles[1]);
|
|
wait(0.2);
|
|
self animmode("normal",0);
|
|
self orientmode("face default");
|
|
} |