Skip to content

Pause Prompts

ENiGMA½ supports a flexible pause prompt system that controls how the system waits for user input after displaying art. Pause prompts are fully themeable: they support art files, any MCI view type, and can be customised per-menu.


Pause behaviour is configured at two levels:

  1. Menu config (config: block) — controls whether to pause, how to paginate, which named prompt to display, and where to position it on screen
  2. Prompt definition (prompts: block) — the named prompt’s art, views, and continuation keys

Controls whether and how the system pauses after displaying the menu’s art.

ValueBehaviour
true or 'end'Pause once after all art is displayed. Uses the pause system prompt unless pausePrompt overrides it.
'pageBreak'Paginate the art — display one screenful at a time, showing a page-break prompt between pages. Shows the end-of-art pause after the final page. Uses the pausePage system prompt for page breaks and pause for the final pause, unless pausePrompt overrides them.
'<promptId>'Shorthand: pause in end mode using the named prompt. Equivalent to pause: true + pausePrompt: <promptId>.
false (or absent)No pause.

Overrides which named prompt is used for pauses on this menu. When absent the system defaults to pause (end-of-art) and pausePage (page-break).

// Same prompt for both end-of-art and page-break pauses:
pausePrompt: myCustomPause
// Different prompts per type:
pausePrompt: {
end: myEndPause
page: myPagePause
}

pausePrompt takes precedence over the pause: '<promptId>' shorthand.

Force the pause prompt to appear at a specific screen position, overriding the computed position (which is normally just below the last line of displayed art).

pausePosition: {
row: 23 // 1-based row
col: 1 // 1-based column (optional)
}

Pause prompts live in the prompts: block of a menu file, as a top-level sibling of menus:. Two system prompts are provided by main.in.hjson as defaults.

Displayed at the end of art when pause: true (or pause: 'end') is set. A minimal definition is just an art file:

prompts: {
pause: {
art: pause
config: {
trailingLF: no
}
}
}

Displayed between pages when pause: pageBreak is set. Supports two special config keys in addition to standard prompt config:

KeyDescription
continuousKeyWhen pressed, all remaining page-break prompts are skipped and the final end-of-art pause fires immediately.
quitKeyWhen pressed, all remaining art and prompts (including the final pause) are cancelled.
prompts: {
pausePage: {
art: pause_page
config: {
trailingLF: no
continuousKey: c
quitKey: q
}
}
}

Pause prompts support all MCI views, including TickerView (%TK). This lets you display animated instructions or banners while waiting for input — a natural pairing for pausePage prompts.

Place %TK1 in the prompt’s art file, then configure it under mci::

prompts: {
pausePage: {
art: pause_page // art file contains %TK1
config: {
trailingLF: no
continuousKey: c
quitKey: q
}
mci: {
TK1: {
text: "Press any key to continue — [C] skip pages — [Q] quit"
width: 70
motion: bounce
tickInterval: 70
}
}
}
}

Pipe color codes in text are preserved across all non-dynamic motion styles (bounce, reveal, typewriter, fallLeft, fallRight). Dynamic effects (rainbow, scramble, glitch) intentionally override per-character colors.


Pause prompts can be overridden per-theme like any other prompt. In theme.hjson, set properties under customization.prompts:

customization: {
prompts: {
pausePage: {
mci: {
TK1: {
text: "|04Press any key...|07"
motion: bounce
width: 60
tickInterval: 60
}
}
}
}
}

The art file can also be placed in your theme directory (art/themes/<yourTheme>/) to replace the default.


Simple end-of-art pause (default)
myArtDisplay: {
art: someart
config: {
pause: true
}
}

Uses the pause system prompt. No additional configuration required.

Paginated art with page-break and end pauses
myScroller: {
art: longscroller
config: {
pause: pageBreak
}
}

Uses pausePage between pages and pause at the end. Both are system defaults — add them to your prompts: block to customise.

Paginated art with a custom page-break prompt
// menu entry:
myScroller: {
art: longscroller
config: {
pause: pageBreak
pausePrompt: {
page: myPagePause
}
}
}
// prompts block:
prompts: {
myPagePause: {
art: mypagepause // art file includes %TK1
config: {
trailingLF: no
continuousKey: c
quitKey: q
}
mci: {
TK1: {
text: "|03--- more --- [SPACE] continue [C] skip [Q] quit"
width: 60
motion: bounce
tickInterval: 65
}
}
}
}
Shorthand: end pause with a named custom prompt
myArtDisplay: {
art: someart
config: {
pause: myFancyPause // end mode, uses 'myFancyPause' prompt
}
}

Equivalent to pause: true + pausePrompt: myFancyPause.

Force pause position to a fixed row
myArtDisplay: {
art: someart
config: {
pause: true
pausePosition: {
row: 23
}
}
}

Useful when art has a specific row reserved for the pause prompt.