The XML hand-copied 60 font strings whose anchors were overwritten before
every message. Create the event frame and the three scroll area frames
with CreateFrame/CreateFontString instead, keep the frame object on each
scroll area rather than its global name, and read the scroll area from
the frame in OnUpdate.
Resolve icons from the trigger texture, then the event's SpellId via
C_Spell.GetSpellTexture, then the effect name. Drop the hand-written
French ICON_CACHE table, the never-read NO_ICON_CACHE and the SpellId
cache. The name lookup no longer overrides an exact SpellId icon, the
item fallback is reachable again, and misses are cached so each name is
searched once.
Profiles are deep copies of DEFAULT_CONFIG, so settings added later never
reached existing saves; the versioned migration chain patched that by
hand. Fill every missing key from the defaults on load instead, skipping
the entries of the user-editable Triggers and Suppressions lists.
Drop CreationVersion and VERSION_NUMBER, take VERSION_STRING from the
.toc Version ("dev" for unpackaged checkouts), and retitle the window
to ClassicAPI Edition.
Animation event tables now come from CreateUnsecuredObjectPool and are
wiped on release, keeping garbage down under 1.12's stop-the-world GC.
Release the tables that were previously dropped for the GC (hidden
events, the power-gain early return), and make /msbt stats report the
number of tables in use as a leak check.
Prefix the icon as a ClassicAPI |T escape instead of a separate texture
region, so it fades and scales with its text and counts toward alignment.
Scale the scroll step by elapsed time so text moves at the same speed at
any framerate.
- Register COMBAT_LOG_EVENT_UNFILTERED and map 20 subevents to MSBT damage/heal/notification data with GUID-based direction
- Remove Nampower event layer, NP_* CVars, version check and install prompt
- Resolve spell icons through ClassicAPI GetSpellInfo
- Keep CHAT_MSG parsing for honor/rep/skill/XP/item/power lines and as fallback until each log event fires
- Update README integration docs
GetAuraIcon resolves buff/debuff icons via C_UnitAuras.GetAuraDataBySpellName (returns the icon directly, no UnitBuff/UnitDebuff follow-up) and temporary weapon-enchant icons via C_Item.GetWeaponEnchantInfo + C_Item.GetEnchantInfo + C_Spell.GetSpellTexture. This drops ~48 tooltip create/scan/hide ops per uncached effect and, unlike the old FindBuff, actually yields an icon for weapon-enchant-named effects. The dead tracking-spell branch is removed, the AddAnimation call site no longer dead-ends on non-matches (falls through to the spellId/Babble/item resolvers), and the now-unused MSBT_Tooltip frame is removed from the XML.
The equipped-slot path returned (slot, nil, icon, count) while the bag path returned just the icon. The sole caller (AddAnimation) uses only the first return value as the texture, so equipped items produced a slot number instead of an icon path. Both paths now return the icon as the first value. Also call FindItemIcon once in the caller instead of three times, folding the no-icon case into the same branch.
The equipped-slot check compared itemName to its own lowercase (always matching the first named slot) instead of the searched item; now it compares against item. The separate GetInventoryItemLink/ItemLinkToName loop for slots past INVSLOT_LAST_EQUIPPED is folded into the ItemLocation loop by extending its range by 4.
Drops the SuperWoW and UnitXP SP3 detection flags and all their code paths. GUID/unit-name resolution (GetNameFromGUID, IsPetGUID, EnsurePlayerGUID, player GUID caching) now relies solely on Nampower APIs; the spellId icon fast path keeps only its Nampower branch; and GetUnitIDFromName falls back to the raw-combat-logging path and name cache. UnitXP was detection-only and never read. README updated to reflect the removal.
GetSpellNameFromId now calls C_Spell.GetSpellName instead of the SuperWoW/Nampower pcall chain. FindItemIcon iterates equipped slots and bags via ItemLocation and C_Item.GetItemName/GetItemIcon. AddAnimation hoists strlower(name) into a local lowerName to avoid repeated calls and feeds the lowercased name to FindItemIcon.
Replace the manual {r,g,b} table and hex color-prefix strings with CreateColor-based color objects. GetDamageTypeFontColor now builds each school color via a CreateSpellColor helper that also caches a colorStr markup string, adds a Holy color, and retunes the existing school colors. FormatEventText and AddAnimation consume the new objects (color.colorStr and dtColor:GetRGB()), and the dead GetDamageTypeColor lookup is removed.