Concepts

What's worth understanding once so everything else fits. Each section ends with notes verified on the server.

Execution order

When something happens in the zone, a stack always follows the same steps:

  1. Event. Someone walks, talks, clicks, enters… or some time passes.
  2. Trigger. Each trigger of that type checks whether it applies (for example, “did they step on one of MY objects?”).
  3. Selectors. They build the list of users and objects to work with. Without selectors, the user is whoever activated the trigger.
  4. Addons. They get ready: randomness, order, limits, movement physics…
  5. Conditions. By default all of them must be met. With Addon: Condition logic you can ask for “any”, “none” or “at least N”.
  6. Effects. If the conditions are met, the normal effects run; if they fail, only the “on failure” ones run, such as Effect: Send signal on failure or Effect: Execute stacks on failure.

If one event fires several stacks at once, the conditions of all of them are checked first and the effects run afterwards. That way one stack can't change the outcome of another that fired at the same moment.

Inside a stack, without Addon: Execute in order, effects run in tiers: first game effects (join a team, points, leave), then those that move kekos, then those that move or change objects, then variables (give → change → remove) and finally messages, unfreeze and signals. That's why a message already shows a variable's new value.

Verified notes (10)
  • A stack is every box on the same tile: there are no wires. If you move a box to another tile, it becomes part of another stack.
  • If you pick up a box and place it again, it comes back with the same settings it had.
  • Trigger: Repeater, Trigger: Time reached, Trigger: Receive signal, Trigger: Game starts and Trigger: Game ends have nobody who triggers them. To show a message or teleport someone, you need a user selector.
  • Effect: Write to log works even when the trigger has nobody who fires it: it doesn't need a selector.
  • Only the owner or someone with rights can use Disable circuits.
  • While Disable circuits is on, nothing triggers, not even a circuit that tries to switch them back on.
  • Circuits stay off even if the island reloads or the server restarts.
  • Circuits have their own clock: a pulse every half second (repeaters, delays, timers) and a sub-pulse every 50 ms (short repeater and fine delays).
  • Delays and projectiles can arrive up to 50 ms late, never early.
  • Circuit messages to the zone arrive as a system message starting with “[Circuit]”.

Signals

A signal connects stacks on different tiles. The Effect: Send signal effect points at a Circuits antenna; any stack with Trigger: Receive signal for that antenna runs, and receives the users and objects that travelled with the signal.

  • In the receiving stack, pick “signal users” or “signal objects” as the source to act on what arrived.
  • That's how big machines are built: one stack decides, others act, without cramming everything onto one tile.
  • Effect: Execute stacks runs other stacks directly, without an antenna. A stack that calls itself doesn't loop: the call runs without its own “execute stacks”.
  • A signal loop A → B → A stops by itself thanks to the execution limit, without freezing the island.

Selectors and sources

Almost every condition and effect has, in its advanced options, a user source or an object source: where the users or objects it applies to come from.

SourceWhat it takes
User who activated the triggerWhoever stepped, talked, clicked… It's the default source.
Selector users / objectsWhat the stack's selectors picked.
Signal users / objectsWhat came with the signal that fired the stack.
Selected objectsThe objects you picked in the box itself.
Reached userThe other keko in a collision, an encounter or the one a bot reached.
User selected by clickThe keko that was clicked.
Verified notes (8)

Addons

An addon does nothing on its own: it changes how the rest of the stack behaves. The most used ones:

Verified notes (12)

Delays and time

Circuits have their own clock, which ticks every half second. That's why times always go in 0.5 s steps: an effect's “wait before running”, repeaters and timers.

  • An effect with a delay is queued and runs when its time comes. It can arrive up to 50 milliseconds late, never early.
  • Trigger: Short repeater ticks faster than the half-second pulse, for things that need precision.
  • Effect: Reset timers makes repeaters start counting again from that moment, but it does not cancel delayed effects already on their way.
  • A teleport can take up to half a second, because it follows the circuits clock.
  • Calendar times (Condition: Time matches, Addon: Time utilities) use the time zone you choose in the circuits menu settings.
Verified notes (21)

Variables

A variable stores a number under a name you choose. First you create it with its box, then you give, change, compare or remove it with other boxes.

BoxWho it belongs to
User variableEach keko's: their points, lives, key.
Object variableEach object's: how many times it was used, which team it belongs to.
Room variableOne for the whole zone: the round, the record. It exists from the moment you set it up, starting at 0.
Context variableOnly during one run: born and gone with each trigger.
Reference variableUses a shared variable from another zone of the same owner.
Echo variableMirrors the value of an internal or smart variable.

