Skip to content

Releases: QbiXibQ/FBHealBox

FBHealBox v1.4.5

Choose a tag to compare

@QbiXibQ QbiXibQ released this 09 Sep 06:08
f527200

Changelog

1.4.5 (2026-09-09)

Three additions around the frames and the prediction: Blizzard's party frames can go away, the resource bar is no longer reserved for mana, and gear healing is counted where an API can supply it. Plus a performance pass with no change in behaviour.

New & Changed

  • Hide Blizzard party frames. New switch on the General tab that hides PartyMemberFrame1 to 4 while you are grouped, leaving only the Heal Box plates. Off by default. Blizzard shows those frames again on every roster change, so the addon hooks their OnShow once instead of hiding them a single time; a frame that reappears is hidden again in the same moment.
  • Mutually exclusive with the attach mode. Default party frames docks the plates onto exactly those frames, so the two options can never both be on. Whichever one is ticked disables and greys out the other (FBHealBox_UpdatePartyExclusion), and FBHealBox_HideBlizzPartyActive() re-checks the same rule in code for saved settings that were edited by hand. Switching the option off brings the frames back immediately, and so does the class gate: an addon that stays asleep for warriors, rogues and hunters returns the frames as well.
  • Rage, energy and focus in the resource bar. The thin strip under the health bar used to be reserved for mana and stayed empty for everyone else. New switch Show rage, energy, focus on the General tab gives every unit its own resource in its usual colour, from the new table FBPOWER_COLORS: mana blue, rage red, focus orange, energy yellow. FBUnitMana() now returns the power type as a fourth value, and both the plates and the raid cells colour their bar from it. Off by default, and it still needs the mana bar to be on.
  • Equipment healing bonus in the prediction. Vanilla spell tooltips show the naked base value; the bonus from your gear is missing. Learned values from the combat log carry it automatically, so the gap only affected ranks you had never cast. FBHealBox_ProbeHealBonus() now looks for GetSpellBonusHealing, GetSpellBonusHeal and GetHealingBonus, first as globals and then inside a ClassicAPI table, and FBPredict_ExpectedDirect() adds the share that belongs to the spell.
  • Weighted the vanilla way. The bonus counts as cast time divided by 3.5, capped at 3.5 seconds, with instants counting as 1.5 and an unreadable cast time as 2.5. Cast time is read once per spellbook slot from the tooltip (FBHealBox_SpellCastSeconds, right-hand side of line 2), so a 3 second Greater Heal takes 600 of a +700 bonus and a 1.5 second Flash Heal takes 300. Without a suitable API the bonus stays 0 and nothing about the old behaviour changes.
  • New command /fbp healbonus. Turns the equipment bonus off and on, saved per character in HealBox.HealBonus (on by default). /fbp reports the value found and whether it is being applied; the command says so when no API supplies a bonus at all.

