Expression values in a character pack: a layer array, or an inherit object.
"default": [
{ "path": "base.png" },
{ "path": "mouth.png", "drive": "!typing" },
{ "frames": ["m1.png", "m2.png"], "fps": 10, "loop": true, "drive": "typing" }
],
"happy": {
"extends": "default",
"override": [{ "layer": 1, "path": "mouth_happy.png" }]
}
| Form | When |
| Array of layers | A full expression |
{ "extends", "override" } | Variant of another expression |
| Key | Type | Effect |
path | string | Image (__blank = empty) |
x / y / w / h | number | Offset / size |
modulate / scale / opacity | — | Look |
drive | string | Visibility: typing, !typing, focus, !focus, choice_open, … |
frames | string[] | Animated layer |
fps / loop / loop_count / hide_when_done / shuffle / idle_frame | — | Animation |
interval_min / interval_max | — | Frame intervals |
| Key | Effect |
extends | Base expression id |
override | [{ "layer": N, …fields }] patches |
add | Extra layers appended |
drive | Optional variant guard (mismatch → fall back via extends) |
Pack root · Drive rules · Characters.