2023-10-27 03:49:01 -04:00

1589 lines
31 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\melee.gsc
* Game: Call of Duty: Ghosts
* Platform: PC
* Function Count: 61
* Decompile Time: 1066 ms
* Timestamp: 10/27/2023 1:24:07 AM
*******************************************************************/
//Function Number: 1
func_4509()
{
var_00 = [];
var_00["standard"] = %melee_1;
var_00["standard_stand_to_melee"] = %stand_2_melee_1;
var_00["standard_run_to_melee"] = %run_2_melee_charge;
var_00["aivai_exposed_attackerwins_attack"] = %melee_f_awin_attack;
var_00["aivai_exposed_attackerwins_defend"] = %melee_f_awin_defend;
var_00["aivai_exposed_attackerwins_defend_survive"] = %melee_f_awin_defend_survive;
var_00["aivai_exposed_defenderwins_attack"] = %melee_f_dwin_attack;
var_00["aivai_exposed_defenderwins_defend"] = %melee_f_dwin_defend;
var_00["aivai_wrestle_attackerwins_attack"] = %bog_melee_r_attack;
var_00["aivai_wrestle_attackerwins_defend"] = %bog_melee_r_defend;
var_00["aivai_wrestle_attackerwins_defend_survive"] = %bog_melee_r_backdeath2;
var_00["aivai_behind_attackerwins_attack"] = %melee_sync_attack;
var_00["aivai_behind_attackerwins_defend"] = %melee_sync_defend;
var_00["aivai_coverleft_attackerwins_attack"] = %cornersdl_melee_wina_attacker;
var_00["aivai_coverleft_attackerwins_defend"] = %cornersdl_melee_wina_defender;
var_00["aivai_coverleft_attackerwins_defend_survive"] = %cornersdl_melee_wina_defender_survive;
var_00["aivai_coverleft_defenderwins_attack"] = %cornersdl_melee_wind_attacker;
var_00["aivai_coverleft_defenderwins_attack_survive"] = %cornersdl_melee_wind_attacker_survive;
var_00["aivai_coverleft_defenderwins_defend"] = %cornersdl_melee_wind_defender;
var_00["aivai_coverright_attackerwins_attack"] = %cornersdr_melee_wina_attacker;
var_00["aivai_coverright_attackerwins_defend"] = %cornersdr_melee_wina_defender;
var_00["aivai_coverright_defenderwins_attack"] = %cornersdr_melee_wind_attacker;
var_00["aivai_coverright_defenderwins_defend"] = %cornersdr_melee_wind_defender;
level.archetypes["soldier"]["melee"] = var_00;
}
//Function Number: 2
func_516B()
{
precachemodel("weapon_parabolic_knife");
level._effect["melee_knife_ai"] = loadfx("fx/impacts/flesh_hit_knife");
}
//Function Number: 3
melee_stealthcheck()
{
if(!isdefined(self._stealth))
{
return 0;
}
if(isdefined(self.ent_flag) && isdefined(self.ent_flag["_stealth_enabled"]) && self.ent_flag["_stealth_enabled"])
{
if(isdefined(self.ent_flag["_stealth_attack"]) && !self.ent_flag["_stealth_attack"])
{
return 1;
}
}
return 0;
}
//Function Number: 4
func_5192()
{
if(!isdefined(self.enemy))
{
return 0;
}
if(isdefined(self.var_29AF))
{
return 0;
}
if(melee_stealthcheck())
{
return 0;
}
if(!func_513B(self.enemy))
{
return 0;
}
melee_resetaction();
if(!func_514D())
{
func_517D(self.enemy);
return 0;
}
self animcustom(::func_5174,::melee_endscript);
}
//Function Number: 5
melee_resetaction()
{
self.var_5138.target = self.enemy;
self.var_5138.initiated = 0;
self.var_5138.var_4660 = 0;
}
//Function Number: 6
func_514D()
{
if(!func_516C())
{
return 0;
}
self.var_5138.initiated = 1;
if(func_513D())
{
self.var_5138.func = ::func_5148;
return 1;
}
if(func_5182())
{
if(isdefined(self.var_78EF))
{
self.var_5138.func = self.var_78EF;
}
else
{
self.var_5138.func = ::func_5185;
}
return 1;
}
self.var_5138.func = undefined;
self.nextmeleechecktime = gettime() + 150;
self.nextmeleechecktarget = self.var_5138.target;
return 0;
}
//Function Number: 7
func_5196()
{
var_00 = 1;
var_01 = distance2d(self.var_5138.startpos,self.var_5138.target.origin);
if(var_01 < 32)
{
var_02 = vectornormalize((self.var_5138.startpos[0] - self.var_5138.target.origin[0],self.var_5138.startpos[1] - self.var_5138.target.origin[1],0));
self.var_5138.startpos = self.var_5138.startpos + var_02 * 32 - var_01;
var_00 = 0;
}
var_03 = self getdroptofloorposition(self.var_5138.startpos);
if(!isdefined(var_03))
{
return 0;
}
if(abs(self.var_5138.startpos[2] - var_03[2]) > 51.2)
{
return 0;
}
if(abs(self.origin[2] - var_03[2]) > 51.2)
{
return 0;
}
self.var_5138.startpos = var_03;
if(!self maymovetopoint(self.var_5138.startpos,1,var_00))
{
return 0;
}
if(isdefined(self.var_5138.var_7AF9))
{
var_04 = self.var_5138.startpos - self.var_5138.target.origin;
var_05 = anglestoforward(self.var_5138.var_7AF9);
var_06 = vectordot(var_05,var_04);
var_07 = self.var_5138.startpos - var_05 * var_06;
var_08 = self.var_5138.target.origin - var_07;
var_09 = distance2d(self.var_5138.target.origin,var_07);
if(var_09 < 32)
{
var_07 = var_07 - var_08 * 32 - var_09 / 32;
}
}
else
{
var_02 = vectornormalize((self.var_5138.startpos[0] - self.var_5138.target.origin[0],self.var_5138.startpos[1] - self.var_5138.target.origin[1],0));
var_07 = self.var_5138.target.origin + var_02 * 32;
}
if(!self maymovefrompointtopoint(self.var_5138.startpos,var_07,1,0))
{
return 0;
}
if(!self maymovefrompointtopoint(var_07,self.var_5138.target.origin,1,1))
{
return 0;
}
return 1;
}
//Function Number: 8
func_516C()
{
if(!isdefined(self.var_5138.target))
{
return 0;
}
var_00 = self.var_5138.target;
if(isdefined(var_00.var_29AF))
{
return 0;
}
var_01 = distancesquared(self.origin,var_00.origin);
if(isdefined(self.var_519C))
{
var_02 = self.var_519C;
}
else if(isplayer(var_01))
{
var_02 = -25536;
}
else
{
var_02 = 25600;
}
if(!self.var_5138.initiated && var_01 > var_02)
{
return 0;
}
if(!isalive(self))
{
return 0;
}
if(isdefined(self.a.nofirstframemelee) && self.a.var_6D18 >= gettime() + 50)
{
return 0;
}
if(isdefined(self.nextmeleechecktime) && isdefined(self.nextmeleechecktarget) && gettime() < self.nextmeleechecktime && self.nextmeleechecktarget == var_00)
{
return 0;
}
if(isdefined(self.a.onback) || self.a.var_60B1 == "prone")
{
return 0;
}
if(animscripts/utility::func_87FE())
{
return 0;
}
if(isdefined(self.grenade) && self.frontshieldanglecos == 1)
{
return 0;
}
if(!isalive(var_00))
{
return 0;
}
if(isdefined(var_00.var_29A1) || isdefined(var_00.ignoreme) && var_00.ignoreme)
{
return 0;
}
if(!isai(var_00) && !isplayer(var_00))
{
return 0;
}
if(isai(var_00))
{
if(var_00 isinscriptedstate())
{
return 0;
}
if(var_00 maps\_utility::doinglongdeath() || var_00.delayeddeath)
{
return 0;
}
}
if(isplayer(var_00))
{
var_03 = var_00 getstance();
}
else
{
var_03 = var_01.a.var_60B1;
}
if(var_03 != "stand" && var_03 != "crouch")
{
return 0;
}
if(isdefined(self.magic_bullet_shield) && isdefined(var_00.magic_bullet_shield))
{
return 0;
}
if(isdefined(var_00.grenade))
{
return 0;
}
if(self.var_5138.var_4660)
{
var_04 = 110;
}
else
{
var_04 = 60;
}
var_05 = angleclamp180(self.angles[1] - animscripts/utility::func_3C87(var_00.origin));
if(abs(var_05) > var_04)
{
return 0;
}
if(var_01 <= 4096)
{
return 1;
}
if(self.var_5138.var_4660)
{
return 0;
}
if(isdefined(self.var_55F0) && isdefined(self.var_55EF) && gettime() < self.var_55F0 && self.var_55EF == var_00)
{
return 0;
}
return 1;
}
//Function Number: 9
func_5189()
{
self.var_5138.var_6022 = 1;
self.a.var_5486 = "run";
}
//Function Number: 10
func_518B()
{
self clearanim(%body,0.2);
self.var_5138.var_6022 = undefined;
self.a.var_5486 = "stop";
self orientmode("face default");
}
//Function Number: 11
func_5174()
{
self endon("killanimscript");
self endon("end_melee");
for(;;)
{
var_00 = self.var_5138.func;
[[ self.var_5138.func ]]();
if(!isdefined(self.var_5138.func) || var_00 == self.var_5138.func)
{
break;
}
}
}
//Function Number: 12
func_5183(param_00)
{
if(!isdefined(param_00))
{
}
self.var_55F4 = gettime() + 2500;
self.var_55F3 = param_00;
}
//Function Number: 13
melee_standard_checktimeconstraints()
{
var_00 = distancesquared(self.var_5138.target.origin,self.origin);
if(var_00 > 4096 && isdefined(self.var_55F4) && isdefined(self.var_55F3) && gettime() < self.var_55F4 && self.var_55F3 == self.var_5138.target)
{
return 0;
}
return 1;
}
//Function Number: 14
func_5182()
{
if(isdefined(self.var_5138.target.magic_bullet_shield))
{
return 0;
}
if(!melee_standard_checktimeconstraints())
{
return 0;
}
if(isdefined(self.var_5138.target.var_78F0))
{
return 0;
}
return func_5188();
}
//Function Number: 15
melee_standard_resetgiveuptime()
{
if(isdefined(self.var_519C))
{
var_00 = self.var_519C;
}
else if(isplayer(self.var_5138.target))
{
var_00 = -25536;
}
else
{
var_00 = 25600;
}
if(distancesquared(self.origin,self.var_5138.target.origin) > var_00)
{
self.var_5138.giveuptime = gettime() + 3000;
}
self.var_5138.giveuptime = gettime() + 1000;
}
//Function Number: 16
func_5185()
{
self animmode("zonly_physics");
if(isdefined(self.var_5138.target))
{
melee_standard_resetgiveuptime();
}
while(isdefined(self.var_5138.target))
{
if(!func_5184())
{
self.var_55F0 = gettime() + 1500;
self.var_55EF = self.var_5138.target;
break;
}
if(!isdefined(self.var_5138.target))
{
break;
}
animscripts/battlechatter_ai::evaluatemeleeevent();
self orientmode("face point",self.var_5138.target.origin);
var_00 = animscripts/utility::lookupanim("melee","standard");
self setflaggedanimknoballrestart("meleeanim",var_00,%body,1,0.2,1);
melee_playfacialanim(var_00);
self.var_5138.var_4660 = 1;
if(!func_5186())
{
func_5183(self.var_5138.target);
break;
}
}
self animmode("none");
}
//Function Number: 17
func_5186()
{
for(;;)
{
self waittill("meleeanim",var_00);
if(var_00 == "end")
{
return 1;
}
if(var_00 == "stop")
{
if(!func_514D())
{
return 0;
}
if(self.var_5138.func != ::func_5185)
{
return 1;
}
}
if(var_00 == "fire")
{
if(isdefined(self.var_5138.target))
{
var_01 = self.var_5138.target.health;
self melee();
if(isdefined(self.var_5138.target) && self.var_5138.target.health < var_01)
{
melee_standard_resetgiveuptime();
}
}
}
}
}
//Function Number: 18
func_5188()
{
if(!isdefined(self.var_5138.target))
{
return 0;
}
if(!func_516C())
{
return 0;
}
var_00 = vectornormalize(self.var_5138.target.origin - self.origin);
self.var_5138.startpos = self.var_5138.target.origin - 40 * var_00;
return func_5196();
}
//Function Number: 19
func_5184()
{
if(!func_5188())
{
return 0;
}
var_00 = common_scripts\utility::func_27FE(self.origin,self.var_5138.target.origin);
if(var_00 <= 4096)
{
var_01 = animscripts/utility::lookupanim("melee","standard_stand_to_melee");
self setflaggedanimknoball("readyanim",var_01,%body,1,0.3,1);
melee_playfacialanim(var_01);
animscripts/shared::func_2986("readyanim");
return 1;
}
func_517A();
var_02 = self.var_5138.target.origin;
var_03 = 0.1;
var_04 = animscripts/utility::lookupanim("melee","standard_run_to_melee");
var_05 = length(getmovedelta(var_04,0,1));
var_06 = 32;
var_07 = 48 + var_06 + var_05;
var_08 = var_07 * var_07;
var_09 = 64 + var_06;
var_0A = var_09 * var_09;
var_0B = getanimlength(var_04) * 1000;
var_0C = var_0B - 100;
var_0D = var_0B - 200;
var_0E = 0;
var_0F = undefined;
var_10 = animscripts/utility::lookupanim("run","straight");
if(isplayer(self.var_5138.target) && self.var_5138.target == self.enemy)
{
self orientmode("face enemy");
}
else
{
self orientmode("face point",self.var_5138.target.origin);
}
self setflaggedanimknoball("chargeanim",var_10,%body,1,0.3,1);
melee_playfacialanim(var_10);
var_11 = 0;
for(;;)
{
var_12 = gettime();
var_13 = isdefined(var_0F) && var_0F <= var_08;
if(!var_11)
{
if(var_13)
{
func_5189();
self setflaggedanimknoballrestart("chargeanim",var_04,%body,1,0.2,1);
melee_playfacialanim(var_04);
var_0E = var_12;
var_11 = 1;
}
}
else
{
var_14 = var_01 <= var_08;
if(var_12 - var_0E >= var_0C || !var_13 && !var_14)
{
func_5189();
self setflaggedanimknoball("chargeanim",var_10,%body,1,0.3,1);
melee_playfacialanim(var_10);
var_11 = 0;
}
}
animscripts/notetracks::donotetracksfortime(var_03,"chargeanim");
if(!func_5188())
{
func_518B();
return 0;
}
var_01 = common_scripts\utility::func_27FE(self.origin,self.var_5138.target.origin);
var_15 = self.var_5138.target.origin - var_02 * 1 / gettime() - var_12;
var_02 = self.var_5138.target.origin;
var_16 = self.var_5138.target.origin + var_15 * var_0D;
var_0F = common_scripts\utility::func_27FE(self.origin,var_16);
if(var_11 && var_01 <= var_0A && gettime() - var_0E >= var_0C || !isplayer(self.var_5138.target))
{
break;
}
if(!var_11 && gettime() >= self.var_5138.giveuptime)
{
func_518B();
return 0;
}
}
func_518B();
return 1;
}
//Function Number: 20
func_517A()
{
if(!isdefined(self.a.var_55EE))
{
self.a.var_55EE = 0;
}
if((isdefined(self.enemy) && isplayer(self.enemy)) || randomint(3) == 0)
{
if(gettime() > self.a.var_55EE)
{
animscripts/face::func_6AB2("meleecharge");
self.a.var_55EE = gettime() + 8000;
}
}
}
//Function Number: 21
melee_aivsai_exposed_chooseanimationandposition_flip(param_00)
{
var_01 = 90;
if(self.var_5138.var_4660)
{
var_01 = var_01 + 50;
}
if(abs(param_00) < var_01)
{
return 0;
}
var_02 = self.var_5138.target;
func_5157();
if(self.var_5138.winner)
{
self.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_exposed_attackerwins_attack");
var_02.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_exposed_attackerwins_defend");
var_02.var_5138.var_7D7B = animscripts/utility::lookupanim("melee","aivai_exposed_attackerwins_defend_survive");
}
else
{
self.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_exposed_defenderwins_attack");
var_02.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_exposed_defenderwins_defend");
}
return 1;
}
//Function Number: 22
func_5143(param_00)
{
var_01 = 100;
if(self.var_5138.var_4660)
{
var_01 = var_01 + 50;
}
if(abs(param_00) < var_01)
{
return 0;
}
var_02 = self.var_5138.target;
if(isdefined(var_02.magic_bullet_shield))
{
return 0;
}
if(isdefined(var_02.var_5199))
{
return 0;
}
self.var_5138.winner = 1;
self.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_wrestle_attackerwins_attack");
var_02.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_wrestle_attackerwins_defend");
var_02.var_5138.var_7D7B = animscripts/utility::lookupanim("melee","aivai_wrestle_attackerwins_defend_survive");
return 1;
}
//Function Number: 23
melee_aivsai_exposed_chooseanimationandposition_behind(param_00)
{
if(-90 > param_00 || param_00 > 0)
{
return 0;
}
var_01 = self.var_5138.target;
if(isdefined(var_01.magic_bullet_shield))
{
return 0;
}
if(isdefined(var_01.var_5199))
{
return 0;
}
self.var_5138.winner = 1;
self.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_behind_attackerwins_attack");
var_01.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_behind_attackerwins_defend");
return 1;
}
//Function Number: 24
func_5141()
{
if(isdefined(self.meleeforcedexposedflip))
{
var_00[0] = ::melee_aivsai_exposed_chooseanimationandposition_flip;
}
else if(isdefined(self.meleeforcedexposedwrestle))
{
var_00[0] = ::func_5143;
}
else
{
var_01 = randomint(2);
var_02 = 1 - var_01;
var_03 = 2;
var_00[var_01] = ::melee_aivsai_exposed_chooseanimationandposition_flip;
var_00[var_02] = ::func_5143;
var_00[var_03] = ::melee_aivsai_exposed_chooseanimationandposition_behind;
}
return var_00;
}
//Function Number: 25
func_513F()
{
var_00 = self.var_5138.target;
var_01 = vectortoangles(var_00.origin - self.origin);
var_02 = angleclamp180(var_00.angles[1] - var_01[1]);
var_03 = func_5141();
for(var_04 = 0;var_04 < var_03.size;var_04++)
{
if([[ var_03[var_04] ]](var_02))
{
self.var_5138.startangles = (0,var_01[1],0);
self.var_5138.startpos = getstartorigin(var_00.origin,var_00.angles,self.var_5138.animname);
if(func_5196())
{
return 1;
}
}
}
return 0;
}
//Function Number: 26
func_5157()
{
var_00 = self.var_5138.target;
if(isdefined(self.var_5199))
{
self.var_5138.winner = 1;
}
else if(isdefined(var_00.var_5199))
{
self.var_5138.winner = 0;
}
if(isdefined(self.magic_bullet_shield))
{
self.var_5138.winner = 1;
}
if(isdefined(var_00.magic_bullet_shield))
{
self.var_5138.winner = 0;
}
self.var_5138.winner = common_scripts\utility::func_1DE9();
}
//Function Number: 27
func_514B()
{
var_00 = self.var_5138.target;
func_5157();
var_01 = var_00.var_1FCA.type;
if(var_01 == "Cover Multi")
{
var_01 = animscripts/utility::getcovermultipretendtype(var_00.var_1FCA);
}
if(var_01 == "Cover Left")
{
if(self.var_5138.winner)
{
self.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_coverleft_attackerwins_attack");
var_00.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_coverleft_attackerwins_defend");
var_00.var_5138.var_7D7B = animscripts/utility::lookupanim("melee","aivai_coverleft_attackerwins_defend_survive");
}
else
{
self.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_coverleft_defenderwins_attack");
self.var_5138.var_7D7B = animscripts/utility::lookupanim("melee","aivai_coverleft_defenderwins_attack_survive");
var_00.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_coverleft_defenderwins_defend");
}
}
else if(self.var_5138.winner)
{
self.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_coverright_attackerwins_attack");
var_00.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_coverright_attackerwins_defend");
}
else
{
self.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_coverright_defenderwins_attack");
var_00.var_5138.animname = animscripts/utility::lookupanim("melee","aivai_coverright_defenderwins_defend");
}
self.var_5138.startpos = getstartorigin(var_00.var_1FCA.origin,var_00.var_1FCA.angles,self.var_5138.animname);
self.var_5138.startangles = (var_00.var_1FCA.angles[0],angleclamp180(var_00.var_1FCA.angles[1] + 180),var_00.var_1FCA.angles[2]);
var_00.var_5138.faceyaw = animscripts/utility::getnodeforwardyaw(var_00.var_1FCA);
self.var_5138.var_7AF9 = var_00.var_1FCA.angles;
if(!func_5196())
{
self.var_5138.var_7AF9 = undefined;
return 0;
}
return 1;
}
//Function Number: 28
func_514A()
{
var_00 = self.var_5138.target.var_1FCA;
if(!isdefined(var_00))
{
return 0;
}
if(distancesquared(var_00.origin,self.var_5138.target.origin) > 16 && isdefined(self.var_5138.target.a.covermode) && self.var_5138.target.a.covermode != "hide" && self.var_5138.target.a.covermode != "lean")
{
return 0;
}
var_01 = vectortoangles(self.origin - var_00.origin);
var_02 = angleclamp180(var_00.angles[1] - var_01[1]);
var_03 = var_00.type;
if(var_03 == "Cover Multi")
{
var_03 = animscripts/utility::getcovermultipretendtype(var_00);
}
if(var_03 == "Cover Left")
{
if(var_02 >= -50 && var_02 <= 0)
{
return 1;
}
}
else if(var_03 == "Cover Right")
{
if(var_02 >= 0 && var_02 <= 50)
{
return 1;
}
}
return 0;
}
//Function Number: 29
func_513D()
{
var_00 = self.var_5138.target;
if(!isai(var_00) || var_00.type != "human")
{
return 0;
}
if(self.stairsstate != "none" || var_00.stairsstate != "none")
{
return 0;
}
if(isdefined(self.var_5199) && isdefined(var_00.var_5199))
{
return 0;
}
if(isdefined(self.magic_bullet_shield) && isdefined(var_00.magic_bullet_shield))
{
return 0;
}
if((isdefined(self.var_5199) && isdefined(var_00.magic_bullet_shield)) || isdefined(var_00.var_5199) && isdefined(self.magic_bullet_shield))
{
return 0;
}
if(isdefined(self.var_78F0))
{
if(![[ self.var_78F0 ]]())
{
return 0;
}
self.var_5138.precisepositioning = 1;
}
else if(isdefined(var_00.var_78F0))
{
return 0;
}
else if(func_514A() && func_514B())
{
self.var_5138.precisepositioning = 1;
}
else
{
if(!func_513F())
{
return 0;
}
self.var_5138.precisepositioning = 0;
}
if(!isdefined(var_00.var_5138.faceyaw))
{
var_00.var_5138.faceyaw = var_00.angles[1];
}
self.var_5138.var_7AEE = self.var_5138.startpos - var_00.origin;
return 1;
}
//Function Number: 30
func_5149(param_00)
{
self.var_5138.syncnotetrackent = param_00;
param_00.var_5138.syncnotetrackent = undefined;
}
//Function Number: 31
melee_aivsai_targetlink(param_00)
{
if(!isdefined(param_00.var_5138))
{
}
func_517A();
if(!isalive(param_00))
{
}
self.syncedmeleetarget = param_00;
param_00.syncedmeleetarget = self;
self.var_5138.linked = 1;
param_00.var_5138.linked = 1;
self linktoblendtotag(param_00,"tag_sync",1,1);
}
//Function Number: 32
func_5148()
{
if(!func_5144())
{
self.var_55F0 = gettime() + 1500;
self.var_55EF = self.var_5138.target;
}
var_00 = self.var_5138.target;
func_5149(var_00);
if(self.var_5138.winner)
{
self.var_5138.death = undefined;
var_00.var_5138.death = 1;
}
else
{
var_00.var_5138.death = undefined;
self.var_5138.death = 1;
}
self.var_5138.var_5B0C = var_00;
var_00.var_5138.var_5B0C = self;
if(animscripts/utility::func_87FE())
{
maps\_utility::func_34E3(self.primaryweapon,"primary");
self.lastweapon = self.primaryweapon;
}
if(var_00 animscripts/utility::func_87FE())
{
var_00 maps\_utility::func_34E3(var_00.primaryweapon,"primary");
var_00.lastweapon = var_00.primaryweapon;
}
self.var_5138.weapon = self.weapon;
self.var_5138.var_8DC0 = animscripts/utility::func_3A6D();
var_00.var_5138.weapon = var_00.weapon;
var_00.var_5138.var_8DC0 = var_00 animscripts/utility::func_3A6D();
self.var_5138.var_4660 = 1;
var_00 animcustom(::func_513E,::melee_endscript);
var_00 thread func_513C(self);
self.var_5138.target = undefined;
func_513E();
}
//Function Number: 33
func_513C(param_00)
{
self endon("end_melee");
self endon("melee_aivsai_execute");
wait(0.1);
if(isdefined(param_00))
{
param_00 notify("end_melee");
}
self notify("end_melee");
}
//Function Number: 34
func_5147(param_00,param_01)
{
if(isdefined(param_01) && param_01 <= gettime())
{
return 0;
}
if(!func_516C())
{
return 0;
}
var_02 = self.var_5138.target;
var_03 = distancesquared(var_02.origin,param_00);
if(self.var_5138.precisepositioning)
{
var_04 = 256;
}
else
{
var_04 = 1296;
}
if(var_03 > var_04)
{
return 0;
}
self.var_5138.startpos = var_02.origin + self.var_5138.var_7AEE;
if(!func_5196())
{
return 0;
}
return 1;
}
//Function Number: 35
func_5146(param_00)
{
var_01 = distancesquared((self.origin[0],self.origin[1],0),(self.var_5138.startpos[0],self.var_5138.startpos[1],0));
if(var_01 < 64 && abs(self.var_5138.startpos[2] - self.origin[2]) < 64)
{
return 1;
}
var_02 = distancesquared((param_00[0],param_00[1],0),(self.var_5138.startpos[0],self.var_5138.startpos[1],0));
var_03 = distancesquared((self.origin[0],self.origin[1],0),(self.var_5138.target.origin[0],self.var_5138.target.origin[1],0));
if(var_02 > var_03 && abs(self.var_5138.target.origin[2] - self.origin[2]) < 64)
{
return 1;
}
return 0;
}
//Function Number: 36
func_5145(param_00)
{
func_518B();
if(self.var_5138.precisepositioning)
{
self forceteleport(self.var_5138.startpos,self.var_5138.startangles);
wait(0.05);
}
else
{
self orientmode("face angle",self.var_5138.startangles[1]);
wait(0.05);
}
return func_5147(param_00);
}
//Function Number: 37
func_5144()
{
if(!func_516C())
{
return 0;
}
func_5189();
self clearanim(%body,0.2);
self setanimknoball(animscripts/run::func_3BDB(),%body,1,0.2);
self animmode("zonly_physics");
self.keepclaimednode = 1;
var_00 = gettime() + 1500;
var_01 = self.var_5138.target.origin;
while(func_5147(var_01,var_00))
{
if(func_5146(var_01))
{
return func_5145(var_01);
}
self orientmode("face point",self.var_5138.startpos);
wait(0.05);
}
func_518B();
return 0;
}
//Function Number: 38
func_513E()
{
self endon("killanimscript");
self endon("end_melee");
self notify("melee_aivsai_execute");
self animmode("zonly_physics");
self.a.var_78D0 = "none";
self.var_78EB = undefined;
thread func_515C();
thread func_5178();
if(isdefined(self.var_5138.faceyaw))
{
self orientmode("face angle",self.var_5138.faceyaw);
}
else
{
self orientmode("face current");
}
self.a.var_60B1 = "stand";
self clearanim(%body,0.2);
if(isdefined(self.var_5138.death))
{
func_5158();
}
self setflaggedanimknoballrestart("meleeAnim",self.var_5138.animname,%body,1,0.2);
melee_playfacialanim(self.var_5138.animname);
var_00 = animscripts/shared::func_2986("meleeAnim",::func_5163);
if(var_00 == "melee_death" && isdefined(self.var_5138.survive))
{
melee_droppedweaponrestore();
self setflaggedanimknoballrestart("meleeAnim",self.var_5138.var_7D7B,%body,1,0.2);
melee_playfacialanim(self.var_5138.var_7D7B);
var_00 = animscripts/shared::func_2986("meleeAnim",::func_5163);
}
if(isdefined(self.var_5138) && isdefined(self.var_5138.death))
{
self kill();
}
self.keepclaimednode = 0;
}
//Function Number: 39
func_5158()
{
self.var_5138.var_8C40 = self.allowpain;
self.var_5138.var_8C48 = self.flashbangimmunity;
maps\_utility::disable_pain();
maps\_utility::setflashbangimmunity(1);
}
//Function Number: 40
func_5175()
{
return isdefined(self.var_5138.weapon) && self.var_5138.weapon != "none" && self.weapon != self.var_5138.weapon;
}
//Function Number: 41
melee_droppedweaponrestore()
{
if(self.weapon != "none" && self.lastweapon != "none")
{
}
if(!isdefined(self.var_5138.weapon) || self.var_5138.weapon == "none")
{
}
maps\_utility::func_34E3(self.var_5138.weapon,self.var_5138.var_8DC0);
if(isdefined(self.var_5138.var_2B59))
{
self.var_5138.var_2B59 delete();
self.var_5138.var_2B59 = undefined;
}
}
//Function Number: 42
func_515C()
{
self endon("killanimscript");
self endon("end_melee");
self waittill("weapon_dropped",var_00);
if(isdefined(var_00))
{
self.var_5138.var_2B59 = var_00;
}
}
//Function Number: 43
func_5179()
{
if(!isdefined(self.var_5138.var_7D7B))
{
return 0;
}
if(!isdefined(self.var_5138.var_7D7A))
{
return 0;
}
return 1;
}
//Function Number: 44
func_5178()
{
self endon("killanimscript");
self endon("end_melee");
self waittill("partner_end_melee");
if(isdefined(self.var_5138.death))
{
if(isdefined(self.var_5138.var_DEE) || isdefined(self.var_5138.var_46B9))
{
self kill();
}
self.var_5138.death = undefined;
if(func_5179())
{
self.var_5138.survive = 1;
}
self notify("end_melee");
}
if(!isdefined(self.var_5138.var_864F))
{
self notify("end_melee");
}
}
//Function Number: 45
func_5194()
{
if(!isdefined(self.var_5138.linked))
{
}
if(isdefined(self.syncedmeleetarget))
{
self.syncedmeleetarget func_5195();
}
func_5195();
}
//Function Number: 46
func_5195()
{
self unlink();
self.syncedmeleetarget = undefined;
if(!isalive(self))
{
}
self.var_5138.linked = undefined;
self animmode("zonly_physics");
self orientmode("face angle",self.angles[1]);
}
//Function Number: 47
func_5166()
{
func_5194();
self.var_5138.var_864F = 1;
if(isdefined(self.var_5138.var_5B0C) && isdefined(self.var_5138.var_5B0C.var_5138))
{
self.var_5138.var_5B0C.var_5138.var_864F = 1;
}
}
//Function Number: 48
func_5165()
{
if(animhasnotetrack(self.var_5138.animname,"melee_death"))
{
return 0;
}
return isdefined(self.var_5138.death);
}
//Function Number: 49
func_5164(param_00)
{
if(isdefined(param_00) && param_00)
{
self.var_5138.var_46B9 = 1;
}
self.var_5138.var_DEE = 1;
}
//Function Number: 50
func_5163(param_00)
{
if(issubstr(param_00,"ps_"))
{
var_01 = getsubstr(param_00,3);
self playsound(var_01);
}
if(var_01 == "sync")
{
if(isdefined(self.var_5138.syncnotetrackent))
{
melee_aivsai_targetlink(self.var_5138.syncnotetrackent);
self.var_5138.syncnotetrackent = undefined;
}
}
if(var_01 == "unsync")
{
func_5166();
if(func_5165())
{
func_5164();
}
}
if(var_01 == "melee_interact")
{
self.var_5138.var_7D7A = 1;
}
if(var_01 == "melee_death")
{
if(isdefined(self.var_5138.survive))
{
return var_01;
}
func_5164();
if(isdefined(self.var_5138.var_DEE))
{
return var_01;
}
}
if(var_01 == "attach_knife")
{
self attach("weapon_parabolic_knife","TAG_INHAND",1);
self.var_5138.var_4017 = 1;
}
if(var_01 == "detach_knife")
{
self detach("weapon_parabolic_knife","TAG_INHAND",1);
self.var_5138.var_4017 = undefined;
}
if(var_01 == "stab")
{
self playsound("melee_knife_hit_body");
playfxontag(level._effect["melee_knife_ai"],self,"TAG_KNIFE_FX");
if(isdefined(self.var_5138.var_5B0C) && isdefined(self.var_5138.var_5B0C.var_5138))
{
self.var_5138.var_5B0C func_5164(1);
}
}
}
//Function Number: 51
melee_deathhandler_regular()
{
self endon("end_melee");
animscripts/shared::func_2B49();
return 0;
}
//Function Number: 52
func_5155()
{
self endon("end_melee");
animscripts/notetracks::donotetrackswithtimeout("meleeAnim",10);
animscripts/shared::func_2B49();
self startragdoll();
return 1;
}
//Function Number: 53
func_515F()
{
if(!isalive(self) && isdefined(self.var_5138.death))
{
if(isdefined(self.var_5138.var_DEE))
{
self.var_237B = ::func_5155;
}
self.var_237B = ::melee_deathhandler_regular;
}
}
//Function Number: 54
melee_endscript_checkpositionandmovement()
{
if(!isalive(self))
{
}
if(isdefined(self.var_5138.var_6022))
{
func_518B();
}
var_00 = self getdroptofloorposition();
if(isdefined(var_00))
{
self forceteleport(var_00,self.angles);
}
}
//Function Number: 55
func_5162()
{
if(isdefined(self.var_5138.var_4017))
{
self detach("weapon_parabolic_knife","TAG_INHAND",1);
}
if(isalive(self))
{
melee_droppedweaponrestore();
}
}
//Function Number: 56
func_5161()
{
if(isdefined(self.var_5138.var_8C40))
{
if(self.var_5138.var_8C40)
{
maps\_utility::func_2CBF();
}
else
{
maps\_utility::disable_pain();
}
}
if(isdefined(self.var_5138.var_8C48))
{
maps\_utility::setflashbangimmunity(self.var_5138.var_8C48);
}
}
//Function Number: 57
melee_endscript()
{
func_5194();
func_515F();
melee_endscript_checkpositionandmovement();
func_5162();
func_5161();
if(isdefined(self.var_5138.var_5B0C))
{
self.var_5138.var_5B0C notify("partner_end_melee");
}
func_517D(self.var_5138.target);
func_5150();
}
//Function Number: 58
func_513B(param_00)
{
if(isdefined(self.var_5138))
{
return 0;
}
if(isdefined(param_00.var_5138))
{
return 0;
}
self.var_5138 = spawnstruct();
param_00.var_5138 = spawnstruct();
return 1;
}
//Function Number: 59
func_517D(param_00)
{
self.var_5138 = undefined;
if(isdefined(param_00))
{
param_00.var_5138 = undefined;
}
}
//Function Number: 60
melee_playfacialanim(param_00)
{
self.facialidx = animscripts/face::func_6004(param_00,"pain",self.facialidx);
}
//Function Number: 61
func_5150()
{
self.facialidx = undefined;
self clearanim(%head,0.2);
}