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.8

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

File Name

WHEREDNGN-v3.2.8.zip

Supported Versions

  • 12.0.5

Loot & Baloot

v3.2.8 (2026-05-14)

Full Changelog Previous Releases

  • docs(CHANGELOG): add v3.2.8 release notes
    v3.2.8 entry covers:
    • Host-only visual turn stall fix in 4-human games: when the
      player before the host played, the host UI could keep the
      turn glow on that previous seat. Root cause: host's
      authoritative N._HostStepPlay <4 plays branch advanced
      state via S.ApplyTurn + broadcast MSG_TURN to other clients
      but never called B.UI.Refresh() on the host's local UI.
      Fix: add a single defensive UI refresh call after the
      authoritative mid-trick turn advance, mirroring the
      existing pattern in the 4-play resolution branch.
    • Bundled internal cleanup: stale comment line refs
      (Bot.lua:4842+/4886+/2322+/~2474) replaced with named
      subsystem anchors in Bot.lua and Bot/PlayPrimitives.lua.
      Comment-only change, no behavior/test changes.
    • No protocol, saved-variable, scoring, .toc, .pkgmeta,
      .github, or packaging changes.
      Verification: harness 1298/0 (+1 BO.1 source-pin from v3.2.7
      baseline of 1297/0), H1=11/0, H7=9/0. Pre-fix BO.1 FAILS at
      1297/1 (wire-proves the Net.lua change is the cause).
      Committed locally only — no push, no tag, no release until
      Codex reviews.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • cleanup(Bot.lua): replace stale extraction line refs with named anchors
    Four runtime comment sites referenced absolute Bot.lua line
    numbers that became stale during the v3.2.0 cleanup batches
    (especially Batch 5C which extracted helpers to
    Bot/PlayPrimitives.lua, shrinking Bot.lua from ~8,428 to ~6,200
    lines and shifting line numbers by ~1,150). The v3.2.0 audit
    at .swarm_findings/v3_2_0_botlua_comment_audit.md §1.5 flagged
    these as the highest-value lowest-risk cleanup target, then
    sat untouched for ~8 tag cycles.
    Fixed sites (all comment-only, no behavior change):
    • Bot.lua:417 Bot.lua:~2474 in baitedSuit reader
      the baitedSuit reader in pickLead's fzlokyAvoidSuit consumer
    • Bot.lua:819 bottom-up "want" sender (Bot.lua:4842+)
      bottom-up "want" sender (Tahreeb "want" arm in pickFollow, Sun-only)
    • Bot.lua:823 T-4 dump-larger sender (Bot.lua:4886+)
      T-4 dump-larger sender (Tahreeb T-4 arm in pickFollow)
    • Bot.lua:3674 Receiver decoder at Bot.lua:2322+ (tahreebClassify)
      Receiver decoder (tahreebClassify in Bot/PlayPrimitives.lua) — the function was
      extracted to PlayPrimitives in Batch 5C and
      no longer lives in Bot.lua at all.
    • Bot/PlayPrimitives.lua:291-294 (mirrors Bot.lua:819/823 fix)
      Design rationale: named subsystem anchors over numeric line
      refs prevent re-staleness from future extractions/shifts. Cross-
      file refs are now explicit so a reader can grep for the function
      and land in the right file immediately.
      Verified zero test source-pins on any of the stale substrings
      (grep "4842|4886|2322|2474" tests/ → no matches). No behavior
      change. No CHANGELOG entry (per the design recommendation:
      land untagged unless bundled later with a real runtime release).
      Harness: 1298 / 0 (unchanged from baseline). H1/H7 smokes
      clean (11/0 + 9/0). Diff: +25 / -19 across two files (slight
      wording rebalancing across line wrapping).
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • fix(Net.lua): host-turn visual refresh after authoritative turn advance
    User-reported bug: in a 4-human game, when the seat immediately
    before the host plays a card and the next turn should be the
    host's, the host's local seat-glow remained stuck on the prior
    player. Other clients showed the correct turn advance.
    Root cause: N._HostStepPlay's <4 plays branch at Net.lua:
    2691-2698 advanced state via S.ApplyTurn and broadcast MSG_TURN
    via N.SendTurn, then called N.MaybeRunBot and returned without
    ever invoking B.UI.Refresh() on the host's local UI. Non-host
    clients redrew on the MSG_TURN wire callback, but the host's
    authoritative loop skipped the redraw step. The 4-play
    resolution branch at Net.lua:2720 already had the symmetric
    B.UI.Refresh() call after _HostStepAfterTrick(); this mid-trick
    <4 plays branch was missing it.
    Fix: add a single defensive if B.UI and B.UI.Refresh then B.UI.Refresh() end call after N.MaybeRunBot() in the <4 plays
    branch. The defensive nil-check mirrors the existing pattern at
    Net.lua:2720 so test stubs without B.UI continue to work
    unchanged.
    Scope check: turn logic (S.ApplyTurn / N.SendTurn / MaybeRunBot)
    is untouched; networking is untouched (MSG_TURN broadcast
    unchanged); timers (the 2.2s C_Timer for trick resolution) are
    untouched; scoring is untouched; bot decisions are untouched.
    The only change is a single redraw trigger on the host loop.
    Tests: BO.1 in tests/test_state_bot.lua source-pins the v3.2.8
    marker comment in Net.lua. Pre-fix harness is 1297/1 (BO.1
    FAILS); post-fix is 1298/0. No behavioural test added because
    the harness doesn't currently provide a B.UI mock; the
    defensive nil-check guard means the new line is a no-op in the
    test harness, so source-pin is the simplest regression guard.
    H1/H7 smokes clean (11/0 + 9/0).
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • docs: commit v3.2.0 Bot.lua comment-audit design doc
    This is a v3.2.0-era audit / inventory pass on Bot.lua's inline
    comments (651 lines, written 2026-05-12 when main was at
    674de22 and v3.1.14 was the latest tag). It has been preserved
    untracked across several v3.2.x releases via an inherited
    "leave alone" rule; the rule has no documented rationale and the
    doc itself matches the shape of the other committed v3.2.x design
    docs.
    Snapshot caveats:
    • Stats in §0 are v3.2.0-era and are not refreshed here.
    • §2 source-pin table is a historical snapshot; newer BH-BN pins
      have since increased the live count.
    • §3 line numbers may have shifted after later v3.2.x changes.
      Still useful:
    • Appendix A contains a reusable reproducer script for future
      comment-audit passes.
    • The stale extraction-breadcrumb finding remains a valid future
      cleanup candidate.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com