Performance (no change in behaviour)

  • Own buff timers read once per frame. FBPredict_PlayerBuffTimeLeft used to walk the whole player buff list once per watched buff, calling strupper on every texture along the way: with six watches and thirty buffs that was around 200 API calls and 200 throwaway strings a second. The list is now read once per frame into a texture-to-seconds map (FBPredict_ScanPlayerBuffTimes), the way FBHealBox_UnitBuffs already worked, and every watch is served from it. Texture paths are upper-cased once and remembered (FBHealBox_UpperTex), which also removes the same allocation from the unit buff scan.
  • Range and line of sight in raid mode are spread over several ticks. FBRaid_Tick used to check up to 40 cells in one frame every half second. It now walks a quarter of the groups per tick at a quarter of the interval (FBRAID_TICK_SLICES), so a full sweep still takes the same half second while the peak load per frame drops to a quarter.
  • pcall per sweep instead of per unit. Range, distance and line of sight went through a protected call for every single unit, up to 160 a second in a full raid. The first successful call now marks the form as safe and the individual calls go straight through, while the sweep as a whole stays protected: one pcall per pass in FBHealBox_CheckRangeAll, FBHealBox_CheckLOSAll and FBRaid_Tick. A client that throws on the very first call keeps the old per-call protection and its fallback path.
  • Self-healing if an API throws late. Should a sweep throw after the form had already proven itself, FBHealBox_ApiFailed() puts all three queries back to the protected single call, where the error is caught and the fallback takes over as before. The frame is never torn open, and at worst one pass is skipped.
  • Raid health text no longer builds strings it throws away. The percentage and deficit texts were formatted before the change check, so every UNIT_HEALTH in a 40 man raid produced a string that was usually discarded immediately. The cell now compares the number and only formats on a real change, the way the plates always did.
  • Cheap pre-test before the combat log patterns. Up to four anchored patterns ran on every message from twenty registered events. A plain substring test now filters first, with the words cut out of the client's own message templates so it works in every language. The tick test deliberately comes from the self template, because "You gain" and "%s gains" differ in the verb but share what follows.
  • Equipment bonus read once instead of per candidate. With heal chains a single Smart Healing click asked the API for the bonus up to fifteen times. The value is now remembered and dropped again on UNIT_INVENTORY_CHANGED or a spellbook rebuild.
  • Cast time comes free with the spell scan. FBHealBox_SpellCastSeconds used to build its own tooltip on a cache miss, which could mean a dozen tooltip builds in the middle of combat on the first click. FBPredict_TooltipText now picks the cast time off the right-hand side while the tooltip is standing anyway and fills the cache; the standalone scan remains only as a fallback. The cast time is deliberately kept out of the parsed text, because a number like 2.5 would confuse the shield duration and heal amount patterns.
  • Smaller things. The range spell of the first assigned button is remembered instead of being searched over ten slots on every range check (invalidated on rebinding and on a spellbook rebuild). The ticker redraws on a fixed 0.03 second step instead of every frame. Blizzard's party frames are re-evaluated in the same collection point as the name updates instead of on every event of a burst. Two or {} fallbacks in loops no longer allocate a throwaway table.

FBHealBox v1.4.4.3

Choose a tag to compare

@QbiXibQ QbiXibQ released this 08 Sep 20:28
8a8c730

Changelog

1.4.4.3 (2026-09-08)

Class gate, heal chains and a Smart Healing fix. The addon no longer loads its display for warriors, rogues and hunters, Smart Healing keeps its hands off heal over time spells, and downranking may now switch spell inside a heal chain.

New & Changed

  • Smartcross option in UI. Added a Smartcross checkbox under Smart Healing in the Buttons tab. It is automatically enabled/disabled and grayed out based on the Smart Healing master switch (also toggleable via /fbp smartcross).
  • Streamlined Smart Healing tooltip. Overhauled the options tooltip for Smart Healing across all languages. Replaced the screen-filling block of text with a compact, readable bullet-point summary of key rules.
  • Priest heal chain cleaned. Completely removed Flash Heal from the Priest heal chain (Lesser Heal · Heal · Greater Heal). Flash Heal is preserved as a dedicated fast emergency heal and is never swapped into from Greater Heal or Heal.
  • Downranking across spells. Until now Smart Healing only ever lowered the rank of the spell on the button, so Greater Heal (rank 4) could become Greater Heal (rank 1) but never Lesser Heal (rank 3), even though that would have covered the deficit for a fraction of the mana. Every single-target direct heal of a class now forms a heal chain, and the whole chain is searched: Priest Lesser Heal · Heal · Greater Heal, Paladin Flash of Light · Holy Light, Shaman Lesser Healing Wave · Healing Wave, Druid Healing Touch. The candidate with the smallest expected heal that still covers the need wins.
  • The button never gets stronger. Nothing that heals more than the rank you assigned is ever chosen, and a tie keeps the assigned spell. Note that the cast time can change: for a small deficit a Greater Heal click may come out as Lesser Heal, and Holy Light as Flash of Light.
  • What stays out of the chains. Group heals (Prayer of Healing, Chain Heal), fast emergency heals (Flash Heal), HoTs (Renew, Rejuvenation, Regrowth), shields and cooldown spells (Holy Shock, Lay on Hands) are never swapped. The chains sit in FBHealChains and can be edited freely; German spell names are included, with special characters stored as byte sequences for both Latin-1 and UTF-8 clients.
  • New command /fbp smartcross. Turns chain switching off and on, saved per character in HealBox.SmartCross (on by default). With it off, Smart Healing stays on the assigned spell and only lowers its rank. /fbp shows the state next to the Smart Healing line, and the command says so when Smart Healing itself is still off.
  • Class gate for warriors, rogues and hunters. The addon is built for healing and buffing, and those three classes get nothing out of it: no heals, no heal prediction, and a mana ticker with either no mana to watch (rage, energy) or nobody to heal (hunter). Logging in on one of them now leaves the whole display switched off: no plates, no raid grid, no minimap button, no options window. All event handlers and OnUpdate loops of the core and of the raid, ticker and Smart Damage modules return immediately (FBAddonSuppressed), so the addon costs nothing while it sleeps. Two lines in the chat explain what happened and how to change it.
  • New command /fbp forceload. Shows the addon on a blocked class anyway. It starts immediately, without /reload, and the setting is kept per character in HealBox.ForceLoad. The same command switches it back off. On every other class the command reports that it is not needed. While the addon sleeps, every other /fbp command answers with the same hint instead of reporting on a display that was never built.
  • Class detection. Uses the client's English class token (WARRIOR, ROGUE, HUNTER) with a fallback to the displayed class name in five languages, plus a last resort over the power type (rage and energy are never mana classes).
  • New hook Suppress. Modules hide their own frames when the core goes to sleep; the raid module hides the grid, the ticker hides its sparks.
  • Startup message moved. The greeting and the modules' Loaded hooks now run on ADDON_LOADED / VARIABLES_LOADED instead of FBHealBox_OnLoad, so the saved language is applied and nothing is announced for a class that stays asleep.
  • Rank rules generalised. The upper limit is no longer "never above the assigned rank" but "never more expected healing than the assigned rank", which is the same thing inside one spell and the right rule across spells. A rank whose tooltip cannot be read is now skipped instead of ending the search.

