weapon_c4

From Valve Developer Community
Jump to navigation Jump to search
English (en)Translate (Translate)
Class hierarchy
CC4
CWeaponCSBase
CBaseCombatWeapon
CBaseAnimating
CBaseEntity
weapon_c4.cpp
Counter-Strike: Source models/weapons/w_c4.mdl
Counter-Strike: Global Offensive models/weapons/w_ied.mdl

weapon_c4 is a point entity available in Counter-Strike: Source Counter-Strike: Source, Counter-Strike: Global Offensive Counter-Strike: Global Offensive, and Counter-Strike 2 Counter-Strike 2.

Note.pngNote:Counter-Strike: Global Offensive Non-intiutively, the C4 models are named models/weapons/v_ied.mdl, w_ied.mdl and w_ied_dropped.mdl, while models with _c4 in their name no longer exist. In Hammer, this entity still uses the old world model, yielding the error model. See below for FGD code to fix this.

Entity Description

Represents the bomb used in defusal maps.

  • By default, this entity is automatically given to one player on the Terrorists' team at the beginning of each round in the classic game modes and in CS:GO Demolition Demolition if there is at least one func_bomb_target.
  • func_bomb_target entities fire outputs in response to this entity.
  • When this entity is planted, it becomes an active planted_c4 entity that will explode after a certain number of seconds, which is read from the ConVar mp_c4timer. This fuse time cannot be manipulated, whereas planted_c4_training has the input ActivateSetTimerLength.
    • Counter-Strike: Global Offensive If the current game mode is CS:GO Co-op Strike Co-op Strike and mp_anyone_can_pickup_c4 is not 0, then the C4 timer is instead hard coded to 9999 seconds (2 hours, 46 minutes, 39 seconds) and the exploding bomb will not end the round. Also, CTs cannot +use it, so they cannot defuse it.

Related Console Variables

Here are the related C4 console commands. All commands except mp_c4timer are not available in Counter-Strike: Source.

ConVar Default Description
mp_anyone_can_pickup_c4 0 Determines whether anyone or just Ts can pickup this entity. If set, CTs can pickup and plant the bomb.
mp_c4_cannot_be_defused 0 Determines whether planted C4 can be defused when planted or not.
mp_c4timer (also in Counter-Strike: Source) Counter-Strike: Global OffensiveCounter-Strike 2 40, Counter-Strike: Source 45 The duration in seconds between planting the bomb and its explosion. Minimum value is 10. Counter-Strike: Source Maximum value is 90.
mp_death_drop_c4 1 Determines whether a player carrying this entity will drop it on death.
mp_give_player_c4 1 Determines whether one terrorist is given this entity at round start, assuming that there exists a func_bomb_target.
mp_plant_c4_anywhere 0 Determines whether this entity can be planted anywhere on the map or only inside func_bomb_target.

KeyValues

CS:S / CS:GO / CS2 Weapon:

Ammo (ammo) <integer> (only in Counter-Strike: Source)
Amount of reserve ammo to be added. Fallback value is 0. !FGD
Is this weapon allowed to be picked up? (CanBePickedUp) <boolean> (in all games since Counter-Strike: Global Offensive)
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:S / CS:GO / CS2 Weapon:

SetAmmoAmount <integer> (in all games since Counter-Strike: Global Offensive)
For guns, sets the number of bullets in the active magazine. Does nothing for grenades.
Counter-Strike: Global Offensive 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.
Counter-Strike 2 Behaves like SetClipPrimary.
SetReserveAmmoAmount <integer> (in all games since Counter-Strike: Global Offensive)
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.
Counter-Strike: Global Offensive Negative values make a gun's ammo display disappear and reloading is impossible.
Counter-Strike 2 Negative values are clamped to 0 for guns.
ToggleCanBePickedUp <boolean> (in all games since Counter-Strike: Global Offensive)
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 Counter-Strike 2)
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 Counter-Strike 2)
Icon-Bug.pngBug:Does nothing. SetReserveAmmoAmount works.  [todo tested in?]

Outputs

CS:S / 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 Counter-Strike 2) !FGD
When dropped, fires every tick on player touch (!activator is the player.).
Counter-Strike: Global Offensive Also fires on successful +use pickup. Does not fire if CanBePickedUp is false.
OnNPCPickup  (removed since Counter-Strike 2) !FGD
Fires when an NPC picks up this weapon (!activator is the NPC). Bots are considered players, so this output has no functionality.
Counter-Strike: Source Hostages might be NPCs, but they don't pick weapons up.

FGD Code

Counter-Strike: Global Offensive This code belongs to Counter-Strike Global Offensive/bin/csgo.fgd.

@PointClass base(Weapon) studio("models/weapons/w_ied.mdl") = weapon_c4 : "C4 Bomb" [] // fixed w_c4.mdl -> w_ied.mdl