Complex Entities

! If an entity has something entered in the name field, such as a door, it must have a corresponding entity targeting it, or it will not work.

   

Triggers and Targets
Okay, so now you can make brushes behave in various strange and exciting ways rather than just sitting there. But, how do you start or stop them from working? And how about the more complex ones - like lifts, and teleporters? Triggers are entities that make other entities react. Walking over a certain spot might trigger a door to open, lights to turn on , print a message, activate a trap. It might do one or all of those.

A number of entities have two important fields: name and target. Any entity with something in the target field will activate all the entities with the same text in the name field.

For instance : If a button has a target of nasty_trap then when a player activates the button every entity in the level with a name of nasty_trap will activate. If you make a func_door and a trap_shooter with the name nasty_trap then the door will open and the trap will start shooting the moment the button with the target nasty_trap is activated.
   

! The target and trigger names are case sensitive, and do not allow spaces.
   

Making a Button to Open a Door
Lets got back to the door we made just while ago. Select the door, and open it's properties and then make the "name" attributes field "my_door". (You could, of course, make the name anything else you like.) Then create a new brush on the wall and tie it to the func_button entity.

The func_button works by moving in its direction until it's moved its entire length. Once it does that it activates its triggers and returns to the starting position. You might need to fiddle with it a bit until it looks good. Set the targeted object field to my_door. Now when you compile your map and touch the button, it should move in the direction you set it and once it's traveled its entire length it will activate its targets and the door should open.
   

 

Elevators - Func_Plats
Elevators are fairly simple devices. Make the brush you want to use as a the elevator so it's in the 'up' position (at the TOP of it's intended travel range). Tie it to the func_plat entity and set the height to the number of units to the bottom and the speed you want it to travel. When the game starts the lift will automatically be in the down position ( at the BOTTOM of it's intended travel range) waiting for it to be activated. The problem is: What do you do when you want the lift to start at the top? Well, you can't do it with a func_plat then. Use a func_door, just set the direction for the door to "down". If you need the lift to be a platform and not a column then set the doors lip to the distance it needs to travel down.

 

Teleporters
Another commonly troublesome type entity is the teleporter. Teleporters come in two pieces: the trigger_teleport brush which teleports you and the info_teleport_destination entity which is where you go.

Set up a brush that will teleport the player once they touch it. Make it an entity "trigger_teleport". Give it a "target" in the properties of this trigger_teleport. For example, "tele1". Now, use the entity tool, and place an info_teleport_destination entity (just a regular entity) and give it the same "name" that you gave the trigger_teleport's "target" (tele1).
   

! Remember: When you tie a brush to a trigger entity the brush cannot be seen in the game. If you want to be able to 'see' the teleporters, you'll have to make another brush to represent the teleporter that you see in the map. Now stick the actual trigger_teleport brush around (or in) it so it's triggered once the player gets near or touches it.

 

! It is not possible to start and stop and then restart trains in Quake. Unless they are tied to a trigger such as a button, they are moving when your level starts, and can only be stopped at a pre-chosen "path_corner".

Trains
Trains are platforms that move by following a particular path - usually back and forth. They have two different parts : the brush (func_train), which is the actually platform, and entities (path_corner) which are the stops or corners the train makes on its path.

It doesn't actually matter where you place a func_train. When the level starts it will always begin at the path_corner specified by its first stop field. Then it will go to the next stop specified in the path_corner. Every path_corner must have a "next stop target" otherwise you will get an error when Quake loads. If you want the train to pause for a preset amount of time at a path_corner and not continue immediately then set the wait to whatever you want. Do this by turning off "smart edit" in the properties of the path_corner you want, and click [add], you can now add: Key: wait Value: x , where "x" is the number of the amount of time you want the train to pause. You could also use this to stop the train, set the wait at 999999.

The actual centre of the path_corner dictates the train's position.
The bottom of your train will line up with the centre of your path_corner's.
In Worldcraft's "xy" view, the bottom left corner of your train will align with the centre of the path_corner.
   

 
Other Entities
Quake has many more entities to offer, however working with most of them is no different than the ones we've discussed here.

 

   
[Previous] [Table of Contents] [Next]