Studio events reference
Every trigger, condition and action of the Studio's event sheet, with its slots and their types.
Rows read When a trigger, If conditions, Do actions (see Events). Each item's sentence shows its slots in italics; the id is how project files and MCP agents name it. Items marked advanced are listed under Advanced in the pickers.
This page is generated from the Studio's vocabulary.
Triggers
Match
| Sentence | Id | Slots |
|---|---|---|
| The match starts | match-start | none |
| The match stops | match-stop | none |
| The match pauses | match-pause | none |
| The match resumes | match-resume | none |
Players
| Sentence | Id | Slots |
|---|---|---|
| A player joins the room | player-join | none |
| A player leaves the room | player-leave | none |
| A player enters the match | player-enter | none |
| A player exits the match | player-exit | none |
| A player gains role | role-gain | role: role (optional) |
| A player loses role | role-loss | role: role (optional) |
Controls
| Sentence | Id | Slots |
|---|---|---|
| A player presses action | action-press | action: action (optional) |
| A player releases action | action-release | action: action (optional) |
| A player is about to use action | before-action | action: action (optional) |
| A player uses action | action | action: action (optional) |
World
| Sentence | Id | Slots |
|---|---|---|
| An object enters sensor | sensor-enter | sensor: object (optional) |
| An object leaves sensor | sensor-leave | sensor: object (optional) |
| A disc crosses line direction | crossing | line: crossing (optional); direction: one of "either", "forward", "backward" (optional) |
| disc lands | land | disc: disc or instance (optional) |
UI
| Sentence | Id | Slots |
|---|---|---|
| A player uses control | ui-control | control: ui-node |
Room
| Sentence | Id | Slots |
|---|---|---|
| The room sends name | room-event | name: name |
Events
| Sentence | Id | Slots |
|---|---|---|
| event is raised | custom | event: custom-event |
Time
| Sentence | Id | Slots |
|---|---|---|
| Every tick | every-tick | none |
| After every tick | after-every-tick | none |
| Every n ticks | every-ticks | n: number |
| Every n seconds | every-seconds | n: number |
| timer reaches seconds seconds | timer-reaches | timer: timer variable; seconds: number |
Variables
| Sentence | Id | Slots |
|---|---|---|
| variable changes | variable-changes | variable: variable |
Conditions
Discs
| Sentence | Id | Slots |
|---|---|---|
| disc's x cmp n | disc-x | disc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
| disc's y cmp n | disc-y | disc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
| disc's speed cmp n | disc-speed | disc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
| disc's velocity x cmp n | disc-velocity-x | disc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
| disc's velocity y cmp n | disc-velocity-y | disc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
| disc's radius cmp n | disc-radius | disc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
| disc's mass cmp n | disc-mass | disc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
| disc's damping cmp n | disc-damping | disc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
| object is a sensor | is-sensor | object: object |
| Distance between disc and target cmp n | distance | disc: disc or instance; target: any; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
Collisions
| Sentence | Id | Slots |
|---|---|---|
| object is in group group | in-group | object: object; group: collision group |
| object accepts group group | accepts-group | object: object; group: collision group |
Objects
| Sentence | Id | Slots |
|---|---|---|
| object is other | is-object | object: object; other: object |
| object is controlled by a player | controlled | object: object |
| object is controlled by player | controlled-by | object: object; player: player |
Players
| Sentence | Id | Slots |
|---|---|---|
| player is in the match | in-match | player: player |
| player is holding action | holding | player: player; action: action |
| player has role | has-role | player: player; role: role |
| player's name is text | player-name | player: player; text: text |
| Number of players in the room cmp n | players-in-room | cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
| Number of players in the match cmp n | players-in-match | cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
Match
| Sentence | Id | Slots |
|---|---|---|
| The match is running | match-running | none |
| The match is paused | match-paused | none |
| The current tick cmp n | current-tick | cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
Time
| Sentence | Id | Slots |
|---|---|---|
| timer cmp n seconds | timer-compare | timer: timer variable; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number |
Variables
| Sentence | Id | Slots |
|---|---|---|
| variable cmp value | variable-compare | variable: variable; cmp: one of "=", "≠", "<", "≤", ">", "≥"; value: the variable's type |
| variable is text | variable-text | variable: variable; is: one of "is", "is not"; text: text |
| variable state | variable-set | variable: variable; state: one of "is set", "is empty" |
| a cmp b | compare | a: any; cmp: one of "=", "≠", "<", "≤", ">", "≥"; b: any |
Lists
| Sentence | Id | Slots |
|---|---|---|
| list contains item | list-contains | list: any; item: any |
| list is empty | list-empty | list: any |
Advanced
| Sentence | Id | Slots |
|---|---|---|
| value (advanced) | expression | value: boolean |
Logic
| Sentence | Id | Slots |
|---|---|---|
| Any of | any-of | none |
Actions
Match
| Sentence | Id | Slots |
|---|---|---|
| Start the match | match-start | none |
| Stop the match | match-stop | none |
| Pause the match | match-pause | none |
| Resume the match | match-resume | none |
| Finish the match | match-finish | none |
| Send chat message text | send-chat | text: text; colour: colour (optional); weight: one of "normal", "bold" (optional); style: one of "normal", "italic" (optional); sound: one of "normal", "none", "notification" (optional); to: audience (optional) |
| Send name to the room with payload | emit | name: name; payload: JSON payload (optional) |
| Play sound | play-sound | sound: asset; at: disc or instance (optional); to: audience (optional); volume: number (optional) |
Players
| Sentence | Id | Slots |
|---|---|---|
| Put player in the match | put-in-match | player: player |
| Put player in the spectators | put-in-spectators | player: player |
| Give player control of disc | give-control | player: player; disc: disc or instance |
| Release player's disc | release-control | player: player |
| Set player's radius to n | set-player-radius | player: player; n: number |
| Set player's acceleration to n | set-player-acceleration | player: player; n: number |
| Set player's damping to n | set-player-damping | player: player; n: number |
| Set player's avatar to avatar | set-player-avatar | player: player; avatar: any (optional) |
| Use schema for player | use-schema | schema: action-schema; player: player |
| Give role to player | give-role | role: role; player: player |
| Take role from player | take-role | role: role; player: player |
Controls
| Sentence | Id | Slots |
|---|---|---|
| Cancel the action | cancel-action | none |
Variables
| Sentence | Id | Slots |
|---|---|---|
| Set variable to value | set-variable | variable: variable; value: the variable's type |
| Add n to variable | add-to-variable | n: number; variable: variable |
| Store value in variable | store | value: the variable's type; variable: variable |
Time
| Sentence | Id | Slots |
|---|---|---|
| Start timer | timer-start | timer: timer variable |
| Stop timer | timer-stop | timer: timer variable |
| Reset timer | timer-reset | timer: timer variable |
Events
| Sentence | Id | Slots |
|---|---|---|
| Raise event | raise | event: custom-event |
UI
| Sentence | Id | Slots |
|---|---|---|
| Show node for who | ui-show | node: ui-node; who: player (optional) |
| Hide node for who | ui-hide | node: ui-node; who: player (optional) |
| Open node for who | ui-open | node: ui-node; who: player (optional) |
| Close node for who | ui-close | node: ui-node; who: player (optional) |
Advanced
| Sentence | Id | Slots |
|---|---|---|
| Run script script (advanced) | run-script | script: script |
World
| Sentence | Id | Slots |
|---|---|---|
| Create a disc at position | create-disc | position: point; radius: number (optional); mass: number (optional); damping: number (optional); groups: collision groups (optional); height: number (optional); rising: number (optional); airGravity: number (optional); bounce: number (optional); tall: number (optional); store: variable (optional) |
| Create a wall through points | create-wall | points: list of point; ends: one of "open", "closed" (optional); bias: number (optional); tall: number (optional); store: variable (optional) |
| Create a joint between first and second | create-joint | first: disc or instance; second: disc or instance; distance: number (optional); store: variable (optional) |
| Create a crossing from start to end | create-crossing | start: point; end: point; store: variable (optional) |
| Create an instance of prefab at position | create-instance | prefab: prefab; position: point; store: variable (optional) |
| Create a visual | create-visual | store: variable (optional) |
| Create a camera at center | create-camera | center: point; width: number (optional); height: number (optional); to: audience (optional); store: variable (optional) |
| Set the layer order to layers | set-layer-order | layers: list of text |
| Destroy object | destroy | object: object |
| Let audience know object | set-audience | object: object; audience: audience |
| Set object's distance to value | set-joint-distance | object: object; value: number |
| Set object's strength to value | set-joint-strength | object: object; value: any |
Discs
| Sentence | Id | Slots |
|---|---|---|
| Move disc to position | move-disc | disc: disc or instance; position: point |
| Set disc's velocity to velocity | set-velocity | disc: disc or instance; velocity: point |
| Set disc's gravity to value | set-disc-gravity | disc: disc or instance; value: point |
| Set disc's damping to value | set-disc-damping | disc: disc or instance; value: number |
| Set disc's mass to value | set-disc-mass | disc: disc or instance; value: number |
| Set disc's radius to value | set-disc-radius | disc: disc or instance; value: number |
| Set disc's rotation to value | set-disc-rotation | disc: disc or instance; value: number |
| Set disc's angular velocity to value | set-disc-angularVelocity | disc: disc or instance; value: number |
| Launch disc upward at speed | launch-disc | disc: disc or instance; speed: number |
| Set disc's avatar to avatar | set-disc-avatar | disc: disc or instance; avatar: any (optional) |
| Paint disc fill | set-disc-appearance | disc: disc or instance; fill: colour; stroke: colour (optional); strokeWidth: number (optional); opacity: number (optional) |
| Set disc's layer to layer | set-disc-layer | disc: disc or instance; layer: layer |
Collisions
| Sentence | Id | Slots |
|---|---|---|
| Set object's tall to value | set-tall | object: object; value: number (optional) |
| Add object to group group | add-group | object: object; group: collision group |
| Remove object from group group | remove-group | object: object; group: collision group |
| Set object's accepted groups to groups | set-accepted | object: object; groups: collision groups |
| Set object's bounciness to n | set-bounciness | object: object; n: number |
| Make object kind | set-sensor | object: object; kind: one of "a sensor", "solid" |
Walls
| Sentence | Id | Slots |
|---|---|---|
| Move wall to position | place-wall | wall: wall; position: point |
| Set wall's velocity to velocity | set-wall-velocity | wall: wall; velocity: point |
| Slide wall to position over seconds seconds | move-wall | wall: wall; position: point; seconds: number |
| Move wall through points over seconds seconds, then | wall-follow | wall: wall; points: list of point; seconds: number; then: one of "once", "repeating", "back and forth" |
| Move point index of wall to position | set-wall-point | index: number; wall: wall; position: point |
| Curve edge index of wall by curve | set-wall-curve | index: number; wall: wall; curve: number |
| Set wall's thickness to bias | set-wall-bias | wall: wall; bias: number |
Visuals
| Sentence | Id | Slots |
|---|---|---|
| Change object's property to value | change-camera | object: object; property: one of "center", "width", "height"; value: any |
Slot types
JSON payload
action
action-schema
any
asset
audience
boolean
collision group
collision groups
colour
crossing
custom-event
disc or instance
layer
list of point
list of text
name
number
object
one of "=", "≠", "<", "≤", ">", "≥"
one of "a sensor", "solid"
one of "center", "width", "height"
one of "either", "forward", "backward"
one of "is set", "is empty"
one of "is", "is not"
one of "normal", "bold"
one of "normal", "italic"
one of "normal", "none", "notification"
one of "once", "repeating", "back and forth"
one of "open", "closed"
player
point
prefab
role
script
text
the variable's type
timer variable
ui-node
variable
wall