-
Notifications
You must be signed in to change notification settings - Fork 13
DDF Things
Stored in the DDFTHING data lump, or the things.ddf file.
DDFTHING allows you to define and modify all the creatures and objects in EDGE. Each entry consists of a unique name and mapnumber, enclosed in square brackets, followed by a series of commands that specify the characteristics of the object or monster. Both the name portion and the mapnumber should be unique and are included together in the square brackets at the beginning of the commands for that thing.
The map number is referred to from the map in the wadfile, or from an RTS script, whilst the name will be referred to in other DDF files where necessary e.g. spawner attacks.
The commands that can be used to specify properties of a thing are as follows:
COMMAND | TYPE | DESCRIPTION |
---|---|---|
ACTIVE_SOUND | [sound] | Sound made randomly while a thing is active. |
AMBIENT_SOUND | [sound] | Sound made by action pointers MAKESOUND and MAKESOUNDRANDOM. |
ARMOUR_CLASS | [bitset] | Gives protection against a corresponding attack class in ATTACKS.DDF There are 26 possible classes, A thru Z. Three are reserved: `M' is the default for missile attacks, `B' is the default ATTACK_CLASS for bullet/shot attacks, and `C' is the default for close-combat attacks. Examples: ARMOUR_CLASS=B; //only protects against bullets or ARMOUR_CLASS=CV; //protects against close attacks and attacks of a custom Attack_class V Note that ARMOUR_CLASS overrides the immunity/resistance classes. |
ARMOUR_DEPLETION | [percentage] | How much armour will be lost in each hit. Armour depletion rate: how much of the absorbed damage eats up the armour (10% is low, 90% is high). |
ARMOUR_PROTECTION | [percentage] | How much it protects. The percentage of damage which is saved by the armour: 100% full protection, 10% very little protection. |
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. |
BOBBING | [percentage] | How much the player's head should bob up and down while walking |
BOUNCE_SPEED | [float] | Speed object will retain after it has bounced. Where 1 is original speed and 0 is stopped dead. |
BOUNCE_UP | [float] | Specifies how far an object bounces from the surface it strikes e.g. floor, ceiling etc. Default value is 0.5 |
CASTORDER | [integer] | The order this object appears in the cast list. (The cast list is the sequence that follows Doom2 MAP30). |
CHOKE_DAMAGE.DELAY | [tics] | How often this creature takes damage due to choking. |
CHOKE_DAMAGE.VAL | [float] | Simple damage value for when this creature is choking. It can also be combined with either the CHOKE_DAMAGE.MAX or CHOKE_DAMAGE.ERROR commands to allow a range of possible damage values. |
CHOKE_DAMAGE.FLASH_COLOUR | [colourmap] | Allows a custom color to be used as the pain effect when a player is hit by choking damage. |
CHOKE_DAMAGE.DEATH_STATE | [state] | What STATES this object should use if it dies from choking underwater. e.g. DEATHDROWN |
CHOKE_DAMAGE.PAIN_STATE | [state] | What STATES this object should use if it is in pain because of choking underwater. E.g. PAINDROWN |
CHOKE_DAMAGE.ERROR | [float] | When combined with the CHOKE_DAMAGE.VAL command this forces the choking damage to be calculated on a weighted average basis in the range from (CHOKE_DAMAGE.VAL - CHOKE_DAMAGE.ERROR) to (CHOKE_DAMAGE.VAL + CHOKE_DAMAGE.ERROR). The value for CHOKE_DAMAGE.ERROR should be less than the value for CHOKE_DAMAGE.VAL otherwise this won't work properly. |
CHOKE_DAMAGE.MAX | [float] | When combined with the CHOKE_DAMAGE.VAL command this forces the choking damage to be calculated in the range from CHOKE_DAMAGE.VAL to CHOKE_DAMAGE.MAX. The value for CHOKE_DAMAGE.MAX should be more than the value for CHOKE_DAMAGE.VAL otherwise this won't work. |
CHOKE_DAMAGE.OBITUARY | [lang] | Message shown when the player dies from choking underwater. |
CHOKE_DAMAGE.DAMAGE_IF_BENEFIT | [benefit] | A list of benefits (separated by commas): Player will take choking damage if they have at least one of these benefits. See below for benefit format. |
CHOKE_DAMAGE.DAMAGE_UNLESS_BENEFIT | [benefit] | A list of benefits (separated by commas): Player will take choking damage unless they have at least one of these benefits. See below for benefit format. |
CLOSE_ATTACK | [attack] | Attack to use when attacking from close range. |
CROUCH_HEIGHT | [float] | Height of the creature (player) when crouching. |
DEATH_SOUND | [sound] | Sound made by action pointer MAKEDEATHSOUND. |
DLIGHT.COLOUR | [special] | This value is the colour to use for any dynamic lighting associated with the object. It's value takes the form of three pairs of digits in hexadecimal e.g. #RRGGBB to specify the proportion of each of the three colours in the mix. So for example #FF0000 would be pure red, #990000 would be a darker red and #FFFFFF would be a bright white. Experimentation is probably the best way to find the colour you want. |
DLIGHT.HEIGHT | [percentage] | Allows you to specify at which height within the object the light comes from. e.g. 0% at the foot, 50% midway (the default), 100% at the top of the head |
DLIGHT.RADIUS | [float] | This value is the starting furthest distance that a light can reach (every wall and thing beyond that distance is unaffected by it) of the object. This can be modified as the object changes, using the [DLIGHT](#dlight) SET and FADE actions. |
DLIGHT.INTENSITY | [float] | This value is the starting dynamic light intensity of the object. This can be modified as the object changes, using the [DLIGHT](#dlight) SET and FADE actions. **Depricated**: use DLIGHT.RADIUS instead. |
DLIGHT.LEAKY | [boolean] | Normally a light will not affect a surface that is facing away from the light. Setting this to TRUE causes the light to affect all surfaces. |
DLIGHT.TYPE | [special] | This value is the type of dynamic lighting to use for the object. Possible values are: MODULATE (light is multiplied with the wall texture), ADD (adds the light to the texture). Note: old QUADRATIC and LINEAR types have been depricated. |
DLIGHT2.COLOUR | [special] | This value is the colour to use for any dynamic lighting associated with the object. It's value takes the form of three pairs of digits in hexadecimal e.g. #RRGGBB to specify the proportion of each of the three colours in the mix. So for example #FF0000 would be pure red, #990000 would be a darker red and #FFFFFF would be a bright white. Experimentation is probably the best way to find the colour you want. |
DLIGHT2.HEIGHT | [percentage] | Allows you to specify at which height within the object the light comes from. e.g. 0% at the foot, 50% midway (the default), 100% at the top of the head |
DLIGHT2.RADIUS | [float] | This value is the starting furthest distance that a light can reach (every wall and thing beyond that distance is unaffected by it) of the object. This can be modified as the object changes, using the [DLIGHT](#dlight) SET and FADE actions. |
DLIGHT2.INTENSITY | [float] | This value is the starting dynamic light intensity of the object. This can be modified as the object changes, using the [DLIGHT](#dlight) SET and FADE actions. **Depricated**: use DLIGHT.RADIUS instead. |
DLIGHT2.LEAKY | [boolean] | Normally a light will not affect a surface that is facing away from the light. Setting this to TRUE causes the light to affect all surfaces. |
DLIGHT2.TYPE | [special] | This value is the type of dynamic lighting to use for the object. Possible values are: MODULATE (light is multiplied with the wall texture), ADD (adds the light to the texture). Note: old QUADRATIC and LINEAR types have been depricated. |
DROPITEM | [special] | The thing dropped when the object dies. (usually ammo or a weapon). |
EXPLODE_DAMAGE.DEATH_STATE | [state] | What STATES this object should use if it dies from explosion. E.g. DEATHDROWN |
EXPLODE_DAMAGE.PAIN_STATE | [state] | What STATES this object should use if it is in pain because of explosions. e.g. PAINEXPLO |
EXPLODE_DAMAGE.OVERKILL_STATE | [state] | What STATES this object should use if it is gibbed because of explosions. |
EXPLODE_DAMAGE.VAL | [float] | Damage experienced if this object explodes. (e.g used for barrels). |
EXPLODE_RADIUS | [float] | Normally the explosion radius is the same as the damage caused, but this command forces the explosion radius to a particular value (e.g. 200). The amount of damage is not affected. |
EXTRA | [special] | Extra options to identify the object. Options used in QDoom include are LOOPING_SOUND and RAIN. |
FALLING_SOUND | [sound] | Players only. Sound made when falling from a really great height. |
FALLPAIN_SOUND | [sound] | Players only. Sound made when the player is hurt from a big fall. |
FAST | [float] | Multiplier for nightmare mode and -fastparm. |
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). |
FUSE | [tics] | Force object into it's DEATH states after a period of time. Useful for spawned objects such as grenades. |
GASP_SOUND | [sound] | Sound made when this creature emerges from a choking environment. |
GASP_START | [time] | How long underwater before we gasp when leaving it. Default is 2 seconds |
GHOST_CLASS | [bitset] | Makes this creature a ghost (bullets/missiles pass through him) against a corresponding attack class in ATTACKS.DDF There are 26 possible classes, A thru Z. Three are reserved: `M' is the default for missile attacks, `B' is the default ATTACK_CLASS for bullet/shot attacks, and `C' is the default for close-combat attacks. Examples: GHOST_CLASS=B; //this would mean that bullets pass through this thing. or GHOST_CLASS=MV; //missile attacks and attacks of a custom Attack_class V would pass through this thing. |
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 |
GLOW_TYPE | [special] | When this thing is in a sector, it adds light to the nearest floor, ceiling or wall in that sector. When the thing is a dynamic light, it creates a "glow" effect on that surface from the dynamic light (differently to normal). For non-dlight things, it just makes the surface brighter (as if sector's level was higher). Allowed options are FLOOR, CEILING and WALL. In the case of WALL, the thing should be touching the wall to be lit. |
HEAR_DISTANCE | [float] | Sets the maximum number of map units a monster can hear. |
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) |
IMMUNITY_CLASS | [bitset] | Gives immunity against a corresponding attack class in ATTACKS.DDF There are 26 possible classes, A thru Z. Three are reserved: `M' is the default for missile attacks, `B' is the default ATTACK_CLASS for bullet/shot attacks, and `C' is the default for close-combat attacks. Examples: IMMUNITY_CLASS=B; //this would mean that bullets won't hurt this thing or IMMUNITY_CLASS=CV; //immune against close attacks and attacks of a custom Attack_class V |
INITIAL_BENEFIT | [benefit] | A list of benefits (separated by commas) which a player will normally begin with. See below for benefit format. |
JUMP DELAY | [tics] | Delay before being allowed to jump again |
JUMP_HEIGHT | [float] | How high this thing can jump. (Default 10) (only really useful for setting how high a player or bot can leap). |
JUMP_SOUND | [sound] | Sound played when player uses jump key. |
KILL_BENEFIT | [benefit] | A list of benefits (separated by commas) which a player recieves when they kill this object. See below for benefit format. |
LAUNCH_SOUND | [sound] | Sound made when the creature/object launches a ranged attack. |
LUNG_CAPACITY | [time] | How long player can hold out before choking.(Default is 20 seconds) |
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). |
MAX_FALL | [float] | Max force this object can take after a high fall before taking damage. This value is multiplied by gravity. Deprecated??? |
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, 100% = shoot. 0% = ignore |
MODEL_ASPECT | [float] | Change the models width and length, therefore making it fatter/skinnier. 0.5 would be half width(skinny), 2.0 would be double width(fatter) |
MODEL_BIAS | [float] | Move model up or down. Negative numbers move the model lower on-screen, postive numbers move it up. |
MODEL_ROTATE | [integer] | Will rotate left or right by the given (positive or negative) number of degrees. Used to correct imported models whose rotations are wrong. Default is 0. |
MODEL_SCALE | [float] | Draw the model bigger (e.g. 0.5 is half size, 2.0 is double) |
MODEL_SKIN | [integer] | Up to nine skins can currently be used (1 to 9). Skins must be defined in DDFImages |
MORPH_TIMEOUT | [tics] | Force object into it's MORPH states after a period of time. If it has no "MORPH" state then the thing is simply removed. |
NOWAY_SOUND | [sound] | Sound the creature (player) makes when they try to use an object they can't. |
OOF_SOUND | [sound] | Sound the creature (player) makes when they walk into a wall. |
OVERKILL_SOUND | [sound] | Sound the creature (player) makes when they are seriously killed. Used by the action pointer MAKEOVERKILLSOUND |
PAIN_SOUND | [sound] | Sound played when the creature is in pain. Used by the action pointer MAKEPAINSOUND. |
PAINCHANCE | [percentage] | The probability that the thing will go into pain state. 100% is certain, 0% is never. |
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'. |
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_EFFECT | [weapon name] | Required for #VERSION 1.29 and higher to make the Berserk powerup switch to the fist (in earlier versions it will be added for you to maintain compatibility) Example: PICKUP_EFFECT=SWITCH_WEAPON(FIST); |
PICKUP_MESSAGE | [lang] | The message the player sees when they pick up this item. |
PICKUP_SOUND | [sound] | Sound made when the object is picked up |
PLAYER | [float] | The player number. This can be either 1 to 8 for a player or -1 for a deathmatch start. |
RADIUS | [float] | How wide this thing is. Note: in EDGE things are actaully square, not circles. You should keep this in mind when calculating if a monster can enter a door for example. Here's a reference table: Door 16 wide = monster width 11 max Door 32 wide = monster width 22 max Door 64 wide = monster width 45 max |
RANGE_ATTACK | [attack] | Attack to use when attacking from a distance. |
REACTION_TIME | [time] | How long after sighting, teleporting etc that this object must wait before reacting. |
RELOAD_SHOTS | [integer] | How many shots the monster can fire before entering the RELOAD states. |
RESISTANCE_CLASS | [bitset] | Gives resistance(only suffers 40% of the original damage) against a corresponding attack class in ATTACKS.DDF There are 26 possible classes, A thru Z. Three are reserved: `M' is the default for missile attacks, `B' is the default ATTACK_CLASS for bullet/shot attacks, and `C' is the default for close-combat attacks. Examples: RESISTANCE_CLASS=B; //this would mean that bullets hurt this thing 60% less than normal or RESISTANCE_CLASS=CV; //resistant against close attacks and attacks of a custom Attack_class V |
RESISTANCE_MULTIPLY | [float] | Lets you control how much to multiply the damage caused by RESISTANCE_CLASS. The default is 0.4 which matches the previously hard-coded value. Values over 1.0 can be used (makes it a weakness instead of resistance) |
RESISTANCE_PAINCHANCE | [percentage] | The probability that the thing will go into pain state when injured. 100% is certain, 0% is never |
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 |
RESPAWN_TIME | [time] | Time it takes before this item respawns. |
RIDE_FRICTION | [float] | How easy this object is to ride on. Values should be in the range from 0 to 1\. |
SECRET_SOUND | [sound] | Only players. Sound to play when entering secret areas. |
SHOT_HEIGHT | [percentage] | At what height the creatures attack comes from. |
SHADOW_TRANSLUCENCY | [percentage] | The translucency of this things shadow (0% = no shadow) |
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. |
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_DISTANCE | [float] |
Sets the maximum number of map units a monster can see.
Note that this will override SIGHT_SLOPE, and range attacks will not take place if the monster cannot see the target. |
SIGHT_SLOPE | [float] | Sets the up/down field of view for a monster. It is an angle between 0 and 89.5 degrees. |
SIGHTING_SOUND | [sound] | Sound made when a thing sees a target or by action pointers MAKESOUND and MAKESOUNDRANDOM. |
SPARE_ATTACK | [attack] | Miscellaneous attack. Used by the SPARE_ATTACK action pointer. |
SPAWNHEALTH | [float] | The amount of health this object begins with. |
SPECIAL | [flags] | Flags for this thing. See [flags](#flags) section below. |
SPEED | [float] | How fast this thing moves. Values of up to 100 are supported. Numbers around 10 are normal for most doom monsters |
SPRITE_ASPECT | [float] | Adjusts the width of sprite graphics. 1 is normal, 0.5 makes for tall and skinny sprites, 2.0 makes for obese sprites. |
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_YALIGN | [special] | Controls how sprites are rendered vertically inside their bounding box. BOTTOM (default setting, sprite's foot will touch the ground), TOP, and MIDDLE. By using "TOP" and a large value for the HEIGHT, you can e.g. make a pickup float in the air. Also the "TOP" value should be used for all ONCEILING sprites. |
STARTCOMBAT_SOUND | [sound] | Sound made when starting a melee attack. |
STEP_SIZE | [float] | Maximum height of wall/step that this thing can climb over. |
TEMPLATE | [existing DDF entry] | This allows a new DDF entry to be based off an existing one. Inheritance for DDF basically. |
TRANSLUCENCY | [percentage] | The percentage of translucency this object is. 0% is invisible, while 100% is visible. |
VIEW_HEIGHT | [float] | Used to set what height the creature (player) sees things from. |
WALK_SOUND | [sound] | Sound made by the action pointer WALKSOUND_CHASE. |
WEAKNESS.CLASS | [bitset] | Gives weakness(will recieve more damage) against a corresponding attack class in ATTACKS.DDF There are 26 possible classes, A thru Z. Three are reserved: `M' is the default for missile attacks, `B' is the default ATTACK_CLASS for bullet/shot attacks, and `C' is the default for close-combat attacks. Examples: WEAKNESS.CLASS=B; //this would mean that bullets hurt this thing more than normal or WEAKNESS.CLASS=CV; //weak against close attacks and attacks of a custom Attack_class V |
WEAKNESS.ANGLES | [angle] | Allows you to specify the damage angle range e.g. weaker to attacks from behind. Usage: WEAKNESS.ANGLES=150:210; |
WEAKNESS.HEIGHTS | [percentage] | Allows you to specify the damage height range, e.g for headshots. Usage. WEAKNESS.HEIGHTS=75%:100%; |
WEAKNESS.MULTIPLY | [float] | Lets you control how much to multiply the damage caused by WEAKNESS.CLASS. |
WEAKNESS.PAINCHANCE | [percentage] | The probability that the thing will go into WEAKPAIN state when injured. 100% is certain, 0% is never |
(most can also apply to projectiles in attacks ddf.)
FLAG | DESCRIPTION |
---|---|
AMBUSH | Not to be activated by sound, deaf monster. |
ALWAYS_LOUD | No sound volume change due to distance. |
ATTACK_HURTS | Monster can be harmed by it's own species. |
BARE_MISSILE | Object explodes and dies when it hits something. |
BLOCK_SHOTS | This object stops bullets. |
BOSSMAN | ALWAYS_LOUD + EXPLODE_IMMUNE. |
BOUNCE | Object will bounce when it hits floor or wall. Very trippy if you add it to a creature - bouncing gibs!! |
CLIMBABLE | Player can climb on top of this object or monster. |
CORPSE | Object is dead. |
COUNT_AS_ITEM | Counts towards the item percent at end of level. |
COUNT_AS_KILL | Counts towards the kill percent at end of level. This flag automatically implies the MONSTER flag. |
CROSSLINES | Object can cross lines that are marked as blocking. |
DAMAGESMOKE | Object doesn't bleed, uses bullet puffs instead. (Such as barrels). |
DISLOYAL | Monster will attack its own species. |
DROPOFF | Object can travel over cliffs greater than 24 high. |
DROPPED | Object has been dropped. Only give half benefit. |
EDGEWALKER | Monster will walk over deep gaps and along cliff edges. |
EXPLODE_IMMUNE | No damage from explosions. |
FLOAT | Monster can fly. (E.g pain elemental, lost soul). Should be used with the NOGRAVITY flag. |
FLOATER | Combination of FLOAT + NOGRAVITY. |
FORCE_PICKUP | Item will be picked up, even if no benefit is specified. |
FLOOR_CLIP | This things sprites will always stick to the floor in the case that it's too tall for the sector it's in. |
FUZZY | Partial invisibility, like spectres. |
GRAVFALL | Monster will fall with gravity. Without this flag, non-flying monsters will always stick to the floor. |
HOVER | Item will bob up and down. |
IMMORTAL | Never takes damage from attacks, but will go into pain states as usual. |
IMMOVABLE | Makes this thing be unaffected by thrust from attack impacts irrespective of whether it has a small MASS or a very large one |
INERT | Another name for NOBLOCKMAP. The brain stem, and pools of blood are declared as INERT, as they are completely unaffected by surroundings. |
INVISIBLE | Completely translucent, can't be seen. |
INVULNERABLE | Makes the thing completely immune to all attacks. |
MISSILE | Object is a missile. Just a combination of the BARE_MISSILE + CROSSLINES + NOFRICTION flags. |
MONSTER | Object is a monster (i.e. not a player or scenery). |
NEVERTARGETED | Monsters never target this object. |
NO_AUTOAIM | This object will not be affected by AUTOAIM. Useful for scenery items. |
NO_GRUDGE | If this object is attacked it will switch targets to it's attacker rather than pursuing a grudge against a current target. |
NO_RESPAWN | Object cannot respawn. |
NO_RESURRECT | Object cannot be resurrected (by Archvile). |
NO_TRIGGER_LINES | Object cannot trigger any special linedefs i.e. monsters with this flag won't be able to open doors. |
NOBLOCKMAP | Object is visible but cannot be interacted with. |
NOCLIP | Allows things to go through solid walls. |
NODEATHMATCH | Object will not be spawned in deathmatch. |
NOFRICTION | Friction does not apply to this object. |
NOGRAV_KILL | When the object dies it will not fall to the ground. |
NOGRAVITY | Gravity does not apply to this object. |
NOSECTOR | Object can be interacted with, but is completely invisible |
NOSHADOW | Object casts no shadow. |
NO_SPLASH | Object causes no effects (i.e water splashes) on a floor defined in DDFFLAT as having an IMPACT_OBJECT. Useful for stuff like a falling leaf. |
NOZBUFFER | Allows a bunch of small objects close to each other (and with this special) to get fully drawn. Mainly useful for stuff like smoke puffs or blood to prevent Z-fighting when there are many of them in a small area. |
ON_CEILING | Combination of SPAWNCEILING + NOGRAVITY |
PASS_MISSILE | Missiles can pass through this object. Shoot-thru Scenery. |
PICKUP | Object can pick up other items. Only for players or bots. |
PUSHABLE | Object will be affected by BOOMs force pushers. (Note: SHOOTABLE things are always PUSHABLE) |
SHOOTABLE | Object can be damaged. |
SHOVEABLE | Object can be moved around if we push up against it. (i.e. Heretics pods). |
SIMPLE_ARMOUR | For armour pickups. Prevents Doom-emulation, whereby any lower class armour will be upgraded with this one. |
SIDE_GHOST | Friendly monsters will be like ghosts for your weapon fire. i.e. your shots will pass through them. |
SIDE_IMMUNE | Friendly monsters are completely immune from your weapon fire. |
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) |
SOLID | This object blocks movement. |
SPAWNCEILING | Object will be spawned on the ceiling. |
SPECIAL | Object can be picked up. |
STEALTH | Monster goes invisible on chase, visible on attack/pain (scary). |
TILT | Only for MD2 models: will be vertically tilted (using the mlook angle) |
TELEPORT | Monster teleports over cliffs, i.e. will instantly go up or down the edge of a tall cliff. |
TELEPORT_TYPE | Indicates this object is a type of teleport effect. |
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. |
TRIGGER_HAPPY | Doubles the chance the monster will attack over moving. |
ULTRA_LOYAL | Friendly monsters don't turn into enemies when hurt by your weapon fire |
USABLE | Object reacts when you press the USE key against it. Must be used in conjunction with TOUCHY. The objects TOUCH states will be used. The action pointer TOUCHY_REARM is needed to re-enable the object. |
VAMPIRE | This object gains health from the damage done to a victim. The health/damage ratio is hard-coded as 25% for monsters and 50% for players. |
WATERWALKER | Object cannot penetrate an extrafloor which is tagged as WATER. |
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', 'NORMAL' or 'LIT00-99'. Bright frames are always drawn full brightness. LIT00-LIT99: This allows fine-grained control of dynamic lights. LIT00 is the same as 'NORMAL', LIT99 is the same as 'BRIGHT'. |
Action | Action to be carried out. [Actions](#actions) are listed below. |
The following are predefined state names that have specifc purposes:
STATE NAME | SPECIAL USE |
---|---|
BOUNCE | States that the object enters when it's bouncing. |
CHASE | States that a creature enters when chasing a target. |
CLIMB | States that a thing (player) uses when it's climbing. |
DEATH | States used when an object explodes/dies. |
FLY | States that a thing (player) uses when it's flying. |
GIB | States for an object when it has been gibbed. |
IDLE | States for when the object isn't doing anything. |
JUMP | States that a thing (player) uses when it's jumping. |
MEANDER | States for when the creature is wandering around aimlessly. |
MELEE | States for when the creature is using a close combat attack. |
MISSILE | States for when the creature is using a ranged attack. |
OVERKILL | States for when a creature dies by a spectacular amount of damage. |
PAIN | States that a projectile enters when bouncing. |
RELOAD | States for when the creature is reloading. |
RESPAWN | States to use when a creature is resurrected by another creature. |
RESURRECT | States used for a creature while it resurrects a fallen comrade. |
SPAWN | States to play when an object is spawned. |
SWIM | States to play when an object(player) is swimming. |
TOUCH | States that an object enters when it has been touched. |
WEAKDEATH | Death state to enter if WEAKNESS.CLASS is used. If they don't exist then it will try OVERKILL states, and finally it falls back to the normal DEATH states. |
WEAKPAIN | Pain state to enter if WEAKNESS.CLASS is used. If it doesn't have them then the normal PAIN states are used |
Note that states can have a single rotation (like the plasma shots that look identical from any angle) or multiple rotations (e.g rocket in flight).
ACTION | DESCRIPTION |
---|---|
ACTIVATE_LINETYPE | Works exactly the same as the RTS primitive of the same name. Mainly useful for BOSSES, as a faster alternative to the RTS command ONDEATH. Usage is: ACTIVATE_LINETYPE(lineNum, tagNum) |
BECOME | Allows a thing to turn into another thing. Can be used on players too. HEALTH and SIDE will remain the same. The name must be given in brackets, e.g. BECOME(IMP). It's also possible to jump directly to a certain state e.g. BECOME(IMP,CHASE:2) |
BOT_THINK | An action associated with the DeathBot. This may be depricated. ? |
BOUNCE_DISARM | Prevents a bouncing object from entering its BOUNCE states. |
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. |
BRAINDIE | Boss brain action. Causes the brain to enter it's dead state. |
BRAINMISSILEEXPLODE | Boss brain action, Causes the brain to explode when the final missile hits. |
BRAINSCREAM | Boss brain action, the boss brain screams when it dies. |
BRAINSPIT | Boss brain action, the brain launches a spawn cube. |
CHASE | Runs after a target, possibly attacks. |
CHECK_ACTIVITY | Will cause the player to enter SWIM, FLY, or CLIMB states if the player is currently swimming, flying (jetpack) or climbing a ladder. Also JUMP states are entered when the player jumps. These new states are all optional |
CHECKBLOOD | CheckBlood action stops blood from disappearing in blood mode (when applied to `blood' animations ) |
CHECKMOVING | CheckMoving action returns an object to its spawn state when it ceases moving. (see player objects) |
CLOSE_ATTACK | Starts a melee attack. |
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. |
DIE | Mainly for Bex compatibility |
DLIGHT_COLOUR | Change the color of the dynamic light. Used like DLIGHT_COLOUR(#FF00FF). Note: the secondary dlight, if used, is not affected. |
DLIGHT_FADE | Fades the objects dynamic lighting to the specified level. Used like DLIGHT_FADE(500). |
DLIGHT_RANDOM | Randomly set the objects dynamic lighting between the specified levels. Used like DLIGHT_RANDOM(200,800) |
DLIGHT_SET | Sets the objects dynamic lighting to the specified level. Used like DLIGHT_SET(1000). |
DROPITEM | Causes the monster to drop the a specified item. The dropped item is non-solid (but may be pick-up-able), and is dropped a random distance away from the monster (so multiple drops don't all land on the exact same spot). |
EFFECTTRACKER | Does the damage associated with the tracker. |
EXPLOSIONDAMAGE | Does a fixed amount of damage to all monsters within the explosion range. |
FACE | Turns the object to face the angle specified in brackets. |
FACETARGET | Turns the object to face it's target. |
JUMP | Used like so.. JUMP(state:frame,xx%) and gives a xx% chance that the object jumps to the specified frame of the specified state. |
JUMP_LIQUID | Similar to the previous JUMP action, except this only triggers if the thing is in contact with a floor flat indicated as LIQUID in DDFFLATS. Possible use is killing a monster if he touches water for example. |
JUMP_SKY | Similar to the previous JUMP_LIQUID action, except this only triggers if the thing is in an outdoor sector i.e. ceiling is sky. Possible use is to make a flying monster become non-flying for example. |
KILLSOUND | Stops any sound playing that is associated with this thing. |
LOOKOUT | Looks for players to kill. Enters the CHASE states if it finds one. |
MAKEACTIVESOUND | Makes the object's active sound |
MAKEDEAD | Makes the object dead: Visible if stealth, and not solid. |
MAKEDEATHSOUND | Makes the object's death sound |
MAKEOVERKILLSOUND | Makes a slopping noise... |
MAKEPAINSOUND | Makes the object's pain sound. |
MAKESOUND | Starts the object's AMBIENT_SOUND/SIGHTING_SOUND |
MAKESOUNDRANDOM | Gives a 20% chance of making the object's AMBIENT_SOUND/SIGHTING_SOUND. |
MEANDER | Walk around aimlessly. Find targets to attack. |
MLOOK_FACE | Causes this object to face the MLOOK angle specified in brackets. |
MLOOK_TURN | Causes this object to turn by the MLOOK angle specified in brackets. |
MOVE_DOWN | Causes this object to move down by the amount specified in brackets. |
MOVE_FWD | Causes this object to move forward by the amount specified in brackets. Use a negative value to move backwards. |
MOVE_RIGHT | Causes this object to move right by the amount specified in brackets. Use a negative value to move left. |
MOVE_UP | Causes this object to move up by the amount specified in brackets. |
MORPH | Allows a thing to turn into another thing. Identical behaviour to BECOME, except health is filled up. |
NOISE_ALERT | Will cause nearby monsters to be alerted. Add it to a monsters death states so his final groan will warn nearby monsters to expect trouble ;) |
NOTHING | Does nothing. |
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). |
PLAYER_SCREAM | Makes the player's death scream. |
PLAYSOUND | Makes the sound specified in brackets. |
PLAYSOUND_BOSS | Similar to PLAYSOUND but will play the sound at full volume regardless of ALWAYS_LOUD flag. |
RANGE_ATTACK | Starts a range 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). |
RELOAD_CHECK | Checks to see whether the object needs to reload, and if yes then enters the objects RELOAD states |
RELOAD_RESET | Resets the RELOAD_SHOTS counter for this monster. |
RESCHASE | CHASE + look for bodies to resurrect. |
RESET_SPREADER | Resets a spreader attack. |
RTS_ENABLE_TAGGED | All triggers with the same tag are enabled. Mainly useful for BOSSES, as a faster alternative to the RTS command ONDEATH. Usage is: RTS_ENABLE_TAGGED(tagNum) |
RTS_DISABLE_TAGGED | All triggers with the same tag are disabled. Mainly useful for BOSSES, as a faster alternative to the RTS command ONDEATH. Usage is: RTS_DISABLE_TAGGED(tagNum) |
SET_SKIN(skin number) | Dynamically change the current skin to a different one. |
SET_INVULNERABLE | Used to make monsters with shielded/blocking states (like the Centaurs in Hexen). |
CLEAR_INVULNERABLE | Used to make monsters with shielded/blocking states (like the Centaurs in Hexen). |
SET_PAINCHANCE | Used like SET_PAINCHANCE(0%) and will dynamically change a monsters painchance.
Possible usage: if we do SET_PAINCHANCE(0%) at the start of a lengthy PAIN state, this will make sure the whole animation is played out and won't be interrupted by another shot which would normally make us re-start the pain animation again. |
SMOKING | Creates a smoke trail behind the object. |
SPARE_ATTACK | Starts the spare attack. |
SPAWN | Similar to DROPITEM action, but it doesn't force the object to be non-SOLID like DROPITEM does, plus the spawned object will have the same Angle and Side as the parent object. The name must be given in brackets, e.g. SPAWN(IMP) |
STOP | Stops the object from moving. |
SUPPORT_LOOKOUT | Looks for a player to support. |
SUPPORT_MEANDER | Follow a supporting player. Find targets to attack. |
THRUST | Throws the object like EXPLOSIONDAMAGE, but does no damage. _(Controlled by EXPLODE_DAMAGE.VAL and EXPLODE_RADIUS: In theory if it's negative then we would "pull" instead of "push")_. |
TOUCHY_DISARM | Prevents a touchy object from entering its TOUCH 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. |
TRANS_ALTERNATE | Used like TRANS_ALTERNATE(10%) and causes the object to alternate between visible and invisible at the rate specified. |
TRANS_FADE | Used like TRANS_FADE(10%) to fade the transparency of the object to the specified amount. |
TRANS_LESS | Used like TRANS_LESS(10%) to make the object less transparent by the specified amount. |
TRANS_MORE | Used like TRANS_MORE(10%) to make the object more transparent by the specified amount. |
TRANS_SET | Used like TRANS_SET(10%) to set the object transparency to the specified amount. |
TURN | Turns the object to the angle specified in brackets. |
TURN_RANDOM | Turns the object randomly between the current angle and that specified in brackets. |
UNBECOME |
Return a thing to it's original type if it has suffered a BECOME() previously.
If it has not been BECOMEd previously then nothing will happen. |
UNMORPH |
Return a thing to it's original type if it has suffered a MORPH() previously.
If it has not been MORPHed previously then nothing will happen. |
WALKSOUND_CHASE | CHASE + play walksound. |
- 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. |
Inventory | Specifies inventory. The player receives the inventory item (value in brackets is how much), up to the current limit for that type. |
InventoryLimit | Specifies the limit for inventory. The player's current limit for the inventory type is increased up to the value in brackets (or unchanged if it was already that high). |
Counter | Specifies a Counter. The player receives the Counter item (value in brackets is how much), up to the current limit for that type. |
CounterLimit | Specifies the limit for a Counter. The player's current limit for the Counter type is increased up to the value in brackets (or unchanged if it was already that high). |
Ammo and AmmoLimit:
AMMO TYPE | AMMO LIMIT TYPE |
---|---|
BULLETS | BULLETS.LIMIT |
SHELLS | SHELLS.LIMIT |
ROCKETS | ROCKETS.LIMIT |
CELLS | CELLS.LIMIT |
PELLETS | PELLETS.LIMIT |
NAILS | NAILS.LIMIT |
GRENADES | GRENADES.LIMIT |
GAS | GAS.LIMIT |
AMMO9 | AMMO9.LIMIT |
AMMO10 | AMMO10.LIMIT |
AMMO11 | AMMO11.LIMIT |
AMMO12 | AMMO12.LIMIT |
AMMO13 | AMMO13.LIMIT |
AMMO14 | AMMO14.LIMIT |
AMMO15 | AMMO15.LIMIT |
... | ... |
AMMO99 | AMMO99.LIMIT |
Health and Armour:
TYPE | DESCRIPTION |
---|---|
HEALTH | Health for the player. |
GREEN_ARMOUR | Green armour is the weakest (saves 33% of damage). 64% damage absorbed by player, 33% damage absorbed by Armor |
BLUE_ARMOUR | Blue armour is next (saves 50% of damage). 50% damage absorbed by player, 50% damage absorbed by Armor |
PURPLE_ARMOUR | Purple armour is next (saves 66% of damage). 34% damage absorbed by player, 66% damage absorbed by Armor |
YELLOW_ARMOUR | Yellow armour is next (saves 75% of damage). 25% damage absorbed by player, 75% damage absorbed by Armor |
RED_ARMOUR | Red armour is the strongest (Saves 90% of damage). 10% damage absorbed by player, 90% damage absorbed by Armor |
Keys:
TYPE | DESCRIPTION |
---|---|
REDCARD | Red keycard. |
BLUECARD | Blue keycard. |
YELLOWCARD | Yellow keycard. |
REDSKULL | Red skull key. |
BLUESKULL | Blue skull key. |
YELLOWSKULL | Yellow skull key. |
GREENCARD | Green keycard. |
GREENSKULL | Green skull key. |
GOLDKEY | Gold key. |
SILVERKEY | Silver key. |
BRASSKEY | Brass key. |
COPPERKEY | Copper key. |
STEELKEY | Steel key. |
WOODENKEY | Wooden key. |
FIREKEY | Fire key. |
WATERKEY | Water key. |
Powerups:
TYPE | DESCRIPTION |
---|---|
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_BERSERK | Gives the player extra strength for the time period. Only affects strength-related weapons (just the punch). |
POWERUP_INVULNERABLE | Makes the player completely invulernable for the time period. Also makes everything look white. |
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_LIGHTGOGGLES | Allows the player to see with light goggles, making all dark areas look like they are fully lit up. |
POWERUP_NIGHTVISION | Gives the player night vision goggles, similiar to LIGHTGOGGLES but everything gets a more realistic green shade. |
POWERUP_PARTINVIS | Makes the player partially invisible for a while. Monsters will have a harder time trying to shoot you. |
POWERUP_SCUBA | The scuba allows the player to breathe underwater! Be warned though, the air does not last forever. |
POWERUP_TIMESTOP | Everything in the gameworld stops, except the player! This includes any rockets you might fire, so switch to your fists or bullets instead ;) |
Inventory and InventoryLimit:
INVENTORY TYPE | INVENTORY LIMIT TYPE |
---|---|
INVENTORY01 | INVENTORY01.LIMIT |
INVENTORY02 | INVENTORY02.LIMIT |
INVENTORY03 | INVENTORY03.LIMIT |
INVENTORY04 | INVENTORY04.LIMIT |
INVENTORY05 | INVENTORY05.LIMIT |
INVENTORY06 | INVENTORY06.LIMIT |
INVENTORY07 | INVENTORY07.LIMIT |
INVENTORY08 | INVENTORY08.LIMIT |
INVENTORY09 | INVENTORY09.LIMIT |
INVENTORY10 | INVENTORY10.LIMIT |
INVENTORY11 | INVENTORY11.LIMIT |
INVENTORY12 | INVENTORY12.LIMIT |
INVENTORY13 | INVENTORY13.LIMIT |
INVENTORY14 | INVENTORY14.LIMIT |
INVENTORY15 | INVENTORY15.LIMIT |
... | ... |
INVENTORY99 | INVENTORY99.LIMIT |
Counter and CounterLimit:
COUNTER TYPE | COUNTER LIMIT TYPE |
---|---|
LIVES (aka COUNTER01) | LIVES.LIMIT |
SCORE (aka COUNTER02) | SCORE.LIMIT |
MONEY (aka COUNTER03) | MONEY.LIMIT |
EXPERIENCE (aka COUNTER04) | EXPERIENCE.LIMIT |
COUNTER05 | COUNTER05.LIMIT |
COUNTER06 | COUNTER06.LIMIT |
COUNTER07 | COUNTER07.LIMIT |
COUNTER08 | COUNTER08.LIMIT |
COUNTER09 | COUNTER09.LIMIT |
COUNTER10 | COUNTER10.LIMIT |
COUNTER11 | COUNTER11.LIMIT |
COUNTER12 | COUNTER12.LIMIT |
COUNTER13 | COUNTER13.LIMIT |
COUNTER14 | COUNTER14.LIMIT |
COUNTER15 | COUNTER15.LIMIT |
... | ... |
COUNTER99 | COUNTER99.LIMIT |
DDF docs written by Andy Baker and Ziggy Gnarly, with updates by Andrew Apted, Andy Brewood and Luke Brennan. © EDGE Team, et al. 1998 - 2024.