Fix convoy coordination, AI combat and spectator recovery

This commit is contained in:
2026-09-27 22:28:07 +02:00
parent 2551d171b3
commit c5629f7f4f
108 changed files with 4337 additions and 282 deletions
+48 -34
View File
@@ -1,40 +1,54 @@
# Revivable players and all-unconscious mission failure
# Player injuries and team failure
Admitted player bodies receive server-owned casualty protection. Ordinary damage
still causes wounds and bleeding. Damage to physical, overall-health and blood
hitzones is limited above their configured destruction threshold; an otherwise
lethal hit knocks the prisoner unconscious. Resilience can still reach zero, and
healing damage is passed through unchanged. Further hits and bleeding cannot
finish the casualty. AI retain their normal damage rules. Protection stays with
the original body across reconnects and does not grant a new life or respawn.
Admitted players keep the same living, treatable body. Otherwise lethal damage
is capped just above hit-zone destruction and causes unconsciousness. Continued
bleeding still drains blood down to the protected minimum; protection never adds
health or blood. AI retain native lethal damage and recovery rules.
The round fails after **30 uninterrupted seconds** with every remaining prisoner
unconscious, no conscious reserved prisoner available to reconnect, and no
ongoing treatment or observed blood/resilience recovery. Waking up, a treatment
in progress, or increasing blood/resilience resets that timer. A passive recovery
effect that is present but makes no progress does not prevent failure. An empty
server does not start this timer. Mission status explains whether recovery is
continuing or the team is in the failure grace period.
Passive blood, wound and resilience recovery use one quarter of their native
rates. Bleeding prevents passive blood and consciousness recovery. Bandaging
stops the bleeding and lets blood improve gradually. With sufficient blood,
resilience recovers slowly and the player can eventually wake without an injector.
This is not an instant or periodic full heal. Saline restores blood through its
finite native infusion; epinephrine improves resilience over 30 seconds without
replacing blood or treating wounds. Medicine is not slowed by the passive-rate
setting. Duplicate epinephrine dosing is refused while its effect is active.
Treatment uses the existing medical system. Bandaging and saline remain relevant;
ACE Medical epinephrine heals resilience and is not blocked by casualty protection.
ACE's own treatment prerequisites still apply (including stopping bleeding and
restoring sufficient health). Installing this mission does not itself install
ACE Medical or add an unlimited epinephrine action.
The round fails with **“Everybody died.”** after 30 uninterrupted seconds when
all remaining prisoners are unconscious, no conscious reserved prisoner can
reconnect to help, and nobody has treatment, observed recovery, or viable native
passive recovery. A bandaged casualty with a blood/resilience regeneration effect
also counts during the engine's initial regeneration delay. Full hit zones,
zero-rate effects, insufficient blood for resilience, and bleeding do not falsely
count as self-recovery. Waking, viable recovery, or treatment resets the timer.
An empty server does not start it. Existing all-dead/missing-body and exhausted
admission handling remains active.
`/esc mission abandon` remains an administrator-only way to end a round explicitly.
The all-dead/missing-body fallback and exhausted-admission handling also remain,
for deleted bodies and administrative/native paths outside ordinary damage.
The `recovery` fixture exercises the real team-failure timer and treatment on an
admitted prisoner. `medical-combat` checks an actual hunter medic's inventory,
bleeding, consumed bandages, slow blood recovery without saline, natural waking,
finite saline/epinephrine and protected fatal blood loss. Fixtures inject initial
injuries and enter at native item-effect completion; they do not certify manual
interactions or remote multiplayer play. ACE medical overrides require separate
compatibility testing. The 25 September lethal-death result is historical and
has been superseded by the restored revivable-player policy.
The isolated `recovery` Workbench fixture exercises damage exceeding full health
on health, blood and head hitzones, continued survival while treatment is flagged
active, restoration by native resilience healing, and the actual all-unconscious
failure timer. This is separate from remote-client/manual treatment acceptance.
## Local validation, 26 September 2026
Validation on 2026-09-23: all repository checks passed after updating the existing
ServerTick test adapters. The isolated `recovery` run at
`/tmp/erri-revivable-native2/logs/logs_2026-09-23_20-02-04` completed 66 assertions
with no script/runtime failures, unchanged source and verified cleanup. Existing
RHS/WCS resource and inherited prefab-keyword errors remain in that engine log.
The recovery effect was a native timed resilience-healing effect; an actual ACE
injector action and remote multiplayer treatment were not exercised by this run.
Repository checks passed. The updated `medical-combat` engine fixture completed
32 assertions, including the actual SF UAZ medic's backpack and six injectors,
native bleeding, bandaging, blood recovery without saline, natural waking after
blood replacement, finite epinephrine, and a living unconscious body after fatal
blood damage. No script compilation or medical assertion failed in the final run.
The strict runner reported a transient process-cleanup classification failure;
a subsequent independent check confirmed the private prefix idle and unchanged
source hashes. Original reports and the unsuccessful diagnostic run are retained
under `.local/analysis/revivable-medical-2026-09-26/`. Loaded external/base assets
still emit their existing warnings; this does not certify remote multiplayer.
The subsequent `recovery` engine run verified natural recovery and active
medical treatment each keeping the full mission alive beyond 30 seconds,
waking the same admitted prisoner, resetting the failure timer, and automatic
team defeat after 30 seconds of unrecoverable unconsciousness. Source remained
unchanged and cleanup was confirmed. The strict asset-error scan still reports
existing inherited resource errors; all recovery assertions passed.