promotional bannermobile promotional banner

FixedBets

Guild bets: stake gold into the guild bank, and winners split the pool in proportion to their stakes.
Back to Files

v1.5.0

File nameFixedBets-v1.5.0.zip
Uploader
GrollamiGrollami
Uploaded
Sep 30, 2026
Downloads
14
Size
837.8 KB
Flavors
Classic TBCForever
File ID
9016675
Type
R
Release
Supported game versions
  • 2.5.6
  • 1.60.1

What's new

Changelog

All notable changes to this project are documented in this file. The format is based on Keep a Changelog.

1.5.0 (2026-09-30)

Added

  • The Guild Master picks which guild ranks can create bets. Settings has a rank table for the Guild Master with a Treasurer and a New bets column, and one Save for both. By default every rank can create bets, as before; the Guild Master can always create them. Ticking every rank again lets every rank create bets, including ranks the guild adds later.
  • A player whose rank cannot create bets does not see New bet: not in the header (Sync moves to its place), not in the welcome panel of an empty guild, and the empty Open list does not mention it. Creating a bet is refused with "your guild rank cannot create bets" if the ranks change while the New bet view is open. While your own rank is not known yet (right after login), you count as the guild's lowest rank for this.
  • The log window lists changes of the bet creator ranks (<GM> set the bet creator ranks: Officer, Raider., <GM> let every rank create bets.).

Changed

  • A bet whose author's rank could not create bets when it was created is hidden on every client with this version and not announced in chat, whichever order its events and the Guild Master's change arrive in. A later change of the ranks does not hide or show a bet created before it. Such a bet stays in the saved data and in sync; the log window's technical entries say it was hidden.

Known limitations

  • Versions before this one ignore the creator ranks: their players still see New bet and their bets are hidden only from players who updated, while players on the old version still see and can stake on them. Update the whole guild before you restrict who can create bets.
  • A client on an older version stores the Guild Master's settings without the creator ranks. A member who updates later and gets the settings from such a client sees every rank allowed until the Guild Master saves the ranks again.

1.4.1 (2026-09-28)

Fixed

  • On WoW Forever, New bet failed with "missing r" and nothing synced: the addon did not find your own character in the guild roster, so it had no guild rank to sign bets and stakes with. It now reads your name with its surname the way the client gives it, and finds your roster entry by the character's unique ID when the two spellings still differ. The log window notes such a difference.
  • Without a known guild rank (for a moment right after login, for example) New bet and the other actions say so instead of "missing r", and the guild bank panel refuses a stake before any gold moves.

1.4.0 (2026-09-28)

Added

  • World of Warcraft: Forever support. One package loads on both TBC Anniversary (interface 20506) and WoW Forever (interface 16001), and CurseForge lists it for both.

Fixed

  • The trade payout panel and the paid-by-trade detection now know the trade partner on WoW Forever, where a character's name comes with a surname (Name Surname).
  • The trade payout panel now finds the dues of a trade partner from a connected realm. It looked them up without the partner's realm and stayed hidden.

1.3.0 (2026-09-28)

Changed

  • A refreshed look shared with FixedRaid: a taller title bar with the logo and a message in the middle (instead of chat lines and red text over the buttons), tabs in the Barlow Semi Condensed font with counters (bets waiting for your result, unpaid dues for payers), capitals section labels, new interface icons, switches and tinted status badges. Sync is an icon button and New bet has a plus.
  • The Open list groups bets under OPEN and CLOSED, and every card shows the pool, the number of stakes and when the bet closes (in amber within a day) or what a closed bet waits for. A small mark shows the bets you have a stake in. The Finished list shows how many dues are unpaid.
  • The bet detail has a larger title, one line with the admin, closing time and stake limits, three counters (pool, stakes, your stake) and a card per option with its share bar and stakes in two columns. A finished bet shows the winner (or the cancellation) as a banner, then the dues and the rejected stakes.
  • The bet admin and the Guild Master pick the winner by clicking an option card instead of choosing it from a dropdown; Close betting, Cancel bet and Set result sit in a bar under the cards.
  • Payouts is a table with columns, a filter (All, Unpaid, Paid) and a summary of what is still to pay. Mark paid is a button instead of a checkbox, and its message offers Undo.
  • New bet is laid out in sections with a character counter for the title, numbered options and a short "How it works" card.
  • Settings is split in two: your own switches and the log on the left, and for the Guild Master only the treasurer ranks and Purge data on the right.
  • Confirmations and the result window have no title bar any more: the question or your result is the heading, and the confirm button names the action (Cancel bet and Purge data in red).
  • The guild bank panel shows the stake limits and the option's multiplier next to the bet and option, the win estimate in a highlighted box, and the payouts as three amounts with the amount on Withdraw. The mail and trade payout panels show the dues as cards.
  • An empty guild shows a short guide with New bet, and outside a guild the window says to join one.
  • The bet detail lists each player once per option, with their stakes on it added up (and ×2, ×3 when there are several) and PENDING until all of them are confirmed.

