Site Events

Pre-made incidents, run from the moderator panel.

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

  1. Open the moderator panel and, under Toolbox, choose Site Events.
  2. Find the event. The search matches name, code, designation and keywords, and empty categories fold away as you type.
  3. Trigger it, or press Copy cmd and run the !evt command 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.

EventOddsForced after
!evt breach Containment Breach55% re-contained, 45% loose3rd attempt in a row is a forced loss
!evt intruder Intruder Detected50/50, even oddsNever — no forced outcome
!evt rshut Emergency Shutdown40% success, 60% failure3rd 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.

CommandEventWhat 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.

CommandEventWhat 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.

CommandEventWhat 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.

CommandEventWhat 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.

CommandEventWhat 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 19 and VTG/A/AMBER becomes 19/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.trigger permit
  • 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.

SCREEN TOO NARROW

This device is below Vortigern's supported size.

Vortigern is built for phones, tablets and computers. Your screen reports under 300px of width, so panels and controls will overflow and some pages will be hard to use.

Rotate the device or open Vortigern on a larger screen for the full interface.