Action List
Here is a list of all of the actions available in Doom 64. Many of the actions are labeled as "(undefined)" when they are not specifically defined for use in Doom Builder 64, but they can still be used. For linedefs, you just need to type in the corresponding number of an undefined action to use it. For macros, at the top of the script, you will use the "#define" property, followed by the name you want to use as the macro, then the macro number and its value. For example this is how the simple door open action is defined: "#define Door_Open(tag) 2:tag".
The majority of actions target a specific line, sector, or thing with a specified tag. Additional properties are sometimes assigned via action 204, which sets the global integer / macro integer. Macro actions which have two inputs are, in reality, a combination of actions where action 204 happens first, followed by another action for the specific effect.
There are some limits to moving sectors. Only one height-changing action can operate on a single sector at the same time. Therefore, it is recommended to use the wait action before doing another action on the same sector if using a macro. Further, the Doom 64 Remaster can’t have more than 30 moving ceilings and floors at the same time while EX based ports can have more.
Doors
Some doors can be opened by monsters by default, and the others can still be opened by monsters if "Trigger By Dead Thing" tag is set on the linedef.
Action # | Line Action | Macro Action | Description |
---|---|---|---|
1 | Door Open Wait Close | (undefined) | Opens the door of adjoining sector, waits for a few seconds, and closes it again. Monsters can activate this by default. |
31 | Door Open | (undefined) | Opens the door of adjoining sector. The door won't close by itself. |
4 | Door (Classic) Open Wait Close Tagged | Door_OpenWaitClose(tag) Door_Raise(tag) | Opens the door of tagged sector, waits for a few seconds, and closes it again. Monsters can activate this by default. |
2 | Door (Classic) Open Tagged | Door_Open(tag) | Opens the door of tagged sector. The door won't close by itself. Monsters can activate this by default. |
3 | Door (Classic) Close Tagged | Door_Close(tag) | Closes the door of tagged sector. The door won't re-open by itself. |
16 | Door (Classic) Close Wait 30 Sec Open Tagged | Door_CloseWaitLongOpen(tag) Door_CloseWaitOpen(tag) | Closes the door of tagged sector, waits 30 seconds, and opens it again. |
108 | Door (Classic) Fast Open Wait Close Tagged | Door_OpenWaitCloseFast(tag) Door_RaiseFast(tag) | Quickly opens the door of tagged sector, waits for a few seconds, and closes it again. |
109 | Door (Classic) Fast Open Tagged | Door_OpenFast(tag) | Quickly opens the door of tagged sector. The door won't close by itself. |
110 | Door (Classic) Fast Close Tagged | Door_CloseFast(tag) | Quickly closes the door of tagged sector. The door won't re-open by itself. |
117 | Door (Split) Fast Open Wait Close | (undefined) | Opens a split door of adjoining sector, waits for a few seconds, and closes it again. |
118 | Door (Split) Fast Open | (undefined) | Opens a split door of adjoining sector. The door won't close by itself. |
Floors
Any sector that is set to an action that can crush will instantly kill anything in sectors with special 666. There is a limit to the number of floors that can be moved at the exact same time.
Action # | Line Action | Macro Action | Description |
---|---|---|---|
19 | Floor Lower to Nearest | Floor_LowerToNearest(tag) Floor_Lower(tag) | Lowers the tagged floor to the height of the highest neighboring floor. |
38 | Floor Lower to Lowest | Floor_LowerToLowest(tag) | Lowers the tagged floor to the height of the highest neighboring floor. |
37 | Floor Lower to Lowest and Change | Floor_LowerToLowestChange(tag) Floor_LowerChange(tag) | Lowers the floor to the height of the highest neighboring floor and changes the floor texture and sector special to match the neighboring sector. |
36 | Floor Lower to 8 Above Nearest Fast | Floor_LowerToNearestFast(tag) Floor_LowerFast(tag) | Lowers the floor at turbo speed to 8 units above the height of the highest neighboring floor. |
119 | Floor Raise to Nearest | Floor_RaiseToNearest(tag) | Raises tagged floor to the height of the lowest neighboring floor. |
5 | Floor Raise to Ceiling | Floor_RaiseToCeiling(tag) Floor_Raise(tag) | Raises the tagged floor to the height of the lowest neighboring ceiling. |
56 | Floor Raise to 8 Below Ceiling Crush | Floor_RaiseCrush(tag) | Raises the tagged floor to 8 units below the height of the lowest neighboring ceiling. Things are allowed to be crushed by this movement. |
58 | Floor Raise by 24 | Floor_RaiseTwentyFour(tag) | Raises the tagged floor by 24 units. |
59 | Floor Raise by 24 and Change | Floor_RaiseTwentyFourChange(tag) | Raises the tagged floor by 24 units and changes the floor texture and sector special to match the sector adjacent to the front side of the linedef that triggered this action. |
212 | (undefined) | Floor_MoveBy(tag, value) Floor_MoveByValue(tag, value) | Moves the floor by the amount specified by the value or global integer (action 204). Positive values raise the floor, negative values lower it. |
228 | (undefined) | Floor_MoveByFast(tag, value) Floor_MoveByValueFast(tag, value) | Same as above, but the floor moves at turbo speed. |
229 | (undefined) | Floor_MoveByInstant(tag, value) Floor_MoveByValueInstant(tag, value) | Same as above, but the floor moves instantly. |
247 | (undefined) | Floor_MoveTo(tag, height) Floor_MoveByHeight(tag, height) | Moves the floor to a specific height or global integer (action 204). Direction of the movement depends on the floor's starting height. |
244 | (undefined) | Floor_Set(tag, height) Floor_SetHeight(tag, height) | Same as above, but the floor moves instantly. Effectively sets the floor's height value. |
Ceilings
Any sector that is set to an action that can crush will instantly kill anything in sectors with special 666. Once a ceiling is activated as a crusher, it will no longer respond to other ceiling actions even if stopped; it can only be restarted as a crusher. There is an upper limit to the number of crushers in Doom 64, however the EX versions have a higher upper limit.
Action # | Line Action | Macro Action | Description |
---|---|---|---|
43 | Ceiling Lower to Floor | Ceiling_LowerToFloor(tag) | Lowers the tagged ceiling to the height of the floor. |
44 | Ceiling Lower to Floor (and Crush, if available) | Ceiling_LowerToFloorTwo(tag) Ceiling_RaiseCrushTwo(tag) | Lowers the tagged ceiling to the height of the floor and crushes. |
6 | Ceiling Crush Fast Loop | Ceiling_CrushFastLoop(tag) Ceiling_RaiseCrush(tag) | Activates fast crusher moving up and down on tagged sector. Won't stop by itself. |
25 | Ceiling Crush Slow Loop | Ceiling_CrushSlowLoop(tag) Ceiling_RaiseCrushOnce(tag) | Activates slow crusher moving up and down on tagged sector. Won't stop by itself. |
57 | Ceiling Stop Crusher | Ceiling_StopCrusher(tag) | Stops the current crusher in the tagged sector, if applicable |
141 | Silent Crush and Instant Kill (needs sector special 666) | Ceiling_InstantKill(tag) Ceiling_SilentCrusher(tag) | Activates a silent ceiling crusher on tagged sector which perpetually moves. |
232 | Ceiling Crush and Raise Fast Once | Ceiling_CrushRaiseFastOnce(tag) Ceiling_RaiseCrushOnceFast(tag) | Performs one cycle of a fast crusher on tagged sector, then stops. |
210 | (undefined) | Ceiling_MoveBy(tag, value) Ceiling_MoveByValue(tag, value) | Moves the ceiling by the amount specified by the value or global integer (action 204). Positive values raise the ceiling, negative values lower it. |
226 | (undefined) | Ceiling_MoveByFast(tag, value) Ceiling_MoveByValueFast(tag, value) | Same as above, but the ceiling moves at turbo speed. |
227 | (undefined) | Ceiling_MoveByInstant(tag, value) Ceiling_MoveByValueInstant(tag, value) | Same as above, but the ceiling moves instantly. |
252 | (undefined) | Ceiling_MoveTo(tag, height) Ceiling_MoveByHeight(tag, height) | Moves the ceiling to a specific height or global integer (action 204). Direction of the movement depends on the ceiling's starting height. |
245 | (undefined) | Ceiling_Set(tag, height) Ceiling_SetHeight(tag, height) | Same as above, but the ceiling moves instantly. Effectively sets the ceiling's height value. |
Platforms
Action # | Line Action | Macro Action | Description |
---|---|---|---|
10 | Plat Down Wait Up | Plat_DownWaitUp(tag) | Lowers the tagged floor to the lowest neighboring floor, waits for 3 seconds, and raises back up. Monsters can activate this by default. |
121 | Plat Down Wait Up Fast | Plat_UpWaitDownFast(tag) | Quickly lowers the tagged floor to the lowest neighboring floor, waits for 3 seconds, and raises back up. |
53 | Plat Down Wait Up Loop | Plat_DownWaitUpLoop(tag) Plat_PerpetualRaise(tag) | Lowers the tagged floor to the lowest neighboring floor at slow speed, waits for 3 seconds, and raises back up. Then, repeats forever. |
54 | Plat Stop Moving | Plat_Stop(tag) | Stops the tagged platform, if it is moving. |
122 | Plat Up Wait Down | Plat_UpWaitDown(tag) | Raises the tagged floor to the highest neighboring floor, waits for 3 seconds, and lowers back down. |
123 | Plat Up Wait Down Fast | Plat_DownWaitUpFast(tag) | Quickly raises the tagged floor to the highest neighboring floor, waits for 3 seconds, and lowers back down. |
22 | Plat Raise and Change | Plat_RaiseChange(tag) | Changes the tagged floor texture to that of the neighboring floor and raises the floor to the highest neighboring floor. |
66 | Plat Raise by 24 Units and Change | Plat_RaiseByTwentyFourChange(tag) | Changes the tagged floor texture to that of the neighboring floor and raises the floor by 24 map units. |
67 | Plat Raise by 32 Units and Change | Plat_RaiseByThirtyTwoChange(tag) | Changes the tagged floor texture to that of the neighboring floor and raises the floor by 32 map units. |
236 | (undefined) | Plat_DownWaitUpBy(tag, value) Plat_DownUpByValue(tag, value) | Lowers the floor by the amount specified by the value or global integer (action 204), waits for 3 seconds, and raises back up. Negative values will cause undefined behaviour. |
237 | (undefined) | Plat_DownWaitUpFastBy(tag, value) Plat_DownUpFastByValue(tag, value) | Same as above, but the platform moves at turbo speed. |
238 | (undefined) | Plat_UpWaitDownBy(tag, value) Plat_UpDownByValue(tag, value) | Raises the floor by the amount specified by the value or global integer (action 204), waits for 3 seconds, and lowers back up. Negative values will cause undefined behaviour. |
239 | (undefined) | Plat_UpWaitDownFastBy(tag, value) Plat_UpDownFastByValue(tag, value) | Same as above, but the platform moves at turbo speed. |
Stairs
Action # | Line Action | Macro Action | Description |
---|---|---|---|
8 | Stairs Build 8 Units Slow | Stairs_BuildEight(tag) Stairs_Build(tag) | Builds steps 8 units high, starting from tagged sector. |
100 | Stairs Build 16 Units Fast | Stairs_BuildSixteenFast(tag) Stairs_BuildFast(tag) | Builds steps 16 units high, starting from tagged sector. The building process moves at turbo speed. |
Teleports
These actions can only teleport the thing which activates them (with some caveats). Here tid is the teleport destination's tag number. On the Doom 64 Remaster, only one teleport action per macro is permitted on the player.
Action # | Line Action | Macro Action | Description |
---|---|---|---|
39 | Teleport | Teleport_Normal(tid) Teleport_ToDest(tid) | Teleports the activating thing normally (with sound and green glow) to tagged destination. On the Doom 64 Remaster you can not teleport via a switch. |
125 | Teleport (monsters only) | (undefined) | Teleports monsters only (with sound and green glow) to tagged destination. |
249 | Silent Teleport | Teleport_Silent(tid) Teleport_Stomp(tid) | Teleports the activating thing without any sound and glow to tagged destination. On the Doom 64 Remaster you can not use this via a switch if it is a single action but it works with a macro. Originally thought to be player-only, monsters can activate this too if "Trigger By Dead Thing" is set on the referencing linedef. |
Thing Specials
Action # | Line Action | Macro Action | Description |
---|---|---|---|
224 | Thing Spawn | Thing_Spawn(tid) | Spawns things of same tag, they must have "Spawner" checked. |
94 | Thing Alert | Thing_Alert(tid) | Alerts all things with this tag toward the thing which activated this action. Can cause a crash in Doom 64 EX if a dead thing triggers this action. |
93 | Thing Disable Infighting | Thing_ModifyFlags(tid) | Stops monsters of same tag from infighting. |
242 | Thing Fade Out | Thing_FadeOut(tid) Thing_Dissolve(tid) | Tagged thing fades away and is removed. Most often used to remove corpses. |
233 | Freeze Player (Tag = Tics) | Player_Freeze(tics) Thing_SetReactionTime(tics) | Freezes the player or, if activated by a monster, delays their projectile/hitscan attacks for a specified number of tics (30 tics = 1 second). Player can still turn in the Doom 64 Remaster but can't turn in Doom 64 EX. |
202 | Spawn Dart | Thing_SpawnDart(tid) | Tagged thing must be a Projectile Spot (thing type 2050) and must not have "Spawner" checked. Shoots a dart in the direction the projectile spot is facing. |
231 | Spawn Tracer | Thing_SpawnTracer(tid) | Tagged thing must be a Projectile Spot (thing type 2050) and must not have "Spawner" checked. Spawns an explosive projectile which homes in on the player. |
211 | Thing Spawn Silent | (undefined) | (Doom 64 EX+) Spawns things of same tag without sound, they must have "Spawner" checked. |
255 | Spawn Projectile (Global Integer = Type#) | (undefined) | (Doom 64 EX+) Use action 204 to set global integer, which will spawn that particular enemy projectile. |
"Ghost things" can be created if the "Thing Spawn" process is interupted by a "Thing Fade Out". Ghost enemies will not take any damage and ghost items cannot be picked up. The ghost things page demonstrates how they are created and used.
Lights
Action # | Line Action | Macro Action | Description |
---|---|---|---|
17 | Start Light Strobing | (undefined) | Starts a light which brightens every second on the tagged sector which matches the linedef tag. |
222 | (undefined) | Sector_CopyLights(dsttag, srctag) | Instantly copies the lights at sector with the line tag / dsttag, from the sector with the tag defined by srctag or global integer (action 204). |
234 | Change Light by Tag Blend High Light | SetLightID(dsttag, srctag) | Smoothly blends upper wall and ceiling lights at sector with the line tag / dsttag, from the sector with the tag defined by srctag or global integer (action 204). |
235 | (undefined) | Sector_CopyLightsAndInterpolate(dsttag, srctag) | Smoothly transitions the lights at sector with the line tag / dsttag, from the sector with the tag defined by srctag or global integer (action 204). This action operates on the "LIGHTS" lump and will change the color of any sector that has the same color as the destination tag. Therefore, it is recommended to give the destination sector a unique sector color. |
205 | (undefined) | Sector_SetFloorColorID(tag, id) | Changes the tagged sector floor color to the light index given by the id or global integer (action 204). |
206 | (undefined) | Sector_SetCeilingColorID(tag, id) | Changes the tagged sector ceiling color to the light index given by the id or global integer (action 204). |
207 | (undefined) | Sector_SetThingColorID(tag, id) | Changes the tagged sector thing color to the light index given by the id or global integer (action 204). |
208 | (undefined) | Sector_SetUpperWallColorID(tag, id) | Changes the tagged sector upper wall color to the light index given by the id or global integer (action 204). |
209 | (undefined) | Sector_SetLowerWallColorID(tag, id) | Changes the tagged sector lower wall color to the light index given by the id or global integer (action 204). |
The light id, as opposed to the tag, refers to a specific light index. The first set of lights (0 to 255) are grayscale from black to white. The subsequent light indices refer directly to the lights lump, that is built in the map WAD, where the first light begins at 256. It can be hard to tell which light you are referring to just in a map editor, however you can look at the lights lump in a program like Slade to determine which lights are in which order.
Macro Control
Action # | Line Action | Macro Action | Description |
---|---|---|---|
246 | Macro Restart at Batch ID | loop(times){ } | In a macro this loops actions within the brackets a given amount of times (see the example). If used as a line action, the line tag will determine the number of times to loop, although it will not loop until this action is triggered again. Use action 204 to set the line of the macro to restart the macro in powers of 10. First set of actions is 10, then if a wait is used the the following actions begin at 20, and ect... |
248 | Macro Suspend | Macro_Suspend(id) | Stops the macro that is currently active. Any actions that were started prior will still finish, such as camera movements. The id is not used. |
250 | Macro Toggle On | Macro_Enable(id) | Enables the macro referenced to by the id to be activated when triggered. By default this is the state the macros are in. |
251 | Macro Toggle Off | Macro_Disable(id) | Disables the macro referenced to by the id from being activated. Use action 250 to re-enable the macro. |
256 - 511 | Macro # | (undefined) | Activate specific macro where the macro number added to 255. For example macro 1 is activated by action 256. |
(none) | (not available) | wait | The macro will complete all preceding actions before continuing the subsequent actions when used. This is a macro-specific action which sets a new line of actions in a macro. |
203 | Delay (Tag = Tics) | delay(tics) | If used in a macro, it will delay the start of the subsequent actions by tics (30 tics is 1 second) and set a new line of actions. |
When controlling macros the id does not refer to the macro number itself but how it is referenced to in linedef actions, where 255 is added to the macro number. Thus the id for macro 1 would be 256. For linedef actions the id is set by the line tag.
Looping Specifics
Actions can be looped within a macro with action 246. It will loop back to the line of actions where it started, thus it is recommended to use wait or delay actions to set new lines. A looping macro can be canceled early by line action 248: Macro Suspend. Below is an example of how a loop is formatted.
macro 1 { non looping action; delay(0); loop(times) { action to loop; action to loop; } non looping action; } //end of macro
Specials
Action # | Line Action | Macro Action | Description |
---|---|---|---|
201 | Camera Set | Camera_Set(tid) | Set camera view and angle to the camera (or thing) tagged with tid. |
200 | Camera Clear | Camera_Clear(tid) | Set camera view to the camera (or thing) tagged with tid and aim at player (click here for example). |
243 | Camera Move | Camera_MoveAndAim(tid, nexttid) | Aim camera view at camera (or thing) tagged with tid and gradually move camera to camera (or thing) tagged with tid + 1. Once the camera reaches thing tagged with tid + 1 it will keep moving to things with sequentially higher tags until the next thing tag is missing. nexttid is not used (click here for example). |
225 | Quake (Tag = Tics) | Quake(tics) | Shakes the screen for the specified number of tics (30 tics = 1 second) with sound. This sound can bug out if it is playing during a level exit. |
204 | Set Global Integer Macro Integer (value = tag) | PushVar(var) | Used in combination with other actions and sets the value used in them. |
240 | Trigger Line Group (Pick random of group) | Line_TriggerRandomLinesByTag(tag) | Will trigger a random line out of a set of lines with the same tag. This is not compatible with the "Trigger By Dead Thing" flag on the Doom 64 Remaster. |
When using action 243 (Camera Move) it will move around the thing used for the target, as if the thing itself was a camera. That means using a key as a target, the key will end up where the camera stops at the very end. However if the moved thing collides with its prior position it will crash the game; which is a potential problem for players and monsters. When the camera is set to a monster, the camera's height will be at the bottom of the monster. For flying monsters this is not an issue, however for other monsters it can partially clip through the floor.
Additional Sector Properties
Action # | Line Action | Macro Action | Description |
---|---|---|---|
220 | (undefined) | Sector_CopyFlags(dsttag, srctag) | Copies the flags from one sector to another one. In Doom Builder 64, the flags are the Settings checkboxes found on the Edit Sector Properties dialog. For example: Echo Effect, Liquid Effect, etc. If used as a line action, use action 204 to set the dsttag. |
221 | (undefined) | Sector_CopySpecials(dsttag, srctag) | Copies sector specials of one sector to another. For example: Light Blinks, Very Slow Pulse, etc. If used as a line action, use action 204 to set the dsttag. |
223 | (undefined) | Sector_CopyTextures(dsttag, srctag) | Copies floor and ceiling textures of one sector to another. If used as a line action, use action 204 to set the dsttag. |
214 | (undefined) | Elevator_MoveBy(tag, value) Elevator_MoveByValue(tag, value) | Moves the floor and ceiling in the tagged sector in the same direction at the same time by the amount specified in value or global integer (action 204). Positive values raise, negative values lower. |
241 | (undefined) | Pillar_OpenBy(tag, value) Pillar_OpenByValue(tag, value) | Moves the floor and ceiling in the tagged sector in opposite directions at the same time by the amount specified in value or global integer (action 204). Positive values move the floor and the ceiling apart, negative values move them closer together. |
Linedef Properties
Copying attributes, settings, and textures between single-sided and double-sided linedefs will cause most engines to crash, sometimes unpredictably.
Action # | Line Action | Macro Action | Description |
---|---|---|---|
218 | (undefined) | Line_CopyFlags(dsttag, srctag) | Copies flags from one linedef to another. For example: Impassable, Block Sound, etc. If used as a line action, use action 204 to set the dsttag. When copying flags to enable or disable scrolls, only lines which have a scroll "thinker" spawned at the start of the map will be affected. This is fine for linedefs already scrolling that you want to stop. But if you want to start a linedef scrolling that is not, then you need to have the linedef scrolling when the map loads initially, then stop it, and then restart it again when you want it moving again. |
219 | (undefined) | Line_CopyTextures(dsttag, srctag) | Copies upper, middle, and lower textures from one linedef to another. On some Nintendo 64 ports, it only copies the texture of the front sides. If used as a line action, use action 204 to set the dsttag. |
230 | (undefined) | Line_CopySpecials(dsttag, srctag) | Copies the Action Special (Door Open, Floor Lower, etc.), Activation Type (Use, Cross, Blue Key, etc.), and Switch Setup properties from one linedef to another. If used as a line action, use action 204 to set the dsttag. |
Artifact Switches
Action # | Line Action | Macro Action | Description |
---|---|---|---|
90 | Artifact Switch 1 (Orange) | (undefined) | Will check if player has the orange artifact and will activate line with the tag one higher than the current line. |
91 | Artifact Switch 2 (Blue) | (undefined) | Will check if player has the blue artifact and will activate line with the tag one higher than the current line. |
92 | Artifact Switch 3 (Purple) | (undefined) | Will check if player has the purple artifact and will activate line with the tag one higher than the current line. |
Exits
Action # | Line Action | Macro Action | Description |
---|---|---|---|
52 | Exit to Next Level | Exit | Exit to the next sequential level |
124 | Exit to Level (Tag = Map#) | ExitToLevel(map) | Exit to level number defined by the tag |
Miscellaneous
Action # | Line Action | Macro Action | Description |
---|---|---|---|
0 | (default) None | No_Op | No action |
213 | Play Sound (Tag = Sound#) | (undefined) | (Doom 64 EX+) Play specific in-game sound effect based on sound load order |
215 | Stop Music | (undefined) | (Doom 64 EX+) Stops the music currently playing |
216 | Change Music (Tag = Music#) | (undefined) | (Doom 64 EX+) Plays music track corresponding to MUSAMB## |
217 | Change Sky (Tag = Sky#) | (undefined) | (Doom 64 EX+) Changes sky based on sky load order in SKYDEFS |
253 | Unlock Cheat Menu | UnlockCheatMenu | Unlock the "features" cheat menu |
254 | Draw D64 Logo on F_SKYG flat | DisplaySkyLogo | Displays the backpic graphic on the sky. This only works on skies with the "fadeinbackground" designation. |