FBHealBox - Healer QOL Addon, Like Healium

Player-made addons and UI configurations.
Qbixibq
Posts: 11

Re: FBHealBox - Healer QOL Addon, Like Healium

Post#11 » Tue Sep 08, 2026 10:02 am

Ginjaninja wrote: Tue Sep 08, 2026 6:43 am Hey, thanks for responding. I reinstalled and it looks just like your ss. But it doesn't show the info on launcher like yours and still isn't working. It's not related to the client update/ddos is it?
Thanks.
Does it work ingame? :)

Qbixibq
Posts: 11

Re: FBHealBox - Healer QOL Addon, Like Healium

Post#12 » Tue Sep 08, 2026 7:07 pm

Hi.

New Version, grab it now.

https://github.com/QbiXibQ/FBHealBox/re ... ag/1.4.4.3

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.
Last edited by Qbixibq on Wed Sep 09, 2026 7:48 am, edited 1 time in total.

Qbixibq
Posts: 11

Re: FBHealBox - Healer QOL Addon, Like Healium

Post#13 » Wed Sep 09, 2026 6:19 am

Hi @all

New Release 1.4.5 - Performance improvements and some new features.

--> https://github.com/QbiXibQ/FBHealBox/releases/tag/1.4.5


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.

Who is online

Users browsing this forum: Eusuntjayohjay and 1 guest