Difference between revisions of "Action specials"

From ECWolf Wiki
m (→‎List of Action specials: Added double door type values (2,3) to Door_Open type parameter description.)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
Action specials are function which are activated either by [[UWMF#Triggers]] or [[DECORATE]] actions.
 
Action specials are function which are activated either by [[UWMF#Triggers]] or [[DECORATE]] actions.
 +
 +
General notes:
 +
* '''Tags''' are arbitrary numbers used to link a trigger to the tile that executes it.
 +
* '''Speeds''' are represented in the number of pixels traveled per tic/16.  ECWolf runs at 70 tics per second.
 +
* '''Directions''' are relative to the triggering side or absolute if the 8 is added.  '''Note that diagonal movement is not supported yet'''
 +
** 0 = right
 +
** 1 = back right
 +
** 2 = back
 +
** 3 = back left
 +
** 4 = left
 +
** 5 = towards left
 +
** 6 = towards
 +
** 7 = towards right
 +
** 8 = east
 +
** 9 = northeast
 +
** 10 = north
 +
** 11 = northwest
 +
** 12 = west
 +
** 13 = southwest
 +
** 14 = south
 +
** 15 = southwest
  
 
== List of Action specials ==
 
== List of Action specials ==
* 1:'''Door_Open'''(tag, speed, delay, lock, type)
+
* 1: <tt>Door_Open( tag, speed, delay, lock, type )</tt>
:Activates the tile as a sliding door. Typical speed is 16. Lock specifies what keys are needed according to [[LOCKDEFS]].  Delay is the number of tics the door is held open or -1 for a door that should remain open until manually closed. Type is either 0 for horizontal doors or 1 for vertical doors. (Further values are reserved for other types of door animation in the future.)
+
:Activates a map spot as a sliding door.
* 2:'''Pushwall_Move'''(tag, speed, direction, distance)
+
::<tt>tag</tt> - The tag of the map spot which houses the door.
:Moves the pushwall in the trigger's tile. A typical speed is 8. Direction specifies the relative direction to move the pushwall (0 = right, 2 = back, 4 = left, 6 = towards). Distance is in tiles or 0 if it should move until blocked. If 8 is added to the direction then the direction is absolute (8 = east, 10 = north, 12 = west, 14 = south). Odd directions are reserved for when diagonal pushwalls are supported.
+
::<tt>speed</tt> - Typical speed for a Wolf3D door is 16.  
* 3:'''Exit_Normal'''(pos)
+
::<tt>delay</tt> - Tics until the door closes.  300 is normal for a Wolf3D door.  -1 means the door will stay open until manually closed.
:Exits the level using the standard exit. Pos is reserved and should be 0.
+
::<tt>lock</tt> - Lock specifies what keys are needed according to [[LOCKDEFS]].  0 = None, 1 = Gold, 2 = Silver, 101 = Gold + Silver
* 4:'''Exit_Secret'''(pos)
+
::<tt>type</tt> - Whether the door is facing east-west (0), north-south (1), east-west double door (2), or north-south double door (3).
:Exits the level using the secret exit. Pos is reserved and should be 0.
+
* 2: <tt>Pushwall_Move( tag, speed, direction, distance )</tt>
* 5:'''Teleport_NewMap'''(map, pos, flags)
+
:Moves the pushwall in the trigger's map spot.
:Exits and travels to the specified map by levelnum. Pos is reserved and should be 0. Flags are 1 = Keep direction, 2 = Keep position.
+
::<tt>tag</tt> - The tag of the map spot.
* 6:'''Exit_VictorySpin'''()
+
::<tt>speed</tt> - Typical speed for a Wolf3D pushwall is 8.
 +
::<tt>direction</tt> - The direction to move.  See the general notes about how directions are specified.
 +
::<tt>distance</tt> - The distance in tiles to move.  A value of 0 means the map tile will move until it is blocked by something.
 +
* 3: <tt>Exit_Normal( pos )</tt>
 +
:Exits the level using the standard exit.  
 +
::<tt>pos</tt> - reserved and should be 0.
 +
* 4: <tt>Exit_Secret( pos )</tt>
 +
:Exits the level using the secret exit.
 +
::<tt>pos</tt> - reserved and should be 0.
 +
* 5: <tt>Teleport_NewMap( map, pos, flags )</tt>
 +
:Exits and travels to the specified map by levelnum.
 +
::<tt>map</tt> - The levelnum to travel to.
 +
::<tt>pos</tt> - reserved and should be 0.
 +
::<tt>flags</tt> - 1 = Keep direction, 2 = Keep position
 +
* 6: <tt>Exit_VictorySpin()</tt>
 
:Standard exit but does a BJ jump sequence. Normally activated by a pickup. This sequence is partially handled by the {{Class|BJRun}} actor which is spawned.
 
:Standard exit but does a BJ jump sequence. Normally activated by a pickup. This sequence is partially handled by the {{Class|BJRun}} actor which is spawned.
* 7:'''Exit_Victory'''(pos) {{new}}
+
* 7: <tt>Exit_Victory( pos )</tt>
:Exits the level using the victory exit. Pos is reserved and should be 0.
+
:Exits the level using the victory exit.
* 8:'''Trigger_Execute'''(x, y, z) {{new}}
+
::<tt>pos</tt> - reserved and should be 0.
 +
* 8: <tt>Trigger_Execute( x, y, z )</tt>
 
:Executes all triggers on a given map spot. Useful for activating something on monster death or having multiple switches do the same thing.
 
:Executes all triggers on a given map spot. Useful for activating something on monster death or having multiple switches do the same thing.
 +
::<tt>x</tt> - The X coordinate of the tile.
 +
::<tt>y</tt> - The Y coordinate of the tile.
 +
::<tt>z</tt> - The Z coordinate of the tile.
 +
* 9: <tt>StartConversation( tid, faceTalker )</tt>
 +
:This is an experimental function for starting a [[USDF]] dialog. Not very useful with current implementation. Documented here for completeness.
 +
* 10: <tt>Door_Elevator( switchTag, speed, delay, lock, type )</tt>
 +
:Similar to Door_Open in every manner except that the tag should point to the elevator switch.
 +
* 11: <tt>Elevator_SwitchFloor( elevTag, doorTag, callSpeed, nextTag )</tt>
 +
{{Note|Elevator support is somewhat experimental and may be missing a few features. Changes may occur in order to improve compatibility with Rise of the Triad.}}
 +
:Triggers the elevator movement. Things in the elevator are moved relative to the switch and the door.
 +
::<tt>elevTag</tt> - Should the tag of the first switch in the sequence.
 +
::<tt>doorTag</tt> - The point to the door for this stop.
 +
::<tt>callSpeed</tt> - The time is takes for the elevator to move to or from this floor.
 +
::<tt>nextTag</tt> - The point in the next switch in the sequence.

Latest revision as of 23:15, 23 August 2023

Action specials are function which are activated either by UWMF#Triggers or DECORATE actions.

General notes:

  • Tags are arbitrary numbers used to link a trigger to the tile that executes it.
  • Speeds are represented in the number of pixels traveled per tic/16. ECWolf runs at 70 tics per second.
  • Directions are relative to the triggering side or absolute if the 8 is added. Note that diagonal movement is not supported yet
    • 0 = right
    • 1 = back right
    • 2 = back
    • 3 = back left
    • 4 = left
    • 5 = towards left
    • 6 = towards
    • 7 = towards right
    • 8 = east
    • 9 = northeast
    • 10 = north
    • 11 = northwest
    • 12 = west
    • 13 = southwest
    • 14 = south
    • 15 = southwest

List of Action specials

  • 1: Door_Open( tag, speed, delay, lock, type )
Activates a map spot as a sliding door.
tag - The tag of the map spot which houses the door.
speed - Typical speed for a Wolf3D door is 16.
delay - Tics until the door closes. 300 is normal for a Wolf3D door. -1 means the door will stay open until manually closed.
lock - Lock specifies what keys are needed according to LOCKDEFS. 0 = None, 1 = Gold, 2 = Silver, 101 = Gold + Silver
type - Whether the door is facing east-west (0), north-south (1), east-west double door (2), or north-south double door (3).
  • 2: Pushwall_Move( tag, speed, direction, distance )
Moves the pushwall in the trigger's map spot.
tag - The tag of the map spot.
speed - Typical speed for a Wolf3D pushwall is 8.
direction - The direction to move. See the general notes about how directions are specified.
distance - The distance in tiles to move. A value of 0 means the map tile will move until it is blocked by something.
  • 3: Exit_Normal( pos )
Exits the level using the standard exit.
pos - reserved and should be 0.
  • 4: Exit_Secret( pos )
Exits the level using the secret exit.
pos - reserved and should be 0.
  • 5: Teleport_NewMap( map, pos, flags )
Exits and travels to the specified map by levelnum.
map - The levelnum to travel to.
pos - reserved and should be 0.
flags - 1 = Keep direction, 2 = Keep position
  • 6: Exit_VictorySpin()
Standard exit but does a BJ jump sequence. Normally activated by a pickup. This sequence is partially handled by the BJRun actor which is spawned.
  • 7: Exit_Victory( pos )
Exits the level using the victory exit.
pos - reserved and should be 0.
  • 8: Trigger_Execute( x, y, z )
Executes all triggers on a given map spot. Useful for activating something on monster death or having multiple switches do the same thing.
x - The X coordinate of the tile.
y - The Y coordinate of the tile.
z - The Z coordinate of the tile.
  • 9: StartConversation( tid, faceTalker )
This is an experimental function for starting a USDF dialog. Not very useful with current implementation. Documented here for completeness.
  • 10: Door_Elevator( switchTag, speed, delay, lock, type )
Similar to Door_Open in every manner except that the tag should point to the elevator switch.
  • 11: Elevator_SwitchFloor( elevTag, doorTag, callSpeed, nextTag )
Note: Elevator support is somewhat experimental and may be missing a few features. Changes may occur in order to improve compatibility with Rise of the Triad.
Triggers the elevator movement. Things in the elevator are moved relative to the switch and the door.
elevTag - Should the tag of the first switch in the sequence.
doorTag - The point to the door for this stop.
callSpeed - The time is takes for the elevator to move to or from this floor.
nextTag - The point in the next switch in the sequence.