Actions are the [Name(args)] tags you write in chapter content. Some are built in and handled directly by the Revealer; anything else dispatches to a handler your scene script registers with Revealer.Register. See Coding for the event-object shape handlers receive.
Flow control
| Action | Effect |
|---|---|
[AwaitClick()] |
Pauses the reveal until the player clicks. |
[ClickClear()] |
Same as AwaitClick, then wipes the text box (open style tags are re-opened so formatting continues). |
[AutoLink(nodeId)] |
Jumps straight to another node, with no player input. |
[LinkOption(nodeId, text)] |
Collects a player choice. All LinkOptions in a node fire together via the OptionsReady event once the node finishes. |
[SwitchScene(name)] / [SwitchScene(name, fadeDuration, fadeHold)] |
Switches the active scene, with optional fade timing. |
[Pause(seconds)] |
Waits N seconds before continuing (default 1 if omitted or invalid). |
[TextSpeed(multiplier)] |
Changes reveal speed from that point on. 0.5 is twice as fast, 2 is twice as slow. |
Characters
| Action | Effect |
|---|---|
[SetCharacter(key)] / [SetCharacter(key, variant=value)] |
Fires a SetCharacter event and pauses the reveal until the scene calls Revealer.Unpause(). Pass a variant as a kwarg to switch expression/outfit in the same call. |
[UnsetCharacter(key)] |
Fires an UnsetCharacter event, which also pauses until unpaused. There's no built-in logic beyond dispatching; your scene script decides what "unset" means, e.g. playing a leave animation. |
[UnsetCharacterAll()] |
Same as above, for clearing every on-screen character at once. |
None of these have dedicated built-in behavior beyond the pausing noted above. They all fall through to the generic custom-action dispatch, so it's entirely up to your scene's Revealer.Register handlers what actually happens on screen.
Audio
| Action | Effect |
|---|---|
[Music(key)] / [Music(key, fadeSeconds)] |
Plays or crossfades background music. |
[StopMusic()] / [StopMusic(fadeSeconds)] |
Fades out and stops music. |
[Ambient(key)] / [Ambient(key, fadeSeconds)] |
Plays or crossfades an ambient loop. |
[StopAmbient()] / [StopAmbient(fadeSeconds)] |
Fades out and stops the ambient loop. |
[SFX(key)] |
Plays a one-shot sound effect. |
[Voice(key)] |
Plays a one-shot voice line. |
Custom actions
Anything not listed above, such as [AnyName(arg1, arg2, key=value)], dispatches to whatever you've registered:
Revealer.Register("AnyName", (event) => {
event.args; // ["arg1", "arg2"]
event.kwargs; // { key: "value" }
});
This is how you build your own game-specific actions (camera shakes, achievements, custom character behavior, anything at all) without touching the Revealer itself.
A note on newlines
If an action tag is immediately followed by a newline in your source text, that newline is swallowed rather than showing up as a blank line in the revealed output. That means you can put one action per line for readability without it affecting spacing on screen.