Reference: Entities and their models Last edited 3 months ago2024-10-21 14:01:10 UTC

This page lists all monster entities and their associated model files. This is intended to be a reference for scripted_sequence where animations are stored in the model files.

There's also the Body and Skin columns which denotes how entities handle such keyvalues if given by mappers.

Towards the end of the page is a little section for the various entities and keyvalues related to prop model placements.

Monsters and Items

Legend

Table columns:
Entity Name of the entity
Model path to model associated with entity
Body How the entity handles the body keyvalue
Skin How the entity handles the skin keyvalue
Values for body and skin:
βœ”οΈ Direct value support
πŸ“ƒ Use a fixed enumerated value
❌ Discarded / unused
❔ Unknown, but tend for direct value support
See the notes at the bottom of this page for more info.

Table

Entity Model Body Skin Remarks
item_airtank models/w_oxygen.mdl βœ”οΈ βœ”οΈ
item_antidote models/w_antidote.mdl βœ”οΈ βœ”οΈ
item_battery models/w_battery.mdl βœ”οΈ βœ”οΈ
item_healthkit models/w_medkit.mdl βœ”οΈ βœ”οΈ
item_longjump models/w_longjump.mdl βœ”οΈ βœ”οΈ
item_security models/w_security.mdl βœ”οΈ βœ”οΈ Tutorial
item_sodacan models/can.mdl βœ”οΈ βœ”οΈ FGD uses skin directly
item_suit models/w_suit.mdl βœ”οΈ βœ”οΈ
monster_alien_babyvoltigore (Half-Life: Opposing Force) models/baby_voltigore.mdl ❔ ❔
monster_alien_controller models/controller.mdl ❔ ❔
monster_alien_grunt models/agrunt.mdl ❔ ❔
monster_alien_slave models/islave.mdl ❔ ❌ Skin used for attack charge state, but unrealized in stock model.
monster_alien_slave_dead (Half-Life: Opposing Force) models/islave.mdl ❔ ❔
monster_alien_voltigore (Half-Life: Opposing Force) models/voltigore.mdl ❔ ❔
monster_apache models/apache.mdl ❔ ❔
monster_assassin_repel (Half-Life: Opposing Force) models/massn.mdl ❔ ❔
monster_babycrab models/baby_headcrab.mdl ❔ ❔
monster_barnacle models/barnacle.mdl ❔ ❔
monster_barney models/barney.mdl ❌ βœ”οΈ Uses different body values for weapon state: hand carry, holstered, none.
monster_barney_dead models/barney.mdl ❔ βœ”οΈ
monster_bigmomma models/big_mom.mdl ❔ ❔
monster_blkop_apache (Half-Life: Opposing Force) models/blkop_apache.mdl ❔ ❔
monster_blkop_osprey (Half-Life: Opposing Force) models/blkop_osprey.mdl ❔ ❔
monster_bloater models/floater.mdl ❔ ❔
monster_bullchicken models/bullsquid.mdl βœ”οΈ ❌ Skin used for blinking.
monster_cleansuit_scientist (Half-Life: Opposing Force) models/cleansuit_scientist.mdl πŸ“ƒ ❌ Skin tied to body.
monster_cleansuit_scientist_dead (Half-Life: Opposing Force) models/cleansuit_scientist.mdl πŸ“ƒ ❌ Skin tied to body.
monster_cockroach models/roach.mdl ❔ ❔
monster_drillsergeant (Half-Life: Opposing Force) models/drill.mdl ❔ ❔
monster_flyer_flock models/aflock.mdl ❔ ❔
monster_furniture specified by mapper βœ”οΈ βœ”οΈ Requires scripted_sequence to set sequence.
monster_gargantua models/garg.mdl ❔ ❔
monster_geneworm (Half-Life: Opposing Force) models/geneworm.mdl ❔ ❔
monster_generic specified by mapper βœ”οΈ βœ”οΈ
monster_gman models/gman.mdl ❔ ❔
monster_gonome (Half-Life: Opposing Force) models/gonome.mdl ❔ ❔
monster_gonome_dead (Half-Life: Opposing Force) models/gonome.mdl ❔ ❔
monster_grunt_ally_repel (Half-Life: Opposing Force) models/hgrunt_opfor.mdl ❌ ❌ Body uses head+weapons combo. Skin always 0.
monster_grunt_repel models/hgrunt.mdl ❌ ❌ Spawns a grunt programmatically.
monster_handgrenade models/w_grenade.mdl ❔ ❔ This entity does not exist.
monster_headcrab models/headcrab.mdl ❔ ❔
monster_hevsuit_dead models/player.mdl ❌ ❔
monster_hgrunt_dead models/hgrunt.mdl πŸ“ƒ ❌ Always light skin (skin 0).
monster_houndeye models/houndeye.mdl βœ”οΈ ❌ Skin used for blinking.
monster_houndeye_dead (Half-Life: Opposing Force) models/houndeye.mdl ❔ ❔
monster_human_assassin models/hassassin.mdl ❔ ❔
monster_human_grunt models/hgrunt.mdl ❌ ❌ See page.
monster_human_grunt_ally (Half-Life: Opposing Force) models/hgrunt_opfor.mdl ❌ ❌ Body uses head+weapons combo. Skin always 0.
monster_human_grunt_ally_dead (Half-Life: Opposing Force) models/hgrunt_opfor.mdl ❌ ❌ Body uses head+weapons combo. Skin always 0.
monster_human_medic_ally (Half-Life: Opposing Force) models/hgrunt_medic.mdl ❌ ❌ Body uses head+weapons combo. Skin always 0.
monster_human_torch_ally (Half-Life: Opposing Force) models/hgrunt_torch.mdl ❌ ❌ Body uses weapons. Skin always 0.
monster_ichthyosaur models/icky.mdl βœ”οΈ ❌ Skin used for blinking.
monster_leech models/leech.mdl ❔ ❔
monster_male_assassin (Half-Life: Opposing Force) models/massn.mdl ❔ ❔
monster_miniturret models/miniturret.mdl ❔ ❔
monster_nihilanth models/nihilanth.mdl ❔ ❔
monster_op4loader (Half-Life: Opposing Force) models/loader.mdl ❔ ❔
monster_osprey models/osprey.mdl ❔ ❔
monster_otis (Half-Life: Opposing Force) models/otis.mdl ❌ βœ”οΈ Body uses head+bodystate combo.
monster_otis_dead (Half-Life: Opposing Force) models/otis.mdl ❔ ❔
monster_pitdrone (Half-Life: Opposing Force) models/pit_drone.mdl ❔ ❔
monster_pitworm (Half-Life: Opposing Force) models/pit_worm_up.mdl ❔ ❔
monster_pitworm_up (Half-Life: Opposing Force) models/pit_worm_up.mdl ❔ ❔
monster_rat models/bigrat.mdl ❔ ❔
monster_recruit (Half-Life: Opposing Force) models/recruit.mdl ❔ ❔
monster_rosenberg (Half-Life: Blue-Shift) models/scientist.mdl πŸ“ƒ ❌ Skin tied to body. Blue Shift replaces scientist's Slick head to Rosenberg.
monster_satchel models/w_satchel.mdl ❔ ❔
monster_scientist models/scientist.mdl πŸ“ƒ ❌ Skin tied to body.
monster_scientist_dead models/scientist.mdl πŸ“ƒ ❌ Skin tied to body.
monster_sentry models/sentry.mdl ❔ ❔
monster_shockroach (Half-Life: Opposing Force) models/w_shock_rifle.mdl ❔ ❔
monster_sitting_cleansuit_scientist (Half-Life: Opposing Force) models/cleansuit_scientist.mdl πŸ“ƒ ❌ Skin tied to body.
monster_sitting_scientist models/scientist.mdl πŸ“ƒ ❌ Skin tied to body.
monster_skeleton_dead (Half-Life: Opposing Force) models/skeleton.mdl βœ”οΈ βœ”οΈ
monster_snark models/w_squeak.mdl ❔ ❔
monster_shocktrooper (Half-Life: Opposing Force) models/strooper.mdl ❔ ❔
monster_tentacle models/tentacle2.mdl ❔ ❔
monster_tripmine models/v_tripmine.mdl ❔ ❔
monster_turret models/turret.mdl ❔ ❔
monster_zombie models/zombie.mdl βœ”οΈ βœ”οΈ Vault: LD, HD
monster_zombie_barney (Half-Life: Opposing Force) models/zombie_barney.mdl βœ”οΈ βœ”οΈ
monster_zombie_soldier (Half-Life: Opposing Force) models/zombie_soldier.mdl βœ”οΈ βœ”οΈ
monster_zombie_soldier_dead (Half-Life: Opposing Force) models/zombie_soldier.mdl βœ”οΈ βœ”οΈ
Entity Model Body Skin Remarks

