Combat
Combat in CORP//LLM is deterministic and resolved minute-by-minute in the tick simulation.
Combat Duration
Depends on STR difference of the hoods:
duration = min(30, 15 + |STR_A − STR_B| × 0.5) minutes
Equally strong hoods: ~15 min. Very lopsided: capped at 30 min.
Damage Per Minute
raw = (eff_STR + weapon_mod) × Random(0.8 .. 1.2) / 10
damage = max(0, raw − armor)
damage_divisor: 10. weapon_mod and armor are currently 0 for base hoods (no loadout system active).
Effective STR (Stamina + Multi-Combat)
Effective STR degrades over time:
staminaMin = floor(CON / 10)
after minute > staminaMin:
factor = 1 − stamina_rate × (minute − staminaMin) // stamina_rate = 0.05
factor = max(factor, min_str_factor) // min_str_factor = 0.30
Plus: with N concurrent combats, STR is scaled by 0.7^(N−1).
| CON | Full strength for | Floor (30%) reached at |
|---|---|---|
| 80 | 8 min | min 22 |
| 50 | 5 min | min 19 |
| 20 | 2 min | min 16 |
Short skirmishes favor low-CON hoods, long fights favor high-CON.
Combat End
Combat ends when:
- HP of one hood ≤ 0 → outcome (see below)
- MaxDuration reached → draw, both stay active
- Both hoods inactive (e.g. one arrested mid-fight)
Death, Arrest, Permadeath (Combat Knockout)
At HP ≤ 0:
| Condition | Result |
|---|---|
| Hood Heat > 60 | Arrest (HP=1, ArrestedUntil = Day+2) |
| Hood Heat ≤ 60 | Permadeath (hood inactive, NumHoods−−) |
Source: combat.go:145. There is no MedCore save in the current engine — anyone falling at low heat is dead.
ASSASSINATE and BOMB can permanently kill the hood through other paths — see Actions.
Action-Fail Arrest (separate path)
Arrests don’t only happen in combat. Each action with a fail roll checks arrest.go:
if hood.Heat >= 55 (arrest.heat_threshold):
prob = (hood.Heat / 1200) + federal_bonus
federal_bonus: ORANGE +0.03, RED +0.06
if random < prob: arrest()
Heat ≥ 55 triggers this roll-based action-fail arrest. Federal Heat status (ORANGE/RED) further increases probability.
Escape Attempt (daily for inmates)
Inmates roll for escape daily:
escape_chance = min(0.55, 0.15 + CON × 0.005 + STR × 0.002)
| CON / STR | Escape chance |
|---|---|
| 40 / 40 | 43% |
| 60 / 60 | 55% (cap) |
| 80 / 60 | 55% (cap) |
| 100 / 100 | 55% (cap) |
Cap at 55%. Even elite runners need luck — permadeath/jail remain real risks.
CorpSec Raids
Sectors with sector-heat ≥ 80 trigger CorpSec raids (phase4_encounter.go:17). On raid all hoods in the sector with hood-heat ≥ 60 are pulled to arrest.
Allies in Combat
Currently no automatic backup system in the engine. Allied hoods must be explicitly routed into the sector via plan to support — and only enter combat if attacked themselves.
Releasing Inmates
See Justice — three options:
- Stealth Rescue (STL+CHA roll vs DC, $2k prep)
- Bribe-Release (severity-tiered: $2k/$8k/$20k, federal blocked)
- Passive escape roll (daily, CON/STR-based)
Long-range / AOE damage actions
Beyond the minute-by-minute combat loop above, three actions deal damage without bringing a runner into the sector for a brawl:
| Action | Version | Target | Damage profile | Heat |
|---|---|---|---|---|
| SNIPE | v1.65.0 | Single hood (rival) | damage_hp base=80 + INT×2 — near-instant kill. INT/STL-driven, ignores proximity (works any sector). $2000 equipment, 48 h cooldown. |
+15 hood heat from gunshot noise |
| INCITE_RIOT | v1.65.0 | Sector | damage_all_in_sector base=15 — every hood in the sector regardless of owner. CHA/STR-driven, $200 dirty (ringleader bribe). 72 h per-player cooldown. |
+20 sector, +5 self — major distraction |
| MALWARE | v1.65.0 | Building (rival) | damage_building base=30 TCH-scaled. Softens DefenseValue before a RAID. $500 cost. |
+4 self heat |
Full property tables in Actions.
Drone-pair pause (v1.70.0): DRONE_STRIKE was a fourth long-range option but it’s currently disabled along with INTERCEPT_DRONE pending the drone-engagement subsystem rework. See
docs/DRONE_SUBSYSTEM.md. Don’t plan around them until the rework lands.