Fixed

  • Smart Healing no longer downranks heal over time spells. Renew, Rejuvenation, Regrowth, Tranquility, Lifebloom, Wild Growth, Riptide and Earth Shield now always go out at the assigned rank, for every class. A HoT spreads its healing over many seconds, so the health missing at the moment of the click says nothing about which rank fits, and a downranked HoT keeps ticking too weakly for its whole duration. Mixed spells such as Regrowth count as HoTs as well.
  • HoT detection The new FBHealBox_IsHoT() checks the name list FBHoTSpells (English and German names, umlauts stored as byte sequences for both Latin-1 and UTF-8 clients), the tooltip evaluation (info.hot), the spell watch (hasHoT) and the HoTs currently running from the combat log. The exception therefore also applies to spells that are not in the list, for instance on custom servers. In addition the per-rank check now rejects any rank with a HoT portion.

FBHealBox v1.4.4.2

Choose a tag to compare

@QbiXibQ QbiXibQ released this 07 Sep 12:26
6c4f1d5

Changelog

1.4.4.2 (2026-09-07)

Buff duration display update & bugfix. Replaces the 4-quadrant clock division for buff icons with a 32-step vertical duration wipe, offering much finer timer resolution, and fixes an syntax error when loading.

New & Changed

  • 32-step buff icon duration display. The buff icons left of the health bar previously divided the remaining duration into 4 coarse quadrants (quarters). They now transition in 32 fine vertical steps (FBBUFFICON_STEPS = 32) from top to bottom. As a buff expires, the top portion is progressively desaturated and darkened in 32 increments. For a 30-minute buff like Power Word: Fortitude or Divine Spirit, the visual display now updates approximately every 56 seconds rather than once every 7.5 minutes.
  • Optimised texture usage. Replaced the 4 quadrant textures and 4 wash textures per buff icon with a single dynamically cropped desaturated overlay (ic.qTex) and dark wash (ic.wTex), reducing texture objects by 75 % per buff icon while increasing visual granularity eightfold.
  • Shortened addon notes. Better display in WoW-Launcher addon managers.

FBHealBox v1.4.4.1

Choose a tag to compare

@QbiXibQ QbiXibQ released this 06 Sep 10:29
4b36163

Changelog

1.4.4.1 (2026-09-06)

Buff tracking & class spells update. Fixes buff clock icons (Divine Spirit, etc.) not appearing next to the health bar, adds group buff alternate matching, and completes the spell selection lists across all healer classes with buffs, utility and rez spells.

