Skip to content
Morrobroom
reference

Entities

Everything you can place in TrenchBroom, what each one compiles into, and what does not compile yet.

Entities come from three definition files, all loaded by the Morrowind game configuration:

FileHolds
Morrowind.fgdThe map itself, brush-built objects, lights and leveled lists: the TES3 records Morrobroom writes.
Nif.fgdMesh properties and structural nodes, covered in NIF authoring.
MorrowindObjects.fgdA catalog of your load order’s records, generated by morrobroom fgd, to place as they are.

Properties named ESM3_… become fields of the TES3 record. You rarely need to set any: an entity with no properties compiles to something sensible.

The map: worldspawn#

Every map has exactly one worldspawn. Its brushes become one static mesh, and its properties describe the cell the map compiles into. It needs no brushes of its own: a map built only from brush entities and placed records, like the ones nif2map writes, still compiles into its cell, and so does a map with no brushes anywhere, a room furnished entirely from the catalog.

PropertyDefaultEffect
ESM3_Namethe map’s nameThe cell’s name. The Map-to-Engine profile starts OpenMW in the cell named after the map, so change both or neither.
ESM3_FakeExterioroffShow the sky, as an interior pretending to be outdoors.
ESM3_RegionThe region whose weather a fake exterior uses.
ESM3_HasWater, ESM3_WaterHeightoff, 0A water plane at that height.
ESM3_RestIsIllegaloffResting here is a crime.
ESM3_Ambient_color, ESM3_Sun_color, ESM3_Fog_color15 15 15The cell’s lighting colors.
ESM3_FogDensity0Fog from 0 to 1.

Built from brushes#

Select brushes, right-click, and pick one of these under Create Brush Entity. Each brush entity compiles into its own mesh, a record of its type, and a reference placing it in the cell. Brush entities also accept every property in NIF authoring.

EntityRecordAlso takes
world_DetailStatic
world_ActivatorActivatorESM3_Script
world_ContainerContainerESM3_Script, ESM3_Encumbrance, ESM3_ContainerFlags, and up to eight ESM3_Item<n>_Id with ESM3_Item<n>_Count
item_MiscMiscellaneous item
item_BookBookESM3_BookType
item_ApparatusApparatusESM3_ApparatusType, ESM3_Quality
item_AlchemyPotionESM3_Auto_Calculate, and its magic effects
item_IngredientIngredientits magic effects
item_LightLight, with a mesh built from the brushesESM3_Radius, ESM3_light_color, ESM3_LightFlags, ESM3_Time, ESM3_Sound, ESM3_Script
item_ArmorArmorESM3_ArmorType, ESM3_ArmorRating, ESM3_Health, ESM3_Enchantment, ESM3_EnchantmentPoints, and its body parts
item_ClothingClothingESM3_ClothingType, ESM3_Enchantment, ESM3_EnchantmentPoints, and its body parts

The brushes of armor and clothing are the item as it lies in the world. What someone wearing it shows comes from its body parts: up to eight slots, each an ESM3_SlotType<n> with the ID of a body part record (BODY, made in OpenCS or taken from the game) in ESM3_male_part<n> and ESM3_female_part<n>. A slot that names no part is left out.

Every one of them also takes these:

PropertyEffect
ESM3_RefIdThe record’s id. Leave it empty and Morrobroom makes one from the map’s name. Two entities with the same id are two placements of one object, built once.
ESM3_NameThe name shown in game.
ESM3_ModelWhere the generated mesh is written, under Meshes/. By default <map name>/<id>.nif.
ESM3_Script, ESM3_Value, ESM3_Weight, ESM3_IconFor items: what the record says. A script is shared by every placement of that id.
mangleRotation as pitch, yaw and roll, kept by TrenchBroom as you rotate the entity. The object gets the same rotation in game, its own axes included.

Brushes in a TrenchBroom group or layer compile the same way as world_Detail: one mesh, one static, one placement.

Placed as points#

EntityCompiles into
Light_Point64 … Light_Point1024A light record and a placement, and light in the baked lightmap. The number is the radius; ESM3_Radius overrides it for both the record and the bake. Also takes ESM3_light_color, ESM3_LightFlags, ESM3_Sound and ESM3_Script.
world_CreatureListA leveled creature list, placed where you put it. Needs ESM3_RefId. Up to ten ESM3_Creature_<n>_Id with ESM3_Creature_<n>_PlayerLevel, plus ESM3_Chance_None and ESM3_Spawn_From_All_Levels.
world_ItemListA leveled item list record, not placed: put its id in a container. Needs ESM3_RefId. Items are ESM3_Item_<n>_Id with ESM3_Item_<n>_PlayerLevel.
info_player_startNothing. It is a player-sized box for judging scale in the editor.
Anything from the catalogA placement of that record, where you put it and turned the way TrenchBroom shows it.

Records from the catalog#

The catalog (MorrowindObjects.fgd, from morrobroom fgd) lists your load order’s statics, doors, containers, lights, items and leveled lists, each as a box the size of its model. Place one and the compiler places that record: a reference in the cell, nothing more. It writes no new record, so the entity’s other properties change nothing, and the record stays whatever your load order says it is.

What the compiler reads is ESM3_RefId, which the catalog fills in with the record’s ID. Any point entity with an ESM3_RefId and a class Morrobroom does not otherwise know is placed the same way, so you can also type the ID of a record the catalog does not list.

The plugin does not name the record’s plugin as a master. OpenMW finds the record as long as a plugin that defines it is loaded.

Lights from the catalog light the game as OpenMW’s ordinary lights, but they are not in the baked lightmap; use the Light_Point entities for light the bake should see.

Not compiled yet#

These are in the entity browser, marked “preview, not compiled” in their descriptions, and placing one does nothing yet: the compiler prints <class> is an editor preview and is not compiled yet and moves on.

  • nif_fx_fire, a planned fire preset. Its properties describe the particles, but nothing builds them yet. For fire today, place a light and a fire mesh from the catalog.
  • The VFX catalog (vfx_kurp_…): previews of the effects in Kurpulio’s VFX Meshbank, for seeing what each one looks like. Turning them into meshes is not built yet.