When you set up a variable you choose how long it lasts: while in the room (erased when leaving the zone), while the room is active, permanent (survives an island reload) or permanent across rooms (shared with your other zones through a reference).

Verified notes (16)
  • Effect: Remove variable deletes the whole variable; it doesn't set it to 0.
  • ~teleport.target_id on a teleporter gives its pair. Writing it pairs it with another teleporter in the zone, same owner and same type, and their old pairs end up paired with each other.
  • Reference variable can point to a shared variable in another zone of the same owner even if that zone isn't open: it reads the last saved value.
  • Effect: Change variable value doesn't create the variable: you need Effect: Give variable first.
  • The Room variable always exists: it's 0 from the moment it's set up.
  • Inside a stack the order is fixed: give → change → remove → $(…) is read → messages → signal. It doesn't depend on height.
  • Dividing by 0 and modulo 0 change nothing. Division is integer division.
  • “Set minimum” is a floor and “set maximum” is a ceiling.
  • The Context variable is born and dies in each execution.
  • A “while in room” variable is quietly deleted on leaving, without firing Trigger: Variable changes.
  • A permanent variable stays after leaving and survives an island reload.
  • Picking up an object and placing it again in the same zone keeps its variable.
  • Picking up the variable's box deletes the variable and all its saved values. When you place it again, it's empty.
  • A variable belongs to its zone. To use it in another one, make it shared and create a Reference variable; only the owner can set it up.
  • A read-only Reference variable doesn't write.
  • An Echo variable only accepts internal or smart variables, not ones created by users.

Limits and protections

So that no island can freeze the game, circuits have caps. If you know them, you'll hardly ever notice them.

  • Each stack runs at most 100 times every half second, counting everyone who fires it. On a full island, spread the work over several stacks or add Addon: Execution limit.
  • If an island asks for too much work for a long time, its circuits switch themselves off for a few minutes. The Monitor in the circuits menu warns you first with “High load”.
  • Chains of signals that call other signals have a maximum depth, and delayed effects a queue cap.
Verified notes (10)
  • Each stack can run at most 100 times every half second. Anything beyond that doesn't run.
  • A loop (stack A calls B and B calls A) cuts itself off, with no penalty and without freezing the island.
  • Effect: Execute stacks pointed at its own stack doesn't loop: that call runs without its own “execute stacks” boxes.
  • The 100 cap counts everyone who triggers that stack. In a full island (about 60 people talking or clicking non-stop on the same stack) the cap can be reached.
  • If your stack hits the cap, split it into several stacks or stack Addon: Execution limit: each one adds 100 more executions.
  • Every box has a cost. If an island goes far over the limit, its circuits switch off for 10 minutes.
  • Picking up a box removes it from its stack instantly.
  • Effect: Remove user from room can't kick the owner or a moderator.
  • Effect: Mute user doesn't affect the owner, users with rights or moderators. Neither does the mute supercircuit.
  • The chat's bad-word filter also applies to circuit and bot texts.

BoomBang's own rules

Circuits act on BoomBang's world, with its rules:

  • One keko per tile. No circuit movement leaves a keko on top of another.
  • Objects at level 3 or higher are walked under: they don't block the way.
  • Only BBoxes and circuit boxes have height; objects only have two orientations.
  • There are no pets, wall objects, sitting, dancing or hand items: boxes for those work, but nothing is shown.
  • Avatar effects are potions. A potion set by a circuit lasts while the keko stays in the zone; circuits never touch a bought potion.
  • Effect: Remove user from room and Effect: Mute user don't affect the island owner or moderators.
  • Circuit messages arrive as system messages, with “[Circuit]” in front, and go through the game's word filter.
