Con este código se mejora mule kick para que al volverlo a beber después de ser derribado, puedas recuperar tu tercer arma, además, al tener activo el perk tienes un 25% de probabilidad de no usar munición de la reserva al recargar y un 50% de probabilidad de no gastar granadas al lanzarla.
This code enhances “Mule Kick” so that when you drink it again after being knocked down, you can recover your third weapon. Additionally, while the perk is active, you have a 25% chance of not using reserve ammo when reloading and a 50% chance of not using a grenade when throwing it.
#include maps\mp\zombies\_zm_utility;
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\zombies\_zm_weapons;
init()
{
level thread on_player_connect();
}
on_player_connect()
{
for(;;)
{
level waittill("connected", player);
player thread monitor_mulekick_perk();
player thread monitor_mulekick_grenades();
player thread monitor_mulekick_reload();
}
}
monitor_mulekick_perk()
{
self endon("disconnect");
self.saved_mule_weapon = "none";
self.saved_mule_clip = 0;
self.saved_mule_stock = 0;
for(;;)
{
self waittill_any("perk_acquired", "perk_lost");
if (self HasPerk("specialty_additionalprimaryweapon"))
{
if (self.saved_mule_weapon != "none")
{
if (maps\mp\zombies\_zm_weapons::is_weapon_upgraded(self.saved_mule_weapon))
{
options = self maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options(self.saved_mule_weapon);
self GiveWeapon(self.saved_mule_weapon, 0, options);
}
else
{
self GiveWeapon(self.saved_mule_weapon);
}
self SetWeaponAmmoClip(self.saved_mule_weapon, self.saved_mule_clip);
self SetWeaponAmmoStock(self.saved_mule_weapon, self.saved_mule_stock);
self.saved_mule_weapon = "none";
}
self thread track_mule_inventory();
}
else
{
self notify("stop_mule_tracking");
if (self.saved_mule_weapon != "none" && self HasWeapon(self.saved_mule_weapon))
{
self TakeWeapon(self.saved_mule_weapon);
}
}
}
}
track_mule_inventory()
{
self endon("disconnect");
self endon("stop_mule_tracking");
for(;;)
{
weapons = self GetWeaponsListPrimaries();
if (weapons.size > 2)
{
self.saved_mule_weapon = weapons[2];
self.saved_mule_clip = self GetWeaponAmmoClip(weapons[2]);
self.saved_mule_stock = self GetWeaponAmmoStock(weapons[2]);
}
wait 0.5;
}
}
monitor_mulekick_grenades()
{
self endon("disconnect");
for(;;)
{
self waittill("grenade_fire", grenade, weap);
if (self HasPerk("specialty_additionalprimaryweapon"))
{
if (RandomInt(100) < 50)
{
ammo = self GetWeaponAmmoClip(weap);
self SetWeaponAmmoClip(weap, ammo + 1);
}
}
}
}
monitor_mulekick_reload()
{
self endon("disconnect");
prev_stock = 0;
prev_weap = "none";
for(;;)
{
weap = self GetCurrentWeapon();
stock = self GetWeaponAmmoStock(weap);
if (weap == prev_weap && stock < prev_stock)
{
if (self HasPerk("specialty_additionalprimaryweapon"))
{
if (RandomInt(100) < 25)
{
self SetWeaponAmmoStock(weap, prev_stock);
stock = prev_stock;
}
}
}
prev_weap = weap;
prev_stock = stock;
wait 0.05;
}
}