1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-08 22:31:36 -05:00
BO2-Reimagined/scripts/zm/replaced/_zm_weap_tomahawk.gsc
2023-12-29 20:09:46 -08:00

155 lines
3.6 KiB
Plaintext

#include maps\mp\zombies\_zm_weap_tomahawk;
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm_net;
#include maps\mp\zombies\_zm_weapons;
#include maps\mp\zombies\_zm_score;
#include maps\mp\zombies\_zm_stats;
calculate_tomahawk_damage(n_target_zombie, n_tomahawk_power, tomahawk)
{
if (self.current_tomahawk_weapon == "upgraded_tomahawk_zm")
{
return n_target_zombie.health + 1;
}
else
{
return 2000;
}
}
get_grenade_charge_power(player)
{
player endon("disconnect");
if (self.n_cookedtime >= 1000 && self.n_cookedtime < 2000)
{
return 3;
}
else if (self.n_cookedtime >= 2000 && self.n_cookedtime < 3000)
{
return 6;
}
else if (self.n_cookedtime >= 3000)
{
if (player.current_tomahawk_weapon != "upgraded_tomahawk_zm")
{
return 6;
}
else
{
return 9;
}
}
return 1;
}
tomahawk_attack_zombies(m_tomahawk, a_zombies)
{
self endon("disconnect");
if (!isdefined(a_zombies))
{
self thread tomahawk_return_player(m_tomahawk, 0);
return;
}
n_attack_limit = m_tomahawk.n_grenade_charge_power - 1;
if (a_zombies.size <= n_attack_limit)
n_attack_limit = a_zombies.size;
for (i = 0; i < n_attack_limit; i++)
{
if (isdefined(a_zombies[i]) && isalive(a_zombies[i]))
{
tag = "J_Head";
if (a_zombies[i].isdog)
tag = "J_Spine1";
if (isdefined(a_zombies[i].hit_by_tomahawk) && !a_zombies[i].hit_by_tomahawk)
{
v_target = a_zombies[i] gettagorigin(tag);
m_tomahawk moveto(v_target, 0.3);
m_tomahawk waittill("movedone");
if (isdefined(a_zombies[i]) && isalive(a_zombies[i]))
{
if (self.current_tactical_grenade == "upgraded_tomahawk_zm")
playfxontag(level._effect["tomahawk_impact_ug"], a_zombies[i], tag);
else
playfxontag(level._effect["tomahawk_impact"], a_zombies[i], tag);
playfxontag(level._effect["tomahawk_fire_dot"], a_zombies[i], "j_spineupper");
a_zombies[i] setclientfield("play_tomahawk_hit_sound", 1);
n_tomahawk_damage = calculate_tomahawk_damage(a_zombies[i], m_tomahawk.n_grenade_charge_power, m_tomahawk);
a_zombies[i] dodamage(n_tomahawk_damage, m_tomahawk.origin, self, m_tomahawk, "none", "MOD_GRENADE", 0, "bouncing_tomahawk_zm");
a_zombies[i].hit_by_tomahawk = 1;
self maps\mp\zombies\_zm_score::add_to_player_score(10);
}
}
}
wait 0.2;
}
self thread tomahawk_return_player(m_tomahawk, n_attack_limit);
}
tomahawk_return_player(m_tomahawk, num_zombie_hit = 5)
{
self endon("disconnect");
n_dist = distance2dsquared(m_tomahawk.origin, self.origin);
n_attack_limit = m_tomahawk.n_grenade_charge_power - 1;
while (n_dist > 4096)
{
m_tomahawk moveto(self geteye(), 0.25);
if (num_zombie_hit < n_attack_limit)
{
self tomahawk_check_for_zombie(m_tomahawk);
num_zombie_hit++;
}
wait 0.1;
n_dist = distance2dsquared(m_tomahawk.origin, self geteye());
}
if (isdefined(m_tomahawk.a_has_powerup))
{
foreach (powerup in m_tomahawk.a_has_powerup)
{
if (isdefined(powerup))
powerup.origin = self.origin;
}
}
m_tomahawk delete();
if (self.current_tactical_grenade == self.current_tomahawk_weapon)
{
self playsoundtoplayer("wpn_tomahawk_catch_plr", self);
self playsound("wpn_tomahawk_catch_npc");
}
wait 5;
if (self.current_tactical_grenade == self.current_tomahawk_weapon)
{
self playsoundtoplayer("wpn_tomahawk_cooldown_done", self);
self givemaxammo(self.current_tomahawk_weapon);
self setclientfieldtoplayer("tomahawk_in_use", 3);
}
a_zombies = getaispeciesarray("axis", "all");
foreach (ai_zombie in a_zombies)
{
ai_zombie.hit_by_tomahawk = 0;
}
}