User Tools

Site Tools


Glyph Doors

This tutorial will explain how to make secret doors which are opened by frobbing a glowing glyph in front of the door, like those found in Thief: Deadly Shadows as well as Yandros’ Thief 2 FM What Lies Below.

Eight concrete objects are required, and are listed below. Under each, you’ll find the properties you need to set up on each one, including on archetypes where necessary, plus all required links between the eight objects. In the future, I will add a diagram further showing the links.

Custom Scripts required: Either Gaylesaver’s scripts, or Telliamed’s PublicScript module to support the TrapPhantom and TrapMetaProp scripts.

Glyph Decal

Glyphs parent archetype (under Decorative):

Scripts = TrigWorldFrob, TrapPhantom, ActivateAmbient
Alpha = 0.25
FrobInfo = Script, None, None
DesignNote = alpha_max=1.0; alpha_min=0.0; rate=0.35; curve=1

Individual Glyph archetype:

Model name = whatever (probably one of Vigil’s glyph models)

Glyph concrete object:
  • In WLB I used the glyph loop sounds from T3 and a custom schema

AmbientHacked (optional) = 8, 0, NoSharpCurve


  • Coloured light to illuminate glyph when frobbed
  • Place 0.25 units in front of glyph

Mode = smoothly dim
Millisec to brighten = 2000
Max brightness = 250
Min brightness = 0
Radius/Inner rad = 1.5

LightColor = whatever colour you want the glyph to glow



  • Makes the Glyph frobinert once it’s been frobbed once

Be sure to load the custom script module! Create a Marker with:
Scripts = TrapMetaProp



  • Delays the end sequence, when the glyph disappears and the door “opens”
  • This delay allows the AnimLight to come on slowly, making the Glyph gradually appear to glow
  • I prefer the use of NVRelayTrap (NVScript.osm), but you can also use TrapTimedRelay (gen.osm)

Scripts = NVRelayTrap or TrapTimedRelay
DesignNote = “NVRelayDelay=2500” (if using NVRelayTrap) OR
Timing = 2500 (if using TrapTimedRelay)
TrapControlFlags = Once


If you want to play a VO or show onscreen text as I did in What Lies Below, ControlDevice link this Delay to it as well.


  • Inverts the Delay’s signal to send TurnOff back to the Glyph and the DoorVisible, which activates their TrapPhantom scripts and makes them fade out


  • An unrendered object in the doorway which blocks the player’s movement through the DoorVisible, which is visible but does not block the player. (Why? because the DoorVisible can’t both slide out of the way and fade out at the same time.)
DoorBlocking archetype (under slidy_door or a child of it):

Model name = any door model since it’s unrendered and you adjust the dimensions anyway (I used my own res_cube model in WLB, a 4x4x4 cube with reskinnable faces)
MaterialTags = something appropriate, probably Material Stone
FrobInfo = Ignore, None, None
Render type = Not Rendered
Class tags = blank (so it plays no sound when it slides open)

Door > Translating:
Closed = 0
Open = a value sufficient to move it into solid
Base speed = large (like 50) so it moves almost instantly

DoorBlocking concrete object:
  • Make sure the Dimensions are set to fill the doorway airbrush


  • The actual rendered “door” (or stone wall, whatever the context dictates), it should be reskinnable and use the surrounding terrain texture if you want it to “blend in”.

Tips on doing this well:

  • Make it 4×4 (if surrounding texture is at Scale 15) or 8×8 (if surrounding texture is at Scale 16) so the texture isn’t stretched
  • It can extend into the wall on either side if, say, the opening is only 6 wide; so long as its center is in air it will be rendered
  • Make it in complete shadow or full light - since the visible face is a single poly, it will either be fully lit or fully unlit, so if a nearby light’s radius reaches only half of it, the door will be fully lit and stick out like a sore thumb!
  • Tweak its Extra Light property as needed (often + or - 0.01 or 0.02 does the trick)
DoorVisible archetype (also under slidy_door, but could be elsewhere):
  • Use a Model name of a reskinnable secret door, or my res_cube
  • Set the Dimensions such that the door doesn’t block the player; for instance, make its size 1x1x1 and give it a Z Offset of -10 to sink its collision model into the floor (don’t do that if there’s a room below though!)

Props are similar to DoorBlocking, but also add:
Scripts = TrapPhantom
DesignNote = alpha_max=1.0; alpha_min=0.0; rate=0.5; curve=1



  • Use optionally to play a sound when the door and glyph fade out, revealing the room beyond.
  • I used the glyph activate sound from T3 in WLB with a custom schema

Magus Yandros 2007/03/08

dromed/glyph_doors.txt · Last modified: 2007/06/26 21:40 (external edit)