Elements

scenes.<X>.elements — an array. Types: window text button picture gauge shape command list particles (MF.SimpleVisual.ELEMENT_TYPES).

{ "id": "logo",  "type": "picture", "image": "pictures/Logo", "anchor": "top", "y": 8, "z": -1 }
{ "id": "steps", "type": "text",    "text": "Steps: \\V[1]", "x": 20, "y": 560 }
{ "id": "quit",  "type": "button",  "text": "To map", "action": { "type": "back" } }

Common properties

PropertyDescription
idRequired, unique in the scene
typeElement type
x y width height anchorAs windows; without a size — natural size
z< 0 — behind windows, >= 0 — above
rotationDegrees around the centre, expressions
visible, conditionVisibility; condition checked every 10 frames
opacitywindow-like — frame; others — whole element
parentNested elements
hud hideOnMessage hideOnEvent fadeFrames fadeUnderPlayerHUD
enabled hover pressed disabled blink blinkMin blinkTargetStates
hoverSound clickSound disabledSoundSounds

window / text / button

PropertyDescription
textEscape codes \V \N \C \I, MF.Text codes, tokens, \n. Refreshed when values change
alignleft center right (button — center)
rowsRows for "height": "auto"
windowskin padding backOpacity fontFace fontSize + text styleStyle; the scene theme applies
fill fill2 gradient borderColor borderWidth radiusOwn background instead of the windowskin
frameFrame on / off
actionbutton: action or array

text has no frame or background by default.

picture

PropertyDescription
image"folder/name" in img/ (default pictures); tokens allowed: "pictures/{hero.faceName}"
fitstretch contain cover none
radiusRounded corners
offsetX offsetY zoom imageRotationImage inside the frame (clipped)
tilenone repeat repeatX repeatY
cropX cropY cropWidth cropHeightPart of the source, px
flipX flipY smoothMirror; smooth: false — pixel art
scrollX scrollYpx per second (elements only)
brightness contrast saturation%, 100 = unchanged
grayscale sepia invert0–100 %
hue blurDegrees; px
tint tintAmountColour over the image, 0–100 % (default 50)

A missing file with tokens gives an empty element, not the "Failed to load" screen.

shape

fill (default white), fill2 + gradient (vertical / horizontal), borderColor borderWidth radius.

gauge

PropertyDescription
variable + maxmax — number or { "variable": n }
actor / member + statActor id or party index (0 — first); hp mp tp
label format fontSize color1 color2format: "{value}/{max}"

particles

{ "id": "snow", "type": "particles", "preset": "snow", "width": "100%", "height": "100%", "z": -1, "count": 150, "wind": 0.5, "mouseRepel": 80 }

Presets: rain snow embers fireflies stars. Overridable: count shape (dot streak) image color sizeMin sizeMax speedMin speedMax angle spread opacityMin opacityMax spawn (top bottom area) lifeMin lifeMax sway wind gravity spin flicker pulse fade alignToMotion blend (normal add) mouseRepel. Numbers accept expressions. Frozen in the editor.

command

PropertyDescription
items[{ "text", "action", "enabled": cond, "visible": cond }]
cols align rowsLayout
template rowHeight rowBackgroundRow drawing
rowHover rowDisabledRow states
frame arrows, style, backgroundAs window
onCancelAction on cancel

list

PropertyDescription
sourceitems weapons armors keyItems allItems party skills (+ actor/member) database (+ table: enemies…) static (+ data)
idsKeep only these ids
cols rows rowHeight rowBackgroundLayout
templateRow template; default depends on source
emptyTextText of an empty list
rowEnabledCondition or expression with row fields: "{count} > 0"
action onCancel{field} placeholders from the row: { "type": "variable", "id": 5, "value": "{id}" }

Other elements show the selected row: "{list.name}\n{list.description}" (list — the list id).

Row templates

Child types: text icon face picture shape gauge actorGauge actorState. x y width height anchor are relative to the row content area (default anchor left), accept row fields: "{hpRate}%". {selected} and {enabled} are available.

TypeProperties
texttext align fontSize
iconicon (default "{iconIndex}")
facefaceName faceIndex
gaugestat or value + max, label color1 color2
actorGaugeAnimated MZ gauge, stat
actorStateAnimated state icon (battle)

States and sounds

{ "id": "buy", "type": "button", "text": "Buy", "enabled": { "gold": 100, "op": ">=" },
  "fill": "#2a3040", "hover": { "fill": "#3a5a8a" }, "pressed": { "fill": "#203048" },
  "disabled": { "textColor": "#808080", "opacity": 150 },
  "hoverSound": "Cursor2", "disabledSound": "Buzzer2" }

Nested elements

{ "id": "badge", "type": "picture", "image": "pictures/Badge", "parent": "w:_statusWindow", "anchor": "top-right" }

parent: "w:<window field>" or an element id. Geometry is relative to the parent's inner area; the child follows it and hides with it.