Feature 02 / FF Horror
Death is ajourney
A respawn template that replaces the engine flow: a corpse camera, a wake bar that needs help, an orb that has to find a body, and an arrival that is validated before anyone stands up.
- 01Snapshot
Body, class, loadout, facewear, death and spawn positions.
- 02Corpse camera
A 3 m orbit that keeps tracking a body even if Zeus drags it.
- 03Wake bar
Hold the wake key. Progress caps at 30% until a shield is used.
- 04Rise
An orb lifts 1.2 m over three seconds and takes control.
- 05Seek
Free camera plus candidate lines. Move, then arrive.
- 06Arrival
Find an empty, dry, walkable position and release the hold.
Illustrative sequence. Every stage runs locally on the dead player's machine.
The sequence
Nobody stands up by accident.
FF_Horror_Soul is a respawn template, not a function you call. The engine runs the hooks;
the template holds the respawn until the orb reaches a destination and the position passes validation.
Snapshot
Body, class, UID, loadout, facewear, death position, spawn position, phase, readiness and any early replacement unit. CBRN visuals are suspended so the corpse camera is clean.
Wake
Hold the wake key (Space by default). Progress caps at 30% until a shield is applied. Unshielded progress decays faster as it climbs.
Seek
EG Spectator starts and the orb follows the free camera. Candidates come from the mission callback or nearby objects and terrain objects, so map props without a simulation entity still work.
Arrival
The orb travels for two seconds. The destination is cached locally, so deleting the prop mid-cutscene cannot move the respawn.
Resolution
findEmptyPosition rejects water and slopes below 0.5 normal Z, with
a wider fallback near the death position.
Release
The engine respawn is released with setPlayerRespawnTime 0, or an early
unit is applied directly.
Co-op
The shield is a social object.
One ACE interaction
Using a soul shield sends a request to the server. The server validates actor, distance and target, then consumes
FF_Horror_SoulShield from the corpse first and the helper second.
No double spend
The corpse keeps a receipt, so a retried request cannot consume a second capsule. The result is broadcast, so both players see the same outcome.
Empty casing
The inventory that supplied the shield receives FF_Horror_SoulShield_Empty. The economy is visible
in the inventory, not hidden in a variable.
Wake cap
Without a shield the bar stops at 30%. A solo player can still recover, but it is slow and loud pressure to find a partner.
Failure handling
Broken scenes release, not trap.
| Situation | Behaviour |
|---|---|
| Mission respawn template disabled | Immediately releases the respawn |
| Corpse deleted mid-sequence | Deleted handler recovers at the saved death position |
| Engine spawns the unit early | Unit is hidden and applied when the sequence finishes |
| No valid destination | Death position fallback, then engine placement |
| Stuck callback or cutscene | Zeus emergency recovery clears UI, camera handlers and the hold |
| Another death during the sequence | New state replaces the old sequence |
Zeus Soul tools can force, recover or inspect a sequence without touching the mission scripts.
Tune it
Keep the template. Change the rules.
FF_horror_config = createHashMapFromArray [
["searchRadius", 700],
["arrivalDistance", 4],
["findDestinations", { params ["_unit", "_pos"]; /* array of candidates */ }],
["resolveSpawn", { params ["_unit", "_pos"]; _pos }],
["onDestination", { params ["_unit", "_dest"]; }],
["onRespawn", { params ["_new", "_old"]; }]
];
The mission can replace the geometry rules entirely and still keep the camera, wake bar, shield economy, Zeus recovery and cleanup.
Feature 02 / 08 Every system deep dive