Skip to content

Mob Forms and Parts

Kit Oliynyk edited this page Nov 6, 2026 · 3 revisions

TL;DR: A mob's body is a set of forms (what kind of creature it is) and parts (what it has). Forms grant parts, flags, immunities and movement style. Parts decide worn slots, which skills work, what falls off at death and what can be chopped off. A race lists forms, and a mob prototype adds or removes bits on top. Use when: you pick a race or forms for a mob, add or remove a body part, wonder why a mob cannot kick, wear a ring or leave a corpse, or read form and parts in medit. Source of truth: dreamland_world/fight/mob_forms.json (the model), src/core/body.cpp (Body::resolve, steps 0 to 11), src/core/mobindexbody.cpp (resolveBody, deriveNumbers), src/bits.conf (form_flags, part_flags), plug-ins/fight/fight_death.cpp, plug-ins/movement/walkment.cpp, plug-ins/movement/exitsmovement.cpp. Verified: 2026-11-02 against dreamland_code 88da8302, dreamland_world 43880467. Formless-race rule and the medit Body line re-verified 2026-11-05 against dreamland_code 11240f72 (resolveBody, deriveNumbers, medit.cpp show)

The model

  • A form is a named kind of body: biped, quadruped, mammal, skeletal, hoofed and so on. The model has 27 forms.
  • A part is a body part bit: head, legs, wings, claws, cold_blood and so on. 30 parts exist.
  • A race (see raceedit) lists forms. A race with a forms list uses the body model described here. A race without forms (today only unique) keeps an authored body, and the resolver does not run for it. Each flag set is the race's flags plus the mob's additions minus its removals, with the same reviewed gate on removals of affect, detection, immunity, resistance and vulnerability bits. The authored form and part bits are kept and the runtime rules below still read them, but no parts, slots, tricks, flag bits or movement style are derived from them. Worn slots are the race's slots. The tier does not pick off bits by count for it, but off bits a tier grants outright are added as they are (a slow mob still never turns fast). AC comes from the tier curve like for any mob, with an armor factor of 1.0.
  • A mob prototype adds or removes forms, parts and flags on top of its race. The XML for that is <form add="..." del="..."/>, <parts add del/>, <act add del/> and so on. Typing a flag in medit toggles it and the editor records the difference.

Everything is computed again each time a mob prototype is built, at boot and at done in medit.

Groups

Group Rule
lower The lower body: biped, quadruped, insect, spider, snake, fish. At most one.
upper The upper body, stacks on a lower body: mammal, winged, crustacean. Several allowed.
full A whole body, replaces lower and upper forms: worm, blob, bird, dragon.
functional Stacks freely: poison, magical, instant_decay, nonadoptable, sentient, skeletal, vampire, construct, hoofed, mist, canine, feline, amphibian, reptile.

dragon is a full form made of quadruped, reptile and winged. skeletal brings instant_decay with it.

Resolution order

For one mob, Body::resolve runs these steps:

  1. Collect forms: the race's, plus the prototype's additions, minus its removals. Rename old forms, drop deleted ones, add implied forms. Warn when two lower bodies or a full body plus other bodies are mixed.
  2. Base body: a full form gives exactly its parts_only list. A lower form adds and removes parts.
  3. Hooves: hoofed swaps feet for two_hooves on a biped and for four_hooves on a quadruped (and drops fingers and claws).
  4. Upper body: parts of all upper forms are added, then their removals are applied, then their "always" parts are added again, so the always parts win. A mammal always has head, arms, hands, brains, fingers, body, guts, heart, ears and eyes.
  5. Functional forms: additions, removals, then "late removals" (construct and mist drop heart, brains, guts and ears after everything else, and mist does that for mobs only, never for player races).
  6. The race's own part additions and removals, then the prototype's.
  7. Flag bits (act, off, aff, detection, imm, res, vuln) from the forms, then the bits implied by parts, then the rideable rule, then the race's changes, then the prototype's.
  8. Worn slots from the parts.
  9. Movement style.
  10. Armor factor.
  11. Derived rules (below).

An old prototype del on affect, detection, immunity, resistance and vulnerability bits is ignored unless the prototype lists that set in reviewed.

Forms

Plus means the form grants it, minus means it takes it away. off is the set of combat tricks, aff affect bits, det detection, imm, res, vuln are immunities, resistances and vulnerabilities. A form grants the bits in its aff, det, imm, res and vuln lists.