Verified notes (50)
  • With Invisibility control on, visitors without rights stop seeing the circuit boxes, which keep working. The owner always sees them.
  • Invisibility control hides the boxes, Invisible click tile, Disable circuits and Room link. Scoreboards, the Circuits clock, chests and the control itself stay visible.
  • Circuits never change or remove a potion someone bought.
  • A potion given by a circuit lasts while the keko stays in the zone, and only a circuit can remove it.
  • The zone's clan is the clan of the island's owner.
  • A clan's admins are its leader and co-leaders.
  • Being in the owner's clan doesn't let you see or touch their circuits, or pick up objects with :circuitcode.
  • Seeing and editing an island's circuits is up to the owner and whoever is on the island's whitelist.
  • The owner can add their clan in the circuits settings so it gets rights too.
  • In Trigger: Object lands on object, the chosen objects are the ones UNDERNEATH. If you don't choose any, any object counts.
  • Trigger: Object lands on object only counts an object moved by a circuit or the ball: if the owner moves it with the editor, it doesn't fire. Circuit boxes don't count.
  • Trigger: Object lands on object has nobody who triggers it: for messages or teleports you need a user selector.
  • In Trigger: Object hits object both objects must be chosen, the one that moved and the one already there. With nothing chosen, it never fires.
  • In Trigger: Object hits object, the triggering user is the keko closest to the collision.
  • In Trigger: Object reaches tile the tile is written as X,Y. It works for the chosen objects (with none chosen, any object) and also for the ball, for goals.
  • Moving an object with the editor doesn't fire Trigger: Object reaches tile.
  • Trigger: User next to another user fires on every step that leaves a keko on one of the 8 tiles around another. Bots and ghost mode don't count.
  • In Trigger: User next to another user, whoever walked is the triggering user; the other one is the “reached user”.
  • Condition: Number of users that stepped on object records whoever triggered the stack, without repeats, and is met once N different kekos are reached.
  • When Condition: Number of users that stepped on object is met, the count goes back to 0 and the counted kekos become the “selector users”: effects with that source reach all of them.
  • The Condition: Number of users that stepped on object count is lost when the island reloads.
  • One trigger turns Effect: Drop rain on and the next turns it off, removing any chests left.
  • Effect: Drop rain drops a chest every “interval” seconds on a free tile of the zone or area, up to the maximum at once.
  • Whoever steps on a Effect: Drop rain chest picks it up and adds the points to the chosen user variable. Optionally, they get a whisper with {username}, {score} and {points}.
  • Effect: Drop rain chests don't give objects or coins and don't ask for a code.
  • Anyone who enters the zone later doesn't see the Effect: Drop rain chests that had already dropped.
  • Effect: Change object color uses BoomBang colours “color1|color2”. One can be left empty, and that one isn't changed.
  • With “save” the colour is kept for good; without “save”, it lasts until the server restarts.
  • Badly written colours aren't saved.
  • Effect: Send to another room doesn't send anyone to an island that has them on its blacklist: the keko stays where they are. The owner and admins can always enter.
  • Gestures in Trigger: Perform an action, Condition: Performing an action and Selector: Users by action: 101 laugh 1, 102 laugh 2, 103 fart, 104 spit, 105 heart, 106 special, 107 cry, 108 redbull, 109-118 sound words.
  • The laugh still counts as “laugh” and the heart as “blow a kiss”. Gestures count for 2 seconds.
  • Sitting, lying down, dancing, signs and moonwalk don't exist in BoomBang: the boxes work, but nothing is seen.
  • These supercircuits work but nothing is seen: roomwalkthrough, roomlock, roomrespect, roomchangelook, roomtransform, roomhanditem, roomenable, roomsit, roomlay, roommimic and roommoonwalk.
  • A keko always takes up its own tile: a circuit never puts one keko on top of another.
  • Objects at level 3 or higher don't block: you walk under them.
  • BoomBang objects only have two orientations, and only if they can be flipped.
  • Kekos don't turn their head separately: head-only turns don't rotate anything.
  • There are no pets in BoomBang: boxes meant for pets don't find anyone.
  • There are no wall objects in BoomBang.
  • Avatar effects are potions: when a box asks for an effect number, that number is the potion id.
  • Joining a team or teleporting doesn't give the keko any visible effect.
  • Boxes use medals. A medal's code is its id; its title is accepted too.
  • A keko's look is its colours: the character isn't included.
  • The achievement score is the sum of the points of unlocked achievements shown on the profile.
  • Effect: Add event wins adds to the “Event Champion” achievement and only works on staff islands.
  • A keko falls asleep (AFK) after 3 minutes without any action.
  • With the island muted by the owner (:muteisland) only the owner, the whitelist and admins can talk; everyone else doesn't fire Trigger: Say something.
  • The roommute supercircuit mutes the zone on its own and never lifts a mute set by the owner.
  • A moderator in invisible mode does not count for circuits: selectors do not see them, they trigger nothing and no effect touches them.