Pause Prompts
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
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
pause
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. |
Art that uses absolute cursor positioning (ANSI sequences with explicit row/col addresses) is detected automatically —
pageBreakfalls back to single-page display for such art.
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
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
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.
pause
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
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
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
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
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.