Fixed

  • A bet's maximum stake now caps a player's total on the bet, not each stake on its own: two stakes could go over it together. The guild bank panel refuses a stake that would take your total over the maximum before any gold moves and says how much more you can add; a stake that goes over it anyway is rejected for good (above maximum), like a stake over the maximum before. The minimum still applies to each stake.

1.2.5 (2026-09-25)

Changed

  • The minimap button is now just the icon, without the default gold ring and dark backdrop.

1.2.4 (2026-09-24)

Changed

  • Every window's body is now slightly see-through (90% opaque) and its outline uses the accent colour instead of the usual muted one.
  • The selected tab's underline now glides to the tab you click instead of just jumping there.
  • New bet now opens in the main window itself, in place of whichever tab was showing, instead of a second floating window. A Cancel button next to Create leaves it without creating anything and returns to that tab. The tab bar and header buttons hide while it is open, and the form moves up into their place, under a "New bet" heading of its own.
  • Tab and Shift+Tab move between a form's fields in order (New bet: title, options, closing time, stake limits) instead of doing nothing.
  • Escape closes whichever FixedBets window is open, the same as any other panel.
  • The treasurer rank checkboxes in Settings, which only the Guild Master can change, are shown to the Guild Master only instead of being visible to everyone but greyed out.

1.2.3 (2026-09-24)

Added

  • A Purge data button in Settings, for the Guild Master only, to clear out test data: every bet older than the moment it is pressed is hidden from then on, on every member's client as they sync, and is no longer sent to anyone. Nothing is actually deleted, and this cannot be undone from the UI, so a confirmation warns it is meant for test data, not real bets with unpaid dues.

Fixed

  • The log window's text can no longer be typed into. It stays selectable for copying (Ctrl+C), but any keystroke or paste is reverted instead of changing the log.
  • The guild bank panel's bet dropdown no longer keeps showing a bet you picked after it stops being OPEN (closed, resolved, cancelled): the pick is cleared instead.
  • The closing time date box (dd.mm.yyyy) is wide enough that a full date no longer scrolls its first digits out of view.

1.2.2 (2026-09-23)

Fixed

  • A bet title cut short with "..." in the bet list or the detail pane now shows its full text in a tooltip on hover.
  • The Close betting button no longer shows once a bet is already CLOSED, where it had nothing left to do.

1.2.1 (2026-09-22)

Added

  • The mail payout panel's Fill button turns into a "Sent?" checkbox once pressed. Checking it marks that due as paid by hand, for when the automatic detection of a sent mail somehow misses it.

Fixed

  • Recipient, amount and bet title now each get their own line in the mail payout panel: a long guild-realm name used to cut the amount off.

1.2.0 (2026-09-22)

Added

  • FixedBets now notices when you join, switch, or leave a guild, live and even when the change happened while FixedBets was not running on that character, and prints one chat line about it. Switching guilds does not touch the previous guild's bets; they are simply not shown until you are back in that guild.
  • A guild's saved data is dropped automatically once your account has not seen that guild in over 180 days, so the saved file does not keep growing across every guild a character ever passed through.
  • The guild bank panel shows what a stake would pay if its option wins, updated as you type, pick an option, or as other players' stakes change the odds.
  • A new bet from anyone else prints a chat line naming its title, so you notice it without having the window open. Not shown for a bet you created yourself, and can be turned off in Settings.

Security

  • Addon messages from anyone who is not on your guild roster are ignored, for every message type. Live events, hellos and relays are only accepted from the guild channel, and answers to a hello only as whispers.
  • Size and rate limits: a message is refused when its text is too long, it expands to more than 256 KiB (a decompression bomb can no longer freeze the game), or it carries too many events or bet ids. Each member also has a per-second allowance (5 messages a second, enough for a whole ledger of small bets at chat throttling speed), and long answers are split into several messages so that a full sync still fits.
  • One message may carry at most 2000 snapshot entries (the entries of the stakes in a result or cancel) in all, and every 50 of them cost one event of the sender's allowance. Before, one snapshot shared by many events made a 6 KB message use megabytes of memory.
  • Your client answers the hello of a given member at most once a minute, and the ids of a "bet removed" or "bet wanted" message are counted, limited to 200 per message and looked at once each, so a small forged message can no longer make every client serialize its whole ledger or work out the same bet hundreds of times.
  • Every event is rebuilt from its known fields, with types and lengths checked, before it is stored or passed on, and names and ids may not contain control characters or the | that starts a colour or texture code. The saved data gets the same check when you log in; events that fail are set aside in a quarantine list instead of breaking the window, a saved field of the wrong type is reset, and one damaged bet no longer raises an error on every refresh.
  • Limits on stored data, built so that one member cannot use them to lock the others out: each kind of event has its own share of a bet (900 stakes, 900 confirmations, 3 results, 3 cancellations, 3 closings, 200 payments, 200 payment undos), one author may hold 300 events of a bet, and 2000 events per bet stay as the last resort, so junk stakes can never keep the admin from ending or paying a bet. A ledger holds at most 450 bets, and a hello always lists at most the newest 500, so a flood of finished bets cannot make every hello invalid. An author may have 20 open bets, or 100 when the events come live from that author (they cannot be forged). Up to 100 bets that never received their start event are kept for 7 days and can still get their start event later. The 200 latest changes of the treasurer ranks are kept.
  • A "bet removed" notice from another player now removes only a settled bet older than 30 days, so a forged notice can no longer erase a bet that still has unpaid dues. A bet that can never settle here, because its result is over 60 days old and names stakes this client never received, is removed by the regular clean-up.
  • Sync protocol version 2. Versions before 1.2.0 cannot sync with 1.2.0 in either direction (they tell their players that a newer version is needed), so the whole guild has to update.
  • The hidden /fbets spike diagnostics command and its saved report were removed.
  • The message about a newer version is shown only after two different members have sent a newer protocol version, so one modified addon cannot show it to everyone.
  • The bundled LibDeflate has a new method, DecompressDeflateLimited, that stops at an output size limit; DecompressDeflate is unchanged, so other addons that share the library keep working. FixedBets checks the library again whenever that function is replaced by another addon and turns sync off if the limit is not enforced. The patch is documented in docs/local-library-patches.md.
  • Saved data is upgraded to schema 2 automatically the first time 1.2.0 runs.