Lower bodies

  • biped: parts legs, feet. Off kick. Walks.
  • quadruped: parts legs, claws, fingers, heart, guts, tail, brains, head, ear, eye. No arms, no hands. Off berserk, crush. Not kick_dirt. Moves at a trot. Its legs fill the wrist slots instead of the leg slot.
  • insect: parts head, legs, eye, wings. No feet, arms, hands, fingers, ears. Off dodge, fast. Detection acute vision. Resists mental and sound, vulnerable to fire. Crawls.
  • spider: parts head, legs, eye, fangs. No feet, arms, hands, fingers, ears. Off dodge. Immune to poison, resists mental, vulnerable to fire. Detection acute vision. Crawls.
  • snake: parts head, brains, eye, tail, guts, heart, fangs. No feet, arms, legs, hands, fingers, ears. Off tail. Detection hidden. Slithers.
  • fish: parts head, eye, guts, brains, scales, fins, tail, cold_blood. No feet, legs, arms, hands, fingers, ears. Resists cold, vulnerable to sound and energy. Swims, and cannot use the float slot.

Upper bodies

  • mammal: the human torso, see step 4. Gives the hair slot.
  • winged: part wings.
  • crustacean: parts eye, eyestalks, pincers, guts, shell, cold_blood. No arms, hands, fingers, head, ears, feet. Off parry. Aff slow. Resists pierce and slash, vulnerable to fire. Crawls.

Full bodies

  • worm: only head, tail, scales, cold_blood. Off tail, no dodge. Aff slow, regeneration, blind. Resists light. Slithers.
  • blob: only guts, eye, eyestalks, tentacles, cold_blood. Act sentinel. Off area_attack. Aff slow, regeneration. Immune to charm, mental, disease and sound. Resists weapon and energy damage, vulnerable to fire, cold and acid. Oozes.
  • bird: only wings, legs, fingers, claws, head, brains, heart, guts, beak, eye, tail. Off fast, dodge. Detection acute vision. Resists sound, vulnerable to acid and disease. Walks.
  • dragon: off area_attack, plus the forms quadruped, reptile, winged.

Functional forms

  • poison: resists poison. The parts chopped off it are poisonous food.
  • magical: detection invisible. May cast and speak without being sentient.
  • instant_decay: no corpse, no body parts, the items drop.
  • nonadoptable: cannot be charmed, dominated or befriended.
  • sentient: talks, casts, takes part in quests and random drops. Unlocks the extra slots of every part (face, tattoo slots, sheath). A sentient mob with hands can hold cards.
  • skeletal: parts lose brains, eye, guts, ear, heart, long_tongue, eyestalks, tentacles, cold_blood. Act undead. Detection life. Immune to disease, poison, negative. Resists pierce, vulnerable to holy and fire. Brings instant_decay. Shows as "skeleton" on look.
  • vampire: act vampire, undead. Aff infrared. Immune to negative, charm, disease. Resists poison and cold. Vulnerable to light, holy, silver.
  • construct: loses heart, brains, guts, ears (late). Immune to mental, negative, holy. Vulnerable to sound.
  • hoofed: off kick, no berserk, no crush. Hooves as in step 3.
  • mist: loses heart, brains, guts, ears (late, mobs only). Aff flying, pass door. Resists slash, vulnerable to lightning. Tears webs twice as easily.
  • canine: parts fangs, claws, tail. Resists drowning and poison, vulnerable to fire and charm. Hair slot.
  • feline: parts fangs, claws, tail. Resists cold, vulnerable to fire and drowning. Hair slot.
  • amphibian: parts fins, cold_blood. Immune to drowning, resists disease, vulnerable to fire.
  • reptile: parts long_tongue, scales, tail, cold_blood. Aff regeneration. Resists cold and acid.

Old names

Old Now
undead skeletal
centaur quadruped
animal hoofed
bird (as upper form) winged. bird is now a full form.
edible derived (see below)
other construct
intangible instant_decay. The fire elemental uses mist.
cold_blood now a part. Forms grant it.

Old names still parse in files and are renamed with a warning in the log. The form bits edible and cold_blood are kept only so old race files load. Do not use them in new work.

Parts

