File Details
QuestMaster.zip
- R
- Mar 7, 2026
- 14.19 MB
- 9
- 5.5.3+3
- Classic + 3
File Name
QuestMaster.zip
Supported Versions
- 5.5.3
- 3.80.0
- 2.5.5
- 1.15.8
fixed some issues :)
1. DatabaseLoader.lua — Data lookups created new tables every time.
GetQuest(), GetNPC(), GetNPCSpawnLocations(), GetQuestObjectiveLocations(), etc., created new tables with each call. These were called hundreds of times per update cycle.
Fix: All results are now cached. The data is immutable (from the database), so it's safe to cache.
Fix: All results are now cached. 2. Arrow.lua — OnUpdate Hot Path (every 0.1s)
string.format("%.1f " .. L["KILOMETERS"]) generated new strings every frame.
AutoSelectBestWaypoint() (every 2.5s) had triple-nested loops that generated dozens of new waypoint tables per iteration.
pairs() generated iterator states using speed samples.
Fix: Pre-computed format strings, waypoint tables are reused, distance text is only updated when the value changes, fixed-range loop instead of pairs().
3. QuestTracker.lua — Closure creation per quest per update
UpdateQuestFrame() called SetScript() four times per quest — each call created a new closure that the garbage collector had to clean up. With 15 quests, this resulted in 60 closures per tracker update.
``` Fix: Event handlers are now defined as shared top-level functions. Additionally, sort comparators are defined once instead of as closures, and quest lists are reused instead of being regenerated.
4. QuestMaster.lua — HBD World-Coordinate Conversions
GetDistanceToPoint() called HBD:GetWorldCoordinatesFromZone() for each static target location on every call.
Fix: World coordinates for static locations are now cached.
Expected improvement: CPU performance reduced from ~20ms/s to <2ms/s, eliminating GC-related micro-stuttering.

