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:


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:


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.