Fixed

  • Payments stay valid when the Guild Master changes the treasurer ranks afterwards. Before, the dues of earlier payments looked unpaid again and could be paid twice.
  • Only the first guild member to answer a sync request sends its data. Before, every member whose data differed answered every request.
  • Withdraw remembers the gold you already withdrew and have not paid out yet, so pressing it twice no longer takes the same dues twice. The bank panel shows what is still to withdraw and what is already withdrawn.
  • The result and cancel confirmation checks the stakes again when you press Confirm, and submits nothing if a stake changed while the dialog was open, instead of rejecting stakes you never saw listed.
  • The guild roster is requested at login and every 5 minutes, and sync waits until it is known. Before, messages that arrived while the roster was still empty were dropped as coming from strangers.
  • A repeated request for the same bet no longer makes your client rebroadcast it more than once a minute.
  • A pending deposit that is not found in the bank log within 7 days is dropped from your list with a chat message (the gold stays in the guild bank, ask your Guild Master). Before, it stayed there for good.
  • Bank log matching tolerates old entries: the allowed time difference grows with the age of the entry, so a stake is still confirmed when the log entry is more than a month old.
  • Trade payouts to a player from a connected realm are recognised, instead of being reported as an amount mismatch.

1.1.0 (2026-09-21)

Added

  • Optional minimum and maximum stake for a bet, set in the New bet dialog (both empty by default, whole gold). The guild bank panel shows the allowed range next to the gold box and refuses a stake outside it before any gold moves. A stake outside the limits is rejected for good, like a late one, and its gold stays in the guild bank.

Changed

  • Payouts: long titles use the free width of the row instead of being cut off with an ellipsis after 340 pixels.

Known limitations

  • Stake limits are enforced by clients running 1.1.0 or later. A guild member who still runs 1.0.0 does not see the limits and can deposit a stake outside them. Up-to-date clients reject that stake, but if a 1.0.0 admin then sets the result, 1.0.0 clients still count it, so the payout amounts can differ between versions. Do not use limits until the whole guild has updated.

1.0.0 (2026-09-21)

Added

  • Create, close, resolve and cancel guild bets with 2 to 10 options and an optional closing date (dd.mm.yyyy) and time.
  • Staking through the guild bank: the addon deposits the stake plus a 12 copper marker fee and verifies the deposit automatically against the guild bank money log.
  • A fresh money log scan before a result is set or a bet is cancelled, so unconfirmed stakes are settled correctly.
  • Parimutuel payouts: the pool is split in proportion to the winning stakes, and stakes are refunded when nobody backed the winner or the bet is cancelled.
  • Payouts by mail, by trade or manually, detected or recorded automatically, with undo.
  • Withdraw the unpaid total from the guild bank with one button, within your withdraw limit and the bank balance.
  • Guild-wide sync without a leader over the GUILD and WHISPER addon channels at low priority, with a manual Sync button (10 second cooldown) and /fbets sync.
  • Log window with a bet filter, technical entries and selectable text.
  • Result popup with a sound (can be turned off in Settings).
  • Treasurer ranks set by the Guild Master in Settings.
  • Settled bets are cleaned up 30 days after their last event, together with their local notification and pending-deposit data; bets with unpaid dues are never removed.
  • Minimap button.
  • A flat "Mono" interface with the bundled Inter font.
  • Slash commands: /fbets, /fbets log, /fbets sync and /fbets minimap.

Known limitations

  • The guild bank money log keeps only the 25 latest transactions, so a stake can drop out of it before anyone confirms it.
  • The client cannot fill in the trade money, so for trade payouts the payer types the amount by hand.
  • The interface is English only.

This mod has no related projects