Rendering/routing support for pfQuest-turtle's new party quest map
pins (addon = "PFPARTY"), which deliberately carry no meta.texture.
- UpdateNode gives an untextured PFPARTY node the existing "fav" star
texture instead of the default ring, tinted through the same
str2rgb/pfQuest_colors path as any other untextured spawn dot, so
it is recolorable via the same click as a normal spawn marker.
- Added a frame.updateAddon dirty-flag: a recycled pin frame moving
from one addon's untextured node to another's could otherwise keep
its previous shape if the two color keys happened to coincide.
- A PFPARTY node has no cluster pin the way the player's own quest
objectives get (that only happens inside SearchQuestID, tied to the
player's own quest log index), so it stays an ordinary un-clustered,
untextured layer-1 node with the World Map both open and closed and
would otherwise never satisfy any route-eligibility condition.
Ported route.lua's SetRawObjectiveCandidates (already used by
pfQuest-HDB for its own closed-map item objectives; the two route.lua
files are otherwise near-identical) and added the matching PFPARTY-
only raw-objective detection to both the closed- and open-map halves
of UpdateNodes, plus a third scan of the closed-map path for PFPARTY
nodes specifically -- the existing closed-map scan only ever visits
PFQUEST nodes, so without this the arrow only reflected party
progress for as long as the World Map happened to still be open.
Scoped to addon == "PFPARTY" as a positive requirement (not an
opt-out like pfQuest-HDB's version), so this cannot change how the
player's own quest objectives already route.
- The three existing route-eligibility sites (NodeClick, and both
UpdateNodes passes) and the generic world-unit mouseover tooltip
watcher (pfMap.tooltip's OnShow) gate on the new
showPartyQuestPinsRoutable config flag and skip PFPARTY respectively,
the latter because pfQuest-turtle's own tooltip hook already adds a
richer per-player breakdown to that same tooltip.
- ShowMapID: defer SetMapByID/UpdateNodes one frame on first show,
avoiding a nil GetCenter() crash while Blizzard's World Map frame
is still laying itself out.
- Reset the route draw-cache (lastDrawX/Y/lastDrawNode) when the
World Map opens, so a route built while it was hidden actually
redraws on the visible map instead of reusing hidden-canvas
coordinates.
- Add a REINDEX queue entry so accepting a quest that shifts other
quests' Quest Log index patches their cached qlogid in place
instead of a full delete-and-rebuild of their map nodes.
- ObjectiveNameMatches: tolerate a quest-log kill-objective name
being pluralized relative to the unit database entry (e.g. "Harvest
Watcher" vs "Harvest Watchers"), plus the sibling OBJECT_OBJECTIVE
tooltip branch for direct object objectives.
Ported and verified against pfQuest-HDB commits 36297fc, 0c6573c,
a97e307, and 621b52c; each gap was confirmed missing in this repo
before porting.
Nodes without valid coordinates never get a distance written by
UpdateDistances, so the auto-target tie-break added in 4654084 could
compare/add against a nil distance and crash. Guard that check, clear
the stale automaticTargetKey lock on Reset() so it can't outlive a
map/zone change, and make sortfunc nil-safe for the same reason.
Ported from the equivalent fixes already present in pfQuest-HDB.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>