mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-10 15:17:57 -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:
@ -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");
|
||||
|
@ -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))
|
||||
|
Reference in New Issue
Block a user