promotional bannermobile promotional banner

Loot & Baloot

Loot & Baloot — Play Saudi Baloot (بلوت) inside World of Warcraft. A four-player trick-taking card game over the party addon channel. Host with friends or play solo against bots, with full Hokm / Sun rules, melds, escalations, and SWA claims.

File Details

v3.2.10

  • R
  • May 15, 2026
  • 5.16 MB
  • 0
  • 12.0.5
  • Retail

File Name

WHEREDNGN-v3.2.10.zip

Supported Versions

  • 12.0.5

Loot & Baloot

v3.2.10 (2026-05-15)

Full Changelog Previous Releases

  • docs(CHANGELOG): add v3.2.10 release notes
  • test(BQ): polish play-observer guard fixture/comments
    Comment/fixture-only polish on the v3.2.10 play-observer guard
    (no runtime logic change; harness stays 1320/0):
    1. Net.lua safeOnPlayObserved docblock: "chat + freezelog" was
      inaccurate — log("Error", ...) writes the B.Log ring buffer
      (L.Error("net", ...)), it does not directly print to chat.
      Reworded to "B.Log ring buffer via log("Error", ...) + the
      freezelog".
    2. BQ.1 host fixture: seat 2 (Mants) now holds {"7C"} in
      S.s.hostHands instead of an empty hand, so the play is a
      genuine legal follow-suit. The regression no longer leans on
      illegal-play tolerance — it isolates purely the
      observer-throw half-applied-stall it is meant to guard.
      Verification: full harness 1320/0 (unchanged), H1=11/0,
      H7=9/0, git diff --check clean.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • fix(Net.lua): guard play observer so human plays always advance
    Confirmed root cause of the user-reported recurring ~60s
    multiplayer freeze (Game 9M6KAP, host Mohtaal + Mants + 2 bots):
    The five play sites (_OnPlay, LocalPlay, _HostTurnTimeout AFK,
    MaybeRunBot success, MaybeRunBot recover) all applied the card
    via S.ApplyPlay — card becomes visible on the table, hand count
    drops — and THEN called the raw B.Bot.OnPlayObserved(...) BEFORE
    N.CancelTurnTimer() / N._HostStepPlay(). When the bot-memory
    observer threw, the play was visibly half-applied but the turn
    never advanced and the previously-armed AFK timer stayed live.
    The game "recovered" only when K.TURN_TIMEOUT_SEC (60s,
    Constants.lua:452) fired N._HostTurnTimeout and force-stepped
    the chain — exactly the reported symptom: "host shows 'Mants to
    act', Mants's card is on the table, resumes after ~60s". Not
    normal AFK; not a mere visual-refresh bug.
    Fix: new file-local safeOnPlayObserved(seat, card, leadBefore,
    context) that nil-checks B.Bot.OnPlayObserved, pcall-isolates
    the call, logs the error to chat + freezelog, and never
    rethrows. Bot-memory observation (void inference / firstDiscard
    / Fzloky / AKA dedup / trump-tempo) is a non-authoritative
    side-channel; its failure must never block the authoritative
    pipeline (send / cancel-timer / host-step / bot-dispatch / AFK
    recovery / UI refresh). All five raw call sites now route
    through the helper. Bot.lua observer logic is unchanged
    (investigation did not implicate a separate observer bug; the
    defect was the unguarded call ordering in Net.lua).
    Tests: new BQ section (19 checks) inside the AZ Net harness:
    BQ.1 (4) — host _OnPlay half-applied stall regression.
    Pre-fix BQ.1b FAILS ("turn ... got 2"), BQ.1d
    FAILS (rethrow); post-fix turn==3, no rethrow.
    BQ.2 (3) — non-host LocalPlay send-safety: SendPlay still
    broadcasts MSG_PLAY despite a throwing observer
    (real broadcast spy).
    BQ.3 (9) — source pins: all five sites route through
    safeOnPlayObserved + negative pins that no raw
    B.Bot.OnPlayObserved(seat/localSeat,...) direct
    call remains (sole raw ref is the helper's pcall).
    BQ.4 (3) — helper never rethrows; still calls through on the
    happy path.
    Verified pre-fix: BQ.1b/1d/2a/2c/3*/4* FAIL with Net.lua
    stashed; post-fix 1320/0 (was 1301/0). H1/H7 smokes clean
    (11/0 + 9/0). git diff --check clean.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • docs: clarify v3.2.9 playtest checklist marker refs
  • docs: add v3.2.9 manual multiplayer playtest checklist