upgrade_spawn
upgrade_spawn is a point entity available in Left 4 Dead 2. It is a configurable spawner for weapon upgrades.
Optional FGD edits, for better usability
This entity will spawn a random chosen upgrade, yet you cannot decide its exact rotation. To fix this, modify "Left 4 Dead 2\bin\left4dead2.fgd".
Search for
@PointClass base(Targetname) = upgrade_spawn
and modify it as such:
@PointClass base(Targetname, Angles)studioprop() = upgrade_spawn [ laser_sight(integer) : "Laser Sight" : 1 upgradepack_incendiary(integer) : "UpgradePack - Incendiary" : 1 upgradepack_explosive(integer) : "UpgradePack - Explosive" : 1 spawnflags(Flags) = [ 1 : "Enable Physics on spawned item" : 0 2 : "Spawned Item Must Exist" : 0 ] model(choices) : "Helper Model (Visual aid only)" : "models/w_models/weapons/w_laser_sights.mdl" = [ "models/w_models/weapons/w_laser_sights.mdl" : "Laser" "models/w_models/weapons/w_eq_explosive_ammopack.mdl" : "Explosive Ammo" "models/w_models/weapons/w_eq_incendiary_ammopack.mdl" : "Incendiary Ammo" ] ]
Keyvalues
Targetname:
- Name
(targetname)<string> - The targetname that other entities refer to this entity by.
Flags
- 1 : Enable Physics on spawned item
- 2 : Spawned Item Must Exist
Inputs
Targetname:
Kill- Removes this entity from the world.
KillHierarchy- Removes this entity and its children from the world.
Note: Entities already remove orphaned children upon being removed, but this input removes all children on the same frame, being marginally faster than Kill.
AddOutput<string>- Adds a keyvalue/output to this entity. It can be potentially very dangerous, use with care.
KV Format:<key> <value>
I/O Format:<output name> <targetname>:<inputname>:<parameter>:<delay>:<max times to fire, -1 means infinite>
FireUser1toFireUser4- Fire the
OnUseroutputs; see User Inputs and Outputs.
Use!FGD- Same as a player invoking +use; may not do anything depending on the entity. Can also be invoked by firing an output that does not specify an input.
RunScriptFile<script>(in all games since
)- Execute a VScript file from disk, without file extension. The script contents are merged with the script scope of the receiving entity.
RunScriptCode<string>(in all games since
)- Execute a string of VScript source code in the scope of the entity receiving the input. String quotation may be needed when fired via console.
Bug: In
, the code is executed in the script scope of the entity that fires the output, not the one receiving the input.
Warning: Never try to pass string parameters to a script function with this input. It will corrupt the VMF structure because of the nested quotation marks, which then must be removed manually with a text editor.
CallScriptFunction<string>(in all games since
) !FGD- Execute a VScript function in the scope of the receiving entity.
SetLocalOrigin<coordinates>(in all games since
) !FGD- Send this entity to a spot in the map. If the entity is parented to something, it will be offset from the parent by this amount.
Outputs
Targetname:
OnUser1toOnUser4- These outputs each fire in response to the firing of the like-numbered
FireUser1toFireUser4Input; see User Inputs and Outputs.