Stored in things.ddf. Lump is DDFTHING. Names should be unique.
COMMAND | TYPE | DESCRIPTION |
RADIUS | [float] | How wide this thing is. |
HEIGHT | [float] | How tall this thing is. (You may have to fiddle around with new items so that item heights and item graphics match up properly) |
SPAWNHEALTH | [float] | The amount of health this object begins with. |
MASS | [float] | How heavy this thing is. (E.g heavy creatures like the Mancubus won't be shoved around or tossed into the air by explosions. Imps however can fly for miles when hit with a rocket). |
SPEED | [float] | How fast this thing moves. Values of up to 100 are supported. Numbers around 10 are normal for most doom monsters |
FLOAT_SPEED | [float] | How fast a creature will float up or down. Can also be used with bullet puffs. 1 is normal for puffs, 4 is normal for creatures (e.g cacodemon). |
SPRITE_SCALE | [float] | Stretches or shrinks the total size (width and height) of sprite graphics. 1 is normal perspective, 0.5 will make graphics half normal size. Used when you wish to use larger and more detailed sprites than normal DOOM. |
SPRITE_ASPECT | [float] | Adjusts the width of sprite graphics. See above. 1 is normal, 0.5 makes for tall and skinny sprites, 2.0 makes for obese sprites. |
REACTION_TIME | [time] | How long after sighting, teleporting etc that this object must wait before reacting. |
JUMP_HEIGHT | [float] | How high this thing can jump. (Default 10) (only really useful for setting how high a player or bot can leap). |
MAX_FALL | [float] | Max force this object can take after a high fall before taking damage. This value is multiplied by gravity. |
PAINCHANCE | [percentage] | The probability that the thing will go into pain state. 100% is certain, 0% is never. |
MINATTACK_CHANCE | [percentage] | Used in deciding whether a monster should attack now, or move closer to get a better shot. Valid values are between 1% and 100%. 1% = move, 255% = shoot. 0% = ignore |
SIGHT_ANGLE | [float] | Sets the left and right field of view for a monster. A value of 180 means the monster will see in all directions (180 degrees left, 180 degrees right for a total of 360 degrees) |
SIGHT_SLOPE | [float] | Sets the up/down field of view for a monster. |
BLOOD | [special] | The name of a special sprite animation (defined in things.ddf) to play when a creature is hurt. Hence, different animations can be set to make different sized or coloured blood. By default it calls an object called BLOOD. All blood animations need at least 3 frames. |
GIB | [special] | The object to create when a creature is gibbed (e.g. gets whacked by a crusher). This must be an object defined in things.ddf |
RESPAWN_EFFECT | [special] | The name of an animation to play when an object respawns. Hence, it is possible to create custom respawn effects for different objects |
PALETTE_REMAP | [colourmap] | Used to remap sprite colours. The value is a reference to an entry in colmap.ddf. Examples: 'PLAYER_BROWN', 'SKIN_BLUE', 'ALLWHITE', 'ALLGREEN'. |
ACTIVE_SOUND | [sound] | Sound made randomly while a thing is active. |
JUMP_SOUND | [sound] | Sound made when player uses jump key. |
DEATH_SOUND | [sound] | Sound made by action pointer MAKEDEATHSOUND. |
PAIN_SOUND | [sound] | Sound made by action pointer MAKEPAINSOUND. |
SIGHTING_SOUND | [sound] | Sound made when a thing sees a target or by action pointers MAKESOUND and MAKESOUNDRANDOM. |
STARTCOMBAT_SOUND | [sound] | Sound made when starting a melee attack. |
WALK_SOUND | [sound] | Sound made by action pointer WALKSOUND_CHASE. |
PICKUP_SOUND | [sound] | Sound made when the object is picked up |
AMBIENT_SOUND | [sound] | Sound made by action pointers MAKESOUND and MAKESOUNDRANDOM. |
SPECIAL | [flags] | Flags for this thing. See below. |
STATES(SPAWN) | [state]. | State this object is spawned with. Can be omitted, in which case the IDLE states are used instead. Once the spawn states have run through, the IDLE states are entered (unless there is a redirector). |
STATES(IDLE) | [state] | The states this object uses when it has nothing better to do, e.g. after it has mashed the player to a bloody pulp. |
STATES(CHASE) | [state] | The states this object uses when chasing it's prey. |
STATES(PAIN) | [state] | The states this object uses to display pain. Goes back to the IDLE states unless a redirector is used. |
STATES(DEATH) | [state] | The states this object uses when it dies. |
STATES(OVERKILL) | [state] | The states this object uses when damage vastly exceeds its health. |
STATES(RESPAWN) | [state] | The states this object uses when resurrected. |
STATES(RESURRECT) | [state] | The states this object uses to resurrect another monster. |
STATES(MISSILE) | [state] | The states this object uses to attack from a distance. Goes back to the IDLE states unless a redirector is used. |
STATES(MELEE) | [state] | The states this object uses with close combat attacks. Goes back to the IDLE states unless a redirector is used. |
STATES(MEANDER) | [state] | The states this object uses when it has no particular agenda, you know, just wandering...cruising for chicks etc |
STATES(BOUNCE) | [state] | The states this object uses when bouncing off a wall or the ceiling/floor. Only used for objects with the BOUNCE special flag. |
STATES(JUMP) | [state] | The states this object uses when jumping (for players). |
STATES(TOUCH) | [state] | The states used when a TOUCHY object is disturbed. |
CLOSE_ATTACK | [attack] | Attack to use when attacking from close range. |
RANGE_ATTACK | [attack] | Attack to use when attacking from a distance. |
SPARE_ATTACK | [attack] | Miscellaneous attack. |
DROPITEM | [special] | The thing dropped when the object dies. (usually ammo or a weapon). |
CASTORDER | [integer] | The order this object appears in the cast list. (The cast list is the sequence that follows Doom2 MAP30). |
SIDE | [float] | Valid values are 0,1,2,4,8,16,32,64 and 128 (or the sum of any of these values) Objects on the same side don't attack each other. 0 (or omitted) is neutral. Side is a binary value, so side 6 is an alliance between sides 4 + 2. Players on the same side don't get frags for killing their own side.The side value is required for creating friendly monsters. If the friendly monster is not given a side tag, it will not know which player/s to support. Note that you can set friendly monsters to support individual players, or teams of players. |
TRANSLUCENCY | [float] | How translucent this object is. 0 is invisible, 1 is visible. (NOTE: this may become a percentage value in a future version of EDGE). |
FAST | [float] | Multiplier for nightmare mode and -fastparm. |
INITIAL_BENEFIT | [benefit] | A list of benefits (separated by commas) which a player will normally begin with. See below for benefit format. |
PICKUP_BENEFIT | [benefit] | A list of benefits (separated by commas) which a player receives when they pickup this item. See below for benefit format. |
PICKUP_MESSAGE | [lang] | The message the player sees when they pick up this item. |
EXPLOSION_DAMAGE | [float] | Damage experienced if this object explodes. (e.g used for barrels). |
RESPAWN_TIME | [time] | Time it takes before this item respawns. |
DAMAGE_MULTI | [float] | Damage multiplier. |
DAMAGE_RANGE | [float] | Damage random range. See damage calculations. |
Flags:
(most can also apply to projectiles in attacks ddf.)
FLAG | DESCRIPTION |
FUZZY | Partial invisibility, like spectres. |
SOLID | This object blocks movement. |
INVISIBLE | Completely translucent, can't be seen. |
DAMAGESMOKE | Object doesn't bleed, uses bullet puffs instead. (Such as barrels). |
SHOOTABLE | Object can be damaged. |
MONSTER | Object is a monster (i.e. not a player or scenery). |
COUNT_AS_KILL | Counts towards the kill percent at end of level. This flag automatically implies the MONSTER flag. |
COUNT_AS_ITEM | Counts towards the item percent at end of level. |
SPECIAL | Object can be picked up. |
NOSECTOR | Object can be interacted with, but is completely invisible |
NOBLOCKMAP | Object is visible but cannot be interacted with. |
INERT | Another name for NOBLOCKMAP. The brain stem, and pools of blood are declared as INERT, as they are completely unaffected by surroundings. |
SPAWNCEILING | Object will be spawned on the ceiling. |
NOGRAVITY | Gravity does not apply to this object. |
NOFRICTION | Friction does not apply to this object. |
DROPOFF | Object can travel over cliffs greater than 24 high. |
EDGEWALKER | Monster will walk over deep gaps and along cliff edges. |
GRAVFALL | Monster will fall with gravity. Without this flag, non-flying monsters will always stick to the floor. |
CLIMBABLE | Player can climb on top of this object or monster. |
PICKUP | Object can pick up other items. Only for players or bots. |
NOCLIP | Allows things to go through solid walls. |
SLIDER | This flag stops players/creatures getting stuck on walls. (Can also be used to affect the behaviour of grenades when they hit a wall) |
BOUNCE | Object will bounce when it hits floor or wall. Very trippy if you add it to a creature - bouncing gibs!! |
FLOAT | Monster can fly. (E.g pain elemental, lost soul). Should be used with the NOGRAVITY flag. |
TELEPORT | Monster teleports over cliffs, i.e. will instantly go up or down the edge of a tall cliff. |
CROSSLINES | Object can cross lines that are marked as blocking. |
BARE_MISSILE | Object explodes and dies when it hits something. |
MISSILE | Object is a missile. Just a combination of the BARE_MISSILE + CROSSLINES + NOFRICTION flags. |
DROPPED | Object has been dropped. Only give half benefit. |
CORPSE | Object is dead. |
STEALTH | Monster goes invisible on chase, visible on attack/pain (scary). |
NODEATHMATCH | Object will not be spawned in deathmatch. |
NO_RESPAWN | Object cannot respawn. |
NO_RESURRECT | Object cannot be resurrected (by Archvile). |
DISLOYAL | Monster will attack its own species. |
TRIGGER_HAPPY | Doubles the chance the monster will attack over moving. |
ATTACK_HURTS | Monster can be harmed by it's own species. |
BOSSMAN | No sound volume change due to distance, no damage from explosions. |
NEVERTARGETED | Monsters never target this object. |
NOGRAV_KILL | When the object dies it will not fall to the ground. |
NO_GRUDGE | If this object is attacked it will switch targets to it's attacker rather than pursuing a grudge against a current target. |
ON_CEILING | Combination of SPAWNCEILING + NOGRAVITY |
FLOATER | Combination of FLOAT + NOGRAVITY |
WATERWALKER | Object cannot penetrate an extrafloor which is tagged as WATER. |
TOUCHY | Object reacts when another object collides with it. If the object has TOUCH states, then those are used, otherwise the object goes into its death states. The action pointer TOUCHY_REARM is needed to re-enable the object. |
States:
Also applies to weapons.ddf and attacks.ddf.
A state is a frame in the animation of an object. A state is defined like this:
Sprite:Frame:Tics:Bright:Action
Sprite | The four letter name of the sprite to use. |
Frame | The frame reference, A-Z, '[', '\', ']' If you need more than this, use another sprite. |
Tics | Number of tics to spend on this frame. -1 means the frame should last forever. |
Bright | Can be 'BRIGHT' or 'NORMAL' Bright frames are always drawn full brightness. |
Action | Action to be carried out. Actions are listed below. |
ACTION | DESCRIPTION |
NOTHING | Does nothing. |
CLOSEATTEMPTSND | Makes the object's close attack ATTEMPT_SOUND |
COMBOATTACK | Will start a melee attack if the object is in range, or a ranged attack if it is not. |
FACETARGET | Turns the object to face it's target. |
MAKESOUND | Starts the object's AMBIENT_SOUND/SIGHTING_SOUND |
MAKESOUNDRANDOM | Gives a 20% chance of making the object's AMBIENT_SOUND/SIGHTING_SOUND. |
MAKEDEATHSOUND | Makes the object's death sound |
MAKEDEAD | Makes the object dead: Visible if stealth, and not solid. |
MAKEOVERKILLSOUND | Makes a slopping noise... |
MAKEPAINSOUND | Makes the object's pain sound. |
CLOSE_ATTACK | Starts a melee attack. |
RANGE_ATTACK | Starts a range attack |
SPARE_ATTACK | Starts the spare attack. |
RANGEATTEMPTSND | Starts the object's range attack ATTEMPT_SOUND. |
REFIRE_CHECK | Checks to see whether the object can keep firing: can it see it's target? is it's target still alive? (Basically stops a monster shooting at a target that has moved or died). |
LOOKOUT | Looks for players to kill. Enters the CHASE states if it finds one. |
SUPPORT_LOOKOUT | Looks for a player to support. |
CHASE | Runs after a target, possibly attacks. |
RESCHASE | CHASE + look for bodies to resurrect. |
WALKSOUND_CHASE | CHASE + play walksound. |
MEANDER | Walk around aimlessly. Find targets to attack. |
SUPPORT_MEANDER | Follow a supporting player. Find targets to attack. |
PATH_FOLLOW | Follows the monster's path (if any). Note: doesn't do anything else, so use LOOKOUT to make the monster look for players. |
PATH_CHECK | Check whether this monster is a path follower (path followers are spawned by RTS path nodes). If it is, then it jumps to the MEANDER states. Typically used as the first action of the IDLE states. Useful for allowing a single monster entry to be both (normal and path follower). |
BOT_THINK | An action associated with the DeathBot |
CHECKMOVING | CheckMoving action returns an object to its spawn state when it ceases moving. (see player objects) |
CHECKBLOOD | CheckBlood action stops blood from disappearing in blood mode (when applied to `blood' animations ) |
EXPLOSIONDAMAGE | Does a fixed amount of damage to all monsters within the explosion range. |
VARIEDEXPDAMAGE | Does a random amount of damage to all monsters or objects (such as barrels or anything with a health value) within the explosion range. |
TRACER | A missile that homes in on it's target. (Like Revenant rockets) |
RANDOM_TRACER | Gives a random chance that this missile will home. |
RESET_SPREADER | Resets a spreader attack. |
SMOKING | Creates a smoke trail behind the object. |
TRACKERFOLLOW | Causes the tracker to follow it's target. |
TRACKERACTIVE | Starts the tracker's active sound + TRACKERFOLLOW |
TRACKERSTART | Starts the tracker's start sound + TRACKERFOLLOW |
EFFECTTRACKER | Does the damage associated with the tracker. |
BOUNCE_REARM | Allows a bouncing object to enter its BOUNCE states. When an object bounces, it enters its BOUNCE states and automatically disables further entries into the bounce states, preventing an action sequence from being interrupted by future bounces. Use this action to re-enable the bounce states. |
BOUNCE_DISARM | Prevents a bouncing object from entering its BOUNCE states. |
TOUCHY_REARM | Rearms a touchy object, allowing it to react to future collisions. When a touchy object is touched, it enters its TOUCH states and is automatically disarmed, preventing an action sequence from being interrupted by further collisions. |
TOUCHY_DISARM | Prevents a touchy object from entering its TOUCH states. |
* Note: RANGE_ATTACK, CLOSE_ATTACK and SPARE_ATTACK can have an attack name in between brackets, e.g RANGE_ATTACK(CACO_FIREBALL), and it will use that attack instead of the normal one.
Benefits:
Benefits are used by the INITIAL_BENEFIT and PICKUP_BENEFIT commands in things.ddf. Each benefit is a name, possibly followed by one or two values in brackets. Examples: KEY_REDCARD, BULLETS(10), HEALTH(15:100). There are 7 different types of benefits:
BENEFIT TYPE | DESCRIPTION |
Ammo | Specifies weapon ammunition. The player receives the ammunition (value in brackets is how much), upto the current limit for that type. |
AmmoLimit | Specifies the limit for ammo. The player's current limit for the ammo type is increased upto the value in brackets (or unchanged if it was already that high). |
Health | Specifies health that the player receives, the first value in brackets in how much health, the second value in the brackets is the limit, if the player already has that much, nothing happens, otherwise the player receives the health but no more than the limit. |
Armour | Specifies armour. It works like health, there are two values: the amount of armour to give, and the limit. |
Key | Specifies the name of a key. |
Weapon | Specifies the name of a weapon (must be an entry in weapons.ddf). |
Powerup | Specifies the name of a powerup (e.g. invulnerability). The first number in brackets is the number of seconds that the powerup will last. The second number is a limit value -- e.g. 30 will limit multiple pickups of the same powerup to last no longer than 30 seconds. |
Ammo and AmmoLimit:
AMMO TYPE | AMMO LIMIT TYPE | |
BULLETS | BULLETS.LIMIT | |
SHELLS | SHELLS.LIMIT | |
ROCKETS | ROCKETS.LIMIT | |
CELLS | CELLS.LIMIT |
Health and Armour:
TYPE | DESCRIPTION |
HEALTH | Health for the player. |
GREEN_ARMOUR | Green armour is the weakest (saves 33% of damage). |
BLUE_ARMOUR | Blue armour is next (saves 50% of damage). |
YELLOW_ARMOUR | Yellow armour is next (saves 75% of damage). |
RED_ARMOUR | Red armour is the strongest (Saves 90% of damage). |
Keys:
TYPE | DESCRIPTION |
KEY_REDCARD | Red keycard. |
KEY_BLUECARD | Blue keycard. |
KEY_YELLOWCARD | Yellow keycard. |
KEY_REDSKULL | Red skull key. |
KEY_BLUESKULL | Blue skull key. |
KEY_YELLOWSKULL | Yellow skull key. |
Powerups:
TYPE | DESCRIPTION |
POWERUP_INVULNERABLE | Makes the player completely invulernable for the time period. Also makes everything look white. |
POWERUP_BERSERK | Gives the player extra strength for the time period. Only affects strength-related weapons (just the punch). |
POWERUP_PARTINVIS | Makes the player partially invisible for a while. Monsters will have a harder time trying to shoot you. |
POWERUP_ACIDSUIT | Provides the player with protection against slime (and damaging sectors in general - but not crushers). |
POWERUP_AUTOMAP | Player gets to see everything on the automap. |
POWERUP_LIGHTGOGGLES | Allows the player to see with light goggles, making all dark areas look like they are fully lit up. |
POWERUP_JETPACK | The jetpack allows the player to fly! Be warned though, the fuel does not last forever (something to keep in mind whilst flying over that lava canyon). |
POWERUP_NIGHTVISION | Gives the player night vision goggles, similiar to LIGHTGOGGLES but everything gets a more realistic green shade. |
back to top
DDF docs written by Andy Baker and Ziggy Gnarly, with updates by Andrew Apted.
Site design by Fanatic (with graphics and modifications by Ziggy Gnarly). Problems with the docs, errors and comments should be directed to the EDGE team.
© EDGE Team 1998, 1999, 2000.