mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-11 02:37:56 -05:00
1564 lines
26 KiB
Plaintext
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;
|
|
}
|
|
} |