Gaze, teleport, rush, cleanup
Scare apparition internals
A per-viewer apparition created from Zeus. Each selected player gets a local billboard, eye lights, audio and stress effects; the server keeps the controller and viewer binding.
1. Binding
FFSC_zeusRequest validates the curator, creates a controller logic and stores viewer entries containing
UID, connection and a reconnect flag. Clients check both before creating an apparition and on every frame it exists, so
a selected UID keeps working across respawn and reconnect while an unselected player never sees anything.
2. Local frame loop
FFSC_tick is one local frame handler for all apparitions:
- Position the billboard from the anchor plus camera-relative offset and scale.
- Run gaze and occlusion tests at 10 Hz; billboard placement still runs every frame.
- Raise overlay1 while watched, drain it while ignored.
- Arm teleports only when idle and after the relocation cooldown.
- Run the warning/rush timing and the flashlight interference.
3. Timing
| Phase | Default |
|---|---|
| Placement hold after appearing | 20 s (clamped to at least 20) |
| Gaze cone to arm a teleport | 12° held 0.35 s |
| Look-away release | 0.4 s beyond a wider angle |
| Chase warning / movement | 1 s / 1 s, synced to the audio |
| Overlay rise / fall / hold | 25 s / 15 s / 30 s |
| Jumpscare fade / hidden cooldown | 8 s / 20 s |
| Stamina hold / recovery | 10 s / 20 s |
The rush does not move or injure the player. At impact stamina is capped to zero for the hold period and then released gradually; with ACE Advanced Fatigue the same cap applies to the anaerobic reserve, and overlapping scares use the lowest cap.
4. Audio
Four local positional sounds (cue, rumble, chase, jumpscare) use mono copies from
media/sounds/scare3d/. Each apparition has one audio voice, so a new event replaces the previous sound and
repeated teleports cannot stack rumble tracks.
5. Cleanup
Deleting the controller stops visuals, sound, flashes and stress on the next client frame. Death, soul phase, Zeus camera, mission cutscenes and map opening pause or clear local effects; the module stays authoritative, so nothing is permanently lost.
Related functions
FFSC_fnc_tick— Single local frame handler for every apparition: billboard placement, gaze tests at 10 Hz,FFSC_fnc_zeusRequest— Validates a curator request, creates the retained controller logic, resolves viewers and pFFSC_fnc_canView— Gaze and visibility test: inside the configured cone, on screen, and with an unobstructedFFSC_fnc_teleport— Chooses a random dry, out-of-view position outside the rush zone with overhead clearance,FFSC_fnc_clear— Removes local apparition visuals, lights, audio and stress contribution, and restores theFFSC_fnc_audio— Plays one of the four local apparition sounds positionally and replaces the previous voice