# Bricks

Every brick, its fields and what it does. Bricks on the game make the rules; bricks on things make behaviour.

A brick is a component with a kind and a few fields. The Studio lists them;
in the folder they are the `rules` of a room and the `bricks` on a thing or
a placed thing. The Studio compiles them into the room's script (the block
between `-- <studio>` and `-- </studio>`) on every save.

## On the game

| kind | fields | does |
| --- | --- | --- |
| `rounds` | `seconds` 10 to 3600, `min` players 1 to 100, `countdown` 0 to 60, `results` 3 to 60 | the game runs in rounds: waits for players, counts down, runs on the clock, shows results, goes again. Without it the room is a hangout |
| `winner` | `by`: `points`, `finish`, `lives` | how a round is won: most points when time is up, first to a FINISH thing, or the last one standing |
| `teams` | `sides`: `two`, `one` | players are dealt to RED and BLUE as they arrive, or all together with one shared score |
| `lives` | `count` 1 to 20 | HAZARD things can cost a life; at zero you are out for the round |
| `score` | `name`, up to 16 characters | what the points are called on the HUD and the scoreboard |
| `welcome` | `text`, up to 400 characters | a window when a player arrives, with a PLAY button |

A game takes one of each.

## On things

| kind | fields | does |
| --- | --- | --- |
| `spawn` | `team`: `any`, `red`, `blue` | players start here each round; several spawns take turns |
| `goal` | `points` -1000 to 1000, `repeat`: `once`, `always` | step on it for points, once a round or every time |
| `pickup` | `points`, `back` seconds 0 to 600 (0 = never) | step on it for points; it vanishes and comes back |
| `hazard` | `effect`: `spawn`, `life`, `points`; `amount` 0 to 1000 | step on it and go back to the start, lose a life, or lose `amount` points |
| `finish` | `points` 0 to 1000 | reaching it finishes the player; first to it can win the round |
| `door` | `room`: a room's name | sends the player into another room of this game |
| `sign` | `text`, up to 200 characters | click to read a line |
| `switch` | `does`: `toggle`, `show`, `hide`; `target`: a name | click to show, hide or toggle things by name |
| `action` | `trigger`: `walk_on`, `click`; `action` and its fields | when stepped on or clicked: `say` (`text`), `banner` (`text`, `seconds` 0.5 to 10), `points` (`amount`), `teleport` (`x`, `y`), `window` (`title`, `text`, `button`), `paint` (`colour`), `send` (`room`), `hide`, `show` (`target`) |

A thing can carry several. On the item they hold for every instance; on a
placed thing they hold for that one, on top.

