20 KiB
Zero Engine (SLA Industries) — System State Reference
Last updated: 2026-06-01
System version: 1.3.0-dev
Foundry compatibility: v13 minimum, verified v14.361
World: SLA_Industries (last played 2026-06-01, ~110 hours playtime)
Single source file: zero-engine.mjs (~6500+ lines)
File Map
| Path | Role |
|---|---|
system.json |
Manifest — id: zero-engine, entry: zero-engine.mjs |
zero-engine.mjs |
Everything: classes, hooks, data tables, PC/NPC creators |
styles/zero-engine.css |
All CSS (~4600+ lines, SLA Borg font family) |
blade-runner.css / .js |
Legacy Blade Runner skin (not SLA-active) |
template.json |
Actor & Item data schemas |
lang/en.json |
English localisation strings |
templates/actor/character-sheet.hbs |
Primary PC sheet (Mk1) |
templates/actor/character-sheet-mk2.hbs |
Mk2 dark sheet variant |
templates/actor/npc-sheet.hbs |
NPC sheet |
templates/actor/vehicle/vehicle-sheet.hbs |
Vehicle sheet |
templates/actor/loot/loot-sheet.hbs |
Loot container sheet |
templates/actor/character/ |
Modular tab partials (stats, combat, inventory, mods, bio) |
templates/components/roll/roll-chatcard.hbs |
Roll result chat card |
templates/item/item-sheet.hbs |
Item sheet |
packs/armors.json |
6 armors |
packs/drugs.json |
7 drugs |
packs/ebb-formulae.json |
30 Ebb formulae |
packs/specialties.json |
16 specialties |
packs/tables-data.json |
5 rollable tables (panic, phys crit, mental crit, ranged fail, melee fail) |
fonts/SLABorg-*.woff2 |
Custom SLA Borg font family (Book, Tech, Title, UI) |
assets/icons/ebb/ |
10 Ebb discipline SVG icons |
assets/racial/ |
8 racial ability SVG icons |
assets/textures/ |
Chat card, character sheet, journal background webps |
Actor Types
character (PC)
Attributes (base 2 each, rolled as Nd6):
- Strength, Agility, Wits, Empathy
Skills (add to attribute for dice pool):
| Skill | Attribute |
|---|---|
| Force, Melee, Stamina | Strength |
| Marksmanship, Mobility, Stealth | Agility |
| Crafting, Observation, Survival | Wits |
| Healing, Insight, Persuasion, Ebb | Empathy |
Derived Stats:
health(value/max) — base 3, modified by race/training/armor/drugs/specialtiesresolve(value/max) — base 3, modified by race/training/drugs/specialtiesstress— scalar 0–10; adds stress dice to all rolls (1s on stress dice = Banes)carryLimit— base 4broken— boolean; triggers Broken condition
Other Fields:
details— age, height, weight, scl (default 10), credits (default 500)race— string key (see Races below)training— array, first entry used as archetype labelarchetype— stringflux(value/max) — Ebb resource; max = Ebb skill + 1criticalInjuries— physical[] and mental[] arrayspanic— directive string, active booleanvevaphon— instability (0–12), instabilityMax (12), activeMorphFormfinances— income (salary, bpnReward, other), expenses (accommodation, drugs, subscriptions, other, bulletTax), debt, ammoSpentSession, creditLog[]bpn— code, type (blue/green/red/silver/gold/black), status, reward, description, objectives, notesspecialties/equipment/weapons— legacy text fields (items are embedded)
Health/Resolve calculation (calculateHealthResolve):
healthMax = 2 + (STR-2) + raceMod + trainingMod + equipmentMod + specialtyMod + drugMod
resolveMax = 2 + (EMP-2) + raceMod + trainingMod + equipmentMod + specialtyMod + drugMod
Recalculates on: attribute changes, race change, item add/remove/update, active effect changes.
npc (NPC)
Simplified schema: biography, threat (1–5), flat attributes (str/agi/wits/emp), health (value/max), armor (flat number), damage.
Item Types
| Type | Key Fields |
|---|---|
weapon |
weaponType, category (ranged/melee), damage, range, rof, gearBonus, ap, magazine, ammo, fireModes, autoAmmoUse, ammoType, caliber, roundType, initiativeMod, equipped, ammoEmpty |
armor |
armorRating, armorDice, armorAuto, statMod, skillMod, statModTarget, skillModTarget, healthMod, resolveMod, initiativeMod, equipped |
equipment |
quantity, cost, weight, isDrug, active, activeDuration, healthMod, resolveMod, statPhysicalMod, skillAllMod, panicReduction, injuryPenaltyIgnore, stressRecoveryBonus, postUseStaminaDamage, withdrawal variants of all mods, per-skill mods, initiativeMod, equipped |
ammo |
caliber, roundType, quantity, costPerRound, apBonus, damageMod, blastRadius, weight |
specialty |
category, effects, prerequisites, package, healthMod, resolveMod, racialBonuses[], isActive |
ebb |
discipline, fluxCost, successes, effect, catastrophe, duration, range |
Races
8 playable races, defined in SLA_RACES:
| Race | Key | Base Attrs | Attr Points | Skill Points | Health Mod | Resolve Mod | Notes |
|---|---|---|---|---|---|---|---|
| Human | human |
2/2/2/2 | 6 | 10 | 0 | 0 | Caps 5/5/5/5 |
| Ebon | ebon |
2/2/3/3 | 4 | 10 | 0 | +1 | Ebb user. Caps 4/4/5/5 |
| Brain Waster | brainwaster |
2/2/4/3 | 3 | 10 | 0 | 0 | Ebb user, push risk catastrophe. Caps 3/4/5/5 |
| Stormer 313-S | stormer |
4/3/2/2 | 3 | 8 | +2 | 0 | Caps 5/5/3/3 |
| Shaktar | shaktar |
3/3/2/2 | 4 | 9 | +1 | 0 | Caps 5/5/4/4 |
| Wraith Raider | wraithraider |
2/4/2/2 | 4 | 10 | 0 | +1 | Caps 4/5/5/4 |
| Frother | frother |
4/2/2/2 | 4 | 8 | +1 | -1 | Drug Dependency: -1 all rolls when no drug active. Caps 5/4/4/3 |
| Stormer Vevaphon | vevaphon |
3/3/2/2 | 5 | 8 | +2 | -1 | Morph forms + Instability. Caps 5/5/4/3 |
Race-derived derived stats are applied in RACE_DERIVED_MODS and calculateHealthResolve. Race change auto-adds racial specialty items via _ensureRacialAbilities.
Racial Abilities (auto-embedded on race set)
Each race gets specialty items automatically added to the actor:
| Race | Specialties Added |
|---|---|
| Human | Social Versatility (+1 Persuasion, +1 Insight) |
| Ebon | Ebb Sensitive, natural Ebb formulae |
| Brain Waster | Ebb Fury (push = catastrophe risk), natural Ebb formulae |
| Stormer | Regeneration (regen HP on rest) |
| Shaktar | Warrior Caste (+1 Force, +1 Melee), Code of Honor |
| Wraith Raider | Shaper Senses (+2 Stealth, +1 Observation), Cold Adapted |
| Frother | Drug Dependency, Combat Drug User (+2 Force/Melee while drugged), Blade Proficiency |
| Vevaphon | Brute Form, Stalker Form, Raptor Form, Morphic Strike |
Vevaphon Morph Forms
Switching form costs 1 Instability and triggers an automatic instability check roll (1d6 + current instability). Forms are stored as specialty items. activeMorphForm key: none / brute / stalker / raptor.
| Form | Bonuses | Restriction |
|---|---|---|
Base (none) |
Normal stats | — |
| Brute | +2 Health max, knockdown immune, +1 Force, +1 Melee | Cannot be disguised |
| Stalker | +2 Stealth, +1 Agility dice | Cannot wear armour |
| Raptor | +2 Melee, +1 Marksmanship (close range), crits +1 dmg | — |
| Morphic Strike | Natural weapon DMG 2 AP 1 | Always available, all forms |
Instability table (roll: 1d6 + instability value, triggers at result ≥ 7):
| Range | Name | Severity |
|---|---|---|
| 7 | Flicker | minor |
| 8 | Skin Crawl | minor |
| 9 | Drift | minor |
| 10 | Identity Slip | minor |
| 11 | Voice Shift | minor |
| 12 | Pain Spike (+1 Stress) | moderate |
| 13 | Limb Fault (-2 phys) | moderate |
| 14 | Form Bleed | moderate |
| 15 | Sensory Overload | moderate |
| 16 | Tissue Rejection (1 dmg, no armour) | moderate |
| 17 | Threat Lock | serious |
| 18 | Form Panic (+1 Stress) | serious |
| 19 | Memory Fracture | serious |
| 20 | Partial Collapse (1d3 dmg) | serious |
| 21 | Identity Bleed | serious |
| 22 | Uncontrolled Shift (+1 Instability) | serious |
| 23 | Trauma Response (Shaken) | serious |
| 24 | Permanent Scar | critical |
| 25 | Full Reversion (-1 Instability, revert) | critical |
| 26 | Psychic Scream | critical |
| 27 | Body Horror | critical |
| 28 | Cascade Shift (1d3 dmg, +1 Instab) | critical |
| 29 | Dissolution Risk | critical |
| 30 | Identity Death | catastrophic |
| 31 | Organ Shift (2 dmg/round) | catastrophic |
| 32 | Full System Failure | catastrophic |
| 33 | Catastrophic Cascade (1d6 dmg/round) | catastrophic |
| 34 | Biogenetic Detonation (2d6 self, 1d6 AoE) | catastrophic |
| 35 | Terminal Dissolution | lethal |
| 36+ | Total Collapse (instant death) | lethal |
Auto-effects are applied programmatically (autoStress, autoDamage, autoDamageRoll, autoInstability, revertForm, applyCondition).
Training Packages
8 packages in SLA_TRAINING, selected at PC creation:
| Package | Key | Starting Skills | Specialty | Armour |
|---|---|---|---|---|
| Soldier | soldier |
Melee 2, Marksmanship 2, Stamina 1 | Hard Hitter | CAF Armor |
| Scout | scout |
Stealth 2, Mobility 2, Observation 1 | Fast Reflexes | Scout Armor |
| Combat Medic | medic |
Healing 2, Insight 1, Observation 2 | Field Surgeon | Downtown Jacket |
| Technical Operative | tech |
Crafting 3, Observation 1, Survival 1 | Inquisitive | Downtown Jacket |
| Negotiator | negotiator |
Persuasion 2, Insight 2, Observation 1 | Gut Feeling | Downtown Jacket |
| Hunter | hunter |
Marksmanship 2, Stealth 2, Observation 1 | Sniper | Scout Armor |
| Brawler | brawler |
Force 2, Melee 2, Stamina 1 | True Grit | CAF Armor |
| Ebb Channeller | ebb_user |
Ebb 3, Insight 1, Persuasion 1 | Ebb Sensitive | Downtown Jacket |
Ebb Channeller gives race-differentiated starting formulae:
- Ebon: Empathic Pulse, Danger Sense, Mind-Link, Calm, Ebb Shield, Ebb Sight, Surge
- Brain Waster: Ebb Bolt, Heat Touch, Surge, Push, Empathic Pulse, Ebb Shield, Iron Flesh
NPC Archetypes
10 archetypes in SLA_NPC_TYPES (used by SLANPCCreator):
| Archetype | Threat | HP | Armor |
|---|---|---|---|
| Civilian | 1 | 4 | 0 |
| Gang Grunt | 1 | 5 | 1 |
| Shiver (Patrol) | 2 | 6 | 2 |
| SLA Operative (Green) | 2 | 5 | 2 |
| Carrien | 2 | 7 | 1 |
| SLA Operative (Veteran) | 3 | 8 | 3 |
| Ebb Operative (Ebon) | 3 | 6 | 1 |
| Dept. of Propaganda Agent | 3 | 6 | 2 |
| Dark Finder | 4 | 10 | 4 |
| (10th not captured in this read) | — | — | — |
Core Roll Mechanics
Dice Pool
- Roll Attribute + Skill d6s (plus Gear Bonus for weapons)
- Success = 6 on any die
- Count total successes (each 6 = 1 success)
- 0 successes = failure
Stress Dice
stressvalue adds that many d6s to every roll- 1s on stress dice = Banes (tracked, can trigger panic)
- Stress increases on push; some drugs/drugs-withdrawal affect stress
Push
- After a failed roll, player may push (re-roll non-6, non-1 dice)
- Cost: +1 Stress
- Brain Wasters: pushing risks catastrophe result
- Results formatted with
_formatYZEResultand displayed in chat card
Armor Check
- Triggered when character takes damage
- Roll armorDice d6s, subtract AP from dice pool first
- Successes reduce damage 1:1
armorAuto= automatic damage reduction (no roll needed)- Called via
_promptAndRollArmorCheck→_rollArmorCheck
Weapon Rolls
- Ranged: AGI + Marksmanship + Gear Bonus
- Melee: STR + Melee + Gear Bonus
- Fire modes: single, burst, full-auto (different ammo costs)
autoAmmoUse: ammo consumed on full-auto (default 8)- Bullet Tax auto-applied after session (tracked in
finances.bulletTax)
Ebb Rolls
- Roll EMP + Ebb Skill d6s
- Need
successesthreshold from formula item - Flux cost deducted from
flux.value - Catastrophe text displayed on roll if applicable
- Disciplines: awareness, blast, communicate, enhance, heal, protect, realityFold, senses, telekinesis, thermal
Conditions (SLA_CONDITIONS)
14 registered status effects, auto-applied via applyCondition or Token HUD:
| ID | Label | Penalty |
|---|---|---|
sla-bleeding |
Bleeding | -1 HP/turn |
sla-stunned |
Stunned | -3 all dice, clears end of turn |
sla-pinned |
Pinned | -2 melee/marksmanship/mobility |
sla-suppressed |
Suppressed | -2 all dice |
sla-on-fire |
On Fire | -2+ HP/turn (escalating), -1 all dice |
sla-blinded |
Blinded | -3 ranged/observation, -2 melee |
sla-deafened |
Deafened | -1 observation |
sla-broken |
Broken | -2 all dice, must roll Stamina to act |
sla-winded |
Winded | -1 all dice, clears end of round |
sla-broken-arm |
Broken Arm | -2 Melee, -1 Marksmanship, -1 Force |
sla-broken-leg |
Broken Leg | -2 Mobility, -1 Stealth |
sla-concussed |
Concussed | -1 all, extra -1 Observation/Wits |
sla-gut-wound |
Gut Wound | -2 all dice |
sla-panicking |
Panicking | -2 all dice, cannot act normally |
sla-shaken |
Shaken | -1 all dice |
Condition dice penalties are applied via _getConditionModifiers(actor, {skill, attribute}) and reflected in every roll.
Tables (tables-data.json)
| Table | Formula |
|---|---|
| Panic | 1d6 + Stress |
| Physical Critical | 1d66 |
| Mental Critical | 1d66 |
| Ranged Critical Fail | 1d6 |
| Melee Critical Fail | 1d6 |
Equipment Packs
Armors (6)
| Name | AR | Dice | Auto |
|---|---|---|---|
| Downtown Jacket | 1 | 1 | 0 |
| CAF Armor | 2 | 2 | 1 |
| Scout Armor | 3 | 3 | 1 |
| HARD Armor | 4 | 4 | 2 |
| Exo-Rig Armor | 5 | 5 | 2 |
| Squad Shielded Power Armor | 6 | 6 | 3 |
Drugs (7)
| Name | HP | Resolve | Str | Panic Red |
|---|---|---|---|---|
| Painkillers | 0 | +1 | 0 | 0 |
| Stimulant | 0 | +1 | +1 | 0 |
| Sedative | 0 | +2 | 0 | 0 |
| Redline | +1 | -2 | +2 | 0 |
| Calm-Line | 0 | +2 | 0 | +2 |
| Rush | +1 | -1 | +1 | 0 |
| UV (Ultra-Violence) | +2 | -3 | +2 | 0 |
All drugs track active/withdrawal states with separate modifier sets.
Specialties (16 in system pack)
Categories: combat, investigation, social, medical, ebb, racial, survival
| Name | Category | Package |
|---|---|---|
| Sniper | combat | Scout |
| Fast Reflexes | combat | Scout |
| Inquisitive | investigation | Investigator |
| Gut Feeling | investigation | Investigator |
| Hard Hitter | combat | Frother |
| True Grit | survival | Frother |
| Menacing | social | Corporate |
| Compassion | social | Corporate |
| Field Surgeon | medical | Medic |
| Healer | medical | Medic |
| Ebb Sensitive | ebb | Ebon - Any |
| Ebb Fury | ebb | Brain Waster - Operative |
| Code of Honor | racial | Shaktar |
| Cold Adapted | racial | Wraith Raider |
| Regeneration | racial | Stormer |
| Combat Drug User | racial | Frother |
Ebb Formulae (30)
| Discipline | Formulae |
|---|---|
| Awareness | Empathic Pulse (1), Precognition (2), Danger Sense (2) |
| Blast | Ebb Bolt (1), Hellfire (2), Ebb Storm (3) |
| Communicate | Mind-Link (1), Broadcast (2), Compel (2) |
| Enhance | Surge (1), Iron Flesh (2), Heightened State (3) |
| Heal | Mend (1), Restore (2), Calm (1) |
| Protect | Ebb Shield (1), Ward (2), Phase Shell (3) |
| RealityFold | Blink (2), Fold Space (3), Phase Through (3) |
| Senses | Ebb Sight (1), Mind's Eye (1), Remote View (2) |
| Telekinesis | Push (1), Grip (2), Levitate (2) |
| Thermal | Heat Touch (1), Flame Burst (2), Freeze (2) |
(Numbers in parentheses = Flux cost)
Sheets
Registered Sheets
| Class | Type | Label | Default |
|---|---|---|---|
ZeroEngineActorSheet |
character + npc | Zero Engine Character Sheet | Yes |
ZeroEngineActorSheetMk2 |
character only | Zero Engine — Mk2 (Dark) | No |
ZeroEngineItemSheet |
all items | Zero Engine Item Sheet | Yes |
Mk1 Sheet Tabs (character-sheet.hbs)
Stats, Combat, Inventory, Mods, Bio — via templates/actor/character/sheet-tabs/
Mk2 Sheet (ZeroEngineActorSheetMk2)
Dark-themed variant extending ZeroEngineActorSheet. Uses character-sheet-mk2.hbs. Full SLA Borg font/dark palette.
PC Creator Wizard (SLAPCCreator)
Multi-step Application launched from Actor Directory. Steps:
- Choose race (8 options with flavor text)
- Allocate attribute points (race-specific pool and caps)
- Choose training package (some race-restricted, e.g. Ebb Channeller = Ebon/Brain Waster only)
- Allocate skill points (race-specific pool, cap 3)
- Random name generation (race-keyed name tables)
- Confirm & create actor with all embedded items
Racial abilities auto-embedded via _ensureRacialAbilities on actor creation when race is set.
NPC Creator (SLANPCCreator)
Two modes: Quick (pick archetype, auto-fill stats) and Full (manual stat entry). Generates NPC actor with appropriate weapons, armor, and attributes.
Hooks Registered
| Hook | Purpose |
|---|---|
init |
Register sheets, Handlebars helpers, SLA conditions setup trigger |
setup |
Register SLA_CONDITIONS as Foundry status effects |
ready (×3) |
DiceSoNice skin, PC creator button in Actor Directory, world clock |
createCombatant |
Auto-initiative handling |
renderCombatTracker |
Custom combat UI additions |
diceSoNiceReady |
Register custom SLA Borg d6 dice skin |
renderChatMessageHTML |
Post-roll push buttons, apply damage buttons |
preUpdateActor |
Guard recalc triggers |
createActor |
Auto-derive stats + racial abilities |
updateActor (×2) |
Recalc derived stats; handle race change → racial abilities |
createItem / updateItem / deleteItem |
Recalc derived stats (armor/drug/specialty mods) |
createActiveEffect / updateActiveEffect / deleteActiveEffect |
Recalc derived stats |
renderActorDirectory |
Inject "New SLA Operative" PC creator button |
updateWorldTime |
Shift Ledger world clock integration |
combatTurnChange |
Per-turn condition ticks (bleeding, on fire, etc.) |
renderTokenHUD |
Condition toggle buttons in token HUD |
pauseGame |
Custom SLA pause animation |
Modules
All modules are standalone FormApplication/Application classes targeting the zero-engine system.
sla-bpn-dispatch (v0.3.0)
Generates random BPN briefings using SLA mission colour logic (blue/green/red/silver/gold/black). Builds contact name, objectives, scenario frame, reward package. Creates GM debrief journal entry. Integrated into Actor Directory.
sla-briefing-desk (v0.1.0)
Mission briefing composer. Draft saved to world settings. Renders HTML briefing and creates journal entry. Adds button to Journal Directory.
sla-gear-cache (v0.1.0)
Generates ammo caches, med packs, breach kits, requisition bundles. Adds generated items directly to selected actor. Adds button to Actor Directory.
sla-npc-director (v0.1.0)
Tracks NPC morale, suppression, stance, and intent. Reads from current combatants or selected tokens. Saves state to world settings. Accessible from Combat Tracker, Actor Directory, and Settings.
sla-ops-clock (v0.1.0)
Tracks mission tempo: operation clock, heat, collateral, pressure. Posts player-facing updates to chat. State saved to world settings. Adds button to Scene Directory.
sla-shift-ledger (v0.2.0)
Full campaign time tracker. Manages: day/week/shift progression, actor duty schedules, housing tiers (with weekly cost calculation), living cost ledger. SlaCampaignClockApp application. Integrates with updateWorldTime hook.
World Compendium Packs (SLA_Industries world)
| Pack Name | Type | Contents |
|---|---|---|
specialities |
Item | World-level specialty items (LevelDB) |
sla-specialties |
Item | SLA specialty items (LevelDB) |
sla-weapons |
Item | SLA weapon items (LevelDB) |
Known Issues / Notes for Development
template.jsonstill listsvehicleas an actor type in world notes but is not in the schematypesarray — vehicle sheet exists as a template but is not formally registered as an actor type.- Ebb
flux.maxis computed dynamically (Ebb skill + 1) rather than stored;flux.valueis stored. racefield is typed asArrayintemplate.jsonbut consumed as a string throughout the code (race[0]with fallback). This is a legacy inconsistency.- Bullet Tax tracks
ammoSpentSessionon the actor and applies costs at rest. blade-runner.css/blade-runner.jsare present but not loaded — legacy files from the base YZE system.lang/contains de, en, es, fr, ko, pl — only en is actively maintained for SLA content.- DiceSoNice skin registered as
sla-borg-d6using custom SFX config atassets/plugins/dice-so-nice/.