Quick answer: GameMaker sequence event triggers firing twice after pause-resume? Sequence engine re-fires events at the resume position - track which events have fired per sequence.

Cutscene plays SFX at 2s. Pause at 3s; resume; SFX plays again.

Track fired events

var fired = ds_map_create();
if (!ds_map_exists(fired, key)) {
  play_sound(...);
  ds_map_add(fired, key, true);
}

Idempotent event handling. Resume re-fires; handler skips the second.

Or use start-of-sequence reset

Clear the fired map on sequence start. Each play is fresh; resume doesn't reset.

Use TimeSources instead

For deterministic event timing, TimeSources have clean pause semantics. Sequences are a different use case.

“Sequence events are time-based, not state-based. Resume hits the same time, fires the same event.”

If you ship cutscenes with audio cues, the dedup pattern is essential. Document; reuse across every cutscene.

Related reading