Part Worn slots it gives Also
head head, neck 1, neck 2. A sentient mob also gets face and tattoo slots.
arms arms, wrist l, wrist r, shield. A sentient mob also gets tattoo slots for them.
legs legs. A quadruped's legs give wrist l and wrist r instead.
hands hands, wield, second wield, hold.
feet feet.
fingers finger l, finger r, only on a body that also has hands.
ear ears (mobs only).
body body. Torso only.
tail tail. Implies off tail.
tentacles hold. Implies off area_attack.
two_hooves hooves. Implies off kick.
four_hooves hooves, horse. Implies off kick.
fins none Implies aff swim.
wings none Implies aff flying.
spines none, and forbids body and about slots. Implies off area_attack.
brains none Without brains the mob is immune to mental attacks.
eye none Without eyes the mob is immune to light. It does not become blind.
heart, guts, long_tongue, eyestalks, claws, fangs, horns, tusks, scales, cold_blood, beak, pincers, shell none Used by skills, death effects and the rules below.

Every body also has the slots light, waist, about and float (a fish has no float).

Derived rules

Rule Definition
Rideable The form is quadruped, and also hoofed or of size large or bigger. Sets the act flag rideable.
Edible Not construct, skeletal, mist, instant_decay or magical.
Can hold cards sentient and has hands.
Bloodless No heart and no cold_blood part, or form skeletal, construct or mist.
Armor Each form has an armor factor (default 3). The body factor is the highest of its forms and scales the armor of the mob: 1 + 0.07 * (factor - 3). A blob is 0.86, a human 1.0, a crustacean 1.49. A race without forms gets 1.0.

Movement style follows the forms. The engine picks flying for a flying creature, riding for one with hooves, slinking for one with no legs and swimming where a mob swims. The words in the messages come from the most specific form, in this order: blob, worm, bird, snake, fish, insect, spider, crustacean, quadruped, biped. A mob with hooves that walks on its own "gallops" (four hooves) or "clatters" (two hooves). A race can override the word with moveverb.

Mechanics, apart from the words, do not change with the form. A mist mob and a flying mob move as flyers, and a fish cannot leave the water.

What the engine does with forms and parts

Verified in code:

  • A fish cannot leave water. It stops at the water's edge with a message.
  • A mist creature tears a web with twice the usual chance.
  • instant_decay: the mob turns to dust and leaves no corpse.
  • Parts chopped from a corpse become food items. If the creature's form is poison the food is poisonous. If it is not edible, the part is a trash item.
  • A skeletal NPC, or any NPC with the undead act, shows as undead to someone who detects undead.
  • A character with infravision in a dark room gives itself away by glowing eyes only if it has eye or eyestalks parts.
  • Hooves decide the movement verb of a walking mob: galloping for four hooves, clattering for two.
  • Heart and brains decide whether a mob is bloodless.

Read from the game's skill and death scripts (described by behaviour):

  • Death. Killing blows can detach a part with 80 percent chance when the victim has any parts and is not ethereal. Slashing can cut off the head, heart, an arm, the legs, the guts or the brains. Piercing opens the heart or the guts. Blunt weapons, sound, energy and lightning can burst the brains. Cold freezes off an arm or a leg. Fire and acid have a 30 percent chance to destroy all the parts. The part falls to the floor as an item. A bloodless victim spills no blood.
  • Chopping. A corpse keeps its part bits until they are cut off. The chop, butcher and trophy skills work only for parts the corpse still has. Slice in combat cuts off an arm.
  • Kick needs legs or hooves. Bare hooves add half to the damage, and a four-hoofed kicker can follow with a double kick. Rear kick needs four hooves. Tail needs a tail. Claw needs claws, and the victim needs guts and must not be mist. Crush is used with the foot, the hoof or the whole body depending on the form. Trip needs legs on the tripper and on the victim, and a creature on four hooves can neither trip nor be tripped. Dirt kicking needs the victim to have eyes and not eyestalks. Blackjack needs the victim to have brains. Bow headshots need a head and leg shots need legs. Caltrops do not work on mist and need feet, legs or hooves on the victim. Smash picks its attack from tentacles, fins, wings, claws or tail.
  • A mob must be sentient or magical to talk, teach, sell or serve through the standard helpers.

This second list comes from reading the game's scripts and is not exhaustive. A skill that needs a part says so in its help text.

Using it in medit

race wolf
form sentient
part tail
reviewed aff
? form_flags
? part_flags
  • The mob's race gives the starting body. Add only what makes this mob different.
  • form and part toggle. A bit that the race gives and you toggle off is recorded as a removal.
  • A removal of an affect, detection, immunity, resistance or vulnerability bit works only after reviewed names that set.
  • After done the editor show line Body lists the worn slots, the movement word, the armor factor and the allowed tricks.

See also: OLC-Mobiles, OLC-Other-Editors, Data-Configs, Mechanics-World.

Clone this wiki locally