Dungeon Master - Rune Combination Lock

Rune Combination Lock

An interactive rotating combination lock that will trigger another event when the correct combination is selected. The lock has a variable number of dials.

Rune Combination Lock Showcase


Install the Rune Combination Lock package.

Creating a controller

Creating a controller:

Create a controller by dropping the RuneLock_Controller template into the world or by attaching the runeLockControllerScript to an existing entity.

On Correct Combination:

Add an event to the controller’s On Correct Combination event. This event
passes two arguments, the entity of the controller and the player that selected
the correct combination.

If no event is added or the event has been accidentally deleted, the controller will display a warning message in console.

[Server] RuneLockControllerScript - Warning: OnCorrectCombination event has no bindings for 'runeLock_Controller1'

An example event might be something to open/unlock a door, disarm a trap, move a platform or show a secret portal.

The controller’s runeLockControllerScript has a function named TestEvent
that can be used for testing purposes. It will display a message to the
console when the event is triggered.


When enabled, Auto Reset will wait for the delay defined by Reset Time.
After this delay, the controller will reset each dial’s position, and the Reset Event will be executed.

Example events might be close/lock a door, re-arm a trap, reset a platform to its starting position or hide a secret portal.

If you want to reset the lock when the player enters a trigger, the lock can be reset manually by calling either ResetNoDelay or ResetWithDelay on runeLockControllerScript.

Adding dials

Adding dials:

Add a dial by dropping the RuneLock_Dial template onto the controller. The dial needs to be a child of the controller.

The dial will automatically verify that it is the child of a controller.
If the dial is not a child of a controller, a warning message will appear in the console after about five seconds.

The controller will also automatically check for dials attached as children.
If none are found, it will display a warning message in the console.

These warnings look like this:

[Server] RuneLockControllerScript - Warning: No children with 'runeLockDialScript' found for 'runeLock_Controller1'
[Server] Warning: runeLock_Dial1 is not a child of a parent controller

To fix it, move the runeLock_Dial1 entity so that it is the child of the runeLock_Controller1 entity.


The dial settings are located in the script runeLockDialScript which is attached to the dial mesh. runeLock_Dial1 -> dial -> runeLockDialScript.


These are references to the light/sound entities. They can be changed or removed by clicking the X.

Default Rune Index:

Randomize - The default rune will be randomized. The randomized rune will not be the Correct Rune

Default Index - Choose one of fifteen positions. The runes appear multiple times. For example, P2 is the second P.

Dial Settings:

Rotation Time - How long it takes the dial to rotate one position in seconds.
Correct Rune - Each dial has fifteen positions but only six possible runes. Choose one of six runes to be the correct rune. The active rune/index is indicated by the light entity.

Included Example

A simple three-dial combination lock is included as an example.

The combination is FOO


This is really a good idea, I love it :slight_smile: