SentinelBuffMeThen_v004.zip
What's new
Changelog
1.2.1
Added
logo.pngis used everywhere: addon list icon (TOC), minimap button and the headers of the buff window, settings window and assignment matrix.- Option "Include myself": you appear in your own list and are buffed through the direct unit token.
- Option "Auto-enable friendly nameplates": switches
nameplateShowFriendson once at login and on zone change (out of combat), so strangers get a unit token. Mouseover is an additional stranger source next to target and focus. - Settings window: the General, Buffs, Window and About pages scroll (mouse wheel and a draggable scrollbar) and follow the content height. The window is more compact (560x520). The History tab keeps its fixed layout with its own list scroll.
Changed
- Minimap button: registered as a LibDataBroker launcher through LibDBIcon
(when any loaded addon provides the libraries), so it looks like the other
addons' buttons and collectors (SentinelForeverUI button bars,
MinimapButtonHide) can pick it up. Without the libraries a LibDBIcon-style
fallback button
LibDBIcon10_SentinelBuffMeThenis built on the Minimap. - Name macro restored for strangers and buffers:
/target Name,/cast [help,nodead] Spell,/targetlasttarget. Buffers without a unit token are listed again so you can buff back without targeting them first; after a click they stay hidden for two minutes because their buff state cannot be read. Group members and yourself keep the direct unit path. - The buff window always anchors at its top-left corner (bottom-left with "Grow upwards") and re-anchors old saved positions, so new rows only extend it downward instead of growing in both directions.
- Every unit name is read as the full character name ("First Last", via
GetUnitName) instead of the first name returned byUnitName, so assignments, buffers, history, overrides, sync and the macro no longer mix up players who share a first name (WoW Forever surnames). Initializeruns every step isolated and creates the minimap button first; an error in one step can no longer take the button or the event wiring down.
Fixed
16001was missing from the TOCInterfaceline, so the Forever client treated the addon as out of date and did not load it.- Strangers outside the group could not be buffed first because they only appear with a unit token (see friendly nameplates above).
- Nearby players were not detected:
nameplateShowAllis now enabled next tonameplateShowFriends(master switch — without it only the target has a plate and nonameplateNtoken resolves), and the check retries every few seconds so a combat-locked first attempt no longer disables it for the whole session. - Friendliness no longer relies on
UnitIsFriendalone (unreliable on nameplate tokens): it falls back toUnitReactionandUnitCanAttack. IsSpellInRangereturning "out of range" on nameplate tokens no longer hides the row —CheckInteractDistance(~28 yd) cross-checks first, so a false negative cannot make nearby strangers invisible when "hide out-of-range rows" is on.- A missing
UnitIsConnectedAPI no longer marks every unit out of range. - Combat taint fixed:
CheckInteractDistance/UnitInRangeare protected calls on Forever during combat and threwADDON_ACTION_BLOCKED. In combat onlyIsSpellInRangeanswers, falling back to the last known range per player+buff; the extra probes only run out of combat. Group members are friendly by definition and skip the friendly check entirely, so they can never vanish mid-combat ifUnitIsFriendfails. - The resting filter no longer hides strangers in every rest area — villages
and camps in the open world also report
IsResting(). Strangers are only suppressed while resting when a real crowd is around (6+ friendly nameplates). A deliberately targeted/focused/hovered player is never suppressed, and "include strangers while resting" still disables the filter completely. /sbmt debugprints the nameplate CVars, whichnameplateNtokens resolve and their friendliness — use it to diagnose stranger detection on any client.- Forever has no usable combat log for addons: registering
COMBAT_LOG_EVENT_UNFILTEREDthrowsADDON_ACTION_FORBIDDENat load. Strangers on Forever are discovered through nameplate tokens instead —nameplateShowAllis enabled automatically (verified working: friendly players resolve withfriend=true). The combat log remains active on the classic flavors (Era/TBC/Wrath/Cata/MoP). - The "recently clicked" memory for tokenless entries is now per buff, not per player: after casting Fortitude on a stranger, Spirit/Shadow Protection stay clickable instead of hiding the whole row for 2 minutes.
- The list defaults to 5 rows ("Max rows" setting, 3-30). Rows that finish drop out and the next candidates slide in automatically, so the window stays a rolling queue instead of a wall of names.
- Priest "spinnt" fixed: Fear Ward only lasts ~3 minutes — always under the
warn threshold — so every unit wearing it sat permanently in "expiring"
state: amber rows that never cleared, plus auto-buff re-casting it on a
loop. Slots can now be flagged
noWarn(missing/present only, never "expiring") and Fear Ward uses it. All four classes' spell ids verified against the Forever trainer data. ADDON_ACTION_FORBIDDENspam stopped: every optional API call now goes throughB.Probe(name, fn, ...), which blacklists a function after its first failure so a protected API logs once and is never retried. Covered:GetPlayerInfoByGUID,UnitGUID,UnitReaction,UnitCanAttack,CheckInteractDistance,UnitInRange,UnitIsConnected,IsResting,Ambiguate,GetItemCount,PlaySound/PlaySoundFile,SendChatMessage,SendAddonMessage,RegisterAddonMessagePrefixand the nameplate CVar reads/writes. Unknown stranger classes fall back to the people DB./sbmt debugnames the blacklisted APIs and captures the Lua stack of the last forbidden/blocked call for diagnosis.- Strangers with a live unit token (nameplate/target/focus/mouseover) now
cast through the token directly instead of the
/targetmacro — the macro only remains for tokenless entries (combat-log strangers, buffers without a token).
1.2.0
Added
- Multi-client support: Classic Era, TBC Anniversary, Wrath/Titan Reforged, Cataclysm, Mists of Pandaria Classic, WoW Forever (Camelot) and Retail including Midnight. The TOC lists every current interface number and no longer restricts loading to the Camelot client.
- Client flavor detection (
B.flavor): classic-style flavors keep ranks, group variants and reagents; modern flavors (Retail, MoP, Cata) use the single raid-wide spell, so the group spell is folded into the single slot and reagents are ignored. - Spell database extended with the TBC ranks (Fortitude, Spirit, Shadow Protection, Mark/Gift of the Wild, Thorns, Arcane Intellect/Brilliance, Dampen/Amplify Magic, all paladin blessings and greater blessings) and the extra paladin auras and seals of TBC and MoP. Spell ids that do not exist on the running client are skipped, so the highest known id always wins.
- Who-buffed-me tracking falls back to the legacy
UnitAuraon clients withoutC_UnitAurasand additionally uses the combat log (SPELL_AURA_APPLIED) on Era/TBC/Wrath/Cata/MoP, which finds strangers without a unit token. Retail and Forever keep the aura-source path.
Changed
- Spell-known lookup falls back through
C_SpellBook,C_Spell,IsPlayerSpellandIsSpellKnown; addon messages and chat useC_ChatInfoor the legacy globals, and the instance channel where applicable. - Unit predicates and names are read through guarded wrappers so Midnight cannot raise "boolean test on a secret value".
- Texture gradients work with either
SetGradientor the legacySetGradientAlpha; secure buttons force key-up so clicks behave the same regardless of theActionButtonUseKeyDownsetting. - Paladin on Retail has no raid blessings: the list stays empty there, the aura self-bar and the assignment matrix remain available.
1.1.1
Fixed
- Class-token lookup for grouped players; paladin blessings resolve from the target's class instead of its localized class name.
- Paladin self-bar aura scan error; tracked buffers survive entering the world and reloads.
- Spell-info lookups are guarded against invalid ids and client API errors; the missing tooltip accent color is restored.
- Secure buttons register release clicks only, avoiding duplicate casts.
- An explicit "no blessing" assignment is kept instead of silently reverting to the automatic fallback.
- Unsupported aura lookup APIs fall back to another reader; unreadable aura scans count as unknown, not missing, and failed reads during reload or combat no longer clear tracking state or replay chat announcements.
- The player is counted in raid blessing buckets and expiring raid buffs are refreshed.
- Range checks no longer return false positives from secret values and no cast is offered when the target is unknown or out of range.
- Paladin assignment sync is stable on roster changes; the Clear button no longer wipes other paladins' assignments.
- The History cast target stays stable in combat; the settings and assignment windows are large enough for their contents.
Changed
- Nearby strangers and History casts use secure unit tokens; entries without a live unit token stay in History but are not castable.
1.1.0
Added
- PallyPower-style paladin tools: blessing assignment matrix (paladins x
classes plus an aura column, click or mouse wheel to cycle), player-level
overrides, Auto-Assign, Report to raid/party chat, Clear, and addon-channel
sync between SentinelBuffMeThen users (
Pbutton in the header). - Paladin self bar: aura, Righteous Fury and seal icons, red when missing, green with a timer when active; click to cast, right-click to cycle.
- Auto-buff button in the header: casts the next needed buff and rotates through all actionable targets.
- Remaining time on buff icons with an amber warning under a configurable threshold; the remembered expiry keeps timers ticking through combat-secret auras.
- Sound and frame flash when a new buff lands on you.
- Reagent strip along the bottom of the window: item icons and counts for the reagents your known group buffs need.
- History tab in the settings window with search and filters (all / buffed /
not buffed / can't buff);
/sbmt historyjumps straight to it. - Persistent people database and buff event log (who buffed you, when and how often), saved across sessions; "Clear history" button in the settings.
- Raid mode: one row per raid subgroup (Priest/Druid/Mage) or per class (Paladin) with missing counts and click-through rotation.
- Locales: deDE in full; frFR, esES/esMX, ptBR and ruRU for visible strings. Spell names come from the client's localized database.
Changed
- Chat announcements dedupe per buff family and only fire on the absent-to-present transition.
- Resting areas no longer flood the list with strangers (opt-in setting).
1.0.0
- Initial release: buff-back list for Paladin, Priest, Druid and Mage.
- Detects who buffs you via the aura
sourceUnitand announces it in chat. - Rows for buffers, group members and friendly strangers (nameplates), with left-click single buff and right-click group buff.
- Always casts the highest known rank; reagent tracking for group buffs.
- Paladin blessings follow SentinelForeverBlessings assignments when installed.
- Sentinel glass look, minimap button and settings window (
/sbmt).
This mod has no additional files