Notes

  1. For what direct value support means, and how to calculate the values, consult Entity Programming - Introduction to Entities with Animated Models#Low-level animation control and skip to the part where body and skin are discussed.
  2. The paths are relative to their respective mod folders relative to Half-Life executable:
    • Half-Life = valve/
    • Half-Life: Opposing Force = gearbox/
    • Half-Life: Blue Shift = bshift/
  3. The models in the expansion packs generally have extra animations not present in Half-Life.
  4. Dead monsters usually has an enumeration of pose values.
  5. Applying dead poses to living monsters with scripted_sequences usually don't actually make them dead. Best to use env_sprite for that.

Props

To facilitate prop model placement, this section tabulates properties of select entities, and how they handle keyvalues (body/ skin/ sequence/ frame/ framerate).

These keyvalues for model display are usually driven by code, but you can set them in the editor to apply an initial value at spawn. Unfortunately, you can't change them afterwards.
Entity Nonsolid/Moveable Body Skin Sequence Frame Framerate Loopable/Freezeable Remarks
cycler ❌/❌ βœ”οΈ βœ”οΈ βœ”οΈ βœ”οΈ βŒβ†’ 1 βœ”οΈ/βœ”οΈ (Toggle) Beware of cyclic functions.
cycler_sprite ❌/❌ βœ”οΈ βœ”οΈ βœ”οΈ ❌ βŒβ†’ 1 βœ”οΈ/βœ”οΈ (Toggle) "
env_sprite βœ”οΈ/❌ ❌ ❌ βœ”οΈ ❌ βœ”οΈ ✴️/βœ”οΈ (OFF/ON) Plays a sequence once and then freezes.
monster_furniture βœ”οΈ/❌ βœ”οΈ βœ”οΈ ❌* ❌ ❌ ❌/❌ Requires scripted_sequence to set sequence.
monster_generic 🚩/βœ”οΈ βœ”οΈ βœ”οΈ ❌ ❌ ❌ ❌/❌ Alive, aggroes enemies.
Legend
  • Moveable - Whether the entity can be pushed around by other entities
  • 🚩 - Enabled via spawnflag
  • ✴️ - Manual looping required