Fixed

  • Buff tracking & Tooltip scanning. In Vanilla 1.12.1, ClearLines() on the hidden scan tooltip (FBHealBoxScanTip) does not clear hidden text lines. Because FBPredict_TooltipText did not check fs:IsShown(), leftover lines from previously scanned heal spells (e.g. "Heals a friendly target...") lingered and were read when inspecting buff tooltips like Divine Spirit. This erroneously flagged info.isHeal = true, skipping buff duration detection (info.buff) and causing Divine Spirit not to display its clock icon and timer in the plate UI.
  • Group buff alternate detection. FBPredict_BuildWatch and FBPredict_ScanUnit now track group buff variants (altTex). When a group buff is applied or present (Prayer of Fortitude, Prayer of Spirit, Gift of the Wild, Greater Blessings), the addon correctly recognises the aura, confirms pending casts, and displays the buff clock icon.
  • Buff watch textures. FBLoadSpellData now flags all spells in FBBuffWatchSpells as addon spells (isHealBoxSpell = true), ensuring their textures and ranks are gathered and monitored even if they are not yet assigned to a heal button.
  • Drag & drop instant sync. Dropping a spell onto a button now immediately calls FBPredict_BuildWatch(), updating tracked buffs and predictions without requiring a /reload.

New & Changed

  • Expanded class spell lists. Greatly expanded Spell.Name for all classes so that all relevant buffs, utility spells, dispels, and resurrections appear in the cascading spell menus:
    • Priest: Added Power Word: Fortitude, Prayer of Fortitude, Divine Spirit, Prayer of Spirit, Shadow Protection, Prayer of Shadow Protection, Fear Ward, Power Infusion, Resurrection.
    • Druid: Added Mark of the Wild, Gift of the Wild, Thorns, Tranquility, Innervate, Rebirth, Cure Poison.
    • Paladin: Added all normal and Greater Blessings (Wisdom, Might, Kings, Salvation, Light, Sanctuary), Blessing of Freedom, Blessing of Sacrifice, Redemption, Divine Intervention.
    • Shaman: Added Ancestral Spirit, Purge, Water Walking, Water Breathing, Water Shield.
    • Added optional support for Mage (Remove Lesser Curse, Arcane Intellect, Arcane Brilliance, Dampen Magic, Amplify Magic) and Warlock (Unending Breath, Detect Invisibility).
  • Fear Ward in Buff Watch. Added Fear Ward to FBBuffWatchSpells for Priests.

FBHealBox v1.4.4

Choose a tag to compare

@QbiXibQ QbiXibQ released this 06 Sep 07:49
edf9a68

Changelog

1.4.4 (2026-09-06)

Performance pass. No feature was added or changed; every visible behaviour is meant to be identical. A simulated five-second raid fight (40 players, aura and health events, mana changes, combat log, 60 frames per second) went from about 63,900 API and widget calls to about 14,450, a reduction of 77 %.

