VanillaGuide+
v1.0.5 (2026-09-06)
Full Changelog Previous Releases
- Route waypoints through pluggable providers; guard guide-not-loaded state
Navigation.lua wrapped TomTom, Cartographer and MetaMap in one branching
MapPoint/ClearWaypoint pair, and callers gated on the addon globals directly
(StatusFrame, UpdateWaypoint). Adding pfQuest meant another branch in every
one of those places.
Replace that with a provider registry: { label, IsAvailable, Add, Clear },
taking a zone name plus 0-100 map coords. Callers now ask
GetWaypointProvider() instead of naming addons. Selection is auto (first
available, TomTom first as the only cross-zone arrow) or pinned via
db.char.waypointprovider; mapmetamap/mapbwp are gone, MetaMap BWP is its own
provider. ClearWaypoint clears every provider so switching leaves nothing
stale behind.
The pfQuest provider uses pfMap:AddNode with arrow = true, the meta flag
route.lua already reads to force a node into the route planner, then
route.SetTarget to pin the arrow to the guide step rather than the nearest
quest objective. The node texture is pfQuest's own img\fav so its layer is a
known 6 — SetTarget/IsTarget match on layer.
Options gets a cycle button in place of the two MetaMap checkboxes; DiagNav
lists providers and TestWaypoint no longer hardcodes TomTom.
Also fix a crash reachable independently of any of this: self.actions and
self.tags only exist after LoadGuide parses a guide, but GetObjectiveInfo,
GetObjectiveStatus and GetObjectiveTag indexed them unconditionally. Event
handlers reach these with no guide loaded — pfUI's libunitscan calling
TargetByName fired PLAYER_TARGET_CHANGED into the GETFLIGHTPOINT handler and
threw "attempt to index field `actions'". Guard the table, not just the step,
matching GetLootRequirement. ObjectivesFrame's ResetScrollbar (called from
the panel's OnShow) and UpdateOHPanel threw the same way on an unloaded
guide. - Update .pkgmeta
- Create .luarc.json
- Purge unused Deformat-2.0 and Gratuity-2.0 libs
Neither was ever called: the Deformat (DF) and Gratuity locals were
dead, Gratuity's FindDeformat (Deformat's only consumer) is never
invoked, and no other embedded lib depends on either. Also drop the
unused Dewdrop local D -- FuBarPlugin loads Dewdrop itself for the
menu, so the library stays; only our dead reference is removed. - Derive turtleRaces from C_CreatureInfo instead of hardcoding.