Entity Description
func_areaportal Used to hide areas from the compiler
func_button Triggers other entities to act
func_clock An annoying to use clock
func_door A single-plane door
func_door_rotating A rotating door
func_door_secret Doors that look like walls until you shoot them
func_explosive Destroyed when triggered
func_killbox Kills everything inside of it
func_object Falls down when triggered
func_plat A moving platform
func_rotating A rotating platform
func_timer A timing device for other entities
func_train A moving object that follows path_corner entities
func_wall A triggered wall
func_water A water brush that can move


When you make a door in quake 2, the engine see it as always open which causes it to draw polys beyond the door. Func_areaportal stops this behavior.

A func_areaportal must always be built within a func_door variation. After you make the doors, place an areaportal so that it completely covers the hole the door makes.

The areaportal needs to be there when the doors are closed, and not there when they are open. Do this by giving areaportal a targetname, and the door a target.


A func_button is a simple way to trigger other entities. This is commonly used for doors and platforms in vanilla. To make one, just create a small brush, make it a func_button, and give it the applicable keypairs from below.


angle: The angle the button will move when pressed.

target/targetname: Every button needs a target, but can also be triggered by something else if it has a targetname.

pathtarget: Used for trigger_elevators to set which floor the button should stop the elevator on.

speed: It determines the speed in which the button moves when it is pushed.

wait: The amount of time that the button will pause before becoming active again. If you don’t want the button to return then set the wait to -1.

lip: Lip is the length of the button that is offset after being activated. So if you have a large lip value then more of the button will stick out after being pressed in.

health: A value for health can be set if you want the button to be activated when shot. The button must be killed to be activated. Pushing it won’t do anything after a value for health is set. The higher the value for health the more damage is needed to trigger it.

sounds: There are no choices for different sounds, only one sound is available. If you set this key to anything else than 1, you will always get the same standard button sound. If you set it to 1, you will have no sound.


The func_clock acts like a time of day clock and in most instances it will be used with a target_character and target_string. It’s an annoying entity to use, and has limited uses. The easiest way to explain it is with an example. We will create a button that when pressed, makes a counter appear on a wall and countdown from 10 to 0, and trigger an explosion via target_explosion.


count: The amount of time on the clock.

pathtarget: The target that will be triggered once count runs out.

style: The visual style of the clock. There are 3 styles. 0(xx), 1(xx:xx), and 2(xx:xx:xx).


1 timer_up: Makes the timer count up.

2 timer_down: Makes the timer count down.

4 start_off: Makes the clock not start when the level does, should usually be used so the countdown be triggered later.

8 multiuse: Always keep this on.

Create a func_clock entity. This will control the clock. Set count to 10, style to 2, and pathtarget to bang. This will be the targetname of the target_explosion for the explosion. Set the “target” to “string” which will be the target_string ent that we will make next. Give the func_clock a “targetname” of “clock” so we can use a button to trigger it. Set the timer_down, start_off, and multiuse spawnflags.

Create a target_string ent, with a “targetname” of “string”, and a “team” of “countdown”.

Now create eight 8x16 brushes that represent the style 2 that we chose earlier (xx:xx:xx). Select them all and make them target_characters. You can set “count” and “team” here. “count” is the position of the number, starting at 1, ending in 8. Set “team” to countdown, just like on the target_string from earlier. The 8 brushes MUST be set to the vanilla num_0 texture.

Now make a func_button with a “target” of “clock” and a “wait” of “-1” so it can only be pressed once.

For the explosion, make a target_explosion with a “targetname” of “bang” and “dmg” of “10000”. This will create a big bang that kills everything near it.

Func_clock is also usable without the visual part, but it would be better to use a func_timer in that case.


It is exactly what it sounds like, a door. The use is well explained by just reading the keypairs and spawnflags.


message: Prints a message when the door is open. Does not work if the door is triggered remotely.

angle: The angle the door is opened.

health: If set, the health of the door will determine if it opens or not.

speed: How fast a door opens/closes.

wait: The time between opening and closing. To never close, set it to -1.

lip: The length of the door remaining when it is open.

dmg: The damage the door does if blocked.

sounds: If set to 1, the door will have no sound.


start_on: Makes the door close when triggered.

crusher: No pause between attempts to close if blocked, basically just kills things faster.

nomonster: Monster ents cannot open the door.

toggle: Only for triggered doors. One trigger to open, one to close it.


This ent uses the same values from func_door, with a few small changes.


distance: Prints a message when the door is open. Does not work if the door is triggered remotely.


1 reverse: Rotates in the opposite direction

2 x-axis: Rotates on the x-axis.

4 y-axis: Rotates on the y-axis.


A func_door_rotating must have an origin brush, or some sort of center to rotate around. Make the brushes, and set them all as a func_door_rotating, inlcuding the origin. After this, select the origin brush only, and give it the surface property of “origin”. Finally give it a distance and specify the axis in the spawnflags.


These are doors that look like walls until you shoot them. They have a few options that other doors do not.


angle: direction the door will slide open

dmg: the amount of damage the door will give off when the player blocks the progress of the door

wait: duration the door stays open


1 once_open: the door only opens once

2 1st_left: the door moves slightly to the left before using the angle of the door

4 1st_down: the door moves slightly down before using the angle of the door

8 always_shoot: door opens when shot regardless of other interactions


Commonly used along with a func_object. Simply make a brush into a func_explosive and give it a dmg keypair for a visual effect.


