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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions