Reference: Entities and their models Last edited 2 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 3 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 3 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 3 months ago2024-09-12 08:35:43 UTC Comment #106392
Ah there we go, great work! 🙌
Commented 1 month 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.