mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-16 13:08:02 -05:00
1431 lines
29 KiB
Plaintext
1431 lines
29 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: animscripts\corner.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: Console
|
|
* Function Count: 55
|
|
* Decompile Time: 961 ms
|
|
* Timestamp: 10/27/2023 2:30:08 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
corner_think(param_00,param_01)
|
|
{
|
|
self endon("killanimscript");
|
|
self.animarrayfuncs["exposed"]["stand"] = ::set_standing_animarray_aiming;
|
|
self.animarrayfuncs["exposed"]["crouch"] = ::set_crouching_animarray_aiming;
|
|
self.covernode = self.node;
|
|
self.var_1FC6 = param_00;
|
|
self.a.var_899 = "unknown";
|
|
self.a.aimidlethread = undefined;
|
|
animscripts/cover_behavior::func_B5C(param_01);
|
|
func_1FCC();
|
|
self.var_1FC7 = 0;
|
|
self.var_1FC8 = 0;
|
|
self.var_1FC9 = 0;
|
|
animscripts/track::setanimaimweight(0);
|
|
self.havegonetocover = 0;
|
|
var_02 = spawnstruct();
|
|
if(!self.fixednode)
|
|
{
|
|
var_02.var_B22 = ::animscripts/cover_behavior::func_B22;
|
|
}
|
|
|
|
var_02.mainloopstart = ::mainloopstart;
|
|
var_02.reload = ::cornerreload;
|
|
var_02.leavecoverandshoot = ::func_1FE0;
|
|
var_02.look = ::lookforenemy;
|
|
var_02.fastlook = ::fastlook;
|
|
var_02.idle = ::idle;
|
|
var_02.grenade = ::trythrowinggrenade;
|
|
var_02.grenadehidden = ::trythrowinggrenadestayhidden;
|
|
var_02.blindfire = ::blindfire;
|
|
animscripts/cover_behavior::main(var_02);
|
|
}
|
|
|
|
//Function Number: 2
|
|
func_1FCB()
|
|
{
|
|
self.stepoutyaw = undefined;
|
|
self.a.var_1EFE = undefined;
|
|
}
|
|
|
|
//Function Number: 3
|
|
func_1FCC()
|
|
{
|
|
if(self.a.var_911 == "crouch")
|
|
{
|
|
set_anim_array("crouch");
|
|
return;
|
|
}
|
|
|
|
if(self.a.var_911 == "stand")
|
|
{
|
|
set_anim_array("stand");
|
|
return;
|
|
}
|
|
|
|
animscripts/utility::exitpronewrapper(1);
|
|
self.a.var_911 = "crouch";
|
|
set_anim_array("crouch");
|
|
}
|
|
|
|
//Function Number: 4
|
|
shouldchangestanceforfun()
|
|
{
|
|
if(!isdefined(self.enemy))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isdefined(self.changestanceforfuntime))
|
|
{
|
|
self.changestanceforfuntime = gettime() + randomintrange(5000,20000);
|
|
}
|
|
|
|
if(gettime() > self.changestanceforfuntime)
|
|
{
|
|
self.changestanceforfuntime = gettime() + randomintrange(5000,20000);
|
|
if(isdefined(self.rambochance) && self.a.var_911 == "stand")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self.a.prevattack = undefined;
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 5
|
|
mainloopstart()
|
|
{
|
|
var_00 = "stand";
|
|
if(self.a.var_911 == "crouch")
|
|
{
|
|
var_00 = "crouch";
|
|
if(self.covernode doesnodeallowstance("stand"))
|
|
{
|
|
if(!self.covernode doesnodeallowstance("crouch") || shouldchangestanceforfun())
|
|
{
|
|
var_00 = "stand";
|
|
}
|
|
}
|
|
}
|
|
else if(self.covernode doesnodeallowstance("crouch"))
|
|
{
|
|
if(!self.covernode doesnodeallowstance("stand") || shouldchangestanceforfun())
|
|
{
|
|
var_00 = "crouch";
|
|
}
|
|
}
|
|
|
|
if(self.havegonetocover)
|
|
{
|
|
func_1FF2(var_00);
|
|
return;
|
|
}
|
|
|
|
if(self.a.var_911 == var_00)
|
|
{
|
|
gotocover(animscripts/utility::animarray("alert_idle"),0.3,0.4);
|
|
}
|
|
else
|
|
{
|
|
var_01 = animscripts/utility::animarray("stance_change");
|
|
gotocover(var_01,0.3,getanimlength(var_01));
|
|
set_anim_array(var_00);
|
|
}
|
|
|
|
self.havegonetocover = 1;
|
|
}
|
|
|
|
//Function Number: 6
|
|
func_1FCF()
|
|
{
|
|
wait 2;
|
|
for(;;)
|
|
{
|
|
printyawtoenemy();
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 7
|
|
canseepointfromexposedatcorner(param_00,param_01)
|
|
{
|
|
var_02 = param_01 animscripts/utility::func_1FD1(param_00);
|
|
if(var_02 > 60 || var_02 < -60)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(param_01.type == "Cover Left" && var_02 > 14)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(param_01.type == "Cover Right" && var_02 < -12)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 8
|
|
shootposoutsidelegalyawrange()
|
|
{
|
|
if(!isdefined(self.shootpos))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = self.covernode animscripts/utility::func_1FD1(self.shootpos);
|
|
if(self.a.var_899 == "over")
|
|
{
|
|
return var_00 < self.leftaimlimit || self.rightaimlimit < var_00;
|
|
}
|
|
|
|
if(self.var_1FC6 == "left")
|
|
{
|
|
if(self.a.var_899 == "B")
|
|
{
|
|
return var_00 < 0 - self.var_1FD3 || var_00 > 14;
|
|
}
|
|
|
|
if(self.a.var_899 == "A")
|
|
{
|
|
return var_00 > 0 - self.var_1FD3;
|
|
}
|
|
|
|
return var_00 < -50 || var_00 > 8;
|
|
}
|
|
|
|
if(self.a.var_899 == "B")
|
|
{
|
|
return var_00 > self.var_1FD3 || var_00 < -12;
|
|
}
|
|
|
|
if(self.a.var_899 == "A")
|
|
{
|
|
return var_00 < self.var_1FD3;
|
|
}
|
|
|
|
return var_00 > 50 || var_00 < -8;
|
|
}
|
|
|
|
//Function Number: 9
|
|
func_1FD4(param_00,param_01)
|
|
{
|
|
var_02 = 0;
|
|
var_03 = 0;
|
|
if(isdefined(param_01))
|
|
{
|
|
var_03 = param_00 animscripts/utility::func_1FD1(param_01);
|
|
}
|
|
|
|
var_04 = [];
|
|
if(isdefined(param_00) && self.a.var_911 == "crouch" && var_03 > self.leftaimlimit && self.rightaimlimit > var_03)
|
|
{
|
|
var_04 = param_00 getvalidcoverpeekouts();
|
|
}
|
|
|
|
if(self.var_1FC6 == "left")
|
|
{
|
|
if(func_1FD7(var_03,-40,0))
|
|
{
|
|
var_02 = shouldlean();
|
|
}
|
|
|
|
if(!var_03 && var_04 < 14)
|
|
{
|
|
if(var_04 < 0 - self.var_1FD3)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(func_1FD7(var_04,0,40))
|
|
{
|
|
var_03 = shouldlean();
|
|
}
|
|
|
|
if(!var_03 && var_04 > -12)
|
|
{
|
|
if(var_04 > self.var_1FD3)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
}
|
|
|
|
return animscripts/combat_utility::getrandomcovermode(var_41);
|
|
}
|
|
|
|
//Function Number: 10
|
|
func_1FD5()
|
|
{
|
|
var_00 = 0;
|
|
if(animscripts/utility::cansuppressenemy())
|
|
{
|
|
var_00 = self.covernode animscripts/utility::func_1FD1(animscripts/utility::getenemysightpos());
|
|
}
|
|
else if(self.doingambush && isdefined(self.shootpos))
|
|
{
|
|
var_00 = self.covernode animscripts/utility::func_1FD1(self.shootpos);
|
|
}
|
|
|
|
if(self.a.var_899 == "lean")
|
|
{
|
|
return "lean";
|
|
}
|
|
|
|
if(self.a.var_899 == "over")
|
|
{
|
|
return "over";
|
|
}
|
|
|
|
if(self.a.var_899 == "B")
|
|
{
|
|
if(self.var_1FC6 == "left")
|
|
{
|
|
if(var_00 < 0 - self.var_1FD3)
|
|
{
|
|
return "A";
|
|
}
|
|
}
|
|
else if(self.var_1FC6 == "right")
|
|
{
|
|
if(var_00 > self.var_1FD3)
|
|
{
|
|
return "A";
|
|
}
|
|
}
|
|
|
|
return "B";
|
|
}
|
|
|
|
if(self.a.var_899 == "A")
|
|
{
|
|
var_02 = "B";
|
|
if(self.var_1FC6 == "left")
|
|
{
|
|
if(var_00 > 0 - self.var_1FD3)
|
|
{
|
|
return "B";
|
|
}
|
|
}
|
|
else if(self.var_1FC6 == "right")
|
|
{
|
|
if(var_00 < self.var_1FD3)
|
|
{
|
|
return "B";
|
|
}
|
|
}
|
|
|
|
return "A";
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
changestepoutpos()
|
|
{
|
|
self endon("killanimscript");
|
|
var_00 = func_1FD5();
|
|
if(var_00 == self.a.var_899)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self.var_8C8 = 1;
|
|
self notify("done_changing_cover_pos");
|
|
var_01 = self.a.var_899 + "_to_" + var_00;
|
|
var_02 = animscripts/utility::animarraypickrandom(var_01);
|
|
var_03 = func_1FEF();
|
|
if(!self maymovetopoint(var_03))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!self maymovefrompointtopoint(var_03,animscripts/utility::getanimendpos(var_02)))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
animscripts/combat_utility::endaimidlethread();
|
|
stopaiming(0.3);
|
|
var_04 = self.a.var_911;
|
|
self setanimlimited(animscripts/utility::animarray("straight_level"),0,0.2);
|
|
self setflaggedanimknob("changeStepOutPos",var_02,1,0.2,1.2);
|
|
thread donotetrackswithendon("changeStepOutPos");
|
|
if(animhasnotetrack(var_02,"start_aim"))
|
|
{
|
|
self waittillmatch("start_aim","changeStepOutPos");
|
|
}
|
|
else
|
|
{
|
|
self waittillmatch("end","changeStepOutPos");
|
|
}
|
|
|
|
thread startaiming(undefined,0,0.3);
|
|
self waittillmatch("end","changeStepOutPos");
|
|
self clearanim(var_02,0.1);
|
|
self.a.var_899 = var_00;
|
|
self.var_8C8 = 0;
|
|
self.var_8E8 = gettime();
|
|
if(self.a.var_911 != var_04)
|
|
{
|
|
set_anim_array(self.a.var_911);
|
|
}
|
|
|
|
thread func_1FDA(undefined,1,0.3);
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 12
|
|
func_1FD7(param_00,param_01,param_02)
|
|
{
|
|
if(self.a.neverlean)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return param_01 <= param_00 && param_00 <= param_02;
|
|
}
|
|
|
|
//Function Number: 13
|
|
shouldlean()
|
|
{
|
|
if(self.team == "allies")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(animscripts/utility::ispartiallysuppressedwrapper())
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 14
|
|
donotetrackswithendon(param_00)
|
|
{
|
|
self endon("killanimscript");
|
|
animscripts/shared::donotetracks(param_00);
|
|
}
|
|
|
|
//Function Number: 15
|
|
startaiming(param_00,param_01,param_02)
|
|
{
|
|
self.var_1FC9 = 1;
|
|
if(self.a.var_899 == "lean")
|
|
{
|
|
self.a.var_1EFE = 1;
|
|
}
|
|
else
|
|
{
|
|
self.a.var_1EFE = undefined;
|
|
}
|
|
|
|
setaimingparams(param_00,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 16
|
|
func_1FDA(param_00,param_01,param_02)
|
|
{
|
|
if(self.a.var_899 == "lean")
|
|
{
|
|
self.a.var_1EFE = 1;
|
|
}
|
|
else
|
|
{
|
|
self.a.var_1EFE = undefined;
|
|
}
|
|
|
|
setaimingparams(param_00,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 17
|
|
stopaiming(param_00)
|
|
{
|
|
self.var_1FC9 = 0;
|
|
self clearanim(%add_fire,param_00);
|
|
animscripts/track::setanimaimweight(0,param_00);
|
|
}
|
|
|
|
//Function Number: 18
|
|
setaimingparams(param_00,param_01,param_02)
|
|
{
|
|
self.spot = param_00;
|
|
self setanimlimited(%exposed_modern,1,param_02);
|
|
self setanimlimited(%exposed_aiming,1,param_02);
|
|
self setanimlimited(%add_idle,1,param_02);
|
|
animscripts/track::setanimaimweight(1,param_02);
|
|
var_03 = undefined;
|
|
if(isdefined(self.a.array["lean_aim_straight"]))
|
|
{
|
|
var_03 = self.a.array["lean_aim_straight"];
|
|
}
|
|
|
|
thread animscripts/combat_utility::aimidlethread();
|
|
if(isdefined(self.a.var_1EFE))
|
|
{
|
|
self setanimlimited(var_03,1,param_02);
|
|
self setanimlimited(animscripts/utility::animarray("straight_level"),0,0);
|
|
self setanimknoblimited(animscripts/utility::animarray("lean_aim_left"),1,param_02);
|
|
self setanimknoblimited(animscripts/utility::animarray("lean_aim_right"),1,param_02);
|
|
self setanimknoblimited(animscripts/utility::animarray("lean_aim_up"),1,param_02);
|
|
self setanimknoblimited(animscripts/utility::animarray("lean_aim_down"),1,param_02);
|
|
return;
|
|
}
|
|
|
|
if(param_01)
|
|
{
|
|
self setanimlimited(animscripts/utility::animarray("straight_level"),1,param_02);
|
|
if(isdefined(var_03))
|
|
{
|
|
self setanimlimited(var_03,0,0);
|
|
}
|
|
|
|
self setanimknoblimited(animscripts/utility::animarray("add_aim_up"),1,param_02);
|
|
self setanimknoblimited(animscripts/utility::animarray("add_aim_down"),1,param_02);
|
|
self setanimknoblimited(animscripts/utility::animarray("add_aim_left"),1,param_02);
|
|
self setanimknoblimited(animscripts/utility::animarray("add_aim_right"),1,param_02);
|
|
return;
|
|
}
|
|
|
|
self setanimlimited(animscripts/utility::animarray("straight_level"),0,param_02);
|
|
if(isdefined(var_03))
|
|
{
|
|
self setanimlimited(var_03,0,0);
|
|
}
|
|
|
|
self setanimknoblimited(animscripts/utility::animarray("add_turn_aim_up"),1,param_02);
|
|
self setanimknoblimited(animscripts/utility::animarray("add_turn_aim_down"),1,param_02);
|
|
self setanimknoblimited(animscripts/utility::animarray("add_turn_aim_left"),1,param_02);
|
|
self setanimknoblimited(animscripts/utility::animarray("add_turn_aim_right"),1,param_02);
|
|
}
|
|
|
|
//Function Number: 19
|
|
stepoutandhidespeed()
|
|
{
|
|
if(self.a.var_899 == "over")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return animscripts/combat_utility::randomfasteranimspeed();
|
|
}
|
|
|
|
//Function Number: 20
|
|
stepout()
|
|
{
|
|
self.a.var_899 = "alert";
|
|
if(self.goalradius < 64)
|
|
{
|
|
self.goalradius = 64;
|
|
}
|
|
|
|
self animmode("zonly_physics");
|
|
if(self.a.var_911 == "stand")
|
|
{
|
|
self.var_1FD3 = 38;
|
|
}
|
|
else
|
|
{
|
|
self.var_1FD3 = 31;
|
|
}
|
|
|
|
var_00 = self.a.var_911;
|
|
set_anim_array(var_00);
|
|
self setdefaultaimlimits();
|
|
var_01 = "none";
|
|
if(animscripts/utility::hasenemysightpos())
|
|
{
|
|
var_01 = func_1FD4(self.covernode,animscripts/utility::getenemysightpos());
|
|
}
|
|
else
|
|
{
|
|
var_01 = func_1FD4(self.covernode);
|
|
}
|
|
|
|
if(!isdefined(var_01))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_02 = "alert_to_" + var_01;
|
|
var_03 = animscripts/utility::animarraypickrandom(var_02);
|
|
if(var_01 == "lean" && !func_1FEA())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(var_01 != "over" && !ispathclear(var_03,var_01 != "lean"))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self.a.var_899 = var_01;
|
|
self.a.prevattack = var_01;
|
|
if(self.a.var_899 == "lean")
|
|
{
|
|
self setdefaultaimlimits(self.covernode);
|
|
}
|
|
|
|
if(var_01 == "A" || var_01 == "B")
|
|
{
|
|
self.a.special = "cover_" + self.var_1FC6 + "_" + self.a.var_911 + "_" + var_01;
|
|
}
|
|
else if(var_01 == "over")
|
|
{
|
|
self.a.special = "cover_crouch_aim";
|
|
}
|
|
else
|
|
{
|
|
self.a.special = "none";
|
|
}
|
|
|
|
self.keepclaimednodeifvalid = 1;
|
|
var_04 = 0;
|
|
self.var_8C8 = 1;
|
|
self notify("done_changing_cover_pos");
|
|
var_05 = stepoutandhidespeed();
|
|
self.pushable = 0;
|
|
self setflaggedanimknoballrestart("stepout",var_03,%root,1,0.2,var_05);
|
|
thread donotetrackswithendon("stepout");
|
|
var_04 = animhasnotetrack(var_03,"start_aim");
|
|
if(var_04)
|
|
{
|
|
self.stepoutyaw = self.angles[1] + getangledelta(var_03,0,1);
|
|
self waittillmatch("start_aim","stepout");
|
|
}
|
|
else
|
|
{
|
|
self waittillmatch("end","stepout");
|
|
}
|
|
|
|
if(var_01 == "B" && common_scripts\utility::cointoss() && self.var_1FC6 == "right")
|
|
{
|
|
self.a.special = "corner_right_martyrdom";
|
|
}
|
|
|
|
func_1FF1(var_00);
|
|
var_06 = var_01 == "over";
|
|
startaiming(undefined,var_06,0.3);
|
|
thread animscripts/track::trackshootentorpos();
|
|
if(var_04)
|
|
{
|
|
self waittillmatch("end","stepout");
|
|
self.stepoutyaw = undefined;
|
|
}
|
|
|
|
func_1FDA(undefined,1,0.2);
|
|
self clearanim(%cover,0.1);
|
|
self clearanim(%corner,0.1);
|
|
self.var_8C8 = 0;
|
|
self.var_8E8 = gettime();
|
|
self.pushable = 1;
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 21
|
|
func_1FE0()
|
|
{
|
|
self.keepclaimednodeifvalid = 1;
|
|
if(isdefined(self.rambochance) && randomfloat(1) < self.rambochance)
|
|
{
|
|
if(func_0B76())
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
if(!stepout())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
func_0B73();
|
|
if(isdefined(self.shootpos))
|
|
{
|
|
var_00 = lengthsquared(self.origin - self.shootpos);
|
|
if(animscripts/utility::usingrocketlauncher() && var_00 < squared(512) || self.a.rockets < 1)
|
|
{
|
|
if(self.a.var_911 == "stand")
|
|
{
|
|
animscripts/shared::throwdownweapon(%rpg_stand_throw);
|
|
}
|
|
else
|
|
{
|
|
animscripts/shared::throwdownweapon(%rpg_crouch_throw);
|
|
}
|
|
|
|
thread func_1FFA();
|
|
return;
|
|
}
|
|
}
|
|
|
|
returntocover();
|
|
self.keepclaimednodeifvalid = 0;
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 22
|
|
func_1FE1(param_00)
|
|
{
|
|
if(!isdefined(self.var_B7C))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return gettime() - self.var_B7C > param_00 * 1000;
|
|
}
|
|
|
|
//Function Number: 23
|
|
func_0B76()
|
|
{
|
|
if(!animscripts/utility::hasenemysightpos())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = 0;
|
|
var_01 = 90;
|
|
var_02 = self.covernode animscripts/utility::func_1FD1(animscripts/utility::getenemysightpos());
|
|
if(self.var_1FC6 == "left")
|
|
{
|
|
var_02 = 0 - var_02;
|
|
}
|
|
|
|
if(var_02 > 30)
|
|
{
|
|
var_01 = 45;
|
|
if(self.var_1FC6 == "left")
|
|
{
|
|
var_00 = 45;
|
|
}
|
|
else
|
|
{
|
|
var_00 = -45;
|
|
}
|
|
}
|
|
|
|
var_03 = "rambo" + var_01;
|
|
if(!animscripts/utility::animarrayanyexist(var_03))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_04 = animscripts/utility::animarraypickrandom(var_03);
|
|
var_05 = func_1FEF(48);
|
|
if(!self maymovetopoint(var_05))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self.var_8E8 = gettime();
|
|
self animmode("zonly_physics");
|
|
self.keepclaimednodeifvalid = 1;
|
|
self.isrambo = 1;
|
|
self.a.prevattack = "rambo";
|
|
self.var_8C8 = 1;
|
|
thread animscripts/shared::ramboaim(var_00);
|
|
self setflaggedanimknoballrestart("rambo",var_04,%body,1,0,1);
|
|
animscripts/shared::donotetracks("rambo");
|
|
self notify("rambo_aim_end");
|
|
self.var_8C8 = 0;
|
|
self.keepclaimednodeifvalid = 0;
|
|
self.var_B7C = gettime();
|
|
self.var_8C8 = 0;
|
|
self.isrambo = undefined;
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 24
|
|
func_0B73()
|
|
{
|
|
maps\_gameskill::didsomethingotherthanshooting();
|
|
for(;;)
|
|
{
|
|
for(;;)
|
|
{
|
|
if(isdefined(self.shouldreturntocover))
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(!isdefined(self.shootpos))
|
|
{
|
|
self waittill("do_slow_things");
|
|
waittillframeend;
|
|
if(isdefined(self.shootpos))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
if(!self.bulletsinclip)
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(shootposoutsidelegalyawrange())
|
|
{
|
|
if(!changestepoutpos())
|
|
{
|
|
if(func_1FD5() == self.a.var_899)
|
|
{
|
|
break;
|
|
}
|
|
|
|
func_1FE2(0.2);
|
|
continue;
|
|
}
|
|
|
|
if(shootposoutsidelegalyawrange())
|
|
{
|
|
break;
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
shootuntilshootbehaviorchange_corner(1);
|
|
self clearanim(%add_fire,0.2);
|
|
}
|
|
|
|
if(canreturntocover(self.a.var_899 != "lean"))
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(shootposoutsidelegalyawrange() && changestepoutpos())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
func_1FE2(0.2);
|
|
}
|
|
}
|
|
|
|
//Function Number: 25
|
|
func_1FE2(param_00)
|
|
{
|
|
thread notifystopshootingaftertime(param_00);
|
|
var_01 = gettime();
|
|
shootuntilshootbehaviorchange_corner(0);
|
|
self notify("stopNotifyStopShootingAfterTime");
|
|
var_02 = gettime() - var_01 / 1000;
|
|
if(var_02 < param_00)
|
|
{
|
|
wait param_00 - var_02;
|
|
}
|
|
}
|
|
|
|
//Function Number: 26
|
|
notifystopshootingaftertime(param_00)
|
|
{
|
|
self endon("killanimscript");
|
|
self endon("stopNotifyStopShootingAfterTime");
|
|
wait param_00;
|
|
self notify("stopShooting");
|
|
}
|
|
|
|
//Function Number: 27
|
|
shootuntilshootbehaviorchange_corner(param_00)
|
|
{
|
|
self endon("return_to_cover");
|
|
if(param_00)
|
|
{
|
|
thread anglerangethread();
|
|
}
|
|
|
|
thread animscripts/combat_utility::aimidlethread();
|
|
animscripts/combat_utility::shootuntilshootbehaviorchange();
|
|
}
|
|
|
|
//Function Number: 28
|
|
anglerangethread()
|
|
{
|
|
self endon("killanimscript");
|
|
self notify("newAngleRangeCheck");
|
|
self endon("newAngleRangeCheck");
|
|
self endon("take_cover_at_corner");
|
|
for(;;)
|
|
{
|
|
if(shootposoutsidelegalyawrange())
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait 0.1;
|
|
}
|
|
|
|
self notify("stopShooting");
|
|
}
|
|
|
|
//Function Number: 29
|
|
showstate()
|
|
{
|
|
self.enemy endon("death");
|
|
self endon("enemy");
|
|
self endon("stopshowstate");
|
|
wait 0.05;
|
|
}
|
|
|
|
//Function Number: 30
|
|
canreturntocover(param_00)
|
|
{
|
|
if(param_00)
|
|
{
|
|
var_01 = func_1FEF();
|
|
if(!self maymovetopoint(var_01))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return self maymovefrompointtopoint(var_01,self.covernode.origin);
|
|
}
|
|
|
|
return self maymovetopoint(self.covernode.origin);
|
|
}
|
|
|
|
//Function Number: 31
|
|
returntocover()
|
|
{
|
|
animscripts/combat_utility::endfireandanimidlethread();
|
|
var_00 = animscripts/utility::issuppressedwrapper();
|
|
self notify("take_cover_at_corner");
|
|
self.var_8C8 = 1;
|
|
self notify("done_changing_cover_pos");
|
|
var_01 = self.a.var_899 + "_to_alert";
|
|
var_02 = animscripts/utility::animarraypickrandom(var_01);
|
|
stopaiming(0.3);
|
|
var_03 = 0;
|
|
if(self.a.var_899 != "lean" && var_00 && animscripts/utility::animarrayanyexist(var_01 + "_reload") && randomfloat(100) < 75)
|
|
{
|
|
var_02 = animscripts/utility::animarraypickrandom(var_01 + "_reload");
|
|
var_03 = 1;
|
|
}
|
|
|
|
var_04 = stepoutandhidespeed();
|
|
self clearanim(%body,0.1);
|
|
self setflaggedanimrestart("hide",var_02,1,0.1,var_04);
|
|
animscripts/shared::donotetracks("hide");
|
|
if(var_03)
|
|
{
|
|
animscripts/weaponlist::refillclip();
|
|
}
|
|
|
|
self.var_8C8 = 0;
|
|
if(self.var_1FC6 == "left")
|
|
{
|
|
self.a.special = "cover_left";
|
|
}
|
|
else
|
|
{
|
|
self.a.special = "cover_right";
|
|
}
|
|
|
|
self.keepclaimednodeifvalid = 0;
|
|
self clearanim(var_02,0.2);
|
|
}
|
|
|
|
//Function Number: 32
|
|
blindfire()
|
|
{
|
|
if(!animscripts/utility::animarrayanyexist("blind_fire"))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self animmode("zonly_physics");
|
|
self.keepclaimednodeifvalid = 1;
|
|
self setflaggedanimknoballrestart("blindfire",animscripts/utility::animarraypickrandom("blind_fire"),%body,1,0,1);
|
|
animscripts/shared::donotetracks("blindfire");
|
|
self.keepclaimednodeifvalid = 0;
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 33
|
|
func_1FE8(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = (1,1,1);
|
|
}
|
|
|
|
for(var_03 = 0;var_03 < 100;var_03++)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 34
|
|
trythrowinggrenadestayhidden(param_00)
|
|
{
|
|
return trythrowinggrenade(param_00,1);
|
|
}
|
|
|
|
//Function Number: 35
|
|
trythrowinggrenade(param_00,param_01)
|
|
{
|
|
if(!self maymovetopoint(func_1FEF()))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isdefined(self.dontevershoot) || isdefined(param_00.dontattackme))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_02 = undefined;
|
|
if(isdefined(self.rambochance) && randomfloat(1) < self.rambochance)
|
|
{
|
|
if(isdefined(self.a.array["grenade_rambo"]))
|
|
{
|
|
var_02 = animscripts/utility::animarray("grenade_rambo");
|
|
}
|
|
}
|
|
|
|
if(!isdefined(var_02))
|
|
{
|
|
if(isdefined(param_01) && param_01)
|
|
{
|
|
if(!isdefined(self.a.array["grenade_safe"]))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_02 = animscripts/utility::animarray("grenade_safe");
|
|
}
|
|
else
|
|
{
|
|
if(!isdefined(self.a.array["grenade_exposed"]))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_02 = animscripts/utility::animarray("grenade_exposed");
|
|
}
|
|
}
|
|
|
|
self animmode("zonly_physics");
|
|
self.keepclaimednodeifvalid = 1;
|
|
var_03 = animscripts/combat_utility::trygrenade(param_00,var_02);
|
|
self.keepclaimednodeifvalid = 0;
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 36
|
|
printyawtoenemy()
|
|
{
|
|
}
|
|
|
|
//Function Number: 37
|
|
lookforenemy(param_00)
|
|
{
|
|
if(!isdefined(self.a.array["alert_to_look"]))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self animmode("zonly_physics");
|
|
self.keepclaimednodeifvalid = 1;
|
|
if(!peekout())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
animscripts/shared::func_B7E(animscripts/utility::animarray("look_idle"),param_00,::canstoppeeking);
|
|
var_01 = undefined;
|
|
if(animscripts/utility::issuppressedwrapper())
|
|
{
|
|
var_01 = animscripts/utility::animarray("look_to_alert_fast");
|
|
}
|
|
else
|
|
{
|
|
var_01 = animscripts/utility::animarray("look_to_alert");
|
|
}
|
|
|
|
self setflaggedanimknoballrestart("looking_end",var_01,%body,1,0.1,1);
|
|
animscripts/shared::donotetracks("looking_end");
|
|
self animmode("zonly_physics");
|
|
self.keepclaimednodeifvalid = 0;
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 38
|
|
func_1FEA()
|
|
{
|
|
var_00 = self geteye();
|
|
var_01 = anglestoright(self.covernode.angles);
|
|
if(self.var_1FC6 == "right")
|
|
{
|
|
var_00 = var_00 + var_01 * 30;
|
|
}
|
|
else
|
|
{
|
|
var_00 = var_00 - var_01 * 30;
|
|
}
|
|
|
|
var_02 = var_00 + anglestoforward(self.covernode.angles) * 30;
|
|
return sighttracepassed(var_00,var_02,1,self);
|
|
}
|
|
|
|
//Function Number: 39
|
|
peekout()
|
|
{
|
|
if(isdefined(self.covernode.script_dontpeek))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isdefined(self.nextpeekoutattempttime) && gettime() < self.nextpeekoutattempttime)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!func_1FEA())
|
|
{
|
|
self.nextpeekoutattempttime = gettime() + 3000;
|
|
return 0;
|
|
}
|
|
|
|
var_00 = animscripts/utility::animarray("alert_to_look");
|
|
self setflaggedanimknoball("looking_start",var_00,%body,1,0.2,1);
|
|
animscripts/shared::donotetracks("looking_start");
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 40
|
|
canstoppeeking()
|
|
{
|
|
return self maymovetopoint(self.covernode.origin);
|
|
}
|
|
|
|
//Function Number: 41
|
|
fastlook()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 42
|
|
cornerreload()
|
|
{
|
|
var_00 = animscripts/utility::animarraypickrandom("reload");
|
|
self setflaggedanimknobrestart("cornerReload",var_00,1,0.2);
|
|
animscripts/shared::donotetracks("cornerReload");
|
|
animscripts/weaponlist::refillclip();
|
|
self setanimrestart(animscripts/utility::animarray("alert_idle"),1,0.2);
|
|
self clearanim(var_00,0.2);
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 43
|
|
ispathclear(param_00,param_01)
|
|
{
|
|
if(param_01)
|
|
{
|
|
var_02 = func_1FEF();
|
|
if(!self maymovetopoint(var_02))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return self maymovefrompointtopoint(var_02,animscripts/utility::getanimendpos(param_00));
|
|
}
|
|
|
|
return self maymovetopoint(animscripts/utility::getanimendpos(param_01));
|
|
}
|
|
|
|
//Function Number: 44
|
|
func_1FEF(param_00)
|
|
{
|
|
var_01 = self.covernode.angles;
|
|
var_02 = anglestoright(var_01);
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = 36;
|
|
}
|
|
|
|
switch(self.script)
|
|
{
|
|
case "cover_left":
|
|
var_02 = var_02 * 0 - param_00;
|
|
break;
|
|
|
|
case "cover_right":
|
|
var_02 = var_02 * param_00;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return self.covernode.origin + (var_02[0],var_02[1],0);
|
|
}
|
|
|
|
//Function Number: 45
|
|
idle()
|
|
{
|
|
self endon("end_idle");
|
|
for(;;)
|
|
{
|
|
var_00 = randomint(2) == 0 && animscripts/utility::animarrayanyexist("alert_idle_twitch");
|
|
if(var_00)
|
|
{
|
|
var_01 = animscripts/utility::animarraypickrandom("alert_idle_twitch");
|
|
}
|
|
else
|
|
{
|
|
var_01 = animscripts/utility::animarray("alert_idle");
|
|
}
|
|
|
|
playidleanimation(var_01,var_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 46
|
|
flinch()
|
|
{
|
|
if(!animscripts/utility::animarrayanyexist("alert_idle_flinch"))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
playidleanimation(animscripts/utility::animarraypickrandom("alert_idle_flinch"),1);
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 47
|
|
playidleanimation(param_00,param_01)
|
|
{
|
|
if(param_01)
|
|
{
|
|
self setflaggedanimknoballrestart("idle",param_00,%body,1,0.1,1);
|
|
}
|
|
else
|
|
{
|
|
self setflaggedanimknoball("idle",param_00,%body,1,0.1,1);
|
|
}
|
|
|
|
animscripts/shared::donotetracks("idle");
|
|
}
|
|
|
|
//Function Number: 48
|
|
set_anim_array(param_00)
|
|
{
|
|
[[ self.animarrayfuncs["hiding"][param_00] ]]();
|
|
[[ self.animarrayfuncs["exposed"][param_00] ]]();
|
|
}
|
|
|
|
//Function Number: 49
|
|
func_1FF1(param_00)
|
|
{
|
|
[[ self.animarrayfuncs["exposed"][param_00] ]]();
|
|
}
|
|
|
|
//Function Number: 50
|
|
func_1FF2(param_00)
|
|
{
|
|
if(self.a.var_911 == param_00)
|
|
{
|
|
set_anim_array(param_00);
|
|
return;
|
|
}
|
|
|
|
self setflaggedanimknoballrestart("changeStance",animscripts/utility::animarray("stance_change"),%body);
|
|
set_anim_array(param_00);
|
|
animscripts/shared::donotetracks("changeStance");
|
|
wait 0.2;
|
|
}
|
|
|
|
//Function Number: 51
|
|
gotocover(param_00,param_01,param_02)
|
|
{
|
|
var_03 = animscripts/utility::getnodedirection();
|
|
var_04 = animscripts/utility::getnodeorigin();
|
|
var_05 = var_03 + self.hideyawoffset;
|
|
self orientmode("face angle",var_05);
|
|
self animmode("normal");
|
|
thread animscripts/shared::movetooriginovertime(var_04,param_01);
|
|
self setflaggedanimknoballrestart("coveranim",param_00,%body,1,param_01);
|
|
animscripts/notetracks::donotetracksfortime(param_02,"coveranim");
|
|
while(animscripts/utility::absangleclamp180(self.angles[1] - var_05) > 1)
|
|
{
|
|
animscripts/notetracks::donotetracksfortime(0.1,"coveranim");
|
|
}
|
|
|
|
self animmode("zonly_physics");
|
|
if(self.var_1FC6 == "left")
|
|
{
|
|
self.a.special = "cover_left";
|
|
return;
|
|
}
|
|
|
|
self.a.special = "cover_right";
|
|
}
|
|
|
|
//Function Number: 52
|
|
func_1FF7()
|
|
{
|
|
self endon("killanimscript");
|
|
wait 0.05;
|
|
}
|
|
|
|
//Function Number: 53
|
|
set_standing_animarray_aiming()
|
|
{
|
|
if(!isdefined(self.a.array))
|
|
{
|
|
}
|
|
|
|
self.a.array["add_aim_up"] = %exposed_aim_8;
|
|
self.a.array["add_aim_down"] = %exposed_aim_2;
|
|
self.a.array["add_aim_left"] = %exposed_aim_4;
|
|
self.a.array["add_aim_right"] = %exposed_aim_6;
|
|
self.a.array["add_turn_aim_up"] = %exposed_turn_aim_8;
|
|
self.a.array["add_turn_aim_down"] = %exposed_turn_aim_2;
|
|
self.a.array["add_turn_aim_left"] = %exposed_turn_aim_4;
|
|
self.a.array["add_turn_aim_right"] = %exposed_turn_aim_6;
|
|
self.a.array["straight_level"] = %exposed_aim_5;
|
|
if(self.a.var_899 == "lean")
|
|
{
|
|
var_00 = self.a.array["lean_fire"];
|
|
var_01 = self.a.array["lean_single"];
|
|
self.a.array["fire"] = var_00;
|
|
self.a.array["single"] = animscripts/utility::array(var_01);
|
|
self.a.array["semi2"] = var_01;
|
|
self.a.array["semi3"] = var_01;
|
|
self.a.array["semi4"] = var_01;
|
|
self.a.array["semi5"] = var_01;
|
|
self.a.array["burst2"] = var_00;
|
|
self.a.array["burst3"] = var_00;
|
|
self.a.array["burst4"] = var_00;
|
|
self.a.array["burst5"] = var_00;
|
|
self.a.array["burst6"] = var_00;
|
|
}
|
|
else
|
|
{
|
|
self.a.array["fire"] = %exposed_shoot_auto_v2;
|
|
self.a.array["semi2"] = %exposed_shoot_semi2;
|
|
self.a.array["semi3"] = %exposed_shoot_semi3;
|
|
self.a.array["semi4"] = %exposed_shoot_semi4;
|
|
self.a.array["semi5"] = %exposed_shoot_semi5;
|
|
if(animscripts/utility::weapon_pump_action_shotgun())
|
|
{
|
|
self.a.array["single"] = animscripts/utility::array(%shotgun_stand_fire_1a);
|
|
}
|
|
else
|
|
{
|
|
self.a.array["single"] = animscripts/utility::array(%exposed_shoot_semi1);
|
|
}
|
|
|
|
self.a.array["burst2"] = %exposed_shoot_burst3;
|
|
self.a.array["burst3"] = %exposed_shoot_burst3;
|
|
self.a.array["burst4"] = %exposed_shoot_burst4;
|
|
self.a.array["burst5"] = %exposed_shoot_burst5;
|
|
self.a.array["burst6"] = %exposed_shoot_burst6;
|
|
}
|
|
|
|
self.a.array["exposed_idle"] = animscripts/utility::array(%exposed_idle_alert_v1,%exposed_idle_alert_v2,%exposed_idle_alert_v3);
|
|
}
|
|
|
|
//Function Number: 54
|
|
set_crouching_animarray_aiming()
|
|
{
|
|
if(!isdefined(self.a.array))
|
|
{
|
|
}
|
|
|
|
if(self.a.var_899 == "over")
|
|
{
|
|
self.a.array["add_aim_up"] = %covercrouch_aim8_add;
|
|
self.a.array["add_aim_down"] = %covercrouch_aim2_add;
|
|
self.a.array["add_aim_left"] = %covercrouch_aim4_add;
|
|
self.a.array["add_aim_right"] = %covercrouch_aim6_add;
|
|
self.a.array["straight_level"] = %covercrouch_aim5;
|
|
var_00["fire"] = %exposed_shoot_auto_v2;
|
|
if(animscripts/utility::weapon_pump_action_shotgun())
|
|
{
|
|
}
|
|
else
|
|
{
|
|
}
|
|
|
|
self.a.array["exposed_idle"] = animscripts/utility::array(%exposed_idle_alert_v1,%exposed_idle_alert_v2,%exposed_idle_alert_v3);
|
|
return;
|
|
}
|
|
|
|
if(self.a.var_899 == "lean")
|
|
{
|
|
var_01 = self.a.array["lean_fire"];
|
|
var_02 = self.a.array["lean_single"];
|
|
self.a.array["fire"] = var_01;
|
|
self.a.array["single"] = animscripts/utility::array(var_02);
|
|
self.a.array["semi2"] = var_02;
|
|
self.a.array["semi3"] = var_02;
|
|
self.a.array["semi4"] = var_02;
|
|
self.a.array["semi5"] = var_02;
|
|
self.a.array["burst2"] = var_01;
|
|
self.a.array["burst3"] = var_01;
|
|
self.a.array["burst4"] = var_01;
|
|
self.a.array["burst5"] = var_01;
|
|
self.a.array["burst6"] = var_01;
|
|
}
|
|
else
|
|
{
|
|
self.a.array["fire"] = %exposed_crouch_shoot_auto_v2;
|
|
self.a.array["semi2"] = %exposed_crouch_shoot_semi2;
|
|
self.a.array["semi3"] = %exposed_crouch_shoot_semi3;
|
|
self.a.array["semi4"] = %exposed_crouch_shoot_semi4;
|
|
self.a.array["semi5"] = %exposed_crouch_shoot_semi5;
|
|
if(animscripts/utility::weapon_pump_action_shotgun())
|
|
{
|
|
self.a.array["single"] = animscripts/utility::array(%shotgun_crouch_fire);
|
|
}
|
|
else
|
|
{
|
|
self.a.array["single"] = animscripts/utility::array(%exposed_crouch_shoot_semi1);
|
|
}
|
|
|
|
self.a.array["burst2"] = %exposed_crouch_shoot_burst3;
|
|
self.a.array["burst3"] = %exposed_crouch_shoot_burst3;
|
|
self.a.array["burst4"] = %exposed_crouch_shoot_burst4;
|
|
self.a.array["burst5"] = %exposed_crouch_shoot_burst5;
|
|
self.a.array["burst6"] = %exposed_crouch_shoot_burst6;
|
|
}
|
|
|
|
self.a.array["add_aim_up"] = %exposed_crouch_aim_8;
|
|
self.a.array["add_aim_down"] = %exposed_crouch_aim_2;
|
|
self.a.array["add_aim_left"] = %exposed_crouch_aim_4;
|
|
self.a.array["add_aim_right"] = %exposed_crouch_aim_6;
|
|
self.a.array["add_turn_aim_up"] = %exposed_crouch_turn_aim_8;
|
|
self.a.array["add_turn_aim_down"] = %exposed_crouch_turn_aim_2;
|
|
self.a.array["add_turn_aim_left"] = %exposed_crouch_turn_aim_4;
|
|
self.a.array["add_turn_aim_right"] = %exposed_crouch_turn_aim_6;
|
|
self.a.array["straight_level"] = %exposed_crouch_aim_5;
|
|
self.a.array["exposed_idle"] = animscripts/utility::array(%exposed_crouch_idle_alert_v1,%exposed_crouch_idle_alert_v2,%exposed_crouch_idle_alert_v3);
|
|
}
|
|
|
|
//Function Number: 55
|
|
func_1FFA()
|
|
{
|
|
self notify("killanimscript");
|
|
thread animscripts/combat::main();
|
|
} |