FF SUITEArma 3 addons

Fronts, barriers, recovery, cues, wavefronts

Pulse sequences and recovery internals

A server-owned pulse that reaches players on a shared clock, followed by an opt-in blackout and recovery sequence. The front, the barrier, the local recovery profile and the visual wavefront are separate layers so a mission can use only the part it needs.

FF_Cinematic 8 related functions

1. The layers

LayerEntry pointsRuns on
Authoritative frontpulseFrontStart / pulseFrontStopServer
Shared blackout barrierpulseBarrierStart / pulseBarrierCancel / pulseBarrierContact / pulseBarrierExcludeServer
Combined sequencepulseSequenceStart / pulseSequenceStopServer
Local recoverypulseRecoveryStart / pulseRecoveryRelease / pulseRecoveryStopParticipant client
Remote invitationpulseRecoveryBeginRemote / pulseRecoveryCancelRemote / pulseBarrierReportServer ⇄ participant
Riser cue and wavefrontpulseCueLocalStart / pulseCueTick / wavefrontStartLocal client
Shared loop audioloopAudioStart / loopAudioFade / loopAudioStopLocal client

2. Authoritative front

[id, originASL, start, radius, speed, players, onContact, onExit, onEnd, cue] call FF_cinematic_fnc_pulseFrontStart tracks a finite linear wave against an explicit player roster. The travel time is radius / speed and is limited to 600 seconds; the start cannot be more than 600 seconds in the future. Up to 16 fronts may exist, each with at most 128 participants.

The server evaluates one contact or exclusion per participant per tick. A participant who dies, disconnects, changes owner or moves outside the radius is reported through onExit. The front can carry an optional cue hash map with sound, cueSeconds and timeout; the cue schedules the local riser and contact still follows the shared clock.

3. Shared blackout barrier

A barrier keeps a group of players blacked out until every current participant reports black or the deadline expires. The options and their bounds are:

KeyDefaultBoundsMeaning
automatictrueboolInvite every participant immediately instead of waiting for front contact.
blackTimeout551–600 sHow long a participant may take to report the blackout.
recoveryTimeout18010–900 sHow long the recovery window stays open.
releaseDelay10–30 sShared delay before recovery is released.
onBlack{}code[id, players] when the barrier moves to recovery.
onEnd{}code[id, completed, aborted] when the barrier ends.

A player may belong to only one barrier at a time. pulseBarrierExclude removes a waiting participant and cancels their pending recovery; pulseBarrierCancel ends the barrier and every matching participant sequence. The server also reclaims a staged body when its owner changes machine.

4. Combined sequence

[id, originASL, start, radius, speed, players, options] call FF_cinematic_fnc_pulseSequenceStart starts a front and a barrier with the same ID. Up to eight sequences may run. Options are:

  • onContact [id, unit], onExit [id, unit], onBlack [id, units] and onEnd [id, frontCompleted, completed, aborted].
  • cue — the front cue hash map described above.
  • visual (default false), color (RGBA, default red), dust and visualExtra (0–120 s). Visual data is published separately and carries no gameplay authority.

A sequence ends only after both halves have finished, so onEnd sees the front result and the barrier outcome together. pulseSequenceStop cancels both halves. pulseSequencePublishVisuals and pulseSequenceVisualTick keep presentation in sync, including after a JIP.

5. Local recovery profile

[id, originASL, options] call FF_cinematic_fnc_pulseRecoveryStart starts the local blackout on a living, local player who is not incapacitated and has no other recovery active. The profile captures damage permission, sound volume and PASS suspension, disables user input and damage, moves the player out of a vehicle, applies a directional force and camera shake, and starts a 0.05 s worker.

KeyDefaultBounds
blackDelay0.20–10 s
wakeDelay180–120 s
reveal100–60 s
timeout2405–900 s
soundLevel0.10–1
soundHold / soundFade0 / 00–600 s
onPhase{}[id, unit, phase]: impact, recovery or wake.
onStop{}[id, unit, completed]

pulseRecoveryRelease releases the blackout at a shared server time; pulseRecoveryStop tears down everything the profile owns. pulseRecoveryReclaimLocal, pulseRecoveryReclaimDispatch and pulseRecoveryLocality restore a staged body after an ownership change, guarded by the same ID and generation.

6. Riser cue and visual front

The optional cue starts only when the server authorizes a local listener. pulseCueLocalStart receives the front parameters and pulseCueTick starts the riser when the player faces the approaching front and reports the commitment and playback contact. A server-confirmed contact is marked through pulseCueLocalContact; pulseCueStopLocal stops only the matching riser.

wavefrontStart renders one finite expanding sphere per client. It takes an origin, start time, radius, speed, RGBA colour, contact callback, dust flag, optional front override callback and extra lifetime. The per-frame projection about the camera preserves apparent size at long range. The wave is visual only: contacts and consequences stay on the server.

7. Loop audio

loopAudioStart(id, start, tracks, fadeIn, owner) starts phase-preserving local UI loops. Each track is [path, delay, cycle, volume]. loopAudioFade schedules a phase-preserving fade-out and loopAudioStop releases only the handles owned by that loop set. Re-seeking happens only for gain changes and loop boundaries, so a shared timeline stays aligned without restarting the sound every frame.

8. Horror profile

[consequences, beacon] call FF_horror_fnc_pulseRecoveryOptions returns a Cinematic recovery hash map with a themed aftermath. On impact it holds the music channel and applies red grading; during recovery it can drain the active filter and apply bounded ACE injuries; on wake it can request a timed PASS alarm. pulseAftermath applies or clears the grading, and pulseProfileClear releases owned audio, grading, the music hold and delayed callbacks.

Code-level guarantees: option bounds, callback ordering and the shared timeline maths. Local input, camera, audio and multiplayer behaviour remain manual checks.

Visual reference: flying sphere field capture.

Related functions

↑ Back to top