1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-13 08:38:01 -05:00

Mule Kick: move weapon slot update into separate function

Mule Kick: update weapon slots right before taking additional weapon
Mule Kick: update weapon slots if player does not have Mule Kick
Mule Kick: don't update weapon slots if player is spectating
This commit is contained in:
Jbleezy
2024-01-27 15:56:32 -08:00
parent 82b4d369b0
commit d04d6277af
2 changed files with 100 additions and 62 deletions

View File

@ -2637,18 +2637,14 @@ additionalprimaryweapon_indicator()
vars = []; vars = [];
vars["prev_weapon_name"] = ""; vars["prev_weapon_name"] = "";
self.weapon_slots = [];
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined;
while (1) while (1)
{ {
wait 0.05; wait 0.05;
if (!self hasPerk("specialty_additionalprimaryweapon")) if (self.sessionstate == "spectator")
{ {
if (vars["prev_weapon_name"] != "") if (vars["prev_weapon_name"] != "")
{ {
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined;
self setClientDvar("additionalPrimaryWeaponName", ""); self setClientDvar("additionalPrimaryWeaponName", "");
vars["prev_weapon_name"] = ""; vars["prev_weapon_name"] = "";
} }
@ -2656,14 +2652,58 @@ additionalprimaryweapon_indicator()
continue; continue;
} }
vars["primary_weapons_that_can_be_taken"] = []; self additionalprimaryweapon_update_weapon_slots();
vars["primaryweapons"] = self getweaponslistprimaries();
for (i = 0; i < vars["primaryweapons"].size; i++) if (!self hasPerk("specialty_additionalprimaryweapon"))
{ {
if (maps\mp\zombies\_zm_weapons::is_weapon_included(vars["primaryweapons"][i]) || maps\mp\zombies\_zm_weapons::is_weapon_upgraded(vars["primaryweapons"][i])) if (vars["prev_weapon_name"] != "")
{ {
vars["primary_weapons_that_can_be_taken"][vars["primary_weapons_that_can_be_taken"].size] = vars["primaryweapons"][i]; self setClientDvar("additionalPrimaryWeaponName", "");
vars["prev_weapon_name"] = "";
}
continue;
}
vars["weapon"] = self.weapon_to_take_by_losing_specialty_additionalprimaryweapon;
if (!isDefined(vars["weapon"]))
{
if (vars["prev_weapon_name"] != "")
{
self setClientDvar("additionalPrimaryWeaponName", "");
vars["prev_weapon_name"] = "";
}
continue;
}
vars["weapon_name"] = getweapondisplayname(vars["weapon"]);
if (vars["prev_weapon_name"] != vars["weapon_name"])
{
self setClientDvar("additionalPrimaryWeaponName", vars["weapon_name"]);
vars["prev_weapon_name"] = vars["weapon_name"];
}
}
}
additionalprimaryweapon_update_weapon_slots()
{
if (!isDefined(self.weapon_slots))
{
self.weapon_slots = [];
}
vars = [];
vars["primaries_that_can_be_taken"] = [];
vars["primaries"] = self getweaponslistprimaries();
for (i = 0; i < vars["primaries"].size; i++)
{
if (maps\mp\zombies\_zm_weapons::is_weapon_included(vars["primaries"][i]) || maps\mp\zombies\_zm_weapons::is_weapon_upgraded(vars["primaries"][i]))
{
vars["primaries_that_can_be_taken"][vars["primaries_that_can_be_taken"].size] = vars["primaries"][i];
} }
} }
@ -2686,9 +2726,9 @@ additionalprimaryweapon_indicator()
arrayRemoveIndex(self.weapon_slots[i], i); arrayRemoveIndex(self.weapon_slots[i], i);
} }
for (i = 0; i < vars["primary_weapons_that_can_be_taken"].size; i++) for (i = 0; i < vars["primaries_that_can_be_taken"].size; i++)
{ {
vars["weapon"] = vars["primary_weapons_that_can_be_taken"][i]; vars["weapon"] = vars["primaries_that_can_be_taken"][i];
if (!isInArray(self.weapon_slots, vars["weapon"])) if (!isInArray(self.weapon_slots, vars["weapon"]))
{ {
@ -2711,27 +2751,23 @@ additionalprimaryweapon_indicator()
} }
} }
if (vars["primary_weapons_that_can_be_taken"].size < 3) vars["num_weapons"] = 0;
for (i = 0; i < self.weapon_slots.size; i++)
{ {
if (vars["prev_weapon_name"] != "") if (isDefined(self.weapon_slots[i]))
{
vars["num_weapons"]++;
}
}
if (vars["num_weapons"] >= 3)
{
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = self.weapon_slots[self.weapon_slots.size - 1];
}
else
{ {
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined; self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined;
self setClientDvar("additionalPrimaryWeaponName", "");
vars["prev_weapon_name"] = "";
}
continue;
}
vars["weapon"] = self.weapon_slots[self.weapon_slots.size - 1];
vars["weapon_name"] = getweapondisplayname(vars["weapon"]);
if (vars["prev_weapon_name"] != vars["weapon_name"])
{
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = vars["weapon"];
self setClientDvar("additionalPrimaryWeaponName", vars["weapon_name"]);
vars["prev_weapon_name"] = vars["weapon_name"];
}
} }
} }

View File

@ -1217,6 +1217,8 @@ take_additionalprimaryweapon()
if (isdefined(self._retain_perks) && self._retain_perks || isdefined(self._retain_perks_array) && (isdefined(self._retain_perks_array["specialty_additionalprimaryweapon"]) && self._retain_perks_array["specialty_additionalprimaryweapon"])) if (isdefined(self._retain_perks) && self._retain_perks || isdefined(self._retain_perks_array) && (isdefined(self._retain_perks_array["specialty_additionalprimaryweapon"]) && self._retain_perks_array["specialty_additionalprimaryweapon"]))
return undefined; return undefined;
self scripts\zm\_zm_reimagined::additionalprimaryweapon_update_weapon_slots();
weapon_to_take = self.weapon_to_take_by_losing_specialty_additionalprimaryweapon; weapon_to_take = self.weapon_to_take_by_losing_specialty_additionalprimaryweapon;
if (!isDefined(weapon_to_take) || !self hasWeapon(weapon_to_take)) if (!isDefined(weapon_to_take) || !self hasWeapon(weapon_to_take))