Skip to content

Queue timer freezes permanently if a singleplayer run starts while queued #4

Description

@ChronoFinale

Status: root cause confirmed
Affects: matchmaking queue status display (reported against MultiplayerPvP Closed Beta v3)

Symptom

Tester report: "playing any singleplayer game while in queue breaks the queue timer." The "Queueing m:ss" status freezes at the moment a singleplayer run starts and never updates or clears again — even after returning to the menu — while the queue stays active server-side.

Root cause

api/matchmaking/queue_timer.lua drives its tick as a self-re-arming G.E_MANAGER Event (0.25s delay) that reschedules itself only from inside a tick, and the Event is not flagged no_delete. Balatro's run start (Game:start_run / G:delete_run) calls G.E_MANAGER:clear_queue(), which deletes the pending tick — killing the chain permanently. The elapsed value itself is wall-clock (love.timer.getTime()), so nothing resets; ticks just stop firing. stop() (queue_timer.lua:73-81) is only ever called from inside a tick, so the frozen status text can never clear either.

api/countdown.lua uses the identical recurring-event pattern safely because a countdown never crosses a run-start boundary.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions