James D. Callahan III [07-02-10 - 06:11]
diff --git a/Frame.lua b/Frame.lua
index e3e2911..8cad5e2 100644
--- a/Frame.lua
+++ b/Frame.lua
@@ -2247,7 +2247,7 @@ do
-- First, check if this is a "modified" click, and react appropriately
if clicked_line.recipe_id and _G.IsModifierKeyDown() then
if _G.IsControlKeyDown() and _G.IsShiftKeyDown() then
- addon:AddWaypoint(clicked_line.recipe_id, clicked_line.acquire_id, clicked_line.location_id)
+ addon:AddWaypoint(clicked_line.recipe_id, clicked_line.acquire_id, clicked_line.location_id, clicked_line.npc_id)
elseif _G.IsShiftKeyDown() then
local itemID = private.recipe_list[clicked_line.recipe_id].item_id
@@ -2397,6 +2397,7 @@ do
local recipe_id = parent_entry.recipe_id
local acquire_id = parent_entry.acquire_id
local location_id = parent_entry.location_id
+ local npc_id = parent_entry.npc_id
if recipe_id then
entry.recipe_id = recipe_id
@@ -2409,6 +2410,10 @@ do
if location_id then
entry.location_id = location_id
end
+
+ if npc_id then
+ entry.npc_id = npc_id
+ end
else
addon:Debug("Attempting to parent an entry to itself.")
end
@@ -2730,6 +2735,7 @@ do
t.text = string.format("%s%s %s", PADDING, hide_type and "" or SetTextColor(CATEGORY_COLORS["trainer"], L["Trainer"])..":", name)
t.recipe_id = recipe_id
+ t.npc_id = id_num
entry_index = ListFrame:InsertEntry(t, parent_entry, entry_index, entry_type, true)
@@ -2739,6 +2745,7 @@ do
t = AcquireTable()
t.text = string.format("%s%s%s %s", PADDING, PADDING, hide_location and "" or SetTextColor(CATEGORY_COLORS["location"], trainer.location), coord_text)
t.recipe_id = recipe_id
+ t.npc_id = id_num
return ListFrame:InsertEntry(t, parent_entry, entry_index, entry_type, true)
end
@@ -2766,6 +2773,7 @@ do
hide_type and "" or SetTextColor(CATEGORY_COLORS["vendor"], L["Vendor"])..":", name,
type(quantity) == "number" and SetTextColor(BASIC_COLORS["white"], string.format(" (%d)", quantity)) or "")
t.recipe_id = recipe_id
+ t.npc_id = id_num
entry_index = ListFrame:InsertEntry(t, parent_entry, entry_index, entry_type, true)
@@ -2775,6 +2783,7 @@ do
t = AcquireTable()
t.text = string.format("%s%s%s %s", PADDING, PADDING, hide_location and "" or SetTextColor(CATEGORY_COLORS["location"], vendor.location), coord_text)
t.recipe_id = recipe_id
+ t.npc_id = id_num
return ListFrame:InsertEntry(t, parent_entry, entry_index, entry_type, true)
end
@@ -2791,6 +2800,7 @@ do
t.text = string.format("%s%s %s", PADDING, hide_type and "" or SetTextColor(CATEGORY_COLORS["mobdrop"], L["Mob Drop"])..":", SetTextColor(private.reputation_colors["hostile"], mob.name))
t.recipe_id = recipe_id
+ t.npc_id = id_num
entry_index = ListFrame:InsertEntry(t, parent_entry, entry_index, entry_type, true)
@@ -2800,6 +2810,7 @@ do
t = AcquireTable()
t.text = string.format("%s%s%s %s", PADDING, PADDING, hide_location and "" or SetTextColor(CATEGORY_COLORS["location"], mob.location), coord_text)
t.recipe_id = recipe_id
+ t.npc_id = id_num
return ListFrame:InsertEntry(t, parent_entry, entry_index, entry_type, true)
end
@@ -2869,12 +2880,14 @@ do
t.text = string.format("%s%s %s", PADDING, hide_type and "" or SetTextColor(CATEGORY_COLORS["reputation"], _G.REPUTATION)..":",
SetTextColor(CATEGORY_COLORS["repname"], private.reputation_list[rep_id].name))
t.recipe_id = recipe_id
+ t.npc_id = vendor_id
entry_index = ListFrame:InsertEntry(t, parent_entry, entry_index, entry_type, true)
t = AcquireTable()
t.text = PADDING .. PADDING .. faction_strings[rep_level] .. name
t.recipe_id = recipe_id
+ t.npc_id = vendor_id
entry_index = ListFrame:InsertEntry(t, parent_entry, entry_index, entry_type, true)
@@ -2890,6 +2903,7 @@ do
t = AcquireTable()
t.text = string.format("%s%s%s%s %s", PADDING, PADDING, PADDING, hide_location and "" or SetTextColor(CATEGORY_COLORS["location"], rep_vendor.location), coord_text)
t.recipe_id = recipe_id
+ t.npc_id = vendor_id
return ListFrame:InsertEntry(t, parent_entry, entry_index, entry_type, true)
end
diff --git a/Waypoint.lua b/Waypoint.lua
index f378e7e..b5ca25e 100644
--- a/Waypoint.lua
+++ b/Waypoint.lua
@@ -380,7 +380,7 @@ local maplist = {}
-- Expected result: Icons are added to the world map and mini-map.
-- Input: An optional recipe ID, acquire ID, and location ID.
-- Output: Points are added to the maps
-function addon:AddWaypoint(recipe_id, acquire_id, location_id)
+function addon:AddWaypoint(recipe_id, acquire_id, location_id, npc_id)
if not _G.TomTom and not _G.Cartographer_Waypoints then
return
end
@@ -408,23 +408,25 @@ function addon:AddWaypoint(recipe_id, acquire_id, location_id)
local recipe = recipe_list[recipe_id]
for acquire_type, acquire_info in pairs(recipe.acquire_data) do
- for id_num, id_info in pairs(acquire_info) do
- if not acquire_id or acquire_type == acquire_id then
- if acquire_type == A.REPUTATION then
- for rep_level, level_info in pairs(id_info) do
- for vendor_id in pairs(level_info) do
- local waypoint = GetWaypoint(acquire_type, vendor_id, recipe)
-
- if waypoint and (not location_id or waypoint.location == location_id) then
- maplist[waypoint] = recipe_id
+ if not acquire_id or acquire_type == acquire_id then
+ for id_num, id_info in pairs(acquire_info) do
+ if not npc_id or id_num == npc_id then
+ if acquire_type == A.REPUTATION then
+ for rep_level, level_info in pairs(id_info) do
+ for vendor_id in pairs(level_info) do
+ local waypoint = GetWaypoint(acquire_type, vendor_id, recipe)
+
+ if waypoint and (not location_id or waypoint.location == location_id) then
+ maplist[waypoint] = recipe_id
+ end
end
end
- end
- else
- local waypoint = GetWaypoint(acquire_type, id_num, recipe)
+ else
+ local waypoint = GetWaypoint(acquire_type, id_num, recipe)
- if waypoint and (not location_id or waypoint.location == location_id) then
- maplist[waypoint] = recipe_id
+ if waypoint and (not location_id or waypoint.location == location_id) then
+ maplist[waypoint] = recipe_id
+ end
end
end
end