promotional bannermobile promotional banner

Thanks for the Buff (TFTB) // Automatically Emote, Whisper Your Gratitude, or Display Personal Notifications for Incoming Buffs

Automatically thank players who buff you with emotes, whispers, and chat notifications, whether it's a stranger in the open world or a teammate's cooldown like Power Infusion or Innervate. Get a heads-up for feasts, portals, and same-class cooldowns too.
Back to Files

2026.09.01.A

File nameTFTB-2026.09.01.A.zip
Uploader
gogo1951gogo1951
Uploaded
Sep 1, 2026
Downloads
1.4K
Size
347.3 KB
Flavors
Classic TBCClassic
File ID
8786210
Type
R
Release
Supported game versions
  • 2.5.6
  • 1.15.9

What's new

Thanks for the Buff (TFTB)

2026.09.01.A (2026-09-01)

Full Changelog

  • Update vendored libraries for 2026.09.01.A
  • Enhance README with image and options formatting
    Added an image and improved formatting for options.
  • Merge pull request #11 from Gogo1951/2026.09.01
    Thank You Buttons, Custom Messages, & Bug Fixes
  • Merge main; keep the branch .luacheckrc
    main's copy still declared the old TFTB_DB and the retired UnitAura and
    InterfaceOptionsFrame_OpenToCategory globals, and declared five
    SLASH_TFTB_THANKYOU*1 names that are set through _G and so are never
    flagged. Kept this branch's copy: luacheck runs clean, main's raised two
    undefined-variable warnings for TFTBDB. .pkgmeta merged cleanly, both
    sides having added the same ignore entry.
  • Thank You Buttons, Custom Messages, & Bug Fixes
    Features
    • Data.THANK_YOU_BUTTONS drives five Thank You buttons instead of one. Buttons
      2-5 store a single emote token rather than a checklist, take their own macro
      name and slash command, and seed fully switched off.
    • ns.ReconcileMacros creates and deletes each button's macro, and runs from
      OnProfileChanged so macros follow the incoming profile instead of stranding
      the previous one on the bars until a reload.
    • goodNews.message is user-editable. ns:BuildGoodNewsMessage substitutes the
      single %a token via gsub with a replacement function, never string.format,
      so a stray % in the template cannot error mid-whisper.
    • strangers, teammates, and services gain an enabled master switch, gated
      once in Buff-Tracking and applied to each panel by ns.HideAllExcept, which
      composes with any control's existing hidden predicate.
    • ns.GetEmoteCatalog reads EMOTE<n>_TOKEN and EMOTE<n>_CMD<n> from the running
      client (sparse indices, deduped tokens). New Emote Extract diagnostic
      exports it, so any flavor's list comes out without a code change.
      Fixes
    • ResolveEmoteTarget drops a unit that cannot witness the emote (UnitIsVisible
      plus UnitInRange when it answers) instead of degrading to the undirected
      flavor, and ns:DoRandomEmote now refuses a nil target outright.
    • Emote token for /yes corrected to NOD. There is no YES token on any client.
      DoRandomEmote iterates Data.EMOTES and reads the saved table by key, so a
      retired key sitting in an old profile can never be picked.
    • Peer Pressure filters on MINE/PARTY/RAID affiliation flags. Era's combat log
      is proximity-scoped, so every passerby of your class was triggering it.
    • Jumper cables detect on SPELL_RESURRECT rather than SPELL_CAST_SUCCESS: the
      cables report success on every jolt, revived or not. Pending Good News is
      parked until the resurrect confirms, and swept if it never arrives. Adds the
      114943/164729 variant for completeness.
    • OnUnitSpellcastSent accepts "pet" so pet-cast entries (Roar of Sacrifice,
      Battle Squawk) reach Good News at all.
    • ns.TrimToBytes cuts on a UTF-8 boundary, stepping back off continuation
      bytes, so a capped message cannot end in a broken glyph.
      Housekeeping
    • Pre-cutoff migrations deleted and SavedVariables renamed TFTB_DB -> TFTBDB
      per the 2026-08-15 cutoff. Existing profiles fall back to defaults.
    • Seconds sliders replaced by Data.SECONDS_CHOICES dropdowns with inline help;
      get snaps to the nearest listed value without rewriting what is stored.
    • Good News caps its duration clause below one minute; FormatDuration gains
      forceSeconds so dropdown labels stay in seconds.
    • MESSAGE_USED_ITEM drops the gendered possessive; PRONOUN_* keys retired.
    • COMBAT_* locale keys renamed TRACKED_*; the four buff Options files renamed
      to their player-facing tab names; TOC load order follows tab order.
    • Drops the UnitAura and InterfaceOptionsFrame_OpenToCategory legacy paths.
    • ns.RequestSpellData streams tooltip text so cross-class entries describe
      themselves, and descriptions quote the highest live rank in the entry.
    • Battle Squawk tracked as its own SOLO entry; Bestial Wrath added to Peer
      Pressure.
    • Adds .luacheckrc and ignores it in .pkgmeta. READMEs updated; pitch synced
      across README, TOC Notes, and enUS OPTIONS_DESCRIPTION.
  • Add .luacheckrc to package metadata
  • Add .luacheckrc configuration file
  • Clarify GitHub token handling in package.yml
    Added comments to clarify GitHub token usage in workflow.

This mod has no additional files