1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-07 21:59:49 -05:00
2023-12-16 21:11:47 -08:00

117 lines
2.5 KiB
Plaintext

#include maps\mp\animscripts\zm_melee;
#include common_scripts\utility;
#include maps\mp\animscripts\shared;
#include maps\mp\animscripts\utility;
#include maps\mp\animscripts\zm_utility;
#include maps\mp\animscripts\zm_combat;
meleecombat()
{
self endon("end_melee");
self endon("killanimscript");
assert(canmeleeanyrange());
self orientmode("face enemy");
if (is_true(self.sliding_on_goo))
self animmode("slide");
else
self animmode("zonly_physics");
for (;;)
{
if (isdefined(self.marked_for_death))
return;
if (isdefined(self.enemy))
{
angles = vectortoangles(self.enemy.origin - self.origin);
self orientmode("face angle", angles[1]);
}
if (isdefined(self.zmb_vocals_attack))
self playsound(self.zmb_vocals_attack);
if (isdefined(self.nochangeduringmelee) && self.nochangeduringmelee)
self.safetochangescript = 0;
if (isdefined(self.is_inert) && self.is_inert)
return;
set_zombie_melee_anim_state(self);
if (isdefined(self.melee_anim_func))
self thread [[self.melee_anim_func]]();
while (true)
{
self waittill("melee_anim", note);
if (note == "end")
break;
else if (note == "fire")
{
if (!isdefined(self.enemy))
break;
if (isdefined(self.dont_die_on_me) && self.dont_die_on_me)
break;
if (is_true(self.enemy.zombie_vars["zombie_powerup_zombie_blood_on"]))
break;
self.enemy notify("melee_swipe", self);
oldhealth = self.enemy.health;
self melee();
if (!isdefined(self.enemy))
break;
if (self.enemy.health >= oldhealth)
{
if (isdefined(self.melee_miss_func))
self [[self.melee_miss_func]]();
else if (isdefined(level.melee_miss_func))
self [[level.melee_miss_func]]();
}
}
else if (note == "stop")
{
if (!cancontinuetomelee())
break;
}
}
if (is_true(self.sliding_on_goo))
self orientmode("face enemy");
else
self orientmode("face default");
if (isdefined(self.nochangeduringmelee) && self.nochangeduringmelee || is_true(self.sliding_on_goo))
{
if (isdefined(self.enemy))
{
dist_sq = distancesquared(self.origin, self.enemy.origin);
if (dist_sq > self.meleeattackdist * self.meleeattackdist)
{
self.safetochangescript = 1;
wait 0.1;
break;
}
}
else
{
self.safetochangescript = 1;
wait 0.1;
break;
}
}
}
if (is_true(self.sliding_on_goo))
self animmode("slide");
else
self animmode("none");
self thread maps\mp\animscripts\zm_combat::main();
}