/******************************************************************* * 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); }