Changed (internals)

  • Button states centralised. The up to 260 heal buttons (10 plates x 10, 40 raid cells x 4) no longer carry their own SPELL_UPDATE_USABLE / SPELL_UPDATE_COOLDOWN handlers. One pass over the visible buttons queries usability and cooldown once per spell id and range once per button, and sets colours and cooldown sweeps only when the state changes. Several such events within one frame are merged into one pass.
  • Display caches. Health text, bar maxima, bar values, bar colour and mana strip visibility are only written when they change. Dispellable debuffs are searched on UNIT_AURA only; UNIT_HEALTH and the prediction tick reuse the last result.
  • Aura scans shared. A unit's buff textures are read once per frame and shared between the heal prediction and the buff watch. Buff names resolved through tooltip scans are remembered per texture, so a unit missing the watched buff no longer costs up to 32 tooltip scans per aura event. Raid units are only scanned when something depends on them (own cast pending, tracked HoT or shield, or a visible cell).
  • Cheaper ticks. Spell timers use precomputed base spell names instead of string parsing per button per tick and skip units without tracked HoTs or shields. Buff icons reuse their work tables, iterate a presorted list instead of sorting per tick, and update on change or once a second instead of five times a second. The attacked-member check skips entirely while there is no hostile target and nothing is marked, and compares names before calling UnitIsUnit.
  • Event bursts coalesced. PARTY_MEMBERS_CHANGED, UNIT_PET and RAID_ROSTER_UPDATE set a flag that is processed once in the next frame instead of rebuilding plates and grid for every event of a burst.
  • Mana ticker. Enabled/mana/full checks moved from every frame to mana events and option changes; the spark is re-anchored only when it has moved at least half a pixel; sizes and visibility are cached.
  • Combat log. Heal patterns run only for buff events, the absorb pattern only for hit events that contain the word absorbed. Smart Damage parses damage lines only while enabled and while there is a target being measured or an own cast waiting; its live target line is refreshed only while the options window is open.
  • Raid test ghost animation frame is hidden outside the raid test instead of running an empty update every frame.
  • Client API compatibility. IsSpellInRange and IsUsableSpell do not exist in the 1.12 client (they came with 2.0). All range and usability checks now go through wrappers that use them when a client offers them and otherwise fall back to 1.12 means: spell range from the tooltip against UnitXP("distanceBetween") where available, else CheckInteractDistance (28 m, beyond that undecided rather than red); mana cost from the tooltip against your current mana. Because clients differ (2.0 style (id, "spell", unit) versus the Turtle client's (name, unit)), the addon probes both signatures once at login with pcall and uses the one the client understands; a function that keeps throwing is switched off in favour of the fallback. /fbp reports the detected form. Without this the new central button pass crashed at login.

Fixed

  • The old per-button event handler declared this, event and arg1 as parameters, which shadowed the 1.12 globals; range colouring and cooldown sweeps on the buttons never worked in the game. They do now.

FBHealBox v1.4.3

Choose a tag to compare

@QbiXibQ QbiXibQ released this 05 Sep 18:59
de37986

Changelog

1.4.3 (2026-09-05)

New

  • Languages. Spanish, French and Italian added to all addon texts (English and German unchanged). The client locale picks the language automatically, the language button lists all five, missing keys fall back to English.
  • Mana ticker (module FBHealBox_Ticker.lua, on by default). A spark travels across your own mana strip every 2 seconds in step with the server's regeneration tick; after spending mana it turns orange and runs the five-second rule down, extended to the first tick after the five seconds. Works on the party plate and on your own raid cell, hidden while mana is full. Detection via UNIT_MANA only: grid from observed ticks, re-sync within a tolerance, foreign pulses (totems, Innervate) ignored, potions and runes filtered by size. Own options tab Ticker: master switch, five-second rule, tick tolerance, tick offset, spark width. /fbp ticker toggles, /fbp reports sync state.
  • Smart Healing (off by default). When on, a click casts the lowest rank of the assigned spell whose expected heal covers the target's missing health (minus incoming healing) plus a safety margin (default 20 %). Never above the assigned rank, direct heals only, always the assigned rank below 30 % health. Learned heal values are used where available. Downsides (no crits in the estimate, burst damage, deliberate overhealing) are explained in the tooltip. Options on the Buttons tab; /fbp debug logs each decision, /fbp shows the state.
  • Cooldown sweep on buttons, global cooldown excluded. Option Cooldowns on buttons.
  • Red border for the attacked member: the plate or raid cell of the unit your hostile target is targeting. Takes precedence over the buff-watch border. Option Mark who is attacked.
  • HoT and shield timers on buttons: each spell's button shows the remaining seconds of your own HoT (green) or shield (blue) on that unit; after Power Word: Shield the button shows Weakened Soul in red. Option HoT and shield timers.
  • Smart Damage (module FBHealBox_Damage.lua, off by default). Attack spells pressed on any action bar or key binding are cast in the lowest rank that still kills the target, never above the rank on the bar. Target health from the server (real values), MobHealth3, MobInfo-2, or the addon's own per-mob-type estimate learned from combat-log damage and percent drops (highest measurement kept). Minimum damage per rank from the tooltip, raised by observed full hits. Section on the Extras tab (shared with the ticker) with switch, safety margin, live health-source line and spell list; /fbp damage, decisions in /fbp debug.
  • Buff icons in the health bar: buffs with a duration that sit on your buttons (Fortitude, Divine Spirit, Fear Ward, Inner Fire) appear as small 8 px icons on the outer left side of the plate. The icon is a clock: it turns black and white clockwise from twelve o'clock as the time runs out (half left = right half grey). Exact on yourself, counted from your own cast on others, fully coloured when cast by someone else. Raid cells show them outside their left edge; the grid reserves the room. Line-of-sight badge moved to the plate's top-left corner. Units are scanned once after login and group changes so existing buffs appear immediately. /fbp buffs for diagnostics. Option Buff icons in the health bar.
  • Test-mode ghost Dorn demonstrates the red border and the timers.

Fixed

  • Own buffs were only read at login and on group changes: Vanilla fires PLAYER_AURAS_CHANGED for the player instead of UNIT_AURA. The addon now listens to it and re-reads your remaining time on every change, so recasting a buff on yourself resets its clock and cancelling it removes the icon. Also fixes confirmation of your own HoTs and shields on yourself.

  • Raid cell names and percentages were hidden behind the health bar since the bar levels became relative; the texts now live on their own layer above the bars.

  • Buff icons stack two high left of the plate; elapsed clock quadrants are drawn dark on a layer above the icon so the split shows on every client. Raid cells use a 3 by 4 grid of 6 px icons (twelve slots); the new raid option Show buffs removes icons and strip together. /fbp buffs reports the grey count per icon.

  • Test modes extended: party ghost Brynn is dead, pet Bramble carries a disease, Dorn carries six and raid ghost 12 twelve buffs, raid ghost 27 a disease. Up to six buff icons per plate.

  • Plate names could sit too low on some rows (the name box grew to two lines internally). Name, paw icon and debuff icon are now vertically centred with a fixed one-line height.

  • Tooltip parser took durations ("for 30 min", "again for 15 sec") for direct heal amounts, so buffs such as Power Word: Fortitude and the shield reported a tiny "heal" and Smart Healing downranked them. Durations are ignored now, and Smart Healing only touches spells whose tooltip describes a heal and that carry no absorb.

Changed

  • Option tab buttons are 100 px wide (was 110) so that four tabs fit in the window; class icon shrunk so it no longer overlaps the tabs. Checkbox labels have a fixed width and end with an ellipsis when a translation is long; the tooltip carries the full text. The fourth tab is called Extras and holds the ticker and Smart Damage sections.
  • Tooltip parser: only hr/hour count as hours; Holy no longer looks like a time unit.
  • New core hooks Loaded, Aggro, SpellTimers, Cooldowns for modules.

FBHealBox v1.4.2

Choose a tag to compare

@QbiXibQ QbiXibQ released this 05 Sep 06:24
a6ac7f8

Changelog

1.4.2 (2026-09-05)

New: raid mode (module FBHealBox_Raid.lua, on by default, switches in automatically from 11 raid members; Raid view from N players is adjustable)

  • Compact grid for 20 and 40 player raids: one cell per member in blocks of five per raid group, blocks arranged in rows (Groups per row). Empty groups collapse, so a 20-player raid is a single row.
  • Each cell: name in class colour, health bar with shield and incoming-heal layers, 3 px mana strip, HP percent or deficit, dispel colouring, dead/ghost/offline text, range fading, line-of-sight eye, buff-watch border.
  • Up to four mini buttons per cell, wired to Button 1 to N from the Buttons tab (right-click spells included). Click on a cell targets the unit (or unit menu / move / nothing, as configured for plates).
  • Own options tab Raid mode with size, spacing, scale, headers, mana strip, HP text mode, title bar, hide-empty-groups and hide-party-plates switches.
  • Raid test with 20 or 40 ghosts covering every visual state. /fbp raid, /fbp raidtest 20|40|off, raid line in /fbp.
  • Grid position and scale are saved separately from the party plates. Party plates are hidden while the grid is up (switchable).

**New: drag and drop. Spells can be dragged from the spellbook onto any heal button, raid mini button or options field. Right mouse button, or Shift held while dropping, fills the right-click side when that option is on. Spells outside the class list are accepted.

Fixed

  • Double loading. The .xml included FBHealBox.lua a second time on top of the .toc. Every frame, hook and the options window existed twice. Visible effects: the raid tab was missing (added to the first, overwritten options window), Escape could crash the client (the second hook called itself), and learned absorb values were doubled (two prediction frames counted every absorb line). The .xml no longer loads scripts, and both Lua files refuse to run twice.
  • Escape hook stores the original in a local upvalue, is installed at most once, and no longer uses a tail call.
  • Learned absorb values above 1.5 times the tooltip are dropped on load; doubled values from earlier versions clean themselves up.

Changed

  • Core gained a hook interface (FBHealBox_RegisterHook, FBHealBox_AddOptionsTab) so modules can attach without editing the core. No behaviour change for the party display.
  • .toc now loads FBHealBox_Raid.lua after the core; removing that line disables raid mode entirely.

FBHealBox v1.4.1

Choose a tag to compare

@QbiXibQ QbiXibQ released this 04 Sep 22:15
b09ae77

Changelog

1.4.1 (2026-09-04)

English

New

  • Pets. Every pet in the group (pet, partypet1 to partypet4) gets its own plate with the full set of heal buttons, stacked directly below its owner, indented by 12 px, with a paw icon and a light-blue name to tell it apart. Appears and disappears with UNIT_PET. Option Show pets.
  • Mana bar. A 5 px blue bar along the bottom edge of the health bar ("bar in bar"), only for units whose power type is mana. Option Mana bar.
  • Button and row spacing. Two sliders, 0 to 20 px each, for the gap between buttons and the gap between plates.
  • Test mode. Fills the display with ghost players and pets (health, mana, shield, incoming heal, dispellable debuff, missing buff, out of range) so the layout can be arranged without a group. /fbp test or the checkbox. Not saved.
  • Options window with two tabs. Buttons holds the button assignment, the button count and the right-click switch; General holds scale, spacing, all other switches, language and buff watch.
  • Right-click spell. Every button can carry a second spell for right click. Off by default and only enabled through the Buttons tab; when on, a second column appears in the assignment and a small corner icon on each button shows the right-click spell. Assignments are kept when the switch is off.
  • Click on a plate. Left and right click on a name or health bar target the unit by default. Both are configurable (General tab): Target, Unit menu, Move display, Nothing. Moving the display is now Shift + left drag (or the Move display action).
  • Dead / ghost / offline. Shown as text in the bar instead of 0 %, with an empty grey bar and no mana strip.
  • Line of sight. An eye badge on the plate's left edge while the unit is out of line of sight: live via the UnitXP client mod, otherwise inferred from the 'not in line of sight' error after your own heal attempt (8 s, cleared when a cast starts or a heal lands). Option Line of sight.
  • Debuff icon. The icon of the first debuff your class can remove is shown next to the name, with its stack count. Option Debuff icon.
  • Class colours. Names in class colour (client RAID_CLASS_COLORS, fallback table built in). Option Class colours.
  • Buff watch. Pick one of your buffs; every plate whose unit is missing it gets an orange border. Group versions count as well, even when cast by another healer (texture check first, tooltip name scan as fallback). Pets are excluded unless Buff watch on pets is on.
  • Range fading. Plates including their buttons fade to 50 % when the unit is out of range of your first assigned spell (28 yards without a spell). Option Range fading.
  • /fbp config opens the options window; Escape closes it (registered in UISpecialFrames, plus a hook on ToggleGameMenu for clients that ignore that list). /fbp ends with a list of all commands.
  • Saved plate position. The player plate keeps its position across reloads; scaling no longer moves it.

Changed

  • All UNIT events run through one slot table (FBPartyUnit) instead of five copied handlers; HealBoxAttachMode and FBUpdateNames are loops.
  • Spell buttons are created once and only re-assigned afterwards (previously rebuilt on every SPELLS_CHANGED, with random global names like Button3).
  • Settings missing in an old saved-variables table are filled in on load (FBHealBox_ApplyDefaults).
  • UNIT_MAXHEALTH is handled (was missing).

Fixed

  • Documentation named a wrong client version; the addon targets client 1.12.1.
  • Tooltip error on a button whose target does not exist.
  • Division by zero for offline members (UnitHealthMax = 0).
  • Plate position reset on every login.