1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-10 07:08:06 -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,27 @@ additionalprimaryweapon_indicator()
vars = [];
vars["prev_weapon_name"] = "";
self.weapon_slots = [];
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined;
while (1)
{
wait 0.05;
if (self.sessionstate == "spectator")
{
if (vars["prev_weapon_name"] != "")
{
self setClientDvar("additionalPrimaryWeaponName", "");
vars["prev_weapon_name"] = "";
}
continue;
}
self additionalprimaryweapon_update_weapon_slots();
if (!self hasPerk("specialty_additionalprimaryweapon"))
{
if (vars["prev_weapon_name"] != "")
{
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined;
self setClientDvar("additionalPrimaryWeaponName", "");
vars["prev_weapon_name"] = "";
}
@ -2656,66 +2665,12 @@ additionalprimaryweapon_indicator()
continue;
}
vars["primary_weapons_that_can_be_taken"] = [];
vars["primaryweapons"] = self getweaponslistprimaries();
vars["weapon"] = self.weapon_to_take_by_losing_specialty_additionalprimaryweapon;
for (i = 0; i < vars["primaryweapons"].size; i++)
{
if (maps\mp\zombies\_zm_weapons::is_weapon_included(vars["primaryweapons"][i]) || maps\mp\zombies\_zm_weapons::is_weapon_upgraded(vars["primaryweapons"][i]))
{
vars["primary_weapons_that_can_be_taken"][vars["primary_weapons_that_can_be_taken"].size] = vars["primaryweapons"][i];
}
}
for (i = 0; i < self.weapon_slots.size; i++)
{
if (!self hasWeapon(self.weapon_slots[i]))
{
self.weapon_slots[i] = undefined;
}
}
// remove any trailing undefined slots
for (i = self.weapon_slots.size - 1; i >= 0; i--)
{
if (isDefined(self.weapon_slots[i]))
{
break;
}
arrayRemoveIndex(self.weapon_slots[i], i);
}
for (i = 0; i < vars["primary_weapons_that_can_be_taken"].size; i++)
{
vars["weapon"] = vars["primary_weapons_that_can_be_taken"][i];
if (!isInArray(self.weapon_slots, vars["weapon"]))
{
vars["added"] = 0;
for (j = 0; j < self.weapon_slots.size; j++)
{
if (!isDefined(self.weapon_slots[j]))
{
vars["added"] = 1;
self.weapon_slots[j] = vars["weapon"];
break;
}
}
if (!vars["added"])
{
self.weapon_slots[self.weapon_slots.size] = vars["weapon"];
}
}
}
if (vars["primary_weapons_that_can_be_taken"].size < 3)
if (!isDefined(vars["weapon"]))
{
if (vars["prev_weapon_name"] != "")
{
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined;
self setClientDvar("additionalPrimaryWeaponName", "");
vars["prev_weapon_name"] = "";
}
@ -2723,18 +2678,99 @@ additionalprimaryweapon_indicator()
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"];
}
}
}
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];
}
}
for (i = 0; i < self.weapon_slots.size; i++)
{
if (!self hasWeapon(self.weapon_slots[i]))
{
self.weapon_slots[i] = undefined;
}
}
// remove any trailing undefined slots
for (i = self.weapon_slots.size - 1; i >= 0; i--)
{
if (isDefined(self.weapon_slots[i]))
{
break;
}
arrayRemoveIndex(self.weapon_slots[i], i);
}
for (i = 0; i < vars["primaries_that_can_be_taken"].size; i++)
{
vars["weapon"] = vars["primaries_that_can_be_taken"][i];
if (!isInArray(self.weapon_slots, vars["weapon"]))
{
vars["added"] = 0;
for (j = 0; j < self.weapon_slots.size; j++)
{
if (!isDefined(self.weapon_slots[j]))
{
vars["added"] = 1;
self.weapon_slots[j] = vars["weapon"];
break;
}
}
if (!vars["added"])
{
self.weapon_slots[self.weapon_slots.size] = vars["weapon"];
}
}
}
vars["num_weapons"] = 0;
for (i = 0; i < self.weapon_slots.size; i++)
{
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;
}
}
additionalprimaryweapon_stowed_weapon_refill()
{
self endon("disconnect");

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"]))
return undefined;
self scripts\zm\_zm_reimagined::additionalprimaryweapon_update_weapon_slots();
weapon_to_take = self.weapon_to_take_by_losing_specialty_additionalprimaryweapon;
if (!isDefined(weapon_to_take) || !self hasWeapon(weapon_to_take))