env_mortar_controller
env_mortar_controller
is a point entity available in Black Mesa. This is an airstrike map that allows you to mark and launch bombs at a specified point. For full functionality, this entity must be used in combination with
env_mortar_launcher
, point_camera
and info_camera_link
. In the original game it was used once in bm_c2a5i.
![Icon-Bug.png](/w/images/thumb/b/b4/Icon-Bug.png/10px-Icon-Bug.png)
![Black Mesa](/w/images/thumb/5/59/Bms_big.png/16px-Bms_big.png)
![PlacementTip.png](/w/images/thumb/c/cc/PlacementTip.png/14px-PlacementTip.png)
![Icon-Bug.png](/w/images/thumb/b/b4/Icon-Bug.png/10px-Icon-Bug.png)
![Icon-Bug.png](/w/images/thumb/b/b4/Icon-Bug.png/10px-Icon-Bug.png)
Attaching screen
First, place point_camera
at required position, set orientation and give a name. This entity will display area in airstrike map. You also need to change value for Render Target
, set _rt_Satellite
value.
Now we need info_camera_link
. In Entity Whose Material Uses _rt_camera
you need to add name of env_mortar_controller
, in Camera Name
add name of point_camera
you placed earlier.
Now compile your map and check the result. You now have functional screen. Don't forget to specify env_mortar_launcher
name in Mortar Launcher
property.
Fixing mortar spam
env_mortar_launcher
can dynamically change values in properties with AddOutput, we'll use this feature to fire 0 shells when fired once. Unfortunately, env_mortar_launcher
and env_mortar_controller
don't have any outputs that fires when shell is launched, we need to use triggers instead.
Create a trigger_weaponfire
in the form of an empty box inside. There should be a free space of 30 hammer units inside (x, y, z
), env_mortar_launcher
should be placed in the center.
Now create another trigger_weaponfire
that is 12 hammer units in size on all axes. This trigger should be in env_mortar_launcher
center. Give a name for this trigger (shellkiller
for example) and for Start Disabled?
property set value Yes
.
We need to add outputs now, for the second trigger (shellkiller
) make the following output:
My output | Target entity | Target input | Parameter | Delay | Only once | Comments | ||
![]() |
OnStartTouch | !activator | Kill | 0.00 | No | |||
For the first trigger, make the following outputs:
My output | Target entity | Target input | Parameter | Delay | Only once | Comments | ||
![]() |
OnStartTouch | shellkiller | Enable | 0.00 | No | |||
![]() |
OnStartTouch | mortar_launcher | AddOutput | fireshellscount 0 | 0.00 | No | mortar_launcher is the name of env_mortar_launcher .
| |
![]() |
OnStartTouch | shellkiller | Disable | 2.00 | No | |||
![]() |
OnStartTouch | mortar_launcher | AddOutput | fireshellscount 1 | 2.00 | No | ||
Now spam is prevented. The only issue is mortar launch sounds, you can fix this by replacing the sound with a blank sound and playing the original sound via outputs.
Keyvalues
- Mortar Launcher
(mortarlauncher)
<targetname> env_mortar_launcher
to use.- Skin
(skin)
<integer> - Some models have multiple skins. This value selects from the index, starting with 0.
- Collisions
(solid)
<choices> - Method of collision for this entity.
|
- Hitbox Set
(hitboxset)
<string> - Sets the
$hboxset
to use. - Body Group
(body or SetBodyGroup)
<integer> - Sets the the active
$bodygroup
. - Model Index
(modelindex)
<short> !FGD - Given the number index from dumping the
cl_precacheinfo modelprecache
table, sets entity model to the index.Warning:If an entity has animations that will be played, then the set model also must have its own sequences, else the game crashes.
- Model Scale
(modelscale)
<float> (in all games since)
- A multiplier for the size of the model. Negative values are accepted. Does not alter the physics collisions in most cases, however.
Warning:Negative or extremely high values can cause crashes!
Note:Scale may not appear in
Hammer 4.x, but will appear in-game (tested in
). This is fixed in
Hammer++.
- Texture Frame
(texframeindex)
<integer> !FGD - The initial frame number for all animated textures on this entity.
- Start Fade Distance
(fademindist)
<float> - Distance at which the entity starts fading. If 0 or less, the entity will disappear instantly when end fade is hit. The value will scale appropriately if the entity is in a 3D Skybox.
- End Fade Distance
(fademaxdist)
<float> - Distance at which the entity ends fading. If 0 or less, the entity won't disappear at all. The value will scale appropriately if the entity is in a 3D Skybox.
- Fade Scale
(fadescale)
<float> - If specified in the
worldspawn
, or if the engine is running below DirectX 8, entities will fade out even if the fade distances above aren't specified. This value gives more control over when this happens: numbers smaller than 1 cause the entity to fade out at further distances, and greater than 1 cause it to fade out at closer distances. Using 0 turns off the forced fade altogether. See also$noforcedfade
. - FX Amount/Transparency (0–255)
(renderamt)
<integer> - Transparency amount, requires a Render Mode other than Normal. 0 is invisible, 255 is fully visible.
- Render Color (R G B)
(rendercolor)
<color255> - Color tint.
- Render FX
(renderfx)
<choices> - Various somewhat legacy alpha effects. See render effects
- Render Mode
(rendermode)
<choices> - Set a non-standard rendering mode on this entity.
- Disable Shadows
(disableshadows)
<boolean> - Prevent the entity from creating cheap render-to-texture shadows. Does not affect shadow mapping.
- Disable Receiving Shadows
(disablereceiveshadows)
<boolean> - Prevent the entity from receiving shadows on itself.
- Lighting Origin
(LightingOrigin)
<targetname> - Select an entity (not
info_lighting
!) from which to sample lighting instead of the entity's origin. Lighting Origin Offset(LightingOriginHack)
<targetname>- Deprecated.
Theinfo_lighting_relative
from which to sample lighting instead of the entity's origin. Use Lighting Origin instead.
CBaseEntity:
- Name
(targetname)
<string> - The name that other entities use to refer to this entity.
- Parent
(parentname)
<targetname> - Maintain the same initial offset to this entity. An attachment point can also be used if separated by a comma at the end. (
parentname [targetname],[attachment]
)Tip:Entities transition to the next map with their parents
Tip:
phys_constraint
can be used as a workaround if parenting fails. - Origin (X Y Z)
(origin)
<coordinates> - The position of this entity's center in the world. Rotating entities typically rotate around their origin.
Bug:Hammer does not move the entities accordingly in the editor. [todo tested in?]
- Pitch Yaw Roll (Y Z X)
(angles)
<angle> - This entity's orientation in the world. Pitch is rotation around the Y axis, yaw is the rotation around the Z axis, roll is the rotation around the X axis.
Note:This works on brush entities, although Hammer doesn't show the new angles.
- Classname
(classname)
<string> !FGD - Determines the characteristics of the entity before it spawns.
Tip:Changing this on runtime still has use, like making matching an entry in S_PreserveEnts will persist the entity on new rounds!
- Spawnflags
(spawnflags)
<flags> !FGD - Toggles exclusive features of an entity, its specific number is determined by the combination of flags added.
- Effects
(effects)
<flags> !FGD - Combination of effect flags to use.
Inputs
attachscreen
<void> !FGD- Fires on entity spawn to attach screen.
Color
<color255>- Sets value for
Color
property.
Alpha
<integer>- Sets value for
Alpha
property.
SetBodyGroup
<integer>- Sets the the active
$bodygroup
.
Ignite
- Makes the entity catch on fire indefinitely.
IgniteLifetime
<float>- Makes the entity catch on fire for a given amount of time.
IgniteNumHitboxFires
<integer> (removed since)
- Makes the entity catch on fire with a given number of hitbox fire particles. Does not function correctly in
onward.
IgniteHitboxFireScale
<float> (removed since)
- Makes the entity catch on fire with a given scale for hitbox fire particles. Does not function correctly in
onward.
BecomeRagdoll
- Kills the entity and creates a client-side ragdoll from the model. Input is only passed if the model contains
$collisionjoints
. For other models,phys_convert
can be used instead.
SetLightingOrigin
<targetname>- Sets the entity's lighting origin to use this entity's position.
(removed sinceSetLightingOriginHack
<targetname>)
- Deprecated.
Offsets the entity's lighting origin by their distance from aninfo_lighting_relative
. UseSetLightingOrigin
instead.
fademindist
<float>- Sets distance at which the entity starts fading. If <0, the entity will disappear instantly when end fade is hit. The value will scale appropriately if the entity is in a 3D Skybox.
fademaxdist
<float>- Sets distance at which the entity ends fading. If <0, the entity won't disappear at all. The value will scale appropriately if the entity is in a 3D Skybox.
SetModelScale
<vector> (only in)
- Multiplies the size of the model. Does not alter the physics collisions in most cases. Can take two values separated by a space, in which case the first value would be the target model scale and the second value would be the number of seconds the change in scale will be spread over. If there is no second value, the model will scale instantly.
Tip:The
modelscale
keyvalue can be AddOutputed as a workaround for other games with this input missing. Warning:Negative or extremely high values can cause crashes!
AddContext
<string>- Adds to the entity's list of response contexts. See Context.
AddOutput
<string>- Assigns a new keyvalue/output on this entity. For keyvalues, some rely on extra necessary code to be ran and won't work if its simply just changed through this input. There is a strict format that must be followed:
// Format of changing KeyValues: "AddOutput [key] [value]"
//// Raw text:
"OnUser1" "!self,AddOutput,targetname new_name"
// Format of adding an Output: "AddOutput {targetname}:{inputname}:{parameter}:{delay}:{max times to fire, -1 means infinite}"
//// Raw text:
"OnUser1" "!self,AddOutput,OnUser1:SetParent:!activator:0.0:-1"
// Arguments can be left blank, but the empty blank should still be contained.
//// Raw text:
"OnUser1" "!self,AddOutput,OnUser1:ClearParent::0.0:-1"
|
ClearContext
- Removes all contexts from this entity's list.
ClearParent
- Removes this entity from the movement hierarchy, leaving it free to move independently.
FireUser1
toFireUser4
- Fires the respective
OnUser
outputs; see User Inputs and Outputs.
Kill
- Removes this entity and any entities parented to it from the world.
KillHierarchy
- Functions the same as
Kill
, although this entity and any entities parented to it are killed on the same frame, being marginally faster thanKill
input.
RemoveContext
<string>- Remove a context from this entity's list. The name should match the key of an existing context.
SetParent
<string>- Move with this entity. See Entity Hierarchy (parenting).
SetParentAttachment
<string>- Change this entity to attach to a specific attachment point on its parent. The entity will teleport so that the position of its root bone matches that of the attachment. Entities must be parented before being sent this input.
SetParentAttachmentMaintainOffset
<string>- As above, but without teleporting. The entity retains its position relative to the attachment at the time of the input being received.
DispatchEffect
<string> (removed since) !FGD
- Dispatches a special effect from the entity's origin; See also List of Client Effects. Replaced by the particle system since
.
Outputs
OnIgnite
!FGD- Fired when the entity catches fire, such as from an
env_entity_igniter
or theIgnite
inputs.
CBaseEntity:
OnUser1
toOnUser4
- These outputs each fire in response to the firing of the like-numbered FireUser1 to FireUser4 Input; see User Inputs and Outputs.