Notes
  • Corpses of NPCs without dead poses β†’ env_sprite with the dying sequence and framerate = 8 to speed it up.
  • Statue in a still pose from a sequence β†’ cycler with sequence and frame set.
  • Animating props β†’ cycler with sequence, or monster_furniture with animating idle pose (or scripted_sequence with idle animation)

Other keyvalues

A few other keyvalues you might want to, or have to, use, to get models to display properly.
controller
The keyvalue controller is the combination of four bone controller values. Bone controllers are used on some models to parametrically modify the position of certain bones on the model by the specified value within the specified range. For example, the length of the tongue of the monster_barnacle is controlled by bone controller #0. Scientists and Barneys also has a controller that specifies their heads' right-to-left tilt, plus a mouth controller that is unfortunately not available to use from this keyvalue.

The absolute range of motion (distance or angle) is set in the .mdl file using QC commands (e.g. 0 to 1024 for the barnacle tongue). You only get to specify the ratio with the controller values e.g. 0 is the absolute minimum in the range of motion set for the bone, 127 is halfway, 255 is the max.

The four values are encoded in the 0-255 range, and bit-shifted to the right by (n*8) to fit into controller. Therefore:
controller = controller0<<0 | controller1<<8 | controller2<<16 | controller3<<24
If you're placing models of talking NPCs as props and they have their heads tilted all the way to the right, try set controller #0's value to 127 (halfway, therefore facing straight-on), arriving at controller value of 127.
colormap
The keyvalue colormap is the combination of "top" and "bottom" colours as seen on player models. You can employ colour ranges on your prop models so instead of using separate skin values you can have 65535 unique colour combinations on a model. The303.org has a tutorial on how to do colour remaps. To choose the value, use Half-Life Asset Manager.
User posted image
User posted image
User posted image

4 Comments

Commented 4 months ago2024-09-04 08:43:52 UTC Comment #106363
should we add all other entities not available in the FGD, as well as all other hardcoded models/sprites precached and used by all these entities?
Commented 4 months ago2024-09-05 11:34:11 UTC Comment #106371
I think adding entities used for displaying models, such as cycler* entities and env_sprite, could come in handy for those wanting to use props with multiple body/skin groups.
Commented 4 months ago2024-09-12 08:35:43 UTC Comment #106392
Ah there we go, great work! πŸ™Œ
Commented 2 months ago2024-11-19 15:47:16 UTC Comment #106517
the reason env_sprite doesn't support body and skin is that apparently those values were hijacked by the sprite renderer as part of the system that makes sprites attached to models in one of their attachment points.

You must log in to post a comment. You can login or register a new account.

Shoutbox

Log in to add shouts of your own