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.
How It Works
Section titled “How It Works”Pause behaviour is configured at two levels:
- Menu config (
config:block) — controls whether to pause, how to paginate, which named prompt to display, and where to position it on screen - Prompt definition (
prompts:block) — the named prompt’s art, views, and continuation keys
Menu Config Reference
Section titled “Menu Config Reference”Controls whether and how the system pauses after displaying the menu’s art.
| Value | Behaviour |
|---|---|
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. |
pausePrompt
Section titled “pausePrompt”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.
pausePosition
Section titled “pausePosition”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)}Prompt Definition Reference
Section titled “Prompt Definition Reference”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 } }}pausePage
Section titled “pausePage”Displayed between pages when pause: pageBreak is set. Supports two special config keys in addition to standard prompt config:
| Key | Description |
|---|---|
continuousKey | When pressed, all remaining page-break prompts are skipped and the final end-of-art pause fires immediately. |
quitKey | When pressed, all remaining art and prompts (including the final pause) are cancelled. |
prompts: { pausePage: { art: pause_page config: { trailingLF: no continuousKey: c quitKey: q } }}Using TickerView in Pause Prompts
Section titled “Using TickerView in Pause Prompts”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.
Theming
Section titled “Theming”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.
Examples
Section titled “Examples”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.