Kartik Scripts

Security Subsystem

Security Subsystem

A layered property security system: tiered alarms, reinforced doors, motion sensors, and a circuit/breaker hazard. Managers buy and configure protection from the tablet; intruders face escalating obstacles.

All security config is in Config.Security (shared/properties.lua).


Three control levers

Every security feature obeys three server-side levers:

  1. CAP: how much is allowed, via fit-out caps (alarmTierMax, doorReinforceMax, motionSensors, cameras). Cascades block → global → Classic.
  2. ALLOW: per-block toggles allow_security { alarm, reinforce, motion } (set in the block editor; nil = all allowed).
  3. FORCE: an admin override: 'granted' forces monitored on, 'disarmed' kills alarms/sensors.

Managers configure security from the Security tab on the tablet property page.


Alarms (tiered)

Replaces any old furniture-derived binary alarm. Buy a tier from the Security tab:

TierLabelPriceDispatches police?
1Local Alarm$1,500No
2Monitored Alarm$5,000Yes
3Reinforced Suite$12,000Yes
  • A break-in signal (lockpick / raid / motion) raises the alarm. The tier decides the audience: a local ring vs a police dispatch.
  • Tier ≥ Config.Security.MonitoredTier (2) auto-subscribes the recurring security service so monitoring bills through the normal utilities loop.

Reinforced doors

Buy reinforcement charges (Config.Security.Reinforce.pricePerCharge = $2,500) from the Security tab, up to the doorReinforceMax cap.

  • Vs lockpick: a reinforced door needs 1 + charges × picksPerCharge successful picks landed within breachWindow (45 s) before the lock gives. The per-player pick cooldown is bypassed during an active breach so the burst isn't throttled.
  • Vs police raid: a reinforced door hands the officer a breaching action (raidBreachTime, 12 s progress bar). Completing it re-validates the raid, opens the door, and consumes the reinforcement (owner re-buys). Police are never hard-walled.

Motion sensors

Place invisible motion sensors in the world: radial → Property → Motion Sensors. Capped by motionSensors, gated by the motion allow flag.

  • While armed (an intruder without access is inside), moving faster than Config.Security.Motion.velocity within a sensor's radius (6 m) triggers a detection (past a cooldown).
  • A detection always alerts stakeholders and drops a timed map blip; a monitored alarm additionally pings dispatch.
  • Status (count / max) shows in the Security tab; sensors are placed in-world, not from the panel.

Circuit / power hazard

A property with any security fitted (alarm, motion, or camera) exposes a breaker at the entrance.

  • An intruder can radial → Property → Tamper Breaker (TamperTime 6 s) to cut power for CutDuration (240 s). While cut, alarm, motion and cameras are all suppressed, and the interior goes dark.
  • Each tamper risks electrocution (ShockChance 0.35, ShockDamage 20).
  • Cutting power steals nothing and only softly warns the owner (no dispatch) it's griefing-safe. A manager restores it on the spot (radial → Restore Power), or it auto-restores.
Config.Security.Circuit = {
    Enabled = true, CutDuration = 240, TamperTime = 6000,
    ShockChance = 0.35, ShockDamage = 20, AlertOnCut = true, Allow = 'circuit',
}

Power draw

Security devices consume electricity each cycle (Config.Electricity.DeviceDraw: camera 8, motion 4, alarm 6 per tier). Set to 0 to disable. See Utilities & Billing.


Safes

A safe is a furniture piece with an optional hashed keypad PIN, covered on its own page: Safe & PIN Access.

On this page