File Details
v12.0.22
- R
- Apr 25, 2026
- 4.84 MB
- 1.6K
- 12.0.5
- Retail
File Name
v12.0.22.zip
Supported Versions
- 12.0.5
v12.0.22 (2026-04-24)
Core Refactor — NPA / NHA Alignment
A structural refactor of the core engine to bring Nem: Pet Alerts and its sister addon Nem: Healer Alerts into a near-identical layout. No gameplay behavior changes — same alerts, same triggers, same sounds, same display.
Why
The two addons grew side-by-side and accumulated stylistic drift — different section ordering, different database access patterns, different debouncing strategies, dead code on both sides. Future bug fixes and feature work were cheaper if both cores looked the same.
What changed inside
- Database access — every read and write inside the core now goes through
NPA.db, an alias set once when saved variables load. TheNemPetAlertsSVglobal only appears inInitDatabase(where it's necessary) and the/resethandler. Behavior is unchanged. - Event debouncing — added
ScheduleEvaluate(delay)with a pending-guard. The four scatteredC_Timer.After(0.1, Evaluate)calls in the event handler now route through it. Bursts of events (e.g. spec change firing three events in a row) coalesce into one re-evaluate instead of three. - Section ordering — file is reorganized into a canonical layout: license → upvalues → asset paths → class detection → spec registry → theme → libraries → sounds → fonts → defaults → utility → sound playback → pet utilities → spec helpers → tickers → display → apply → slot → evaluate → lock/unlock → activation → InitDatabase → test → slash → debug → options panel → OnLogin → events.
IsFullyImplementedmoved to sit immediately afterFindActiveModule, where it belongs.
Bug fix
CreateDisplaywas hardcoding"CENTER", UIParent, "CENTER"and ignoring the saveddb.point/db.relativePoint/db.relativeTofields. The frame still ended up in the right spot becauseApplyDisplaySettingsruns immediately after with the correct anchor, but the initial placement could flicker on login if the user had moved the frame to a non-center anchor. Now reads the saved anchor on creation.
Slash command cleanup
/npa offand/npa togglenow call the active module'sClearAllState()to fully reset alert state instead of just hiding the display.- The inline test-mode teardown that was duplicated in both
/offand/toggleis gone — those commands now callToggleTest()if test is active and let it own the cleanup.
Dead code removed
CORE_DEFAULTS.alertColors = {}—ActivateModulealways initializes this, the default was redundant.
Spec module contract
- The optional
Debug = function(self, db) endhook is now documented in the contract. Already used by some modules; now official.

