things.ddf

Stored in things.ddf. Lump is DDFTHING. Names should be unique.

COMMANDTYPEDESCRIPTION
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.)

FLAGDESCRIPTION
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.
Actions:

ACTIONDESCRIPTION
NOTHINGDoes 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 TYPEDESCRIPTION
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 TYPEAMMO LIMIT TYPE
BULLETS BULLETS.LIMIT
SHELLS SHELLS.LIMIT
ROCKETS ROCKETS.LIMIT
CELLS CELLS.LIMIT

Health and Armour:

TYPEDESCRIPTION
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:

TYPEDESCRIPTION
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:

TYPEDESCRIPTION
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.