Site Events
Site Events are 35 written incidents a host can drop into a session — an earthquake, a containment breach, the reactor arc, the detonation that ends everything. Each is a full sequence of music, lighting, side panels and CARETAKER announcements, some unfolding over several minutes. They run alongside Lockdown Protocols, on a separate addon and a separate queue.
Running one
- Open the moderator panel and, under Toolbox, choose Site Events.
- Find the event. The search matches name, code, designation and keywords, and empty categories fold away as you type.
- Trigger it, or press Copy cmd and run the
!evtcommand in game chat instead.
Read the card before you press it. The blurb is written for the host and says what the event will actually do to the session, including the ones that cannot be undone. Every trigger asks for confirmation once; the detonation's asks in rather stronger terms.
A trigger nobody collects within 60 seconds expires. As with lockdowns, this is live-ops rather than a work queue: if no game server is polling, the event is discarded instead of firing at whoever starts the next session.
Queueing, and the abort
- One event runs at a time. Anything triggered mid-sequence waits and runs three seconds after the current one ends.
- Up to eight can be waiting, then further triggers are discarded.
- ALL-CLEAR is the panic button. It empties the queue, stops the sirens, restores the lighting and announces the all-clear, immediately rather than waiting its turn. It also resets the consecutive-attempt counters.
ALL-CLEAR does not rewind a sequence already playing, and it will not stop a detonation. The controller runs one sequence at a time on a single thread, so while an event is playing it is not polling — an ALL-CLEAR sent from the dashboard is not even collected until that sequence ends, and then plays after it. Typed in game it arrives sooner, but the running event still keeps its own timings and its remaining stages, announcements and lighting land on top. A detonation that has been armed still detonates. Treat !evt detonate as irreversible from the moment you confirm it.
ALL-CLEAR does not reset the lockdown controller. The two addons keep their own state. If a lockdown is also active, run its STOP ALL as well — see Lockdown Protocols.
Events that roll the dice
Three events have an outcome nobody chooses. The roll is 1–100 and it is made by the dashboard at the moment you trigger it, not by the game.
| Event | Odds | Forced after |
|---|---|---|
!evt breach Containment Breach | 55% re-contained, 45% loose | 3rd attempt in a row is a forced loss |
!evt intruder Intruder Detected | 50/50, even odds | Never — no forced outcome |
!evt rshut Emergency Shutdown | 40% success, 60% failure | 3rd attempt in a row is a forced failure |
The forced-after rule stops a bad run of luck stalling an arc forever: if Security cannot hold a breach in three attempts, it gets out. Consecutive-attempt counters reset when the reactor is restarted or ALL-CLEAR is run.
The roll is made on the dashboard and written down. The addon sandbox has no dependable random number generator, and — more usefully — the number lands in the command queue alongside who triggered it. When a player insists the host rigged the meltdown, there is a receipt.
Every rolled outcome also exists as a forced event you can run directly, listed in its own section below. Those are a deliberate override rather than a shortcut: reach for them when the story needs a specific result, not as the normal way into an arc.
The catalogue
5 sections, 35 events. Names and designations below are the shipped Institution Vortigern wording; a renamed server shows its own everywhere it shows these.
Site Events
Environmental and site-wide incidents.
| Command | Event | What it does |
|---|---|---|
!evt quake |
BIG Earthquake VTG/B/SEISMIC · high |
Magnitude 6.8 inside the Valley. The lights shudder, the site takes structural damage, Medical starts counting casualties. |
!evt fire |
Fire Alarm VTG/C/FIRE · moderate |
Halon discharge in ninety seconds, and then that sector will not support life. The ninety seconds are the event. |
!evt blackout |
Blackout VTG/B/BLACKOUT · high |
Total darkness, no backup, no klaxon. CARETAKER does not know why — which is worse, because CARETAKER always knows why. |
!evt power |
Power Outage VTG/C/OUTAGE · moderate |
Mains lost, generators carrying essentials on dim amber. The coolant pumps were on that bus — run it before the reactor events. |
!evt evac |
Evacuation VTG/A/EVAC · high |
Muster and go. Class-D are not eligible for evacuation. Never run this alongside a full lockdown — opposite orders. |
!evt medical |
Medical Emergency VTG/C/MEDICAL · moderate |
One casualty, anomalous exposure suspected. Medical gets the spotlight. No klaxon — if every event screams, none of them mean anything. |
!evt sitelock |
Full Institution Lockdown VTG/A/SITELOCK · critical |
Every door sealed. Egress denied at every level, including Level 5. Nobody leaves — not even the Director. |
!evt halt |
Testing Halted VTG/D/HALT · low |
All testing suspended by the Site Director. No siren, no lights, and it changes more player behaviour than any klaxon. |
!evt hiccup |
Operational Hiccup VTG/D/HICCUP · low |
A logged fault nobody cares about — it clears itself. The cheapest way to prime a room: the next alarm gets believed a little less. |
!evt raid |
Raid VTG/A/RAID · critical |
Armed hostiles at the perimeter. Announced at the gate, not in the corridor — the defenders get eighteen seconds to set up. |
!evt syserr |
Server Error Event VTG/D/SYSERR · moderate |
CARETAKER breaks apart mid-announcement, then denies sending it. Once a session, maximum, or the voice stops being trustworthy. |
!evt rogue |
Rogue Personnel VTG/B/ROGUE · high |
Credentials revoked in place. Detain, do not terminate — Ethics wants them able to answer questions. |
!evt meteor |
Incoming Interstellar Object VTG/B/IMPACT · high |
Ninety seconds to a valley impact. Then the twist: it is not inert. It is emitting. The rock is your next SCP. |
Containment & Personnel
Breaches, intruders, and staff-facing orders.
| Command | Event | What it does |
|---|---|---|
!evt breach |
Containment Breach (rolls 55/45) VTG/A/BREACH · critical |
ROLLS THE DICE: 55% re-contained, 45% loose. Third attempt in a row is a forced loss — if Security cannot hold it in three, it gets out. |
!evt dclass |
Class-D Uprising VTG/B/UPRISING · high |
They have a guard keycard. Stage two: they go for the armoury, which means somebody told them where it is. |
!evt goi |
Group of Interest Contact VTG/B/GOI · moderate |
Broadcasting a recognition code that expired eleven years ago. Escort only — until they engage, and then it is not. |
!evt intruder |
Intruder Detected (rolls 50/50) VTG/C/INTRUDER · moderate |
ROLLS THE DICE: even odds, no forced outcome. An off-site badge opening doors. Quiet sweep — do not announce yourselves. |
!evt amnestic |
Amnestic Deployment VTG/C/AMNESTIC · moderate |
You will lose the last two hours. Write your log before you attend, because you will not remember what to write afterwards. |
!evt inspect |
Oversight Inspection VTG/D/INSPECTION · low |
Present the sector as it actually is. The last inspection dismissed three people, and none of it was for the state of the sector. |
!evt decon |
Decontamination Cycle VTG/C/DECON · moderate |
Doors held for four minutes. Do not help anyone already inside — you will simply be inside with them. |
!evt tram |
Tram Fault VTG/C/TRAM · low |
Stalled between stations with passengers aboard. The tunnel looks walkable. CARETAKER would rather not explain why it is not. |
Reactor
The reactor arc, roughly in escalation order.
| Command | Event | What it does |
|---|---|---|
!evt rstart |
Reactor Start-Up RCT/VTG/D/STARTUP · low |
Boring on purpose. Establishes the healthy green, the 100% number, and puts Engineering in the Control Room where you need them. |
!evt rstab |
Reactor Stability Decreasing RCT/VTG/C/STABILITY · moderate |
Stability −25%, and repeatable: fire it at 100, let them sweat, fire it again at 75. The number on the banner is the event. |
!evt rcool |
Reactor Cooling Failing RCT/VTG/B/COOLANT · high |
Primary loop dead, core temperature climbing. The fork is spoken out loud: restore feedwater, or begin an emergency shutdown. |
!evt rshut |
Emergency Shutdown (rolls 40/60) RCT/VTG/C/SCRAM · critical |
ROLLS THE DICE: 40% success, 60% failure. Theatre, then five seconds of dead silence, then the result. Third attempt is a forced failure. |
!evt rleak |
Radiation Leak VTG/B/RADIATION · high |
Lethal dose rates below Sub-Level Three. Medical has to tell a living player that they are already dead. |
!evt rmelt |
Meltdown VTG/Z/MELTDOWN · critical |
Core breach, irreversible. Below the slab is the Lower Vault. CARETAKER refuses to say the word — a human has to. |
Forced Outcomes
Override a roll and pick the result yourself.
| Command | Event | What it does |
|---|---|---|
!evt bcont |
Re-Contained (forced) VTG/D/RECONTAINED · low |
The 55% outcome, forced. CARETAKER notes Security beat their last time — the only praise it ever gives. |
!evt bloose |
Uncontained (forced) VTG/A/BREACH · critical |
The 45% outcome, forced. It is loose below SL-2 and lost between cameras. Sweep in pairs; do not go back for your partner. |
!evt icaught |
Intruder Detained (forced) VTG/D/INTRUDER · low |
The caught outcome, forced. No ID, not talking, and photographing the containment wing rather than robbing it. |
!evt iloose |
Intruder Lost (forced) VTG/C/INTRUDER · moderate |
The escaped outcome, forced. Badge went inert in a nine-metre blind spot. Change your patrol pattern — the old one is compromised. |
!evt rsafe |
Shutdown Success (forced) RCT/VTG/D/SECURE · low |
The 40% outcome, forced. Also the in-fiction abort for the whole reactor arc — fire it when Engineering earn it. |
!evt rfail |
Shutdown Failure (forced) RCT/VTG/B/SCRAM-FAIL · high |
The 60% outcome, forced. Rods jam at 70%. Somebody can drive them home by hand — and will not be coming back out. |
Session Control
Ends or resets everything. Read the blurb first.
| Command | Event | What it does |
|---|---|---|
!evt detonate |
On-Institution Detonation VTG/OMEGA/DETONATION · critical |
Thirty seconds from the arming announcement to the blast, and then the site is gone. This ENDS THE SESSION. Ask before you press it. |
!evt clear |
ALL-CLEAR / RESET VTG/D/NOMINAL · low |
The panic button. Aborts anything in flight (even a detonation mid-countdown), drops the queue, stops the sirens, restores the lighting, plays the all-clear. If a lockdown is also running, hit STOP ALL too. |
!evt detonate ends the session. The warhead is armed, thirty seconds later the institution is gone, and the closing announcement is routed through a backup cell because there is nothing left to route it through. Nothing stops it once confirmed — not ALL-CLEAR, not another event. The Toolbox asks first; this is the second time.
Common misspellings resolve on the way through — nuke, scram, cb, riot, spy, stop and a dozen others map to their canonical codes, so a host typing from memory in game chat is not punished for it.
Renaming it for your own site
Everything the event controller says ships branded for the institution this was built for: the designations read VTG/B/SEISMIC and VTG/A/BREACH, the announcer is CARETAKER, and the detonation aftermath names Institution Vortigern outright. If your
community is not Vortigern, say so on Staff Hub → Protocols & Events — no
source edit, and no re-pasting either addon.
Three fields rewrite the whole system at once:
- Site code — the segment inside a designation. Set it to
19andVTG/A/AMBERbecomes19/A/AMBER, across both controllers, in one edit. - Announcer callsign — who speaks. Replaces CARETAKER at the head of every announcement.
- Site name in prose — written out in full, for the handful of announcements that name the site rather than cite it.
Every designation carries the site code, so one edit moves all of them — lockdowns, events, the reactor arc (RCT/VTG/C/SCRAM renames on its inner segment), the full-site lockdown and the detonation alike. The match is anchored to a whole segment followed by a slash, so a longer code that merely starts the same way, or a mention of the code in prose, is left alone.
Below that, every event has its own row, and each field there is optional. Leave one empty and it follows the site identity; fill it in and it wins. That is why the boxes start blank rather than pre-filled with today's values — pre-filling them would pin every code to the current wording the first time anyone pressed Save, and a later change to the site code would then reach nothing.
Where a change lands, and how soon. The dashboard updates immediately — the Toolbox cards, the copied commands, and the overview's Live Session Status badge. In game, a rename lands at the event controller's next boot — it fetches its sequences once when it starts and caches them for the session, so re-run the script to pick up a change made mid-session. An announcement already playing finishes with the wording it began with.
The page belongs to the Head Event Host rather than the Staff Overseer, because in
most communities those are two different people. Grant it under
Permits → Events → Name Events & Protocols
(events.designations). The Staff Overseer, the server owner and a management override
also reach it, so nobody has to appoint a host before they can fix a typo.
Values are cleaned before they are stored, and an unusable one silently reverts to the default. These strings are spoken aloud in game and parsed by the addons, so a site code may hold only letters, digits and dashes; a designation adds slashes and spaces; names may not contain quotes or angle brackets; and control characters are stripped everywhere. If a box empties itself after you save, the value was rejected rather than lost.
An event's script is written prose rather than a formula, so only its name and designation are editable — but the designation is rewritten everywhere the script quotes it, including the side panel headline and every follow-up stage, so the banner and the voice cannot disagree.
Who can run an event
- Anyone with the
events.triggerpermit - Anyone with Manage Server on the Discord
- The server owner, and anyone holding a staff-level override
The check runs on the server for every trigger, not just when the Toolbox decides which buttons to draw. Requests are limited to 20 in any 30 seconds per user.
The in-game chat trigger has its own allowlist, and it is not your permits. Each controller script carries local authorized = {…} near the top — a list of Roblox usernames — and the file as shipped contains the original author's accounts. Replace it with your own hosts before you install the script, or set statusCommand = nil to allow the dashboard only. Discord permits have no bearing on who can type the command in game.
Limitations worth knowing
Until the event controller has fetched its sequences, no event runs at all. Unlike lockdowns, the words are the event — the script holds no fallback. It retries on every poll and prints DEFS FETCH FAILED to the console until it succeeds, so a dashboard that is unreachable at boot means a session with no events rather than events without announcements.
The event controller ships with debug chat on. It relays every chat message to the first name in its allowlist until you set DEBUG_CHAT = false. Do that before a real session.
No history of triggered events is kept. The queue is drained and forgotten. The overview shows the active event while it runs; nothing records the sequence afterwards.
Five events have no music bed yet — Server Error, Rogue Personnel, Emergency Shutdown, Shutdown Failure and Radiation Leak. Everything else about them runs: sirens, lighting, panels and announcements. They are simply quieter than their neighbours. Tracks are chosen per event in src/utils/game/gameEvents.js.