Files
IL-GSC/MW3/PC/SP/animscripts/combat.gsc
InfinityLoader d559c1d414 Added MW3 Scripts
2023-10-27 03:47:01 -04:00

1533 lines
27 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\combat.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 62
* Decompile Time: 1046 ms
* Timestamp: 10/27/2023 2:17:55 AM
*******************************************************************/
//Function Number: 1
main()
{
if(isdefined(self.var_10EF))
{
return;
}
if(isdefined(self.onsnowmobile))
{
animscripts/snowmobile::main();
return;
}
if(isdefined(self.custom_animscript_table))
{
if(isdefined(self.custom_animscript_table["combat"]))
{
[[ self.custom_animscript_table["combat"] ]]();
return;
}
}
self endon("killanimscript");
[[ self.var_8BE["exposed"] ]]();
animscripts/utility::func_D15("combat");
self.a.var_10DF = undefined;
if(isdefined(self.node) && self.node.type == "Ambush" && self nearnode(self.node))
{
self.var_CF1 = self.node;
}
func_1107();
func_1105();
animscripts/stop::func_10F5();
func_1109();
func_111D();
self notify("stop_deciding_how_to_shoot");
}
//Function Number: 2
func_067F()
{
self.var_CF1 = undefined;
}
//Function Number: 3
func_1105()
{
if(self.team != "allies")
{
return;
}
if(self ismovesuppressed() && self.var_788 == "move" && self.a.pose == "stand" && !isdefined(self.var_1106))
{
if(isdefined(self.enemy) && distancesquared(self.origin,self.enemy.origin) < squared(128))
{
return;
}
self animmode("zonly_physics");
self setflaggedanimknoballrestart("react",%surprise_stop_v1,%root,1,0.2,self.var_10F7);
animscripts/shared::donotetracks("react");
}
}
//Function Number: 4
func_1107()
{
if(isdefined(self.specialidleanim) || isdefined(self.var_C89))
{
return;
}
if(isdefined(self.enemy) && distancesquared(self.origin,self.enemy.origin) < 262144)
{
return;
}
if(self.var_788 == "stop" && !animscripts/utility::func_C98() && self.a.pose == "stand")
{
self animmode("zonly_physics");
self setflaggedanimknoballrestart("transition",%casual_stand_idle_trans_out,%root,1,0.2,1.2 * self.var_10F7);
animscripts/shared::donotetracks("transition");
}
}
//Function Number: 5
func_1108()
{
if(self.a.pose == "stand")
{
animscripts/animset::func_C94();
return;
}
if(self.a.pose == "crouch")
{
animscripts/animset::func_C99();
return;
}
if(self.a.pose == "prone")
{
animscripts/animset::func_C9C();
return;
}
}
//Function Number: 6
func_1109()
{
if(animscripts/utility::func_C95() && self isstanceallowed("stand"))
{
func_113F("stand");
}
func_1108();
func_110E();
thread func_110D();
self.var_110A = 0;
self clearanim(%root,0.2);
animscripts/combat_utility::func_110B(0.2);
thread animscripts/combat_utility::aimidlethread();
self.a.var_110C = "aim";
func_1142();
}
//Function Number: 7
func_110D()
{
self endon("killanimscript");
wait 0.2;
self.a.movement = "stop";
}
//Function Number: 8
func_110E()
{
self setdefaultaimlimits();
if(self.a.pose == "stand")
{
self.var_714 = 60;
self.var_715 = -60;
}
self.var_F72 = self.var_110F;
}
//Function Number: 9
func_1110()
{
thread animscripts/track::func_CA9();
thread func_115E();
thread animscripts/shoot_behavior::func_CD7("normal");
thread func_1128();
func_1127();
if(isdefined(self.a.var_1111))
{
animscripts/weaponlist::func_CD0();
self.a.var_1111 = undefined;
}
self.a.var_1112 = gettime() + randomintrange(500,1500);
}
//Function Number: 10
func_1113(param_00)
{
if(animscripts/utility::func_BB6() && param_00 < 262144 || self.a.rockets < 1)
{
if(self.a.pose != "stand" && self.a.pose != "crouch")
{
func_113F("crouch");
}
if(self.a.pose == "stand")
{
animscripts/shared::func_F87(%rpg_stand_throw);
}
else
{
animscripts/shared::func_F87(%rpg_crouch_throw);
}
self clearanim(%root,0.2);
animscripts/combat_utility::func_F85();
func_1108();
animscripts/combat_utility::func_1114();
return 1;
}
return 0;
}
//Function Number: 11
func_1115(param_00)
{
if(self.a.pose != "stand" && self isstanceallowed("stand"))
{
if(param_00 < 81225)
{
func_113F("stand");
return 1;
}
if(func_1120())
{
return 1;
}
}
if(param_00 > 262144 && self.a.pose != "crouch" && self isstanceallowed("crouch") && !animscripts/utility::func_C95() && !isdefined(self.heat) && gettime() >= self.a.var_1112 && lengthsquared(self.var_D81) < 10000)
{
if(!isdefined(self.var_CB1) || sighttracepassed(self.origin + (0,0,36),self.var_CB1,0,undefined))
{
func_113F("crouch");
return 1;
}
}
return 0;
}
//Function Number: 12
func_1116(param_00)
{
if(!animscripts/utility::func_C95())
{
if(isdefined(self.var_1117) && self.a.pose == "stand")
{
if(func_1150())
{
return 1;
}
}
if(animscripts/combat_utility::issniper() && param_00 < 167772.2)
{
if(func_1150())
{
return 1;
}
}
}
if(animscripts/combat_utility::func_F08(0))
{
if(!animscripts/utility::func_C95() && common_scripts\utility::cointoss() && !animscripts/utility::func_BB6() && animscripts/utility::func_1118() && param_00 < 167772.2 && self isstanceallowed("stand"))
{
if(self.a.pose != "stand")
{
func_113F("stand");
return 1;
}
if(func_1150())
{
return 1;
}
}
if(func_1144(0))
{
return 1;
}
}
return 0;
}
//Function Number: 13
func_1119(param_00)
{
if(animscripts/utility::func_C95() && self.a.pose == "stand" && !isdefined(self.var_1117))
{
if(param_00 > 262144 || self.combatmode == "ambush_nodes_only" && !isdefined(self.enemy) || !self cansee(self.enemy))
{
func_1159(%pistol_stand_switch);
}
}
}
//Function Number: 14
func_111A()
{
if(isdefined(self.heat) && self nearclaimnodeandangle())
{
self safeteleport(self.var_757,self.node.angles);
}
}
//Function Number: 15
func_111B()
{
if(func_1121())
{
var_00 = 0.25;
if(isdefined(self.var_CAB) && !issentient(self.var_CAB))
{
var_00 = 1.5;
}
var_01 = animscripts/shared::func_111C(var_00);
if(func_0F73(var_01))
{
return 1;
}
}
return 0;
}
//Function Number: 16
func_111D()
{
self endon("killanimscript");
self endon("combat_restart");
func_1110();
self animmode("zonly_physics",0);
self orientmode("face angle",self.angles[1]);
for(;;)
{
if(animscripts/utility::func_BB6())
{
self.deathfunction = undefined;
}
animscripts/utility::func_A69();
if(func_1122())
{
continue;
}
func_1141();
func_111A();
if(!isdefined(self.var_CB1))
{
func_1123();
if(!isdefined(self.enemy))
{
var_00 = 1;
}
continue;
}
func_1127();
var_01 = lengthsquared(self.origin - self.var_CB1);
if(func_1113(var_01))
{
continue;
}
if(func_111B())
{
continue;
}
if(func_10E7())
{
continue;
}
if(func_1116(var_01))
{
continue;
}
if(animscripts/utility::func_BB6() && self.a.pose != "crouch" && randomfloat(1) > 0.65)
{
self.deathfunction = ::func_115D;
}
func_1119(var_01);
if(func_1115(var_01))
{
continue;
}
if(animscripts/combat_utility::func_10E4())
{
func_1136();
animscripts/combat_utility::func_111E();
continue;
}
func_111F();
}
}
//Function Number: 17
func_111F()
{
if(!isdefined(self.enemy) || !self cansee(self.enemy))
{
self endon("enemy");
self endon("shoot_behavior_change");
wait 0.2 + randomfloat(0.1);
self waittill("do_slow_things");
return;
}
wait 0.05;
}
//Function Number: 18
func_1120()
{
if(isdefined(self.enemy) && !self cansee(self.enemy) || !self canshootenemy() && sighttracepassed(self.origin + (0,0,64),self.enemy getshootatpos(),0,undefined))
{
self.a.var_1112 = gettime() + 3000;
func_113F("stand");
return 1;
}
return 0;
}
//Function Number: 19
func_1121()
{
var_00 = self.var_CB1;
if(!isdefined(var_00))
{
return 0;
}
var_01 = self.angles[1] - vectortoyaw(var_00 - self.origin);
var_02 = distancesquared(self.origin,var_00);
if(var_02 < 65536)
{
var_03 = sqrt(var_02);
if(var_03 > 3)
{
var_01 = var_01 + asin(-3 / var_03);
}
}
return animscripts/utility::func_D61(var_01) > self.var_F72;
}
//Function Number: 20
func_1122()
{
var_00 = self.a.pose;
if(isdefined(self.a.var_D29))
{
wait 0.1;
return 1;
}
if(var_00 == "stand" && isdefined(self.heat))
{
return 0;
}
if(!self isstanceallowed(var_00))
{
var_01 = "crouch";
if(var_00 == "crouch")
{
var_01 = "stand";
}
if(self isstanceallowed(var_01))
{
if(var_00 == "stand" && animscripts/utility::func_C95())
{
return 0;
}
func_113F(var_01);
return 1;
}
}
return 0;
}
//Function Number: 21
func_1123()
{
if(self.a.pose != "stand" && self isstanceallowed("stand") && func_1120())
{
return 1;
}
var_00 = gettime();
self.a.var_1112 = var_00 + 1500;
if(isdefined(self.group) && isdefined(self.group.forward))
{
var_01 = angleclamp180(self.angles[1] - vectortoyaw(self.group.forward));
if(func_0F73(var_01))
{
return 1;
}
}
if(isdefined(self.node) && isdefined(level.var_CBD[self.node.type]))
{
var_01 = angleclamp180(self.angles[1] - self.node.angles[1]);
if(func_0F73(var_01))
{
return 1;
}
}
else if((isdefined(self.enemy) && self seerecently(self.enemy,2)) || var_00 > self.a.var_1019 + 1200)
{
var_01 = undefined;
var_02 = self getanglestolikelyenemypath();
if(isdefined(var_02))
{
var_01 = angleclamp180(self.angles[1] - var_02[1]);
}
else if(isdefined(self.node))
{
var_01 = angleclamp180(self.angles[1] - self.node.angles[1]);
}
else if(isdefined(self.enemy))
{
var_02 = vectortoangles(self lastknownpos(self.enemy) - self.origin);
var_01 = angleclamp180(self.angles[1] - var_02[1]);
}
if(isdefined(var_01) && func_0F73(var_01))
{
return 1;
}
}
else if(isdefined(self.heat) && self nearclaimnode())
{
var_01 = angleclamp180(self.angles[1] - self.node.angles[1]);
if(func_0F73(var_01))
{
return 1;
}
}
if(func_10E7())
{
return 1;
}
var_03 = self.a.var_1125 < var_00;
var_04 = 0;
if(var_03)
{
var_04 = 0.99999;
}
if(func_1144(var_04))
{
return 1;
}
if(var_03 && animscripts/utility::func_C95())
{
if(func_1159(%pistol_stand_switch))
{
return 1;
}
}
func_1126();
return 1;
}
//Function Number: 22
func_1126()
{
self endon("shoot_behavior_change");
wait 0.4 + randomfloat(0.4);
self waittill("do_slow_things");
}
//Function Number: 23
func_1127()
{
self.a.var_1125 = gettime() + randomintrange(2000,4000);
}
//Function Number: 24
func_0F73(param_00)
{
if(param_00 < 0 - self.var_F72)
{
if(self.a.pose == "prone")
{
animscripts/cover_prone::func_10B0("crouch");
animscripts/animset::func_C99();
}
func_112E("left",0 - param_00);
maps\_gameskill::didsomethingotherthanshooting();
return 1;
}
if(param_00 > self.var_F72)
{
if(self.a.pose == "prone")
{
animscripts/cover_prone::func_10B0("crouch");
animscripts/animset::func_C99();
}
func_112E("right",param_00);
maps\_gameskill::didsomethingotherthanshooting();
return 1;
}
return 0;
}
//Function Number: 25
func_1128()
{
self endon("killanimscript");
self.var_D81 = (0,0,0);
var_00 = undefined;
var_01 = self.origin;
var_02 = 0.15;
for(;;)
{
if(isdefined(self.var_CAB) && isdefined(var_00) && self.var_CAB == var_00)
{
var_03 = self.var_CAB.origin;
self.var_D81 = var_03 - var_01 * 1 / var_02;
var_01 = var_03;
}
else
{
if(isdefined(self.var_CAB))
{
var_01 = self.var_CAB.origin;
}
else
{
var_01 = self.origin;
}
var_00 = self.var_CAB;
self.var_D81 = (0,0,0);
}
wait var_02;
}
}
//Function Number: 26
func_1129()
{
return 0;
}
//Function Number: 27
func_112A(param_00)
{
self endon("killanimscript");
animscripts/shared::donotetracks(param_00);
}
//Function Number: 28
func_112B()
{
self endon("killanimscript");
self notify("facing_enemy_immediately");
self endon("facing_enemy_immediately");
var_00 = 5;
for(;;)
{
var_01 = 0 - animscripts/utility::func_D5C();
if(abs(var_01) < 2)
{
break;
}
if(abs(var_01) > var_00)
{
var_01 = var_00 * common_scripts\utility::sign(var_01);
}
self orientmode("face angle",self.angles[1] + var_01);
wait 0.05;
}
self orientmode("face current");
self notify("can_stop_turning");
}
//Function Number: 29
func_112C(param_00)
{
var_01 = getmovedelta(param_00,0,1);
var_02 = self localtoworldcoords(var_01);
return self isingoal(var_02) && self maymovetopoint(var_02);
}
//Function Number: 30
func_112D(param_00)
{
var_01 = getmovedelta(param_00,0,1);
var_02 = self localtoworldcoords(var_01);
return self isingoal(var_02);
}
//Function Number: 31
func_112E(param_00,param_01)
{
var_02 = isdefined(self.var_CB1);
var_03 = 1;
var_04 = 0.2;
var_05 = isdefined(self.enemy) && !isdefined(self.var_F3D) && self seerecently(self.enemy,2) && distancesquared(self.enemy.origin,self.origin) < 262144;
if(self.a.var_1019 + 500 > gettime())
{
var_04 = 0.25;
if(var_05)
{
thread func_112B();
}
}
else if(var_05)
{
var_06 = 1 - distance(self.enemy.origin,self.origin) / 512;
var_03 = 1 + var_06 * 1;
if(var_03 > 2)
{
var_04 = 0.05;
}
else if(var_03 > 1.3)
{
var_04 = 0.1;
}
else
{
var_04 = 0.15;
}
}
var_07 = 0;
if(param_01 > 157.5)
{
var_07 = 180;
}
else if(param_01 > 112.5)
{
var_07 = 135;
}
else if(param_01 > 67.5)
{
var_07 = 90;
}
else
{
var_07 = 45;
}
var_08 = "turn_" + param_00 + "_" + var_07;
var_09 = animscripts/utility::func_D4D(var_08);
if(isdefined(self.var_F3D))
{
self animmode("angle deltas",0);
}
else if(isdefined(self.node) && isdefined(level.var_112F[self.node.type]) && distancesquared(self.origin,self.node.origin) < 256)
{
self animmode("angle deltas",0);
}
else if(func_112D(var_09))
{
self animmode("zonly_physics",0);
}
else
{
self animmode("angle deltas",0);
}
self setanimknoball(%exposed_aiming,%body,1,var_04);
if(!isdefined(self.var_F3D))
{
func_1133(var_04);
}
self setanimlimited(%turn,1,var_04);
if(isdefined(self.heat))
{
var_03 = min(1,var_03);
}
else if(isdefined(self.var_F3D))
{
var_03 = max(1.5,var_03);
}
self setflaggedanimknoblimitedrestart("turn",var_09,1,var_04,var_03);
self notify("turning");
if(var_02 && !isdefined(self.var_F3D) && !isdefined(self.heat))
{
thread func_1135();
}
func_1131();
self setanimlimited(%turn,0,0.2);
if(!isdefined(self.var_F3D))
{
func_1134(0.2);
}
if(!isdefined(self.var_F3D))
{
self clearanim(%turn,0.2);
self setanimknob(%exposed_aiming,1,0.2,1);
}
else
{
self clearanim(%exposed_modern,0.3);
}
if(isdefined(self.var_1130))
{
self.var_1130 = undefined;
thread func_112B();
}
self animmode("zonly_physics",0);
self notify("done turning");
}
//Function Number: 32
func_1131()
{
self endon("can_stop_turning");
animscripts/shared::donotetracks("turn");
}
//Function Number: 33
func_1132()
{
self endon("killanimscript");
self endon("done turning");
var_00 = self.angles[1];
wait 0.3;
if(self.angles[1] == var_00)
{
self notify("turning_isnt_working");
self.var_1130 = 1;
}
}
//Function Number: 34
func_1133(param_00)
{
self setanimlimited(animscripts/utility::func_D4D("straight_level"),0,param_00);
self setanim(%add_idle,0,param_00);
if(!animscripts/utility::func_C97())
{
self clearanim(%add_fire,0.2);
}
}
//Function Number: 35
func_1134(param_00)
{
self setanimlimited(animscripts/utility::func_D4D("straight_level"),1,param_00);
self setanim(%add_idle,1,param_00);
}
//Function Number: 36
func_1135()
{
self endon("killanimscript");
self endon("done turning");
if(animscripts/utility::func_BB6())
{
return;
}
animscripts/combat_utility::func_F06();
self clearanim(%add_fire,0.2);
}
//Function Number: 37
func_1136()
{
thread func_1137();
self endon("need_to_turn");
thread func_1140();
animscripts/combat_utility::func_F06();
self notify("stop_watching_for_need_to_turn");
self notify("stop_trying_to_melee");
}
//Function Number: 38
func_1137()
{
self endon("killanimscript");
self endon("stop_watching_for_need_to_turn");
var_00 = gettime() + 4000 + randomint(2000);
for(;;)
{
if(gettime() > var_00 || func_1121())
{
self notify("need_to_turn");
break;
}
wait 0.1;
}
}
//Function Number: 39
func_10E7()
{
if(!animscripts/combat_utility::func_1138())
{
return 0;
}
if(isdefined(level.throwgrenadeatplayerasap) && isalive(level.player))
{
if(func_113B(level.player,200))
{
return 1;
}
}
if(isdefined(self.enemy) && func_113B(self.enemy,self.minexposedgrenadedist))
{
return 1;
}
self.a.var_113A = gettime() + 500;
return 0;
}
//Function Number: 40
func_113B(param_00,param_01)
{
var_02 = 0;
if(isdefined(self.dontevershoot) || isdefined(param_00.var_FA0))
{
return 0;
}
if(!isdefined(self.a.array["exposed_grenade"]))
{
return 0;
}
var_03 = param_00.origin;
if(!self cansee(param_00))
{
if(isdefined(self.enemy) && param_00 == self.enemy && isdefined(self.var_CB1))
{
var_03 = self.var_CB1;
}
}
if(!self cansee(param_00))
{
param_01 = 100;
}
if(distancesquared(self.origin,var_03) > param_01 * param_01 && self.a.pose == self.a.var_113C)
{
animscripts/combat_utility::func_1093(param_00);
if(!animscripts/combat_utility::func_113D(param_00))
{
return 0;
}
var_04 = animscripts/utility::func_113E(var_03);
if(abs(var_04) < 60)
{
var_05 = [];
foreach(var_07 in self.a.array["exposed_grenade"])
{
if(func_112C(var_07))
{
var_05[var_05.size] = var_07;
}
}
if(var_05.size > 0)
{
self setanim(%exposed_aiming,0,0.1);
self animmode("zonly_physics");
animscripts/track::func_CC4(0,0);
var_02 = animscripts/combat_utility::func_FA1(param_00,var_05[randomint(var_05.size)]);
self setanim(%exposed_aiming,1,0.1);
if(var_02)
{
animscripts/track::func_CC4(1,0.5);
}
else
{
animscripts/track::func_CC4(1,0);
}
}
}
}
if(var_02)
{
maps\_gameskill::didsomethingotherthanshooting();
}
return var_02;
}
//Function Number: 41
func_113F(param_00)
{
if(param_00 == self.a.pose)
{
return;
}
var_01 = self.a.pose + "_2_" + param_00;
if(!isdefined(self.a.array))
{
return;
}
var_02 = self.a.array[var_01];
if(!isdefined(var_02))
{
return;
}
self clearanim(%root,0.3);
animscripts/combat_utility::func_F85();
if(param_00 == "stand")
{
var_03 = 2;
}
else
{
var_03 = 1.5;
}
if(!animhasnotetrack(var_02,"anim_pose = \" + param_00 + "\"))
{
}
self setflaggedanimknoballrestart("trans",var_02,%body,1,0.2,var_03);
var_04 = getanimlength(var_02) / var_03;
var_05 = var_04 - 0.3;
if(var_05 < 0.2)
{
var_05 = 0.2;
}
animscripts/notetracks::func_D4F(var_05,"trans");
self.a.pose = param_00;
func_1108();
animscripts/combat_utility::func_1114();
maps\_gameskill::didsomethingotherthanshooting();
}
//Function Number: 42
func_1140()
{
self endon("killanimscript");
self endon("stop_trying_to_melee");
self endon("done turning");
self endon("need_to_turn");
self endon("shoot_behavior_change");
for(;;)
{
wait 0.2 + randomfloat(0.3);
if(isdefined(self.enemy))
{
if(isplayer(self.enemy))
{
var_00 = -25536;
}
else
{
var_00 = 10000;
}
if(distancesquared(self.enemy.origin,self.origin) < var_00)
{
func_1141();
}
}
}
}
//Function Number: 43
func_1141()
{
animscripts/melee::func_1009();
}
//Function Number: 44
func_1142()
{
if(isdefined(self.var_1143))
{
return;
}
if(isplayer(self.enemy))
{
return;
}
animscripts/melee::func_1021(self.enemy);
}
//Function Number: 45
func_1144(param_00)
{
if(animscripts/combat_utility::func_F08(param_00))
{
self.a.var_1145 = 1;
animscripts/combat_utility::func_F85();
var_01 = undefined;
if(isdefined(self.specialreloadanimfunc))
{
var_01 = self [[ self.specialreloadanimfunc ]]();
self.var_766 = 1;
}
else
{
var_01 = animscripts/utility::func_CA8("reload");
if(self.a.pose == "stand" && animscripts/utility::func_F8D("reload_crouchhide") && common_scripts\utility::cointoss())
{
var_01 = animscripts/utility::func_CA8("reload_crouchhide");
}
}
thread func_1140();
self.var_1147 = 0;
if(weaponclass(self.weapon) == "pistol")
{
self orientmode("face default");
}
func_1148(var_01,param_00 > 0.05);
self notify("abort_reload");
self orientmode("face current");
if(self.var_1147)
{
animscripts/weaponlist::func_CD0();
}
self clearanim(%reload,0.2);
self.var_766 = 0;
self notify("stop_trying_to_melee");
self.a.var_1145 = 0;
self.var_1147 = undefined;
maps\_gameskill::didsomethingotherthanshooting();
animscripts/combat_utility::func_1114();
return 1;
}
return 0;
}
//Function Number: 46
func_1148(param_00,param_01)
{
self endon("abort_reload");
if(param_01)
{
thread func_1149();
}
var_02 = 1;
if(!animscripts/utility::func_C95() && !animscripts/utility::func_CEA(self.weapon) && isdefined(self.enemy) && self cansee(self.enemy) && distancesquared(self.enemy.origin,self.origin) < 1048576)
{
var_02 = 1.2;
}
var_03 = "reload_" + animscripts/combat_utility::func_FF4();
self clearanim(%root,0.2);
self setflaggedanimrestart(var_03,param_00,1,0.2,var_02);
thread func_114A("abort_reload",var_03);
self endon("start_aim");
animscripts/shared::donotetracks(var_03);
self.var_1147 = 1;
}
//Function Number: 47
func_1149()
{
self endon("abort_reload");
self endon("killanimscript");
for(;;)
{
if(isdefined(self.var_CAB) && self cansee(self.var_CAB))
{
break;
}
wait 0.05;
}
self notify("abort_reload");
}
//Function Number: 48
func_114A(param_00,param_01)
{
self endon(param_00);
self waittillmatch("start_aim",param_01);
self.var_1147 = 1;
self notify("start_aim");
}
//Function Number: 49
func_10EB(param_00)
{
self endon("killanimscript");
animscripts/shared::donotetracks(param_00);
}
//Function Number: 50
func_114B()
{
maps\_mgturret::dropturret();
animscripts/weaponlist::func_CD0();
self.a.var_114D = 0;
self notify("dropped_gun");
maps\_mgturret::restoredefaults();
}
//Function Number: 51
func_114F()
{
func_114B();
}
//Function Number: 52
func_1150()
{
if(isdefined(self.secondaryweapon) && animscripts/utility::func_CEA(self.secondaryweapon))
{
return 0;
}
if(isdefined(self.no_pistol_switch))
{
return 0;
}
self.a.pose = "stand";
func_1152(%pistol_stand_pullout);
return 1;
}
//Function Number: 53
func_1152(param_00)
{
self endon("killanimscript");
thread animscripts/combat_utility::func_1153();
animscripts/combat_utility::func_F85();
self.var_1154 = param_00;
self setflaggedanimknoballrestart("weapon swap",param_00,%body,1,0.2,animscripts/combat_utility::func_F7B());
func_1155("weapon swap",::func_1158,"end_weapon_swap");
self clearanim(self.var_1154,0.2);
self notify("facing_enemy_immediately");
self notify("switched_to_sidearm");
maps\_gameskill::didsomethingotherthanshooting();
}
//Function Number: 54
func_1155(param_00,param_01,param_02)
{
self endon(param_02);
animscripts/notetracks::func_1156(param_00,param_01);
}
//Function Number: 55
func_1157(param_00)
{
self endon("killanimscript");
wait param_00;
func_112B();
}
//Function Number: 56
func_1158(param_00)
{
if(param_00 == "pistol_pickup")
{
self clearanim(animscripts/utility::func_D4D("straight_level"),0);
animscripts/animset::func_C94();
thread func_1157(0.25);
return;
}
if(param_00 == "start_aim")
{
animscripts/combat_utility::func_1114();
if(func_1121())
{
self notify("end_weapon_swap");
return;
}
}
}
//Function Number: 57
func_1159(param_00,param_01)
{
self endon("killanimscript");
if(animscripts/utility::func_CEA(self.primaryweapon) && isdefined(self.wantshotgun) && !self.wantshotgun && self.lastweapon == animscripts/utility::func_115A())
{
return 0;
}
animscripts/combat_utility::func_F85();
self.var_1154 = param_00;
self setflaggedanimknoballrestart("weapon swap",param_00,%body,1,0.1,1);
if(isdefined(param_01))
{
func_1155("weapon swap",::func_115C,"end_weapon_swap");
}
else
{
func_1155("weapon swap",::func_115B,"end_weapon_swap");
}
self clearanim(self.var_1154,0.2);
self notify("switched_to_lastweapon");
maps\_gameskill::didsomethingotherthanshooting();
return 1;
}
//Function Number: 58
func_115B(param_00)
{
if(param_00 == "pistol_putaway")
{
self clearanim(animscripts/utility::func_D4D("straight_level"),0);
animscripts/animset::func_C94();
thread animscripts/combat_utility::func_1153();
return;
}
if(param_00 == "start_aim")
{
animscripts/combat_utility::func_1114();
if(func_1121())
{
self notify("end_weapon_swap");
return;
}
}
}
//Function Number: 59
func_115C(param_00)
{
if(param_00 == "pistol_putaway")
{
thread animscripts/combat_utility::func_1153();
return;
}
if(issubstr(param_00,"anim_gunhand"))
{
self notify("end_weapon_swap");
}
}
//Function Number: 60
func_115D()
{
if(!animscripts/utility::func_BB6() || self.bulletsinclip == 0)
{
return 0;
}
if(randomfloat(1) > 0.5)
{
self setflaggedanimknoball("deathanim",%rpg_stand_death,%root,1,0.05,1);
}
else
{
self setflaggedanimknoball("deathanim",%rpg_stand_death_stagger,%root,1,0.05,1);
}
animscripts/shared::donotetracks("deathanim");
animscripts/shared::func_D73();
}
//Function Number: 61
func_115E()
{
self endon("killanimscript");
self.a.var_1145 = 0;
for(;;)
{
wait 0.2;
if(isdefined(self.enemy) && !self seerecently(self.enemy,2))
{
if(self.combatmode == "ambush" || self.combatmode == "ambush_nodes_only")
{
continue;
}
}
func_115F();
}
}
//Function Number: 62
func_115F()
{
if(self.fixednode)
{
return;
}
if(!isdefined(self.enemy))
{
self.var_1160 = 0;
return;
}
if(gettime() < self.var_720)
{
self.var_1160 = 0;
return;
}
if(isdefined(self.var_1161) && self.var_1161 != self.enemy)
{
self.var_1160 = 0;
self.var_1161 = undefined;
return;
}
self.var_1161 = self.enemy;
if(self cansee(self.enemy) && self canshootenemy())
{
self.var_1160 = 0;
return;
}
if(isdefined(self.var_1147) && !self.var_1147)
{
self.var_1160 = 0;
return;
}
if(!isdefined(self.reacquire_without_facing) || !self.reacquire_without_facing)
{
var_00 = vectornormalize(self.enemy.origin - self.origin);
var_01 = anglestoforward(self.angles);
if(vectordot(var_00,var_01) < 0.5)
{
self.var_1160 = 0;
return;
}
}
if(self.a.var_1145 && animscripts/combat_utility::func_F08(0.25) && self.enemy.health > self.enemy.maxhealth * 0.5)
{
self.var_1160 = 0;
return;
}
if(animscripts/combat_utility::func_F34() && self.var_1160 < 3)
{
self.var_1160 = 3;
}
switch(self.var_1160)
{
case 0:
if(self reacquirestep(32))
{
return;
}
break;
case 1:
if(self reacquirestep(64))
{
self.var_1160 = 0;
return;
}
break;
case 2:
if(self reacquirestep(96))
{
self.var_1160 = 0;
return;
}
break;
case 3:
if(animscripts/combat_utility::func_F35(0))
{
self.var_1160 = 0;
return;
}
break;
case 4:
if(!self cansee(self.enemy) || !self canshootenemy())
{
self flagenemyunattackable();
}
break;
default:
if(self.var_1160 > 15)
{
self.var_1160 = 0;
return;
}
break;
}
self.var_1160++;
}