Rotating Doors

Rotating Doors

Classname: func_door_rotating
Purpose: Access granted/denied.
H2 Code: doors.hc
fields required: flags, origin
Rotating doors have a lot in common with ordinary doors. Their brushes swing around the vertical axis by default, but can be set by spawnflags to rotate around X or Y axes, thereby working as trapdoors, and this can be supplemented with the angle to make them swing around an arbitrary axis in the horizontal plane. They can also throw things and do damage, which I haven't gotten to happen with standard doors.

If doors touch, they will be `linked' and open & close together, but otherwise behave in accord with their own attributes (w.r.t message display, for example). Use REVERSE spawnflag for automatic 180-degree angle offset.

Rotating doors can be ridden on; the swinging bridge in the Graeco-Roman levels was presumably done that way.

In Siege, rotating doors have some additional fields, which I don't actually list here, but describe the use of in the tutorial section on Siege doors.

Fields

origin Value is a triple of numbers, the X-Y-Z coordinates of the point around which the door rotates (no default; value REQUIRED). But if the door rotates around the Z axis, it doesn't matter what the Z-coordinate actually is.

Some editors may not easily support the origin field for rotating doors, but instead require the use of an alternative, an origin brush, which some people might find more convenient anyway. This is simply a brush, owned by the rotating door, and typically extending through it, that carries the `origin' texture (white texture with ORIGIN written on it). The origin brush will not appear in the .bsp, but the door will rotate around its center. What's nice about this is that the the center of the origin-brush is perceivable visually, so that one doesn't have to mess around with coordinate numbers.

flags Value is a number; angle door opens to, in degrees (no default; value REQUIRED).
speed Value is a number, opening and closing speed; 100 = default.
wait Value is a number, amount of time before closing; 3 = default, -1 = never return. Doors requiring puzzle-pieces never return.
health Value is a mumber, if > 0=default, the door can be actuated by damage and mass (says Eutectic; I'm not getting either mass or damage to work for rotators. Maybe trigger_once/multiples should be used be used?).
soundtype Value is a number, indicating the sound type the door makes when it moves.
message Value is a number, indicting the message to be displayed upon touching a triggered or shot door that hasn't been opened yet.
dmg Value is a number, damage to inflict on player etc. when impeding door. Default = 2, 666 for terminate with extreme prejudice.
speed Value is a number; movement speed (default 100).
abslight Value is a number between 0 and 1, giving absolute light-level.
flags2 Value is a number; amount of damage when touched (so far, I've only find rotating doors to have this flag; would be cool for doors leading into burning rooms or something).
targetname Value is a name, the target-value of the door's remote trigger. If this field is absent, the door will generate a (rather large) `trigger-field' that will cause it to open on approach. If it's present, no trigger-field will be created, and the door must be operated remotely, by for example a button or a trigger_once.
angle Value is a number, door brushes will appear in the game rotated by that amount around its origin in the horizontal plane, and if the X_AXIS or Y_AXIS spawnflag is checked, will open accordingly (swinging around the X and Y axes thru its origin as rotated by angle). This rotation does not show up up in the map (at least with QuArK 4.7), so getting complex effects might requuire a fair amount of pre-calculation. The 3D angles field angles_y can also be used for this effect, but I haven't gotten the others to do anthing, and I haven't gotten a door to rotate around an arbitrary 3D axis).
puzzle_piece1..4 (4 fields). Value is the name of a puzzle piece; these are listed here. Door won't open until player has all the required pieces. Puzzle-doors never reclose (are effectively wait=-1).
no_puzzle_msg Value is a number, indicating the message displayed when player lacks required puzzle pieces.
target Value is a name, the targetname-value of some entity that is triggered when the door opens.
close_target
(PoP)
Value is a name, the targetname-value of some entity that is triggered when the door closes.
spawnflags Value is a number, sum up the ones below for the properties you want (hopefully your editor has a checkbox scheme or something to do the arithmetic for you):
  • 1 - START_OPEN causes the door to move to its destination when spawned, and operate in reverse. It is used to temporarily or permanently close off an area when triggered (not useful for touch or takedamage doors).
  • 2 - REVERSE: offsets door angle value by 180 degrees.
  • 4 - DOOR_DONT_LINK: normally, if two doors entities touch, they are assumed to be connected and operate as a unit. In Eutectic's words, if they are used as triggered doors, only one of the two needs to be targeted. Setting this flag on each will override their default behavior.
  • 8 - REMOVE_PP: for puzzle_door, puzzle pieces disappear on use.
  • 16 - NO_PP: door is blocked if player has puzzle-pieces (display of no_puzzle_msg's reversed).
  • 32 - TOGGLE: needs trigger for closing as well as opening.
  • 64 - X AXIS: door revolves around X-axis (can appear with angle flag
  • 128 - Y AXIS: ditto for Y-axis.

Back to the list.