1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-07 21:59:49 -05:00
BO2-Reimagined/scripts/zm/replaced/_zm_weapon_locker.gsc
2023-12-31 02:53:36 -08:00

160 lines
3.8 KiB
Plaintext

#include maps\mp\zombies\_zm_weapon_locker;
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm_magicbox;
#include maps\mp\zombies\_zm_weapons;
#include maps\mp\zombies\_zm_stats;
#include maps\mp\zombies\_zm_unitrigger;
#include maps\mp\zombies\_zm_audio;
triggerweaponslockerisvalidweaponpromptupdate(player, weaponname)
{
self thread show_current_weapon(player);
retrievingweapon = player wl_has_stored_weapondata();
if (!retrievingweapon)
{
weaponname = player get_nonalternate_weapon(weaponname);
if (!triggerweaponslockerisvalidweapon(weaponname))
self sethintstring(&"ZOMBIE_WEAPON_LOCKER_DENY");
else
self sethintstring(&"ZOMBIE_WEAPON_LOCKER_STORE");
}
else
{
weapondata = player wl_get_stored_weapondata();
if (isdefined(level.remap_weapon_locker_weapons))
weapondata = remap_weapon(weapondata, level.remap_weapon_locker_weapons);
weapontogive = weapondata["name"];
primaries = player getweaponslistprimaries();
maxweapons = get_player_weapon_limit(player);
weaponname = player get_nonalternate_weapon(weaponname);
if (isdefined(primaries) && primaries.size >= maxweapons || weapontogive == weaponname)
{
if (!triggerweaponslockerisvalidweapon(weaponname))
{
self sethintstring(&"ZOMBIE_WEAPON_LOCKER_DENY");
return;
}
}
self sethintstring(&"ZOMBIE_WEAPON_LOCKER_GRAB");
}
}
show_current_weapon(player)
{
stub = self.stub;
if (!isDefined(stub.weaponlockerhud))
{
stub.weaponlockerhud = [];
}
num = player getentitynumber();
displayname = &"MPUI_NONE";
if (player wl_has_stored_weapondata())
{
weapondata = player wl_get_stored_weapondata();
if (isdefined(level.remap_weapon_locker_weapons))
weapondata = remap_weapon(weapondata, level.remap_weapon_locker_weapons);
displayname = getweapondisplayname(weapondata["name"]);
}
if (isDefined(stub.weaponlockerhud[num]))
{
stub.weaponlockerhud[num] settext(displayname);
return;
}
hud = newclienthudelem(player);
hud.alignx = "center";
hud.aligny = "middle";
hud.horzalign = "center";
hud.vertalign = "bottom";
hud.y = -100;
hud.foreground = 1;
hud.hidewheninmenu = 1;
hud.font = "default";
hud.fontscale = 1;
hud.alpha = 1;
hud.color = (1, 1, 1);
hud.label = &"ZOMBIE_HUD_PLACED_WEAPON";
hud settext(displayname);
stub.weaponlockerhud[num] = hud;
while (isDefined(self))
{
if (!player isTouching(self) || !is_player_valid(player) || player isSprinting() || player isThrowingGrenade())
{
hud.alpha = 0;
wait 0.05;
continue;
}
hud.alpha = 1;
wait 0.05;
}
stub.weaponlockerhud[num] destroy();
stub.weaponlockerhud[num] = undefined;
}
wl_set_stored_weapondata(weapondata)
{
name = weapondata["name"];
dw_name = weaponDualWieldWeaponName(name);
alt_name = weaponAltWeaponName(name);
clip_missing = weaponClipSize(name) - weapondata["clip"];
if (clip_missing > weapondata["stock"])
{
clip_missing = weapondata["stock"];
}
weapondata["clip"] += clip_missing;
weapondata["stock"] -= clip_missing;
if (dw_name != "none")
{
clip_dualwield_missing = weaponClipSize(dw_name) - weapondata["lh_clip"];
if (clip_dualwield_missing > weapondata["stock"])
{
clip_dualwield_missing = weapondata["stock"];
}
weapondata["lh_clip"] += clip_dualwield_missing;
weapondata["stock"] -= clip_dualwield_missing;
}
if (alt_name != "none")
{
clip_alt_missing = weaponClipSize(alt_name) - weapondata["alt_clip"];
if (clip_alt_missing > weapondata["alt_stock"])
{
clip_alt_missing = weapondata["alt_stock"];
}
weapondata["alt_clip"] += clip_alt_missing;
weapondata["alt_stock"] -= clip_alt_missing;
}
if (level.weapon_locker_online)
self set_stored_weapondata(weapondata, level.weapon_locker_map);
else
self.stored_weapon_data = weapondata;
}