weapon_shield
weapon_shield
is a point entity available in Counter-Strike: Global Offensive.
The Riot Shield was first introduced as part of the Danger Zone mode, but since Operation Riptide has been added to the buy menu for Casual Hostage mode.
Entity Description
When deployed, a player holds the shield in front of them, protecting them from the front but also restricting their own field of view. When shot, the shield loses some of its durability and the carrier can see in a UI element showing how much damage the shield can still absorb before it will break. The carrier can use their primary or secondary fire to perform a knock in front of them, dealing a number of damage points set with sv_shield_bash_damage_to_players
to unarmored players. With enough armor points, armored players receive half of the damage but they also lose armor points. When the shield is holstered, the carrier has the shield on their back, shielding damage from behind but they don't see the aforementioned UI element. When broken while active, the player switches to their best weapon.
Bots cannot actively use a shield, they can only carry it on their back.
For this weapon to be purchasable and being able to pick it up in Casual, at least one func_hostage_rescue needs to be present in the map. It can always be picked up in Danger Zone, i.e. if game_type 6; game_mode 0
are set.
buy awp
), but you can use the command buy 1 25
.Related Console Variables
KeyValues
CS:GO / CS2 Weapon:
- Is this weapon allowed to be picked up? (CanBePickedUp) <boolean> (in all games since )
- Determines if players are able to pick up the weapon.
Flags
Start Constrained : [1]
- Prevents the model from moving.
Deny Player Pickup : [2] !FGD
- Prevents player from being able to pick up the weapon.
Inputs
CS:GO / CS2 Weapon:
- SetAmmoAmount <integer> (in all games since )
- For guns, sets the number of bullets in the active magazine. Does nothing for grenades.
Every value behaves like its congruent value in the range 0-255 in modulus 256 (e.g. -255 and 257 behave like 1 etc.). When set to 0, the owner may start reloading automatically, if possible. Other values congruent to 0 (-256, 256, 512, ...) might cause undefined behavior. Values congruent to -1 (mod 256) make the ammo numbers disappear. If set to a value outside the weapon's clip size, reloading might deliver unexpected results.
Behaves like SetClipPrimary.
- SetReserveAmmoAmount <integer> (in all games since )
- For guns, sets the number of bullets in reserve for reloading, clamping at the weapon's maximum (e.g. 90 for the weapon_ak47).
For grenades, sets their count, clamping at the current maximum depending on the convars ammo_grenade_limit_*; When setting to 0 or below while holding the grenade, the player no longer owns any, but the viewmodel stays.
Negative values make a gun's ammo display disappear and reloading is impossible.
Negative values are clamped to 0 for guns.
- ToggleCanBePickedUp <boolean> (in all games since )
- Toggles whether the weapon can be picked up by players. Visually, nothing changes and there is no event if picking up fails. Hover texts like "[E] Swap for AK-47" remain in both cases.
- SetClipPrimary <integer> (only in )
- For guns, sets the number of bullets in the active magazine, clamping between 0 and its clip size; When setting to 0, the owner may start reloading automatically.
Does nothing for grenades.
- SetClipSecondary <integer> (only in )
- Bug:Does nothing. SetReserveAmmoAmount works. [todo tested in?]
Outputs
CS:GO / CS2 Weapon:
- OnPlayerUse
- Fires when a player +uses this weapon (!activator is the player.). Does not fire if the weapon is picked up successfully.
- OnPlayerPickup
- Fires when a player picks this weapon up (!activator is the player.).
- OnCacheInteraction (removed since ) !FGD
- When dropped, fires every tick on player touch (!activator is the player.).
Also fires on successful +use pickup. Does not fire ifCanBePickedUp
is false.
- OnNPCPickup (removed since ) !FGD
- Fires when an NPC picks up this weapon (!activator is the NPC). Bots are considered players, so this output has no functionality.