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_riotshield.gsc
2023-12-16 21:11:47 -08:00

147 lines
3.6 KiB
Plaintext

#include maps\mp\zombies\_zm_riotshield;
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include common_scripts\utility;
#include maps\mp\zombies\_zm_weap_riotshield;
#include maps\mp\zombies\_zm_buildables;
#include maps\mp\zombies\_zm_equipment;
#include maps\mp\zombies\_zm_weapons;
doriotshielddeploy(origin, angles)
{
self endon("death");
self endon("disconnect");
self endon("start_riotshield_deploy");
self notify("deployed_riotshield");
self maps\mp\zombies\_zm_buildables::track_placed_buildables(level.riotshield_name);
if (isdefined(self.current_equipment) && self.current_equipment == level.riotshield_name)
self maps\mp\zombies\_zm_equipment::equipment_to_deployed(level.riotshield_name);
zoffset = level.riotshield_placement_zoffset;
shield_ent = self spawnriotshieldcover(origin + (0, 0, zoffset), angles);
item_ent = deployriotshield(self, shield_ent);
primaries = self getweaponslistprimaries();
self maps\mp\zombies\_zm_weapons::switch_back_primary_weapon(self.riotshield_prev_wep);
if (isdefined(level.equipment_planted))
self [[level.equipment_planted]](shield_ent, level.riotshield_name, self);
if (isdefined(level.equipment_safe_to_drop))
{
if (!self [[level.equipment_safe_to_drop]](shield_ent))
{
self notify("destroy_riotshield");
shield_ent delete();
item_ent delete();
return;
}
}
self.riotshieldretrievetrigger = item_ent;
self.riotshieldentity = shield_ent;
self thread watchdeployedriotshieldents();
self thread deleteshieldondamage(self.riotshieldentity);
self thread deleteshieldmodelonweaponpickup(self.riotshieldretrievetrigger);
self thread deleteriotshieldonplayerdeath();
self thread watchshieldtriggervisibility(self.riotshieldretrievetrigger);
self.riotshieldentity thread watchdeployedriotshielddamage();
return shield_ent;
}
trackriotshield()
{
self endon("death");
self endon("disconnect");
self.hasriotshield = self hasweapon(level.riotshield_name);
self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name;
self.shield_placement = 0;
if (self.hasriotshield)
{
if (self.hasriotshieldequipped)
{
self.shield_placement = 1;
self updateriotshieldmodel();
}
else
{
self.shield_placement = 2;
self updateriotshieldmodel();
}
}
for (;;)
{
self waittill("weapon_change", newweapon);
foreach (wep in self getWeaponsListPrimaries())
{
if (wep == newweapon)
{
self.riotshield_prev_wep = newweapon;
break;
}
}
if (newweapon == level.riotshield_name)
{
if (self.hasriotshieldequipped)
continue;
if (isdefined(self.riotshieldentity))
self notify("destroy_riotshield");
self.shield_placement = 1;
self updateriotshieldmodel();
self.hasriotshield = 1;
self.hasriotshieldequipped = 1;
continue;
}
if (self ismantling() && newweapon == "none")
continue;
if (self.hasriotshieldequipped)
{
assert(self.hasriotshield);
self.hasriotshield = self hasweapon(level.riotshield_name);
if (isdefined(self.riotshield_hidden) && self.riotshield_hidden)
{
}
else if (self.hasriotshield)
self.shield_placement = 2;
else if (isdefined(self.shield_ent))
assert(self.shield_placement == 3);
else
self.shield_placement = 0;
self updateriotshieldmodel();
self.hasriotshieldequipped = 0;
continue;
}
if (self.hasriotshield)
{
if (!self hasweapon(level.riotshield_name))
{
self.shield_placement = 0;
self updateriotshieldmodel();
self.hasriotshield = 0;
}
continue;
}
if (self hasweapon(level.riotshield_name))
{
self.shield_placement = 2;
self updateriotshieldmodel();
self.hasriotshield = 1;
}
}
}