- summary: Long-running stagings of the current map: which sequences are running and since when, so the client can join them at the right point.
- area: Game.Roleplay
Long-running stagings of the current map: which sequences are running and since when, so the client can join them at the right point.
Kind event · Area Game.Roleplay
Lists the map stagings that are ALREADY RUNNING and since when. A staging is a scripted sequence of map effects
(see StagingEvent): objects moving, materials and particles animating, sounds and music changing. A
persistent one keeps running over time, so a player who arrives late must join it where it is, not restart it.
WHY IT EXISTS
StagingEvent starts ONE sequence now, at a percentage of its length. This event instead gives a start
DATE: every client computes how long the stagings have been running and plays them from that point, so all
players on the map see the same moment.
WHAT TO DO WHEN YOU RECEIVE IT
1. Parse PersistentStagingEvent.start_date as a date-time in UTC (the client parses it with .NET's DateTime parser, assuming
universal time) and correct it with your server-clock offset.
2. elapsed = now - start_date, never below 0.
3. For EACH id of PersistentStagingEvent.sequence_ids: play that sequence of the CURRENT map starting elapsed into it, at
PersistentStagingEvent.intensity_multiplier percent strength (100 = as authored). An id the map does not have is ignored.
4. If the map is not rendered yet, keep the values and play the sequences once it is.
5. SEND NOTHING BACK. A bot that does not render the map can ignore this event.
The record's bool and its second int32 are never read by the client: ignore them.
WHAT THE OFFICIAL CLIENT DOES. Its map staging service converts the date through its time service, computes the elapsed time and, for each sequence id, calls StagingManager.PlaySequenceFromStartTime(sequenceId, startTime, intensityMultiplier); the manager builds a sequencer at intensityMultiplier / 100 and starts the sequence at that time (queued until the map is rendered).
When you may send it
- Requires
context_readyinferred - Raised by: a player arrives on a map where scripted stagings are already running, or such a staging starts inferred
Related messages
- Unsolicited - nothing you send causes this inferred — the server tells the client which map stagings are running; nothing requests it
- Nothing answers it - send it and move on inferred — the client only plays the sequences; its handler sends nothing
Fields
| # | Field | Type | Meaning | You set it |
|---|---|---|---|---|
| 2 | intensity_multiplier | int32 | How strongly to play the sequences, as a percentage (100 = as authored). (percent) The sequencer scales its effects by intensity_multiplier / 100. | never |
| 3 | start_date | string | When the stagings started. (date-time text, read as UTC) The client parses it with .NET's DateTime parser and corrects it with its server-clock offset. | never |
| 4 | sequence_ids | repeated int32 | The running staging sequences of the current map. (map staging sequence ids) Each is played from the elapsed time since start_date. | never |