Runners
Your Operatives
Runners — also called Hoods in slang — are the backbone of your organization. They execute your orders, scout areas, raid rivals, and manage your buildings. Without runners, nothing happens.
You can control a maximum of 100 runners, organized into up to 10 teams of 10 members each.
Attributes
Each runner has six core attributes that determine their strengths:
| Attribute | Abbrev. | Description |
|---|---|---|
| Strength | STR | Physical power. Determines melee damage, intimidation, and carry capacity. |
| Intelligence | INT | Mental acuity. Influences scouting quality, hacking success, and plan detection. |
| Stealth | STL | Ability to remain undetected. Reduces heat buildup and increases stealth action success. |
| Tech | TCH | Equipment and technology proficiency. Determines hacking, explosives, and vehicle handling. |
| Charisma | CHA | Persuasiveness. Influences recruitment, bribery, and team leadership. |
| Constitution | CON | Resilience. Determines max HP, stress resistance, and recovery speed. |
Dynamic States
Beyond fixed attributes, each runner has four status values that change constantly:
| Status | Range | Meaning |
|---|---|---|
| Loyalty (LOY) | 0–100 | How loyal the runner is to you. Below 40: unreliable — may execute orders sloppily. Below 20: refuses orders or deserts. |
| Hit Points (HP) | 0–max | Health. At 0 the runner is incapacitated (Active=false). Does NOT regenerate passively — restore via the SEND_TO_MEDIC action ($800 clean, heals 25 + CON×0.5 HP and clears 10 heat). |
| Stress (STRS) | 0–100 | Psychological strain. High stress reduces performance and loyalty. Chronic stress leads to breakdowns. |
| Heat (HEAT) | 0–100 | Individual heat level. Independent from sector heat. High heat = arrest risk on every action. |
Loyalty is the most critical value. A runner with high heat and low LOY is a ticking time bomb — they might testify against you if arrested.
Heat cooldown — SEND_TO_SAFEHOUSE: A runner whose heat is climbing toward arrest territory can be pulled off the street with SEND_TO_SAFEHOUSE (STL-driven, 30 min, 3-day default lockout). The runner goes inactive for the duration, but the safehouse-multiplier kicks in on the entry day so the heat decay is much faster than on-street decay. Last-resort tool for hot runners that can’t risk another action without getting arrested. Full entry in Actions — Personnel Management.
Attribute progression (server v1.63.0+): STR/INT/STL/TCH/CHA/CON were fixed at hood creation through v1.62.x. The new TRAIN_HOOD action (Verwaltung, $500 clean, full-day 480 min, 24 h cooldown) bumps the runner’s highest current attribute by +1 (or +2 on crit-success), capped at 80. Specialist arc — strong gets stronger, weak stays cheap. Random-roll generation can still produce attributes above 80 at hire time; training only raises post-hire growth to the soft 80 ceiling.
HP system rework (planned, #589): the current single-HP-pool model gets a multi-phase replacement — body parts + targeted damage + permanent injuries + cyberware swaps + humanity score. Spec draft in docs/HP_AND_CYBERWARE.md; cyberware sourcing + Ripperdoc-NPC system in docs/CYBERWARE.md. Until those phases land, HP behaves as documented above.
Recruitment
You find new runners via a 2-day cycle:
Day 1: Send a recruiter to a venue (building with recruits tag) — a bar, harbor, university, or fight club. The RECRUIT action targets the building itself. Different venues attract different runner types:
| Venue | Typical Runners |
|---|---|
| Bar / Nightclub | All-rounders, street fighters (high STR/CON) |
| Harbor / Docks | Smugglers, physical workers (STR/CON) |
| University / Tech Hub | Hackers, planners (INT/TCH) |
| Fight Club / Arena | Elite fighters (STR/CON), low INT |
| Luxury Restaurant | Charmers, con artists (CHA/INT) |
Day 2: You receive 0 to 3 candidates to choose from. Review their attributes and decide who to hire.
Recruit Cost (standard)
Regular recruitment costs $600 in clean cash (economy.recruit_cost: 600). There is no separate “emergency” path — if your pool is empty, your only options are waiting for the next day or starting venue scouting.
Teams
Runners are organized into teams. Each team has a team leader whose CHA value determines how many runners they can effectively coordinate (delegation capacity). Maximum 10 teams with up to 10 members each.
The advantage of teams: you can issue team-wide orders instead of controlling each runner individually. “Team Alpha: patrol Sector 7” is one command — all members execute it.
Important: Runners without a team assignment are inactive — they cannot execute daily orders but still cost salary.
Team management in the Runner screen:
- Create teams: Inline input field in the Roster tab (enter name, press Enter or click button)
- Assign runners: Via Drag & Drop — drag runner chips from the “Unassigned” section into a team, or between teams
- Remove runners: Click the ✕ next to the runner’s name in the team
- Appoint leader: Click the ★ star next to the runner’s name — the current leader has a golden star
- Dissolve team: “Dissolve” button in the team header (all members become unassigned)
Each team displays: member counter (e.g. “3/10”), coordination bonus and delegation capacity of the leader.
Team Roster Table
Within each team, members are displayed as a full table — identical to the Roster view with portrait, name, HP, heat, loyalty and all six attributes as mini-bars. This gives you full oversight of each member’s capabilities even in the team view.
Manager Role
Hoods can be assigned to a building as manager (assign_manager action):
- Managers count toward the 100-hood limit (
MaxHoodsPerPlayer = 100) — they’re hoods withIsManager: true, not a separate entity - A building without a manager produces no income — managers are essential
- Manager bonus: +15% income (
economy.manager_income_bonus: 0.15) - Manager salary: 1.5× standard (formula
200 + avgAttr×3 + numSkills×100, then × 1.5) - Recall via
recall_manageraction — afterwards the hood can run regular actions again
If manager heat > 30, the synergy modifier kicks in additionally: sector wash cap drops — managers with low heat keep your laundering pipeline clean.
Portraits
Every runner has a unique 3D portrait — an automatically generated profile image based on the runner’s name and role. The portrait is rendered in real-time from Synty character models using Babylon.js.
How Portraits Work
- Deterministic: The server assigns a
PortraitSpecto each runner at creation (model, attachments, skin tone, gender). Same session seed + runner index always produces the same portrait. - Attribute-based: The dominant attribute determines the model pool. STR runners look like soldiers or mercenaries. STL runners wear ninja outfits or hacker gear. CHA runners have business looks.
- Attachments: Depending on the seed, a runner gets 0 to 2 accessories — hairstyles, headsets, cybernetics, piercings, or earrings. Gender-matched.
- Frame Cache: Once rendered, portraits are cached as image data. When reopening a detail panel or scrolling through the roster, the portrait is instantly displayed from cache without re-rendering.
Status Effects
The portrait visually reflects the runner’s condition:
| Condition | Visual Effect |
|---|---|
| Arrested | Grayscale filter + bars overlay |
| High stress (>80) | Slight blur effect |
| Assigned to team | Colored border in team color |
Detail Portrait
When you open a runner in the detail panel, you see a large 280px portrait — a high-resolution bust shot of the character. The portrait is cached after first render and displayed instantly thereafter.
No WebGL?
If your browser does not support WebGL, you see a colored circle with the role abbreviation (EN, GH, AN, TC, FX) instead. Less pretty, but functional.
Player Character
In addition to the auto-generated runner portraits, you have your own player character — your personal in-game profile.
Customization
In Hub → Settings you’ll find the character editor with a live 3D preview:
| Option | Description |
|---|---|
| Character Model | 8 different cyberpunk models (Cyborg, Mercenary, Racer, Rich, Street) |
| Skin Tone (MST) | 8 skin tones, applied via real-time texture manipulation |
| Pose | T-Pose, A-Pose or I-Pose |
| Hairstyles | 8 hairstyles (mutually exclusive with headgear) |
| Headgear | 4 hats/helmets (mutually exclusive with hairstyles) |
| Earrings | 9 variants |
| Piercings | 4 variants — multi-select supported (e.g. nose + lip simultaneously) |
| Masks | 1 variant |
Camera Controls
The 3D preview supports full camera control:
- Scroll = Zoom (down to face level)
- Left-drag = Orbit (rotate camera around character)
- Right-drag = Pan (move camera)
- Face button = Animated camera fly-in to face
- Reset button = Back to full-body view
Profile Picture
A 128×128 head portrait is automatically rendered from your character and saved as your profile picture. It appears:
- In the Hub header (small avatar icon, top right)
- In the Profile tab (large portrait next to your name)
- The profile picture updates automatically whenever you change your character
Your character and profile picture are saved server-side and available across all devices.
Manager Role
You can station a runner as a manager in a building. This is mandatory — a building without a manager generates $0.
Manager Tab in the Runner Screen
The Runner screen has a dedicated Manager tab that shows all current managers with their assigned buildings:
| Information | Description |
|---|---|
| Runner Attributes | Compact attribute overview (STR, INT, STL, TCH, CHA, CON) with mini-bars |
| Assigned Building | Name, zone, category and front status of the building |
| Building Financials | Daily income, rent/maintenance, net profit at a glance |
| Defense & Value | Defense value and property value of the building |
| Delegation Capacity | Based on CHA — how many subordinates the manager can coordinate |
Assigning a Manager
To assign a manager, click “Assign Manager” in the Manager tab. An inline runner picker opens showing all available runners (active, not already a manager). Click a runner to station them as manager.
Important: A runner assigned as manager automatically leaves their current team.
Heat Warning
Managers of illegal operations (drug lab, weapons cache, fence shop) passively accumulate heat just from working there. Rotate your managers regularly to distribute heat.
Workforce Trends (Sparklines)
In the Runner and Economy screens you see 7-day sparklines per
player that aggregate your entire workforce across every
sector where you own buildings (sector axis — covers ALL
workers in your sectors, including rivals’). The data comes
from the server-side pipeline (WorkforceXxxHistory in the
fixture) and is rolled up deterministically from per-sector
daily snapshots:
| Sparkline | Source | What you see |
|---|---|---|
| Heat trend | per-sector HeatHistory | Average + max heat across your sectors — “where will the cops show up first?” |
| Income trend | per-sector IncomeHistory | Daily revenue from buildings in your sectors |
| Wage trend | per-sector WageHistory | Monthly wage bill + owner/staff split |
| Productivity trend | per-sector ProductivityHistory | Owner and staff productivity (weighted) |
| Psychometrics trend | per-sector PsychometricsHistory | Avg fear / corruption / loyalty / observance |
| Population trend | per-sector PopulationHistory | Total / labor supply / labor demand |
| Demographics trend | per-sector DemographicsHistory | Newborn / juvenile / adult / elderly counts |
| Wealth trend | per-sector WealthHistory | Avg + min + max wealth + wealth gap |
| Churn trend | per-sector ChurnHistory | Hires / promotions / retires / quits / deaths sums |
| Wealth-flow trend | per-sector WealthFlowHistory | Inflow / outflow + signed Net (negative = money flowing out on net) |
Interpretation:
- Rising heat sparkline → sector heating up, RAID/EXTORT becoming risky. Heat decay is slower than heat generation, so de-escalate in time (DONATE, bribe-arrest avoidance).
- Falling wealth sparkline + rising quit rate in churn trend → sector losing wealthy residents AND workers walking off. Classic decline indicator.
- Negative-net wealth-flow over multiple days → recession early-warning signal. Countermeasures: SUBSIDY for sector buildings, keep recruitment pool active.
Sparklines are silent-day-aware — days with no activity are skipped instead of drawn as zero lines, so the trend isn’t distorted by quiet weekends.