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

1564 lines
26 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\melee.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 59
* Decompile Time: 1065 ms
* Timestamp: 10/27/2023 2:18:26 AM
*******************************************************************/
//Function Number: 1
func_1006()
{
precachemodel("weapon_parabolic_knife");
level._effect["melee_knife_ai"] = loadfx("impacts/flesh_hit_knife");
}
//Function Number: 2
func_1007()
{
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: 3
func_1009()
{
if(!isdefined(self.enemy))
{
return 0;
}
if(isdefined(self.dontmelee))
{
return 0;
}
if(func_1007())
{
return 0;
}
if(!func_1073(self.enemy))
{
return 0;
}
func_100B();
if(!func_100F())
{
func_1074(self.enemy);
return 0;
}
self animcustom(::func_1020,::func_1072);
}
//Function Number: 4
func_100B()
{
self.melee.target = self.enemy;
self.melee.var_100D = 0;
self.melee.var_100E = 0;
}
//Function Number: 5
func_100F()
{
if(!func_1016())
{
return 0;
}
self.melee.var_100D = 1;
if(func_1040())
{
self.melee.func = ::func_1047;
return 1;
}
if(func_1025())
{
if(isdefined(self.var_1010))
{
self.melee.func = self.var_1010;
}
else
{
self.melee.func = ::func_1029;
}
return 1;
}
self.melee.func = undefined;
self.var_1011 = gettime() + 150;
self.var_1012 = self.melee.target;
return 0;
}
//Function Number: 6
func_1013()
{
var_00 = 1;
var_01 = distance2d(self.melee.startpos,self.melee.target.origin);
if(var_01 < 32)
{
var_02 = vectornormalize((self.melee.startpos[0] - self.melee.target.origin[0],self.melee.startpos[1] - self.melee.target.origin[1],0));
self.melee.startpos = self.melee.startpos + var_02 * 32 - var_01;
var_00 = 0;
}
var_03 = self getdroptofloorposition(self.melee.startpos);
if(!isdefined(var_03))
{
return 0;
}
if(abs(self.melee.startpos[2] - var_03[2]) > 51.2)
{
return 0;
}
if(abs(self.origin[2] - var_03[2]) > 51.2)
{
return 0;
}
self.melee.startpos = var_03;
if(!self maymovetopoint(self.melee.startpos,1,var_00))
{
return 0;
}
if(isdefined(self.melee.var_1015))
{
var_04 = self.melee.startpos - self.melee.target.origin;
var_05 = anglestoforward(self.melee.var_1015);
var_06 = vectordot(var_05,var_04);
var_07 = self.melee.startpos - var_05 * var_06;
var_08 = self.melee.target.origin - var_07;
var_09 = distance2d(self.melee.target.origin,var_07);
if(var_09 < 32)
{
var_07 = var_07 - var_08 * 32 - var_09 / 32;
}
}
else
{
var_02 = vectornormalize((self.melee.startpos[0] - self.melee.target.origin[0],self.melee.startpos[1] - self.melee.target.origin[1],0));
var_07 = self.melee.target.origin + var_02 * 32;
}
if(!self maymovefrompointtopoint(self.melee.startpos,var_07,1,0))
{
return 0;
}
if(!self maymovefrompointtopoint(var_07,self.melee.target.origin,1,1))
{
return 0;
}
return 1;
}
//Function Number: 7
func_1016()
{
if(!isdefined(self.melee.target))
{
return 0;
}
var_00 = self.melee.target;
if(isdefined(var_00.dontmelee))
{
return 0;
}
var_01 = distancesquared(self.origin,var_00.origin);
if(isdefined(self.var_1017))
{
var_02 = self.var_1017;
}
else if(isplayer(var_01))
{
var_02 = -25536;
}
else
{
var_02 = 25600;
}
if(!self.melee.var_100D && var_01 > var_02)
{
return 0;
}
if(!isalive(self))
{
return 0;
}
if(isdefined(self.a.var_1018) && self.a.var_1019 >= gettime() + 50)
{
return 0;
}
if(isdefined(self.var_1011) && isdefined(self.var_1012) && gettime() < self.var_1011 && self.var_1012 == var_00)
{
return 0;
}
if(isdefined(self.a.var_D29) || self.a.pose == "prone")
{
return 0;
}
if(animscripts/utility::func_C95())
{
return 0;
}
if(isdefined(self.var_73C) && self.var_772 == 1)
{
return 0;
}
if(!isalive(var_00))
{
return 0;
}
if(isdefined(var_00.var_FA0) || 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.var_744)
{
return 0;
}
}
if(isplayer(var_00))
{
var_03 = var_00 getstance();
}
else
{
var_03 = var_01.a.pose;
}
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.var_73C))
{
return 0;
}
if(self.melee.var_100E)
{
var_04 = 110;
}
else
{
var_04 = 60;
}
var_05 = angleclamp180(self.angles[1] - animscripts/utility::func_101A(var_00.origin));
if(abs(var_05) > var_04)
{
return 0;
}
if(var_01 <= 4096)
{
return 1;
}
if(self.melee.var_100E)
{
return 0;
}
if(isdefined(self.var_101B) && isdefined(self.var_101C) && gettime() < self.var_101B && self.var_101C == var_00)
{
return 0;
}
return 1;
}
//Function Number: 8
func_101D()
{
self.melee.var_101E = 1;
self.a.movement = "run";
}
//Function Number: 9
func_101F()
{
self clearanim(%body,0.2);
self.melee.var_101E = undefined;
self.a.movement = "stop";
self orientmode("face default");
}
//Function Number: 10
func_1020()
{
self endon("killanimscript");
self endon("end_melee");
for(;;)
{
var_00 = self.melee.func;
[[ self.melee.func ]]();
if(!isdefined(self.melee.func) || var_00 == self.melee.func)
{
break;
}
}
}
//Function Number: 11
func_1021(param_00)
{
if(!isdefined(param_00))
{
return;
}
self.var_1022 = gettime() + 2500;
self.var_1023 = param_00;
}
//Function Number: 12
func_1024()
{
var_00 = distancesquared(self.melee.target.origin,self.origin);
if(var_00 > 4096 && isdefined(self.var_1022) && isdefined(self.var_1023) && gettime() < self.var_1022 && self.var_1023 == self.melee.target)
{
return 0;
}
return 1;
}
//Function Number: 13
func_1025()
{
if(isdefined(self.melee.target.magic_bullet_shield))
{
return 0;
}
if(!func_1024())
{
return 0;
}
if(isdefined(self.melee.target.var_1026))
{
return 0;
}
return func_102B();
}
//Function Number: 14
func_1027()
{
if(isdefined(self.var_1017))
{
var_00 = self.var_1017;
}
else if(isplayer(self.melee.target))
{
var_00 = -25536;
}
else
{
var_00 = 25600;
}
if(distancesquared(self.origin,self.melee.target.origin) > var_00)
{
self.melee.var_1028 = gettime() + 3000;
return;
}
self.melee.var_1028 = gettime() + 1000;
}
//Function Number: 15
func_1029()
{
self animmode("zonly_physics");
if(isdefined(self.melee.target))
{
func_1027();
}
while(isdefined(self.melee.target))
{
if(!func_102D())
{
self.var_101B = gettime() + 1500;
self.var_101C = self.melee.target;
break;
}
if(!isdefined(self.melee.target))
{
break;
}
animscripts/battlechatter_ai::func_B37();
self orientmode("face point",self.melee.target.origin);
self setflaggedanimknoballrestart("meleeanim",%melee_1,%body,1,0.2,1);
self.melee.var_100E = 1;
if(!func_102A())
{
func_1021(self.melee.target);
break;
}
}
self animmode("none");
}
//Function Number: 16
func_102A()
{
for(;;)
{
self waittill("meleeanim",var_00);
if(var_00 == "end")
{
return 1;
}
if(var_00 == "stop")
{
if(!func_100F())
{
return 0;
}
if(self.melee.func != ::func_1029)
{
return 1;
}
}
if(var_00 == "fire")
{
if(isdefined(self.melee.target))
{
var_01 = self.melee.target.health;
self melee();
if(isdefined(self.melee.target) && self.melee.target.health < var_01)
{
func_1027();
}
}
}
}
}
//Function Number: 17
func_102B()
{
if(!isdefined(self.melee.target))
{
return 0;
}
if(!func_1016())
{
return 0;
}
var_00 = vectornormalize(self.melee.target.origin - self.origin);
self.melee.startpos = self.melee.target.origin - 40 * var_00;
return func_1013();
}
//Function Number: 18
func_102C(param_00,param_01)
{
var_02 = (param_00[0] - param_01[0],param_00[1] - param_01[1],0);
return lengthsquared(var_02);
}
//Function Number: 19
func_102D()
{
if(!func_102B())
{
return 0;
}
var_00 = func_102C(self.origin,self.melee.target.origin);
if(var_00 <= 4096)
{
self setflaggedanimknoball("readyanim",%stand_2_melee_1,%body,1,0.3,1);
animscripts/shared::donotetracks("readyanim");
return 1;
}
func_102E();
var_01 = self.melee.target.origin;
var_02 = 0.1;
var_03 = length(getmovedelta(%run_2_melee_charge,0,1));
var_04 = 32;
var_05 = 48 + var_04 + var_03;
var_06 = var_05 * var_05;
var_07 = 64 + var_04;
var_08 = var_07 * var_07;
var_09 = getanimlength(%run_2_melee_charge) * 1000;
var_0A = var_09 - 100;
var_0B = var_09 - 200;
var_0C = 0;
var_0D = undefined;
var_0E = %run_lowready_f;
if(isplayer(self.melee.target) && self.melee.target == self.enemy)
{
self orientmode("face enemy");
}
else
{
self orientmode("face point",self.melee.target.origin);
}
self setflaggedanimknoball("chargeanim",var_0E,%body,1,0.3,1);
var_0F = 0;
for(;;)
{
var_10 = gettime();
var_11 = isdefined(var_0D) && var_0D <= var_06;
if(!var_0F)
{
if(var_11)
{
func_101D();
self setflaggedanimknoballrestart("chargeanim",%run_2_melee_charge,%body,1,0.2,1);
var_0C = var_10;
var_0F = 1;
}
}
else
{
var_12 = var_00 <= var_06;
if(var_10 - var_0C >= var_0A || !var_11 && !var_12)
{
func_101D();
self setflaggedanimknoball("chargeanim",var_0E,%body,1,0.3,1);
var_0F = 0;
}
}
animscripts/notetracks::func_D4F(var_02,"chargeanim");
if(!func_102B())
{
func_101F();
return 0;
}
var_00 = func_102C(self.origin,self.melee.target.origin);
var_13 = self.melee.target.origin - var_01 * 1 / gettime() - var_10;
var_01 = self.melee.target.origin;
var_14 = self.melee.target.origin + var_13 * var_0B;
var_0D = func_102C(self.origin,var_14);
if(var_0F && var_00 <= var_08 && gettime() - var_0C >= var_0A || !isplayer(self.melee.target))
{
break;
}
if(!var_0F && gettime() >= self.melee.var_1028)
{
func_101F();
return 0;
}
}
func_101F();
return 1;
}
//Function Number: 20
func_102E()
{
if(!isdefined(self.a.var_102F))
{
self.a.var_102F = 0;
}
if((isdefined(self.enemy) && isplayer(self.enemy)) || randomint(3) == 0)
{
if(gettime() > self.a.var_102F)
{
animscripts/face::func_C41("meleecharge");
self.a.var_102F = gettime() + 8000;
}
}
}
//Function Number: 21
func_1030(param_00)
{
var_01 = 90;
if(self.melee.var_100E)
{
var_01 = var_01 + 50;
}
if(abs(param_00) < var_01)
{
return 0;
}
var_02 = self.melee.target;
func_103C();
if(self.melee.winner)
{
self.melee.animname = %melee_f_awin_attack;
var_02.melee.animname = %melee_f_awin_defend;
var_02.melee.var_1033 = %melee_f_awin_defend_survive;
}
else
{
self.melee.animname = %melee_f_dwin_attack;
var_02.melee.animname = %melee_f_dwin_defend;
}
return 1;
}
//Function Number: 22
func_1034(param_00)
{
var_01 = 100;
if(self.melee.var_100E)
{
var_01 = var_01 + 50;
}
if(abs(param_00) < var_01)
{
return 0;
}
var_02 = self.melee.target;
if(isdefined(var_02.magic_bullet_shield))
{
return 0;
}
if(isdefined(var_02.meleealwayswin))
{
return 0;
}
self.melee.winner = 1;
self.melee.animname = %bog_melee_r_attack;
var_02.melee.animname = %bog_melee_r_defend;
var_02.melee.var_1033 = %bog_melee_r_backdeath2;
return 1;
}
//Function Number: 23
func_1036(param_00)
{
if(-90 > param_00 || param_00 > 0)
{
return 0;
}
var_01 = self.melee.target;
if(isdefined(var_01.magic_bullet_shield))
{
return 0;
}
if(isdefined(var_01.meleealwayswin))
{
return 0;
}
self.melee.winner = 1;
self.melee.animname = %melee_sync_attack;
var_01.melee.animname = %melee_sync_defend;
return 1;
}
//Function Number: 24
func_1037()
{
if(isdefined(self.var_1038))
{
var_00[0] = ::func_1030;
}
else if(isdefined(self.var_1039))
{
var_00[0] = ::func_1034;
}
else
{
var_01 = randomint(2);
var_02 = 1 - var_01;
var_03 = 2;
var_00[var_01] = ::func_1030;
var_00[var_02] = ::func_1034;
var_00[var_03] = ::func_1036;
}
return var_00;
}
//Function Number: 25
func_103A()
{
var_00 = self.melee.target;
var_01 = vectortoangles(var_00.origin - self.origin);
var_02 = angleclamp180(var_00.angles[1] - var_01[1]);
var_03 = func_1037();
for(var_04 = 0;var_04 < var_03.size;var_04++)
{
if([[ var_03[var_04] ]](var_02))
{
self.melee.var_103B = (0,var_01[1],0);
self.melee.startpos = getstartorigin(var_00.origin,var_00.angles,self.melee.animname);
if(func_1013())
{
return 1;
}
}
}
return 0;
}
//Function Number: 26
func_103C()
{
var_00 = self.melee.target;
if(isdefined(self.meleealwayswin))
{
self.melee.winner = 1;
return;
}
else if(isdefined(var_00.meleealwayswin))
{
self.melee.winner = 0;
return;
}
if(isdefined(self.magic_bullet_shield))
{
self.melee.winner = 1;
return;
}
if(isdefined(var_00.magic_bullet_shield))
{
self.melee.winner = 0;
return;
}
self.melee.winner = common_scripts\utility::cointoss();
}
//Function Number: 27
func_103D()
{
var_00 = self.melee.target;
func_103C();
if(var_00.var_CAF.type == "Cover Left")
{
if(self.melee.winner)
{
self.melee.animname = %cornersdl_melee_wina_attacker;
var_00.melee.animname = %cornersdl_melee_wina_defender;
var_00.melee.var_1033 = %cornersdl_melee_wina_defender_survive;
}
else
{
self.melee.animname = %cornersdl_melee_wind_attacker;
self.melee.var_1033 = %cornersdl_melee_wind_attacker_survive;
var_00.melee.animname = %cornersdl_melee_wind_defender;
}
}
else if(self.melee.winner)
{
self.melee.animname = %cornersdr_melee_wina_attacker;
var_00.melee.animname = %cornersdr_melee_wina_defender;
}
else
{
self.melee.animname = %cornersdr_melee_wind_attacker;
var_00.melee.animname = %cornersdr_melee_wind_defender;
}
self.melee.startpos = getstartorigin(var_00.var_CAF.origin,var_00.var_CAF.angles,self.melee.animname);
self.melee.var_103B = (var_00.var_CAF.angles[0],angleclamp180(var_00.var_CAF.angles[1] + 180),var_00.var_CAF.angles[2]);
var_00.melee.var_103E = animscripts/utility::func_F41(var_00.var_CAF);
self.melee.var_1015 = var_00.var_CAF.angles;
if(!func_1013())
{
self.melee.var_1015 = undefined;
return 0;
}
return 1;
}
//Function Number: 28
func_103F()
{
var_00 = self.melee.target.var_CAF;
if(!isdefined(var_00))
{
return 0;
}
if(distancesquared(var_00.origin,self.melee.target.origin) > 16 && isdefined(self.melee.target.a.var_CF8) && self.melee.target.a.var_CF8 != "hide" && self.melee.target.a.var_CF8 != "lean")
{
return 0;
}
var_01 = vectortoangles(self.origin - var_00.origin);
var_02 = angleclamp180(var_00.angles[1] - var_01[1]);
if(var_00.type == "Cover Left")
{
if(var_02 >= -50 && var_02 <= 0)
{
return 1;
}
}
else if(var_00.type == "Cover Right")
{
if(var_02 >= 0 && var_02 <= 50)
{
return 1;
}
}
return 0;
}
//Function Number: 29
func_1040()
{
var_00 = self.melee.target;
if(!isai(var_00) || var_00.type != "human")
{
return 0;
}
if(self.var_786 != "none" || var_00.var_786 != "none")
{
return 0;
}
if(isdefined(self.meleealwayswin) && isdefined(var_00.meleealwayswin))
{
return 0;
}
if(isdefined(self.magic_bullet_shield) && isdefined(var_00.magic_bullet_shield))
{
return 0;
}
if((isdefined(self.meleealwayswin) && isdefined(var_00.magic_bullet_shield)) || isdefined(var_00.meleealwayswin) && isdefined(self.magic_bullet_shield))
{
return 0;
}
if(isdefined(self.var_1026))
{
if(![[ self.var_1026 ]]())
{
return 0;
}
self.melee.var_1041 = 1;
}
else if(isdefined(var_00.var_1026))
{
return 0;
}
else if(func_103F() && func_103D())
{
self.melee.var_1041 = 1;
}
else
{
if(!func_103A())
{
return 0;
}
self.melee.var_1041 = 0;
}
if(!isdefined(var_00.melee.var_103E))
{
var_00.melee.var_103E = var_00.angles[1];
}
self.melee.var_1042 = self.melee.startpos - var_00.origin;
return 1;
}
//Function Number: 30
func_1043(param_00)
{
self.melee.var_1044 = param_00;
param_00.melee.var_1044 = undefined;
}
//Function Number: 31
func_1045(param_00)
{
if(!isdefined(param_00.melee))
{
return;
}
func_102E();
if(!isalive(param_00))
{
return;
}
self.var_78A = param_00;
param_00.var_78A = self;
self.melee.var_1046 = 1;
param_00.melee.var_1046 = 1;
self linktoblendtotag(param_00,"tag_sync",1,1);
}
//Function Number: 32
func_1047()
{
if(!func_1051())
{
self.var_101B = gettime() + 1500;
self.var_101C = self.melee.target;
return;
}
var_00 = self.melee.target;
func_1043(var_00);
if(self.melee.winner)
{
self.melee.death = undefined;
var_00.melee.death = 1;
}
else
{
var_00.melee.death = undefined;
self.melee.death = 1;
}
self.melee.var_1049 = var_00;
var_00.melee.var_1049 = self;
if(animscripts/utility::func_C95())
{
maps\_utility::forceuseweapon(self.primaryweapon,"primary");
self.lastweapon = self.primaryweapon;
}
if(var_00 animscripts/utility::func_C95())
{
var_00 maps\_utility::forceuseweapon(var_00.primaryweapon,"primary");
var_00.lastweapon = var_00.primaryweapon;
}
self.melee.weapon = self.weapon;
self.melee.var_104C = animscripts/utility::func_104B();
var_00.melee.weapon = var_00.weapon;
var_00.melee.var_104C = var_00 animscripts/utility::func_104B();
self.melee.var_100E = 1;
var_00 animcustom(::func_1052,::func_1072);
var_00 thread func_104D(self);
self.melee.target = undefined;
func_1052();
}
//Function Number: 33
func_104D(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_104E(param_00,param_01)
{
if(isdefined(param_01) && param_01 <= gettime())
{
return 0;
}
if(!func_1016())
{
return 0;
}
var_02 = self.melee.target;
var_03 = distancesquared(var_02.origin,param_00);
if(self.melee.var_1041)
{
var_04 = 256;
}
else
{
var_04 = 1296;
}
if(var_03 > var_04)
{
return 0;
}
self.melee.startpos = var_02.origin + self.melee.var_1042;
if(!func_1013())
{
return 0;
}
return 1;
}
//Function Number: 35
func_104F(param_00)
{
var_01 = distancesquared((self.origin[0],self.origin[1],0),(self.melee.startpos[0],self.melee.startpos[1],0));
if(var_01 < 64 && abs(self.melee.startpos[2] - self.origin[2]) < 64)
{
return 1;
}
var_02 = distancesquared((param_00[0],param_00[1],0),(self.melee.startpos[0],self.melee.startpos[1],0));
var_03 = distancesquared((self.origin[0],self.origin[1],0),(self.melee.target.origin[0],self.melee.target.origin[1],0));
if(var_02 > var_03 && abs(self.melee.target.origin[2] - self.origin[2]) < 64)
{
return 1;
}
return 0;
}
//Function Number: 36
func_1050(param_00)
{
func_101F();
if(self.melee.var_1041)
{
self forceteleport(self.melee.startpos,self.melee.var_103B);
wait 0.05;
}
else
{
self orientmode("face angle",self.melee.var_103B[1]);
wait 0.05;
}
return func_104E(param_00);
}
//Function Number: 37
func_1051()
{
if(!func_1016())
{
return 0;
}
func_101D();
self clearanim(%body,0.2);
self setanimknoball(animscripts/run::func_FC2(),%body,1,0.2);
self animmode("zonly_physics");
self.var_766 = 1;
var_00 = gettime() + 1500;
var_01 = self.melee.target.origin;
while(func_104E(var_01,var_00))
{
if(func_104F(var_01))
{
return func_1050(var_01);
}
self orientmode("face point",self.melee.startpos);
wait 0.05;
}
func_101F();
return 0;
}
//Function Number: 38
func_1052()
{
self endon("killanimscript");
self endon("end_melee");
self notify("melee_aivsai_execute");
self animmode("zonly_physics");
self.a.var_D19 = "none";
self.var_D4B = undefined;
thread func_105C();
thread func_105F();
if(isdefined(self.melee.var_103E))
{
self orientmode("face angle",self.melee.var_103E);
}
else
{
self orientmode("face current");
}
self.a.pose = "stand";
self clearanim(%body,0.2);
if(isdefined(self.melee.death))
{
func_1054();
}
self setflaggedanimknoballrestart("meleeAnim",self.melee.animname,%body,1,0.2);
var_00 = animscripts/shared::donotetracks("meleeAnim",::func_1068);
if(var_00 == "melee_death" && isdefined(self.melee.var_1053))
{
func_105A();
self setflaggedanimknoballrestart("meleeAnim",self.melee.var_1033,%body,1,0.2);
var_00 = animscripts/shared::donotetracks("meleeAnim",::func_1068);
}
if(isdefined(self.melee) && isdefined(self.melee.death))
{
self kill();
}
self.var_766 = 0;
}
//Function Number: 39
func_1054()
{
self.melee.var_1055 = self.allowpain;
self.melee.var_1056 = self.flashbangimmunity;
maps\_utility::disable_pain();
maps\_utility::setflashbangimmunity(1);
}
//Function Number: 40
func_1059()
{
return isdefined(self.melee.weapon) && self.melee.weapon != "none" && self.weapon != self.melee.weapon;
}
//Function Number: 41
func_105A()
{
if(self.weapon != "none" && self.lastweapon != "none")
{
return;
}
if(!isdefined(self.melee.weapon) || self.melee.weapon == "none")
{
return;
}
maps\_utility::forceuseweapon(self.melee.weapon,self.melee.var_104C);
if(isdefined(self.melee.var_105B))
{
self.melee.var_105B delete();
self.melee.var_105B = undefined;
}
}
//Function Number: 42
func_105C()
{
self endon("killanimscript");
self endon("end_melee");
self waittill("weapon_dropped",var_00);
if(isdefined(var_00))
{
self.melee.var_105B = var_00;
}
}
//Function Number: 43
func_105D()
{
if(!isdefined(self.melee.var_1033))
{
return 0;
}
if(!isdefined(self.melee.var_105E))
{
return 0;
}
return 1;
}
//Function Number: 44
func_105F()
{
self endon("killanimscript");
self endon("end_melee");
self waittill("partner_end_melee");
if(isdefined(self.melee.death))
{
if(isdefined(self.melee.var_1060) || isdefined(self.melee.var_1061))
{
self kill();
return;
}
self.melee.death = undefined;
if(func_105D())
{
self.melee.var_1053 = 1;
return;
}
self notify("end_melee");
return;
}
if(!isdefined(self.melee.var_1062))
{
self notify("end_melee");
}
}
//Function Number: 45
func_1063()
{
if(!isdefined(self.melee.var_1046))
{
return;
}
if(isdefined(self.var_78A))
{
self.var_78A func_1064();
}
func_1064();
}
//Function Number: 46
func_1064()
{
self unlink();
self.var_78A = undefined;
if(!isalive(self))
{
return;
}
self.melee.var_1046 = undefined;
self animmode("zonly_physics");
self orientmode("face angle",self.angles[1]);
}
//Function Number: 47
func_1065()
{
func_1063();
self.melee.var_1062 = 1;
if(isdefined(self.melee.var_1049) && isdefined(self.melee.var_1049.melee))
{
self.melee.var_1049.melee.var_1062 = 1;
}
}
//Function Number: 48
func_1066()
{
if(animhasnotetrack(self.melee.animname,"melee_death"))
{
return 0;
}
return isdefined(self.melee.death);
}
//Function Number: 49
func_1067(param_00)
{
if(isdefined(param_00) && param_00)
{
self.melee.var_1061 = 1;
return;
}
self.melee.var_1060 = 1;
}
//Function Number: 50
func_1068(param_00)
{
if(issubstr(param_00,"ps_"))
{
var_01 = getsubstr(param_00,3);
self playsound(var_01);
return;
}
if(var_01 == "sync")
{
if(isdefined(self.melee.var_1044))
{
func_1045(self.melee.var_1044);
self.melee.var_1044 = undefined;
return;
}
return;
}
if(var_01 == "unsync")
{
func_1065();
if(func_1066())
{
func_1067();
return;
}
return;
}
if(var_01 == "melee_interact")
{
self.melee.var_105E = 1;
return;
}
if(var_01 == "melee_death")
{
if(isdefined(self.melee.var_1053))
{
return var_01;
}
func_1067();
if(isdefined(self.melee.var_1060))
{
return var_01;
}
return;
}
if(var_01 == "attach_knife")
{
self attach("weapon_parabolic_knife","TAG_INHAND",1);
self.melee.var_1069 = 1;
return;
}
if(var_01 == "detach_knife")
{
self detach("weapon_parabolic_knife","TAG_INHAND",1);
self.melee.var_1069 = undefined;
return;
}
if(var_01 == "stab")
{
self playsound("melee_knife_hit_body");
playfxontag(level._effect["melee_knife_ai"],self,"TAG_KNIFE_FX");
if(isdefined(self.melee.var_1049) && isdefined(self.melee.var_1049.melee))
{
self.melee.var_1049 func_1067(1);
return;
}
return;
}
}
//Function Number: 51
func_106A()
{
self endon("end_melee");
animscripts/shared::func_D73();
return 0;
}
//Function Number: 52
func_106B()
{
self endon("end_melee");
animscripts/notetracks::func_106C("meleeAnim",10);
animscripts/shared::func_D73();
self startragdoll();
return 1;
}
//Function Number: 53
func_106D()
{
if(!isalive(self) && isdefined(self.melee.death))
{
if(isdefined(self.melee.var_1060))
{
self.deathfunction = ::func_106B;
return;
}
self.deathfunction = ::func_106A;
}
}
//Function Number: 54
func_106E()
{
if(!isalive(self))
{
return;
}
if(isdefined(self.melee.var_101E))
{
func_101F();
}
var_00 = self getdroptofloorposition();
if(isdefined(var_00))
{
self forceteleport(var_00,self.angles);
}
}
//Function Number: 55
func_106F()
{
if(isdefined(self.melee.var_1069))
{
self detach("weapon_parabolic_knife","TAG_INHAND",1);
}
if(isalive(self))
{
func_105A();
}
}
//Function Number: 56
func_1070()
{
if(isdefined(self.melee.var_1055))
{
if(self.melee.var_1055)
{
maps\_utility::enable_pain();
}
else
{
maps\_utility::disable_pain();
}
}
if(isdefined(self.melee.var_1056))
{
maps\_utility::setflashbangimmunity(self.melee.var_1056);
}
}
//Function Number: 57
func_1072()
{
func_1063();
func_106D();
func_106E();
func_106F();
func_1070();
if(isdefined(self.melee.var_1049))
{
self.melee.var_1049 notify("partner_end_melee");
}
func_1074(self.melee.target);
}
//Function Number: 58
func_1073(param_00)
{
if(isdefined(self.melee))
{
return 0;
}
if(isdefined(param_00.melee))
{
return 0;
}
self.melee = spawnstruct();
param_00.melee = spawnstruct();
return 1;
}
//Function Number: 59
func_1074(param_00)
{
self.melee = undefined;
if(isdefined(param_00))
{
param_00.melee = undefined;
}
}