dmg: radius of the explosion

health: amount of damage the brush can take before exploding

mass: the amount of rubble produced by the explosion


This ent kills everything inside of it. Create a brush the size of the area you want to kill, then give it a targetname. Then create a trigger to trigger the func_killbox. This can be a button or anything else you choose. Give the trigger a target with the same name as the targetname from earlier. You also need to give the trigger a pathtarget keypair with the same targetname.


targetname: name of the ent to trigger


An ent that when triggered, falls down to the floor. Works well with a func_explosion.


targetname: name of the ent to trigger


These are easy to use ents once you know how they work. Here a few rules to follow:

  • platforms can only be made to go up, which means their idle position is the lowest point the platform will be
  • an exception to this is if they are targeted by a trigger
  • platforms must be drawn in the raised position in map editors


speed: default 200, speed of the platform

accel: default 50, acceleration of the platform

deceleration: default 50, deceleration of the platform

lip: default 8, how high the platform is off the ground in the lowered position

height: how far the platform moves in method two

dmg default 2, how much damage the platform will do if stood under

sounds: 1 = base fast, 2 = chain slow

targetname: the name of the entity

There are two main ways to make a func_plat. The first method is to use the physical dimensions of the brush instead of some of the keypairs. In this version the height keypair is replaced by the physical height of the brush. The lip keypair is still used to specify how high off the ground the platform will be when in the lowered position.

The second method uses the height keypair and ignores the physical dimensions of the brush. This also means the lip keypair is not used. To use this method, draw the brush at the extended position, and make the height the distance the platform will travel down.

method 1 method 2


Like it sounds, this is a rotating entity that is used to create things like fans that you see in the single player campaign. There are two parts to a func_rotating. The first part is the part that will rotate, for example, fan blades. The second part is the origin, which forms the object the first part will rotate around.

After you create the brushes themselves, select all of them, and turn them into a func_rotating. After that select the non-moving part of the brush and change the surface property to origin. By default it will rotate on the z-axis (parallel to the floor), you can change this with spawnflags.


speed: default 100, the speed of the rotation

dmg: default 2, the amound of damage when striking a player


1 start_on: the rotation starts on

2 reverse: makes the brush spin in the opposite direction

4 x_axis: changes the axis to be parallel to the wall at 90 and 270 degrees

8 y_axis: changes the axis to be parallel to the wall at 0 and 180 degrees

16 touch_pain: by default, damage is only inflicted when stuck between the rotation and something else, touch_pain causes damage anytime it touches another ent/player

32 stop: makes the rotation stop immeadiately and not push players

64 animated: used if the rotating brush contains animated textures

128 animated_fast: same as above, but the animation runs faster


This is used to trigger it’s targets at set intervals of time. This can be used to loop music, open a door after a set amount of time, create lighting effects, and many other things. These can be used, but not touched.


wait: default 1, time between firing

random: default 0, allows for variance between waits, (wait - random) and (wait + random)

delay: default 0, delay before firing when turned on

pausetime: default 0, additional delay only used the first time, and only if the spawnflag start_on is used

target: the target(s) of the func_timer

If a delay of 10 is set, and a pausetime of 20, the timer will fire 30 seconds after you begin the level. If it is turned off, then back on, it will then have the normal delay of only 10 seconds.


1 start_on: starts as you enter the level


A moving entity that travels along a specified path. In order to work, it needs to be paired with at least 2 path_corners.

The first step is to create the actual platform that will move and make it a func_train. It does not matter where this is placed in the world, as it will automatically spawn at the first path_corner.

The second step is to make the path_corner ents. Each path_corner links to the next, so each will have a targetname, and target the next corner. If you want it to travel in a circuit make the final corner target the first corner.


speed: default 100, the speed of the train

dmg: default 100, the amount of damage you will take if crushed by the train

noise: the sound that will be played when the train is moving, a list of sounds can be found here.

target: a required keypair for a func_train to work, it should target thr first path_corner

targetname: if given a targetname, the train will have to be triggered


1 start_on: by default a train will only start moving when triggered by another entity, if this is set it will move when the level starts

2 toggle: allows the train to be toggled on and off multiple times, this can be combined with a func_button and a trigger_elevator to make an elevator.

4 block_stops: allows the train to stop when hitting a player or another ent, and will not damage it


This is just a wall that can be triggered into or out of existance. It must be triggered by something to work.

To use this ent first make a wall, then turn it into a func_wall and give it a targetname. Then create a way for it to be triggered. Anything like a func_button or a normal trigger will work. Now when triggered, the wall will trigger on/off.


trigger_spawn: always use this spawnflag when using this ent

toggle: set this is using start_on below

start_on: makes the wall work in reverse, when triggered a wall will disappear instead of appear


This is used to make a water/slime/lava brush that can move. It can simulate the effect of water slowly moving up and down in a pool.

To use this, the first step is to create the water brush, and turn it into a func_water. The water **cannot* be translucent. It must be given a targetname in order to work as well, which means it needs to be triggered by something. A func_button or a normal trigger can be used.


angle: an angle must be set, usually you will use either up (-1) or down (-2), but, it can be used in any direction

sounds: 0 = no sound, 1 = water, 2 = lava

speed: default 25, speed of the water movement

wait: default -1, how long the water waits at the destination before returning, -1 means it can be toggled

lip: default 0, lip remaining at the end of the movement


1 start_on: water will start at the destination, and then work in reverse

© Deine Mudda 2020