1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-08 22:31:36 -05:00
BO2-Reimagined/scripts/zm/replaced/_zm_weapon_locker.gsc

153 lines
4.0 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 = "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 = &"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;
}