Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Sticky state and clear

Some story commands change the stage for the whole session. Others last one moment. Omitting a key often means “leave as-is”; null often means “clear.” Getting that wrong is how backgrounds and shaders “stick forever.”

Most stories

  • Default: stage changes persist until you change them again (or reset / new session).
  • Use "apply": "node_local" when a panel / layout / labelplate should revert after this beat.
  • Use "reset": true (or an explicit clear) when a sticky override must go away.
  • For shaders and similar: omit = keep current; null = clear.
  • Character modulate / opacity / scale are not sticky — set them again on each char command when you want them to carry on — Characters on stage.

Where this lives

IdeaSurface
Sticky vs one-momentCommand meta apply
Undo stickyreset: true on that command family
Keep vs clearAbsent key vs null (per field)
Session endNew game clears sticky stage
{ "type": "panel", "preset": "whisper", "apply": "persistent" }
{ "type": "panel", "preset": "whisper", "apply": "node_local" }
{ "type": "labelplate", "reset": true }
{ "type": "bg", "value": "street", "shader": null }

apply

ValueEffect
"persistent" (default where supported)Sticks until reset, overridden, or new session
"node_local"Applies for this moment’s cycle, then reverts

Used on (among others): panel, labelplate, char_layout, obj, screen_shader. Shape: Shared shapes.

when is separate: skip this command if the expression is falsy (JSON / Mode B only).

Absent vs null (common sticky fields)

Field familyOmit keyExplicit null
bg / char / sprite shaderKeep currentClear shader
Node panel_shaderClear (unlike sticky stage shaders)Clear
bgm / typing_sfx value—Stop / restore default
screen_shader value—Clear post-process

Always check the command’s detail page when unsure — a few surfaces treat absent differently (panel shader on the node is the common surprise).

How to undo

Sticky thingUndo
Panel preset overrideAnother panel command, or reset where supported
Labelplate override{ "type": "labelplate", "reset": true }
Char layout profile{ "type": "char_layout", "reset": true }
Choice pack from choice_style{ "type": "choice_style", "reset": true }
Theme mood from theme_style{ "type": "theme_style", "reset": true }
Shader on stageSame surface with "shader": null

Save / back: sticky stage is part of cumulative save; node_local is not meant to outlive the moment. Save, Back and story end.

Command flow · Shared shapes · Shaders · Commands