mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-10 18:27:57 -05:00
955 lines
20 KiB
Plaintext
955 lines
20 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: scripts\asm\slasher\slasher_asm.gsc
|
|
* Game: Call of Duty: Infinite Warfare
|
|
* Platform: PC
|
|
* Function Count: 58
|
|
* Decompile Time: 3073 ms
|
|
* Timestamp: 10/27/2023 12:02:12 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
slasherinit(param_00,param_01,param_02,param_03)
|
|
{
|
|
lib_0C75::func_13F9A(param_00,param_01,param_02,param_03);
|
|
self.var_71D0 = ::scripts\mp\agents\slasher\slasher_agent::shouldslasherplaypainanim;
|
|
self setscriptablepartstate("slasher_audio","normal");
|
|
}
|
|
|
|
//Function Number: 2
|
|
isvalidslasheraction(param_00)
|
|
{
|
|
switch(param_00)
|
|
{
|
|
case "grenade_throw":
|
|
case "melee_spin":
|
|
case "swipe_attack":
|
|
case "block":
|
|
case "ram_attack":
|
|
case "sawblade_attack":
|
|
case "summon":
|
|
case "teleport":
|
|
case "ground_pound":
|
|
case "taunt":
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 3
|
|
setslasheraction(param_00)
|
|
{
|
|
self.requested_action = param_00;
|
|
}
|
|
|
|
//Function Number: 4
|
|
clearslasheraction()
|
|
{
|
|
self.requested_action = undefined;
|
|
}
|
|
|
|
//Function Number: 5
|
|
issawbladeattackdone(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(!isdefined(self.requested_action))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(self.requested_action != "sawblade_attack")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 6
|
|
shouldendblock(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(!isdefined(self.requested_action) || self.requested_action != "block")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 7
|
|
shouldshootsawblade(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(!isdefined(self.requested_action))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!lib_0A1B::func_291C())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 8
|
|
shouldstopshootingsawblade(param_00,param_01,param_02,param_03)
|
|
{
|
|
return !shouldshootsawblade(param_00,param_01,param_02,param_03);
|
|
}
|
|
|
|
//Function Number: 9
|
|
shouldplayentranceanim(param_00,param_01,param_02,param_03)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 10
|
|
playanimandlookatenemy(param_00,param_01,param_02,param_03)
|
|
{
|
|
thread lib_0C73::func_6A6A(param_01,scripts\mp\agents\slasher\slasher_agent::getenemy());
|
|
var_04 = lib_0A1D::func_2337(param_00,param_01);
|
|
lib_0A1D::func_2365(param_00,param_01,param_02,var_04,1);
|
|
}
|
|
|
|
//Function Number: 11
|
|
isanimdone(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(lib_0A1A::func_232B(param_01,"end"))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(lib_0A1A::func_232B(param_01,"early_end"))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(lib_0A1A::func_232B(param_01,"finish_early"))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(lib_0A1A::func_232B(param_01,"code_move"))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 12
|
|
playtauntanim(param_00,param_01,param_02,param_03)
|
|
{
|
|
self notify("taunt");
|
|
thread lib_0C73::func_6A6A(param_01,scripts\mp\agents\slasher\slasher_agent::getenemy());
|
|
lib_0A1D::func_2364(param_00,param_01,param_02,param_03);
|
|
}
|
|
|
|
//Function Number: 13
|
|
dosummonspawn()
|
|
{
|
|
}
|
|
|
|
//Function Number: 14
|
|
dogroundpounddamage(param_00,param_01)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
self endon(param_00 + "_finished");
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
wait(param_01);
|
|
}
|
|
|
|
var_02 = scripts\mp\agents\slasher\slasher_tunedata::gettunedata();
|
|
foreach(var_04 in level.players)
|
|
{
|
|
if(isalive(var_04))
|
|
{
|
|
if(distancesquared(self.origin,var_04.origin) < var_02.ground_pound_damage_radius_sq)
|
|
{
|
|
lib_0C73::func_5904(var_04,self.ground_pound_damage,"MOD_IMPACT");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
groundpoundnotehandler(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(param_00 == "groundpound")
|
|
{
|
|
dogroundpounddamage();
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
playgroundpound(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
thread dogroundpounddamage(param_01,0.75);
|
|
lib_0A1D::func_2364(param_00,param_01,param_02,param_03);
|
|
}
|
|
|
|
//Function Number: 17
|
|
summonnotehandler(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(param_00 == "start_summon_zombies")
|
|
{
|
|
dosummonspawn();
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
meleenotehandler(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(param_00 == "hit")
|
|
{
|
|
var_04 = scripts\mp\agents\slasher\slasher_agent::getenemy();
|
|
if(isdefined(var_04))
|
|
{
|
|
if(distancesquared(var_04.origin,self.origin) < -25536)
|
|
{
|
|
self notify("attack_hit",var_04);
|
|
lib_0C73::func_5904(var_04,self.var_B601,"MOD_IMPACT");
|
|
}
|
|
else
|
|
{
|
|
self notify("attack_miss",var_04);
|
|
}
|
|
}
|
|
|
|
if(!scripts\common\utility::istrue(self.bmovingmelee))
|
|
{
|
|
self notify("stop_melee_face_enemy");
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "spin_attack_damage_begin")
|
|
{
|
|
thread startspinattackdamage(param_01);
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "spin_attack_damage_end")
|
|
{
|
|
stopspinattackdamage();
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
shouldstartramanim(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(lib_0A1B::func_2953(param_00,param_01,param_02,param_03))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 20
|
|
func_100AD(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(!lib_0A1B::func_298A())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 21
|
|
func_2481(param_00,param_01,param_02)
|
|
{
|
|
self attach(param_01,param_02);
|
|
thread func_5392(param_00,param_01,param_02);
|
|
return param_02;
|
|
}
|
|
|
|
//Function Number: 22
|
|
func_5392(param_00,param_01,param_02)
|
|
{
|
|
self endon("stop grenade check");
|
|
self waittill(param_00 + "_finished");
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self detach(param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 23
|
|
grenadethrownotehandler(param_00,param_01,param_02,param_03)
|
|
{
|
|
switch(param_00)
|
|
{
|
|
case "grenade_right":
|
|
case "grenade_left":
|
|
break;
|
|
|
|
case "grenade_throw":
|
|
if(scripts\common\utility::istrue(self.grenade_thrown))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.grenade_thrown = 1;
|
|
self notify("stop grenade check");
|
|
var_04 = lib_0A1B::func_2930();
|
|
if(isdefined(var_04))
|
|
{
|
|
var_05 = self.var_1B2;
|
|
var_06 = self method_806C(scripts\mp\agents\slasher\slasher_agent::getslashergrenadehandoffset(),var_05,0,"min time","min energy");
|
|
if(isdefined(var_06))
|
|
{
|
|
self method_83C2();
|
|
lib_0A1A::func_232F("grenade_throw","thrown");
|
|
}
|
|
else if(isdefined(self.enemygrenadepos))
|
|
{
|
|
var_06 = self method_806C(scripts\mp\agents\slasher\slasher_agent::getslashergrenadehandoffset(),self.enemygrenadepos,0,"min time","min energy");
|
|
if(isdefined(var_06))
|
|
{
|
|
self method_83C2();
|
|
lib_0A1A::func_232F("grenade_throw","thrown");
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
playgrenadethrowanim(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
scripts\mp\agents\slasher\slasher_agent::lookatslasherenemy();
|
|
lib_0A1D::func_2364(param_00,param_01,param_02,param_03);
|
|
}
|
|
|
|
//Function Number: 25
|
|
grenadethrowterminate(param_00,param_01,param_02)
|
|
{
|
|
self.grenade_thrown = undefined;
|
|
}
|
|
|
|
//Function Number: 26
|
|
shouldabortaction(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(scripts\common\utility::istrue(self.btraversalteleport))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isdefined(self.requested_action))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(isdefined(param_03))
|
|
{
|
|
if(self.requested_action != param_03)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 27
|
|
shoulddoaction(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(!isdefined(self.requested_action))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.requested_action == param_02)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 28
|
|
firebladeburst(param_00,param_01,param_02)
|
|
{
|
|
self endon(param_00 + "_finished");
|
|
var_03 = scripts\mp\agents\slasher\slasher_tunedata::gettunedata();
|
|
var_04 = randomintrange(var_03.min_burst_count,var_03.max_burst_count);
|
|
for(var_05 = 0;var_05 < var_04;var_05++)
|
|
{
|
|
var_06 = (randomfloatrange(var_03.sawblade_min_offset,var_03.sawblade_max_offset),randomfloatrange(var_03.sawblade_min_offset,var_03.sawblade_max_offset),randomfloatrange(var_03.sawblade_min_offset,var_03.sawblade_max_offset));
|
|
var_07 = magicbullet("iw7_slasher_sawblade_mp",param_01,param_02 + var_06,self);
|
|
var_08 = getdvar("ui_mapname");
|
|
if(var_08 != "cp_final")
|
|
{
|
|
var_07 thread hide_and_show_blade();
|
|
}
|
|
|
|
wait(var_03.sawblade_burst_interval);
|
|
}
|
|
}
|
|
|
|
//Function Number: 29
|
|
fireblades(param_00)
|
|
{
|
|
self endon(param_00 + "_finished");
|
|
wait(0.2);
|
|
var_01 = scripts\mp\agents\slasher\slasher_tunedata::gettunedata();
|
|
for(;;)
|
|
{
|
|
var_02 = scripts\mp\agents\slasher\slasher_agent::getenemy();
|
|
if(isdefined(var_02) && isdefined(self.var_1C2))
|
|
{
|
|
var_03 = self gettagorigin("j_wrist_ri");
|
|
var_04 = self.var_1C2;
|
|
if(randomint(100) < var_01.sawblade_burst_chance)
|
|
{
|
|
self notify("attack_shoot",var_02);
|
|
firebladeburst(param_00,var_03,var_04);
|
|
}
|
|
else
|
|
{
|
|
var_05 = (randomfloatrange(var_01.sawblade_min_offset,var_01.sawblade_max_offset),randomfloatrange(var_01.sawblade_min_offset,var_01.sawblade_max_offset),randomfloatrange(var_01.sawblade_min_offset,var_01.sawblade_max_offset));
|
|
var_06 = magicbullet("iw7_slasher_sawblade_mp",var_03,var_04 + var_05,self);
|
|
var_07 = getdvar("ui_mapname");
|
|
if(var_07 != "cp_final")
|
|
{
|
|
var_06 thread hide_and_show_blade();
|
|
}
|
|
}
|
|
|
|
var_08 = randomfloatrange(var_01.min_sawblade_fire_interval,var_01.max_sawblade_fire_interval);
|
|
wait(var_08);
|
|
continue;
|
|
}
|
|
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 30
|
|
hide_and_show_blade()
|
|
{
|
|
level endon("game_ended");
|
|
self endon("death");
|
|
foreach(var_01 in level.players)
|
|
{
|
|
if(!scripts\common\utility::istrue(var_01.var_DCEB))
|
|
{
|
|
self method_8429(var_01);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 31
|
|
shootsawblades(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
thread fireblades(param_01);
|
|
lib_0A1D::func_2364(param_00,param_01,param_02,param_03);
|
|
}
|
|
|
|
//Function Number: 32
|
|
playanimwithplaybackrate(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
var_04 = param_03;
|
|
var_05 = lib_0A1D::func_2337(param_00,param_01);
|
|
lib_0A1D::func_2365(param_00,param_01,param_02,var_05,var_04);
|
|
}
|
|
|
|
//Function Number: 33
|
|
playblockanim(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
var_04 = vectortoangles(self.damageaccumulator.lastdir * -1);
|
|
var_04 = (0,var_04[1],0);
|
|
self method_8289("face angle abs",var_04);
|
|
self method_8281("anim deltas");
|
|
lib_0A1D::func_2364(param_00,param_01,param_02,param_03);
|
|
}
|
|
|
|
//Function Number: 34
|
|
func_BEA0(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = undefined;
|
|
var_05 = scripts\mp\agents\slasher\slasher_agent::getenemy();
|
|
if(isdefined(self.var_1198.var_FECD) && isdefined(self.var_1198.var_FECD.var_65D3))
|
|
{
|
|
var_04 = self.var_1198.var_FECD.var_65D3.origin;
|
|
}
|
|
else if(isdefined(self.var_1198.var_FECD) && isdefined(self.var_1198.var_FECD.var_D699))
|
|
{
|
|
var_04 = self.var_1198.var_FECD.var_D699;
|
|
}
|
|
else if(isdefined(var_05))
|
|
{
|
|
var_04 = var_05.origin;
|
|
}
|
|
|
|
if(!isdefined(var_04))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_06 = self.angles[1] - vectortoyaw(var_04 - self.origin);
|
|
var_07 = distancesquared(self.origin,var_04);
|
|
if(var_07 < 65536)
|
|
{
|
|
var_08 = sqrt(var_07);
|
|
if(var_08 > 3)
|
|
{
|
|
var_06 = var_06 + asin(-3 / var_08);
|
|
}
|
|
}
|
|
|
|
if(abs(angleclamp180(var_06)) > self.var_129AF)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 35
|
|
func_81DE()
|
|
{
|
|
var_00 = 0.25;
|
|
var_01 = undefined;
|
|
var_02 = undefined;
|
|
if(isdefined(self.var_1198.var_FECD))
|
|
{
|
|
if(isdefined(self.var_1198.var_FECD.var_65D3))
|
|
{
|
|
var_01 = self.var_1198.var_FECD.var_65D3;
|
|
}
|
|
else if(isdefined(self.var_1198.var_FECD.var_D699))
|
|
{
|
|
var_02 = self.var_1198.var_FECD.var_D699;
|
|
}
|
|
}
|
|
|
|
var_03 = scripts\mp\agents\slasher\slasher_agent::getenemy();
|
|
if(isdefined(var_03))
|
|
{
|
|
if(!isdefined(var_01) && !isdefined(var_02))
|
|
{
|
|
var_01 = var_03;
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_01) && !issentient(var_01))
|
|
{
|
|
var_00 = 1.5;
|
|
}
|
|
|
|
var_04 = scripts\common\utility::func_8094(var_00,var_01,var_02);
|
|
return var_04;
|
|
}
|
|
|
|
//Function Number: 36
|
|
func_3F0A(param_00,param_01,param_02)
|
|
{
|
|
var_03 = func_81DE();
|
|
if(var_03 < 0)
|
|
{
|
|
var_04 = "right";
|
|
}
|
|
else
|
|
{
|
|
var_04 = "left";
|
|
}
|
|
|
|
var_03 = abs(var_03);
|
|
var_05 = 0;
|
|
if(var_03 > 157.5)
|
|
{
|
|
var_05 = 180;
|
|
}
|
|
else if(var_03 > 112.5)
|
|
{
|
|
var_05 = 135;
|
|
}
|
|
else if(var_03 > 67.5)
|
|
{
|
|
var_05 = 90;
|
|
}
|
|
else
|
|
{
|
|
var_05 = 45;
|
|
}
|
|
|
|
var_06 = var_04 + "_" + var_05;
|
|
var_07 = lib_0A1A::func_2358(param_01,var_06);
|
|
var_08 = self method_8101(param_01,var_07);
|
|
return var_07;
|
|
}
|
|
|
|
//Function Number: 37
|
|
func_D56A(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
var_04 = lib_0A1D::func_2337(param_00,param_01);
|
|
var_05 = self.var_233;
|
|
self method_8289("face angle abs",self.angles);
|
|
self method_8281("anim deltas");
|
|
lib_0A1D::func_2365(param_00,param_01,param_02,var_04);
|
|
if(!isdefined(var_05) && isdefined(self.var_233))
|
|
{
|
|
self method_841F();
|
|
}
|
|
|
|
lib_0A1D::func_237F("face current");
|
|
lib_0A1D::func_237E("code_move");
|
|
}
|
|
|
|
//Function Number: 38
|
|
doramattackdamage(param_00)
|
|
{
|
|
param_00 endon("death");
|
|
if(scripts\common\utility::istrue(self.bramattackdamageoccured))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = vectornormalize(self getvelocity());
|
|
var_02 = scripts\mp\agents\slasher\slasher_tunedata::gettunedata();
|
|
self.bramattackdamageoccured = 1;
|
|
param_00 method_84DC(var_01,var_02.ram_attack_push);
|
|
wait(0.2);
|
|
var_03 = int(var_02.ram_attack_damage / 100 * param_00.maxhealth);
|
|
lib_0C73::func_5904(param_00,var_03,"MOD_IMPACT");
|
|
}
|
|
|
|
//Function Number: 39
|
|
ramattacknotehandler(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(param_00 == "hit")
|
|
{
|
|
if(isdefined(self.var_4B26))
|
|
{
|
|
var_04 = scripts\mp\agents\slasher\slasher_tunedata::gettunedata();
|
|
var_05 = distancesquared(self.origin,self.var_4B26.origin);
|
|
if(var_05 < var_04.ram_attack_melee_dist_sq && lib_0C73::func_9DD7(self.var_4B26,var_04.ram_attack_dot))
|
|
{
|
|
thread doramattackdamage(self.var_4B26);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 40
|
|
handleramattackprocessing(param_00,param_01,param_02)
|
|
{
|
|
self endon(param_00 + "_finished");
|
|
if(!isdefined(param_01))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self setscriptablepartstate("slasher_audio","charge");
|
|
var_03 = 1;
|
|
var_04 = scripts\mp\agents\slasher\slasher_tunedata::gettunedata();
|
|
self notify("attack_charge");
|
|
for(;;)
|
|
{
|
|
var_05 = distance2dsquared(self.origin,param_01.origin);
|
|
if(var_03 && var_05 > var_04.ram_attack_go_straight_radius_sq)
|
|
{
|
|
var_06 = param_01 getvelocity();
|
|
var_07 = param_01.origin + var_06 * 0.15;
|
|
var_08 = var_07 - self.origin;
|
|
var_08 = (var_08[0],var_08[1],0);
|
|
var_08 = vectornormalize(var_08);
|
|
self method_8289("face angle abs",vectortoangles(var_08));
|
|
}
|
|
else if(var_03)
|
|
{
|
|
var_03 = 0;
|
|
}
|
|
|
|
if(param_02 && var_05 < var_04.ram_attack_collision_dist_sq)
|
|
{
|
|
if(lib_0C73::func_9DD7(param_01,var_04.ram_attack_dot))
|
|
{
|
|
thread doramattackdamage(param_01);
|
|
break;
|
|
}
|
|
}
|
|
|
|
scripts\common\utility::func_136F7();
|
|
if(!isdefined(param_01) || !isalive(param_01))
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
self setscriptablepartstate("slasher_audio","normal");
|
|
}
|
|
|
|
//Function Number: 41
|
|
playramattackanim(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
thread handleramattackprocessing(param_01,self.var_4B26,0);
|
|
playanimwithplaybackrate(param_00,param_01,param_02,param_03);
|
|
self setscriptablepartstate("slasher_audio","normal");
|
|
}
|
|
|
|
//Function Number: 42
|
|
playramattackloop(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
thread handleramattackprocessing(param_01,self.var_4B26,1);
|
|
playanimwithplaybackrate(param_00,param_01,param_02,param_03);
|
|
}
|
|
|
|
//Function Number: 43
|
|
playmeleeattack(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
thread lib_0C73::func_6A6A(param_01,self.var_4B26);
|
|
var_04 = lib_0A1D::func_2337(param_00,param_01);
|
|
lib_0A1D::func_2365(param_00,param_01,param_02,var_04);
|
|
}
|
|
|
|
//Function Number: 44
|
|
playmeleespinattack(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
thread lib_0C73::func_6A6A(param_01,self.var_4B26);
|
|
var_04 = lib_0A1D::func_2337(param_00,param_01);
|
|
lib_0A1D::func_2365(param_00,param_01,param_02,var_04);
|
|
}
|
|
|
|
//Function Number: 45
|
|
startspinattackdamage(param_00)
|
|
{
|
|
self endon(param_00 + "_finished");
|
|
self endon("StopSpinAttackDamage");
|
|
var_01 = [];
|
|
var_02 = scripts\mp\agents\slasher\slasher_tunedata::gettunedata();
|
|
for(;;)
|
|
{
|
|
var_03 = self gettagangles("tag_eye");
|
|
var_03 = (0,var_03[1],0);
|
|
var_04 = anglestoforward(var_03);
|
|
foreach(var_06 in level.players)
|
|
{
|
|
if(lib_0F74::func_1002C(var_06))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isalive(var_06))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_07 = distance2dsquared(var_06.origin,self.origin);
|
|
if(var_07 > var_02.slasher_spin_damage_range_sq)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_08 = var_01[var_06 getentitynumber()];
|
|
if(isdefined(var_08))
|
|
{
|
|
if(gettime() - var_08 < 250)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
var_09 = abs(var_06.origin[2] - self.origin[2]);
|
|
if(var_09 > 64)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_0A = var_06.origin - self.origin * (1,1,0);
|
|
var_0B = vectornormalize(var_0A);
|
|
var_0C = vectordot(var_0B,var_04);
|
|
if(var_0C < 0.966)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01[var_06 getentitynumber()] = gettime();
|
|
lib_0C73::func_5904(var_06,var_02.slasher_spin_damage_amt,"MOD_IMPACT");
|
|
}
|
|
|
|
scripts\common\utility::func_136F7();
|
|
}
|
|
}
|
|
|
|
//Function Number: 46
|
|
stopspinattackdamage()
|
|
{
|
|
self notify("StopSpinAttackDamage");
|
|
}
|
|
|
|
//Function Number: 47
|
|
slasherplaysharpturnanim(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
lib_0A1A::func_237B(1.5);
|
|
lib_0F3B::func_D514(param_00,param_01,param_02,param_03);
|
|
lib_0A1A::func_237B(1);
|
|
}
|
|
|
|
//Function Number: 48
|
|
slashershouldstartarrival(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = scripts\mp\agents\slasher\slasher_agent::getenemy();
|
|
if(isdefined(var_04))
|
|
{
|
|
var_05 = distancesquared(self.origin,var_04.origin);
|
|
if(var_05 < 65536)
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return lib_0C75::func_10092(param_00,param_01,param_02,param_03);
|
|
}
|
|
|
|
//Function Number: 49
|
|
choosemeleeattack(param_00,param_01,param_02)
|
|
{
|
|
if(lib_0A1B::func_2955())
|
|
{
|
|
var_03 = lib_0A1A::func_2358(param_01,"attack_moving");
|
|
}
|
|
else
|
|
{
|
|
var_03 = lib_0A1A::func_2358(param_02,"attack");
|
|
}
|
|
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 50
|
|
func_3EE4(param_00,param_01,param_02)
|
|
{
|
|
return lib_0F3C::func_3EF4(param_00,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 51
|
|
playmovingpainanim(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
if(!isdefined(self.var_233) || self method_841E() < scripts\mp\agents\slasher\slasher_tunedata::gettunedata().min_moving_pain_dist)
|
|
{
|
|
var_04 = func_3EE4(param_00,"pain_generic",param_03);
|
|
self method_8289("face angle abs",self.angles);
|
|
lib_0A1D::func_2365(param_00,"pain_generic",param_02,var_04,1);
|
|
return;
|
|
}
|
|
|
|
lib_0A1D::func_2364(param_01,param_02,param_03,var_04);
|
|
}
|
|
|
|
//Function Number: 52
|
|
playteleportout(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon(param_01 + "_finished");
|
|
var_04 = lib_0A1D::func_2337(param_00,param_01);
|
|
var_05 = scripts\mp\agents\slasher\slasher_agent::getenemy();
|
|
self setscriptablepartstate("teleport","hide");
|
|
if(soundexists("slasher_teleport_in"))
|
|
{
|
|
play_teleport_sound_to_players("slasher_teleport_in");
|
|
}
|
|
|
|
wait(0.1);
|
|
self hide();
|
|
self setorigin(self.teleportpos,0);
|
|
if(isdefined(var_05))
|
|
{
|
|
self.angles = vectortoangles(var_05.origin - self.origin);
|
|
}
|
|
|
|
self.teleportpos = undefined;
|
|
self method_8286(self.origin);
|
|
self method_841F();
|
|
thread showmelater();
|
|
if(!scripts\common\utility::istrue(self.btraversalteleport))
|
|
{
|
|
scripts\mp\agents\slasher\slasher_agent::lookatslasherenemy();
|
|
}
|
|
|
|
lib_0A1D::func_2365(param_00,param_01,param_02,var_04,1.5);
|
|
if(scripts\common\utility::istrue(self.btraversalteleport))
|
|
{
|
|
self.var_9CEC = undefined;
|
|
self.btraversalteleport = undefined;
|
|
self notify("traverse_end");
|
|
lib_0A1A::func_237C("decide_idle",param_03);
|
|
}
|
|
}
|
|
|
|
//Function Number: 53
|
|
showmelater()
|
|
{
|
|
wait(0.1);
|
|
if(soundexists("slasher_teleport_out"))
|
|
{
|
|
play_teleport_sound_to_players("slasher_teleport_out");
|
|
}
|
|
|
|
self setscriptablepartstate("teleport","show");
|
|
self show();
|
|
}
|
|
|
|
//Function Number: 54
|
|
play_teleport_sound_to_players(param_00)
|
|
{
|
|
foreach(var_02 in level.players)
|
|
{
|
|
if(!self method_85B8() || scripts\common\utility::istrue(var_02.var_DCEB))
|
|
{
|
|
self playsoundtoplayer(param_00,var_02);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 55
|
|
ontraversalteleport(param_00,param_01,param_02,param_03)
|
|
{
|
|
self.teleportpos = self method_8146();
|
|
self.btraversalteleport = 1;
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 56
|
|
ram_attack_anim_terminate(param_00,param_01,param_02)
|
|
{
|
|
self setscriptablepartstate("slasher_audio","normal");
|
|
}
|
|
|
|
//Function Number: 57
|
|
ram_attack_start_terminate(param_00,param_01,param_02)
|
|
{
|
|
self setscriptablepartstate("slasher_audio","normal");
|
|
}
|
|
|
|
//Function Number: 58
|
|
ram_attack_loop_terminate(param_00,param_01,param_02)
|
|
{
|
|
self setscriptablepartstate("slasher_audio","normal");
|
|
} |