WoWInterface SVN RecipeRadar

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 1 to Rev 2
    Reverse comparison

Rev 1 → Rev 2

trunk/RecipeRadar/Maps.lua New file
0,0 → 1,237
 
-- Maps.lua: generic mapping code and map "base class"
-- $Id: Maps.lua 1022 2008-03-07 20:57:50Z jnmiller $
 
-- Initializes the state of the map overlays and settings.
function RecipeRadar_Maps_Init()
 
RecipeRadar_Minimap_Init()
RecipeRadar_Worldmap_Init()
 
RecipeRadar_MappedVendors = { }
 
end
 
-- find the next unused icon; we just check minimap icons since
-- world/mini icons should always correspond
function RecipeRadar_Maps_FindNextID()
 
for i = 1, RECIPERADAR_MAPPED_VENDORS_MAX do
if (not _G["RecipeRadarMinimapIcon" .. i].IsMapped) then
return i
end
end
 
return nil
 
end
 
-- Add the given vendor to the list of mapped vendors.
function RecipeRadar_Maps_AddVendor(vendor, region)
 
if (vendor.IsMapped) then return end -- vendor is already mapped
if (vendor.IsFiltered) then return end -- vendor shouldn't be mapped
 
local continent = RecipeRadar_RegionData[region].Continent
if (continent == 0) then return end -- instance vendor
 
if (not vendor.Coordinates) then
RecipeRadar_Print("ASSERT FAILED: " .. vendor.Name ..
" has no coordinates.")
return
end
 
local id = RecipeRadar_Maps_FindNextID()
if (not id) then return end
 
RecipeRadar_Worldmap_AddVendor(id, vendor, region, continent)
RecipeRadar_Minimap_AddVendor(id, vendor, region)
 
RecipeRadar_MappedVendors[vendor.Name] = id
vendor.IsMapped = true
 
end
 
-- Unmap the vendor.
function RecipeRadar_Maps_RemoveVendor(vendor)
 
local id = RecipeRadar_MappedVendors[vendor.Name]
 
RecipeRadar_Minimap_RemoveVendor(id)
RecipeRadar_Worldmap_RemoveVendor(id)
 
RecipeRadar_MappedVendors[vendor.Name] = nil
vendor.IsMapped = false
 
end
 
-- Creates and displays the tooltip that displays on mouseover for all
-- of our maps - minimap, worldmap and our custom Recipe Radar map.
-- tooltip is the tooltip to draw (eg. GameTooltip), and frame is the
-- owner button.
function RecipeRadar_Maps_SetTooltip(tooltip, frame)
 
local line1, line2 = RecipeRadar_GetColoredTeamString(
frame.Vendor.Team, frame.Vendor.Name)
local anchor = "ANCHOR_BOTTOMLEFT"
 
if (#frame.Vendor.Recipes == 1) then
line2 = RRS("1 recipe")
else
line2 = string.format(RRS("%d recipes"), #frame.Vendor.Recipes)
end
 
local count = RecipeRadar_CountLearnableRecipes(frame.Vendor.Recipes)
line2 = line2 .. " " .. format(TEXT(PARENS_TEMPLATE),
format(RRS("%d learnable"), count))
 
-- make sure our tooltip doesn't hit the screen edge
if (frame:GetLeft() < 200) then
anchor = "ANCHOR_RIGHT"
end
 
tooltip:SetOwner(frame, anchor)
tooltip:SetText(line1)
tooltip:AddLine(line2)
if (frame.Vendor.Notes and frame.Vendor.Notes ~= "") then
tooltip:AddLine(RecipeRadar_FormatVendorNote(frame.Vendor.Notes, true))
end
tooltip:Show()
 
end
 
-- OnLoad event handler for the right-click context menu for map buttons.
function RecipeRadar_Maps_ContextMenuOnLoad(self)
 
RecipeRadar_ContextMenuGlobal = { }
UIDropDownMenu_Initialize(self, RecipeRadar_Maps_ContextMenuInit, "MENU")
 
end
 
-- Initialization routine for the right-click context menu for map buttons.
function RecipeRadar_Maps_ContextMenuInit()
 
local item
 
-- putting in the vendor's name as the title of the popup
if (RecipeRadar_ContextMenuGlobal.Vendor) then
item = { }
item.text = RecipeRadar_ContextMenuGlobal.Vendor.Name
item.isTitle = 1
item.notCheckable = 1
UIDropDownMenu_AddButton(item)
end
 
item = { }
item.text = RRS("Unmap Vendor")
item.value = "unmap"
item.notCheckable = 1
item.func = RecipeRadar_Maps_ContextMenuOnClick
UIDropDownMenu_AddButton(item)
 
item = { }
item.text = CANCEL
item.notCheckable = 1
item.func = RecipeRadar_Maps_ContextMenuOnClick
UIDropDownMenu_AddButton(item)
 
end
 
-- OnClick event handler for the right-click context menu for map buttons.
function RecipeRadar_Maps_ContextMenuOnClick(self)
 
if (self.value == "unmap") then
RecipeRadar_Maps_RemoveVendor(RecipeRadar_ContextMenuGlobal.Vendor)
RecipeRadar_FrameUpdate()
end
 
end
 
-- Changes local (region map) coordinates to absolute coordinates.
function RecipeRadar_Maps_LocalToAbsolute(local_x, local_y, region)
 
local region = RecipeRadar_RegionData[region]
if (not region) then return end
 
local absolute_x = local_x * region.MapScale + region.MapOffset.x
local absolute_y = local_y * region.MapScale + region.MapOffset.y
 
return absolute_x, absolute_y
 
end
 
-- Changes local (region map) coordinates to absolute coordinates.
function RecipeRadar_Maps_LocalToAbsoluteTable(local_coords, region)
 
local region = RecipeRadar_RegionData[region]
if (not region) then return end
 
local absolute = { }
absolute.x = local_coords.x * region.MapScale + region.MapOffset.x
absolute.y = local_coords.y * region.MapScale + region.MapOffset.y
 
return absolute
 
end
 
-- Map constants (from MapNotes).
RecipeRadar_MapData = {
 
IndoorZoomRatio = {
[0] = 1.565,
[1] = 1.687,
[2] = 1.882,
[3] = 2.210,
[4] = 2.575,
[5] = 2.651,
},
 
Worldmap = {
[1] = {
Scale = 0.815775262,
Offset = { x = -0.185568684, y = 0.064012977 },
},
[2] = {
Scale = 0.790967532,
Offset = { x = 0.371931204, y = 0.081458069 },
},
[3] = {
Scale = 0, -- not needed
Offset = { x = 0, y = 0 },
},
},
 
[1] = {
Scale = { -- continent scale rates
[0] = { x = 11016.6, y = 7399.9 },
[1] = { x = 12897.3, y = 8638.1 },
[2] = { x = 15478.8, y = 10368.0 },
[3] = { x = 19321.8, y = 12992.7 },
[4] = { x = 25650.4, y = 17253.2 },
[5] = { x = 38787.7, y = 26032.1 },
}
},
 
[2] = {
Scale = { -- continent scale rates
[0] = { x = 10448.3, y = 7072.7 },
[1] = { x = 12160.5, y = 8197.8 },
[2] = { x = 14703.1, y = 9825.0 },
[3] = { x = 18568.7, y = 12472.2 },
[4] = { x = 24390.3, y = 15628.5 },
[5] = { x = 37012.2, y = 25130.6 },
},
},
 
[3] = {
Scale = { -- continent scale rates
[0] = { x = 5194.2, y = 3516.2 },
[1] = { x = 6059.8, y = 4102.2 },
[2] = { x = 7271.8, y = 4922.7 },
[3] = { x = 9089.8, y = 6153.3 },
[4] = { x = 12119.7, y = 8204.5 },
[5] = { x = 18179.5, y = 12306.7 },
},
},
 
}
trunk/RecipeRadar/RecipeData.lua New file
0,0 → 1,10696
 
-- RecipeData.lua: all recipes organized by profession
-- Auto generated on 8/11/2009 8:00:22 PM
 
RecipeRadar_RecipeData = {
 
 
[RRS("Alchemy")] = {
Recipes = {
{
ID = 13478,
Type = RRS("Alchemy"),
Skill = 265,
Cost = 13000,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Soolie Berryfizz"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Kor'geld"), Team = "Horde" },
},
},
{
ID = 5640,
Type = RRS("Alchemy"),
Skill = 60,
Cost = 100,
Locations = {
{ Region = RRS("Westfall"), Vendor = RRS("Defias Profiteer"), Team = "Neutral" },
{ Region = RRS("Loch Modan"), Vendor = RRS("Xandar Goodbeard"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Hagrus"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Ranik"), Team = "Neutral" },
},
},
{
ID = 5642,
Type = RRS("Alchemy"),
Skill = 150,
Cost = 1800,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Soolie Berryfizz"), Team = "Alliance" },
{ Region = RRS("Darnassus"), Vendor = RRS("Ulthir"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Kor'geld"), Team = "Horde" },
},
},
{
ID = 5643,
Type = RRS("Alchemy"),
Skill = 175,
Cost = 2000,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Ulthir"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Hagrus"), Team = "Horde" },
},
},
{
ID = 6053,
Type = RRS("Alchemy"),
Skill = 100,
Cost = 800,
Locations = {
{ Region = RRS("Loch Modan"), Vendor = RRS("Xandar Goodbeard"), Team = "Alliance" },
{ Region = RRS("The Barrens"), Vendor = RRS("Hula'mahi"), Team = "Horde" },
{ Region = RRS("Duskwood"), Vendor = RRS("Kzixx"), Team = "Neutral" },
},
},
{
ID = 6055,
Type = RRS("Alchemy"),
Skill = 165,
Cost = 1500,
Locations = {
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Nandar Branson"), Team = "Alliance" },
{ Region = RRS("Stonetalon Mountains"), Vendor = RRS("Jeeda"), Team = "Horde" },
},
},
{
ID = 6056,
Type = RRS("Alchemy"),
Skill = 190,
Cost = 2000,
Locations = {
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Drovnar Strongbrew"), Team = "Alliance" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Glyx Brewright"), Team = "Neutral" },
},
},
{
ID = 6057,
Type = RRS("Alchemy"),
Skill = 190,
Cost = 2000,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Logannas"), Team = "Alliance" },
{ Region = RRS("Feralas"), Vendor = RRS("Bronk"), Team = "Horde" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Glyx Brewright"), Team = "Neutral" },
{ Region = RRS("Tanaris"), Vendor = RRS("Alchemist Pestlezugg"), Team = "Neutral" },
},
},
{
ID = 9300,
Type = RRS("Alchemy"),
Skill = 250,
Cost = 10000,
Locations = {
{ Region = RRS("Blasted Lands"), Vendor = RRS("Nina Lightbrew"), Team = "Alliance" },
{ Region = RRS("Swamp of Sorrows"), Vendor = RRS("Rartar"), Team = "Horde" },
},
},
{
ID = 9301,
Type = RRS("Alchemy"),
Skill = 250,
Cost = 10000,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Maria Lumere"), Team = "Alliance" },
{ Region = RRS("Undercity"), Vendor = RRS("Algernon"), Team = "Horde" },
},
},
{
ID = 9302,
Type = RRS("Alchemy"),
Skill = 245,
Cost = 9000,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Logannas"), Team = "Alliance" },
{ Region = RRS("Feralas"), Vendor = RRS("Bronk"), Team = "Horde" },
},
},
{
ID = 6068,
Type = RRS("Alchemy"),
Skill = 165,
Cost = 1500,
Locations = {
{ Region = RRS("Thousand Needles"), Vendor = RRS("Montarr"), Team = "Horde" },
{ Region = RRS("Duskwood"), Vendor = RRS("Bliztik"), Team = "Neutral" },
},
},
{
ID = 6054,
Type = RRS("Alchemy"),
Skill = 135,
Cost = 900,
Locations = {
{ Region = RRS("Ashenvale"), Vendor = RRS("Harklan Moongrove"), Team = "Alliance" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Christoph Jeffcoat"), Team = "Horde" },
},
},
{
ID = 14634,
Type = RRS("Alchemy"),
Skill = 200,
Cost = 2500,
Locations = {
{ Region = RRS("Alterac Mountains"), Vendor = RRS("Bro'kin"), Team = "Neutral" },
},
},
{
ID = 9303,
Type = RRS("Alchemy"),
Skill = 225,
Cost = 8000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alchemist Pestlezugg"), Team = "Neutral" },
},
},
{
ID = 12958,
Type = RRS("Alchemy"),
Skill = 275,
Cost = 50000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alchemist Pestlezugg"), Team = "Neutral" },
},
},
{
ID = 9304,
Type = RRS("Alchemy"),
Skill = 225,
Cost = 8000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alchemist Pestlezugg"), Team = "Neutral" },
},
},
{
ID = 9305,
Type = RRS("Alchemy"),
Skill = 225,
Cost = 8000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alchemist Pestlezugg"), Team = "Neutral" },
},
},
{
ID = 13501,
Type = RRS("Alchemy"),
Skill = 295,
Cost = 30000,
Locations = {
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Magnus Frostwake"), Team = "Neutral" },
},
},
{
ID = 13483,
Type = RRS("Alchemy"),
Skill = 275,
Cost = 15000,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Plugger Spazzring"), Team = "Neutral" },
},
},
{
ID = 13482,
Type = RRS("Alchemy"),
Skill = 275,
Cost = 15000,
Faction = RRS("Argent Dawn"),
Level = 6,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Argent Quartermaster Hasana"), Team = "Neutral" },
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Argent Quartermaster Lightspark"), Team = "Neutral" },
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Quartermaster Miranda Breechlock"), Team = "Neutral" },
},
},
{
ID = 13484,
Type = RRS("Alchemy"),
Skill = 275,
Cost = 15000,
Faction = RRS("Timbermaw Hold"),
Level = 5,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 13485,
Type = RRS("Alchemy"),
Skill = 275,
Cost = 15000,
Locations = {
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Magnus Frostwake"), Team = "Neutral" },
},
},
{
ID = 20013,
Type = RRS("Alchemy"),
Skill = 285,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 8,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 20011,
Type = RRS("Alchemy"),
Skill = 275,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 7,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 20014,
Type = RRS("Alchemy"),
Skill = 290,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 6,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 20012,
Type = RRS("Alchemy"),
Skill = 275,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 5,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 20761,
Type = RRS("Alchemy"),
Skill = 300,
Cost = 120000,
Faction = RRS("Thorium Brotherhood"),
Level = 5,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 22902,
Type = RRS("Alchemy"),
Skill = 320,
Cost = 40000,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Haalrun"), Team = "Alliance" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Seer Janidi"), Team = "Horde" },
},
},
{
ID = 22909,
Type = RRS("Alchemy"),
Skill = 345,
Cost = 50000,
Locations = {
{ Region = RRS("Blade's Edge Mountains"), Vendor = RRS("Daga Ramba"), Team = "Horde" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Haalrun"), Team = "Alliance" },
},
},
{
ID = 22907,
Type = RRS("Alchemy"),
Skill = 340,
Cost = 50000,
Locations = {
{ Region = RRS("Blade's Edge Mountains"), Vendor = RRS("Daga Ramba"), Team = "Horde" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Haalrun"), Team = "Alliance" },
},
},
{
ID = 22908,
Type = RRS("Alchemy"),
Skill = 345,
Cost = 60000,
Faction = RRS("The Scryers"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 22910,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 80000,
Faction = RRS("Lower City"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nakodu"), Team = "Neutral" },
},
},
{
ID = 31357,
Type = RRS("Alchemy"),
Skill = 300,
Cost = 40000,
Faction = RRS("Lower City"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nakodu"), Team = "Neutral" },
},
},
{
ID = 31356,
Type = RRS("Alchemy"),
Skill = 300,
Cost = 40000,
Faction = RRS("Cenarion Expedition"),
Level = 8,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 31355,
Type = RRS("Alchemy"),
Skill = 300,
Cost = 40000,
Faction = RRS("Keepers of Time"),
Level = 8,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alurmi"), Team = "Neutral" },
},
},
{
ID = 31354,
Type = RRS("Alchemy"),
Skill = 300,
Cost = 40000,
Faction = RRS("The Sha'tar"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 22906,
Type = RRS("Alchemy"),
Skill = 335,
Cost = 30,
Faction = RRS("Sporeggar"),
Level = 8,
Notes = RRS("CostItem: 24245"),
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Mycah"), Team = "Neutral" },
},
},
{
ID = 22915,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Sha'tar"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 22916,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 25,
Faction = RRS("Sporeggar"),
Level = 7,
Notes = RRS("CostItem: 24245"),
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Mycah"), Team = "Neutral" },
},
},
{
ID = 30443,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 80000,
Faction = RRS("Kurenai"),
Level = 7,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Trader Narasu"), Team = "Alliance" },
},
},
{
ID = 23574,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 80000,
Locations = {
{ Region = RRS("The Exodar"), Vendor = RRS("Altaa"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Melaris"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Skreah"), Team = "Neutral" },
},
},
{
ID = 22918,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 80000,
Faction = RRS("Cenarion Expedition"),
Level = 7,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 13517,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Sha'tar"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 22900,
Type = RRS("Alchemy"),
Skill = 305,
Cost = 30000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Alchemist Gribble"), Team = "Alliance" },
{ Region = RRS("The Exodar"), Vendor = RRS("Altaa"), Team = "Alliance" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Apothecary Antonivich"), Team = "Horde" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Melaris"), Team = "Horde" },
},
},
{
ID = 22905,
Type = RRS("Alchemy"),
Skill = 330,
Cost = 50000,
Faction = RRS("Honor Hold"),
Level = 6,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 24001,
Type = RRS("Alchemy"),
Skill = 330,
Cost = 50000,
Faction = RRS("Thrallmar"),
Level = 6,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 22922,
Type = RRS("Alchemy"),
Skill = 360,
Cost = 100000,
Faction = RRS("Cenarion Expedition"),
Level = 8,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 22901,
Type = RRS("Alchemy"),
Skill = 315,
Cost = 30000,
Locations = {
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Leeli Longhaggle"), Team = "Alliance" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Seer Janidi"), Team = "Horde" },
},
},
{
ID = 25869,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 80000,
Faction = RRS("Cenarion Expedition"),
Level = 6,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 29232,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 80000,
Faction = RRS("Thrallmar"),
Level = 6,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 25870,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 80000,
Faction = RRS("Honor Hold"),
Level = 6,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 22917,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Mag'har"),
Level = 7,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Provisioner Nasela"), Team = "Horde" },
},
},
{
ID = 22911,
Type = RRS("Alchemy"),
Skill = 350,
Cost = 50000,
Locations = {
{ Region = RRS("Blade's Edge Mountains"), Vendor = RRS("Daga Ramba"), Team = "Horde" },
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Leeli Longhaggle"), Team = "Alliance" },
},
},
{
ID = 32070,
Type = RRS("Alchemy"),
Skill = 320,
Cost = 40000,
Faction = RRS("Cenarion Expedition"),
Level = 6,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 32071,
Type = RRS("Alchemy"),
Skill = 330,
Cost = 2,
Notes = RRS("CostItem: 26044"),
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Quartermaster Davian Vaclav"), Team = "Alliance" },
{ Region = RRS("Nagrand"), Vendor = RRS("Quartermaster Jaffrey Noreliqe"), Team = "Horde" },
},
},
{
ID = 33209,
Type = RRS("Alchemy"),
Skill = 375,
Cost = 40000,
Faction = RRS("The Violet Eye"),
Level = 6,
Locations = {
{ Region = RRS("Deadwind Pass"), Vendor = RRS("Apprentice Darius"), Team = "Neutral" },
},
},
{
ID = 35755,
Type = RRS("Alchemy"),
Skill = 375,
Cost = 250000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35752,
Type = RRS("Alchemy"),
Skill = 375,
Cost = 250000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35754,
Type = RRS("Alchemy"),
Skill = 375,
Cost = 250000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35753,
Type = RRS("Alchemy"),
Skill = 375,
Cost = 250000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
},
},
 
[RRS("Blacksmithing")] = {
Recipes = {
{
ID = 12162,
Type = RRS("Blacksmithing"),
Skill = 160,
Cost = 3000,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kaita Deepforge"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Sumi"), Team = "Horde" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Jutak"), Team = "Neutral" },
},
},
{
ID = 12164,
Type = RRS("Blacksmithing"),
Skill = 185,
Cost = 4400,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Vharr"), Team = "Horde" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Jaquilina Dramet"), Team = "Neutral" },
},
},
{
ID = 7995,
Type = RRS("Blacksmithing"),
Skill = 215,
Cost = 6000,
Locations = {
{ Region = RRS("The Hinterlands"), Vendor = RRS("Harggan"), Team = "Alliance" },
{ Region = RRS("Swamp of Sorrows"), Vendor = RRS("Gharash"), Team = "Horde" },
},
},
{
ID = 10858,
Type = RRS("Blacksmithing"),
Skill = 155,
Cost = 3000,
Locations = {
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Jannos Ironwill"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Muuran"), Team = "Horde" },
{ Region = RRS("Badlands"), Vendor = RRS("Jazzrik"), Team = "Neutral" },
{ Region = RRS("Dun Morogh"), Vendor = RRS("High Admiral \"Shelly\" Jorrik"), Team = "Neutral" },
},
},
{
ID = 6047,
Type = RRS("Blacksmithing"),
Skill = 190,
Cost = 4400,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Krinkle Goodsteel"), Team = "Neutral" },
},
},
{
ID = 12163,
Type = RRS("Blacksmithing"),
Skill = 180,
Cost = 4400,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Zarena Cromwind"), Team = "Neutral" },
},
},
{
ID = 8030,
Type = RRS("Blacksmithing"),
Skill = 255,
Cost = 10000,
Locations = {
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Magnus Frostwake"), Team = "Neutral" },
},
},
{
ID = 12823,
Type = RRS("Blacksmithing"),
Skill = 280,
Cost = 20000,
Locations = {
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Magnus Frostwake"), Team = "Neutral" },
},
},
{
ID = 12819,
Type = RRS("Blacksmithing"),
Skill = 275,
Cost = 16000,
Locations = {
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Magnus Frostwake"), Team = "Neutral" },
},
},
{
ID = 12703,
Type = RRS("Blacksmithing"),
Skill = 295,
Cost = 40000,
Locations = {
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Magnus Frostwake"), Team = "Neutral" },
},
},
{
ID = 19208,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 70000,
Faction = RRS("Thorium Brotherhood"),
Level = 7,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19209,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 70000,
Faction = RRS("Thorium Brotherhood"),
Level = 8,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19211,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 120000,
Faction = RRS("Thorium Brotherhood"),
Level = 8,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19210,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 120000,
Faction = RRS("Thorium Brotherhood"),
Level = 8,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19212,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 120000,
Faction = RRS("Thorium Brotherhood"),
Level = 8,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 17051,
Type = RRS("Blacksmithing"),
Skill = 295,
Cost = 70000,
Faction = RRS("Thorium Brotherhood"),
Level = 5,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 17060,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 220000,
Faction = RRS("Thorium Brotherhood"),
Level = 8,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19207,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 80000,
Faction = RRS("Thorium Brotherhood"),
Level = 7,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19206,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 60000,
Faction = RRS("Thorium Brotherhood"),
Level = 7,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 17052,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 180000,
Faction = RRS("Thorium Brotherhood"),
Level = 8,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 17059,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 220000,
Faction = RRS("Thorium Brotherhood"),
Level = 6,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 20040,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 80000,
Faction = RRS("Thorium Brotherhood"),
Level = 8,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 17049,
Type = RRS("Blacksmithing"),
Skill = 295,
Cost = 90000,
Faction = RRS("Thorium Brotherhood"),
Level = 6,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 17053,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 200000,
Faction = RRS("Thorium Brotherhood"),
Level = 7,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19202,
Type = RRS("Blacksmithing"),
Skill = 290,
Cost = 22000,
Faction = RRS("Timbermaw Hold"),
Level = 6,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 19204,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 40000,
Faction = RRS("Timbermaw Hold"),
Level = 7,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 19203,
Type = RRS("Blacksmithing"),
Skill = 290,
Cost = 22000,
Faction = RRS("Argent Dawn"),
Level = 6,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Argent Quartermaster Hasana"), Team = "Neutral" },
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Argent Quartermaster Lightspark"), Team = "Neutral" },
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Quartermaster Miranda Breechlock"), Team = "Neutral" },
},
},
{
ID = 19205,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 40000,
Faction = RRS("Argent Dawn"),
Level = 7,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Argent Quartermaster Hasana"), Team = "Neutral" },
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Argent Quartermaster Lightspark"), Team = "Neutral" },
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Quartermaster Miranda Breechlock"), Team = "Neutral" },
},
},
{
ID = 19781,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 5,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19780,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 6,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19779,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 7,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19778,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 5,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19777,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 6,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19776,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 7,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 22209,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 5,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Vargus"), Team = "Neutral" },
},
},
{
ID = 22214,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 6,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Vargus"), Team = "Neutral" },
},
},
{
ID = 22766,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 7,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Vargus"), Team = "Neutral" },
},
},
{
ID = 22767,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 6,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Vargus"), Team = "Neutral" },
},
},
{
ID = 22768,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 5,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Vargus"), Team = "Neutral" },
},
},
{
ID = 22219,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 7,
Locations = {
{ Region = RRS("Ruins of Ahn'Qiraj"), Vendor = RRS("Lieutenant General Andorov"), Team = "Neutral" },
},
},
{
ID = 22221,
Type = RRS("Blacksmithing"),
Skill = 300,
Cost = 80000,
Faction = RRS("Cenarion Circle"),
Level = 8,
Locations = {
{ Region = RRS("Ruins of Ahn'Qiraj"), Vendor = RRS("Lieutenant General Andorov"), Team = "Neutral" },
},
},
{
ID = 31393,
Type = RRS("Blacksmithing"),
Skill = 375,
Cost = 240000,
Faction = RRS("The Violet Eye"),
Level = 6,
Locations = {
{ Region = RRS("Karazhan"), Vendor = RRS("Koren"), Team = "Neutral" },
},
},
{
ID = 31395,
Type = RRS("Blacksmithing"),
Skill = 375,
Cost = 240000,
Faction = RRS("The Violet Eye"),
Level = 6,
Locations = {
{ Region = RRS("Karazhan"), Vendor = RRS("Koren"), Team = "Neutral" },
},
},
{
ID = 31394,
Type = RRS("Blacksmithing"),
Skill = 375,
Cost = 240000,
Faction = RRS("The Violet Eye"),
Level = 7,
Locations = {
{ Region = RRS("Karazhan"), Vendor = RRS("Koren"), Team = "Neutral" },
},
},
{
ID = 31390,
Type = RRS("Blacksmithing"),
Skill = 375,
Cost = 240000,
Faction = RRS("Cenarion Expedition"),
Level = 8,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 31392,
Type = RRS("Blacksmithing"),
Skill = 375,
Cost = 240000,
Faction = RRS("Cenarion Expedition"),
Level = 7,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 31391,
Type = RRS("Blacksmithing"),
Skill = 375,
Cost = 240000,
Faction = RRS("Cenarion Expedition"),
Level = 7,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 23596,
Type = RRS("Blacksmithing"),
Skill = 340,
Cost = 60000,
Locations = {
{ Region = RRS("Shadowmoon Valley"), Vendor = RRS("Krek Cragcrush"), Team = "Horde" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Loolruna"), Team = "Alliance" },
},
},
{
ID = 23591,
Type = RRS("Blacksmithing"),
Skill = 330,
Cost = 40000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Aaron Hollman"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Arras"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Eriden"), Team = "Horde" },
},
},
{
ID = 23592,
Type = RRS("Blacksmithing"),
Skill = 330,
Cost = 40000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Aaron Hollman"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Arras"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Eriden"), Team = "Horde" },
},
},
{
ID = 23590,
Type = RRS("Blacksmithing"),
Skill = 325,
Cost = 40000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Aaron Hollman"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Arras"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Eriden"), Team = "Horde" },
},
},
{
ID = 23594,
Type = RRS("Blacksmithing"),
Skill = 335,
Cost = 60000,
Locations = {
{ Region = RRS("Shadowmoon Valley"), Vendor = RRS("Krek Cragcrush"), Team = "Horde" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Loolruna"), Team = "Alliance" },
},
},
{
ID = 23595,
Type = RRS("Blacksmithing"),
Skill = 335,
Cost = 60000,
Locations = {
{ Region = RRS("Shadowmoon Valley"), Vendor = RRS("Krek Cragcrush"), Team = "Horde" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Loolruna"), Team = "Alliance" },
},
},
{
ID = 23593,
Type = RRS("Blacksmithing"),
Skill = 335,
Cost = 40000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Aaron Hollman"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Arras"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Eriden"), Team = "Horde" },
},
},
{
ID = 25846,
Type = RRS("Blacksmithing"),
Skill = 350,
Cost = 40000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Aaron Hollman"), Team = "Neutral" },
},
},
{
ID = 23618,
Type = RRS("Blacksmithing"),
Skill = 350,
Cost = 60000,
Faction = RRS("Cenarion Expedition"),
Level = 6,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 28632,
Type = RRS("Blacksmithing"),
Skill = 350,
Cost = 60000,
Faction = RRS("Cenarion Expedition"),
Level = 6,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 23597,
Type = RRS("Blacksmithing"),
Skill = 355,
Cost = 60000,
Faction = RRS("The Scryers"),
Level = 5,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 23598,
Type = RRS("Blacksmithing"),
Skill = 355,
Cost = 60000,
Faction = RRS("The Scryers"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 23599,
Type = RRS("Blacksmithing"),
Skill = 360,
Cost = 60000,
Faction = RRS("The Scryers"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 23600,
Type = RRS("Blacksmithing"),
Skill = 365,
Cost = 80000,
Faction = RRS("The Scryers"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 25847,
Type = RRS("Blacksmithing"),
Skill = 360,
Cost = 120000,
Locations = {
{ Region = RRS("Shadowmoon Valley"), Vendor = RRS("Mari Stonehand"), Team = "Alliance" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Rohok"), Team = "Horde" },
},
},
{
ID = 24002,
Type = RRS("Blacksmithing"),
Skill = 360,
Cost = 60000,
Faction = RRS("Thrallmar"),
Level = 8,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 23619,
Type = RRS("Blacksmithing"),
Skill = 360,
Cost = 60000,
Faction = RRS("Honor Hold"),
Level = 8,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 23601,
Type = RRS("Blacksmithing"),
Skill = 350,
Cost = 60000,
Faction = RRS("The Aldor"),
Level = 5,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 23604,
Type = RRS("Blacksmithing"),
Skill = 365,
Cost = 80000,
Faction = RRS("The Aldor"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 23603,
Type = RRS("Blacksmithing"),
Skill = 360,
Cost = 60000,
Faction = RRS("The Aldor"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 23602,
Type = RRS("Blacksmithing"),
Skill = 355,
Cost = 60000,
Faction = RRS("The Aldor"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 25526,
Type = RRS("Blacksmithing"),
Skill = 350,
Cost = 60000,
Faction = RRS("Cenarion Expedition"),
Level = 6,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 23638,
Type = RRS("Blacksmithing"),
Skill = 340,
Cost = 60000,
Locations = {
{ Region = RRS("Shadowmoon Valley"), Vendor = RRS("Mari Stonehand"), Team = "Alliance" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Rohok"), Team = "Horde" },
},
},
{
ID = 32442,
Type = RRS("Blacksmithing"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 5,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32444,
Type = RRS("Blacksmithing"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 5,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32443,
Type = RRS("Blacksmithing"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 6,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32441,
Type = RRS("Blacksmithing"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 6,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 44937,
Type = RRS("Blacksmithing"),
Skill = 450,
Cost = 150000,
Faction = RRS("Alliance Vanguard"),
Level = 8,
Locations = {
{ Region = RRS("Howling Fjord"), Vendor = RRS("Logistics Officer Brighton"), Team = "Alliance" },
{ Region = RRS("Borean Tundra"), Vendor = RRS("Logistics Officer Silverstone"), Team = "Alliance" },
},
},
{
ID = 44938,
Type = RRS("Blacksmithing"),
Skill = 450,
Cost = 150000,
Faction = RRS("Horde Expedition"),
Level = 8,
Locations = {
{ Region = RRS("Borean Tundra"), Vendor = RRS("Gara Skullcrush"), Team = "Horde" },
{ Region = RRS("Howling Fjord"), Vendor = RRS("Sebastian Crane"), Team = "Horde" },
},
},
},
},
 
[RRS("Enchanting")] = {
Recipes = {
{
ID = 6349,
Type = RRS("Enchanting"),
Skill = 100,
Cost = 500,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Tilli Thistlefuzz"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Kithas"), Team = "Horde" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Leo Sarn"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Nata Dawnstrider"), Team = "Horde" },
},
},
{
ID = 11223,
Type = RRS("Enchanting"),
Skill = 235,
Cost = 5800,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Mythrin'dir"), Team = "Alliance" },
{ Region = RRS("Swamp of Sorrows"), Vendor = RRS("Banalash"), Team = "Horde" },
},
},
{
ID = 11163,
Type = RRS("Enchanting"),
Skill = 170,
Cost = 3000,
Locations = {
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Micha Yance"), Team = "Alliance" },
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Keena"), Team = "Horde" },
},
},
{
ID = 11101,
Type = RRS("Enchanting"),
Skill = 140,
Cost = 2500,
Locations = {
{ Region = RRS("Ashenvale"), Vendor = RRS("Dalria"), Team = "Alliance" },
{ Region = RRS("Stonetalon Mountains"), Vendor = RRS("Kulwia"), Team = "Horde" },
},
},
{
ID = 11039,
Type = RRS("Enchanting"),
Skill = 110,
Cost = 800,
Locations = {
{ Region = RRS("Ashenvale"), Vendor = RRS("Dalria"), Team = "Alliance" },
{ Region = RRS("Stonetalon Mountains"), Vendor = RRS("Kulwia"), Team = "Horde" },
},
},
{
ID = 16217,
Type = RRS("Enchanting"),
Skill = 265,
Cost = 12000,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Mythrin'dir"), Team = "Alliance" },
{ Region = RRS("Undercity"), Vendor = RRS("Daniel Bartlett"), Team = "Horde" },
},
},
{
ID = 6377,
Type = RRS("Enchanting"),
Skill = 125,
Cost = 1000,
Locations = {
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Nata Dawnstrider"), Team = "Horde" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Zixil"), Team = "Neutral" },
},
},
{
ID = 6346,
Type = RRS("Enchanting"),
Skill = 80,
Cost = 400,
Locations = {
{ Region = RRS("Orgrimmar"), Vendor = RRS("Kithas"), Team = "Horde" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Lilly"), Team = "Horde" },
},
},
{
ID = 16221,
Type = RRS("Enchanting"),
Skill = 275,
Cost = 16000,
Locations = {
{ Region = RRS("Winterspring"), Vendor = RRS("Qia"), Team = "Neutral" },
},
},
{
ID = 16224,
Type = RRS("Enchanting"),
Skill = 285,
Cost = 20000,
Locations = {
{ Region = RRS("Moonglade"), Vendor = RRS("Lorelae Wintersong"), Team = "Neutral" },
},
},
{
ID = 16243,
Type = RRS("Enchanting"),
Skill = 290,
Cost = 22000,
Locations = {
{ Region = RRS("Moonglade"), Vendor = RRS("Lorelae Wintersong"), Team = "Neutral" },
},
},
{
ID = 20758,
Type = RRS("Enchanting"),
Skill = 45,
Cost = 500,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Kania"), Team = "Neutral" },
{ Region = RRS("Darnassus"), Vendor = RRS("Vaean"), Team = "Alliance" },
{ Region = RRS("Stormwind City"), Vendor = RRS("Jessara Cordell"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Leo Sarn"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Nata Dawnstrider"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Thaddeus Webb"), Team = "Horde" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Kithas"), Team = "Horde" },
{ Region = RRS("Ironforge"), Vendor = RRS("Tilli Thistlefuzz"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Lilly"), Team = "Horde" },
{ Region = RRS("Netherstorm"), Vendor = RRS("Dealer Malij"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Egomis"), Team = "Alliance" },
{ Region = RRS("Eversong Woods"), Vendor = RRS("Erilia"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Felannia"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Johan Barnes"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Lyna"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Madame Ruby"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Yurial Soulwater"), Team = "Neutral" },
{ Region = RRS("Netherstorm"), Vendor = RRS("Asarnan"), Team = "Neutral" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Alys Vol'tyr"), Team = "Horde" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Bradley Towns"), Team = "Horde" },
{ Region = RRS("Dalaran"), Vendor = RRS("Ildine Sorrowspear"), Team = "Neutral" },
{ Region = RRS("Borean Tundra"), Vendor = RRS("Librarian Erickson"), Team = "Neutral" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Modoru"), Team = "Alliance" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Enchantress Andiala"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Zurii"), Team = "Neutral" },
},
},
{
ID = 20752,
Type = RRS("Enchanting"),
Skill = 150,
Cost = 3000,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Vaean"), Team = "Alliance" },
{ Region = RRS("Silithus"), Vendor = RRS("Kania"), Team = "Neutral" },
{ Region = RRS("Stormwind City"), Vendor = RRS("Jessara Cordell"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Leo Sarn"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Nata Dawnstrider"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Thaddeus Webb"), Team = "Horde" },
{ Region = RRS("Ironforge"), Vendor = RRS("Tilli Thistlefuzz"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Kithas"), Team = "Horde" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Lilly"), Team = "Horde" },
{ Region = RRS("Netherstorm"), Vendor = RRS("Dealer Malij"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Egomis"), Team = "Alliance" },
{ Region = RRS("Eversong Woods"), Vendor = RRS("Erilia"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Felannia"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Johan Barnes"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Lyna"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Madame Ruby"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Yurial Soulwater"), Team = "Neutral" },
{ Region = RRS("Netherstorm"), Vendor = RRS("Asarnan"), Team = "Neutral" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Alys Vol'tyr"), Team = "Horde" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Bradley Towns"), Team = "Horde" },
{ Region = RRS("Dalaran"), Vendor = RRS("Ildine Sorrowspear"), Team = "Neutral" },
{ Region = RRS("Borean Tundra"), Vendor = RRS("Librarian Erickson"), Team = "Neutral" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Modoru"), Team = "Alliance" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Enchantress Andiala"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Zurii"), Team = "Neutral" },
},
},
{
ID = 20753,
Type = RRS("Enchanting"),
Skill = 200,
Cost = 4000,
Locations = {
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Nata Dawnstrider"), Team = "Horde" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Lilly"), Team = "Horde" },
{ Region = RRS("Ironforge"), Vendor = RRS("Tilli Thistlefuzz"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Kithas"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Thaddeus Webb"), Team = "Horde" },
{ Region = RRS("Silithus"), Vendor = RRS("Kania"), Team = "Neutral" },
{ Region = RRS("Darnassus"), Vendor = RRS("Vaean"), Team = "Alliance" },
{ Region = RRS("Stormwind City"), Vendor = RRS("Jessara Cordell"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Leo Sarn"), Team = "Horde" },
{ Region = RRS("Netherstorm"), Vendor = RRS("Dealer Malij"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Egomis"), Team = "Alliance" },
{ Region = RRS("Eversong Woods"), Vendor = RRS("Erilia"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Felannia"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Johan Barnes"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Lyna"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Madame Ruby"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Yurial Soulwater"), Team = "Neutral" },
{ Region = RRS("Netherstorm"), Vendor = RRS("Asarnan"), Team = "Neutral" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Alys Vol'tyr"), Team = "Horde" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Bradley Towns"), Team = "Horde" },
{ Region = RRS("Dalaran"), Vendor = RRS("Ildine Sorrowspear"), Team = "Neutral" },
{ Region = RRS("Borean Tundra"), Vendor = RRS("Librarian Erickson"), Team = "Neutral" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Modoru"), Team = "Alliance" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Enchantress Andiala"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Zurii"), Team = "Neutral" },
},
},
{
ID = 20754,
Type = RRS("Enchanting"),
Skill = 250,
Cost = 10000,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Kania"), Team = "Neutral" },
},
},
{
ID = 20755,
Type = RRS("Enchanting"),
Skill = 275,
Cost = 20000,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Kania"), Team = "Neutral" },
},
},
{
ID = 19449,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 100000,
Faction = RRS("Thorium Brotherhood"),
Level = 7,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19448,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 80000,
Faction = RRS("Thorium Brotherhood"),
Level = 6,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19444,
Type = RRS("Enchanting"),
Skill = 290,
Cost = 30000,
Faction = RRS("Thorium Brotherhood"),
Level = 5,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19445,
Type = RRS("Enchanting"),
Skill = 290,
Cost = 30000,
Faction = RRS("Timbermaw Hold"),
Level = 6,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 19446,
Type = RRS("Enchanting"),
Skill = 290,
Cost = 30000,
Faction = RRS("Argent Dawn"),
Level = 6,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Argent Quartermaster Hasana"), Team = "Neutral" },
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Argent Quartermaster Lightspark"), Team = "Neutral" },
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Quartermaster Miranda Breechlock"), Team = "Neutral" },
},
},
{
ID = 20756,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 40000,
Faction = RRS("Zandalar Tribe"),
Level = 6,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 20732,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 100000,
Faction = RRS("Cenarion Circle"),
Level = 5,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Kania"), Team = "Neutral" },
},
},
{
ID = 20733,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 100000,
Faction = RRS("Cenarion Circle"),
Level = 6,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Kania"), Team = "Neutral" },
},
},
{
ID = 20757,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 40000,
Faction = RRS("Zandalar Tribe"),
Level = 5,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 22392,
Type = RRS("Enchanting"),
Skill = 290,
Cost = 25000,
Faction = RRS("Timbermaw Hold"),
Level = 5,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 25848,
Type = RRS("Enchanting"),
Skill = 350,
Cost = 100000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Vodesiin"), Team = "Alliance" },
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Rungor"), Team = "Horde" },
},
},
{
ID = 28274,
Type = RRS("Enchanting"),
Skill = 325,
Cost = 40000,
Faction = RRS("The Consortium"),
Level = 5,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 28273,
Type = RRS("Enchanting"),
Skill = 350,
Cost = 60000,
Faction = RRS("The Sha'tar"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 28272,
Type = RRS("Enchanting"),
Skill = 360,
Cost = 80000,
Faction = RRS("Keepers of Time"),
Level = 6,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alurmi"), Team = "Neutral" },
},
},
{
ID = 28271,
Type = RRS("Enchanting"),
Skill = 360,
Cost = 80000,
Faction = RRS("Cenarion Expedition"),
Level = 7,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 28281,
Type = RRS("Enchanting"),
Skill = 350,
Cost = 60000,
Faction = RRS("The Sha'tar"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 24000,
Type = RRS("Enchanting"),
Skill = 325,
Cost = 60000,
Faction = RRS("Thrallmar"),
Level = 5,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 22531,
Type = RRS("Enchanting"),
Skill = 325,
Cost = 60000,
Faction = RRS("Honor Hold"),
Level = 5,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 24003,
Type = RRS("Enchanting"),
Skill = 345,
Cost = 60000,
Faction = RRS("Thrallmar"),
Level = 7,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 22547,
Type = RRS("Enchanting"),
Skill = 345,
Cost = 60000,
Faction = RRS("Honor Hold"),
Level = 7,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 22537,
Type = RRS("Enchanting"),
Skill = 370,
Cost = 100000,
Faction = RRS("The Sha'tar"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 22536,
Type = RRS("Enchanting"),
Skill = 360,
Cost = 100000,
Faction = RRS("Keepers of Time"),
Level = 6,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alurmi"), Team = "Neutral" },
},
},
{
ID = 22539,
Type = RRS("Enchanting"),
Skill = 325,
Cost = 60000,
Locations = {
{ Region = RRS("Old Hillsbrad Foothills"), Vendor = RRS("Aged Dalaran Wizard"), Team = "Neutral" },
},
},
{
ID = 28282,
Type = RRS("Enchanting"),
Skill = 325,
Cost = 40000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Madame Ruby"), Team = "Neutral" },
},
},
{
ID = 22565,
Type = RRS("Enchanting"),
Skill = 335,
Cost = 60000,
Locations = {
{ Region = RRS("The Exodar"), Vendor = RRS("Egomis"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Lyna"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Madame Ruby"), Team = "Neutral" },
},
},
{
ID = 25849,
Type = RRS("Enchanting"),
Skill = 375,
Cost = 120000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Madame Ruby"), Team = "Neutral" },
},
},
{
ID = 22562,
Type = RRS("Enchanting"),
Skill = 310,
Cost = 50000,
Locations = {
{ Region = RRS("The Exodar"), Vendor = RRS("Egomis"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Lyna"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Madame Ruby"), Team = "Neutral" },
},
},
{
ID = 22563,
Type = RRS("Enchanting"),
Skill = 340,
Cost = 70000,
Locations = {
{ Region = RRS("The Exodar"), Vendor = RRS("Egomis"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Lyna"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Madame Ruby"), Team = "Neutral" },
},
},
{
ID = 22535,
Type = RRS("Enchanting"),
Skill = 360,
Cost = 100000,
Faction = RRS("The Consortium"),
Level = 7,
Locations = {
{ Region = RRS("Karazhan"), Vendor = RRS("Ythyar"), Team = "Neutral" },
},
},
{
ID = 22552,
Type = RRS("Enchanting"),
Skill = 340,
Cost = 60000,
Faction = RRS("The Consortium"),
Level = 6,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 33148,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 100000,
Faction = RRS("Lower City"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nakodu"), Team = "Neutral" },
},
},
{
ID = 33149,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 100000,
Faction = RRS("Cenarion Expedition"),
Level = 8,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 33150,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 100000,
Faction = RRS("Honor Hold"),
Level = 8,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 33151,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 100000,
Faction = RRS("Thrallmar"),
Level = 8,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 33152,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 100000,
Faction = RRS("Keepers of Time"),
Level = 8,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alurmi"), Team = "Neutral" },
},
},
{
ID = 33153,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 100000,
Faction = RRS("The Sha'tar"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 22538,
Type = RRS("Enchanting"),
Skill = 375,
Cost = 200000,
Faction = RRS("Lower City"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nakodu"), Team = "Neutral" },
},
},
{
ID = 33165,
Type = RRS("Enchanting"),
Skill = 350,
Cost = 30000,
Faction = RRS("The Violet Eye"),
Level = 8,
Locations = {
{ Region = RRS("Deadwind Pass"), Vendor = RRS("Apprentice Darius"), Team = "Neutral" },
},
},
{
ID = 34872,
Type = RRS("Enchanting"),
Skill = 375,
Cost = 150000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35500,
Type = RRS("Enchanting"),
Skill = 360,
Cost = 150000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 44483,
Type = RRS("Enchanting"),
Skill = 430,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44496,
Type = RRS("Enchanting"),
Skill = 440,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44492,
Type = RRS("Enchanting"),
Skill = 440,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44495,
Type = RRS("Enchanting"),
Skill = 440,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 37339,
Type = RRS("Enchanting"),
Skill = 430,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 37344,
Type = RRS("Enchanting"),
Skill = 425,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44494,
Type = RRS("Enchanting"),
Skill = 425,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44487,
Type = RRS("Enchanting"),
Skill = 435,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44473,
Type = RRS("Enchanting"),
Skill = 430,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44486,
Type = RRS("Enchanting"),
Skill = 435,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44490,
Type = RRS("Enchanting"),
Skill = 440,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44491,
Type = RRS("Enchanting"),
Skill = 440,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44498,
Type = RRS("Enchanting"),
Skill = 440,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44484,
Type = RRS("Enchanting"),
Skill = 430,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44489,
Type = RRS("Enchanting"),
Skill = 440,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44472,
Type = RRS("Enchanting"),
Skill = 430,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44471,
Type = RRS("Enchanting"),
Skill = 430,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 37349,
Type = RRS("Enchanting"),
Skill = 440,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 37347,
Type = RRS("Enchanting"),
Skill = 435,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44488,
Type = RRS("Enchanting"),
Skill = 440,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44485,
Type = RRS("Enchanting"),
Skill = 435,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 44944,
Type = RRS("Enchanting"),
Skill = 450,
Cost = 5,
Notes = RRS("CostItem: 34057"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 37340,
Type = RRS("Enchanting"),
Skill = 410,
Cost = 4,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
{
ID = 19447,
Type = RRS("Enchanting"),
Skill = 300,
Cost = 60000,
Faction = RRS("Argent Dawn"),
Level = 7,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Argent Quartermaster Hasana"), Team = "Neutral" },
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Argent Quartermaster Lightspark"), Team = "Neutral" },
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Quartermaster Miranda Breechlock"), Team = "Neutral" },
},
},
{
ID = 45059,
Type = RRS("Enchanting"),
Skill = 450,
Cost = 10,
Notes = RRS("CostItem: 34052"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Vanessa Sellers"), Team = "Neutral" },
},
},
},
},
 
[RRS("Engineering")] = {
Recipes = {
{
ID = 18649,
Type = RRS("Engineering"),
Skill = 150,
Cost = 1800,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Darian Singh"), Team = "Alliance" },
{ Region = RRS("Ironforge"), Vendor = RRS("Gearcutter Cogspinner"), Team = "Alliance" },
},
},
{
ID = 10607,
Type = RRS("Engineering"),
Skill = 230,
Cost = 3600,
Locations = {
{ Region = RRS("Azshara"), Vendor = RRS("Jubie Gadgetspring"), Team = "Neutral" },
},
},
{
ID = 7560,
Type = RRS("Engineering"),
Skill = 125,
Cost = 1200,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Gearcutter Cogspinner"), Team = "Alliance" },
{ Region = RRS("Thousand Needles"), Vendor = RRS("Jinky Twizzlefixxit"), Team = "Neutral" },
},
},
{
ID = 13309,
Type = RRS("Engineering"),
Skill = 120,
Cost = 1000,
Locations = {
{ Region = RRS("Wetlands"), Vendor = RRS("Fradd Swiftgear"), Team = "Alliance" },
{ Region = RRS("Thousand Needles"), Vendor = RRS("Jinky Twizzlefixxit"), Team = "Neutral" },
},
},
{
ID = 14639,
Type = RRS("Engineering"),
Skill = 140,
Cost = 1500,
Locations = {
{ Region = RRS("Wetlands"), Vendor = RRS("Fradd Swiftgear"), Team = "Alliance" },
{ Region = RRS("The Barrens"), Vendor = RRS("Gagsprocket"), Team = "Neutral" },
},
},
{
ID = 10609,
Type = RRS("Engineering"),
Skill = 250,
Cost = 4000,
Locations = {
{ Region = RRS("The Hinterlands"), Vendor = RRS("Ruppo Zipcoil"), Team = "Neutral" },
},
},
{
ID = 18647,
Type = RRS("Engineering"),
Skill = 150,
Cost = 1800,
Locations = {
{ Region = RRS("Orgrimmar"), Vendor = RRS("Sovik"), Team = "Horde" },
},
},
{
ID = 13310,
Type = RRS("Engineering"),
Skill = 180,
Cost = 2000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Mazk Snipeshot"), Team = "Neutral" },
},
},
{
ID = 10602,
Type = RRS("Engineering"),
Skill = 210,
Cost = 3000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Knaz Blunderflame"), Team = "Neutral" },
{ Region = RRS("Burning Steppes"), Vendor = RRS("Yuka Screwspigot"), Team = "Neutral" },
},
},
{
ID = 16050,
Type = RRS("Engineering"),
Skill = 285,
Cost = 20000,
Locations = {
{ Region = RRS("Winterspring"), Vendor = RRS("Xizzer Fizzbolt"), Team = "Neutral" },
},
},
{
ID = 7742,
Type = RRS("Engineering"),
Skill = 200,
Cost = 2400,
Locations = {
{ Region = RRS("Alterac Mountains"), Vendor = RRS("Zan Shivsproket"), Team = "Neutral" },
},
},
{
ID = 7561,
Type = RRS("Engineering"),
Skill = 165,
Cost = 2000,
Locations = {
{ Region = RRS("Duskwood"), Vendor = RRS("Kzixx"), Team = "Neutral" },
{ Region = RRS("Stonetalon Mountains"), Vendor = RRS("Veenix"), Team = "Neutral" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Zixil"), Team = "Neutral" },
},
},
{
ID = 18648,
Type = RRS("Engineering"),
Skill = 150,
Cost = 1800,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Crazk Sparks"), Team = "Neutral" },
{ Region = RRS("The Barrens"), Vendor = RRS("Gagsprocket"), Team = "Neutral" },
},
},
{
ID = 18652,
Type = RRS("Engineering"),
Skill = 260,
Cost = 12000,
Locations = {
{ Region = RRS("Winterspring"), Vendor = RRS("Xizzer Fizzbolt"), Team = "Neutral" },
},
},
{
ID = 13308,
Type = RRS("Engineering"),
Skill = 155,
Cost = 1800,
Locations = {
{ Region = RRS("Alterac Mountains"), Vendor = RRS("Rizz Loosebolt"), Team = "Neutral" },
},
},
{
ID = 16046,
Type = RRS("Engineering"),
Skill = 275,
Cost = 16000,
Locations = {
{ Region = RRS("Winterspring"), Vendor = RRS("Xizzer Fizzbolt"), Team = "Neutral" },
},
},
{
ID = 13311,
Type = RRS("Engineering"),
Skill = 200,
Cost = 10000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Gnaz Blunderflame"), Team = "Neutral" },
},
},
{
ID = 18656,
Type = RRS("Engineering"),
Skill = 275,
Cost = 16000,
Locations = {
{ Region = RRS("Winterspring"), Vendor = RRS("Xizzer Fizzbolt"), Team = "Neutral" },
},
},
{
ID = 20001,
Type = RRS("Engineering"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 5,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 20000,
Type = RRS("Engineering"),
Skill = 300,
Cost = 120000,
Faction = RRS("Zandalar Tribe"),
Level = 6,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19027,
Type = RRS("Engineering"),
Skill = 250,
Cost = 5000,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Zorbin Fandazzle"), Team = "Neutral" },
},
},
{
ID = 18650,
Type = RRS("Engineering"),
Skill = 200,
Cost = 5000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Blizrik Buckshot"), Team = "Neutral" },
},
},
{
ID = 23799,
Type = RRS("Engineering"),
Skill = 350,
Cost = 80000,
Locations = {
{ Region = RRS("The Exodar"), Vendor = RRS("Feera"), Team = "Alliance" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Viggz Shinesparked"), Team = "Neutral" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Yatheon"), Team = "Horde" },
},
},
{
ID = 23807,
Type = RRS("Engineering"),
Skill = 335,
Cost = 60000,
Locations = {
{ Region = RRS("Shadowmoon Valley"), Vendor = RRS("Daggle Ironshaper"), Team = "Alliance" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Mixie Farshot"), Team = "Horde" },
},
},
{
ID = 23803,
Type = RRS("Engineering"),
Skill = 340,
Cost = 60000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Lebowski"), Team = "Alliance" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Mixie Farshot"), Team = "Horde" },
},
},
{
ID = 23816,
Type = RRS("Engineering"),
Skill = 325,
Cost = 40000,
Locations = {
{ Region = RRS("The Exodar"), Vendor = RRS("Feera"), Team = "Alliance" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Wind Trader Lathrai"), Team = "Neutral" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Yatheon"), Team = "Horde" },
},
},
{
ID = 23814,
Type = RRS("Engineering"),
Skill = 335,
Cost = 60000,
Faction = RRS("Cenarion Expedition"),
Level = 5,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 23805,
Type = RRS("Engineering"),
Skill = 350,
Cost = 80000,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Captured Gnome"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Lebowski"), Team = "Alliance" },
},
},
{
ID = 23811,
Type = RRS("Engineering"),
Skill = 335,
Cost = 60000,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Captured Gnome"), Team = "Horde" },
{ Region = RRS("The Exodar"), Vendor = RRS("Feera"), Team = "Alliance" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Wind Trader Lathrai"), Team = "Neutral" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Yatheon"), Team = "Horde" },
},
},
{
ID = 23874,
Type = RRS("Engineering"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Consortium"),
Level = 7,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 32381,
Type = RRS("Engineering"),
Skill = 275,
Cost = 16000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Viggz Shinesparked"), Team = "Neutral" },
{ Region = RRS("Winterspring"), Vendor = RRS("Xizzer Fizzbolt"), Team = "Neutral" },
},
},
{
ID = 22729,
Type = RRS("Engineering"),
Skill = 275,
Cost = 8000,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Gearcutter Cogspinner"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Sovik"), Team = "Horde" },
},
},
{
ID = 44502,
Type = RRS("Engineering"),
Skill = 450,
Cost = 4000000,
Faction = RRS("Horde Expedition"),
Level = 8,
Locations = {
{ Region = RRS("Borean Tundra"), Vendor = RRS("Gara Skullcrush"), Team = "Horde" },
{ Region = RRS("Howling Fjord"), Vendor = RRS("Sebastian Crane"), Team = "Horde" },
},
},
{
ID = 44503,
Type = RRS("Engineering"),
Skill = 450,
Cost = 4000000,
Faction = RRS("Alliance Vanguard"),
Level = 8,
Locations = {
{ Region = RRS("Howling Fjord"), Vendor = RRS("Logistics Officer Brighton"), Team = "Alliance" },
{ Region = RRS("Borean Tundra"), Vendor = RRS("Logistics Officer Silverstone"), Team = "Alliance" },
},
},
{
ID = 44918,
Type = RRS("Engineering"),
Skill = 275,
Cost = 5,
Notes = RRS("CostItem: 21100"),
Locations = {
{ Region = RRS("Moonglade"), Vendor = RRS("Fariel Starsong"), Team = "Neutral" },
},
},
{
ID = 44919,
Type = RRS("Engineering"),
Skill = 225,
Cost = 5,
Notes = RRS("CostItem: 21100"),
Locations = {
{ Region = RRS("Moonglade"), Vendor = RRS("Fariel Starsong"), Team = "Neutral" },
},
},
{
ID = 23815,
Type = RRS("Engineering"),
Skill = 335,
Cost = 60000,
Locations = {
{ Region = RRS("The Exodar"), Vendor = RRS("Feera"), Team = "Alliance" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Wind Trader Lathrai"), Team = "Neutral" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Yatheon"), Team = "Horde" },
},
},
{
ID = 23817,
Type = RRS("Engineering"),
Skill = 405,
Cost = 80000,
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Bryan Landers"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Fizzix Blastbolt"), Team = "Neutral" },
},
},
},
},
 
[RRS("Leatherworking")] = {
Recipes = {
{
ID = 18949,
Type = RRS("Leatherworking"),
Skill = 155,
Cost = 2000,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Saenorion"), Team = "Alliance" },
{ Region = RRS("Undercity"), Vendor = RRS("Joseph Moore"), Team = "Horde" },
},
},
{
ID = 5973,
Type = RRS("Leatherworking"),
Skill = 170,
Cost = 650,
Locations = {
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Hammon Karwn"), Team = "Alliance" },
{ Region = RRS("Ashenvale"), Vendor = RRS("Lardan"), Team = "Alliance" },
{ Region = RRS("Thousand Needles"), Vendor = RRS("Jandia"), Team = "Horde" },
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Keena"), Team = "Horde" },
},
},
{
ID = 7289,
Type = RRS("Leatherworking"),
Skill = 100,
Cost = 650,
Locations = {
{ Region = RRS("Redridge Mountains"), Vendor = RRS("Clyde Ranthal"), Team = "Alliance" },
},
},
{
ID = 20576,
Type = RRS("Leatherworking"),
Skill = 100,
Cost = 1400,
Locations = {
{ Region = RRS("Redridge Mountains"), Vendor = RRS("Amy Davenport"), Team = "Alliance" },
},
},
{
ID = 15751,
Type = RRS("Leatherworking"),
Skill = 285,
Cost = 20000,
Locations = {
{ Region = RRS("Azshara"), Vendor = RRS("Blimo Gadgetspring"), Team = "Neutral" },
},
},
{
ID = 15729,
Type = RRS("Leatherworking"),
Skill = 265,
Cost = 12000,
Locations = {
{ Region = RRS("Azshara"), Vendor = RRS("Blimo Gadgetspring"), Team = "Neutral" },
},
},
{
ID = 7613,
Type = RRS("Leatherworking"),
Skill = 155,
Cost = 2000,
Locations = {
{ Region = RRS("Wetlands"), Vendor = RRS("Wenna Silkbeard"), Team = "Alliance" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("George Candarte"), Team = "Horde" },
},
},
{
ID = 7451,
Type = RRS("Leatherworking"),
Skill = 190,
Cost = 2800,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Pratt McGrubben"), Team = "Alliance" },
{ Region = RRS("Darnassus"), Vendor = RRS("Saenorion"), Team = "Alliance" },
{ Region = RRS("Feralas"), Vendor = RRS("Jangdor Swiftstrider"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Joseph Moore"), Team = "Horde" },
},
},
{
ID = 18731,
Type = RRS("Leatherworking"),
Skill = 150,
Cost = 2000,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Bombus Finespindle"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Tamar"), Team = "Horde" },
},
},
{
ID = 7361,
Type = RRS("Leatherworking"),
Skill = 135,
Cost = 1800,
Locations = {
{ Region = RRS("Ashenvale"), Vendor = RRS("Harlown Darkweave"), Team = "Alliance" },
},
},
{
ID = 15735,
Type = RRS("Leatherworking"),
Skill = 270,
Cost = 14000,
Locations = {
{ Region = RRS("The Hinterlands"), Vendor = RRS("Gigget Zipcoil"), Team = "Neutral" },
},
},
{
ID = 15734,
Type = RRS("Leatherworking"),
Skill = 270,
Cost = 14000,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Pratt McGrubben"), Team = "Alliance" },
{ Region = RRS("Feralas"), Vendor = RRS("Jangdor Swiftstrider"), Team = "Horde" },
},
},
{
ID = 5786,
Type = RRS("Leatherworking"),
Skill = 90,
Cost = 550,
Locations = {
{ Region = RRS("Westfall"), Vendor = RRS("Gina MacGregor"), Team = "Alliance" },
{ Region = RRS("Darkshore"), Vendor = RRS("Mavralyn"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Andrew Hilbert"), Team = "Horde" },
},
},
{
ID = 5787,
Type = RRS("Leatherworking"),
Skill = 95,
Cost = 600,
Locations = {
{ Region = RRS("Westfall"), Vendor = RRS("Gina MacGregor"), Team = "Alliance" },
{ Region = RRS("Darkshore"), Vendor = RRS("Mavralyn"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Andrew Hilbert"), Team = "Horde" },
},
},
{
ID = 5789,
Type = RRS("Leatherworking"),
Skill = 190,
Cost = 2800,
Locations = {
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Helenia Olden"), Team = "Alliance" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Blixrez Goodstitch"), Team = "Neutral" },
},
},
{
ID = 8409,
Type = RRS("Leatherworking"),
Skill = 210,
Cost = 4000,
Locations = {
{ Region = RRS("The Hinterlands"), Vendor = RRS("Nioma"), Team = "Alliance" },
{ Region = RRS("Feralas"), Vendor = RRS("Jangdor Swiftstrider"), Team = "Horde" },
},
},
{
ID = 13288,
Type = RRS("Leatherworking"),
Skill = 165,
Cost = 2500,
Locations = {
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Androd Fadran"), Team = "Alliance" },
},
},
{
ID = 7290,
Type = RRS("Leatherworking"),
Skill = 120,
Cost = 1600,
Locations = {
{ Region = RRS("Wetlands"), Vendor = RRS("Wenna Silkbeard"), Team = "Alliance" },
},
},
{
ID = 15741,
Type = RRS("Leatherworking"),
Skill = 275,
Cost = 16000,
Locations = {
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Leonard Porter"), Team = "Alliance" },
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Werg Thickblade"), Team = "Horde" },
},
},
{
ID = 5788,
Type = RRS("Leatherworking"),
Skill = 170,
Cost = 650,
Locations = {
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Micha Yance"), Team = "Alliance" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Christoph Jeffcoat"), Team = "Horde" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Blixrez Goodstitch"), Team = "Neutral" },
},
},
{
ID = 8385,
Type = RRS("Leatherworking"),
Skill = 205,
Cost = 3500,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Pratt McGrubben"), Team = "Alliance" },
{ Region = RRS("Feralas"), Vendor = RRS("Jangdor Swiftstrider"), Team = "Horde" },
},
},
{
ID = 15725,
Type = RRS("Leatherworking"),
Skill = 260,
Cost = 12000,
Locations = {
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Leonard Porter"), Team = "Alliance" },
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Werg Thickblade"), Team = "Horde" },
},
},
{
ID = 13287,
Type = RRS("Leatherworking"),
Skill = 165,
Cost = 2500,
Locations = {
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Tunkk"), Team = "Horde" },
},
},
{
ID = 6474,
Type = RRS("Leatherworking"),
Skill = 90,
Cost = 550,
Locations = {
{ Region = RRS("Wailing Caverns"), Vendor = RRS("Kalldan Felmoon"), Team = "Neutral" },
},
},
{
ID = 6475,
Type = RRS("Leatherworking"),
Skill = 105,
Cost = 1500,
Locations = {
{ Region = RRS("Wailing Caverns"), Vendor = RRS("Kalldan Felmoon"), Team = "Neutral" },
},
},
{
ID = 15758,
Type = RRS("Leatherworking"),
Skill = 290,
Cost = 22000,
Locations = {
{ Region = RRS("Un'Goro Crater"), Vendor = RRS("Nergal"), Team = "Neutral" },
},
},
{
ID = 7362,
Type = RRS("Leatherworking"),
Skill = 135,
Cost = 2000,
Locations = {
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Zixil"), Team = "Neutral" },
},
},
{
ID = 15740,
Type = RRS("Leatherworking"),
Skill = 275,
Cost = 16000,
Locations = {
{ Region = RRS("Winterspring"), Vendor = RRS("Qia"), Team = "Neutral" },
},
},
{
ID = 14635,
Type = RRS("Leatherworking"),
Skill = 185,
Cost = 3000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rikqiz"), Team = "Neutral" },
},
},
{
ID = 15726,
Type = RRS("Leatherworking"),
Skill = 260,
Cost = 12000,
Locations = {
{ Region = RRS("Swamp of Sorrows"), Vendor = RRS("Masat T'andr"), Team = "Neutral" },
},
},
{
ID = 15724,
Type = RRS("Leatherworking"),
Skill = 255,
Cost = 12000,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Zannok Hidepiercer"), Team = "Neutral" },
},
},
{
ID = 15762,
Type = RRS("Leatherworking"),
Skill = 295,
Cost = 25000,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Zannok Hidepiercer"), Team = "Neutral" },
},
},
{
ID = 18239,
Type = RRS("Leatherworking"),
Skill = 200,
Cost = 3500,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rikqiz"), Team = "Neutral" },
},
},
{
ID = 15759,
Type = RRS("Leatherworking"),
Skill = 290,
Cost = 22000,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Plugger Spazzring"), Team = "Neutral" },
},
},
{
ID = 17025,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 160000,
Faction = RRS("Thorium Brotherhood"),
Level = 6,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19331,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 90000,
Faction = RRS("Thorium Brotherhood"),
Level = 7,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19332,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 90000,
Faction = RRS("Thorium Brotherhood"),
Level = 7,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 17022,
Type = RRS("Leatherworking"),
Skill = 295,
Cost = 150000,
Faction = RRS("Thorium Brotherhood"),
Level = 5,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19330,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 60000,
Faction = RRS("Thorium Brotherhood"),
Level = 7,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19333,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 90000,
Faction = RRS("Thorium Brotherhood"),
Level = 7,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 17023,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 160000,
Faction = RRS("Thorium Brotherhood"),
Level = 5,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 20253,
Type = RRS("Leatherworking"),
Skill = 275,
Cost = 16000,
Faction = RRS("Timbermaw Hold"),
Level = 5,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 20254,
Type = RRS("Leatherworking"),
Skill = 285,
Cost = 20000,
Faction = RRS("Timbermaw Hold"),
Level = 5,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 19327,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 40000,
Faction = RRS("Timbermaw Hold"),
Level = 7,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 19326,
Type = RRS("Leatherworking"),
Skill = 290,
Cost = 22000,
Faction = RRS("Timbermaw Hold"),
Level = 6,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 19328,
Type = RRS("Leatherworking"),
Skill = 290,
Cost = 22000,
Faction = RRS("Argent Dawn"),
Level = 6,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Argent Quartermaster Hasana"), Team = "Neutral" },
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Argent Quartermaster Lightspark"), Team = "Neutral" },
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Quartermaster Miranda Breechlock"), Team = "Neutral" },
},
},
{
ID = 19329,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 40000,
Faction = RRS("Argent Dawn"),
Level = 7,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Argent Quartermaster Hasana"), Team = "Neutral" },
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Argent Quartermaster Lightspark"), Team = "Neutral" },
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Quartermaster Miranda Breechlock"), Team = "Neutral" },
},
},
{
ID = 19771,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 5,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19773,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 6,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19770,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 6,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19772,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 7,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19769,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 7,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 20382,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 60000,
Faction = RRS("Cenarion Circle"),
Level = 8,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Aendel Windspear"), Team = "Neutral" },
},
},
{
ID = 20506,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 40000,
Faction = RRS("Cenarion Circle"),
Level = 5,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Aendel Windspear"), Team = "Neutral" },
},
},
{
ID = 20507,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 40000,
Faction = RRS("Cenarion Circle"),
Level = 6,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Aendel Windspear"), Team = "Neutral" },
},
},
{
ID = 20508,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 40000,
Faction = RRS("Cenarion Circle"),
Level = 7,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Aendel Windspear"), Team = "Neutral" },
},
},
{
ID = 20509,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 40000,
Faction = RRS("Cenarion Circle"),
Level = 5,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Aendel Windspear"), Team = "Neutral" },
},
},
{
ID = 20510,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 40000,
Faction = RRS("Cenarion Circle"),
Level = 6,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Aendel Windspear"), Team = "Neutral" },
},
},
{
ID = 20511,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 40000,
Faction = RRS("Cenarion Circle"),
Level = 7,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Aendel Windspear"), Team = "Neutral" },
},
},
{
ID = 22769,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 5,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Aendel Windspear"), Team = "Neutral" },
},
},
{
ID = 22770,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 6,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Aendel Windspear"), Team = "Neutral" },
},
},
{
ID = 22771,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 7,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Aendel Windspear"), Team = "Neutral" },
},
},
{
ID = 29717,
Type = RRS("Leatherworking"),
Skill = 365,
Cost = 120000,
Faction = RRS("The Sha'tar"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 29713,
Type = RRS("Leatherworking"),
Skill = 370,
Cost = 120000,
Faction = RRS("Keepers of Time"),
Level = 6,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alurmi"), Team = "Neutral" },
},
},
{
ID = 25733,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 140000,
Faction = RRS("The Consortium"),
Level = 6,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 25732,
Type = RRS("Leatherworking"),
Skill = 340,
Cost = 120000,
Faction = RRS("The Consortium"),
Level = 5,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 25734,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 140000,
Faction = RRS("The Consortium"),
Level = 7,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 25738,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 120000,
Faction = RRS("Thrallmar"),
Level = 5,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 29213,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 120000,
Faction = RRS("Honor Hold"),
Level = 5,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 25739,
Type = RRS("Leatherworking"),
Skill = 360,
Cost = 160000,
Faction = RRS("Thrallmar"),
Level = 6,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 29214,
Type = RRS("Leatherworking"),
Skill = 360,
Cost = 160000,
Faction = RRS("Honor Hold"),
Level = 6,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 25740,
Type = RRS("Leatherworking"),
Skill = 360,
Cost = 160000,
Faction = RRS("Thrallmar"),
Level = 6,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 29215,
Type = RRS("Leatherworking"),
Skill = 360,
Cost = 160000,
Faction = RRS("Honor Hold"),
Level = 6,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 25737,
Type = RRS("Leatherworking"),
Skill = 355,
Cost = 140000,
Faction = RRS("Cenarion Expedition"),
Level = 5,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 25736,
Type = RRS("Leatherworking"),
Skill = 355,
Cost = 140000,
Faction = RRS("Cenarion Expedition"),
Level = 6,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 25735,
Type = RRS("Leatherworking"),
Skill = 360,
Cost = 160000,
Faction = RRS("Cenarion Expedition"),
Level = 6,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 25741,
Type = RRS("Leatherworking"),
Skill = 340,
Cost = 120000,
Faction = RRS("The Mag'har"),
Level = 5,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Provisioner Nasela"), Team = "Horde" },
},
},
{
ID = 29217,
Type = RRS("Leatherworking"),
Skill = 340,
Cost = 120000,
Faction = RRS("Kurenai"),
Level = 5,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Trader Narasu"), Team = "Alliance" },
},
},
{
ID = 25743,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 120000,
Faction = RRS("The Mag'har"),
Level = 7,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Provisioner Nasela"), Team = "Horde" },
},
},
{
ID = 29218,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 120000,
Faction = RRS("Kurenai"),
Level = 7,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Trader Narasu"), Team = "Alliance" },
},
},
{
ID = 25742,
Type = RRS("Leatherworking"),
Skill = 340,
Cost = 120000,
Faction = RRS("The Mag'har"),
Level = 6,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Provisioner Nasela"), Team = "Horde" },
},
},
{
ID = 29219,
Type = RRS("Leatherworking"),
Skill = 340,
Cost = 120000,
Faction = RRS("Kurenai"),
Level = 6,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Trader Narasu"), Team = "Alliance" },
},
},
{
ID = 29704,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Aldor"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 29703,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Aldor"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 29702,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Aldor"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 29720,
Type = RRS("Leatherworking"),
Skill = 335,
Cost = 60000,
Faction = RRS("Cenarion Expedition"),
Level = 6,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 29719,
Type = RRS("Leatherworking"),
Skill = 335,
Cost = 60000,
Faction = RRS("Honor Hold"),
Level = 6,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 31361,
Type = RRS("Leatherworking"),
Skill = 335,
Cost = 60000,
Faction = RRS("Thrallmar"),
Level = 6,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 25726,
Type = RRS("Leatherworking"),
Skill = 300,
Cost = 10000,
Locations = {
{ Region = RRS("The Exodar"), Vendor = RRS("Haferet"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Zaralda"), Team = "Horde" },
},
},
{
ID = 29701,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Scryers"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 29700,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Scryers"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 29698,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Scryers"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 29684,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Scryers"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 29682,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Scryers"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 29677,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Scryers"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 29693,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Aldor"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 29691,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Aldor"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 29689,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 80000,
Faction = RRS("The Aldor"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 25720,
Type = RRS("Leatherworking"),
Skill = 325,
Cost = 50000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Cro Threadstrong"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Haferet"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Zaralda"), Team = "Horde" },
},
},
{
ID = 25722,
Type = RRS("Leatherworking"),
Skill = 325,
Cost = 50000,
Faction = RRS("The Scryers"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 29721,
Type = RRS("Leatherworking"),
Skill = 365,
Cost = 120000,
Faction = RRS("Cenarion Expedition"),
Level = 8,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 29722,
Type = RRS("Leatherworking"),
Skill = 365,
Cost = 120000,
Faction = RRS("Honor Hold"),
Level = 8,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 31362,
Type = RRS("Leatherworking"),
Skill = 365,
Cost = 120000,
Faction = RRS("Thrallmar"),
Level = 8,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 29664,
Type = RRS("Leatherworking"),
Skill = 325,
Cost = 50000,
Faction = RRS("The Mag'har"),
Level = 6,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Provisioner Nasela"), Team = "Horde" },
},
},
{
ID = 30444,
Type = RRS("Leatherworking"),
Skill = 325,
Cost = 50000,
Faction = RRS("Kurenai"),
Level = 6,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Trader Narasu"), Team = "Alliance" },
},
},
{
ID = 25725,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 50000,
Locations = {
{ Region = RRS("Old Hillsbrad Foothills"), Vendor = RRS("Thomas Yance"), Team = "Neutral" },
},
},
{
ID = 25721,
Type = RRS("Leatherworking"),
Skill = 325,
Cost = 50000,
Faction = RRS("The Aldor"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 32429,
Type = RRS("Leatherworking"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 5,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32430,
Type = RRS("Leatherworking"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 5,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32431,
Type = RRS("Leatherworking"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 6,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32436,
Type = RRS("Leatherworking"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 5,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32435,
Type = RRS("Leatherworking"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 5,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32433,
Type = RRS("Leatherworking"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 6,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32434,
Type = RRS("Leatherworking"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 6,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32432,
Type = RRS("Leatherworking"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 6,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 33205,
Type = RRS("Leatherworking"),
Skill = 365,
Cost = 240000,
Faction = RRS("The Violet Eye"),
Level = 7,
Locations = {
{ Region = RRS("Deadwind Pass"), Vendor = RRS("Apprentice Darius"), Team = "Neutral" },
},
},
{
ID = 33124,
Type = RRS("Leatherworking"),
Skill = 360,
Cost = 50000,
Faction = RRS("The Violet Eye"),
Level = 8,
Locations = {
{ Region = RRS("Deadwind Pass"), Vendor = RRS("Apprentice Darius"), Team = "Neutral" },
},
},
{
ID = 34174,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 160000,
Faction = RRS("The Mag'har"),
Level = 6,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Provisioner Nasela"), Team = "Horde" },
},
},
{
ID = 34175,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 160000,
Faction = RRS("Kurenai"),
Level = 6,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Trader Narasu"), Team = "Alliance" },
},
},
{
ID = 34172,
Type = RRS("Leatherworking"),
Skill = 345,
Cost = 160000,
Faction = RRS("The Mag'har"),
Level = 6,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Provisioner Nasela"), Team = "Horde" },
},
},
{
ID = 34173,
Type = RRS("Leatherworking"),
Skill = 345,
Cost = 160000,
Faction = RRS("Kurenai"),
Level = 6,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Trader Narasu"), Team = "Alliance" },
},
},
{
ID = 34201,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 160000,
Faction = RRS("Thrallmar"),
Level = 7,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 34218,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 160000,
Faction = RRS("Honor Hold"),
Level = 7,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 34200,
Type = RRS("Leatherworking"),
Skill = 350,
Cost = 160000,
Faction = RRS("Lower City"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nakodu"), Team = "Neutral" },
},
},
{
ID = 34262,
Type = RRS("Leatherworking"),
Skill = 285,
Cost = 5000,
Locations = {
{ Region = RRS("Orgrimmar"), Vendor = RRS("Penney Copperpinch"), Team = "Neutral" },
{ Region = RRS("Ironforge"), Vendor = RRS("Wulmort Jinglepocket"), Team = "Neutral" },
},
},
{
ID = 44553,
Type = RRS("Leatherworking"),
Skill = 440,
Cost = 2,
Notes = RRS("CostItem: 44128"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44552,
Type = RRS("Leatherworking"),
Skill = 440,
Cost = 2,
Notes = RRS("CostItem: 44128"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44547,
Type = RRS("Leatherworking"),
Skill = 440,
Cost = 2,
Notes = RRS("CostItem: 44128"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44546,
Type = RRS("Leatherworking"),
Skill = 440,
Cost = 2,
Notes = RRS("CostItem: 44128"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44588,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44589,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44587,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44586,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44585,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44584,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44548,
Type = RRS("Leatherworking"),
Skill = 440,
Cost = 2,
Notes = RRS("CostItem: 44128"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44549,
Type = RRS("Leatherworking"),
Skill = 440,
Cost = 2,
Notes = RRS("CostItem: 44128"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44551,
Type = RRS("Leatherworking"),
Skill = 440,
Cost = 2,
Notes = RRS("CostItem: 44128"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44550,
Type = RRS("Leatherworking"),
Skill = 440,
Cost = 2,
Notes = RRS("CostItem: 44128"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44516,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44515,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44513,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44517,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44519,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44514,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44520,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44518,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44526,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44528,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44524,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44523,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44525,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44521,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44527,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44522,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44543,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44538,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44542,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44540,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44544,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44539,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44545,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44541,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44535,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44537,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44533,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44534,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44532,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44530,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44536,
Type = RRS("Leatherworking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44531,
Type = RRS("Leatherworking"),
Skill = 420,
Cost = 3,
Notes = RRS("CostItem: 38425"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44932,
Type = RRS("Leatherworking"),
Skill = 440,
Cost = 2,
Notes = RRS("CostItem: 44128"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44933,
Type = RRS("Leatherworking"),
Skill = 440,
Cost = 2,
Notes = RRS("CostItem: 44128"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Braeg Stoutbeard"), Team = "Neutral" },
},
},
{
ID = 44511,
Type = RRS("Leatherworking"),
Skill = 415,
Cost = 50000,
Faction = RRS("The Kalu'ak"),
Level = 6,
Locations = {
{ Region = RRS("Dragonblight"), Vendor = RRS("Sairuk"), Team = "Neutral" },
{ Region = RRS("Howling Fjord"), Vendor = RRS("Tanaika"), Team = "Neutral" },
},
},
{
ID = 44510,
Type = RRS("Leatherworking"),
Skill = 415,
Cost = 50000,
Faction = RRS("The Sons of Hodir"),
Level = 6,
Locations = {
{ Region = RRS("The Storm Peaks"), Vendor = RRS("Lillehoff"), Team = "Neutral" },
},
},
{
ID = 44512,
Type = RRS("Leatherworking"),
Skill = 415,
Cost = 50000,
Faction = RRS("Knights of the Ebon Blade"),
Level = 6,
Locations = {
{ Region = RRS("Icecrown"), Vendor = RRS("Duchess Mynx"), Team = "Neutral" },
},
},
{
ID = 44509,
Type = RRS("Leatherworking"),
Skill = 415,
Cost = 50000,
Faction = RRS("The Kalu'ak"),
Level = 7,
Locations = {
{ Region = RRS("Dragonblight"), Vendor = RRS("Sairuk"), Team = "Neutral" },
{ Region = RRS("Howling Fjord"), Vendor = RRS("Tanaika"), Team = "Neutral" },
},
},
},
},
 
[RRS("Tailoring")] = {
Recipes = {
{
ID = 7089,
Type = RRS("Tailoring"),
Skill = 175,
Cost = 1500,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Brienna Starglow"), Team = "Alliance" },
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Jun'ha"), Team = "Horde" },
},
},
{
ID = 7114,
Type = RRS("Tailoring"),
Skill = 145,
Cost = 1000,
Locations = {
{ Region = RRS("Wetlands"), Vendor = RRS("Wenna Silkbeard"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Kireena"), Team = "Horde" },
},
},
{
ID = 6272,
Type = RRS("Tailoring"),
Skill = 70,
Cost = 300,
Locations = {
{ Region = RRS("Elwynn Forest"), Vendor = RRS("Drake Lindgren"), Team = "Alliance" },
{ Region = RRS("Darnassus"), Vendor = RRS("Elynna"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Andrew Hilbert"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Wrahk"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Ranik"), Team = "Neutral" },
},
},
{
ID = 6270,
Type = RRS("Tailoring"),
Skill = 55,
Cost = 200,
Locations = {
{ Region = RRS("Elwynn Forest"), Vendor = RRS("Tharynn Bouden"), Team = "Alliance" },
{ Region = RRS("Darkshore"), Vendor = RRS("Valdaron"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Borya"), Team = "Horde" },
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Constance Brisboise"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Wrahk"), Team = "Horde" },
},
},
{
ID = 6274,
Type = RRS("Tailoring"),
Skill = 100,
Cost = 400,
Locations = {
{ Region = RRS("Westfall"), Vendor = RRS("Gina MacGregor"), Team = "Alliance" },
{ Region = RRS("Stormwind City"), Vendor = RRS("Alexandra Bolero"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Borya"), Team = "Horde" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Mallen Swain"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Yonada"), Team = "Horde" },
},
},
{
ID = 14627,
Type = RRS("Tailoring"),
Skill = 135,
Cost = 800,
Locations = {
{ Region = RRS("Duskwood"), Vendor = RRS("Danielle Zipstitch"), Team = "Alliance" },
},
},
{
ID = 6401,
Type = RRS("Tailoring"),
Skill = 155,
Cost = 1100,
Locations = {
{ Region = RRS("Duskwood"), Vendor = RRS("Sheri Zipstitch"), Team = "Alliance" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Mallen Swain"), Team = "Horde" },
},
},
{
ID = 6275,
Type = RRS("Tailoring"),
Skill = 115,
Cost = 800,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Elynna"), Team = "Alliance" },
{ Region = RRS("Wetlands"), Vendor = RRS("Jennabink Powerseam"), Team = "Alliance" },
{ Region = RRS("Loch Modan"), Vendor = RRS("Rann Flamespinner"), Team = "Alliance" },
{ Region = RRS("Duskwood"), Vendor = RRS("Sheri Zipstitch"), Team = "Alliance" },
{ Region = RRS("Undercity"), Vendor = RRS("Millie Gregorian"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Ranik"), Team = "Neutral" },
},
},
{
ID = 4355,
Type = RRS("Tailoring"),
Skill = 200,
Cost = 1500,
Locations = {
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Micha Yance"), Team = "Alliance" },
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Ghok'kah"), Team = "Horde" },
},
},
{
ID = 10314,
Type = RRS("Tailoring"),
Skill = 230,
Cost = 4000,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Outfitter Eric"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Borya"), Team = "Horde" },
},
},
{
ID = 10311,
Type = RRS("Tailoring"),
Skill = 220,
Cost = 3000,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Elynna"), Team = "Alliance" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Mahu"), Team = "Horde" },
},
},
{
ID = 10317,
Type = RRS("Tailoring"),
Skill = 235,
Cost = 4000,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Outfitter Eric"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Borya"), Team = "Horde" },
},
},
{
ID = 5771,
Type = RRS("Tailoring"),
Skill = 70,
Cost = 200,
Locations = {
{ Region = RRS("Westfall"), Vendor = RRS("Gina MacGregor"), Team = "Alliance" },
{ Region = RRS("Darkshore"), Vendor = RRS("Valdaron"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Andrew Hilbert"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Mahu"), Team = "Horde" },
{ Region = RRS("Ghostlands"), Vendor = RRS("Rathis Tomber"), Team = "Horde" },
},
},
{
ID = 5772,
Type = RRS("Tailoring"),
Skill = 115,
Cost = 500,
Locations = {
{ Region = RRS("Redridge Mountains"), Vendor = RRS("Amy Davenport"), Team = "Alliance" },
{ Region = RRS("Wetlands"), Vendor = RRS("Jennabink Powerseam"), Team = "Alliance" },
{ Region = RRS("Loch Modan"), Vendor = RRS("Rann Flamespinner"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Borya"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Mahu"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Millie Gregorian"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Wrahk"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Yonada"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Kiknikle"), Team = "Neutral" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Zixil"), Team = "Neutral" },
{ Region = RRS("Darkshore"), Vendor = RRS("Valdaron"), Team = "Alliance" },
},
},
{
ID = 10326,
Type = RRS("Tailoring"),
Skill = 250,
Cost = 5000,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Outfitter Eric"), Team = "Alliance" },
{ Region = RRS("Undercity"), Vendor = RRS("Millie Gregorian"), Team = "Horde" },
},
},
{
ID = 10323,
Type = RRS("Tailoring"),
Skill = 245,
Cost = 4500,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Outfitter Eric"), Team = "Alliance" },
{ Region = RRS("Undercity"), Vendor = RRS("Millie Gregorian"), Team = "Horde" },
},
},
{
ID = 10321,
Type = RRS("Tailoring"),
Skill = 240,
Cost = 4500,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Outfitter Eric"), Team = "Alliance" },
{ Region = RRS("Undercity"), Vendor = RRS("Millie Gregorian"), Team = "Horde" },
},
},
{
ID = 10325,
Type = RRS("Tailoring"),
Skill = 250,
Cost = 10000,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Alexandra Bolero"), Team = "Alliance" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Mahu"), Team = "Horde" },
},
},
{
ID = 10318,
Type = RRS("Tailoring"),
Skill = 240,
Cost = 7000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Cowardly Crosby"), Team = "Neutral" },
},
},
{
ID = 10728,
Type = RRS("Tailoring"),
Skill = 200,
Cost = 1500,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Narkk"), Team = "Neutral" },
},
},
{
ID = 7087,
Type = RRS("Tailoring"),
Skill = 180,
Cost = 1200,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Xizk Goodstitch"), Team = "Neutral" },
},
},
{
ID = 7088,
Type = RRS("Tailoring"),
Skill = 205,
Cost = 5000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Vizzklick"), Team = "Neutral" },
},
},
{
ID = 14630,
Type = RRS("Tailoring"),
Skill = 165,
Cost = 1000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Xizk Goodstitch"), Team = "Neutral" },
},
},
{
ID = 14483,
Type = RRS("Tailoring"),
Skill = 275,
Cost = 16000,
Locations = {
{ Region = RRS("Moonglade"), Vendor = RRS("Lorelae Wintersong"), Team = "Neutral" },
},
},
{
ID = 14526,
Type = RRS("Tailoring"),
Skill = 250,
Cost = 20000,
Locations = {
{ Region = RRS("Winterspring"), Vendor = RRS("Qia"), Team = "Neutral" },
},
},
{
ID = 14468,
Type = RRS("Tailoring"),
Skill = 260,
Cost = 12000,
Locations = {
{ Region = RRS("Winterspring"), Vendor = RRS("Qia"), Team = "Neutral" },
},
},
{
ID = 14488,
Type = RRS("Tailoring"),
Skill = 280,
Cost = 20000,
Locations = {
{ Region = RRS("Moonglade"), Vendor = RRS("Darnall"), Team = "Neutral" },
},
},
{
ID = 14472,
Type = RRS("Tailoring"),
Skill = 265,
Cost = 12000,
Locations = {
{ Region = RRS("Moonglade"), Vendor = RRS("Darnall"), Team = "Neutral" },
},
},
{
ID = 14469,
Type = RRS("Tailoring"),
Skill = 260,
Cost = 12000,
Locations = {
{ Region = RRS("Moonglade"), Vendor = RRS("Darnall"), Team = "Neutral" },
},
},
{
ID = 18487,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 40000,
Locations = {
{ Region = RRS("Dire Maul"), Vendor = RRS("Shen'dralar Provisioner"), Team = "Neutral" },
},
},
{
ID = 17018,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 80000,
Faction = RRS("Thorium Brotherhood"),
Level = 5,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19220,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 90000,
Faction = RRS("Thorium Brotherhood"),
Level = 7,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 17017,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 180000,
Faction = RRS("Thorium Brotherhood"),
Level = 6,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19219,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 60000,
Faction = RRS("Thorium Brotherhood"),
Level = 6,
Locations = {
{ Region = RRS("Blackrock Depths"), Vendor = RRS("Lokhtos Darkbargainer"), Team = "Neutral" },
},
},
{
ID = 19215,
Type = RRS("Tailoring"),
Skill = 290,
Cost = 22000,
Faction = RRS("Timbermaw Hold"),
Level = 6,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 19218,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 40000,
Faction = RRS("Timbermaw Hold"),
Level = 7,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Meilosh"), Team = "Neutral" },
},
},
{
ID = 19216,
Type = RRS("Tailoring"),
Skill = 290,
Cost = 22000,
Faction = RRS("Argent Dawn"),
Level = 6,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Argent Quartermaster Hasana"), Team = "Neutral" },
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Argent Quartermaster Lightspark"), Team = "Neutral" },
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Quartermaster Miranda Breechlock"), Team = "Neutral" },
},
},
{
ID = 19217,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 40000,
Faction = RRS("Argent Dawn"),
Level = 7,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Argent Quartermaster Hasana"), Team = "Neutral" },
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Argent Quartermaster Lightspark"), Team = "Neutral" },
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Quartermaster Miranda Breechlock"), Team = "Neutral" },
},
},
{
ID = 19766,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 5,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19765,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 6,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 19764,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 50000,
Faction = RRS("Zandalar Tribe"),
Level = 7,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Rin'wosho the Trader"), Team = "Neutral" },
},
},
{
ID = 21358,
Type = RRS("Tailoring"),
Skill = 260,
Cost = 12000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Vizzklick"), Team = "Neutral" },
},
},
{
ID = 22307,
Type = RRS("Tailoring"),
Skill = 225,
Cost = 6000,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Vaean"), Team = "Alliance" },
{ Region = RRS("Stormwind City"), Vendor = RRS("Jessara Cordell"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Leo Sarn"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Nata Dawnstrider"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Thaddeus Webb"), Team = "Horde" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Kithas"), Team = "Horde" },
{ Region = RRS("Ironforge"), Vendor = RRS("Tilli Thistlefuzz"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Lilly"), Team = "Horde" },
{ Region = RRS("Silithus"), Vendor = RRS("Kania"), Team = "Neutral" },
{ Region = RRS("Netherstorm"), Vendor = RRS("Dealer Malij"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Egomis"), Team = "Alliance" },
{ Region = RRS("Eversong Woods"), Vendor = RRS("Erilia"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Felannia"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Johan Barnes"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Lyna"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Madame Ruby"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Yurial Soulwater"), Team = "Neutral" },
{ Region = RRS("Netherstorm"), Vendor = RRS("Asarnan"), Team = "Neutral" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Alys Vol'tyr"), Team = "Horde" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Bradley Towns"), Team = "Horde" },
{ Region = RRS("Dalaran"), Vendor = RRS("Ildine Sorrowspear"), Team = "Neutral" },
{ Region = RRS("Borean Tundra"), Vendor = RRS("Librarian Erickson"), Team = "Neutral" },
{ Region = RRS("Dragonblight"), Vendor = RRS("Modoru"), Team = "Alliance" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Enchantress Andiala"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Zurii"), Team = "Neutral" },
},
},
{
ID = 22308,
Type = RRS("Tailoring"),
Skill = 275,
Cost = 20000,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Kania"), Team = "Neutral" },
},
},
{
ID = 22312,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 7,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Mishta"), Team = "Neutral" },
},
},
{
ID = 22310,
Type = RRS("Tailoring"),
Skill = 275,
Cost = 20000,
Faction = RRS("Cenarion Circle"),
Level = 5,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Mishta"), Team = "Neutral" },
},
},
{
ID = 22683,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 90000,
Faction = RRS("Cenarion Circle"),
Level = 7,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Mishta"), Team = "Neutral" },
},
},
{
ID = 22772,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 5,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Mishta"), Team = "Neutral" },
},
},
{
ID = 22773,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 6,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Mishta"), Team = "Neutral" },
},
},
{
ID = 22774,
Type = RRS("Tailoring"),
Skill = 300,
Cost = 50000,
Faction = RRS("Cenarion Circle"),
Level = 7,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Mishta"), Team = "Neutral" },
},
},
{
ID = 21892,
Type = RRS("Tailoring"),
Skill = 325,
Cost = 40000,
Locations = {
{ Region = RRS("Silvermoon City"), Vendor = RRS("Deynna"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Eiin"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Neii"), Team = "Alliance" },
},
},
{
ID = 21894,
Type = RRS("Tailoring"),
Skill = 345,
Cost = 40000,
Locations = {
{ Region = RRS("Silvermoon City"), Vendor = RRS("Deynna"), Team = "Horde" },
{ Region = RRS("The Exodar"), Vendor = RRS("Neii"), Team = "Alliance" },
{ Region = RRS("Nagrand"), Vendor = RRS("Borto"), Team = "Alliance" },
{ Region = RRS("Nagrand"), Vendor = RRS("Mathar G'ochar"), Team = "Horde" },
},
},
{
ID = 21896,
Type = RRS("Tailoring"),
Skill = 340,
Cost = 40000,
Locations = {
{ Region = RRS("Silvermoon City"), Vendor = RRS("Deynna"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Eiin"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Neii"), Team = "Alliance" },
},
},
{
ID = 21897,
Type = RRS("Tailoring"),
Skill = 345,
Cost = 40000,
Locations = {
{ Region = RRS("Silvermoon City"), Vendor = RRS("Deynna"), Team = "Horde" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Eiin"), Team = "Neutral" },
{ Region = RRS("The Exodar"), Vendor = RRS("Neii"), Team = "Alliance" },
},
},
{
ID = 21893,
Type = RRS("Tailoring"),
Skill = 340,
Cost = 40000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Eiin"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Mathar G'ochar"), Team = "Horde" },
},
},
{
ID = 21915,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 60000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Andrion Darkspinner"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Linna Bruder"), Team = "Neutral" },
},
},
{
ID = 21900,
Type = RRS("Tailoring"),
Skill = 360,
Cost = 60000,
Locations = {
{ Region = RRS("Shadowmoon Valley"), Vendor = RRS("Arrond"), Team = "Neutral" },
},
},
{
ID = 21901,
Type = RRS("Tailoring"),
Skill = 360,
Cost = 60000,
Locations = {
{ Region = RRS("Shadowmoon Valley"), Vendor = RRS("Arrond"), Team = "Neutral" },
},
},
{
ID = 21919,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 60000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nasmara Moonsong"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Ainderu Summerleaf"), Team = "Neutral" },
},
},
{
ID = 21911,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 60000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Gidge Spellweaver"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Lalla Brightweave"), Team = "Neutral" },
},
},
{
ID = 24314,
Type = RRS("Tailoring"),
Skill = 340,
Cost = 40000,
Faction = RRS("The Consortium"),
Level = 6,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 30833,
Type = RRS("Tailoring"),
Skill = 350,
Cost = 60000,
Faction = RRS("Lower City"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nakodu"), Team = "Neutral" },
},
},
{
ID = 30842,
Type = RRS("Tailoring"),
Skill = 350,
Cost = 60000,
Faction = RRS("The Aldor"),
Level = 5,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 30843,
Type = RRS("Tailoring"),
Skill = 360,
Cost = 80000,
Faction = RRS("The Aldor"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 30844,
Type = RRS("Tailoring"),
Skill = 370,
Cost = 100000,
Faction = RRS("The Aldor"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 21914,
Type = RRS("Tailoring"),
Skill = 365,
Cost = 60000,
Specialty = RRS("Shadoweave Tailoring"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Andrion Darkspinner"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Linna Bruder"), Team = "Neutral" },
},
},
{
ID = 21912,
Type = RRS("Tailoring"),
Skill = 355,
Cost = 60000,
Specialty = RRS("Shadoweave Tailoring"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Andrion Darkspinner"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Linna Bruder"), Team = "Neutral" },
},
},
{
ID = 21913,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 60000,
Specialty = RRS("Shadoweave Tailoring"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Andrion Darkspinner"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Linna Bruder"), Team = "Neutral" },
},
},
{
ID = 24295,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 360000,
Faction = RRS("The Aldor"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 21899,
Type = RRS("Tailoring"),
Skill = 350,
Cost = 60000,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Muheru the Weaver"), Team = "Alliance" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Zurai"), Team = "Horde" },
},
},
{
ID = 21898,
Type = RRS("Tailoring"),
Skill = 340,
Cost = 60000,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Muheru the Weaver"), Team = "Alliance" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Zurai"), Team = "Horde" },
},
},
{
ID = 24292,
Type = RRS("Tailoring"),
Skill = 335,
Cost = 60000,
Faction = RRS("The Scryers"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 21895,
Type = RRS("Tailoring"),
Skill = 350,
Cost = 40000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nasmara Moonsong"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Ainderu Summerleaf"), Team = "Neutral" },
},
},
{
ID = 21916,
Type = RRS("Tailoring"),
Skill = 355,
Cost = 60000,
Specialty = RRS("Mooncloth Tailoring"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nasmara Moonsong"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Ainderu Summerleaf"), Team = "Neutral" },
},
},
{
ID = 21917,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 60000,
Specialty = RRS("Mooncloth Tailoring"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nasmara Moonsong"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Ainderu Summerleaf"), Team = "Neutral" },
},
},
{
ID = 21918,
Type = RRS("Tailoring"),
Skill = 365,
Cost = 60000,
Specialty = RRS("Mooncloth Tailoring"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nasmara Moonsong"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Ainderu Summerleaf"), Team = "Neutral" },
},
},
{
ID = 24294,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 360000,
Faction = RRS("The Scryers"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 30483,
Type = RRS("Tailoring"),
Skill = 350,
Cost = 40000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Andrion Darkspinner"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Linna Bruder"), Team = "Neutral" },
},
},
{
ID = 24293,
Type = RRS("Tailoring"),
Skill = 335,
Cost = 60000,
Faction = RRS("The Aldor"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 21902,
Type = RRS("Tailoring"),
Skill = 355,
Cost = 80000,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Borto"), Team = "Alliance" },
{ Region = RRS("Nagrand"), Vendor = RRS("Mathar G'ochar"), Team = "Horde" },
},
},
{
ID = 24316,
Type = RRS("Tailoring"),
Skill = 350,
Cost = 40000,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Gidge Spellweaver"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Lalla Brightweave"), Team = "Neutral" },
},
},
{
ID = 21908,
Type = RRS("Tailoring"),
Skill = 355,
Cost = 60000,
Specialty = RRS("Spellfire Tailoring"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Gidge Spellweaver"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Lalla Brightweave"), Team = "Neutral" },
},
},
{
ID = 21909,
Type = RRS("Tailoring"),
Skill = 365,
Cost = 60000,
Specialty = RRS("Spellfire Tailoring"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Gidge Spellweaver"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Lalla Brightweave"), Team = "Neutral" },
},
},
{
ID = 21910,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 60000,
Specialty = RRS("Spellfire Tailoring"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Gidge Spellweaver"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Lalla Brightweave"), Team = "Neutral" },
},
},
{
ID = 32447,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 6,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32438,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 5,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32440,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 5,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32439,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 6,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 32437,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 80000,
Faction = RRS("Ashtongue Deathsworn"),
Level = 6,
Locations = {
{ Region = RRS("Black Temple"), Vendor = RRS("Okuno"), Team = "Neutral" },
},
},
{
ID = 34261,
Type = RRS("Tailoring"),
Skill = 250,
Cost = 5000,
Locations = {
{ Region = RRS("Orgrimmar"), Vendor = RRS("Penney Copperpinch"), Team = "Neutral" },
},
},
{
ID = 34319,
Type = RRS("Tailoring"),
Skill = 250,
Cost = 5000,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Wulmort Jinglepocket"), Team = "Neutral" },
},
},
{
ID = 37915,
Type = RRS("Tailoring"),
Skill = 250,
Cost = 5000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Haughty Modiste"), Team = "Neutral" },
},
},
{
ID = 38327,
Type = RRS("Tailoring"),
Skill = 250,
Cost = 5000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Haughty Modiste"), Team = "Neutral" },
},
},
{
ID = 38328,
Type = RRS("Tailoring"),
Skill = 245,
Cost = 4500,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Haughty Modiste"), Team = "Neutral" },
},
},
{
ID = 38229,
Type = RRS("Tailoring"),
Skill = 375,
Cost = 25,
Faction = RRS("Sporeggar"),
Level = 7,
Notes = RRS("CostItem: 24245"),
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Mycah"), Team = "Neutral" },
},
},
{
ID = 44916,
Type = RRS("Tailoring"),
Skill = 250,
Cost = 5,
Notes = RRS("CostItem: 21100"),
Locations = {
{ Region = RRS("Moonglade"), Vendor = RRS("Fariel Starsong"), Team = "Neutral" },
},
},
{
ID = 44917,
Type = RRS("Tailoring"),
Skill = 250,
Cost = 5,
Notes = RRS("CostItem: 21100"),
Locations = {
{ Region = RRS("Moonglade"), Vendor = RRS("Fariel Starsong"), Team = "Neutral" },
},
},
{
ID = 42183,
Type = RRS("Tailoring"),
Skill = 435,
Cost = 50000,
Faction = RRS("Knights of the Ebon Blade"),
Level = 7,
Locations = {
{ Region = RRS("Icecrown"), Vendor = RRS("Duchess Mynx"), Team = "Neutral" },
},
},
{
ID = 42187,
Type = RRS("Tailoring"),
Skill = 430,
Cost = 50000,
Faction = RRS("Argent Crusade"),
Level = 8,
Locations = {
{ Region = RRS("Icecrown"), Vendor = RRS("Veteran Crusader Aliocha Segard"), Team = "Neutral" },
},
},
{
ID = 42184,
Type = RRS("Tailoring"),
Skill = 445,
Cost = 50000,
Faction = RRS("The Sons of Hodir"),
Level = 8,
Locations = {
{ Region = RRS("The Storm Peaks"), Vendor = RRS("Lillehoff"), Team = "Neutral" },
},
},
{
ID = 42185,
Type = RRS("Tailoring"),
Skill = 440,
Cost = 50000,
Faction = RRS("The Wyrmrest Accord"),
Level = 7,
Locations = {
{ Region = RRS("Dragonblight"), Vendor = RRS("Cielstrasza"), Team = "Neutral" },
},
},
{
ID = 42188,
Type = RRS("Tailoring"),
Skill = 430,
Cost = 50000,
Faction = RRS("Kirin Tor"),
Level = 8,
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Archmage Alvareaux"), Team = "Neutral" },
},
},
{
ID = 45774,
Type = RRS("Tailoring"),
Skill = 435,
Cost = 50000,
Faction = RRS("The Kalu'ak"),
Level = 7,
Locations = {
{ Region = RRS("Dragonblight"), Vendor = RRS("Sairuk"), Team = "Neutral" },
{ Region = RRS("Howling Fjord"), Vendor = RRS("Tanaika"), Team = "Neutral" },
},
},
},
},
 
[RRS("Cooking")] = {
Recipes = {
{
ID = 16072,
Type = RRS("Cooking"),
Skill = 125,
Cost = 10000,
Locations = {
{ Region = RRS("Ashenvale"), Vendor = RRS("Shandrina"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Wulan"), Team = "Horde" },
},
},
{
ID = 13949,
Type = RRS("Cooking"),
Skill = 275,
Cost = 20000,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Vivianna"), Team = "Alliance" },
{ Region = RRS("Feralas"), Vendor = RRS("Sheendra Tallgrass"), Team = "Horde" },
},
},
{
ID = 4609,
Type = RRS("Cooking"),
Skill = 175,
Cost = 1000,
Locations = {
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Narj Deepslice"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Super-Seller 680"), Team = "Neutral" },
},
},
{
ID = 2889,
Type = RRS("Cooking"),
Skill = 10,
Cost = 240,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 3734,
Type = RRS("Cooking"),
Skill = 110,
Cost = 1600,
Locations = {
{ Region = RRS("Ashenvale"), Vendor = RRS("Ulthaan"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Super-Seller 680"), Team = "Neutral" },
},
},
{
ID = 3679,
Type = RRS("Cooking"),
Skill = 60,
Cost = 400,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 6325,
Type = RRS("Cooking"),
Skill = 1,
Cost = 40,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Catherine Leland"), Team = "Alliance" },
{ Region = RRS("Dun Morogh"), Vendor = RRS("Gretta Ganter"), Team = "Alliance" },
{ Region = RRS("Loch Modan"), Vendor = RRS("Khara Deepwater"), Team = "Alliance" },
{ Region = RRS("Teldrassil"), Vendor = RRS("Nyoma"), Team = "Alliance" },
{ Region = RRS("Elwynn Forest"), Vendor = RRS("Tharynn Bouden"), Team = "Alliance" },
{ Region = RRS("Mulgore"), Vendor = RRS("Harn Longcast"), Team = "Horde" },
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Martine Tramblay"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Sewa Mistrunner"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Lizbeth Cromwell"), Team = "Horde" },
},
},
{
ID = 6330,
Type = RRS("Cooking"),
Skill = 100,
Cost = 1200,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Catherine Leland"), Team = "Alliance" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Lindea Rabonne"), Team = "Alliance" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Derak Nightfall"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Naal Mistrunner"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Sewa Mistrunner"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Ronald Burch"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Kilxx"), Team = "Neutral" },
},
},
{
ID = 5528,
Type = RRS("Cooking"),
Skill = 90,
Cost = 800,
Locations = {
{ Region = RRS("Darkshore"), Vendor = RRS("Heldan Galesong"), Team = "Alliance" },
{ Region = RRS("Westfall"), Vendor = RRS("Kriggon Talsone"), Team = "Alliance" },
},
},
{
ID = 2698,
Type = RRS("Cooking"),
Skill = 85,
Cost = 400,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 3681,
Type = RRS("Cooking"),
Skill = 120,
Cost = 1600,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 3678,
Type = RRS("Cooking"),
Skill = 80,
Cost = 400,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 3682,
Type = RRS("Cooking"),
Skill = 130,
Cost = 1600,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Keena"), Team = "Horde" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Nerrist"), Team = "Horde" },
},
},
{
ID = 12239,
Type = RRS("Cooking"),
Skill = 200,
Cost = 7000,
Locations = {
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Helenia Olden"), Team = "Alliance" },
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Ogg'marr"), Team = "Horde" },
{ Region = RRS("Desolace"), Vendor = RRS("Super-Seller 680"), Team = "Neutral" },
},
},
{
ID = 5485,
Type = RRS("Cooking"),
Skill = 50,
Cost = 400,
Locations = {
{ Region = RRS("Darkshore"), Vendor = RRS("Laird"), Team = "Alliance" },
},
},
{
ID = 3683,
Type = RRS("Cooking"),
Skill = 110,
Cost = 1600,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 2697,
Type = RRS("Cooking"),
Skill = 50,
Cost = 400,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 12240,
Type = RRS("Cooking"),
Skill = 200,
Cost = 7000,
Locations = {
{ Region = RRS("Desolace"), Vendor = RRS("Janet Hommers"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Kireena"), Team = "Horde" },
{ Region = RRS("Desolace"), Vendor = RRS("Vendor-Tron 1000"), Team = "Neutral" },
},
},
{
ID = 20075,
Type = RRS("Cooking"),
Skill = 150,
Cost = 2000,
Locations = {
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Ogg'marr"), Team = "Horde" },
},
},
{
ID = 3735,
Type = RRS("Cooking"),
Skill = 125,
Cost = 1800,
Locations = {
{ Region = RRS("The Barrens"), Vendor = RRS("Zargh"), Team = "Horde" },
{ Region = RRS("Desolace"), Vendor = RRS("Vendor-Tron 1000"), Team = "Neutral" },
},
},
{
ID = 12229,
Type = RRS("Cooking"),
Skill = 175,
Cost = 5000,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Vivianna"), Team = "Alliance" },
{ Region = RRS("Feralas"), Vendor = RRS("Sheendra Tallgrass"), Team = "Horde" },
{ Region = RRS("Desolace"), Vendor = RRS("Super-Seller 680"), Team = "Neutral" },
},
},
{
ID = 12231,
Type = RRS("Cooking"),
Skill = 175,
Cost = 3000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Corporal Bluth"), Team = "Alliance" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Nerrist"), Team = "Horde" },
{ Region = RRS("Desolace"), Vendor = RRS("Vendor-Tron 1000"), Team = "Neutral" },
},
},
{
ID = 5489,
Type = RRS("Cooking"),
Skill = 110,
Cost = 1200,
Locations = {
{ Region = RRS("Ashenvale"), Vendor = RRS("Ulthaan"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Vendor-Tron 1000"), Team = "Neutral" },
},
},
{
ID = 13947,
Type = RRS("Cooking"),
Skill = 275,
Cost = 20000,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Vivianna"), Team = "Alliance" },
{ Region = RRS("Feralas"), Vendor = RRS("Sheendra Tallgrass"), Team = "Horde" },
},
},
{
ID = 6329,
Type = RRS("Cooking"),
Skill = 50,
Cost = 400,
Locations = {
{ Region = RRS("Loch Modan"), Vendor = RRS("Khara Deepwater"), Team = "Alliance" },
},
},
{
ID = 6328,
Type = RRS("Cooking"),
Skill = 50,
Cost = 400,
Locations = {
{ Region = RRS("Loch Modan"), Vendor = RRS("Khara Deepwater"), Team = "Alliance" },
{ Region = RRS("Teldrassil"), Vendor = RRS("Nyoma"), Team = "Alliance" },
{ Region = RRS("Ironforge"), Vendor = RRS("Tansy Puddlefizz"), Team = "Alliance" },
{ Region = RRS("Elwynn Forest"), Vendor = RRS("Tharynn Bouden"), Team = "Alliance" },
{ Region = RRS("Mulgore"), Vendor = RRS("Harn Longcast"), Team = "Horde" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Killian Sanatha"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Naal Mistrunner"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Lizbeth Cromwell"), Team = "Horde" },
},
},
{
ID = 13948,
Type = RRS("Cooking"),
Skill = 275,
Cost = 20000,
Locations = {
{ Region = RRS("Feralas"), Vendor = RRS("Vivianna"), Team = "Alliance" },
{ Region = RRS("Feralas"), Vendor = RRS("Sheendra Tallgrass"), Team = "Horde" },
},
},
{
ID = 17062,
Type = RRS("Cooking"),
Skill = 175,
Cost = 2200,
Locations = {
{ Region = RRS("Darkshore"), Vendor = RRS("Heldan Galesong"), Team = "Alliance" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Lindea Rabonne"), Team = "Alliance" },
{ Region = RRS("Wetlands"), Vendor = RRS("Stuart Fleming"), Team = "Alliance" },
{ Region = RRS("Ironforge"), Vendor = RRS("Tansy Puddlefizz"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Shankys"), Team = "Horde" },
{ Region = RRS("Ashenvale"), Vendor = RRS("Wik'Tar"), Team = "Horde" },
{ Region = RRS("Desolace"), Vendor = RRS("Wulan"), Team = "Horde" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Kelsey Yance"), Team = "Neutral" },
{ Region = RRS("Undercity"), Vendor = RRS("Lizbeth Cromwell"), Team = "Horde" },
},
},
{
ID = 3680,
Type = RRS("Cooking"),
Skill = 90,
Cost = 1600,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 12233,
Type = RRS("Cooking"),
Skill = 175,
Cost = 3000,
Locations = {
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Helenia Olden"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Janet Hommers"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Super-Seller 680"), Team = "Neutral" },
},
},
{
ID = 6368,
Type = RRS("Cooking"),
Skill = 50,
Cost = 400,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Catherine Leland"), Team = "Alliance" },
{ Region = RRS("Darkshore"), Vendor = RRS("Heldan Galesong"), Team = "Alliance" },
{ Region = RRS("Westfall"), Vendor = RRS("Kriggon Talsone"), Team = "Alliance" },
{ Region = RRS("Teldrassil"), Vendor = RRS("Nessa Shadowsong"), Team = "Alliance" },
{ Region = RRS("Wetlands"), Vendor = RRS("Stuart Fleming"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Killian Sanatha"), Team = "Horde" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Shankys"), Team = "Horde" },
{ Region = RRS("Durotar"), Vendor = RRS("Zansoa"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Ronald Burch"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Kilxx"), Team = "Neutral" },
},
},
{
ID = 2699,
Type = RRS("Cooking"),
Skill = 100,
Cost = 800,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 12228,
Type = RRS("Cooking"),
Skill = 175,
Cost = 5000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Corporal Bluth"), Team = "Alliance" },
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Hammon Karwn"), Team = "Alliance" },
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Helenia Olden"), Team = "Alliance" },
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Keena"), Team = "Horde" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Nerrist"), Team = "Horde" },
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Ogg'marr"), Team = "Horde" },
{ Region = RRS("Desolace"), Vendor = RRS("Vendor-Tron 1000"), Team = "Neutral" },
},
},
{
ID = 6369,
Type = RRS("Cooking"),
Skill = 175,
Cost = 2200,
Locations = {
{ Region = RRS("Darkshore"), Vendor = RRS("Heldan Galesong"), Team = "Alliance" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Lindea Rabonne"), Team = "Alliance" },
{ Region = RRS("Wetlands"), Vendor = RRS("Stuart Fleming"), Team = "Alliance" },
{ Region = RRS("Ironforge"), Vendor = RRS("Tansy Puddlefizz"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Shankys"), Team = "Horde" },
{ Region = RRS("Ashenvale"), Vendor = RRS("Wik'Tar"), Team = "Horde" },
{ Region = RRS("Desolace"), Vendor = RRS("Wulan"), Team = "Horde" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Kelsey Yance"), Team = "Neutral" },
{ Region = RRS("Undercity"), Vendor = RRS("Lizbeth Cromwell"), Team = "Horde" },
},
},
{
ID = 2701,
Type = RRS("Cooking"),
Skill = 100,
Cost = 1600,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 6326,
Type = RRS("Cooking"),
Skill = 1,
Cost = 40,
Locations = {
{ Region = RRS("Westfall"), Vendor = RRS("Kriggon Talsone"), Team = "Alliance" },
{ Region = RRS("Teldrassil"), Vendor = RRS("Nessa Shadowsong"), Team = "Alliance" },
{ Region = RRS("Ironforge"), Vendor = RRS("Tansy Puddlefizz"), Team = "Alliance" },
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Martine Tramblay"), Team = "Horde" },
{ Region = RRS("Durotar"), Vendor = RRS("Zansoa"), Team = "Horde" },
},
},
{
ID = 6892,
Type = RRS("Cooking"),
Skill = 40,
Cost = 250,
Locations = {
{ Region = RRS("Loch Modan"), Vendor = RRS("Drac Roughcut"), Team = "Alliance" },
{ Region = RRS("Silverpine Forest"), Vendor = RRS("Andrew Hilbert"), Team = "Horde" },
},
},
{
ID = 16111,
Type = RRS("Cooking"),
Skill = 225,
Cost = 12000,
Locations = {
{ Region = RRS("Westfall"), Vendor = RRS("Kriggon Talsone"), Team = "Alliance" },
{ Region = RRS("Swamp of Sorrows"), Vendor = RRS("Banalash"), Team = "Horde" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Uthok"), Team = "Horde" },
},
},
{
ID = 2700,
Type = RRS("Cooking"),
Skill = 110,
Cost = 400,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 18046,
Type = RRS("Cooking"),
Skill = 225,
Cost = 12000,
Locations = {
{ Region = RRS("The Hinterlands"), Vendor = RRS("Truk Wildbeard"), Team = "Alliance" },
{ Region = RRS("Tanaris"), Vendor = RRS("Dirge Quikcleave"), Team = "Neutral" },
{ Region = RRS("Tanaris"), Vendor = RRS("Innkeeper Fizzgrimble"), Team = "Neutral" },
},
},
{
ID = 728,
Type = RRS("Cooking"),
Skill = 75,
Cost = 200,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Kendor Kabonka"), Team = "Alliance" },
},
},
{
ID = 12226,
Type = RRS("Cooking"),
Skill = 1,
Cost = 25,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Abigail Shiel"), Team = "Horde" },
},
},
{
ID = 5488,
Type = RRS("Cooking"),
Skill = 100,
Cost = 400,
Locations = {
{ Region = RRS("The Barrens"), Vendor = RRS("Tari'qa"), Team = "Horde" },
},
},
{
ID = 5484,
Type = RRS("Cooking"),
Skill = 35,
Cost = 240,
Locations = {
{ Region = RRS("Mulgore"), Vendor = RRS("Wunna Darkmane"), Team = "Horde" },
},
},
{
ID = 5483,
Type = RRS("Cooking"),
Skill = 20,
Cost = 140,
Locations = {
{ Region = RRS("Durotar"), Vendor = RRS("Grimtak"), Team = "Horde" },
},
},
{
ID = 5486,
Type = RRS("Cooking"),
Skill = 50,
Cost = 440,
Locations = {
{ Region = RRS("The Barrens"), Vendor = RRS("Tari'qa"), Team = "Horde" },
},
},
{
ID = 12232,
Type = RRS("Cooking"),
Skill = 175,
Cost = 5000,
Locations = {
{ Region = RRS("Swamp of Sorrows"), Vendor = RRS("Banalash"), Team = "Horde" },
{ Region = RRS("Desolace"), Vendor = RRS("Kireena"), Team = "Horde" },
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Ogg'marr"), Team = "Horde" },
{ Region = RRS("Desolace"), Vendor = RRS("Vendor-Tron 1000"), Team = "Neutral" },
},
},
{
ID = 13940,
Type = RRS("Cooking"),
Skill = 225,
Cost = 16000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Kelsey Yance"), Team = "Neutral" },
},
},
{
ID = 13941,
Type = RRS("Cooking"),
Skill = 225,
Cost = 16000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Kelsey Yance"), Team = "Neutral" },
},
},
{
ID = 6039,
Type = RRS("Cooking"),
Skill = 175,
Cost = 5000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Kelsey Yance"), Team = "Neutral" },
},
},
{
ID = 13942,
Type = RRS("Cooking"),
Skill = 240,
Cost = 16000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Gikkix"), Team = "Neutral" },
},
},
{
ID = 13943,
Type = RRS("Cooking"),
Skill = 240,
Cost = 16000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Kelsey Yance"), Team = "Neutral" },
},
},
{
ID = 12227,
Type = RRS("Cooking"),
Skill = 125,
Cost = 1600,
Locations = {
{ Region = RRS("Desolace"), Vendor = RRS("Super-Seller 680"), Team = "Neutral" },
},
},
{
ID = 16110,
Type = RRS("Cooking"),
Skill = 225,
Cost = 12000,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Malygen"), Team = "Alliance" },
{ Region = RRS("Felwood"), Vendor = RRS("Bale"), Team = "Horde" },
{ Region = RRS("Winterspring"), Vendor = RRS("Himmik"), Team = "Neutral" },
},
},
{
ID = 13945,
Type = RRS("Cooking"),
Skill = 250,
Cost = 20000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Gikkix"), Team = "Neutral" },
},
},
{
ID = 13946,
Type = RRS("Cooking"),
Skill = 250,
Cost = 20000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Gikkix"), Team = "Neutral" },
},
},
{
ID = 13939,
Type = RRS("Cooking"),
Skill = 225,
Cost = 16000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Gikkix"), Team = "Neutral" },
},
},
{
ID = 16767,
Type = RRS("Cooking"),
Skill = 225,
Cost = 3000,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Jabbey"), Team = "Neutral" },
},
},
{
ID = 17201,
Type = RRS("Cooking"),
Skill = 35,
Cost = 240,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Khole Jinglepocket"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Penney Copperpinch"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Eebee Jinglepocket"), Team = "Neutral" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Seersa Copperpinch"), Team = "Neutral" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Hotoppik Copperpinch"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Nardstrum Copperpinch"), Team = "Horde" },
{ Region = RRS("The Exodar"), Vendor = RRS("Wolgren Jinglepocket"), Team = "Alliance" },
{ Region = RRS("Ironforge"), Vendor = RRS("Wulmort Jinglepocket"), Team = "Neutral" },
},
},
{
ID = 17200,
Type = RRS("Cooking"),
Skill = 1,
Cost = 25,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Khole Jinglepocket"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Penney Copperpinch"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Eebee Jinglepocket"), Team = "Neutral" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Seersa Copperpinch"), Team = "Neutral" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Hotoppik Copperpinch"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Nardstrum Copperpinch"), Team = "Horde" },
{ Region = RRS("The Exodar"), Vendor = RRS("Wolgren Jinglepocket"), Team = "Alliance" },
{ Region = RRS("Ironforge"), Vendor = RRS("Wulmort Jinglepocket"), Team = "Neutral" },
},
},
{
ID = 21099,
Type = RRS("Cooking"),
Skill = 80,
Cost = 500,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Fyldan"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Wulan"), Team = "Horde" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Derak Nightfall"), Team = "Horde" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Micha Yance"), Team = "Alliance" },
{ Region = RRS("Ironforge"), Vendor = RRS("Emrul Riknussun"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Xen'to"), Team = "Horde" },
{ Region = RRS("Redridge Mountains"), Vendor = RRS("Gloria Femmel"), Team = "Alliance" },
{ Region = RRS("Stormwind City"), Vendor = RRS("Erika Tate"), Team = "Alliance" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Kelsey Yance"), Team = "Neutral" },
{ Region = RRS("Teldrassil"), Vendor = RRS("Nyoma"), Team = "Alliance" },
{ Region = RRS("The Barrens"), Vendor = RRS("Tarban Hearthgrain"), Team = "Horde" },
{ Region = RRS("The Hinterlands"), Vendor = RRS("Otho Moji'ko"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Naal Mistrunner"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Ronald Burch"), Team = "Horde" },
{ Region = RRS("Azuremyst Isle"), Vendor = RRS("\"Cookie\" McWeaksauce"), Team = "Alliance" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Jim Saltit"), Team = "Neutral" },
{ Region = RRS("Ghostlands"), Vendor = RRS("Master Chef Mouldier"), Team = "Horde" },
{ Region = RRS("The Exodar"), Vendor = RRS("Phea"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Quelis"), Team = "Horde" },
{ Region = RRS("Grizzly Hills"), Vendor = RRS("Provisioner Lorkran"), Team = "Horde" },
},
},
{
ID = 21219,
Type = RRS("Cooking"),
Skill = 175,
Cost = 5000,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Fyldan"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Wulan"), Team = "Horde" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Derak Nightfall"), Team = "Horde" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Micha Yance"), Team = "Alliance" },
{ Region = RRS("Ironforge"), Vendor = RRS("Emrul Riknussun"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Xen'to"), Team = "Horde" },
{ Region = RRS("Redridge Mountains"), Vendor = RRS("Gloria Femmel"), Team = "Alliance" },
{ Region = RRS("Stormwind City"), Vendor = RRS("Erika Tate"), Team = "Alliance" },
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Kelsey Yance"), Team = "Neutral" },
{ Region = RRS("Teldrassil"), Vendor = RRS("Nyoma"), Team = "Alliance" },
{ Region = RRS("The Barrens"), Vendor = RRS("Tarban Hearthgrain"), Team = "Horde" },
{ Region = RRS("The Hinterlands"), Vendor = RRS("Otho Moji'ko"), Team = "Horde" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Naal Mistrunner"), Team = "Horde" },
{ Region = RRS("Undercity"), Vendor = RRS("Ronald Burch"), Team = "Horde" },
{ Region = RRS("Azuremyst Isle"), Vendor = RRS("\"Cookie\" McWeaksauce"), Team = "Alliance" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Jim Saltit"), Team = "Neutral" },
{ Region = RRS("Ghostlands"), Vendor = RRS("Master Chef Mouldier"), Team = "Horde" },
{ Region = RRS("The Exodar"), Vendor = RRS("Phea"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Quelis"), Team = "Horde" },
{ Region = RRS("Grizzly Hills"), Vendor = RRS("Provisioner Lorkran"), Team = "Horde" },
},
},
{
ID = 18160,
Type = RRS("Cooking"),
Skill = 60,
Cost = 200,
Notes = RRS("Class: Rogue"),
Locations = {
{ Region = RRS("Alterac Mountains"), Vendor = RRS("Smudge Thunderwood"), Team = "Neutral" },
},
},
{
ID = 27736,
Type = RRS("Cooking"),
Skill = 300,
Cost = 20000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Baxter"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Gaston"), Team = "Alliance" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Naka"), Team = "Neutral" },
},
},
{
ID = 27685,
Type = RRS("Cooking"),
Skill = 1,
Cost = 40,
Locations = {
{ Region = RRS("Eversong Woods"), Vendor = RRS("Landraelanis"), Team = "Horde" },
},
},
{
ID = 27687,
Type = RRS("Cooking"),
Skill = 50,
Cost = 400,
Locations = {
{ Region = RRS("Ghostlands"), Vendor = RRS("Master Chef Mouldier"), Team = "Horde" },
},
},
{
ID = 27690,
Type = RRS("Cooking"),
Skill = 315,
Cost = 30000,
Locations = {
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Innkeeper Grilka"), Team = "Horde" },
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Supply Officer Mills"), Team = "Alliance" },
},
},
{
ID = 27694,
Type = RRS("Cooking"),
Skill = 300,
Cost = 20000,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Doba"), Team = "Alliance" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Gambarinka"), Team = "Horde" },
},
},
{
ID = 30156,
Type = RRS("Cooking"),
Skill = 300,
Cost = 1,
Notes = RRS("CostItem: 24245"),
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Mycah"), Team = "Neutral" },
},
},
{
ID = 22647,
Type = RRS("Cooking"),
Skill = 60,
Cost = 400,
Locations = {
{ Region = RRS("Bloodmyst Isle"), Vendor = RRS("Fazu"), Team = "Alliance" },
{ Region = RRS("Ghostlands"), Vendor = RRS("Master Chef Mouldier"), Team = "Horde" },
},
},
{
ID = 27695,
Type = RRS("Cooking"),
Skill = 300,
Cost = 20000,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Doba"), Team = "Alliance" },
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Zurai"), Team = "Horde" },
},
},
{
ID = 27699,
Type = RRS("Cooking"),
Skill = 325,
Cost = 30000,
Locations = {
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Innkeeper Biribi"), Team = "Alliance" },
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Rungor"), Team = "Horde" },
},
},
{
ID = 27697,
Type = RRS("Cooking"),
Skill = 320,
Cost = 30000,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Nula the Butcher"), Team = "Horde" },
{ Region = RRS("Nagrand"), Vendor = RRS("Uriku"), Team = "Alliance" },
},
},
{
ID = 27698,
Type = RRS("Cooking"),
Skill = 320,
Cost = 30000,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Nula the Butcher"), Team = "Horde" },
{ Region = RRS("Nagrand"), Vendor = RRS("Uriku"), Team = "Alliance" },
},
},
{
ID = 27688,
Type = RRS("Cooking"),
Skill = 300,
Cost = 20000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Cookie One-Eye"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Sid Limbardi"), Team = "Alliance" },
},
},
{
ID = 27691,
Type = RRS("Cooking"),
Skill = 325,
Cost = 30000,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Nula the Butcher"), Team = "Horde" },
{ Region = RRS("Nagrand"), Vendor = RRS("Uriku"), Team = "Alliance" },
},
},
{
ID = 27700,
Type = RRS("Cooking"),
Skill = 350,
Cost = 30000,
Locations = {
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Innkeeper Biribi"), Team = "Alliance" },
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Rungor"), Team = "Horde" },
},
},
{
ID = 27689,
Type = RRS("Cooking"),
Skill = 310,
Cost = 2,
Notes = RRS("CostItem: 24245"),
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Mycah"), Team = "Neutral" },
},
},
{
ID = 27692,
Type = RRS("Cooking"),
Skill = 325,
Cost = 30000,
Locations = {
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Innkeeper Grilka"), Team = "Horde" },
{ Region = RRS("Terokkar Forest"), Vendor = RRS("Supply Officer Mills"), Team = "Alliance" },
},
},
{
ID = 27696,
Type = RRS("Cooking"),
Skill = 310,
Cost = 20000,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Juno Dufrain"), Team = "Neutral" },
},
},
{
ID = 27693,
Type = RRS("Cooking"),
Skill = 325,
Cost = 30000,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Nula the Butcher"), Team = "Horde" },
{ Region = RRS("Nagrand"), Vendor = RRS("Uriku"), Team = "Alliance" },
},
},
{
ID = 31674,
Type = RRS("Cooking"),
Skill = 335,
Cost = 30000,
Locations = {
{ Region = RRS("Blade's Edge Mountains"), Vendor = RRS("Sassa Weldwell"), Team = "Alliance" },
{ Region = RRS("Blade's Edge Mountains"), Vendor = RRS("Xerintha Ravenoak"), Team = "Neutral" },
},
},
{
ID = 31675,
Type = RRS("Cooking"),
Skill = 335,
Cost = 30000,
Locations = {
{ Region = RRS("Blade's Edge Mountains"), Vendor = RRS("Sassa Weldwell"), Team = "Alliance" },
{ Region = RRS("Blade's Edge Mountains"), Vendor = RRS("Xerintha Ravenoak"), Team = "Neutral" },
},
},
{
ID = 34413,
Type = RRS("Cooking"),
Skill = 325,
Cost = 10000,
Locations = {
{ Region = RRS("Orgrimmar"), Vendor = RRS("Penney Copperpinch"), Team = "Neutral" },
{ Region = RRS("Ironforge"), Vendor = RRS("Wulmort Jinglepocket"), Team = "Neutral" },
},
},
{
ID = 35564,
Type = RRS("Cooking"),
Skill = 250,
Cost = 18000,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Bale"), Team = "Horde" },
{ Region = RRS("Felwood"), Vendor = RRS("Malygen"), Team = "Alliance" },
},
},
{
ID = 35566,
Type = RRS("Cooking"),
Skill = 250,
Cost = 18000,
Locations = {
{ Region = RRS("Felwood"), Vendor = RRS("Bale"), Team = "Horde" },
{ Region = RRS("Felwood"), Vendor = RRS("Malygen"), Team = "Alliance" },
},
},
{
ID = 43035,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43032,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43029,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43033,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43036,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43024,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43030,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43026,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43018,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43022,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43023,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43028,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43031,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43034,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43020,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43025,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43027,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43019,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43037,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43021,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43505,
Type = RRS("Cooking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43506,
Type = RRS("Cooking"),
Skill = 425,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 43017,
Type = RRS("Cooking"),
Skill = 450,
Cost = 5,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 44954,
Type = RRS("Cooking"),
Skill = 400,
Cost = 3,
Notes = RRS("CostItem: 43016"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Derek Odds"), Team = "Alliance" },
{ Region = RRS("Dalaran"), Vendor = RRS("Misensi"), Team = "Horde" },
{ Region = RRS("Icecrown"), Vendor = RRS("Mera Mistrunner"), Team = "Neutral" },
},
},
{
ID = 44977,
Type = RRS("Cooking"),
Skill = 90,
Cost = 800,
Locations = {
{ Region = RRS("The Barrens"), Vendor = RRS("Grub"), Team = "Horde" },
{ Region = RRS("The Barrens"), Vendor = RRS("Prospector Khazgorm"), Team = "Alliance" },
},
},
},
},
 
[RRS("Fishing")] = {
Recipes = {
{
ID = 16083,
Type = RRS("Fishing"),
Skill = 125,
Cost = 10000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Old Man Heming"), Team = "Neutral" },
},
},
{
ID = 27532,
Type = RRS("Fishing"),
Skill = 275,
Cost = 50000,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Juno Dufrain"), Team = "Neutral" },
},
},
},
},
 
[RRS("First Aid")] = {
Recipes = {
{
ID = 16084,
Type = RRS("First Aid"),
Skill = 125,
Cost = 10000,
Locations = {
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Deneb Walker"), Team = "Alliance" },
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Balai Lok'Wein"), Team = "Horde" },
},
},
{
ID = 16112,
Type = RRS("First Aid"),
Skill = 180,
Cost = 2200,
Locations = {
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Deneb Walker"), Team = "Alliance" },
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Balai Lok'Wein"), Team = "Horde" },
},
},
{
ID = 16113,
Type = RRS("First Aid"),
Skill = 210,
Cost = 5000,
Locations = {
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Deneb Walker"), Team = "Alliance" },
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Balai Lok'Wein"), Team = "Horde" },
},
},
{
ID = 19442,
Type = RRS("First Aid"),
Skill = 300,
Cost = 100000,
Faction = RRS("Argent Dawn"),
Level = 6,
Locations = {
{ Region = RRS("Tirisfal Glades"), Vendor = RRS("Argent Quartermaster Hasana"), Team = "Neutral" },
{ Region = RRS("Western Plaguelands"), Vendor = RRS("Argent Quartermaster Lightspark"), Team = "Neutral" },
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Quartermaster Miranda Breechlock"), Team = "Neutral" },
},
},
{
ID = 22012,
Type = RRS("First Aid"),
Skill = 300,
Cost = 50000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Burko"), Team = "Alliance" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Aresella"), Team = "Horde" },
{ Region = RRS("Borean Tundra"), Vendor = RRS("Vix Chromeblaster"), Team = "Horde" },
},
},
{
ID = 21993,
Type = RRS("First Aid"),
Skill = 360,
Cost = 40000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Aresella"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Burko"), Team = "Alliance" },
{ Region = RRS("Borean Tundra"), Vendor = RRS("Vix Chromeblaster"), Team = "Horde" },
},
},
{
ID = 21992,
Type = RRS("First Aid"),
Skill = 330,
Cost = 20000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Aresella"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Burko"), Team = "Alliance" },
{ Region = RRS("Borean Tundra"), Vendor = RRS("Vix Chromeblaster"), Team = "Horde" },
},
},
},
},
 
[RRS("Jewelcrafting")] = {
Recipes = {
{
ID = 20854,
Type = RRS("Jewelcrafting"),
Skill = 110,
Cost = 1800,
Locations = {
{ Region = RRS("Darnassus"), Vendor = RRS("Mythrin'dir"), Team = "Alliance" },
{ Region = RRS("Undercity"), Vendor = RRS("Daniel Bartlett"), Team = "Horde" },
{ Region = RRS("The Exodar"), Vendor = RRS("Arred"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Gelanthis"), Team = "Horde" },
},
},
{
ID = 20970,
Type = RRS("Jewelcrafting"),
Skill = 120,
Cost = 1500,
Locations = {
{ Region = RRS("Thousand Needles"), Vendor = RRS("Jandia"), Team = "Horde" },
{ Region = RRS("Wetlands"), Vendor = RRS("Neal Allen"), Team = "Alliance" },
},
},
{
ID = 20855,
Type = RRS("Jewelcrafting"),
Skill = 125,
Cost = 1500,
Locations = {
{ Region = RRS("Ashenvale"), Vendor = RRS("Dalria"), Team = "Alliance" },
{ Region = RRS("The Barrens"), Vendor = RRS("Ranik"), Team = "Neutral" },
},
},
{
ID = 20971,
Type = RRS("Jewelcrafting"),
Skill = 125,
Cost = 1500,
Locations = {
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Christoph Jeffcoat"), Team = "Horde" },
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Micha Yance"), Team = "Alliance" },
},
},
{
ID = 20856,
Type = RRS("Jewelcrafting"),
Skill = 150,
Cost = 1500,
Locations = {
{ Region = RRS("Orgrimmar"), Vendor = RRS("Felika"), Team = "Horde" },
{ Region = RRS("Stormwind City"), Vendor = RRS("Edna Mullby"), Team = "Alliance" },
{ Region = RRS("The Exodar"), Vendor = RRS("Arred"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Gelanthis"), Team = "Horde" },
},
},
{
ID = 20973,
Type = RRS("Jewelcrafting"),
Skill = 150,
Cost = 2000,
Locations = {
{ Region = RRS("Hillsbrad Foothills"), Vendor = RRS("Micha Yance"), Team = "Alliance" },
{ Region = RRS("Desolace"), Vendor = RRS("Kireena"), Team = "Horde" },
},
},
{
ID = 20975,
Type = RRS("Jewelcrafting"),
Skill = 170,
Cost = 2500,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Burbik Gearspanner"), Team = "Alliance" },
{ Region = RRS("Undercity"), Vendor = RRS("Felicia Doan"), Team = "Horde" },
{ Region = RRS("The Exodar"), Vendor = RRS("Arred"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Gelanthis"), Team = "Horde" },
},
},
{
ID = 21942,
Type = RRS("Jewelcrafting"),
Skill = 225,
Cost = 6000,
Locations = {
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Hammon Karwn"), Team = "Alliance" },
{ Region = RRS("Arathi Highlands"), Vendor = RRS("Keena"), Team = "Horde" },
},
},
{
ID = 21948,
Type = RRS("Jewelcrafting"),
Skill = 250,
Cost = 7500,
Locations = {
{ Region = RRS("Ironforge"), Vendor = RRS("Burbik Gearspanner"), Team = "Alliance" },
{ Region = RRS("Thunder Bluff"), Vendor = RRS("Shadi Mistrunner"), Team = "Horde" },
{ Region = RRS("The Exodar"), Vendor = RRS("Arred"), Team = "Alliance" },
{ Region = RRS("Silvermoon City"), Vendor = RRS("Gelanthis"), Team = "Horde" },
},
},
{
ID = 21952,
Type = RRS("Jewelcrafting"),
Skill = 275,
Cost = 10000,
Locations = {
{ Region = RRS("Silithus"), Vendor = RRS("Mishta"), Team = "Neutral" },
},
},
{
ID = 21957,
Type = RRS("Jewelcrafting"),
Skill = 305,
Cost = 13500,
Locations = {
{ Region = RRS("Winterspring"), Vendor = RRS("Qia"), Team = "Neutral" },
},
},
{
ID = 21943,
Type = RRS("Jewelcrafting"),
Skill = 225,
Cost = 6000,
Locations = {
{ Region = RRS("Stranglethorn Vale"), Vendor = RRS("Nerrist"), Team = "Horde" },
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Helenia Olden"), Team = "Alliance" },
},
},
{
ID = 21941,
Type = RRS("Jewelcrafting"),
Skill = 215,
Cost = 5000,
Locations = {
{ Region = RRS("Dustwallow Marsh"), Vendor = RRS("Helenia Olden"), Team = "Alliance" },
{ Region = RRS("Swamp of Sorrows"), Vendor = RRS("Banalash"), Team = "Horde" },
},
},
{
ID = 21954,
Type = RRS("Jewelcrafting"),
Skill = 285,
Cost = 10000,
Locations = {
{ Region = RRS("Eastern Plaguelands"), Vendor = RRS("Jase Farlane"), Team = "Neutral" },
},
},
{
ID = 31401,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 120000,
Faction = RRS("The Violet Eye"),
Level = 6,
Locations = {
{ Region = RRS("Deadwind Pass"), Vendor = RRS("Apprentice Darius"), Team = "Neutral" },
},
},
{
ID = 31402,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 120000,
Faction = RRS("Cenarion Expedition"),
Level = 8,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 24180,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 120000,
Faction = RRS("Honor Hold"),
Level = 7,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 31358,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 120000,
Faction = RRS("Thrallmar"),
Level = 7,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 24179,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 120000,
Faction = RRS("Lower City"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nakodu"), Team = "Neutral" },
},
},
{
ID = 24181,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 120000,
Faction = RRS("Keepers of Time"),
Level = 7,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alurmi"), Team = "Neutral" },
},
},
{
ID = 24183,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 120000,
Faction = RRS("Cenarion Expedition"),
Level = 7,
Locations = {
{ Region = RRS("Zangarmarsh"), Vendor = RRS("Fedryen Swiftspear"), Team = "Neutral" },
},
},
{
ID = 24174,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("Keepers of Time"),
Level = 7,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alurmi"), Team = "Neutral" },
},
},
{
ID = 24177,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("The Aldor"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 24175,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("Lower City"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nakodu"), Team = "Neutral" },
},
},
{
ID = 24178,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("The Consortium"),
Level = 7,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 24176,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("The Scryers"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 30826,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("The Sha'tar"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 24182,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 120000,
Faction = RRS("The Sha'tar"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 23143,
Type = RRS("Jewelcrafting"),
Skill = 325,
Cost = 60000,
Faction = RRS("The Scryers"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 23134,
Type = RRS("Jewelcrafting"),
Skill = 325,
Cost = 60000,
Faction = RRS("The Consortium"),
Level = 6,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 23142,
Type = RRS("Jewelcrafting"),
Skill = 315,
Cost = 60000,
Faction = RRS("Honor Hold"),
Level = 5,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Logistics Officer Ulrike"), Team = "Alliance" },
},
},
{
ID = 31359,
Type = RRS("Jewelcrafting"),
Skill = 315,
Cost = 60000,
Faction = RRS("Thrallmar"),
Level = 5,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Quartermaster Urgronn"), Team = "Horde" },
},
},
{
ID = 23149,
Type = RRS("Jewelcrafting"),
Skill = 305,
Cost = 50000,
Faction = RRS("The Aldor"),
Level = 5,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 23136,
Type = RRS("Jewelcrafting"),
Skill = 305,
Cost = 50000,
Faction = RRS("The Consortium"),
Level = 5,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 23155,
Type = RRS("Jewelcrafting"),
Skill = 325,
Cost = 60000,
Faction = RRS("The Consortium"),
Level = 6,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 23138,
Type = RRS("Jewelcrafting"),
Skill = 325,
Cost = 60000,
Faction = RRS("Lower City"),
Level = 5,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nakodu"), Team = "Neutral" },
},
},
{
ID = 23151,
Type = RRS("Jewelcrafting"),
Skill = 325,
Cost = 60000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 23145,
Type = RRS("Jewelcrafting"),
Skill = 305,
Cost = 50000,
Faction = RRS("The Aldor"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Endarin"), Team = "Neutral" },
},
},
{
ID = 23133,
Type = RRS("Jewelcrafting"),
Skill = 315,
Cost = 60000,
Faction = RRS("The Scryers"),
Level = 5,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Quartermaster Enuril"), Team = "Neutral" },
},
},
{
ID = 23146,
Type = RRS("Jewelcrafting"),
Skill = 315,
Cost = 60000,
Faction = RRS("The Consortium"),
Level = 5,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 28291,
Type = RRS("Jewelcrafting"),
Skill = 325,
Cost = 60000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 23147,
Type = RRS("Jewelcrafting"),
Skill = 325,
Cost = 60000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 23153,
Type = RRS("Jewelcrafting"),
Skill = 305,
Cost = 50000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 23150,
Type = RRS("Jewelcrafting"),
Skill = 315,
Cost = 60000,
Faction = RRS("The Consortium"),
Level = 6,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 23131,
Type = RRS("Jewelcrafting"),
Skill = 305,
Cost = 50000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 28596,
Type = RRS("Jewelcrafting"),
Skill = 305,
Cost = 50000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 23148,
Type = RRS("Jewelcrafting"),
Skill = 300,
Cost = 40000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 25910,
Type = RRS("Jewelcrafting"),
Skill = 365,
Cost = 120000,
Faction = RRS("Keepers of Time"),
Level = 6,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alurmi"), Team = "Neutral" },
},
},
{
ID = 23137,
Type = RRS("Jewelcrafting"),
Skill = 315,
Cost = 60000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 23144,
Type = RRS("Jewelcrafting"),
Skill = 300,
Cost = 40000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 23135,
Type = RRS("Jewelcrafting"),
Skill = 300,
Cost = 40000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 25904,
Type = RRS("Jewelcrafting"),
Skill = 365,
Cost = 120000,
Faction = RRS("The Sha'tar"),
Level = 5,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 23141,
Type = RRS("Jewelcrafting"),
Skill = 305,
Cost = 50000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 23140,
Type = RRS("Jewelcrafting"),
Skill = 300,
Cost = 40000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 23152,
Type = RRS("Jewelcrafting"),
Skill = 300,
Cost = 40000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 25908,
Type = RRS("Jewelcrafting"),
Skill = 365,
Cost = 120000,
Faction = RRS("The Consortium"),
Level = 6,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 23130,
Type = RRS("Jewelcrafting"),
Skill = 300,
Cost = 40000,
Locations = {
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Kalaen"), Team = "Horde" },
{ Region = RRS("Hellfire Peninsula"), Vendor = RRS("Tatiana"), Team = "Alliance" },
},
},
{
ID = 25903,
Type = RRS("Jewelcrafting"),
Skill = 365,
Cost = 120000,
Faction = RRS("The Consortium"),
Level = 7,
Locations = {
{ Region = RRS("Karazhan"), Vendor = RRS("Ythyar"), Team = "Neutral" },
},
},
{
ID = 25902,
Type = RRS("Jewelcrafting"),
Skill = 365,
Cost = 120000,
Faction = RRS("The Consortium"),
Level = 6,
Locations = {
{ Region = RRS("Karazhan"), Vendor = RRS("Ythyar"), Team = "Neutral" },
},
},
{
ID = 32412,
Type = RRS("Jewelcrafting"),
Skill = 365,
Cost = 0,
Faction = RRS("The Consortium"),
Level = 8,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
},
},
{
ID = 32299,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32274,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32283,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32290,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32311,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32277,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32309,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 7,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32293,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32306,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32301,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32300,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32312,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32305,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32288,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32304,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32310,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32302,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 7,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32282,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32291,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32286,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32287,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32284,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32281,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32294,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 5,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 32308,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 7,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 24208,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 120000,
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Aldraan"), Team = "Alliance" },
{ Region = RRS("Nagrand"), Vendor = RRS("Coreiel"), Team = "Horde" },
},
},
{
ID = 32292,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 7,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 33622,
Type = RRS("Jewelcrafting"),
Skill = 365,
Cost = 120000,
Faction = RRS("The Consortium"),
Level = 8,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 33783,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 4,
Notes = RRS("CostItem: 26044"),
Locations = {
{ Region = RRS("Nagrand"), Vendor = RRS("Quartermaster Davian Vaclav"), Team = "Alliance" },
{ Region = RRS("Nagrand"), Vendor = RRS("Quartermaster Jaffrey Noreliqe"), Team = "Horde" },
},
},
{
ID = 33159,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("The Sha'tar"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 33156,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("The Consortium"),
Level = 7,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 33305,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("The Consortium"),
Level = 7,
Locations = {
{ Region = RRS("Netherstorm"), Vendor = RRS("Karaaz"), Team = "Neutral" },
{ Region = RRS("Nagrand"), Vendor = RRS("Paulsta'ats"), Team = "Neutral" },
},
},
{
ID = 33160,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("Keepers of Time"),
Level = 6,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alurmi"), Team = "Neutral" },
},
},
{
ID = 33157,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("Lower City"),
Level = 7,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Nakodu"), Team = "Neutral" },
},
},
{
ID = 33155,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("The Sha'tar"),
Level = 6,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Almaador"), Team = "Neutral" },
},
},
{
ID = 33158,
Type = RRS("Jewelcrafting"),
Skill = 360,
Cost = 120000,
Faction = RRS("Keepers of Time"),
Level = 7,
Locations = {
{ Region = RRS("Tanaris"), Vendor = RRS("Alurmi"), Team = "Neutral" },
},
},
{
ID = 35505,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 150000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35502,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 150000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35697,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 250000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35699,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 250000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35695,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 250000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35696,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 250000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35698,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 250000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35708,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 120000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
},
},
{
ID = 35769,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
},
},
{
ID = 35766,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
},
},
{
ID = 35767,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
},
},
{
ID = 35768,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Eldara Dawnrunner"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
},
},
{
ID = 35264,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35244,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35261,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35250,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35263,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35249,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35260,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35248,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35262,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35256,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35245,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35255,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35246,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 5,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35269,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35254,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35253,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35268,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35239,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35266,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35240,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35238,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35251,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 6,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35252,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35259,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35241,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35271,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 7,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35267,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35270,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35258,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35242,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35247,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35265,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35257,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35243,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
},
},
{
ID = 35765,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 35763,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 35762,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 35764,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 60000,
Faction = RRS("The Scale of the Sands"),
Level = 6,
Locations = {
{ Region = RRS("Hyjal Summit"), Vendor = RRS("Indormi"), Team = "Neutral" },
},
},
{
ID = 42652,
Type = RRS("Jewelcrafting"),
Skill = 440,
Cost = 6,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42649,
Type = RRS("Jewelcrafting"),
Skill = 430,
Cost = 6,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42648,
Type = RRS("Jewelcrafting"),
Skill = 430,
Cost = 6,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42651,
Type = RRS("Jewelcrafting"),
Skill = 440,
Cost = 6,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42653,
Type = RRS("Jewelcrafting"),
Skill = 440,
Cost = 6,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42650,
Type = RRS("Jewelcrafting"),
Skill = 430,
Cost = 6,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42298,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41576,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42299,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42300,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41704,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 5,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42301,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41577,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41705,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 5,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41706,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 5,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41697,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41692,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42302,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41578,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41693,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 35325,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 120000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
},
},
{
ID = 42303,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41582,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41708,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 5,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41694,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41709,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 5,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41696,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41689,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42304,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41581,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42305,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41686,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42306,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41702,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41579,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 35322,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 120000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
},
},
{
ID = 42307,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41690,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 35323,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 120000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
},
},
{
ID = 41703,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41710,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 5,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41707,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 5,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41580,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42308,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41701,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42309,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41699,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42310,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42311,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42138,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42312,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41687,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42313,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42314,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 42315,
Type = RRS("Jewelcrafting"),
Skill = 370,
Cost = 2,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41711,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 5,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41688,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41698,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 37504,
Type = RRS("Jewelcrafting"),
Skill = 375,
Cost = 500000,
Faction = RRS("Shattered Sun Offensive"),
Level = 8,
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Ontuvo"), Team = "Neutral" },
{ Region = RRS("Isle of Quel'Danas"), Vendor = RRS("Shaani"), Team = "Neutral" },
},
},
{
ID = 43597,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 6,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41730,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41732,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41742,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 24,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41743,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 24,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41744,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 24,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41733,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41740,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41727,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41739,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41734,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 43317,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 43320,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 43318,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 43497,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 43485,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41735,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41738,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41728,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41736,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 41737,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 12,
Notes = RRS("CostItem: 43228"),
Locations = {
{ Region = RRS("Wintergrasp"), Vendor = RRS("Knight Dameron"), Team = "Alliance" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Morgan Day"), Team = "Neutral" },
{ Region = RRS("Wintergrasp"), Vendor = RRS("Stone Guard Mukar"), Team = "Horde" },
},
},
{
ID = 43319,
Type = RRS("Jewelcrafting"),
Skill = 420,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
},
},
{
ID = 41563,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41564,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41565,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41575,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41559,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41573,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41566,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41569,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41572,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41560,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41570,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41571,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 0,
Locations = {
{ Region = RRS("Stormwind City"), Vendor = RRS("Captain O'Neal"), Team = "Alliance" },
{ Region = RRS("Orgrimmar"), Vendor = RRS("Lady Palanseer"), Team = "Horde" },
},
},
{
ID = 41722,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 40000,
Faction = RRS("The Wyrmrest Accord"),
Level = 8,
Locations = {
{ Region = RRS("Dragonblight"), Vendor = RRS("Cielstrasza"), Team = "Neutral" },
},
},
{
ID = 41725,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 40000,
Faction = RRS("Knights of the Ebon Blade"),
Level = 8,
Locations = {
{ Region = RRS("Icecrown"), Vendor = RRS("Duchess Mynx"), Team = "Neutral" },
},
},
{
ID = 41726,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 40000,
Faction = RRS("Argent Crusade"),
Level = 7,
Locations = {
{ Region = RRS("Icecrown"), Vendor = RRS("Veteran Crusader Aliocha Segard"), Team = "Neutral" },
},
},
{
ID = 41723,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 40000,
Faction = RRS("Frenzyheart Tribe"),
Level = 7,
Locations = {
{ Region = RRS("Sholazar Basin"), Vendor = RRS("Tanak"), Team = "Neutral" },
},
},
{
ID = 41718,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 40000,
Faction = RRS("Kirin Tor"),
Level = 8,
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Archmage Alvareaux"), Team = "Neutral" },
},
},
{
ID = 41720,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 40000,
Faction = RRS("The Sons of Hodir"),
Level = 8,
Locations = {
{ Region = RRS("The Storm Peaks"), Vendor = RRS("Lillehoff"), Team = "Neutral" },
},
},
{
ID = 41724,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 40000,
Faction = RRS("The Oracles"),
Level = 7,
Locations = {
{ Region = RRS("Sholazar Basin"), Vendor = RRS("Geen"), Team = "Alliance" },
},
},
{
ID = 41721,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 40000,
Faction = RRS("Knights of the Ebon Blade"),
Level = 7,
Locations = {
{ Region = RRS("Icecrown"), Vendor = RRS("Duchess Mynx"), Team = "Neutral" },
},
},
{
ID = 41562,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 20000,
Faction = RRS("Knights of the Ebon Blade"),
Level = 5,
Locations = {
{ Region = RRS("Icecrown"), Vendor = RRS("Duchess Mynx"), Team = "Neutral" },
},
},
{
ID = 41574,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 20000,
Faction = RRS("The Kalu'ak"),
Level = 6,
Locations = {
{ Region = RRS("Dragonblight"), Vendor = RRS("Sairuk"), Team = "Neutral" },
{ Region = RRS("Howling Fjord"), Vendor = RRS("Tanaika"), Team = "Neutral" },
},
},
{
ID = 41561,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 20000,
Faction = RRS("Frenzyheart Tribe"),
Level = 5,
Locations = {
{ Region = RRS("Sholazar Basin"), Vendor = RRS("Tanak"), Team = "Neutral" },
},
},
{
ID = 41568,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 20000,
Faction = RRS("The Kalu'ak"),
Level = 5,
Locations = {
{ Region = RRS("Dragonblight"), Vendor = RRS("Sairuk"), Team = "Neutral" },
{ Region = RRS("Howling Fjord"), Vendor = RRS("Tanaika"), Team = "Neutral" },
},
},
{
ID = 41567,
Type = RRS("Jewelcrafting"),
Skill = 350,
Cost = 20000,
Faction = RRS("The Oracles"),
Level = 5,
Locations = {
{ Region = RRS("Sholazar Basin"), Vendor = RRS("Geen"), Team = "Alliance" },
},
},
{
ID = 41747,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
},
},
{
ID = 41719,
Type = RRS("Jewelcrafting"),
Skill = 390,
Cost = 3,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Icecrown"), Vendor = RRS("Anuur"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Tiffany Cartier"), Team = "Neutral" },
},
},
{
ID = 47010,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46934,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46917,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46919,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46930,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47015,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46900,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46949,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46941,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47020,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46918,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46952,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47016,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46897,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46912,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46953,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47019,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46923,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46904,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46921,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47012,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47008,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46936,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46942,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46945,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Inessera"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46948,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46910,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46901,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46909,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47021,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Inessera"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46947,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46927,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46905,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46943,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46932,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 49112,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46914,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Shattrath City"), Vendor = RRS("Inessera"), Team = "Neutral" },
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46950,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46920,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46956,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46944,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46937,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46933,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46911,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47007,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46940,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47022,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47018,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46928,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46939,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46916,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46903,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46913,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46938,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46907,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46929,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46924,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46935,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46925,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47017,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47023,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
{ Region = RRS("Shattrath City"), Vendor = RRS("Inessera"), Team = "Neutral" },
},
},
{
ID = 46898,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46926,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46922,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46906,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46908,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46946,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46931,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46902,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46915,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46951,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 46899,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
{
ID = 47011,
Type = RRS("Jewelcrafting"),
Skill = 450,
Cost = 4,
Notes = RRS("CostItem: 41596"),
Locations = {
{ Region = RRS("Dalaran"), Vendor = RRS("Timothy Jones"), Team = "Neutral" },
},
},
},
},
 
[RRS("Inscription")] = {
Recipes = {
},
},
 
}
 
trunk/RecipeRadar/MinimapButton.xml New file
0,0 → 1,82
<?xml version="1.0" encoding="utf-8" ?>
 
<UI xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
 
<Script file="MinimapButton.lua"/>
 
<Frame name="RecipeRadarMinimapButtonFrame" parent="Minimap" enableMouse="true" hidden="false" frameStrata="LOW">
 
<Size>
<AbsDimension x="32" y="32"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="Minimap" relativePoint="RIGHT">
<Offset>
<AbsDimension x="2" y="0"/>
</Offset>
</Anchor>
</Anchors>
 
<Frames>
 
<Frame name="RecipeRadarMinimapButtonHighlightFrame" hidden="true">
<Size>
<AbsDimension x="32" y="32"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<Texture alphaMode="ADD" file="Interface\Minimap\UI-Minimap-ZoomButton-Highlight"/>
</Layer>
</Layers>
</Frame>
 
<Button name="RecipeRadarMinimapButton">
<Size>
<AbsDimension x="32" y="32"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
<NormalTexture file="Interface\AddOns\RecipeRadar\Images\Misc\MinimapButtonUp"/>
<PushedTexture file="Interface\AddOns\RecipeRadar\Images\Misc\MinimapButtonDown"/>
<HighlightTexture alphaMode="ADD" file="Interface\Minimap\UI-Minimap-ZoomButton-Highlight"/>
<Scripts>
<OnLoad>
self.total = 0
self.cntr = 0
self.sign = 1
RECIPERADAR_FLASH_MINIMAP_BUTTON = false
</OnLoad>
<OnClick>
RecipeRadar_MinimapButton_OnClick(self, button)
</OnClick>
<OnUpdate>
RecipeRadar_MinimapButton_OnUpdate(self, elapsed)
</OnUpdate>
<OnEnter>
GameTooltip_SetDefaultAnchor(GameTooltip, UIParent)
GameTooltip:SetText(RRS("Recipe Radar"))
</OnEnter>
<OnLeave>
GameTooltip:Hide()
</OnLeave>
</Scripts>
</Button>
 
</Frames>
 
</Frame>
</UI>
trunk/RecipeRadar/Bindings.xml New file
0,0 → 1,7
<?xml version="1.0" encoding="utf-8" ?>
 
<Bindings>
<Binding name="RECIPERADAR_TOGGLE" header="RECIPERADAR_HEADER">
RecipeRadar_Toggle()
</Binding>
</Bindings>
trunk/RecipeRadar/Maps.xml New file
0,0 → 1,122
<?xml version="1.0" encoding="utf-8" ?>
 
<UI xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
 
<Script file="Maps.lua"/>
<Script file="Minimap.lua"/>
<Script file="Worldmap.lua"/>
 
<Button name="RecipeRadarMinimapIconTemplate" hidden="true" parent="Minimap" virtual="true">
<Size>
<AbsDimension x="12" y="12"/>
</Size>
<Scripts>
<OnLoad>
self:RegisterForClicks("RightButtonUp")
</OnLoad>
<OnEnter>
RecipeRadar_Maps_SetTooltip(GameTooltip, self)
</OnEnter>
<OnLeave>
GameTooltip:Hide()
</OnLeave>
<OnClick>
if (button and button == "RightButton") then
HideDropDownMenu(1)
RecipeRadar_ContextMenuGlobal.Vendor = self.Vendor
ToggleDropDownMenu(1, nil, UnmapVendorDropDown, self:GetName(), 6, 6)
end
</OnClick>
</Scripts>
<NormalTexture file="Interface\Addons\RecipeRadar\Images\Misc\Scroll"/>
</Button>
 
<Button name="RecipeRadarMinimapIcon1" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon2" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon3" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon4" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon5" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon6" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon7" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon8" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon9" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon10" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon11" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon12" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon13" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon14" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon15" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon16" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon17" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon18" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon19" inherits="RecipeRadarMinimapIconTemplate"/>
<Button name="RecipeRadarMinimapIcon20" inherits="RecipeRadarMinimapIconTemplate"/>
 
<Button name="RecipeRadarWorldmapIconTemplate" hidden="true" parent="WorldMapFrame" virtual="true">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Scripts>
<OnLoad>
self:SetFrameLevel(self:GetFrameLevel() + 2)
self:RegisterForClicks("RightButtonUp")
</OnLoad>
<OnEnter>
RecipeRadar_Maps_SetTooltip(WorldMapTooltip, self)
</OnEnter>
<OnLeave>
WorldMapTooltip:Hide()
</OnLeave>
<OnClick>
if (button and button == "RightButton") then
HideDropDownMenu(1)
RecipeRadar_ContextMenuGlobal.Vendor = self.Vendor
ToggleDropDownMenu(1, nil, UnmapVendorDropDown, self:GetName(), 6, 6)
end
</OnClick>
</Scripts>
<NormalTexture setAllPoints="true" file="Interface\Addons\RecipeRadar\Images\Misc\Scroll"/>
</Button>
 
<Button name="RecipeRadarWorldmapIcon1" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon2" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon3" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon4" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon5" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon6" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon7" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon8" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon9" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon10" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon11" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon12" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon13" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon14" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon15" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon16" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon17" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon18" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon19" inherits="RecipeRadarWorldmapIconTemplate"/>
<Button name="RecipeRadarWorldmapIcon20" inherits="RecipeRadarWorldmapIconTemplate"/>
 
<Frame name="UnmapVendorDropDown" inherits="UIDropDownMenuTemplate" hidden="true">
<Size>
<AbsDimension x="10" y="10"/>
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="-10" y="-50"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
RecipeRadar_Maps_ContextMenuOnLoad(self)
</OnLoad>
</Scripts>
</Frame>
 
</UI>
trunk/RecipeRadar/RecipesTab.lua New file
0,0 → 1,509
 
-- RecipesTab.lua: handles clicking and drawing for the Recipes tab
-- $Id: RecipesTab.lua 1049 2008-10-29 14:57:03Z jnmiller $
 
------------------------------------------------------------------------
-- Main window refresh code
------------------------------------------------------------------------
 
function RecipeRadar_RecipesTab_Init()
 
-- reset some of the RegionData GUI settings just once here
for i = 1, RECIPERADAR_VENDORS_DISPLAYED do
 
local button = _G["RecipeRadarVendor" .. i]
 
-- reset items' horizontal offsets
if (i == 1) then
button:SetPoint("TOPLEFT", "RecipeRadarFrame",
"TOPLEFT", 22, -96)
else
button:SetPoint("TOPLEFT", "RecipeRadarVendor" .. i - 1,
"BOTTOMLEFT", 0, 0)
end
 
-- turn off highlights and textures for these items
_G["RecipeRadarVendor" .. i .. "Check"]:Hide()
 
-- unset to preclude tooltips for these items
button.Recipe = nil
 
end
 
RecipeRadar_Prof1DropDown:Hide()
RecipeRadar_Prof2DropDown:Show()
 
RecipeRadar_SetActiveTab(2)
 
RecipeRadar_RecipesTab_Update()
RecipeRadarListScrollFrameScrollBar:SetValue(
RecipeRadarRecipesTabFrame.ScrollValue)
 
end
 
function RecipeRadar_RecipesTab_OnClick(self)
 
if (RecipeRadar_Options.ActiveTab == 2) then
return
end
 
PlaySound("igSpellBookClose")
RecipeRadar_RecipesTab_Init()
 
end
 
function RecipeRadar_RecipesTab_ExpandAll(expand)
 
local prof = RecipeRadar_RecipeData[RecipeRadar_Options.CurrentProfession]
if (not prof) then return end
 
for _, recipe in pairs(prof.Recipes) do
recipe.IsExpanded = expand
end
 
RecipeRadar_SelectFirstRecipe()
RecipeRadar_FrameUpdate()
 
end
 
function RecipeRadar_RecipesTab_Update()
 
if (RecipeRadar_Options.ActiveTab ~= 2) then
return
end
 
local prof = RecipeRadar_Options.CurrentProfession
 
TitleBarText:SetText(RRS("Recipe Radar") .. " - " .. prof .. " " ..
format(TEXT(PARENS_TEMPLATE), RecipeRadar_SkillDB_GetRank(prof)))
 
-- some globals for the Update() procedure
RecipeRadar_row = 0
RecipeRadar_ContextMenuGlobal.RecipesTabHasExpanded = false
RecipeRadar_ContextMenuGlobal.RecipesTabHasCollapsed = false
 
RecipeRadarHighlightFrame:Hide()
 
RecipeRadar_SortRecipes(RecipeRadar_RecipeData[prof])
for k, v in pairs(RecipeRadar_RecipeData[prof].Recipes) do
RecipeRadar_RecipesTab_AddRecipe(k, v)
end
 
-- update the scroll position and the width of the highlight frame
FauxScrollFrame_Update(RecipeRadarListScrollFrame, RecipeRadar_row,
RECIPERADAR_VENDORS_DISPLAYED, RECIPERADAR_VENDOR_HEIGHT,
nil, nil, nil, RecipeRadarHighlightFrame, 361, 384)
 
-- hide unused item buttons
for i = 1, RECIPERADAR_VENDORS_DISPLAYED do
local button = _G["RecipeRadarVendor" .. i]
if (i > RecipeRadar_row) then
button:Hide()
else
if (RecipeRadarListScrollFrame:IsVisible()) then
button:SetWidth(361)
else
button:SetWidth(384)
end
end
end
 
-- update the current selection (or lack thereof)
if (not prof or not RecipeRadarRecipesTabFrame.SelectedRecipe) then
RecipeRadar_HideRecipeDetails()
elseif (RecipeRadarRecipesTabFrame.SelectedVendor) then
RecipeRadar_SetSelection(RecipeRadarRecipesTabFrame.SelectedVendor,
RecipeRadarRecipesTabFrame.SelectedRecipe,
RecipeRadarRecipesTabFrame.SelectedLocation)
RecipeRadar_ShowRecipeDetails()
end
 
end
 
function RecipeRadar_RecipesTab_AddRecipe(key, recipe)
 
if (RecipeRadar_IsRecipeFiltered(recipe) or
not RecipeRadar_RecipeHasLocations(recipe)) then
return
end
 
RecipeRadar_row = RecipeRadar_row + 1
 
local offset = FauxScrollFrame_GetOffset(RecipeRadarListScrollFrame)
local index = RecipeRadar_row - offset
 
-- only do the following if we're in the scroll frame's visible portion
if (index > 0 and index <= RECIPERADAR_VENDORS_DISPLAYED) then
 
local button = _G["RecipeRadarVendor" .. index]
 
-- generic list item drawing
RecipeRadar_DrawListItem(index, recipe)
 
button:UnlockHighlight()
_G["RecipeRadarVendor" .. index .. "Check"]:Hide()
_G["RecipeRadarVendor" .. index .. "Highlight"]:SetTexture(
"Interface\\Buttons\\UI-PlusButton-Hilight")
 
if (recipe.IsExpanded) then
RecipeRadar_ContextMenuGlobal.RecipesTabHasExpanded = true
button:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up")
else
RecipeRadar_ContextMenuGlobal.RecipesTabHasCollapsed = true
button:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up")
return
end
 
else
 
-- if the recipe is collapsed, we don't need to traverse its locations
if (recipe.IsExpanded) then
RecipeRadar_ContextMenuGlobal.RecipesTabHasExpanded = true
else
RecipeRadar_ContextMenuGlobal.RecipesTabHasCollapsed = true
return
end
 
end
 
RecipeRadar_SortLocations(recipe)
 
for _, location in pairs(recipe.Locations) do
 
-- skip and unmap filtered recipes
if (location.IsFiltered) then
 
local vendor = RecipeRadar_RecipesTab_FindVendor(
location.Region, location.Vendor)
if (vendor.IsMapped) then
RecipeRadar_Maps_RemoveVendor(vendor)
end
 
else
 
RecipeRadar_row = RecipeRadar_row + 1
index = RecipeRadar_row - offset;
 
-- only do this if we're in the scroll frame's visible portion
if (index > 0 and index <= RECIPERADAR_VENDORS_DISPLAYED) then
 
local button = _G["RecipeRadarVendor" .. index]
 
-- turn off highlighting textures for these items
button:SetNormalTexture("")
_G["RecipeRadarVendor" .. index .. "Highlight"]:SetTexture("")
 
-- basic drawing code
button:SetText(location.Region)
VendorNameDummyText:SetText(location.Region)
button:SetNormalFontObject(RecipeRadarGray)
button:SetHighlightFontObject(RecipeRadarGrayHighlight)
button:SetID(index)
button:Show()
 
-- drawing code for the little subtext field
local subtext = _G["RecipeRadarVendor" .. index .. "SubText"]
local vendor = RecipeRadar_RecipesTab_FindVendor(
location.Region, location.Vendor)
local content = location.Vendor
if (vendor.Notes and vendor.Notes ~= "") then
content = content .. " - " ..
RecipeRadar_FormatVendorNote(vendor.Notes)
end
content = format(TEXT(PARENS_TEMPLATE), content)
subtext:SetText(content)
VendorNameDummySubText:SetText(content)
button.r = RecipeRadar_Teams[vendor.Team].Color.r
button.g = RecipeRadar_Teams[vendor.Team].Color.g
button.b = RecipeRadar_Teams[vendor.Team].Color.b
subtext:SetTextColor(
RecipeRadar_Teams[vendor.Team].Color.r,
RecipeRadar_Teams[vendor.Team].Color.g,
RecipeRadar_Teams[vendor.Team].Color.b)
subtext:SetPoint("LEFT", "RecipeRadarVendor" .. index .. "Text",
"RIGHT", 10, 0)
subtext:Show()
 
-- unset to indicate this is a vendor item for the tooltip stuff
button.Recipe = nil
 
-- show or hide the little mapped indicator check mark
local check = _G["RecipeRadarVendor" .. index .. "Check"]
if (vendor.IsMapped) then
local check_offset = VendorNameDummyText:GetWidth() + 42
check_offset = check_offset + VendorNameDummySubText:GetWidth()
check:SetPoint("TOPLEFT", "RecipeRadarVendor" .. index, "TOPLEFT",
check_offset, 0)
check:Show()
else
check:Hide()
end
 
-- selected recipes look a little bit different
if (RecipeRadarRecipesTabFrame.SelectedLocation == location.Region and
RecipeRadarRecipesTabFrame.SelectedRecipe == recipe and
RecipeRadarRecipesTabFrame.SelectedVendor.Name == location.Vendor) then
RecipeRadarHighlightFrame:SetPoint("TOPLEFT",
"RecipeRadarVendor" .. index, "TOPLEFT", -2, 0)
RecipeRadarHighlightFrame:Show()
button:LockHighlight()
else
button:UnlockHighlight()
end
 
end
 
end
 
end
 
end
 
-- Handles a vendor/recipe button click in the main scroll frame. The
-- supplied index is row + offset in the scroll frame. index may also
-- be set to -1 to select the first visible recipe.
function RecipeRadar_RecipesTab_ServiceClickIndex(self, index, button)
 
local prof = RecipeRadar_Options.CurrentProfession
 
if (not button) then button = "LeftButton" end
 
-- save this index so we can return to it on tab switch
RecipeRadarRecipesTabFrame.SelectedIndex = index
 
-- sort the recipes so we're counting in the right order
RecipeRadar_SortRecipes(RecipeRadar_RecipeData[prof])
local row = 0
 
-- iterate through each recipe, counting up to index
for _, recipe in pairs(RecipeRadar_RecipeData[prof].Recipes) do
 
-- if this recipe is filtered, it does not count towards our index
if (not RecipeRadar_IsRecipeFiltered(recipe) and
RecipeRadar_RecipeHasLocations(recipe)) then
 
row = row + 1
 
if (row == index) then
 
if (button == "LeftButton") then
 
RecipeRadar_RecipesTab_ToggleExpanded(recipe)
return
 
elseif (button == "RightButton") then
 
HideDropDownMenu(1)
RecipeRadar_ContextMenuGlobal.Recipe = recipe
RecipeRadar_ContextMenuGlobal.Location = nil
RecipeRadar_RecipesTab_ContextMenuOnLoad()
ToggleDropDownMenu(1, nil, RecipesTabDropDown,
self:GetName(), GetCursorPosition(), 0)
return
 
end
 
end
 
if (recipe.IsExpanded) then
 
-- sort the locations so we're counting in the right order
RecipeRadar_SortLocations(recipe)
local vendor_index = row
 
-- iterate through each recipe, counting up to index
for _, location in pairs(recipe.Locations) do
 
if (not location.IsFiltered) then
 
row = row + 1
 
-- if index is -1, this catches on the first iteration
if (row == index or index == -1) then
 
if (button == "LeftButton") then
 
local vendor = RecipeRadar_RecipesTab_FindVendor(
location.Region, location.Vendor)
 
-- if the shift key is down, (un)map this vendor
if (IsShiftKeyDown()) then
if (vendor.IsMapped) then
RecipeRadar_Maps_RemoveVendor(vendor)
else
RecipeRadar_Maps_AddVendor(vendor, location.Region)
end
end
 
-- select this location and show its details
RecipeRadarRecipesTabFrame.SelectedVendor = vendor
RecipeRadarRecipesTabFrame.SelectedRecipe = recipe
RecipeRadarRecipesTabFrame.SelectedLocation =
location.Region
RecipeRadar_SetSelection(vendor, recipe, location.Region)
RecipeRadar_ShowRecipeDetails()
return
 
elseif (button == "RightButton") then
 
HideDropDownMenu(1)
RecipeRadar_ContextMenuGlobal.Recipe = recipe
RecipeRadar_ContextMenuGlobal.Location = location
RecipeRadar_RecipesTab_ContextMenuOnLoad()
ToggleDropDownMenu(1, nil, RecipesTabDropDown,
self:GetName(), GetCursorPosition(), 0)
return
 
end
 
end
 
end
 
end
 
end
 
end
 
end
 
-- if the index was not found, select nothing
RecipeRadar_RecipesTab_ClearSelection()
RecipeRadar_HideRecipeDetails()
 
end
 
function RecipeRadar_RecipesTab_ToggleExpanded(recipe)
 
if (recipe.IsExpanded) then
recipe.IsExpanded = false
else
recipe.IsExpanded = true
end
RecipeRadar_RecipesTab_ClearSelection()
RecipeRadar_FrameUpdate()
 
end
 
-- Retrieves a vendor's info table from her name and region.
function RecipeRadar_RecipesTab_FindVendor(region_name, vendor_name)
 
local region_data = RecipeRadar_RegionData[region_name]
if (not region_data) then return end
 
for _, vendor in pairs(region_data.Vendors) do
if (vendor.Name == vendor_name) then
return vendor
end
end
 
return nil
 
end
 
function RecipeRadar_RecipesTab_ClearSelection()
 
RecipeRadarRecipesTabFrame.SelectedVendor = nil
RecipeRadarRecipesTabFrame.SelectedRecipe = nil
RecipeRadarRecipesTabFrame.SelectedLocation = nil
 
end
 
-- OnLoad event handler for the right-click context menu for map buttons.
function RecipeRadar_RecipesTab_ContextMenuOnLoad()
 
UIDropDownMenu_Initialize(RecipesTabDropDown,
RecipeRadar_RecipesTab_ContextMenuInit, "MENU")
 
end
 
-- Initialization routine for the right-click context menu for map buttons.
function RecipeRadar_RecipesTab_ContextMenuInit()
 
if (not RecipeRadar_ContextMenuGlobal.Recipe) then return end
 
if (RecipeRadar_ContextMenuGlobal.Location) then
 
local vendor = RecipeRadar_RecipesTab_FindVendor(
RecipeRadar_ContextMenuGlobal.Location.Region,
RecipeRadar_ContextMenuGlobal.Location.Vendor)
 
-- putting in the vendor's name as the title of the popup
local item = { }
item.text = RecipeRadar_ContextMenuGlobal.Location.Vendor
item.isTitle = 1
item.notCheckable = 1
UIDropDownMenu_AddButton(item)
 
item = { }
if (vendor.IsMapped) then
item.text = RRS("Unmap Vendor")
item.value = "unmap"
else
item.text = RRS("Map Vendor")
item.value = "map"
end
item.notCheckable = 1
item.func = RecipeRadar_RecipesTab_ContextMenuOnClick
UIDropDownMenu_AddButton(item)
 
end
 
item = { }
item.text = RRS("Expand All")
item.value = "expandall"
item.notCheckable = 1
item.func = RecipeRadar_RecipesTab_ContextMenuOnClick
if (not RecipeRadar_ContextMenuGlobal.RecipesTabHasCollapsed) then
item.disabled = 1
end
UIDropDownMenu_AddButton(item)
 
item = { }
item.text = RRS("Collapse All")
item.value = "collapseall"
item.notCheckable = 1
item.func = RecipeRadar_RecipesTab_ContextMenuOnClick
if (not RecipeRadar_ContextMenuGlobal.RecipesTabHasExpanded) then
item.disabled = 1
end
UIDropDownMenu_AddButton(item)
 
item = { }
item.text = CANCEL
item.notCheckable = 1
item.func = RecipeRadar_RecipesTab_ContextMenuOnClick
UIDropDownMenu_AddButton(item)
 
end
 
-- OnClick event handler for the right-click context menu for map buttons.
function RecipeRadar_RecipesTab_ContextMenuOnClick(self)
 
if (RecipeRadar_ContextMenuGlobal.Location) then
 
local vendor = RecipeRadar_RecipesTab_FindVendor(
RecipeRadar_ContextMenuGlobal.Location.Region,
RecipeRadar_ContextMenuGlobal.Location.Vendor)
 
if (self.value == "unmap") then
RecipeRadar_Maps_RemoveVendor(vendor)
RecipeRadar_FrameUpdate()
 
elseif (self.value == "map") then
RecipeRadar_Maps_AddVendor(vendor,
RecipeRadar_ContextMenuGlobal.Location.Region)
RecipeRadar_FrameUpdate()
end
 
end
 
if (self.value == "expandall") then
RecipeRadar_RecipesTab_ExpandAll(true)
 
elseif (self.value == "collapseall") then
RecipeRadar_RecipesTab_ExpandAll(false)
end
 
end
trunk/RecipeRadar/RecipeRadar.lua New file
0,0 → 1,679

-- RecipeRadar.lua: main event code and general utility functions
-- $Id: RecipeRadar.lua 1060 2008-11-16 04:27:27Z jnmiller $
 
function RecipeRadar_OnLoad(self)
 
tinsert(UISpecialFrames, "RecipeRadarFrame")
UIPanelWindows["RecipeRadarFrame"] = nil
 
SLASH_RecipeRadar1 = "/rrdr"
SLASH_RecipeRadar2 = "/reciperadar"
SlashCmdList["RecipeRadar"] = RecipeRadar_SlashHandler
 
self:RegisterEvent("VARIABLES_LOADED")
self:RegisterEvent("ZONE_CHANGED_NEW_AREA")
self:RegisterEvent("WORLD_MAP_UPDATE")
self:RegisterEvent("CRAFT_SHOW")
self:RegisterEvent("TRADE_SKILL_SHOW")
self:RegisterEvent("CHAT_MSG_SKILL")
self:RegisterEvent("CHAT_MSG_SYSTEM")
self:RegisterEvent("PLAYER_ENTERING_WORLD")
 
-- RecipeRadar_Print("Recipe Radar loaded!")
 
end
 
function RecipeRadar_OnEvent(self, event, ...)
local arg1 = ...
 
if (event == "VARIABLES_LOADED") then
 
RecipeRadar_Globals_Init()
RecipeRadar_MinimapButton_Init()
RecipeRadar_Availability_Init()
RecipeRadar_Maps_Init()
RecipeRadar_SkillDB_Init()
RecipeRadar_MainFrame_Init()
RecipeRadar_DropDowns_Init()
RecipeRadar_SelectFirstRecipe()
 
elseif (event == "ZONE_CHANGED_NEW_AREA") then
 
if (RecipeRadar_RegionHasLearnableRecipe(GetRealZoneText())) then
RecipeRadar_MinimapButton_Flash()
end
RecipeRadar_Minimap_OnNewRegion()
if (RecipeRadar_Options.AutoSelectRegion) then
RecipeRadar_NewRegion(GetRealZoneText())
end
 
elseif (event == "ADDON_LOADED" and arg1 == "RecipeRadar") then
 
--
 
elseif (event == "PLAYER_ENTERING_WORLD") then
 
if (RecipeRadar_Filters.Teams["Horde"] == nil) then
-- this should be the first run of the addon, so set team filters
RecipeRadar_Filters.Teams[UnitFactionGroup("player")] = false
RecipeRadar_Filters.Teams
[RecipeRadar_GetOpposingFaction("player")] = true
end
 
elseif (event == "WORLD_MAP_UPDATE") then
 
RecipeRadar_Worldmap_UpdateButtons()
 
elseif (event == "CRAFT_SHOW") then
 
RecipeRadar_SkillDB_Refresh("craft")
 
elseif (event == "TRADE_SKILL_SHOW") then
 
RecipeRadar_SkillDB_Refresh("trade")
 
elseif (event == "CHAT_MSG_SKILL") then
 
-- arg1 = eg. "Your skill in Cooking has increased to 221."
RecipeRadar_ParseChatMessage(arg1)
 
elseif (event == "CHAT_MSG_SYSTEM") then
 
-- arg1 = eg. "You have learned how to create a new item: Bristle Whisker Catfish."
RecipeRadar_ParseChatMessage(arg1)
 
end
 
end
 
function RecipeRadar_OnShow()
 
--PlaySound("igCharacterInfoOpen")
 
end
 
function RecipeRadar_OnHide()
 
PlaySound("igCharacterInfoClose")
RecipeRadarFrame:StopMovingOrSizing()
 
end
 
function RecipeRadar_SlashHandler(msg)
 
local _, _, cmd, arg1, arg2, arg3 =
string.find(msg, "(%w+)%s*(%w*)%s*(%w*)%s*(%w*)")
 
if (cmd == "debug") then
 
if (arg1 == "vendor") then
RecipeRadar_Options.PositionDebug = true
end
 
if (arg1 == "skills") then
RecipeRadar_SkillDB_Print(arg2, arg3)
end
 
if (arg1 == "clear") then
RecipeRadar_SkillDB_Clear(arg2)
end
 
return
 
end
 
if (cmd == "radar") then
 
local region = RecipeRadar_RegionData[GetRealZoneText()]
if (not region) then return end
 
for _, vendor in pairs(region.Vendors) do
 
RecipeRadar_Print(RecipeRadar_GetColoredTeamString(
vendor.Team, vendor.Name) .. " (" ..
string.format("%d", vendor.Coordinates[1].x * 100) .. ", " ..
string.format("%d", vendor.Coordinates[1].y * 100) .. "):")
 
table.sort(vendor.Recipes, RecipeRadar_CompareSkills)
for k, v in pairs(vendor.Recipes) do
RecipeRadar_PrintRecipe(k, v)
end
 
end
 
return
 
end
 
RecipeRadar_Toggle()
 
end
 
-- Function to be called on selecting a new region to initialize the
-- main frame and any active filters.
function RecipeRadar_NewRegion(region)
 
if (not region or region == "") then return end
 
RecipeRadar_Options.CurrentRegion = region
RecipeRadar_Options.CurrentContinent = RecipeRadar_GetCurrentContinent()
RecipeRadar_InitVendorFilters()
RecipeRadar_SelectFirstRecipe()
RecipeRadar_FrameUpdate()
 
end
 
-- Returns whether the given region contains at least one recipe that
-- is learnable by the player or (optionally) alts.
function RecipeRadar_RegionHasLearnableRecipe(region_name)
 
local region_data = RecipeRadar_RegionData[region_name]
if (not region_data) then return false end
 
for _, vendor in pairs(region_data.Vendors) do
if (not RecipeRadar_IsVendorFiltered(vendor)) then
for _, recipe in pairs(vendor.Recipes) do
if (RecipeRadar_Availability_IsLearnable(recipe)) then
return not RecipeRadar_IsRecipeFiltered(recipe)
end
end
end
end
 
return false
 
end
 
-- Given a table of recipes, returns the number of recipes that are
-- learnable by the player or (optionally) alts.
function RecipeRadar_CountLearnableRecipes(recipes)
 
if (not recipes) then return 0 end
 
local total = 0
 
for _, recipe in pairs(recipes) do
if (RecipeRadar_Availability_IsLearnable(recipe)) then
total = total + 1
end
end
 
return total
 
end
 
-- Returns the index of the current region's continent, or 0 if the
-- player is not in a known map zone (eg. she's in an instance).
function RecipeRadar_GetCurrentContinent()
 
local region = RecipeRadar_RegionData[RecipeRadar_Options.CurrentRegion]
 
-- this mess derives the current continent from the current region
if (region) then
return region.Continent
else
-- region is not in our database, so we search for it
for cont_id, _ in pairs( { GetMapContinents() } ) do
for _, zone in pairs( { GetMapZones(cont_id) } ) do
if (RecipeRadar_Options.CurrentRegion == zone) then
return cont_id
end
end
end
return 0
end
 
end
 
-- Converts a format string to one that LUA can understand. I've
-- shamelessly stolen this from Innerfire in order to (I hope) prevent
-- the combat chatlog parsing errors.
function RecipeRadar_ConvertFormat(fmt)
 
-- remove non-English format params like "%1$s"
local find = string.gsub(fmt, "%%%d%$", "%%")
 
-- remove any special characters with escaped versions
find = string.gsub(find, "([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1")
 
-- finally replace standard "%s" and "%d"
find = string.gsub(find, "%%s", "(.+)")
find = string.gsub(find, "%%d", "(%%d+)")
return find
 
end
 
-- Parses the input for a couple of known message formats to gain information
-- about changes in the character's skills.
function RecipeRadar_ParseChatMessage(msg)
 
-- messages of the form 'Your skill in %s has increased to %d.'
local start, _, prof, rank =
string.find(msg, RecipeRadar_ConvertFormat(ERR_SKILL_UP_SI))
if (start) then
RecipeRadar_SkillDB_SetRank(prof, rank)
end
 
-- messages of the form 'You have unlearned %s.'
start, _, prof =
string.find(msg, RecipeRadar_ConvertFormat(ERR_SPELL_UNLEARNED_S))
if (prof) then
RecipeRadar_SkillDB_GetPlayerProfessions()[prof] = nil
end
 
end
 
-- Foreach function that prints a recipe link and its cost.
function RecipeRadar_PrintRecipe(index, recipe)
 
RecipeRadar_Print(" " .. RecipeRadar_GetHyperlinkByID(recipe.ID) ..
", " .. RecipeRadar_GetGSCString(recipe.Cost))
 
end
 
-- Returns a string describing an item link from an item ID.
function RecipeRadar_GetHyperlinkByID(id)
 
local name, link, color = RecipeRadar_GetSafeItemInfo(id)
return RecipeRadar_GetHyperlinkByParts(name, link, color)
 
end
 
-- Returns a string describing an item link from link components.
function RecipeRadar_GetHyperlinkByParts(name, link, color)
 
return string.format("%s|H%s|h[%s]|h|r", color, link, name)
 
end
 
-- If an item is not in your local cache, GetItemInfo() fails. To work
-- around this, we just return 'uncached' along with the details we do know.
-- If an item is recognized by the client, we cache the name so that future
-- requests don't end up fully 'uncached'. The final return value is a
-- boolean indicating whether it was a cached ID.
function RecipeRadar_GetSafeItemInfo(id)
 
local name, link, rarity, _, _, _, _, _, _, texture = GetItemInfo(id)
 
-- initialize our name cache if necessary
if (not RecipeRadar_NameCache) then RecipeRadar_NameCache = { } end
 
if (name == nil) then
 
-- set returned name according to whether we've already seen the id
if (RecipeRadar_NameCache[id]) then
name = RecipeRadar_NameCache[id]
else
name = RRS("Uncached Recipe")
end
 
-- create our own tooltip for uncached items
return name, "item:" .. id .. ":0:0:0:0:0:0:0",
RecipeRadar_ColorToCode(RecipeRadar_Colors.UncachedRecipe),
RecipeRadar_Colors.UncachedRecipe.r,
RecipeRadar_Colors.UncachedRecipe.g,
RecipeRadar_Colors.UncachedRecipe.b,
GetItemIcon(id),
false -- boolean to indicate whether we got a real recipe
 
else
RecipeRadar_NameCache[id] = name -- cache names
local r, g, b, colorcode = GetItemQualityColor(rarity)
local _, _, link = string.find(link, "^|%x+|H(.+)|h%[.+%]")
return name, link, colorcode, r, g, b, texture, true
end
 
end
 
-- From a region name, retrieve its index in the GetMapZones() table.
function RecipeRadar_RegionNameToID(region_name, continent)
 
local index = 0
 
for _, zone in pairs( { GetMapZones(continent) } ) do
index = index + 1
if (region_name == zone) then
return index
end
end
 
RecipeRadar_Print("ASSERT FAILED: region '" .. region_name ..
"' not found by GetMapZones()! Bad translation?")
return nil
 
end
 
-- Get gold, silver, copper from total copper.
function RecipeRadar_GetGSC(copper)
 
if (copper == nil) then
copper = 0
end
 
local g = math.floor(copper / 10000)
local s = math.floor((copper - (g * 10000)) / 100)
local c = math.floor(copper - (g * 10000) - (s * 100))
 
return g, s, c
 
end
 
-- Format text by color for gold, silver and copper (from EnhTooltip).
function RecipeRadar_GetGSCString(copper)
 
local TEXT_NONE = "0"
local GSC_GOLD = "ffd100"
local GSC_SILVER = "e6e6e6"
local GSC_COPPER = "c8602c"
local GSC_FMT = "|cff%s%d|r"
local GSC_PART = ".|cff%s%02d|r"
local GSC_NONE = "|cffa0a0a0" .. TEXT_NONE .. "|r"
 
local g, s, c = RecipeRadar_GetGSC(copper)
local gsc = ""
 
if (g > 0) then
gsc = string.format(GSC_FMT, GSC_GOLD, g)
if (s > 0) then
gsc = gsc .. string.format(GSC_PART, GSC_SILVER, s)
end
if exact then
gsc = gsc .. string.format(GSC_PART,GSC_COPPER, c)
end
elseif (s > 0) then
gsc = string.format(GSC_FMT, GSC_SILVER, s)
if (c > 0) then
gsc = gsc .. string.format(GSC_PART, GSC_COPPER, c)
end
elseif (c > 0) then
gsc = gsc .. string.format(GSC_FMT, GSC_COPPER, c)
else
gsc = GSC_NONE
end
 
return gsc
 
end
 
-- Returns the name of the player's opposing faction.
-- These strings shouldn't need to be localized.
function RecipeRadar_GetOpposingFaction()
 
if (UnitFactionGroup("player") == "Alliance") then
return "Horde"
elseif (UnitFactionGroup("player") == "Horde") then
return "Alliance"
end
return "Unknown"
 
end
 
-- Formats a string in the color specified by the key 'team'.
function RecipeRadar_GetColoredTeamString(team, s)
 
if (not RecipeRadar_Teams[team]) then return end
return RecipeRadar_ColorToCode(RecipeRadar_Teams[team].Color) ..
s .. FONT_COLOR_CODE_CLOSE
 
end
 
-- Returns whether the skill is an applicable profession.
function RecipeRadar_IsProfession(skill_name)
 
for name, _ in pairs(RecipeRadar_Professions) do
if (name == skill_name) then
return true
end
end
 
return false
 
end
 
-- Returns the profession under which a trade skill specialty belongs,
-- or false if skill_name is not a known specialty.
function RecipeRadar_IsProfessionSpecialty(skill_name)
 
for spec, prof in pairs(RecipeRadar_Specialties) do
if (spec == skill_name) then
return prof
end
end
 
return false
 
end
 
-- Returns whether the supplied faction is one that Recipe Radar cares about.
function RecipeRadar_IsKnownFaction(faction)
 
for _, name in pairs(RecipeRadar_Factions) do
if (name == faction) then
return true
end
end
 
return false
 
end
 
-- Returns whether the given vendor has at least one unfiltered recipe.
function RecipeRadar_VendorHasRecipes(vendor)
 
for _, recipe in pairs(vendor.Recipes) do
if (not RecipeRadar_IsRecipeFiltered(recipe)) then
return true
end
end
 
return false
 
end
 
-- Returns whether the given recipe has at least one unfiltered location.
function RecipeRadar_RecipeHasLocations(recipe)
 
for _, location in pairs(recipe.Locations) do
if (not location.IsFiltered) then
return true
end
end
 
return false
 
end
 
-- Returns a string describing the requirements to buy the given recipe
-- according to the recipe's Notes/Faction member, or nil.
function RecipeRadar_GetRecipeReqsString(recipe)
 
if (recipe.Faction and recipe.Faction ~= "") then
return recipe.Faction .. ", " ..
_G["FACTION_STANDING_LABEL" .. recipe.Level]
end
if (recipe.Specialty and recipe.Specialty ~= "") then
return recipe.Specialty
end
if (recipe.Notes and recipe.Notes ~= "") then
return RecipeRadar_FormatRecipeNote(recipe.Notes)
end
return nil
 
end
 
-- If the supplied recipe has an item cost, this function returns the
-- number of items and the item's ID, respectively.
function RecipeRadar_GetSpecialRecipeCost(recipe)
 
local note_type, note_value = RecipeRadar_ParseNote(recipe.Notes)
 
if (note_type == "CostItem") then
local cost = recipe.Cost
if (string.len(cost) == 1) then
cost = " " .. cost -- right-justify single digits
end
return cost, note_value + 0
end
 
end
 
-- Parses a recipe note of the form 'Type: Value' and returns both
-- the type and value, respectively.
function RecipeRadar_ParseNote(note)
 
if (not note) then return nil end
return string.match(note, "(%w+): (%w+)")
 
end
 
-- Formats the subtext that applies to a few vendors. include_parens is
-- a boolean that specifies whether the string should be in parens.
function RecipeRadar_FormatRecipeNote(note)
 
local note_type, note_value = RecipeRadar_ParseNote(note)
 
if (note_type == "Class") then
return format(RRS("%s Only"), RRS(note_value))
end
 
end
 
-- Formats the subtext that applies to a few vendors. include_parens is
-- a boolean that specifies whether the string should be in parens.
function RecipeRadar_FormatVendorNote(note, include_parens)
 
local note_type = RecipeRadar_ParseNote(note)
if (note_type) then note = note_type end
 
if (include_parens) then
return format(TEXT(PARENS_TEMPLATE), format(RRS("%s Vendor"), note))
end
return format(RRS("%s Vendor"), note)
 
end
 
-- Given a recipe name of the form 'Label: Name', returns 'Name'. It
-- does this by checking for a ':' and looking ahead to the name.
-- Thanks to an SF.Net poster for verifying this with Unicode locales.
function RecipeRadar_TrimRecipeLabel(recipe_name)
 
local label_end = string.find(recipe_name, ": ")
if (label_end) then
return string.sub(recipe_name, label_end + 2)
else
label_end = string.find(recipe_name, ":")
if (label_end) then
return string.sub(recipe_name, label_end + 1)
end
end
return recipe_name
 
end
 
-- Sorts the vendors in a given region.
function RecipeRadar_SortVendors(region_data)
 
if (region_data.IsVendorTableSorted) then
return
end
 
table.sort(region_data.Vendors, RecipeRadar_CompareNames)
region_data.IsVendorTableSorted = true
 
end
 
-- Sorts the recipes on a given vendor.
function RecipeRadar_SortRecipes(container)
 
if (container.IsRecipeTableSorted) then
return
end
 
table.sort(container.Recipes, RecipeRadar_CompareSkills)
container.IsRecipeTableSorted = true
 
end
 
-- Sorts the locations on a given recipe.
function RecipeRadar_SortLocations(recipe_data)
 
if (recipe_data.IsLocationsTableSorted) then
return
end
 
table.sort(recipe_data.Locations, RecipeRadar_CompareRegions)
recipe_data.IsRecipeTableSorted = true
 
end
 
-- Sort comparison function on required skill first, then the recipe's
-- ID (to insure a deterministic order).
function RecipeRadar_CompareSkills(recipe1, recipe2)
 
if (recipe1.Skill == recipe2.Skill) then
return recipe1.ID < recipe2.ID
end
return recipe1.Skill < recipe2.Skill
 
end
 
-- Sort comparison function on vendor names.
function RecipeRadar_CompareNames(vendor1, vendor2)
 
return vendor1.Name < vendor2.Name
 
end
 
-- Sort comparison function on location names.
function RecipeRadar_CompareRegions(location1, location2)
 
if (location1.Region == location2.Region) then
return location1.Vendor < location2.Vendor
end
return location1.Region < location2.Region
 
end
 
-- Returns the result of the "<" operator on both major and minor portions.
function RecipeRadar_IsVersionLessThan(version1, version2)
 
local major1, minor1 = string.match(version1, "(%d+)\.(%d+)")
local major2, minor2 = string.match(version2, "(%d+)\.(%d+)")
 
if (major1 ~= major2) then
return major1+0 < major2+0
end
return minor1+0 < minor2+0
 
end
 
-- Returns a color code string converted from RGB decimals.
function RecipeRadar_ColorToCode(color)
 
return string.format("|cff%02x%02x%02x",
255 * color.r, 255 * color.g, 255 * color.b)
 
end
 
-- Returns the given string surrounded by the highlighted version of
-- base_color.
function RecipeRadar_HighlightString(s, base_color)
 
local highlight = {
r = math.min(1.0, base_color.r + RecipeRadar_Colors.Highlight),
g = math.min(1.0, base_color.g + RecipeRadar_Colors.Highlight),
b = math.min(1.0, base_color.b + RecipeRadar_Colors.Highlight), }
return RecipeRadar_ColorToCode(highlight) .. s .. FONT_COLOR_CODE_CLOSE
 
end
 
-- Basic chat frame printing function.
function RecipeRadar_Print(msg, r, g, b)
 
DEFAULT_CHAT_FRAME:AddMessage(msg,
(r or RecipeRadar_Colors.MainFont.r),
(g or RecipeRadar_Colors.MainFont.g),
(b or RecipeRadar_Colors.MainFont.b))
 
end
trunk/RecipeRadar/SkillDB.lua New file
0,0 → 1,591
 
-- SkillDB.lua: interface to the characters' known skill database
-- $Id: SkillDB.lua 1098 2009-08-10 04:38:33Z jnmiller $
 
function RecipeRadar_SkillDB_Init()
 
if (not RecipeRadar_SkillDB) then
RecipeRadar_SkillDB = { }
end
 
if (not RecipeRadar_SkillDB[GetRealmName()]) then
RecipeRadar_SkillDB[GetRealmName()] = { }
end
 
local db = RecipeRadar_SkillDB_GetPlayerProfessions()
 
-- fishing doesn't get an auto-reset during the spellbook parsing
if (not db[RRS("Fishing")] or not db[RRS("Fishing")].Recipes) then
db[RRS("Fishing")] = { Rank = 0, Recipes = { } }
end
 
end
 
-- This function safely initializes the player's personal skill database.
-- If no player is supplied, the current player is assumed.
function RecipeRadar_SkillDB_GetSafePlayerDB(player)
 
if (not player) then player = UnitName("player") end
 
local db = RecipeRadar_SkillDB[GetRealmName()]
 
if (not db[player]) then
db[player] = { }
end
 
if (not db[player].Team) then
db[player].Team = UnitFactionGroup("player")
end
 
if (not db[player].Class and player == UnitName("player")) then
db[player].Class = UnitClass("player")
end
 
if (not db[player].Professions) then
db[player].Professions = { }
end
 
if (not db[player].Factions) then
db[player].Factions = { }
end
 
return db[player]
 
end
 
-- This is a safe function to retrieve the current character's team.
function RecipeRadar_SkillDB_GetPlayerTeam(player)
 
return RecipeRadar_SkillDB_GetSafePlayerDB(player).Team
 
end
 
-- This is a safe function to retrieve the current character's class.
function RecipeRadar_SkillDB_GetPlayerClass(player)
 
local class = RecipeRadar_SkillDB_GetSafePlayerDB(player).Class
if (class) then return class else return "Unknown" end
 
end
 
-- This is a safe function to retrieve the current character's skills.
function RecipeRadar_SkillDB_GetPlayerProfessions(player)
 
return RecipeRadar_SkillDB_GetSafePlayerDB(player).Professions
 
end
 
-- This is a safe function to retrieve the current character's reputation.
function RecipeRadar_SkillDB_GetPlayerFactions(player)
 
return RecipeRadar_SkillDB_GetSafePlayerDB(player).Factions
 
end
 
-- Refreshes the DB for the current player and currently open skill window.
-- prof_type is one of 'trade' or 'craft'.
function RecipeRadar_SkillDB_Refresh(prof_type)
 
if (IsTradeSkillLinked()) then return end
 
local profs = RecipeRadar_SkillDB_GetPlayerProfessions()
local prof_name, prof_rank, max_rank =
RecipeRadar_SkillDB_GetProfInfo(prof_type)
 
if (not prof_name) then -- Beast Training, for instance, will cause this
return
end
 
if (not profs[prof_name]) then profs[prof_name] = { } end
profs[prof_name].Rank = prof_rank
profs[prof_name].Recipes = { }
 
-- this line might help avoid the 0 count that I seem to get on
-- some early invocations of this function?
local dummy = RecipeRadar_SkillDB_GetRecipeCount(prof_type)
 
local old_settings = RecipeRadar_SkillDB_ResetTradeSkillFilters()
 
-- iterate over each listed recipe in the currently open skill window
for i = 1, RecipeRadar_SkillDB_GetRecipeCount(prof_type) do
 
local recipe, hdr = RecipeRadar_SkillDB_GetRecipeInfo(prof_type, i)
 
if (recipe and hdr ~= "header") then
 
-- map craft window names to real recipe names
local map = RecipeRadar_NameMap[GetLocale()]
if (map and map[recipe]) then
profs[prof_name].Recipes[recipe] = nil
recipe = map[recipe]
end
 
-- Spanish clients need the first letter to be lower case
-- eg. "Toga de lino roja" vs. "Patrón: toga de lino rojo"
if (GetLocale() == "esES" or GetLocale() == "ruRU") then
recipe = string.gsub(recipe, "^%u", string.lower)
end
 
-- if it's not a header, the character knows this recipe
profs[prof_name].Recipes[recipe] = 1
 
end
 
end
 
RecipeRadar_SkillDB_HandleSpecialCase(profs, prof_name, max_rank)
RecipeRadar_SkillDB_RestoreTradeSkillFilters(old_settings)
 
end
 
-- Resets trade skill filters (search, dropdowns, etc.) to their defaults
-- and returns a table of the previous values for later restoration.
function RecipeRadar_SkillDB_ResetTradeSkillFilters()
 
local old = { }
 
-- save current search string
old["search"] = GetTradeSkillItemNameFilter()
SetTradeSkillItemNameFilter(nil)
 
-- save current slot filter
for i = 0, select("#", GetTradeSkillInvSlots()) do
if GetTradeSkillInvSlotFilter(i) then
old["slot"] = i
break
end
end
SetTradeSkillInvSlotFilter(0, 1, 1)
 
-- save current subclass filter
for i = 0, select("#", GetTradeSkillSubClasses()) do
if GetTradeSkillSubClassFilter(i) then
old["subclass"] = i
break
end
end
SetTradeSkillSubClassFilter(0, 1, 1)
 
-- save the "Have Materials" check state
--old["mats"] = TradeSkillFilterDropDown:GetChecked()
TradeSkillOnlyShowMakeable(nil)
 
TradeSkillFrame_Update()
return old
 
end
 
-- Restores trade skill filters according to the supplied table.
function RecipeRadar_SkillDB_RestoreTradeSkillFilters(settings)
 
TradeSkillOnlyShowMakeable(settings["mats"])
SetTradeSkillSubClassFilter(settings["subclass"], 1, 1)
SetTradeSkillInvSlotFilter(settings["slot"], 1, 1)
if settings["search"] then
--TradeSkillFrameEditBox:SetText(settings["search"])
SetTradeSkillItemNameFilter(settings["search"])
end
TradeSkillFrame_Update()
 
end
 
-- Adds unlisted/implied "recipes" to the skill DB.
function RecipeRadar_SkillDB_HandleSpecialCase(profs, prof_name, max_rank)
 
if (prof_name == RRS("First Aid")) then
if (max_rank > 150) then
-- Expert First Aid - Under Wraps
local name = RecipeRadar_GetSafeItemInfo(16084)
if (name ~= RRS("Uncached Recipe")) then
profs[RRS("First Aid")].Recipes[name] = 1
end
end
if (max_rank > 300) then
-- Master First Aid - Doctor in the House
local name = RecipeRadar_GetSafeItemInfo(22012)
if (name ~= RRS("Uncached Recipe")) then
profs[RRS("First Aid")].Recipes[name] = 1
end
end
end
 
if (prof_name == RRS("Fishing")) then
if (max_rank > 150) then
-- Expert Fishing - The Bass and You
local name = RecipeRadar_GetSafeItemInfo(16083)
if (name ~= RRS("Uncached Recipe")) then
profs[RRS("Fishing")].Recipes[name] = 1
end
end
if (max_rank > 300) then
-- Master Fishing - The Art of Angling
local name = RecipeRadar_GetSafeItemInfo(27532)
if (name ~= RRS("Uncached Recipe")) then
profs[RRS("Fishing")].Recipes[name] = 1
end
end
end
 
if (prof_name == RRS("Cooking")) then
if (max_rank > 150) then
-- Expert Cookbook
local name = RecipeRadar_GetSafeItemInfo(16072)
if (name ~= RRS("Uncached Recipe")) then
profs[RRS("Cooking")].Recipes[name] = 1
end
end
if (max_rank > 300) then
-- Master Cookbook
local name = RecipeRadar_GetSafeItemInfo(27736)
if (name ~= RRS("Uncached Recipe")) then
profs[RRS("Cooking")].Recipes[name] = 1
end
end
end
 
end
 
-- Quick function to retrieve a profession rank.
function RecipeRadar_SkillDB_GetRank(prof)
 
local prof_db = RecipeRadar_SkillDB_GetPlayerProfessions()[prof]
if (not prof_db) then return 0 end
 
return prof_db.Rank
 
end
 
-- Quick function to set a new profession rank.
function RecipeRadar_SkillDB_SetRank(prof, rank)
 
local prof_db = RecipeRadar_SkillDB_GetPlayerProfessions()[prof]
if (not prof_db) then return end
 
prof_db.Rank = tonumber(rank)
 
RecipeRadar_FrameUpdate()
 
end
 
-- Boolean function to determine whether a player in the DB has the
-- reputation necessary to learn the supplied recipe.
function RecipeRadar_SkillDB_HasRep(player, recipe)
 
if (not recipe.Faction or recipe.Faction == "") then return true end
 
local factions = RecipeRadar_SkillDB_GetPlayerFactions(player)
if (not factions[recipe.Faction]) then return false end
 
return factions[recipe.Faction] >= recipe.Level
 
end
 
-- Boolean function to determine whether a player in the DB has the
-- specialty necessary to learn the supplied recipe.
function RecipeRadar_SkillDB_HasSpec(player, recipe)
 
if (not recipe.Specialty or recipe.Specialty == "") then return true end
 
local db = RecipeRadar_SkillDB_GetPlayerProfessions(player)
if (not db[recipe.Type]) then return false end
 
return recipe.Specialty == db[recipe.Type].Specialty
 
end
 
-- Boolean function to determine whether a player in the DB meets the
-- requirements specified in a recipe's notes, if any.
function RecipeRadar_SkillDB_HasMisc(player, recipe)
 
local note_type, note_value = RecipeRadar_ParseNote(recipe.Notes)
if (not note_type or note_type == "") then return true end
 
if (note_type == "Class") then -- eg. 'Class: Rogue'
return RecipeRadar_SkillDB_GetPlayerClass(player) == RRS(note_value)
end
 
return true
 
end
 
-- Debug function to clear some or all of the skill DB.
function RecipeRadar_SkillDB_Clear(player)
 
local hdr = "Clearing all known recipes"
if (player ~= "") then
hdr = hdr .. " for " .. player
end
RecipeRadar_Print(hdr .. ".")
 
if (player) then
if (RecipeRadar_SkillDB[GetRealmName()][player]) then
RecipeRadar_SkillDB[GetRealmName()][player] = { }
else
RecipeRadar_Print("Player '" .. player .. "' not found.")
end
else
RecipeRadar_SkillDB[GetRealmName()] = { }
end
 
end
 
-- Debug function to print the skill database.
function RecipeRadar_SkillDB_Print(player, profession)
 
local hdr = "Printing recipes"
if (player ~= "") then
hdr = hdr .. " for " .. player
end
RecipeRadar_Print(hdr .. ".")
 
if (profession == "FirstAid") then
profession = "First Aid"
end
 
for realm_name, player_table in pairs(RecipeRadar_SkillDB) do
for player_name, player_info in pairs(player_table) do
 
if (player == "" or player == player_name) then
 
RecipeRadar_Print(" Player: " .. player_name ..
" (" .. realm_name .. ")")
 
for prof_name, recipe_table in pairs(player_info.Professions) do
if (profession == "" or profession == prof_name) then
RecipeRadar_Print(" Skill: " .. prof_name ..
" (Rank " .. recipe_table.Rank .. ")")
if (recipe_table.Recipes) then
for recipe_name, valid in pairs(recipe_table.Recipes) do
RecipeRadar_Print(" Recipe: " .. recipe_name)
end
end
end
end
 
end
 
end
end
 
end
 
------------------------------------------------------------------------------
-- Abstractions to account for the difference between crafts and trade skills
------------------------------------------------------------------------------
 
function RecipeRadar_SkillDB_GetProfInfo(prof_type)
 
if (prof_type == "trade") then
return GetTradeSkillLine()
elseif (prof_type == "craft") then
return GetCraftDisplaySkillLine()
end
 
end
 
function RecipeRadar_SkillDB_GetRecipeCount(prof_type)
 
if (prof_type == "trade") then
return GetNumTradeSkills()
elseif (prof_type == "craft") then
return GetNumCrafts()
end
 
return 0
 
end
 
function RecipeRadar_SkillDB_GetRecipeInfo(prof_type, index)
 
local name, hdr
 
if (prof_type == "trade") then
name, hdr = GetTradeSkillInfo(index)
elseif (prof_type == "craft") then
name, _, hdr = GetCraftInfo(index)
end
 
return name, hdr
 
end
 
------------------------------------------------------------------------------
-- Functions to open/parse various frames to update skill info.
------------------------------------------------------------------------------
 
-- Attempts to open the spellbook and returns true if successful or false if
-- the spellbook was already open.
function RecipeRadar_SkillDB_ShowSpellbookFrame()
 
if (not SpellBookFrame:IsVisible()) then
ToggleSpellBook(BOOKTYPE_SPELL)
return true
end
return false
 
end
 
-- Closes the spellbook if it's visible and need_close is true.
function RecipeRadar_SkillDB_HideSpellbookFrame(need_close)
 
if (SpellBookFrame:IsVisible() and need_close) then
ToggleSpellBook(BOOKTYPE_SPELL)
end
 
end
 
-- Opens the spellbook and finds profession windows to open in order
-- to parse skill data from each.
function RecipeRadar_SkillDB_ParseSpellbookFrame()
 
local need_close = RecipeRadar_SkillDB_ShowSpellbookFrame()
 
_, _, _, num_spells = GetSpellTabInfo(1)
 
for i = 1, num_spells do
 
local name = GetSpellBookItemName(i, BOOKTYPE_SPELL)
if (not name) then return end
 
-- open each of the player's crafting windows
if (RecipeRadar_IsProfession(name) and name ~= RRS("Fishing")) then
CastSpell(i, BOOKTYPE_SPELL)
end
 
-- check for trade skill specializations
local spec_prof = RecipeRadar_IsProfessionSpecialty(name)
if (spec_prof) then
local profs = RecipeRadar_SkillDB_GetPlayerProfessions()
if (not profs[spec_prof]) then profs[spec_prof] = { } end
profs[spec_prof].Specialty = name
end
 
end
 
HideUIPanel(TradeSkillFrame)
HideUIPanel(CraftFrame)
 
RecipeRadar_SkillDB_HideSpellbookFrame(need_close)
 
end
 
 
--[[
 
-- Opens the character window and sets it to the skill frame.
function RecipeRadar_SkillDB_ShowSkillFrame()
 
PanelTemplates_SetTab(CharacterFrame, _G["SkillFrame"]:GetID())
ShowUIPanel(CharacterFrame)
CharacterFrame_ShowSubFrame("SkillFrame")
 
end
 
 
-- Closes the character window.
function RecipeRadar_SkillDB_HideSkillFrame()
 
HideUIPanel(CharacterFrame)
 
end
 
-- Opens the skill frame and parses profession data from the display.
-- Just checking for fishing rank right now, as getting only rank (without
-- recipe data) could be misleading for other professions.
function RecipeRadar_SkillDB_ParseSkillFrame()
 
local profs = RecipeRadar_SkillDB_GetPlayerProfessions()
local known_skills = { }
 
RecipeRadar_SkillDB_ShowSkillFrame()
 
for i = 1, GetProfessions() do
 
local name, hdr, _, rank, _, modifier, max_rank = GetProfessionInfo(i)
known_skills[name] = 1
 
if (name == RRS("Fishing")) then
 
if (not profs[name]) then
profs[name] = { }
end
 
profs[name].Rank = rank
RecipeRadar_SkillDB_HandleSpecialCase(profs, name, max_rank)
 
end
 
end
 
 
-- here we're validating that profs in the database match those that
-- the character actually knows - those that aren't found are nulled
-- to keep the database in sync
for prof_name, _ in pairs(profs) do
if known_skills[prof_name] ~= 1 then
profs[prof_name] = nil
end
end
 
RecipeRadar_SkillDB_HideSkillFrame()
 
 
end
 
--]]
 
 
-- Opens the character window and sets it to the reputation frame.
function RecipeRadar_SkillDB_ShowReputationFrame()
 
PanelTemplates_SetTab(CharacterFrame, _G["ReputationFrame"]:GetID())
ShowUIPanel(CharacterFrame)
CharacterFrame_ShowSubFrame("ReputationFrame")
 
-- work from the bottom up to un-collapse headers
local collapsed_lines = { }
for i = GetNumFactions(), 1, -1 do
local _, _, _, _, _, _, _, _, _, collapsed = GetFactionInfo(i);
if (collapsed) then
ExpandFactionHeader(i)
collapsed_lines[i] = 1
end
end
return collapsed_lines
 
end
 
-- Closes the character window.
function RecipeRadar_SkillDB_HideReputationFrame(collapsed_lines)
 
-- work from the top down to re-collapse headers
for i = 1, GetNumFactions() do
if (collapsed_lines[i] == 1) then
CollapseFactionHeader(i)
end
end
 
HideUIPanel(CharacterFrame)
 
end
 
-- Opens the reputation frame and parses data from the display.
function RecipeRadar_SkillDB_ParseReputationFrame()
 
local factions = RecipeRadar_SkillDB_GetPlayerFactions()
local collapsed_lines = RecipeRadar_SkillDB_ShowReputationFrame()
 
for i = 1, GetNumFactions() do
 
-- note that this bit skips collapsed headers
local name, _, level = GetFactionInfo(i);
 
if (RecipeRadar_IsKnownFaction(name)) then
factions[name] = level
end
 
end
 
RecipeRadar_SkillDB_HideReputationFrame(collapsed_lines)
 
end
trunk/RecipeRadar/ChangeLog.txt New file
0,0 → 1,239
 
Recipe Radar ChangeLog
 
v1.33; August 11, 2009
 
- Fixed several "no coordinates" asserts, sigh.
 
v1.32; August 9, 2009
 
- Updated for WoW 3.2, including the new recipes.
- Alchemy should work again for German users.
- Fixed a bunch of incorrect recipe data.
- Updated the Icecrown map.
 
v1.31; April 14, 2009
 
- Updated for WoW 3.1.
 
v1.30; March 11, 2009
 
- Updated recipe data; asserts should no longer appear in Dalaran, Stormwind
and Orgrimmar. Also updated the Stormwind map.
- Recipe Radar is now able to parse collapsed reputation sections.
- Corrupted alt databases should be repaired on next use.
- Trade skill filters (eg. searches) should no longer adversely affect your
character's known recipes.
- This is also true for others' linked trade skills (thank you, Thortok2000!).
 
v1.29; November 15, 2008
 
- Fixed major problems with the Russian and German translations.
- Added lots more WotLK recipes.
- Item-based costs now show up explicitly.
 
v1.28; November 7, 2008
 
- Updated for WoW 3.0.
- Added Yor's Russian translations. (Thank you!)
- Added some new recipes and vendors, including some WotLK content.
 
v1.27; April 7, 2008
 
- Fixed the lockup bug on some zone changes.
- Fixed a bug that triggered when two players have the same profession but
different specialties.
- Users should no longer see the question mark icon for uncached recipes.
- Adjusted some vendor attributes.
 
v1.26; March 31, 2008
 
- Fixed the "'DongleStub' (a nil value)" bug.
- Fixed zhTW recipe parsing.
 
v1.25; March 28, 2008
 
- Added new v2.4 recipes.
- Added Shattered Sun Offensive faction content.
- Added support for square and rotating minimaps.
- Fixed Ashtongue Deathsworn reputation parsing.
 
v1.24; October 10, 2007
 
- Included the new recipes added in v2.2.
- Tailoring specialists should no longer see recipes from other
specializations.
 
v1.23; July 24, 2007
 
- Major changes to the Spanish and Chinese name maps.
- Fixed some Scryr/Aldor recipe mistakes.
- Specialties now show up in the 'Note' field.
- Added a couple of new recipes.
- Fixed Hillsbrad Foothills on German clients (I hope).
 
v1.22; April 13, 2007
 
- Fixed recipe availability checking for Unicode locales.
 
v1.21; April 12, 2007
 
- Added a Chinese Traditional translation (thank you, Edeson!).
- Spanish recipes should now be recognized as known, I hope.
 
v1.20; February 27, 2007
 
- All of the new factions should now actually work (sigh).
- Removed some troublesome recipe inaccuracies.
- Fixed item linking.
- Localized vendor names.
 
v1.19; February 5, 2007
 
- Revised Spanish translation (thank you, Jorge Pozo!).
- Revised French translation (thank you, akirra!).
- Updated and added some vendor/recipe information.
- Winter Veil vendors should now only appear during December (thank
you, Elkano!).
 
v1.18; January 27, 2007
 
- Added all of the known BC recipes and vendors.
- Tailoring should now *really* work for Spanish versions.
Leatherworking was also broken but should now work (thank you, J!).
 
v1.17; January 18, 2007
 
- Fixed a bug that caused an error on startup for some users.
- Tailoring should now work for Spanish versions.
 
v1.16; January 17, 2007
 
- Added support for Jewelcrafting.
- Added several new recipes and vendors.
- The options frame is now draggable.
- Removed incorrect (old) specializations.
- Fixed a nasty little availability bug.
 
v1.15; January 10, 2007
 
- Updated all of the new German location names.
- Thistle Tea should now only be applicable to rogues.
 
v1.14; December 14, 2006
 
- Fixed a fairly nasty startup bug.
- Updated the README.
 
v1.13; December 8, 2006
 
- Updated German capital names. (Thank you, David!)
 
v1.12; December 6, 2006
 
- Updated for LUA v5.1 (and WoW v2.0).
- Partial support for the Spanish (esES) locale. As always,
localization contributions are most welcome.
- "Available" recipes from the opposing faction should no longer blink
the minimap button when entering a new region.
- Fixed the rep requirement for Enchant Weapon - Strength.
 
v1.11; September 18, 2006
 
- Fixed item linking bug (thank you, TDurden!).
- Fixed a bug that could occur for unlucky Dragonscale/Elemental LWers
and Armorsmiths (thank you, Arilaw!).
 
v1.10; September 16, 2006
 
- I'd forgotten to enable specialization checking! It should now work.
- Auctioneer and Recipe Book are now supported in the recipe icon
mouseover. Thanks very much to borohir for this functionality!
 
v1.9; September 5, 2006
 
- Recipes names are now cached when learned. This should make new
Blizzard patches less of a hassle.
- Availability checking now takes faction reputation and trade skill
specialties into account.
- Adjusted some vendor information.
- Reduced memory usage significantly.
 
v1.8; July 11, 2006
 
- Several new German region names were missing in v1.7. Hopefully they
are all correct now.
- Adjusted some vendor information.
 
v1.7; June 24, 2006
 
- Fixed the nasty profession selection bug for non-English versions.
- Profession icons should now show up for non-English versions.
- Unlearning a profession should now be handled correctly.
- Fixed several new 1.11 German region names.
- Added the new 1.11 Cenarion Circle recipes.
- Several vendors were incorrectly marked as Alliance-only (thank you,
Howlin!).
 
v1.6; June 21, 2006
 
- Added a right-click context menu to the scroll frame. From this
menu users can map vendors and expand/collapse all items.
- Fixed bug causing non-English profession stuff to suck (thank you
ElKano and Jeremy Gurr!).
- Alts of a different team should no longer appear in the availability
list.
- Adjusted the German translation.
- Adjusted some vendor locations.
 
v1.5; May 11, 2006
 
- All recipes that are named differently after learning (eg. transmutes)
should now show up correctly as known or not. This applies, in theory,
to all locales.
- Revamped the filtering code and fixed filtering, I hope, for non-
English versions.
- Nonapplicable professions and known recipes are now different filtering
categories in both availability modes.
- Fixed the incompatibility with Metamap, more or less.
- Tweaked the German translation and some vendor locations.
 
v1.4; May 7, 2006
 
- Revised German translation (thanks to DJMars and Elkano!).
- Dropdown filters are now effected every time Recipe Radar is opened.
Filters should now work much more intuitively.
- Fixed a bug that sometimes caused an error message on startup and/or
zone changes.
- Changed Alliance color to blue.
- Added a couple of missing vendors/recipes and improved the positions of
several others.
- Enchant Bracer - Healing should now show up correctly as known or not.
 
v1.3; April 29, 2006
 
- Fixed a bug that was preventing about half of the maps from displaying
on non-English clients.
- Adjusted some vendor locations.
 
v1.2; April 28, 2006
 
- Fixed chat message parsing bugs in non-English versions.
- Added an option to auto-map (but not auto-unmap!) contributive vendors.
- Added the number of learnable recipes to mapped vendor tooltips.
- Changed the '/rr' slash command to '/rrdr'.
- Map tooltips will hopefully no longer run off the screen.
 
v1.1; April 27, 2006
 
- Added support for the frFR locale. (I hope it works..)
- Added the ability to view regions other than the current region. The
relevant settings now appear in the Options frame.
- Instance vendors can no longer be mapped.
- Non-English versions should now be able to use the dropdowns (I hope).
- Now accounting for WoW's "Mithril Head Trout" bug - it should now show
up correctly as known or not.
 
v1.0; April 24, 2006
 
- Initial public release!
trunk/RecipeRadar/AvailabilityTooltip.lua New file
0,0 → 1,98

-- AvailabilityTooltip.lua: handles the recipe availability tooltip
-- $Id: AvailabilityTooltip.lua 1022 2008-03-07 20:57:50Z jnmiller $
 
function RecipeRadar_AvailabilityTooltip_AddLine(msg, color)
 
if (RecipeRadarAvailabilityTooltip.Lines ==
RecipeRadar_AvailabilityTooltip_MaxLines) then
RecipeRadar_Print("ASSERT FAILED: tooltip has too many lines.")
return
end
 
local line_num = RecipeRadarAvailabilityTooltip.Lines + 1
local line = _G["RecipeRadarAvailabilityTooltipText" .. line_num]
 
-- handle null colors
if (color) then
line:SetTextColor(color.r, color.g, color.b)
else
line:SetTextColor(1, 1, 1)
end
 
-- handle null messages
if (not msg or msg == "") then
line:SetText(" ")
else
line:SetText(msg)
end
 
line:Show()
 
RecipeRadarAvailabilityTooltip.Lines = line_num
 
end
 
function RecipeRadar_AvailabilityTooltip_Show(frame)
 
if (not frame or RecipeRadarAvailabilityTooltip.Lines == 0) then
RecipeRadar_AvailabilityTooltip_Hide()
return
end
 
-- calculate the width of the tooltip
local height = 20
local width = 0
for i = 1, RecipeRadarAvailabilityTooltip.Lines do
local line = _G["RecipeRadarAvailabilityTooltipText" .. i]
height = height + line:GetHeight() + 2
if (line:GetWidth() + 20 > width) then
width = line:GetWidth() + 20
end
end
 
RecipeRadarAvailabilityTooltip:SetWidth(width)
RecipeRadarAvailabilityTooltip:SetHeight(height)
RecipeRadarAvailabilityTooltip:ClearAllPoints()
 
-- place on the left or right according to the position of the main frame
local frame_left = (frame:GetLeft() or 0) - width
local frame_right = GetScreenWidth() - (frame:GetRight() or 0) - width
 
local offset = 0
if (RecipeRadar_Options.ActiveTab == 2) then
offset = RECIPERADAR_VENDOR_OFFSET
end
 
if (frame_left < frame_right) then
if (RecipeRadarListScrollFrame:IsVisible()) then
RecipeRadarAvailabilityTooltip:SetPoint(
"TOPLEFT", frame:GetName(), "TOPRIGHT", 35, 0)
else
RecipeRadarAvailabilityTooltip:SetPoint(
"TOPLEFT", frame:GetName(), "TOPRIGHT", 13, 0)
end
else
RecipeRadarAvailabilityTooltip:SetPoint(
"TOPRIGHT", frame:GetName(), "TOPLEFT", -33 + offset, 0)
end
 
-- basic drawing code
RecipeRadarAvailabilityTooltip:SetBackdropColor(
TOOLTIP_DEFAULT_BACKGROUND_COLOR.r,
TOOLTIP_DEFAULT_BACKGROUND_COLOR.g,
TOOLTIP_DEFAULT_BACKGROUND_COLOR.b)
RecipeRadarAvailabilityTooltip:Show()
 
end
 
function RecipeRadar_AvailabilityTooltip_Hide()
 
for i = 1, RecipeRadarAvailabilityTooltip.Lines do
_G["RecipeRadarAvailabilityTooltipText" .. i]:Hide()
end
 
RecipeRadarAvailabilityTooltip.Lines = 0
--RecipeRadarAvailabilityTooltip:Hide()
 
end
trunk/RecipeRadar/Worldmap.lua New file
0,0 → 1,59
 
-- Worldmap.lua: worldmap vendor plotting code
-- $Id: Worldmap.lua 1031 2008-03-27 05:41:46Z jnmiller $
 
-- Initializes the state of the worldmap overlays and settings.
function RecipeRadar_Worldmap_Init()
 
for i = 1, RECIPERADAR_MAPPED_VENDORS_MAX do
_G["RecipeRadarWorldmapIcon" .. i]:Hide()
end
 
end
 
-- Map the given icon to the given vendor.
function RecipeRadar_Worldmap_AddVendor(id, vendor, region, continent)
 
local button = _G["RecipeRadarWorldmapIcon" .. id]
button.Vendor = vendor
button.Continent = continent
button.RegionID = RecipeRadar_RegionNameToID(region, continent)
button.IsMapped = true
 
RecipeRadar_Worldmap_UpdateButton(button)
 
end
 
-- Resets and unmaps the given icon.
function RecipeRadar_Worldmap_RemoveVendor(id)
 
local button = _G["RecipeRadarWorldmapIcon" .. id]
button.Vendor = nil
button.RegionID = nil
button.Continent = nil
button.IsMapped = false
button:Hide()
 
end
 
-- Draw the supplied button on the world map.
function RecipeRadar_Worldmap_UpdateButton(button)
 
local Astrolabe = DongleStub("Astrolabe-0.4")
Astrolabe:PlaceIconOnWorldMap(_G["WorldMapDetailFrame"],
button, button.Continent, button.RegionID,
button.Vendor.Coordinates[1].x, button.Vendor.Coordinates[1].y)
 
end
 
-- Redraw buttons on the current world map.
function RecipeRadar_Worldmap_UpdateButtons()
 
for i = 1, RECIPERADAR_MAPPED_VENDORS_MAX do
local button = _G["RecipeRadarWorldmapIcon" .. i]
if (button.IsMapped) then
RecipeRadar_Worldmap_UpdateButton(button)
end
end
 
end
trunk/RecipeRadar/RecipeRadar.toc New file
0,0 → 1,26
## Interface: 40000
## Version: 1.401
## Title: Recipe Radar
## Author: Jay Miller
## X-Contributor: speedwaystar
## Notes: Locates vendors who sell recipes in the current region or by profession.
## Notes-deDE: Lokalisiert Händler, die Rezepte im Strombereich oder durch Beruf verkaufen.
## Notes-frFR: Localise les marchands qui vendent des recettes, par région ou par profession.
## Notes-esES: Localiza a vendedores que venden recetas en la región actual o por la profesión.
## Notes-zhTW: 位於售賣食譜在當前區域或者專業.
## SavedVariables: RecipeRadar_SkillDB RecipeRadar_NameCache
## SavedVariablesPerCharacter: RecipeRadar_Options RecipeRadar_Filters
## X-Curse-Packaged-Version: r4
## X-Curse-Project-Name: Recipe Radar
## X-Curse-Project-ID: recipe-radar
## X-Curse-Repository-ID: wow/recipe-radar/cataclysm
Astrolabe\Load.xml
Localization.lua
Globals.lua
FontStyles.xml
FrameTemplates.xml
Maps.xml
MinimapButton.xml
AvailabilityTooltip.xml
RecipeRadar.xml
OptionsFrame.xml
trunk/RecipeRadar/FrameTemplates.xml New file
0,0 → 1,264
<?xml version="1.0" encoding="utf-8" ?>
 
<UI xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
 
<Button name="RecipeRadarVendorButtonTemplate" hidden="true" virtual="true">
<Size>
<AbsDimension x="393" y="16"/>
</Size>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentSubText" inherits="GameFontNormalSmallLeft"/>
<Texture name="$parentCheck" file="Interface\Buttons\UI-CheckBox-Check" hidden="true">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="50" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
self:SetFrameLevel(self:GetFrameLevel() + 1)
self:RegisterForClicks("LeftButtonUp", "RightButtonUp")
</OnLoad>
<OnClick>
RecipeRadar_VendorButton_OnClick(self, button)
</OnClick>
<OnEnter>
if (self.r) then
_G[self:GetName() .. "SubText"]:SetTextColor(self.r + RecipeRadar_Colors.Highlight, self.g + RecipeRadar_Colors.Highlight, self.b + RecipeRadar_Colors.Highlight)
end
if (RecipeRadar_Options.RealmAvailability and self.Recipe) then
RecipeRadar_Availability_CreateTooltip(self.Recipe)
RecipeRadar_AvailabilityTooltip_Show(self)
end
</OnEnter>
<OnLeave>
_G[self:GetName() .. "SubText"]:SetTextColor(self.r, self.g, self.b)
RecipeRadarAvailabilityTooltip:Hide()
</OnLeave>
<OnMouseDown>
_G[self:GetName() .. "SubText"]:SetPoint("LEFT", self:GetName() .. "Text", "RIGHT", 11, -1)
</OnMouseDown>
<OnMouseUp>
_G[self:GetName() .. "SubText"]:SetPoint("LEFT", self:GetName() .. "Text", "RIGHT", 10, 0)
</OnMouseUp>
</Scripts>
<NormalTexture>
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="3" y="0"/>
</Offset>
</Anchor>
</Anchors>
</NormalTexture>
<HighlightTexture name="$parentHighlight" alphaMode="ADD">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="3" y="0"/>
</Offset>
</Anchor>
</Anchors>
</HighlightTexture>
<DisabledTexture file="Interface\Buttons\UI-PlusButton-Disabled">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="3" y="0"/>
</Offset>
</Anchor>
</Anchors>
</DisabledTexture>
<ButtonText name="$parentText">
<Size>
<AbsDimension x="0" y="13"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentHighlight" relativePoint="RIGHT">
<Offset>
<AbsDimension x="2" y="1"/>
</Offset>
</Anchor>
</Anchors>
</ButtonText>
</Button>
 
<Button name="RecipeRadarScrollTemplate" hidden="true" virtual="true">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="CENTER" relativeTo="RecipeRadarMapFrame" relativePoint="TOPLEFT"/>
</Anchors>
<Scripts>
<OnEnter>
RecipeRadar_Maps_SetTooltip(GameTooltip, self)
</OnEnter>
<OnLeave>
GameTooltip:Hide()
</OnLeave>
</Scripts>
<NormalTexture file="Interface\Addons\RecipeRadar\Images\Misc\Scroll"/>
</Button>
 
<ScrollFrame name="RecipeRadarDetailScrollFrameTemplate" inherits="UIPanelScrollFrameTemplate" virtual="true">
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentTop" file="Interface\RecipeRadarFrame\UI-RecipeRadar-ScrollBar">
<Size>
<AbsDimension x="30" y="123"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-2" y="5"/>
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0" right="0.46875" top="0" bottom="0.9609375"/>
</Texture>
<Texture name="$parentBottom" file="Interface\RecipeRadarFrame\UI-RecipeRadar-ScrollBar">
<Size>
<AbsDimension x="30" y="123"/>
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT" relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="-2" y="-1"/>
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0.53125" right="1.0" top="0.03125" bottom="1.0"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
ScrollFrame_OnLoad(self)
self.scrollBarHideable = 1
</OnLoad>
</Scripts>
</ScrollFrame>
 
<ScrollFrame name="RecipeRadarListScrollFrameTemplate" inherits="FauxScrollFrameTemplate" virtual="true">
<Layers>
<Layer level="BACKGROUND">
<Texture file="Interface\ClassTrainerFrame\UI-ClassTrainer-ScrollBar">
<Size>
<AbsDimension x="30" y="120"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-3" y="2"/>
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0" right="0.46875" top="0.0234375" bottom="0.9609375"/>
</Texture>
<Texture file="Interface\ClassTrainerFrame\UI-ClassTrainer-ScrollBar">
<Size>
<AbsDimension x="30" y="123"/>
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT" relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="-3" y="-2"/>
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0.53125" right="1.0" top="0.03125" bottom="1.0"/>
</Texture>
</Layer>
</Layers>
</ScrollFrame>
 
<Button name="RecipeRadarTabButtonTemplate" virtual="true">
<Size>
<AbsDimension x="53" y="29"/>
</Size>
<Scripts>
<OnMouseDown>
_G[self:GetName() .. "Normal"]:SetPoint("LEFT", 21, 1)
_G[self:GetName() .. "Highlight"]:SetPoint("LEFT", 21, 1)
</OnMouseDown>
<OnMouseUp>
_G[self:GetName() .. "Normal"]:SetPoint("LEFT", 20, 2)
_G[self:GetName() .. "Highlight"]:SetPoint("LEFT", 20, 2)
</OnMouseUp>
</Scripts>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentLeft" file="Interface\ClassTrainerFrame\UI-ClassTrainer-ExpandTab-Left">
<Size>
<AbsDimension x="8" y="33"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
</Texture>
<Texture name="$parentMiddle" file="Interface\QuestFrame\UI-QuestLogSortTab-Middle">
<Size>
<AbsDimension x="38" y="33"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentLeft" relativePoint="TOPRIGHT"/>
</Anchors>
</Texture>
<Texture name="$parentRight" file="Interface\QuestFrame\UI-QuestLogSortTab-Right">
<Size>
<AbsDimension x="8" y="33"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentMiddle" relativePoint="TOPRIGHT"/>
</Anchors>
</Texture>
</Layer>
</Layers>
<NormalTexture name="$parentNormal">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="19" y="2"/>
</Offset>
</Anchor>
</Anchors>
</NormalTexture>
<HighlightTexture name="$parentHighlight" alphaMode="ADD">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="19" y="2"/>
</Offset>
</Anchor>
</Anchors>
</HighlightTexture>
</Button>
 
</UI>
trunk/RecipeRadar/FontStyles.xml New file
0,0 → 1,40
<?xml version="1.0" encoding="utf-8" ?>
 
<UI xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
 
<Font name="RecipeRadarAlliance" inherits="GameFontNormalLeft" virtual="true">
<Color r="0.5" g="0.625" b="1.0"/>
</Font>
<Font name="RecipeRadarHorde" inherits="GameFontNormalLeft" virtual="true">
<Color r="1.0" g="0.125" b="0.25"/>
</Font>
<Font name="RecipeRadarNeutral" inherits="GameFontNormalLeft" virtual="true">
<Color r="1.0" g="0.82" b="0.0"/>
</Font>
 
<Font name="RecipeRadarAllianceHighlight" inherits="GameFontHighlightLeft" virtual="true">
<Color r="0.7" g="0.825" b="1.0"/>
</Font>
<Font name="RecipeRadarHordeHighlight" inherits="GameFontHighlightLeft" virtual="true">
<Color r="1.0" g="0.325" b="0.45"/>
</Font>
<Font name="RecipeRadarNeutralHighlight" inherits="GameFontHighlightLeft" virtual="true">
<Color r="1.0" g="1.0" b="0.2"/>
</Font>
 
<Font name="RecipeRadarGray" inherits="GameFontNormalLeft" virtual="true">
<Color r="0.9" g="0.9" b="0.9"/>
</Font>
<Font name="RecipeRadarDarkGray" inherits="GameFontNormalLeft" virtual="true">
<Color r="0.75" g="0.75" b="0.75"/>
</Font>
<Font name="RecipeRadarGrayHighlight" inherits="GameFontHighlightLeft" virtual="true">
<Color r="1.0" g="1.0" b="1.0"/>
</Font>
<Font name="RecipeRadarDarkGrayHighlight" inherits="GameFontHighlightLeft" virtual="true">
<Color r="0.95" g="0.95" b="0.95"/>
</Font>
 
</UI>
trunk/RecipeRadar/Minimap.lua New file
0,0 → 1,61
 
-- Minimap.lua: minimap vendor plotting code
-- $Id: Minimap.lua 1031 2008-03-27 05:41:46Z jnmiller $
-- Note: the mapping code in here is from MapNotes, by Sir.Bender, et al.
 
-- Initializes the state of the minimap overlays and settings.
function RecipeRadar_Minimap_Init()
 
for i = 1, RECIPERADAR_MAPPED_VENDORS_MAX do
local button = _G["RecipeRadarMinimapIcon" .. i]
button.Elapsed = 0
button:Hide()
end
 
end
 
function RecipeRadar_Minimap_OnNewRegion()
 
SetMapToCurrentZone()
for i = 1, RECIPERADAR_MAPPED_VENDORS_MAX do
local button = _G["RecipeRadarMinimapIcon" .. i]
if (button.IsMapped and button.Region == GetRealZoneText()) then
button:Show()
else
button:Hide()
end
end
 
end
 
-- Map the given icon to the given vendor.
function RecipeRadar_Minimap_AddVendor(id, vendor, region)
 
local button = _G["RecipeRadarMinimapIcon" .. id]
 
button.Vendor = vendor
button.Region = region
button.Elapsed = RECIPERADAR_MINIMAP_UPDATE
button.IsMapped = true
 
local Astrolabe = DongleStub("Astrolabe-0.4")
local continent = RecipeRadar_RegionData[region].Continent
Astrolabe:PlaceIconOnMinimap(button, continent,
RecipeRadar_RegionNameToID(region, continent),
vendor.Coordinates[1].x, vendor.Coordinates[1].y)
 
end
 
-- Resets and unmaps the given icon.
function RecipeRadar_Minimap_RemoveVendor(id)
 
local button = _G["RecipeRadarMinimapIcon" .. id]
 
button.Vendor = nil
button.Region = nil
button.IsMapped = false
 
local Astrolabe = DongleStub("Astrolabe-0.4")
Astrolabe:RemoveIconFromMinimap(button)
 
end
trunk/RecipeRadar/Astrolabe/Astrolabe.lua New file
0,0 → 1,1643
--[[
Name: Astrolabe
Revision: $Rev: 125 $
$Date: 2010-12-11 21:17:15 -0800 (Sat, 11 Dec 2010) $
Author(s): Esamynn (esamynn at wowinterface.com)
Inspired By: Gatherer by Norganna
MapLibrary by Kristofer Karlsson (krka at kth.se)
Documentation: http://wiki.esamynn.org/Astrolabe
SVN: http://svn.esamynn.org/astrolabe/
Description:
This is a library for the World of Warcraft UI system to place
icons accurately on both the Minimap and on Worldmaps.
This library also manages and updates the position of Minimap icons
automatically.
 
Copyright (C) 2006-2010 James Carrothers
 
License:
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
 
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
 
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
Note:
This library's source code is specifically designed to work with
World of Warcraft's interpreted AddOn system. You have an implicit
licence to use this library with these facilities since that is its
designated purpose as per:
http://www.fsf.org/licensing/licenses/gpl-faq.html#InterpreterIncompat
]]
 
-- WARNING!!!
-- DO NOT MAKE CHANGES TO THIS LIBRARY WITHOUT FIRST CHANGING THE LIBRARY_VERSION_MAJOR
-- STRING (to something unique) OR ELSE YOU MAY BREAK OTHER ADDONS THAT USE THIS LIBRARY!!!
local LIBRARY_VERSION_MAJOR = "Astrolabe-1.0"
local LIBRARY_VERSION_MINOR = tonumber(string.match("$Revision: 125 $", "(%d+)") or 1)
 
if not DongleStub then error(LIBRARY_VERSION_MAJOR .. " requires DongleStub.") end
if not DongleStub:IsNewerVersion(LIBRARY_VERSION_MAJOR, LIBRARY_VERSION_MINOR) then return end
 
local Astrolabe = {};
 
-- define local variables for Data Tables (defined at the end of this file)
local WorldMapSize, MinimapSize, ValidMinimapShapes, zeroData;
 
function Astrolabe:GetVersion()
return LIBRARY_VERSION_MAJOR, LIBRARY_VERSION_MINOR;
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Config Constants
--------------------------------------------------------------------------------------------------------------
 
local configConstants = {
MinimapUpdateMultiplier = true,
}
 
-- this constant is multiplied by the current framerate to determine
-- how many icons are updated each frame
Astrolabe.MinimapUpdateMultiplier = 1;
 
 
--------------------------------------------------------------------------------------------------------------
-- Working Tables
--------------------------------------------------------------------------------------------------------------
 
Astrolabe.LastPlayerPosition = { 0, 0, 0, 0 };
Astrolabe.MinimapIcons = {};
Astrolabe.IconsOnEdge = {};
Astrolabe.IconsOnEdge_GroupChangeCallbacks = {};
 
Astrolabe.MinimapIconCount = 0
Astrolabe.ForceNextUpdate = false;
Astrolabe.IconsOnEdgeChanged = false;
 
-- This variable indicates whether we know of a visible World Map or not.
-- The state of this variable is controlled by the AstrolabeMapMonitor library.
Astrolabe.WorldMapVisible = false;
 
local AddedOrUpdatedIcons = {}
local MinimapIconsMetatable = { __index = AddedOrUpdatedIcons }
 
 
--------------------------------------------------------------------------------------------------------------
-- Local Pointers for often used API functions
--------------------------------------------------------------------------------------------------------------
 
local twoPi = math.pi * 2;
local atan2 = math.atan2;
local sin = math.sin;
local cos = math.cos;
local abs = math.abs;
local sqrt = math.sqrt;
local min = math.min
local max = math.max
local yield = coroutine.yield
local next = next
local GetFramerate = GetFramerate
 
local real_GetCurrentMapAreaID = GetCurrentMapAreaID
local function GetCurrentMapAreaID()
local id = real_GetCurrentMapAreaID();
if ( id < 0 and GetCurrentMapContinent() == WORLDMAP_WORLD_ID ) then
return 0;
end
return id;
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Internal Utility Functions
--------------------------------------------------------------------------------------------------------------
 
local function assert(level,condition,message)
if not condition then
error(message,level)
end
end
 
local function argcheck(value, num, ...)
assert(1, type(num) == "number", "Bad argument #2 to 'argcheck' (number expected, got " .. type(level) .. ")")
 
for i=1,select("#", ...) do
if type(value) == select(i, ...) then return end
end
 
local types = strjoin(", ", ...)
local name = string.match(debugstack(2,2,0), ": in function [`<](.-)['>]")
error(string.format("Bad argument #%d to 'Astrolabe.%s' (%s expected, got %s)", num, name, types, type(value)), 3)
end
 
local function getSystemPosition( mapData, f, x, y )
if ( f ~= 0 ) then
mapData = mapData[f];
end
x = x * mapData.width + mapData.xOffset;
y = y * mapData.height + mapData.yOffset;
return x, y;
end
 
 
--------------------------------------------------------------------------------------------------------------
-- General Utility Functions
--------------------------------------------------------------------------------------------------------------
 
function Astrolabe:ComputeDistance( m1, f1, x1, y1, m2, f2, x2, y2 )
--[[
argcheck(m1, 2, "number");
assert(3, m1 >= 0, "ComputeDistance: Illegal map id to m1: "..m1);
argcheck(f1, 3, "number", "nil");
argcheck(x1, 4, "number");
argcheck(y1, 5, "number");
argcheck(m2, 6, "number");
assert(3, m2 >= 0, "ComputeDistance: Illegal map id to m2: "..m2);
argcheck(f2, 7, "number", "nil");
argcheck(x2, 8, "number");
argcheck(y2, 9, "number");
--]]
 
if not ( m1 and m2 ) then return end;
f1 = f1 or min(#WorldMapSize[m1], 1);
f2 = f2 or min(#WorldMapSize[m2], 1);
 
local dist, xDelta, yDelta;
if ( m1 == m2 and f1 == f2 ) then
-- points in the same zone on the same floor
local mapData = WorldMapSize[m1];
if ( f1 ~= 0 ) then
mapData = mapData[f1];
end
xDelta = (x2 - x1) * mapData.width;
yDelta = (y2 - y1) * mapData.height;
 
else
local map1 = WorldMapSize[m1];
local map2 = WorldMapSize[m2];
if ( map1.system == map2.system ) then
-- points within the same system (continent)
x1, y1 = getSystemPosition(map1, f1, x1, y1);
x2, y2 = getSystemPosition(map2, f2, x2, y2);
xDelta = (x2 - x1);
yDelta = (y2 - y1);
 
else
local sp1 = map1.systemParent;
local sp2 = map2.systemParent;
if ( sp1 == sp2 ) then
--local worldID = sp1;
-- instead of a new local, reuse sp1
local s1 = map1.system;
local s2 = map2.system;
x1, y1 = getSystemPosition(map1, f1, x1, y1);
x2, y2 = getSystemPosition(map2, f2, x2, y2);
if not ( s1 == map1.systemParent ) then
local cont1 = WorldMapSize[sp1][s1];
x1 = x1 - cont1.xOffset;
y1 = y1 - cont1.yOffset;
end
if not ( s2 == map2.systemParent ) then
local cont2 = WorldMapSize[sp1][s2];
x2 = x2 - cont2.xOffset;
y2 = y2 - cont2.yOffset;
end
 
xDelta = x2 - x1;
yDelta = y2 - y1;
end
 
end
 
end
if ( xDelta and yDelta ) then
dist = sqrt(xDelta*xDelta + yDelta*yDelta);
end
return dist, xDelta, yDelta;
end
 
function Astrolabe:TranslateWorldMapPosition( M, F, xPos, yPos, nM, nF )
--[[
argcheck(M, 2, "number");
argcheck(F, 3, "number", "nil");
argcheck(xPos, 4, "number");
argcheck(yPos, 5, "number");
argcheck(nM, 6, "number");
argcheck(nF, 7, "number", "nil");
--]]
 
if not ( M and nM ) then return end;
F = F or min(#WorldMapSize[M], 1);
nF = nF or min(#WorldMapSize[nM], 1);
if ( nM < 0 ) then
return;
end
 
local mapData;
if ( M == nM and F == nF ) then
return xPos, yPos;
 
else
local map = WorldMapSize[M];
local nMap = WorldMapSize[nM];
if ( map.system == nMap.system ) then
-- points within the same system (continent)
xPos, yPos = getSystemPosition(map, F, xPos, yPos);
mapData = WorldMapSize[nM];
if ( nF ~= 0 ) then
mapData = mapData[nF];
end
 
else
-- different continents, same world
local SP = map.systemParent;
local nSP = nMap.systemParent;
if ( SP == nSP ) then
--local worldID = SP;
-- instead of a new local, reuse SP
local S = map.system;
local nS = nMap.system;
mapData = WorldMapSize[M];
xPos, yPos = getSystemPosition(mapData, F, xPos, yPos);
if ( M ~= SP ) then
-- translate up to world map if we aren't there already
local cont = WorldMapSize[SP][S];
xPos = xPos - cont.xOffset;
yPos = yPos - cont.yOffset;
mapData = WorldMapSize[SP];
end
if ( nM ~= SP ) then
-- translate down to the new continent
local nCont = WorldMapSize[SP][nS];
xPos = xPos + nCont.xOffset;
yPos = yPos + nCont.yOffset;
mapData = WorldMapSize[nM];
if ( nF ~= 0 ) then
mapData = mapData[nF];
end
end
 
else
return;
end
 
end
-- need to account for the offset in the new system so we can
-- correctly translate into 0-1 style coordinates
xPos = xPos - mapData.xOffset;
yPos = yPos - mapData.yOffset;
 
end
 
return (xPos / mapData.width), (yPos / mapData.height);
end
 
--*****************************************************************************
-- This function will do its utmost to retrieve some sort of valid position
-- for the specified unit, including changing the current map zoom (if needed).
-- Map Zoom is returned to its previous setting before this function returns.
--*****************************************************************************
function Astrolabe:GetUnitPosition( unit, noMapChange )
local x, y = GetPlayerMapPosition(unit);
if ( x <= 0 and y <= 0 ) then
if ( noMapChange ) then
-- no valid position on the current map, and we aren't allowed
-- to change map zoom, so return
return;
end
local lastMapID, lastFloor = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel();
SetMapToCurrentZone();
x, y = GetPlayerMapPosition(unit);
if ( x <= 0 and y <= 0 ) then
WorldMapZoomOutButton_OnClick();
x, y = GetPlayerMapPosition(unit);
if ( x <= 0 and y <= 0 ) then
-- we are in an instance or otherwise off map
return;
end
end
local M, F = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel();
if ( M ~= lastMapID or F ~= lastFloor ) then
-- set map zoom back to what it was before
SetMapByID(lastMapID);
SetDungeonMapLevel(lastFloor);
end
return M, F, x, y;
end
return GetCurrentMapAreaID(), GetCurrentMapDungeonLevel(), x, y;
end
 
--*****************************************************************************
-- This function will do its utmost to retrieve some sort of valid position
-- for the specified unit, including changing the current map zoom (if needed).
-- However, if a monitored WorldMapFrame (See AstrolabeMapMonitor.lua) is
-- visible, then will simply return nil if the current zoom does not provide
-- a valid position for the player unit. Map Zoom is returned to its previous
-- setting before this function returns, if it was changed.
--*****************************************************************************
function Astrolabe:GetCurrentPlayerPosition()
return self:GetUnitPosition("player", self.WorldMapVisible);
end
 
function Astrolabe:GetMapID(continent, zone)
zone = zone or 0;
local ret = self.ContinentList[continent];
if ( ret ) then
return ret[zone];
end
if ( continent == 0 and zone == 0 ) then
return 0;
end
end
 
function Astrolabe:GetNumFloors( mapID )
if ( type(mapID) == "number" ) then
local mapData = WorldMapSize[mapID]
return #mapData
end
end
 
function Astrolabe:GetMapInfo( mapID, mapFloor )
argcheck(mapID, 2, "number");
assert(3, mapID >= 0, "GetMapInfo: Illegal map id to mapID: "..mapID);
argcheck(mapFloor, 3, "number", "nil");
 
mapFloor = mapFloor or min(#WorldMapSize[mapID], 1);
local mapData = WorldMapSize[mapID];
local system, systemParent = mapData.system, mapData.systemParent
if ( mapFloor ~= 0 ) then
mapData = mapData[mapFloor];
end
if ( mapData ~= zeroData ) then
return system, systemParent, mapData.width, mapData.height, mapData.xOffset, mapData.yOffset;
end
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Working Table Cache System
--------------------------------------------------------------------------------------------------------------
 
local tableCache = {};
tableCache["__mode"] = "v";
setmetatable(tableCache, tableCache);
 
local function GetWorkingTable( icon )
if ( tableCache[icon] ) then
return tableCache[icon];
else
local T = {};
tableCache[icon] = T;
return T;
end
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Minimap Icon Placement
--------------------------------------------------------------------------------------------------------------
 
--*****************************************************************************
-- local variables specifically for use in this section
--*****************************************************************************
local minimapRotationEnabled = false;
local minimapShape = false;
 
local minimapRotationOffset = GetPlayerFacing();
 
 
local function placeIconOnMinimap( minimap, minimapZoom, mapWidth, mapHeight, icon, dist, xDist, yDist )
local mapDiameter;
if ( Astrolabe.minimapOutside ) then
mapDiameter = MinimapSize.outdoor[minimapZoom];
else
mapDiameter = MinimapSize.indoor[minimapZoom];
end
local mapRadius = mapDiameter / 2;
local xScale = mapDiameter / mapWidth;
local yScale = mapDiameter / mapHeight;
local iconDiameter = ((icon:GetWidth() / 2) + 3) * xScale;
local iconOnEdge = nil;
local isRound = true;
 
if ( minimapRotationEnabled ) then
local sinTheta = sin(minimapRotationOffset)
local cosTheta = cos(minimapRotationOffset)
--[[
Math Note
The math that is acutally going on in the next 3 lines is:
local dx, dy = xDist, -yDist
xDist = (dx * cosTheta) + (dy * sinTheta)
yDist = -((-dx * sinTheta) + (dy * cosTheta))
 
This is because the origin for map coordinates is the top left corner
of the map, not the bottom left, and so we have to reverse the vertical
distance when doing the our rotation, and then reverse the result vertical
distance because this rotation formula gives us a result with the origin based
in the bottom left corner (of the (+, +) quadrant).
The actual code is a simplification of the above.
]]
local dx, dy = xDist, yDist
xDist = (dx * cosTheta) - (dy * sinTheta)
yDist = (dx * sinTheta) + (dy * cosTheta)
end
 
if ( minimapShape and not (xDist == 0 or yDist == 0) ) then
isRound = (xDist < 0) and 1 or 3;
if ( yDist < 0 ) then
isRound = minimapShape[isRound];
else
isRound = minimapShape[isRound + 1];
end
end
 
-- for non-circular portions of the Minimap edge
if not ( isRound ) then
dist = max(abs(xDist), abs(yDist))
end
 
if ( (dist + iconDiameter) > mapRadius ) then
-- position along the outside of the Minimap
iconOnEdge = true;
local factor = (mapRadius - iconDiameter) / dist;
xDist = xDist * factor;
yDist = yDist * factor;
end
 
if ( Astrolabe.IconsOnEdge[icon] ~= iconOnEdge ) then
Astrolabe.IconsOnEdge[icon] = iconOnEdge;
Astrolabe.IconsOnEdgeChanged = true;
end
 
icon:ClearAllPoints();
icon:SetPoint("CENTER", minimap, "CENTER", xDist/xScale, -yDist/yScale);
end
 
function Astrolabe:PlaceIconOnMinimap( icon, mapID, mapFloor, xPos, yPos )
-- check argument types
argcheck(icon, 2, "table");
assert(3, icon.SetPoint and icon.ClearAllPoints, "Usage Message");
argcheck(mapID, 3, "number");
argcheck(mapFloor, 4, "number", "nil");
argcheck(xPos, 5, "number");
argcheck(yPos, 6, "number");
 
-- if the positining system is currently active, just use the player position used by the last incremental (or full) update
-- otherwise, make sure we base our calculations off of the most recent player position (if one is available)
local lM, lF, lx, ly;
if ( self.processingFrame:IsShown() ) then
lM, lF, lx, ly = unpack(self.LastPlayerPosition);
else
lM, lF, lx, ly = self:GetCurrentPlayerPosition();
if ( lM and lM >= 0 ) then
local lastPosition = self.LastPlayerPosition;
lastPosition[1] = lM;
lastPosition[2] = lF;
lastPosition[3] = lx;
lastPosition[4] = ly;
else
lM, lF, lx, ly = unpack(self.LastPlayerPosition);
end
end
 
local dist, xDist, yDist = self:ComputeDistance(lM, lF, lx, ly, mapID, mapFloor, xPos, yPos);
if not ( dist ) then
--icon's position has no meaningful position relative to the player's current location
return -1;
end
 
local iconData = GetWorkingTable(icon);
if ( self.MinimapIcons[icon] ) then
self.MinimapIcons[icon] = nil;
else
self.MinimapIconCount = self.MinimapIconCount + 1
end
 
AddedOrUpdatedIcons[icon] = iconData
iconData.mapID = mapID;
iconData.mapFloor = mapFloor;
iconData.xPos = xPos;
iconData.yPos = yPos;
iconData.dist = dist;
iconData.xDist = xDist;
iconData.yDist = yDist;
 
minimapRotationEnabled = GetCVar("rotateMinimap") ~= "0"
if ( minimapRotationEnabled ) then
minimapRotationOffset = GetPlayerFacing();
end
 
-- check Minimap Shape
minimapShape = GetMinimapShape and ValidMinimapShapes[GetMinimapShape()];
 
-- place the icon on the Minimap and :Show() it
local map = Minimap
placeIconOnMinimap(map, map:GetZoom(), map:GetWidth(), map:GetHeight(), icon, dist, xDist, yDist);
icon:Show()
 
-- We know this icon's position is valid, so we need to make sure the icon placement system is active.
self.processingFrame:Show()
 
return 0;
end
 
function Astrolabe:RemoveIconFromMinimap( icon )
if not ( self.MinimapIcons[icon] ) then
return 1;
end
AddedOrUpdatedIcons[icon] = nil
self.MinimapIcons[icon] = nil;
self.IconsOnEdge[icon] = nil;
icon:Hide();
 
local MinimapIconCount = self.MinimapIconCount - 1
if ( MinimapIconCount <= 0 ) then
-- no icons left to manage
self.processingFrame:Hide()
MinimapIconCount = 0 -- because I'm paranoid
end
self.MinimapIconCount = MinimapIconCount
 
return 0;
end
 
function Astrolabe:RemoveAllMinimapIcons()
self:DumpNewIconsCache()
local MinimapIcons = self.MinimapIcons;
local IconsOnEdge = self.IconsOnEdge;
for k, v in pairs(MinimapIcons) do
MinimapIcons[k] = nil;
IconsOnEdge[k] = nil;
k:Hide();
end
self.MinimapIconCount = 0
self.processingFrame:Hide()
end
 
local lastZoom; -- to remember the last seen Minimap zoom level
 
-- local variables to track the status of the two update coroutines
local fullUpdateInProgress = true
local resetIncrementalUpdate = false
local resetFullUpdate = false
 
-- Incremental Update Code
do
-- local variables to track the incremental update coroutine
local incrementalUpdateCrashed = true
local incrementalUpdateThread
 
local function UpdateMinimapIconPositions( self )
yield()
 
while ( true ) do
self:DumpNewIconsCache() -- put new/updated icons into the main datacache
 
resetIncrementalUpdate = false -- by definition, the incremental update is reset if it is here
 
local M, F, x, y = self:GetCurrentPlayerPosition();
if ( M and M >= 0 ) then
local Minimap = Minimap;
local lastPosition = self.LastPlayerPosition;
local lM, lF, lx, ly = unpack(lastPosition);
 
minimapRotationEnabled = GetCVar("rotateMinimap") ~= "0"
if ( minimapRotationEnabled ) then
minimapRotationOffset = GetPlayerFacing();
end
 
-- check current frame rate
local numPerCycle = min(50, GetFramerate() * (self.MinimapUpdateMultiplier or 1))
 
-- check Minimap Shape
minimapShape = GetMinimapShape and ValidMinimapShapes[GetMinimapShape()];
 
if ( lM == M and lF == F and lx == x and ly == y ) then
-- player has not moved since the last update
if ( lastZoom ~= Minimap:GetZoom() or self.ForceNextUpdate or minimapRotationEnabled ) then
local currentZoom = Minimap:GetZoom();
lastZoom = currentZoom;
local mapWidth = Minimap:GetWidth();
local mapHeight = Minimap:GetHeight();
numPerCycle = numPerCycle * 2
local count = 0
for icon, data in pairs(self.MinimapIcons) do
placeIconOnMinimap(Minimap, currentZoom, mapWidth, mapHeight, icon, data.dist, data.xDist, data.yDist);
 
count = count + 1
if ( count > numPerCycle ) then
count = 0
yield()
-- check if the incremental update cycle needs to be reset
-- because a full update has been run
if ( resetIncrementalUpdate ) then
break;
end
end
end
self.ForceNextUpdate = false;
end
else
local dist, xDelta, yDelta = self:ComputeDistance(lM, lF, lx, ly, M, F, x, y);
if ( dist ) then
local currentZoom = Minimap:GetZoom();
lastZoom = currentZoom;
local mapWidth = Minimap:GetWidth();
local mapHeight = Minimap:GetHeight();
local count = 0
for icon, data in pairs(self.MinimapIcons) do
local xDist = data.xDist - xDelta;
local yDist = data.yDist - yDelta;
local dist = sqrt(xDist*xDist + yDist*yDist);
placeIconOnMinimap(Minimap, currentZoom, mapWidth, mapHeight, icon, dist, xDist, yDist);
 
data.dist = dist;
data.xDist = xDist;
data.yDist = yDist;
 
count = count + 1
if ( count >= numPerCycle ) then
count = 0
yield()
-- check if the incremental update cycle needs to be reset
-- because a full update has been run
if ( resetIncrementalUpdate ) then
break;
end
end
end
if not ( resetIncrementalUpdate ) then
lastPosition[1] = M;
lastPosition[2] = F;
lastPosition[3] = x;
lastPosition[4] = y;
end
else
self:RemoveAllMinimapIcons()
lastPosition[1] = M;
lastPosition[2] = F;
lastPosition[3] = x;
lastPosition[4] = y;
end
end
else
if not ( self.WorldMapVisible ) then
self.processingFrame:Hide();
end
end
 
-- if we've been reset, then we want to start the new cycle immediately
if not ( resetIncrementalUpdate ) then
yield()
end
end
end
 
function Astrolabe:UpdateMinimapIconPositions()
if ( fullUpdateInProgress ) then
-- if we're in the middle a a full update, we want to finish that first
self:CalculateMinimapIconPositions()
else
if ( incrementalUpdateCrashed ) then
incrementalUpdateThread = coroutine.wrap(UpdateMinimapIconPositions)
incrementalUpdateThread(self) --initialize the thread
end
incrementalUpdateCrashed = true
incrementalUpdateThread()
incrementalUpdateCrashed = false
end
end
end
 
-- Full Update Code
do
-- local variables to track the full update coroutine
local fullUpdateCrashed = true
local fullUpdateThread
 
local function CalculateMinimapIconPositions( self )
yield()
 
while ( true ) do
self:DumpNewIconsCache() -- put new/updated icons into the main datacache
 
resetFullUpdate = false -- by definition, the full update is reset if it is here
fullUpdateInProgress = true -- set the flag the says a full update is in progress
 
local M, F, x, y = self:GetCurrentPlayerPosition();
if ( M and M >= 0 ) then
minimapRotationEnabled = GetCVar("rotateMinimap") ~= "0"
if ( minimapRotationEnabled ) then
minimapRotationOffset = GetPlayerFacing();
end
 
-- check current frame rate
local numPerCycle = GetFramerate() * (self.MinimapUpdateMultiplier or 1) * 2
 
-- check Minimap Shape
minimapShape = GetMinimapShape and ValidMinimapShapes[GetMinimapShape()];
 
local currentZoom = Minimap:GetZoom();
lastZoom = currentZoom;
local Minimap = Minimap;
local mapWidth = Minimap:GetWidth();
local mapHeight = Minimap:GetHeight();
local count = 0
for icon, data in pairs(self.MinimapIcons) do
local dist, xDist, yDist = self:ComputeDistance(M, F, x, y, data.mapID, data.mapFloor, data.xPos, data.yPos);
if ( dist ) then
placeIconOnMinimap(Minimap, currentZoom, mapWidth, mapHeight, icon, dist, xDist, yDist);
 
data.dist = dist;
data.xDist = xDist;
data.yDist = yDist;
else
self:RemoveIconFromMinimap(icon)
end
 
count = count + 1
if ( count >= numPerCycle ) then
count = 0
yield()
-- check if we need to restart due to the full update being reset
if ( resetFullUpdate ) then
break;
end
end
end
 
if not ( resetFullUpdate ) then
local lastPosition = self.LastPlayerPosition;
lastPosition[1] = M;
lastPosition[2] = F;
lastPosition[3] = x;
lastPosition[4] = y;
 
resetIncrementalUpdate = true
end
else
if not ( self.WorldMapVisible ) then
self.processingFrame:Hide();
end
end
 
-- if we've been reset, then we want to start the new cycle immediately
if not ( resetFullUpdate ) then
fullUpdateInProgress = false
yield()
end
end
end
 
function Astrolabe:CalculateMinimapIconPositions( reset )
if ( fullUpdateCrashed ) then
fullUpdateThread = coroutine.wrap(CalculateMinimapIconPositions)
fullUpdateThread(self) --initialize the thread
elseif ( reset ) then
resetFullUpdate = true
end
fullUpdateCrashed = true
fullUpdateThread()
fullUpdateCrashed = false
 
-- return result flag
if ( fullUpdateInProgress ) then
return 1 -- full update started, but did not complete on this cycle
 
else
if ( resetIncrementalUpdate ) then
return 0 -- update completed
else
return -1 -- full update did no occur for some reason
end
 
end
end
end
 
function Astrolabe:GetDistanceToIcon( icon )
local data = self.MinimapIcons[icon];
if ( data ) then
return data.dist, data.xDist, data.yDist;
end
end
 
function Astrolabe:IsIconOnEdge( icon )
return self.IconsOnEdge[icon];
end
 
function Astrolabe:GetDirectionToIcon( icon )
local data = self.MinimapIcons[icon];
if ( data ) then
local dir = atan2(data.xDist, -(data.yDist))
if ( dir > 0 ) then
return twoPi - dir;
else
return -dir;
end
end
end
 
function Astrolabe:Register_OnEdgeChanged_Callback( func, ident )
-- check argument types
argcheck(func, 2, "function");
 
self.IconsOnEdge_GroupChangeCallbacks[func] = ident;
end
 
--*****************************************************************************
-- INTERNAL USE ONLY PLEASE!!!
-- Calling this function at the wrong time can cause errors
--*****************************************************************************
function Astrolabe:DumpNewIconsCache()
local MinimapIcons = self.MinimapIcons
for icon, data in pairs(AddedOrUpdatedIcons) do
MinimapIcons[icon] = data
AddedOrUpdatedIcons[icon] = nil
end
-- we now need to restart any updates that were in progress
resetIncrementalUpdate = true
resetFullUpdate = true
end
 
 
--------------------------------------------------------------------------------------------------------------
-- World Map Icon Placement
--------------------------------------------------------------------------------------------------------------
 
function Astrolabe:PlaceIconOnWorldMap( worldMapFrame, icon, mapID, mapFloor, xPos, yPos )
-- check argument types
argcheck(worldMapFrame, 2, "table");
assert(3, worldMapFrame.GetWidth and worldMapFrame.GetHeight, "Usage Message");
argcheck(icon, 3, "table");
assert(3, icon.SetPoint and icon.ClearAllPoints, "Usage Message");
argcheck(mapID, 4, "number");
argcheck(mapFloor, 5, "number", "nil");
argcheck(xPos, 6, "number");
argcheck(yPos, 7, "number");
 
local M, F = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel();
local nX, nY = self:TranslateWorldMapPosition(mapID, mapFloor, xPos, yPos, M, F);
 
-- anchor and :Show() the icon if it is within the boundry of the current map, :Hide() it otherwise
if ( nX and nY and (0 < nX and nX <= 1) and (0 < nY and nY <= 1) ) then
icon:ClearAllPoints();
icon:SetPoint("CENTER", worldMapFrame, "TOPLEFT", nX * worldMapFrame:GetWidth(), -nY * worldMapFrame:GetHeight());
icon:Show();
else
icon:Hide();
end
return nX, nY;
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Handler Scripts
--------------------------------------------------------------------------------------------------------------
 
function Astrolabe:OnEvent( frame, event )
if ( event == "MINIMAP_UPDATE_ZOOM" ) then
-- update minimap zoom scale
local Minimap = Minimap;
local curZoom = Minimap:GetZoom();
if ( GetCVar("minimapZoom") == GetCVar("minimapInsideZoom") ) then
if ( curZoom < 2 ) then
Minimap:SetZoom(curZoom + 1);
else
Minimap:SetZoom(curZoom - 1);
end
end
if ( GetCVar("minimapZoom")+0 == Minimap:GetZoom() ) then
self.minimapOutside = true;
else
self.minimapOutside = false;
end
Minimap:SetZoom(curZoom);
 
-- re-calculate all Minimap Icon positions
if ( frame:IsVisible() ) then
self:CalculateMinimapIconPositions(true);
end
 
elseif ( event == "PLAYER_LEAVING_WORLD" ) then
frame:Hide(); -- yes, I know this is redunant
self:RemoveAllMinimapIcons(); --dump all minimap icons
-- TODO: when I uncouple the point buffer from Minimap drawing,
-- I should consider updating LastPlayerPosition here
 
elseif ( event == "PLAYER_ENTERING_WORLD" ) then
frame:Show();
if not ( frame:IsVisible() ) then
-- do the minimap recalculation anyways if the OnShow script didn't execute
-- this is done to ensure the accuracy of information about icons that were
-- inserted while the Player was in the process of zoning
self:CalculateMinimapIconPositions(true);
end
 
elseif ( event == "ZONE_CHANGED_NEW_AREA" ) then
frame:Hide();
frame:Show();
 
end
end
 
function Astrolabe:OnUpdate( frame, elapsed )
-- on-edge group changed call-backs
if ( self.IconsOnEdgeChanged ) then
self.IconsOnEdgeChanged = false;
for func in pairs(self.IconsOnEdge_GroupChangeCallbacks) do
pcall(func);
end
end
 
self:UpdateMinimapIconPositions();
end
 
function Astrolabe:OnShow( frame )
-- set the world map to a zoom with a valid player position
if not ( self.WorldMapVisible ) then
SetMapToCurrentZone();
end
local M, F = Astrolabe:GetCurrentPlayerPosition();
if ( M and M >= 0 ) then
SetMapByID(M);
SetDungeonMapLevel(F);
else
frame:Hide();
return
end
 
-- re-calculate minimap icon positions (if needed)
if ( next(self.MinimapIcons) ) then
self:CalculateMinimapIconPositions(true);
else
-- needed so that the cycle doesn't overwrite an updated LastPlayerPosition
resetIncrementalUpdate = true;
end
 
if ( self.MinimapIconCount <= 0 ) then
-- no icons left to manage
frame:Hide();
end
end
 
function Astrolabe:OnHide( frame )
-- dump the new icons cache here
-- a full update will performed the next time processing is re-actived
self:DumpNewIconsCache()
end
 
-- called by AstrolabMapMonitor when all world maps are hidden
function Astrolabe:AllWorldMapsHidden()
if ( IsLoggedIn() ) then
self.processingFrame:Hide();
self.processingFrame:Show();
end
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Library Registration
--------------------------------------------------------------------------------------------------------------
 
local function harvestMapData( HarvestedMapData )
local mapData = {}
local mapName = GetMapInfo();
local mapID = GetCurrentMapAreaID();
local numFloors = GetNumDungeonMapLevels();
mapData.mapName = mapName;
mapData.cont = (GetCurrentMapContinent()) or -100;
mapData.zone = (GetCurrentMapZone()) or -100;
mapData.numFloors = numFloors;
local _, TLx, TLy, BRx, BRy = GetCurrentMapZone();
if ( TLx and TLy and BRx and BRy ) then
mapData[0] = {};
if not ( TLx < BRx ) then
TLx = -TLx;
BRx = -BRx;
end
if not ( TLy < BRy) then
TLy = -TLy;
BRy = -BRy;
end
mapData[0].TLx = TLx;
mapData[0].TLy = TLy;
mapData[0].BRx = BRx;
mapData[0].BRy = BRy;
end
if ( numFloors > 0 ) then
for f = 1, numFloors do
SetDungeonMapLevel(f);
local _, TLx, TLy, BRx, BRy = GetCurrentMapDungeonLevel();
if ( TLx and TLy and BRx and BRy ) then
mapData[f] = {};
if not ( TLx < BRx ) then
TLx = -TLx;
BRx = -BRx;
end
if not ( TLy < BRy) then
TLy = -TLy;
BRy = -BRy;
end
mapData[f].TLx = TLx;
mapData[f].TLy = TLy;
mapData[f].BRx = BRx;
mapData[f].BRy = BRy;
end
end
end
HarvestedMapData[mapID] = mapData;
end
 
local function activate( newInstance, oldInstance )
if ( oldInstance ) then -- this is an upgrade activate
if ( oldInstance.DumpNewIconsCache ) then
oldInstance:DumpNewIconsCache()
end
for k, v in pairs(oldInstance) do
if ( type(v) ~= "function" and (not configConstants[k]) ) then
newInstance[k] = v;
end
end
-- sync up the current MinimapIconCount value
local iconCount = 0
for _ in pairs(newInstance.MinimapIcons) do
iconCount = iconCount + 1
end
newInstance.MinimapIconCount = iconCount
 
Astrolabe = oldInstance;
else
local frame = CreateFrame("Frame");
newInstance.processingFrame = frame;
 
newInstance.HarvestedMapData = {};
local HarvestedMapData = newInstance.HarvestedMapData;
 
newInstance.ContinentList = { GetMapContinents() };
for C in pairs(newInstance.ContinentList) do
local zones = { GetMapZones(C) };
newInstance.ContinentList[C] = zones;
SetMapZoom(C, 0);
zones[0] = GetCurrentMapAreaID();
harvestMapData(HarvestedMapData);
for Z in ipairs(zones) do
SetMapZoom(C, Z);
zones[Z] = GetCurrentMapAreaID();
harvestMapData(HarvestedMapData);
end
end
 
for id=1,10000 do
if not ( HarvestedMapData[id] ) then
if ( SetMapByID(id) ) then
harvestMapData(HarvestedMapData);
end
end
end
end
configConstants = nil -- we don't need this anymore
 
local frame = newInstance.processingFrame;
frame:Hide();
frame:SetParent("Minimap");
frame:UnregisterAllEvents();
frame:RegisterEvent("MINIMAP_UPDATE_ZOOM");
frame:RegisterEvent("PLAYER_LEAVING_WORLD");
frame:RegisterEvent("PLAYER_ENTERING_WORLD");
frame:RegisterEvent("ZONE_CHANGED_NEW_AREA");
frame:SetScript("OnEvent",
function( frame, event, ... )
Astrolabe:OnEvent(frame, event, ...);
end
);
frame:SetScript("OnUpdate",
function( frame, elapsed )
Astrolabe:OnUpdate(frame, elapsed);
end
);
frame:SetScript("OnShow",
function( frame )
Astrolabe:OnShow(frame);
end
);
frame:SetScript("OnHide",
function( frame )
Astrolabe:OnHide(frame);
end
);
 
setmetatable(Astrolabe.MinimapIcons, MinimapIconsMetatable)
end
 
DongleStub:Register(Astrolabe, activate)
 
 
--------------------------------------------------------------------------------------------------------------
-- Data
--------------------------------------------------------------------------------------------------------------
 
-- diameter of the Minimap in game yards at
-- the various possible zoom levels
MinimapSize = {
indoor = {
[0] = 300, -- scale
[1] = 240, -- 1.25
[2] = 180, -- 5/3
[3] = 120, -- 2.5
[4] = 80, -- 3.75
[5] = 50, -- 6
},
outdoor = {
[0] = 466 + 2/3, -- scale
[1] = 400, -- 7/6
[2] = 333 + 1/3, -- 1.4
[3] = 266 + 2/6, -- 1.75
[4] = 200, -- 7/3
[5] = 133 + 1/3, -- 3.5
},
}
 
ValidMinimapShapes = {
-- { upper-left, lower-left, upper-right, lower-right }
["SQUARE"] = { false, false, false, false },
["CORNER-TOPLEFT"] = { true, false, false, false },
["CORNER-TOPRIGHT"] = { false, false, true, false },
["CORNER-BOTTOMLEFT"] = { false, true, false, false },
["CORNER-BOTTOMRIGHT"] = { false, false, false, true },
["SIDE-LEFT"] = { true, true, false, false },
["SIDE-RIGHT"] = { false, false, true, true },
["SIDE-TOP"] = { true, false, true, false },
["SIDE-BOTTOM"] = { false, true, false, true },
["TRICORNER-TOPLEFT"] = { true, true, true, false },
["TRICORNER-TOPRIGHT"] = { true, false, true, true },
["TRICORNER-BOTTOMLEFT"] = { true, true, false, true },
["TRICORNER-BOTTOMRIGHT"] = { false, true, true, true },
}
 
-- distances across and offsets of the world maps
-- in game yards
WorldMapSize = {
[0] = {
height = 31809.52239,
system = 0,
systemParent = 0,
width = 47714.28663,
xOffset = 0,
yOffset = 0,
[13] = {
xOffset = -8476.18926,
yOffset = -18428.5703,
},
[14] = {
xOffset = -36714.28738,
yOffset = -14761.90436,
},
[485] = {
xOffset = -25238.09554,
yOffset = -11047.61835,
},
},
[13] = {
height = 24533.19945,
systemParent = 0,
width = 36799.81197,
xOffset = -17066.60126,
yOffset = -12799.89961,
},
[14] = {
height = 27149.68748,
systemParent = 0,
width = 40741.17907,
xOffset = -18171.96844,
yOffset = -11176.34367,
},
[321] = {
{ -- [1]
height = 1159.5835,
width = 1739.375,
xOffset = 3506.354,
yOffset = -2486.66675,
},
{ -- [2]
height = 241.39025,
width = 362.08962,
xOffset = 4163.96713,
yOffset = -1932.27183,
},
xOffset = 8690.02719,
yOffset = -3623.15183,
},
[401] = {
height = 2825.00046,
width = 4237.49828,
xOffset = 0,
yOffset = 0,
},
[443] = {
height = 764.58325,
width = 1145.83472,
xOffset = 0,
yOffset = 0,
},
[461] = {
height = 1170.83309,
width = 1756.25023,
xOffset = 0,
yOffset = 0,
},
[462] = {
height = 3283.33296,
width = 4924.99935,
xOffset = 2087.50023,
yOffset = -8641.66578,
},
[463] = {
height = 2200.0001,
width = 3300.00085,
xOffset = 2883.33272,
yOffset = -5866.66614,
},
[464] = {
height = 2714.58133,
width = 4070.83028,
xOffset = -7099.9985,
yOffset = -7339.58233,
},
[466] = {
height = 11642.71843,
systemParent = 466,
width = 17464.0779,
xOffset = -12996.03902,
yOffset = -5821.35914,
},
[471] = {
height = 704.68794,
width = 1056.7699,
xOffset = -6533.63241,
yOffset = -6523.64995,
},
[476] = {
height = 2174.99908,
width = 3262.50031,
xOffset = -7525.00003,
yOffset = -9374.99943,
},
[480] = {
height = 806.7719,
width = 1211.45871,
xOffset = 4000.74932,
yOffset = -7753.70939,
},
[482] = {
height = 1514.58311,
width = 2270.83529,
xOffset = 0,
yOffset = 0,
},
[485] = {
height = 11834.26515,
systemParent = 0,
width = 17751.39839,
xOffset = -9217.15231,
yOffset = -10593.37487,
},
[499] = {
height = 2218.75027,
width = 3327.08362,
xOffset = 2902.08234,
yOffset = -11168.74965,
},
[502] = {
height = 2108.33411,
width = 3162.49385,
xOffset = 0,
yOffset = 0,
},
[504] = {
{ -- [1]
height = 553.33995,
width = 830.01643,
xOffset = -1052.51109,
yOffset = -6066.67115,
},
{ -- [2]
height = 375.48927,
width = 563.22279,
xOffset = -915.86865,
yOffset = -5975.33259,
},
xOffset = -1270.796,
yOffset = -11581.57677,
},
[512] = {
height = 1162.50002,
width = 1743.74946,
xOffset = 0,
yOffset = 0,
},
[521] = {
{ -- [1]
height = 1216.66649,
width = 1824.99985,
xOffset = 435.33678,
yOffset = 2235.80349,
},
},
[529] = {
{ -- [1]
height = 2191.66598,
width = 3287.50074,
xOffset = -1804.35279,
yOffset = 2062.9701,
},
},
[531] = {
height = 774.99991,
width = 1162.49961,
xOffset = 0,
yOffset = 0,
},
[540] = {
height = 1766.66716,
width = 2650.00164,
xOffset = 0,
yOffset = 0,
},
[544] = {
system = 544,
},
[545] = {
height = 2097.91669,
width = 3145.83325,
xOffset = 0,
yOffset = 0,
},
[602] = {
height = 1022.91668,
width = 1533.33347,
xOffset = 0,
yOffset = 0,
},
[605] = {
system = 605,
},
[609] = {
height = 502.08329,
width = 752.08331,
xOffset = 0,
yOffset = 0,
},
[611] = {
height = 593.74988,
width = 889.58325,
xOffset = 0,
yOffset = 0,
},
[626] = {
height = 810.41329,
width = 1214.58151,
xOffset = 0,
yOffset = 0,
},
[640] = {
system = 640,
},
[677] = {
height = 593.74988,
width = 889.58325,
xOffset = 0,
yOffset = 0,
},
[678] = {
height = 2097.91669,
width = 3145.83325,
xOffset = 0,
yOffset = 0,
},
[679] = {
height = 2097.91669,
width = 3145.83325,
xOffset = 0,
yOffset = 0,
},
[681] = {
height = 3010.41666,
width = 4514.58301,
xOffset = 0,
yOffset = 0,
},
[682] = {
height = 3010.41666,
width = 4514.58301,
xOffset = 0,
yOffset = 0,
},
[686] = {
height = 922.9166,
width = 1383.33334,
xOffset = 0,
yOffset = 0,
},
[708] = {
height = 1343.75002,
width = 2014.58153,
xOffset = -4810.41584,
yOffset = 2160.41647,
},
[709] = {
height = 1224.99954,
width = 1837.49974,
xOffset = -5212.4997,
yOffset = 1222.91666,
},
[717] = {
height = 1674.99988,
width = 2512.4912,
xOffset = 0,
yOffset = 0,
},
[736] = {
height = 868.74697,
width = 1302.08448,
xOffset = 0,
yOffset = 0,
},
[737] = {
system = 737,
},
[747] = {
height = 647.91734,
width = 970.83627,
xOffset = 0,
yOffset = 0,
},
}
 
local function zeroDataFunc(tbl, key)
if ( type(key) == "number" ) then
return zeroData;
else
return 0;
end
end
 
zeroData = { xOffset = 0, height = 0, yOffset = 0, width = 0, __index = zeroDataFunc };
setmetatable(zeroData, zeroData);
 
local function printError( ... )
if ( ASTROLABE_VERBOSE) then
print(...)
end
end
 
for mapID, harvestedData in pairs(Astrolabe.HarvestedMapData) do
local mapData = WorldMapSize[mapID];
if ( mapData ) then
if ( harvestedData.numFloors > 0 ) then
for f, harvData in pairs(harvestedData) do
if ( type(f) == "number" and f > 0 ) then
if not ( mapData[f] ) then
mapData[f] = {};
end
local floorData = mapData[f]
if not ( floorData.width ) then
floorData.width = harvData.BRx - harvData.TLx
end
if not ( floorData.height ) then
floorData.height = harvData.BRy - harvData.TLy
end
if not ( floorData.xOffset ) then
floorData.xOffset = harvData.TLx
end
if not ( floorData.yOffset ) then
floorData.yOffset = harvData.TLy
end
end
end
for f = 1, harvestedData.numFloors do
if not ( mapData[f] ) then
printError(("Astrolabe is missing data for %s [%d], floor %d."):format(harvestedData.mapName, mapID, f));
end
end
-- TODO: handle floored world maps
 
else
local harvData = harvestedData[0]
if not ( mapData.width ) then
mapData.width = harvData.BRx - harvData.TLx
end
if not ( mapData.height ) then
mapData.height = harvData.BRy - harvData.TLy
end
if not ( mapData.xOffset ) then
mapData.xOffset = harvData.TLx
end
if not ( mapData.yOffset ) then
mapData.yOffset = harvData.TLy
end
 
end
 
else
mapData = {};
 
if ( harvestedData.numFloors > 0 ) then
for f, harvData in pairs(harvestedData) do
if ( type(f) == "number" and f > 0 ) then
mapData[f] = {};
local floorData = mapData[f]
floorData.width = harvData.BRx - harvData.TLx
floorData.height = harvData.BRy - harvData.TLy
floorData.xOffset = harvData.TLx
floorData.yOffset = harvData.TLy
end
end
for f = 1, harvestedData.numFloors do
if not ( mapData[f] ) then
printError(("Astrolabe is missing data for %s [%d], floor %d."):format(harvestedData.mapName, mapID, f));
end
end
 
else
local harvData = harvestedData[0]
if ( harvData ) then
mapData.width = harvData.BRx - harvData.TLx
mapData.height = harvData.BRy - harvData.TLy
mapData.xOffset = harvData.TLx
mapData.yOffset = harvData.TLy
 
else
printError(("Astrolabe is missing data for %s [%d]."):format(harvestedData.mapName, mapID));
 
end
 
end
 
-- if we don't have any data, we're gonna use zeroData, but we also need to
-- setup the system and systemParent IDs so things don't get confused
if not ( next(mapData, nil) ) then
mapData = { xOffset = 0, height = 0, yOffset = 0, width = 0 };
-- if this is an outside continent level or world map then throw up an extra warning
if ( harvestedData.cont > 0 and harvestedData.zone == 0 ) then
printError(("Astrolabe is missing data for world map %s [%d] (%d, %d)."):format(harvestedData.mapName, mapID, harvestedData.cont, harvestedData.zone));
end
end
 
-- store the data in the WorldMapSize DB
WorldMapSize[mapID] = mapData;
 
end
 
-- setup system and systemParent IDs
if ( mapData and mapData ~= zeroData ) then
if not ( mapData.system ) then
mapData.system = mapID;
 
if ( harvestedData.cont > 0 and harvestedData.zone > 0 ) then
mapData.system = Astrolabe:GetMapID(harvestedData.cont, nil);
end
end
if not ( mapData.systemParent ) then
mapData.systemParent = mapID;
 
local systemData = WorldMapSize[mapData.system];
if ( systemData and systemData.systemParent ) then
mapData.systemParent = systemData.systemParent;
end
end
 
-- systemParent sanity checks
if ( mapData.system ~= mapData.systemParent ) then
if not ( WorldMapSize[mapData.systemParent] and WorldMapSize[mapData.systemParent][mapData.system] ) then
printError("Astrolabe detected a child system that the parent doesn't know about. VERY BAD!!!");
end
end
 
setmetatable(mapData, zeroData);
end
end
 
setmetatable(WorldMapSize[0], zeroData); -- special case for World Map
 
-- make sure we don't have any EXTRA data hanging around
for mapID, mapData in pairs(WorldMapSize) do
if ( getmetatable(mapData) ~= zeroData ) then
printError("Astrolabe has hard coded data for an invalid map ID", mapID);
end
end
 
setmetatable(WorldMapSize, zeroData); -- setup the metatable so that invalid map IDs don't cause Lua errors
 
-- register this library with AstrolabeMapMonitor, this will cause a full update if PLAYER_LOGIN has already fired
local AstrolabeMapMonitor = DongleStub("AstrolabeMapMonitor");
AstrolabeMapMonitor:RegisterAstrolabeLibrary(Astrolabe, LIBRARY_VERSION_MAJOR);
trunk/RecipeRadar/Astrolabe/lgpl.txt New file
0,0 → 1,504
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
 
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
 
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
 
Preamble
 
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
 
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
 
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
 
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
 
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
 
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
 
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
 
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
 
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
 
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
 
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
 
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
 
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
 
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
 
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
 
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
 
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
 
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
 
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
 
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
 
a) The modified work must itself be a software library.
 
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
 
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
 
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
 
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
 
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
 
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
 
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
 
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
 
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
 
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
 
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
 
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
 
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
 
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
 
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
 
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
 
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
 
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
 
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
 
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
 
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
 
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
 
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
 
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
 
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
 
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
 
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
 
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
 
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
 
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
 
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
 
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
 
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
 
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
 
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
 
NO WARRANTY
 
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
 
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
 
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
 
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
 
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
 
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
 
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
 
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
Also add information on how to contact you by electronic and paper mail.
 
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
 
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
 
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
 
That's all there is to it!
 
 
trunk/RecipeRadar/Astrolabe/Load.xml New file
0,0 → 1,6
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="DongleStub.lua"/>
<Script file="AstrolabeMapMonitor.lua"/>
<Script file="Astrolabe.lua"/>
</Ui>
trunk/RecipeRadar/Astrolabe/AstrolabeMapMonitor.lua New file
0,0 → 1,235
--[[
Name: AstrolabeMapMonitor
Revision: $Rev: 44 $
$Date: 2007-03-30 11:56:21 -0700 (Fri, 30 Mar 2007) $
Author(s): Esamynn (esamynn@wowinterface.com)
Inspired By: Gatherer by Norganna
MapLibrary by Kristofer Karlsson (krka@kth.se)
Website: http://esamynn.wowinterface.com/
Documentation: http://www.esamynn.org/wiki/Astrolabe/World_Map_Monitor
SVN: http://esamynn.org/svn/astrolabe/
Description:
This is a small stub library to support the main Astrolabe
library. It's purpose is to monitor the visibility of
various World Map frames, so that Astrolabe can modify its
behaviour accordingly.
 
Copyright (C) 2007 James Carrothers
 
License:
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
 
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
 
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
Note:
This library's source code is specifically designed to work with
World of Warcraft's interpreted AddOn system. You have an implicit
licence to use this library with these facilities since that is its
designated purpose as per:
http://www.fsf.org/licensing/licenses/gpl-faq.html#InterpreterIncompat
]]
 
-- WARNING!!!
-- DO NOT MAKE CHANGES TO THIS LIBRARY WITHOUT FIRST CHANGING THE LIBRARY_VERSION_MAJOR
-- STRING (to something unique) OR ELSE YOU MAY BREAK OTHER ADDONS THAT USE THIS LIBRARY!!!
local LIBRARY_VERSION_MAJOR = "AstrolabeMapMonitor"
local LIBRARY_VERSION_MINOR = tonumber(string.match("$Revision: 44 $", "(%d+)") or 1)
 
if not DongleStub then error(LIBRARY_VERSION_MAJOR .. " requires DongleStub.") end
if not DongleStub:IsNewerVersion(LIBRARY_VERSION_MAJOR, LIBRARY_VERSION_MINOR) then return end
 
local AstrolabeMapMonitor = {};
 
function AstrolabeMapMonitor:GetVersion()
return LIBRARY_VERSION_MAJOR, LIBRARY_VERSION_MINOR;
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Global World Map Frame Registration Table
--------------------------------------------------------------------------------------------------------------
 
if ( type(WorldMapDisplayFrames) ~= "table" ) then
WorldMapDisplayFrames = { WorldMapFrame };
else
local worldMapFound = false;
for k, v in pairs(WorldMapDisplayFrames) do
if ( v == WorldMapFrame ) then
worldMapFound = true;
break;
end
end
if not ( worldMapFound ) then
table.insert(WorldMapDisplayFrames, WorldMapFrame);
end
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Working Tables and Config Constants
--------------------------------------------------------------------------------------------------------------
 
AstrolabeMapMonitor.TrackedWorldMaps = {};
AstrolabeMapMonitor.AstrolabeLibrarys = {};
 
AstrolabeMapMonitor.NumVisibleWorldMaps = 0;
 
 
--------------------------------------------------------------------------------------------------------------
-- Monitor Frame Script Handlers
--------------------------------------------------------------------------------------------------------------
 
local function onShow( frame )
AstrolabeMapMonitor.NumVisibleWorldMaps = AstrolabeMapMonitor.NumVisibleWorldMaps + 1;
AstrolabeMapMonitor:Update()
end
 
local function onHide( frame )
AstrolabeMapMonitor.NumVisibleWorldMaps = AstrolabeMapMonitor.NumVisibleWorldMaps - 1;
AstrolabeMapMonitor:Update()
end
 
local function setScripts( monitorFrame )
monitorFrame:SetScript("OnShow", onShow);
monitorFrame:SetScript("OnHide", onHide);
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Internal Utility Functions
--------------------------------------------------------------------------------------------------------------
 
local function assert(level,condition,message)
if not condition then
error(message,level)
end
end
 
local function argcheck(value, num, ...)
assert(1, type(num) == "number",
"Bad argument #2 to 'argcheck' (number expected, got " .. type(level) .. ")")
 
for i=1,select("#", ...) do
if type(value) == select(i, ...) then return end
end
 
local types = strjoin(", ", ...)
local name = string.match(debugstack(2,2,0), ": in function [`<](.-)['>]")
error(string.format("Bad argument #%d to 'AstrolabeMapMonitor.%s' (%s expected, got %s)", num, name, types, type(value)), 3)
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Public API
--------------------------------------------------------------------------------------------------------------
 
function AstrolabeMapMonitor:MonitorWorldMap( worldMapFrame )
-- check argument types
argcheck(worldMapFrame, 2, "table");
assert((worldMapFrame.SetParent), "Usage Message");
 
local TrackedWorldMaps = self.TrackedWorldMaps;
if ( TrackedWorldMaps[worldMapFrame] ) then
return 1;
end
local monitorFrame = CreateFrame("Frame", nil, worldMapFrame);
TrackedWorldMaps[worldMapFrame] = monitorFrame;
setScripts(monitorFrame);
self:ForceUpdate();
return 0;
end
 
function AstrolabeMapMonitor:LookForMapsToRegister()
for k, frame in pairs(WorldMapDisplayFrames) do
if ( type(frame) == "table" and frame.SetParent ) then
self:MonitorWorldMap(frame);
end
end
end
 
function AstrolabeMapMonitor:Update()
local visibleMap = false;
if ( (self.NumVisibleWorldMaps) > 0 ) then
visibleMap = true;
end
for lib, versionString in pairs(self.AstrolabeLibrarys) do
lib.WorldMapVisible = visibleMap;
if ( (not visibleMap) and lib.AllWorldMapsHidden ) then
lib:AllWorldMapsHidden();
end
end
return visibleMap;
end
 
function AstrolabeMapMonitor:ForceUpdate()
self.NumVisibleWorldMaps = 0;
for worldMap, monitorFrame in pairs(self.TrackedWorldMaps) do
if ( worldMap:IsVisible() ) then
self.NumVisibleWorldMaps = self.NumVisibleWorldMaps + 1;
end
end
return self:Update();
end
 
function AstrolabeMapMonitor:RegisterAstrolabeLibrary( lib, majorVersionString )
-- check argument types
argcheck(lib, 2, "table");
argcheck(majorVersionString, 3, "string");
 
self.AstrolabeLibrarys[lib] = majorVersionString;
self:Update();
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Handler Scripts
--------------------------------------------------------------------------------------------------------------
 
function AstrolabeMapMonitor:OnEvent( frame, event )
if ( event == "ADDON_LOADED" ) then
self:LookForMapsToRegister();
self:ForceUpdate();
end
end
 
 
--------------------------------------------------------------------------------------------------------------
-- Library Registration
--------------------------------------------------------------------------------------------------------------
 
local function activate( newInstance, oldInstance )
if ( oldInstance ) then -- this is an upgrade activate
for k, v in pairs(oldInstance) do
if ( type(v) ~= "function" ) then
newInstance[k] = v;
end
end
AstrolabeMapMonitor = oldInstance;
else
AstrolabeMapMonitor.eventFrame = CreateFrame("Frame");
end
for worldMap, monitorFrame in pairs(AstrolabeMapMonitor.TrackedWorldMaps) do
setScripts(monitorFrame);
end
local frame = AstrolabeMapMonitor.eventFrame;
frame:Hide();
frame:UnregisterAllEvents();
frame:RegisterEvent("ADDON_LOADED");
frame:SetScript("OnEvent",
function( frame, event, ... )
AstrolabeMapMonitor:OnEvent(frame, event, ...);
end
);
end
 
DongleStub:Register(AstrolabeMapMonitor, activate)
trunk/RecipeRadar/Astrolabe/DongleStub.lua New file
0,0 → 1,126
--[[-------------------------------------------------------------------------
James Whitehead II grants anyone the right to use this work for any purpose,
without any conditions, unless such conditions are required by law.
---------------------------------------------------------------------------]]
 
local major = "DongleStub"
local minor = tonumber(string.match("$Revision: 313 $", "(%d+)") or 1)
 
local g = getfenv(0)
 
if not g.DongleStub or g.DongleStub:IsNewerVersion(major, minor) then
local lib = setmetatable({}, {
__call = function(t,k)
if type(t.versions) == "table" and t.versions[k] then
return t.versions[k].instance
else
error("Cannot find a library with name '"..tostring(k).."'", 2)
end
end
})
 
function lib:IsNewerVersion(major, minor)
local versionData = self.versions and self.versions[major]
 
-- If DongleStub versions have differing major version names
-- such as DongleStub-Beta0 and DongleStub-1.0-RC2 then a second
-- instance will be loaded, with older logic. This code attempts
-- to compensate for that by matching the major version against
-- "^DongleStub", and handling the version check correctly.
 
if major:match("^DongleStub") then
local oldmajor,oldminor = self:GetVersion()
if self.versions and self.versions[oldmajor] then
return minor > oldminor
else
return true
end
end
 
if not versionData then return true end
local oldmajor,oldminor = versionData.instance:GetVersion()
return minor > oldminor
end
 
local function NilCopyTable(src, dest)
for k,v in pairs(dest) do dest[k] = nil end
for k,v in pairs(src) do dest[k] = v end
end
 
function lib:Register(newInstance, activate, deactivate)
assert(type(newInstance.GetVersion) == "function",
"Attempt to register a library with DongleStub that does not have a 'GetVersion' method.")
 
local major,minor = newInstance:GetVersion()
assert(type(major) == "string",
"Attempt to register a library with DongleStub that does not have a proper major version.")
assert(type(minor) == "number",
"Attempt to register a library with DongleStub that does not have a proper minor version.")
 
-- Generate a log of all library registrations
if not self.log then self.log = {} end
table.insert(self.log, string.format("Register: %s, %s", major, minor))
 
if not self:IsNewerVersion(major, minor) then return false end
if not self.versions then self.versions = {} end
 
local versionData = self.versions[major]
if not versionData then
-- New major version
versionData = {
["instance"] = newInstance,
["deactivate"] = deactivate,
}
 
self.versions[major] = versionData
if type(activate) == "function" then
table.insert(self.log, string.format("Activate: %s, %s", major, minor))
activate(newInstance)
end
return newInstance
end
 
local oldDeactivate = versionData.deactivate
local oldInstance = versionData.instance
 
versionData.deactivate = deactivate
 
local skipCopy
if type(activate) == "function" then
table.insert(self.log, string.format("Activate: %s, %s", major, minor))
skipCopy = activate(newInstance, oldInstance)
end
 
-- Deactivate the old libary if necessary
if type(oldDeactivate) == "function" then
local major, minor = oldInstance:GetVersion()
table.insert(self.log, string.format("Deactivate: %s, %s", major, minor))
oldDeactivate(oldInstance, newInstance)
end
 
-- Re-use the old table, and discard the new one
if not skipCopy then
NilCopyTable(newInstance, oldInstance)
end
return oldInstance
end
 
function lib:GetVersion() return major,minor end
 
local function Activate(new, old)
-- This code ensures that we'll move the versions table even
-- if the major version names are different, in the case of
-- DongleStub
if not old then old = g.DongleStub end
 
if old then
new.versions = old.versions
new.log = old.log
end
g.DongleStub = new
end
 
-- Actually trigger libary activation here
local stub = g.DongleStub or lib
lib = stub:Register(lib, Activate)
end
trunk/RecipeRadar/MainFrame.lua New file
0,0 → 1,389
 
-- MainFrame.lua: main Recipe Radar window code
-- $Id: MainFrame.lua 1060 2008-11-16 04:27:27Z jnmiller $
 
function RecipeRadar_MainFrame_Init()
 
RecipeRadarFrame:RegisterForDrag("LeftButton")
 
RecipeRadarListScrollFrameScrollBar:SetMinMaxValues(0, 0)
RecipeRadarListScrollFrameScrollBar:SetValue(0)
RecipeRadarListScrollFrameScrollBar.scrollBarHideable = 1
 
RecipeRadarOptionsButton:SetText(RRS("Options"))
RecipeRadarMapVendorIndicatorText:SetText(RRS("Locate Vendor on Map"))
RecipeRadar_UpdateLock()
 
RecipeRadar_RadarTab_Init()
 
RECIPERADAR_TOOLTIP_LINK = ""
 
end
 
function RecipeRadar_Toggle()
 
if (RecipeRadarFrame:IsVisible()) then
HideUIPanel(RecipeRadarFrame)
else
RecipeRadar_InitVendorFilters()
RecipeRadar_InitRecipeFilters()
RecipeRadar_Frame_Show()
end
 
end
 
function RecipeRadar_Frame_Show()
 
ShowUIPanel(RecipeRadarFrame)
RecipeRadar_SkillDB_ParseSpellbookFrame()
-- RecipeRadar_SkillDB_ParseSkillFrame() -- deprecated
RecipeRadar_SkillDB_ParseReputationFrame()
RecipeRadar_FrameUpdate()
 
end
 
function RecipeRadar_FrameUpdate()
 
if (RecipeRadar_Options.ActiveTab == 1) then
RecipeRadar_RadarTab_Update()
else
RecipeRadar_RecipesTab_Update()
end
 
end
 
------------------------------------------------------------------------
-- Tab code
------------------------------------------------------------------------
 
-- Draws the borders around each tab according to which is active.
function RecipeRadar_SetActiveTab(id)
 
local active_tab_height, background_tab_height = 33, 29
 
if (id == 1) then
RecipeRadarRadarTabFrameMiddle:SetHeight(active_tab_height)
RecipeRadarRadarTabFrameRight:SetHeight(active_tab_height)
RecipeRadarRecipesTabFrameLeft:SetHeight(background_tab_height)
RecipeRadarRecipesTabFrameMiddle:SetHeight(background_tab_height)
RecipeRadarRecipesTabFrameRight:SetHeight(background_tab_height)
RecipeRadar_Options.ActiveTab = 1
else
RecipeRadarRadarTabFrameMiddle:SetHeight(background_tab_height)
RecipeRadarRadarTabFrameRight:SetHeight(background_tab_height)
RecipeRadarRecipesTabFrameLeft:SetHeight(active_tab_height)
RecipeRadarRecipesTabFrameMiddle:SetHeight(active_tab_height)
RecipeRadarRecipesTabFrameRight:SetHeight(active_tab_height)
RecipeRadar_Options.ActiveTab = 2
end
 
end
 
-- Sets the button color to the specified team colors.
function RecipeRadar_SetButtonFont(button, team)
 
if (team == "Alliance") then
button:SetNormalFontObject(RecipeRadarAlliance)
button:SetHighlightFontObject(RecipeRadarAllianceHighlight)
elseif (team == "Horde") then
button:SetNormalFontObject(RecipeRadarHorde)
button:SetHighlightFontObject(RecipeRadarHordeHighlight)
elseif (team == "Neutral") then
button:SetNormalFontObject(RecipeRadarNeutral)
button:SetHighlightFontObject(RecipeRadarNeutralHighlight)
end
 
end
 
-- Common drawing code for list items in the scroll frame.
function RecipeRadar_DrawListItem(index, recipe)
 
local button = _G["RecipeRadarVendor" .. index]
 
-- get and set the text color according to recipe availability
local name = RecipeRadar_GetSafeItemInfo(recipe.ID)
local indicator = RecipeRadar_Availability_GetIndicator(recipe)
 
if (name == RRS("Uncached Recipe")) then
button:SetNormalFontObject(RecipeRadarDarkGray)
button:SetHighlightFontObject(RecipeRadarDarkGrayHighlight)
else
button:SetNormalFontObject(RecipeRadarGray)
button:SetHighlightFontObject(RecipeRadarGrayHighlight)
end
 
-- basic drawing code
if (RecipeRadar_Options.RealmAvailability) then
button:SetText(name .. indicator)
else
button:SetText(name)
end
button:SetID(index)
button:Show()
 
-- drawing code for the little subtext field
local subtext = _G["RecipeRadarVendor" .. index .. "SubText"]
if (not RecipeRadar_Options.RealmAvailability) then
local avail = RecipeRadar_Availability_GetKey(recipe)
if (avail) then
button.r = RecipeRadar_Availabilities[avail].Color.r
button.g = RecipeRadar_Availabilities[avail].Color.g
button.b = RecipeRadar_Availabilities[avail].Color.b
else
button.r = RecipeRadar_Colors.UncachedRecipe.r
button.g = RecipeRadar_Colors.UncachedRecipe.g
button.b = RecipeRadar_Colors.UncachedRecipe.b
end
subtext:SetText(indicator)
subtext:SetTextColor(button.r, button.g, button.b)
subtext:SetPoint("LEFT", "RecipeRadarVendor" .. index .. "Text",
"RIGHT", 10, 0)
subtext:Show()
else
subtext:Hide()
end
 
-- provide information for the availability tooltip
button.Recipe = recipe
 
end
 
------------------------------------------------------------------------
-- Base vendor/recipe selection code
------------------------------------------------------------------------
 
-- OnClick handler for the vendor/recipe buttons in the scroll frame.
function RecipeRadar_VendorButton_OnClick(self, button)
 
local offset = FauxScrollFrame_GetOffset(RecipeRadarListScrollFrame)
local index = self:GetID() + offset
 
RecipeRadar_ServiceClickIndex(self, index, button)
 
if (button == "LeftButton") then
RecipeRadar_FrameUpdate()
end
 
end
 
-- Selects the first visible recipe (not vendor).
function RecipeRadar_SelectFirstRecipe()
 
RecipeRadar_ServiceClickIndex(-1)
 
end
 
-- Abstracts front for click handlers.
function RecipeRadar_ServiceClickIndex(self, index, button)
 
if (RecipeRadar_Options.ActiveTab == 1) then
RecipeRadar_RadarTab_ServiceClickIndex(self, index, button)
else
RecipeRadar_RecipesTab_ServiceClickIndex(self, index, button)
end
 
end
 
------------------------------------------------------------------------
-- Recipe details and map frames
------------------------------------------------------------------------
 
function RecipeRadar_ShowRecipeDetails()
 
RecipeDetailName:Show()
RecipeDetailIcon:Show()
RecipeDetailCostText:Show()
 
end
 
function RecipeRadar_HideRecipeDetails()
 
RecipeDetailName:Hide()
RecipeDetailIcon:Hide()
RecipeCostIcon:Hide()
RecipeDetailCostText:Hide()
RecipeDetailSpecialText:Hide()
RecipeDetailMoneyFrame:Hide()
RecipeDetailNoteText:Hide()
RecipeDetailRequirements:Hide()
RecipeRadarRegionMap:Hide()
 
-- reset the mapped indicator to red/off
RecipeRadarMapVendorIndicator:SetVertexColor(1.0, 0, 0)
 
-- hide all of our little mapping scrolls
for i = 1, RecipeRadar_MaxVendorCoordinates do
_G["RecipeRadarScroll" .. i]:Hide()
end
 
end
 
-- When a recipe is actually selected, this function handles the
-- subsequent drawing in the lower details and map frames.
function RecipeRadar_SetSelection(vendor, recipe, region_name)
 
local name, link, colorcode, _, _, _, texture, cached =
RecipeRadar_GetSafeItemInfo(recipe.ID)
 
RecipeDetailName:SetText(name)
 
-- handle the little icon in the details frame
RecipeDetailIcon:SetNormalTexture(texture)
RecipeDetailIcon.NeedsUpdate = not cached
RecipeDetailIcon.Name = name
RecipeDetailIcon.Link = link
RecipeDetailIcon.Hyperlink =
RecipeRadar_GetHyperlinkByParts(name, link, colorcode)
 
-- set the color/content of the money text
if (recipe.Cost > 0) then -- 0 denotes a "special" cost
RecipeDetailSpecialText:Hide()
else
RecipeDetailSpecialText:SetText(RRS("Special"))
RecipeDetailSpecialText:Show()
end
local cost, cost_item = RecipeRadar_GetSpecialRecipeCost(recipe)
if (cost_item ~= nil and cost_item > 0) then
-- some recipes cost a certain number of items
local cost_name, cost_link, cost_colorcode, _, _, _, cost_texture =
RecipeRadar_GetSafeItemInfo(cost_item)
RecipeDetailSpecialText:SetText(cost)
RecipeDetailSpecialText:Show()
RecipeCostIcon:SetNormalTexture(cost_texture)
RecipeCostIcon.Link = cost_link
RecipeCostIcon.Hyperlink = RecipeRadar_GetHyperlinkByParts(
cost_name, cost_link, cost_colorcode)
RecipeDetailMoneyFrame:Hide()
RecipeDetailSpecialText:Show()
RecipeCostIcon:Show()
else
if (GetMoney() >= recipe.Cost) then
SetMoneyFrameColor("RecipeDetailMoneyFrame", 1.0, 1.0, 1.0);
else
SetMoneyFrameColor("RecipeDetailMoneyFrame", 1.0, 0.1, 0.1);
end
MoneyFrame_Update("RecipeDetailMoneyFrame", recipe.Cost);
RecipeDetailMoneyFrame:Show()
RecipeDetailSpecialText:Hide()
RecipeCostIcon:Hide()
end
 
-- some vendors have special requirements
if (RecipeRadar_GetRecipeReqsString(recipe)) then
RecipeDetailRequirements:SetText(RecipeRadar_GetRecipeReqsString(recipe))
RecipeDetailNoteText:Show()
RecipeDetailRequirements:Show()
else
RecipeDetailNoteText:Hide()
RecipeDetailRequirements:Hide()
end
 
-- sets the color on the little radio button at the top
if (vendor.IsMapped) then
RecipeRadarMapVendorIndicator:SetVertexColor(0, 1.0, 0)
else
RecipeRadarMapVendorIndicator:SetVertexColor(1.0, 0, 0)
end
 
if (vendor.Coordinates) then
 
if (not region_name) then
region_name = RecipeRadar_Options.CurrentRegion
end
 
local region = RecipeRadar_RegionData[region_name]
if (not region) then return end
 
-- draw the map first
RecipeRadarRegionMap:SetTexture(
RECIPERADAR_IMAGE_ROOT .. "Regions\\" .. region.MapFile)
RecipeRadarRegionMap:Show()
 
-- then draw the little icon (or multiple icons for moble vendors)
for i = 1, RecipeRadar_MaxVendorCoordinates do
 
local scroll_icon = _G["RecipeRadarScroll" .. i]
local coords = vendor.Coordinates[i]
 
if (not coords) then
scroll_icon:Hide()
else
local x = RecipeRadarMapFrame:GetWidth() * coords.x
local y = RecipeRadarMapFrame:GetHeight() * -coords.y
scroll_icon.Vendor = vendor
scroll_icon:SetPoint("CENTER", "RecipeRadarMapFrame",
"TOPLEFT", x, y)
scroll_icon:Show()
end
 
end
 
else -- no vendor coordinates means no map
 
RecipeRadarRegionMap:Hide()
for i = 1, RecipeRadar_MaxVendorCoordinates do
_G["RecipeRadarScroll" .. i]:Hide()
end
 
end
 
end
 
function RecipeRadar_RecipeDetailIcon_ShowToolTip(self)
 
GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
GameTooltip:SetHyperlink(RecipeDetailIcon.Link)
GameTooltip:Show()
 
if RecipeDetailIcon.NeedsUpdate then return end
 
if (RecipeBook_DoHookedFunction) then
RecipeBook_DoHookedFunction(GameTooltip, RecipeDetailIcon.Link)
end
 
if (EnhTooltip and EnhTooltip.TooltipCall) then
EnhTooltip.TooltipCall(GameTooltip, RecipeDetailIcon.Name,
RecipeDetailIcon.Hyperlink, nil, 1)
end
 
end
 
-------------------------------------------------------------------------
-- Frame Movement
-------------------------------------------------------------------------
 
function RecipeRadar_ToggleLock()
 
if (RecipeRadar_Options.Locked) then
RecipeRadar_Options.Locked = false
RecipeRadar_UpdateLock()
else
RecipeRadar_Options.Locked = true
RecipeRadar_UpdateLock()
end
 
end
 
function RecipeRadar_UpdateLock()
 
if (RecipeRadar_Options.Locked) then
RecipeRadarLockNormal:SetTexture(
RECIPERADAR_IMAGE_ROOT .. "Frame\\LockButton-Locked-Up")
RecipeRadarLockPushed:SetTexture(
RECIPERADAR_IMAGE_ROOT .. "Frame\\LockButton-Locked-Down")
else
RecipeRadarLockNormal:SetTexture(
RECIPERADAR_IMAGE_ROOT .. "Frame\\LockButton-Unlocked-Up")
RecipeRadarLockPushed:SetTexture(
RECIPERADAR_IMAGE_ROOT .. "Frame\\LockButton-Unlocked-Down")
end
 
end
 
function RecipeRadar_StartMoving()
 
if (not RecipeRadar_Options.Locked) then
RecipeRadarFrame:StartMoving()
end
 
end
trunk/RecipeRadar/RecipeRadar.xml New file
0,0 → 1,797
<?xml version="1.0" encoding="utf-8" ?>
 
<UI xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
 
<Script file="RegionData.lua"/>
<Script file="RecipeData.lua"/>
<Script file="RecipeRadar.lua"/>
<Script file="RadarTab.lua"/>
<Script file="RecipesTab.lua"/>
<Script file="MainFrame.lua"/>
<Script file="DropDowns.lua"/>
 
<Frame name="RecipeRadarFrame" toplevel="true" movable="true" parent="UIParent" enableMouse="true" hidden="true">
<Size>
<AbsDimension x="452" y="648"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="0" y="-104"/>
</Offset>
</Anchor>
</Anchors>
<HitRectInsets>
<AbsInset left="0" right="34" top="0" bottom="75"/>
</HitRectInsets>
 
<Layers>
<Layer level="BACKGROUND">
<Texture file = "Interface\FriendsFrame\FriendsFrameScrollIcon">
<Size>
<AbsDimension x="60" y="60"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="7" y="-6"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
<Layer level="BORDER">
<Texture file="Interface\Addons\RecipeRadar\Images\Frame\FrameTopLeft">
<Size>
<AbsDimension x="256" y="256"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
</Texture>
<Texture file="Interface\Addons\RecipeRadar\Images\Frame\FrameTopRight">
<Size>
<AbsDimension x="256" y="256"/>
</Size>
<Anchors>
<Anchor point="TOPRIGHT"/>
</Anchors>
</Texture>
<Texture name="RecipeRadarFrameBottomLeft" file="Interface\Addons\RecipeRadar\Images\Frame\FrameBottomLeft">
<Size>
<AbsDimension x="256" y="512"/>
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"/>
</Anchors>
</Texture>
<Texture name="RecipeRadarFrameBottomRight" file="Interface\Addons\RecipeRadar\Images\Frame\FrameBottomRight">
<Size>
<AbsDimension x="256" y="512"/>
</Size>
<Anchors>
<Anchor point="BOTTOMRIGHT"/>
</Anchors>
</Texture>
 
<FontString name="TitleBarText" inherits="GameFontNormal">
<Anchors>
<Anchor point="TOP" relativeTo="RecipeRadarFrame" relativePoint="TOP">
<Offset>
<AbsDimension x="-7" y="-17"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString inherits="GameFontNormalSmall" text="RECIPERADAR_VERSION">
<Color r="0.4" g="0.4" b="0.4"/>
<Anchors>
<Anchor point="TOPRIGHT">
<Offset>
<AbsDimension x="-83" y="-19"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
 
</Layer>
<Layer level="ARTWORK">
 
<!-- Upper horizontal bar -->
<Texture file="Interface\Addons\RecipeRadar\Images\Frame\HorizontalBarLeft">
<Size>
<AbsDimension x="256" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="15" y="-221"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
<Texture file="Interface\Addons\RecipeRadar\Images\Frame\HorizontalBarRight">
<Size>
<AbsDimension x="256" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPRIGHT">
<Offset>
<AbsDimension x="-39" y="-221"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
 
<!-- The lower horizontal bar is down with the RecipeRadarMapFrame -->
 
</Layer>
</Layers>
 
<Frames>
 
<!-- This is the little X button in the top-right corner. -->
<Button name="RecipeRadarExitButton" inherits="UIPanelCloseButton">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="RecipeRadarFrame" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-30" y="-8"/>
</Offset>
</Anchor>
</Anchors>
</Button>
 
<!-- This is the little lock button in the top-right corner. -->
<Button name="RecipeRadarLockButton">
<Size>
<AbsDimension x="32" y="32"/>
</Size>
<Anchors>
<Anchor point="RIGHT" relativeTo="RecipeRadarExitButton" relativePoint="LEFT">
<Offset>
<AbsDimension x="11" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
RecipeRadar_ToggleLock(self)
</OnClick>
</Scripts>
<NormalTexture name="RecipeRadarLockNormal"/>
<PushedTexture name="RecipeRadarLockPushed"/>
<HighlightTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Highlight" AlphaMode="ADD"/>
</Button>
 
<!-- These are the two tabs at the top of the scroll frame. -->
<Button name="RecipeRadarRadarTabFrame" inherits="RecipeRadarTabButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="15" y="-69"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.ScrollValue = 0
self:SetNormalTexture(RECIPERADAR_IMAGE_ROOT .. "Misc\\Radar")
_G[self:GetName() .. "Highlight"]:SetTexture(RECIPERADAR_IMAGE_ROOT .. "Icons\\Highlight")
_G[self:GetName() .. "Middle"]:SetPoint("TOPLEFT", self:GetName() .. "Left", "TOPRIGHT", 0, 6)
</OnLoad>
<OnClick>
RecipeRadar_RadarTab_OnClick(self)
</OnClick>
</Scripts>
</Button>
<Button name="RecipeRadarRecipesTabFrame" inherits="RecipeRadarTabButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarRadarTabFrame" relativePoint="TOPRIGHT"/>
</Anchors>
<Scripts>
<OnLoad>
self.ScrollValue = 0
_G[self:GetName() .. "Highlight"]:SetTexture(RECIPERADAR_IMAGE_ROOT .. "Icons\\Highlight")
_G[self:GetName() .. "Left"]:SetTexture(RECIPERADAR_IMAGE_ROOT .. "Frame\\Tab-Right")
_G[self:GetName() .. "Left"]:SetPoint("TOPLEFT", "RecipeRadarRadarTabFrameRight", "TOPRIGHT")
</OnLoad>
<OnClick>
RecipeRadar_RecipesTab_OnClick(self)
</OnClick>
</Scripts>
</Button>
 
<!-- Dropdown combo boxes with multicheck (order is important here). -->
<Frame name="RecipeRadar_PersonAvailDropDown" inherits="UIDropDownMenuTemplate" hidden="true">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="RecipeRadarFrame" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-27" y="-37"/>
</Offset>
</Anchor>
</Anchors>
</Frame>
<Frame name="RecipeRadar_Prof1DropDown" inherits="UIDropDownMenuTemplate">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="RecipeRadar_PersonAvailDropDown" relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="0" y="4"/>
</Offset>
</Anchor>
</Anchors>
</Frame>
<Frame name="RecipeRadar_TeamDropDown" inherits="UIDropDownMenuTemplate">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="RecipeRadar_Prof1DropDown" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="30" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Frame>
<Frame name="RecipeRadar_RealmAvailDropDown" inherits="UIDropDownMenuTemplate" hidden="true">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="RecipeRadar_PersonAvailDropDown" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Frame>
<Frame name="RecipeRadar_Prof2DropDown" inherits="UIDropDownMenuTemplate">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="RecipeRadar_PersonAvailDropDown" relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="0" y="4"/>
</Offset>
</Anchor>
</Anchors>
</Frame>
 
<!-- Contains the collapsable list of vendors and recipes -->
<ScrollFrame name="RecipeRadarListScrollFrame" inherits="RecipeRadarListScrollFrameTemplate">
<Size>
<AbsDimension x="365" y="130"/>
</Size>
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="RecipeRadarFrame" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-67" y="-96"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="VendorNameDummyText" inherits="GameFontNormal" hidden="true">
<Size>
<AbsDimension x="0" y="16"/>
</Size>
</FontString>
<FontString name="VendorNameDummySubText" inherits="GameFontNormalSmall" hidden="true">
<Size>
<AbsDimension x="0" y="16"/>
</Size>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnVerticalScroll>
RecipeRadarAvailabilityTooltip:Hide()
FauxScrollFrame_OnVerticalScroll(self, offset, RECIPERADAR_VENDOR_HEIGHT, RecipeRadar_FrameUpdate)
if (RecipeRadar_Options.ActiveTab == 1) then
RecipeRadarRadarTabFrame.ScrollValue = _G[self:GetName() .. "ScrollBar"]:GetValue()
else
RecipeRadarRecipesTabFrame.ScrollValue = _G[self:GetName() .. "ScrollBar"]:GetValue()
end
</OnVerticalScroll>
</Scripts>
</ScrollFrame>
 
<!-- Radio button indicating a mapped vendor -->
<Frame name="RecipeRadarMapVendorIndicatorFrame" enableMouse="true">
<Size>
<AbsDimension x="20" y="20"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="75" y="-40"/>
</Offset>
</Anchor>
</Anchors>
<HitRectInsets>
<AbsInset left="0" right="-80" top="0" bottom="0"/>
</HitRectInsets>
<Layers>
<Layer level="BACKGROUND">
<FontString name="RecipeRadarMapVendorIndicatorText" inherits="GameFontHighlightSmall">
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<Texture file="Interface\Buttons\UI-RadioButton">
<TexCoords left="0" right="0.25" top="0" bottom="1"/>
</Texture>
<Texture name="RecipeRadarMapVendorIndicator" file="Interface\Buttons\UI-RadioButton">
<TexCoords left="0.25" right="0.5" top="0" bottom="1"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
RecipeRadarMapVendorIndicator:SetVertexColor(1.0, 0, 0)
</OnLoad>
<OnEnter>
GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
GameTooltip:SetText(RRS("Shift-click a vendor to add or remove her location on the world map."), nil, nil, nil, nil, 1)
</OnEnter>
<OnLeave>
GameTooltip:Hide()
</OnLeave>
</Scripts>
</Frame>
 
<Button name="RecipeRadarVendor1" inherits="RecipeRadarVendorButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarFrame">
<Offset>
<AbsDimension x="22" y="-96"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="RecipeRadarVendor2" inherits="RecipeRadarVendorButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarVendor1" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="RecipeRadarVendor3" inherits="RecipeRadarVendorButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarVendor2" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="RecipeRadarVendor4" inherits="RecipeRadarVendorButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarVendor3" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="RecipeRadarVendor5" inherits="RecipeRadarVendorButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarVendor4" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="RecipeRadarVendor6" inherits="RecipeRadarVendorButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarVendor5" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="RecipeRadarVendor7" inherits="RecipeRadarVendorButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarVendor6" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="RecipeRadarVendor8" inherits="RecipeRadarVendorButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarVendor7" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="RecipeRadarVendor9" inherits="RecipeRadarVendorButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarVendor8" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
 
<Frame name="RecipeRadarHighlightFrame" hidden="true">
<Size>
<AbsDimension x="452" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
<Layers>
<Layer level="ARTWORK">
<Texture name="RecipeRadarHighlight" file="Interface\AddOns\RecipeRadar\Images\Misc\RecipeHighlight"/>
</Layer>
</Layers>
</Frame>
 
<Frame name="RecipeRadarDetailFrame">
<Size>
<AbsDimension x="393" y="176"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarListScrollFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-8"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="RecipeDetailName" inherits="GameFontNormal" justifyH="LEFT">
<Size>
<AbsDimension x="393" y="0"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="46" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="RecipeDetailSubText" inherits="GameFontNormal" justifyH="LEFT">
<Size>
<AbsDimension x="0" y="0"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="RecipeDetailName" relativePoint="RIGHT">
<Offset>
<AbsDimension x="5" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="RecipeDetailCostText" inherits="GameFontNormalSmall" justifyH="LEFT" text="COSTS_LABEL">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeDetailName" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-4"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="RecipeDetailSpecialText" inherits="GameFontNormal" justifyH="LEFT" hidden="true">
<Color r="1" g="1" b="1"/>
<Anchors>
<Anchor point="LEFT" relativeTo="RecipeDetailCostText" relativePoint="RIGHT">
<Offset>
<AbsDimension x="5" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="RecipeDetailNoteText" inherits="GameFontNormalSmall" justifyH="LEFT" text="NOTE_COLON">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeDetailCostText" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-4"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="RecipeDetailRequirements" inherits="GameFontHighlightSmall" justifyH="LEFT">
<Size>
<AbsDimension x="393" y="0"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="RecipeDetailNoteText" relativePoint="RIGHT">
<Offset>
<AbsDimension x="5" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<Button name="RecipeDetailIcon">
<Size>
<AbsDimension x="37" y="37"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="5" y="-4"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture file="Interface\Buttons\UI-EmptySlot">
<Size>
<AbsDimension x="64" y="64"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="-13" y="13"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnClick>
if (IsShiftKeyDown() and button == "LeftButton" and ChatFrame1EditBox:IsVisible()) then
ChatFrame1EditBox:Insert(RecipeDetailIcon.Hyperlink)
end
</OnClick>
<OnEnter>
RecipeRadar_RecipeDetailIcon_ShowToolTip(self)
</OnEnter>
<OnLeave>
if (RecipeDetailIcon.NeedsUpdate) then
RecipeRadar_FrameUpdate(self)
RecipeDetailIcon.NeedsUpdate = false
end
GameTooltip:Hide()
</OnLeave>
</Scripts>
</Button>
<Frame name="RecipeDetailMoneyFrame" inherits="SmallMoneyFrameTemplate">
<Anchors>
<Anchor point="LEFT" relativeTo="RecipeDetailCostText" relativePoint="RIGHT">
<Offset>
<AbsDimension x="5" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
SmallMoneyFrame_OnLoad(self)
MoneyFrame_SetType(self, "STATIC")
</OnLoad>
</Scripts>
</Frame>
<Button name="RecipeCostIcon">
<Size>
<AbsDimension x="13" y="13"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="RecipeDetailCostText" relativePoint="RIGHT">
<Offset>
<AbsDimension x="28" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture file="Interface\Buttons\UI-EmptySlot">
<Size>
<AbsDimension x="23" y="23"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="-5" y="5"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnClick>
if (IsShiftKeyDown() and button == "LeftButton" and ChatFrame1EditBox:IsVisible()) then
ChatFrame1EditBox:Insert(RecipeCostIcon.Hyperlink)
end
</OnClick>
<OnEnter>
GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
GameTooltip:SetHyperlink(RecipeCostIcon.Link)
GameTooltip:Show()
</OnEnter>
<OnLeave>
GameTooltip:Hide()
</OnLeave>
</Scripts>
</Button>
</Frames>
</Frame>
 
<Frame name="RecipeRadarMapFrame">
<Size>
<AbsDimension x="386" y="257"/>
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="RecipeRadarFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="21" y="104"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<!-- Placeholder for showing our maps via the code -->
<Texture name="RecipeRadarRegionMap">
<Size>
<AbsDimension x="386" y="386"/>
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="RecipeRadarMapFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
 
<Layer level="OVERLAY">
<!-- Lower horizontal bar, all the way down here because
it wasn't overlaying the map otherwise! -->
<Texture file="Interface\Addons\RecipeRadar\Images\Frame\HorizontalBarLeft">
<Size>
<AbsDimension x="256" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadarFrame" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="15" y="-276"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
<Texture file="Interface\Addons\RecipeRadar\Images\Frame\HorizontalBarRight">
<Size>
<AbsDimension x="256" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="RecipeRadarFrame" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-39" y="-276"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
</Layers>
</Frame>
 
<Button name="RecipeRadarScroll1" Inherits="RecipeRadarScrollTemplate"/>
<Button name="RecipeRadarScroll2" Inherits="RecipeRadarScrollTemplate"/>
<Button name="RecipeRadarScroll3" Inherits="RecipeRadarScrollTemplate"/>
<Button name="RecipeRadarScroll4" Inherits="RecipeRadarScrollTemplate"/>
<Button name="RecipeRadarScroll5" Inherits="RecipeRadarScrollTemplate"/>
<Button name="RecipeRadarScroll6" Inherits="RecipeRadarScrollTemplate"/>
 
<!-- Bottom row, with money and buttons. -->
<Frame name="RecipeRadarMoneyFrame" inherits="SmallMoneyFrameTemplate">
<Anchors>
<Anchor point="BOTTOMRIGHT" relativeTo="RecipeRadarFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="180" y="86"/>
</Offset>
</Anchor>
</Anchors>
</Frame>
 
<Button name="RecipeRadarOptionsButton" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="80" y="22"/>
</Size>
<Anchors>
<Anchor point="CENTER" relativeTo="RecipeRadarFrame" relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="-162" y="91"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
PlaySound("igMainMenuOption")
RecipeRadar_OptionsFrame_Toggle(self)
</OnClick>
</Scripts>
</Button>
<Button name="RecipeRadarCloseButton" inherits="UIPanelButtonTemplate" text="CLOSE">
<Size>
<AbsDimension x="80" y="22"/>
</Size>
<Anchors>
<Anchor point="CENTER" relativeTo="RecipeRadarOptionsButton" relativePoint="CENTER">
<Offset>
<AbsDimension x="80" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
HideUIPanel(self:GetParent())
</OnClick>
</Scripts>
</Button>
 
<Frame name="RadarTabDropDown" inherits="UIDropDownMenuTemplate" hidden="true">
<Size>
<AbsDimension x="10" y="10"/>
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="-10" y="-50"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
--RecipeRadar_RadarTab_ContextMenuOnLoad(self)
</OnLoad>
</Scripts>
</Frame>
 
<Frame name="RecipesTabDropDown" inherits="UIDropDownMenuTemplate" hidden="true">
<Size>
<AbsDimension x="10" y="10"/>
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="-10" y="-50"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
--RecipeRadar_RecipesTab_ContextMenuOnLoad(self)
</OnLoad>
</Scripts>
</Frame>
 
</Frames>
 
<Scripts>
<OnLoad>
RecipeRadar_OnLoad(self)
</OnLoad>
<OnEvent>
RecipeRadar_OnEvent(self, event, ...)
</OnEvent>
<OnShow>
RecipeRadar_OnShow(self)
</OnShow>
<OnHide>
RecipeRadar_OnHide(self)
</OnHide>
<OnDragStart>
if (button == "LeftButton") then RecipeRadar_StartMoving(self) end
</OnDragStart>
<OnDragStop>
RecipeRadarFrame:StopMovingOrSizing()
</OnDragStop>
<OnMouseUp>
RecipeRadarFrame:StopMovingOrSizing()
</OnMouseUp>
</Scripts>
</Frame>
</UI>
trunk/RecipeRadar/AvailabilityTooltip.xml New file
0,0 → 1,176
<?xml version="1.0" encoding="utf-8" ?>
 
<UI xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
 
<Script file="NameMap.lua"/>
<Script file="SkillDB.lua"/>
<Script file="AvailabilityTooltip.lua"/>
<Script file="Availability.lua"/>
 
<Frame name="RecipeRadarAvailabilityTooltip" inherits="GameTooltipTemplate" frameStrata="TOOLTIP" parent="UIParent" hidden="true">
 
<Scripts>
<OnLoad>
-- this allows for 18 alts per server, though I think 8 is the max
RecipeRadar_AvailabilityTooltip_MaxLines = 24
RecipeRadarAvailabilityTooltip.Lines = 0
</OnLoad>
<OnHide>
RecipeRadar_AvailabilityTooltip_Hide()
</OnHide>
</Scripts>
 
<Layers>
<Layer level="ARTWORK">
<FontString name="$parentText1" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="10" y="-10"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText2" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText1" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText3" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText2" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText4" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText3" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText5" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText4" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText6" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText5" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText7" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText6" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText8" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText7" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText9" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText8" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText10" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText9" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText11" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText10" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText12" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText11" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText13" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText12" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText14" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText13" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText15" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText14" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentText16" inherits="GameFontNormalSmall" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentText15" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
 
</Frame>
 
</UI>
trunk/RecipeRadar/Changelog-RecipeRadar-cataclysm-r4.txt New file
0,0 → 1,188
------------------------------------------------------------------------
r4 | speedwaystar | 2010-12-02 19:52:13 +0000 (Thu, 02 Dec 2010) | 2 lines
Changed paths:
M /trunk/SkillDB.lua
 
* TradeSkillFrameAvailableFilterCheckButton is deprecated, replaced with TradeSkillFilterDropDown
* TradeSkillFrameEditBox likewise (not sure what replaces it)
------------------------------------------------------------------------
r3 | speedwaystar | 2010-11-28 10:09:35 +0000 (Sun, 28 Nov 2010) | 1 line
Changed paths:
M /trunk/Availability.lua
M /trunk/AvailabilityTooltip.lua
M /trunk/DropDowns.lua
M /trunk/FrameTemplates.xml
M /trunk/MainFrame.lua
M /trunk/Maps.lua
M /trunk/Maps.xml
M /trunk/Minimap.lua
M /trunk/MinimapButton.lua
M /trunk/MinimapButton.xml
M /trunk/OptionsFrame.lua
M /trunk/OptionsFrame.xml
M /trunk/RadarTab.lua
M /trunk/RecipeRadar.lua
M /trunk/RecipeRadar.toc
M /trunk/RecipeRadar.xml
M /trunk/RecipesTab.lua
M /trunk/SkillDB.lua
M /trunk/Worldmap.lua
 
Updated to work with the 4.0.1 API changes
------------------------------------------------------------------------
r2 | speedwaystar | 2010-11-28 08:12:10 +0000 (Sun, 28 Nov 2010) | 1 line
Changed paths:
A /trunk/Astrolabe
A /trunk/Astrolabe/Astrolabe.lua
A /trunk/Astrolabe/AstrolabeMapMonitor.lua
A /trunk/Astrolabe/DongleStub.lua
A /trunk/Astrolabe/Load.xml
A /trunk/Astrolabe/lgpl.txt
A /trunk/Availability.lua
A /trunk/AvailabilityTooltip.lua
A /trunk/AvailabilityTooltip.xml
A /trunk/Bindings.xml
A /trunk/ChangeLog.txt
A /trunk/DropDowns.lua
A /trunk/FontStyles.xml
A /trunk/FrameTemplates.xml
A /trunk/Globals.lua
A /trunk/Images
A /trunk/Images/Frame
A /trunk/Images/Frame/FrameBottomLeft.blp
A /trunk/Images/Frame/FrameBottomRight.blp
A /trunk/Images/Frame/FrameTopLeft.blp
A /trunk/Images/Frame/FrameTopRight.blp
A /trunk/Images/Frame/HorizontalBarLeft.blp
A /trunk/Images/Frame/HorizontalBarRight.blp
A /trunk/Images/Frame/LockButton-Locked-Down.blp
A /trunk/Images/Frame/LockButton-Locked-Up.blp
A /trunk/Images/Frame/LockButton-Unlocked-Down.blp
A /trunk/Images/Frame/LockButton-Unlocked-Up.blp
A /trunk/Images/Frame/Tab-Right.blp
A /trunk/Images/Icons
A /trunk/Images/Icons/Alchemy.blp
A /trunk/Images/Icons/Blacksmithing.blp
A /trunk/Images/Icons/Cooking.blp
A /trunk/Images/Icons/Enchanting.blp
A /trunk/Images/Icons/Engineering.blp
A /trunk/Images/Icons/First-Aid.blp
A /trunk/Images/Icons/Fishing.blp
A /trunk/Images/Icons/Highlight.blp
A /trunk/Images/Icons/Inscription.blp
A /trunk/Images/Icons/Jewelcrafting.blp
A /trunk/Images/Icons/Leatherworking.blp
A /trunk/Images/Icons/Tailoring.blp
A /trunk/Images/Misc
A /trunk/Images/Misc/IconHighlight.blp
A /trunk/Images/Misc/MinimapButtonDown.blp
A /trunk/Images/Misc/MinimapButtonUp.blp
A /trunk/Images/Misc/QuestionMark.blp
A /trunk/Images/Misc/Radar.blp
A /trunk/Images/Misc/RecipeHighlight.blp
A /trunk/Images/Misc/Scroll.blp
A /trunk/Images/Regions
A /trunk/Images/Regions/Alterac-Mountains.blp
A /trunk/Images/Regions/Arathi-Highlands.blp
A /trunk/Images/Regions/Ashenvale.blp
A /trunk/Images/Regions/Azshara.blp
A /trunk/Images/Regions/Azuremyst-Isle.blp
A /trunk/Images/Regions/Badlands.blp
A /trunk/Images/Regions/Blade-s-Edge-Mountains.blp
A /trunk/Images/Regions/Blasted-Lands.blp
A /trunk/Images/Regions/Bloodmyst-Isle.blp
A /trunk/Images/Regions/Borean-Tundra.blp
A /trunk/Images/Regions/Burning-Steppes.blp
A /trunk/Images/Regions/Crystalsong-Forest.blp
A /trunk/Images/Regions/Dalaran.blp
A /trunk/Images/Regions/Darkshore.blp
A /trunk/Images/Regions/Darnassus.blp
A /trunk/Images/Regions/Deadwind-Pass.blp
A /trunk/Images/Regions/Desolace.blp
A /trunk/Images/Regions/Dragonblight.blp
A /trunk/Images/Regions/Dun-Morogh.blp
A /trunk/Images/Regions/Durotar.blp
A /trunk/Images/Regions/Duskwood.blp
A /trunk/Images/Regions/Dustwallow-Marsh.blp
A /trunk/Images/Regions/Eastern-Plaguelands.blp
A /trunk/Images/Regions/Elwynn-Forest.blp
A /trunk/Images/Regions/Eversong-Woods.blp
A /trunk/Images/Regions/Felwood.blp
A /trunk/Images/Regions/Feralas.blp
A /trunk/Images/Regions/Ghostlands.blp
A /trunk/Images/Regions/Grizzly-Hills.blp
A /trunk/Images/Regions/Hellfire-Peninsula.blp
A /trunk/Images/Regions/Hillsbrad-Foothills.blp
A /trunk/Images/Regions/Howling-Fjord.blp
A /trunk/Images/Regions/Icecrown.blp
A /trunk/Images/Regions/Ironforge.blp
A /trunk/Images/Regions/Isle-of-Quel-Danas.blp
A /trunk/Images/Regions/Loch-Modan.blp
A /trunk/Images/Regions/Moonglade.blp
A /trunk/Images/Regions/Mulgore.blp
A /trunk/Images/Regions/Nagrand.blp
A /trunk/Images/Regions/Netherstorm.blp
A /trunk/Images/Regions/Orgrimmar.blp
A /trunk/Images/Regions/Redridge-Mountains.blp
A /trunk/Images/Regions/Searing-Gorge.blp
A /trunk/Images/Regions/Shadowmoon-Valley.blp
A /trunk/Images/Regions/Shattrath-City.blp
A /trunk/Images/Regions/Sholazar-Basin.blp
A /trunk/Images/Regions/Silithus.blp
A /trunk/Images/Regions/Silvermoon-City.blp
A /trunk/Images/Regions/Silverpine-Forest.blp
A /trunk/Images/Regions/Stonetalon-Mountains.blp
A /trunk/Images/Regions/Stormwind-City.blp
A /trunk/Images/Regions/Stormwind.blp
A /trunk/Images/Regions/Stranglethorn-Vale.blp
A /trunk/Images/Regions/Swamp-of-Sorrows.blp
A /trunk/Images/Regions/Tanaris.blp
A /trunk/Images/Regions/Teldrassil.blp
A /trunk/Images/Regions/Terokkar-Forest.blp
A /trunk/Images/Regions/The-Barrens.blp
A /trunk/Images/Regions/The-Exodar.blp
A /trunk/Images/Regions/The-Hinterlands.blp
A /trunk/Images/Regions/The-Storm-Peaks.blp
A /trunk/Images/Regions/Thousand-Needles.blp
A /trunk/Images/Regions/Thunder-Bluff.blp
A /trunk/Images/Regions/Tirisfal-Glades.blp
A /trunk/Images/Regions/Un-Goro-Crater.blp
A /trunk/Images/Regions/Undercity.blp
A /trunk/Images/Regions/Western-Plaguelands.blp
A /trunk/Images/Regions/Westfall.blp
A /trunk/Images/Regions/Wetlands.blp
A /trunk/Images/Regions/Wintergrasp.blp
A /trunk/Images/Regions/Winterspring.blp
A /trunk/Images/Regions/Zangarmarsh.blp
A /trunk/Images/Regions/Zul-Drak.blp
A /trunk/Localization.lua
A /trunk/MainFrame.lua
A /trunk/Maps.lua
A /trunk/Maps.xml
A /trunk/Minimap.lua
A /trunk/MinimapButton.lua
A /trunk/MinimapButton.xml
A /trunk/NameMap.lua
A /trunk/OptionsFrame.lua
A /trunk/OptionsFrame.xml
A /trunk/README.txt
A /trunk/RadarTab.lua
A /trunk/RecipeData.lua
A /trunk/RecipeRadar.lua
A /trunk/RecipeRadar.toc
A /trunk/RecipeRadar.xml
A /trunk/RecipesTab.lua
A /trunk/RegionData.lua
A /trunk/SkillDB.lua
A /trunk/Worldmap.lua
 
Initial import (Recipe-Radar-1.33)
------------------------------------------------------------------------
r1 | root | 2010-11-28 07:32:09 +0000 (Sun, 28 Nov 2010) | 1 line
Changed paths:
A /branches
A /tags
A /trunk
 
"recipe-radar/cataclysm: Initial Import"
------------------------------------------------------------------------
trunk/RecipeRadar/OptionsFrame.lua New file
0,0 → 1,207
 
function RecipeRadar_OptionsFrame_OnLoad(self)
 
UIPanelWindows["RecipeRadarOptionsFrame"] = { area = "center" }
RecipeRadarOptionsFrameHeaderText:SetText(RRS("Recipe Radar"))
self:RegisterForDrag("LeftButton")
 
end
 
function RecipeRadar_OptionsFrame_Toggle()
 
if (RecipeRadarOptionsFrame:IsVisible()) then
RecipeRadarOptionsFrame:Hide()
else
RecipeRadarOptionsFrame:Show()
end
 
end
 
function RecipeRadar_OptionsFrame_Init()
 
RecipeRadarRealmAvailability:SetChecked(
RecipeRadar_Options.RealmAvailability)
 
RecipeRadarShowMinimapButton:SetChecked(
RecipeRadar_Options.ShowMinimapButton)
 
RecipeRadarMinimapButtonPositionSlider:SetValue(
RecipeRadar_Options.MinimapButtonPosition)
 
RecipeRadarAutoSelectRegionButton:SetChecked(
RecipeRadar_Options.AutoSelectRegion)
RecipeRadar_OptionsFrame_AutoSelectRegion_OnClick(self)
 
RecipeRadarAutoMapVendorsButton:SetChecked(
RecipeRadar_Options.AutoMapVendors)
 
end
 
function RecipeRadar_OptionsFrame_OnShow()
 
RecipeRadar_OptionsFrame_Init()
UIDropDownMenu_Initialize(RecipeRadar_ContinentDropDown,
RecipeRadar_ContinentDropDown_Init)
UIDropDownMenu_Initialize(RecipeRadar_RegionDropDown,
RecipeRadar_RegionDropDown_Init)
 
end
 
function RecipeRadar_OptionsFrame_AutoSelectRegion_OnClick(self)
 
if (RecipeRadarAutoSelectRegionButton:GetChecked()) then
 
PlaySound("igMainMenuOptionCheckBoxOn")
RecipeRadar_Options.AutoSelectRegion = true
RecipeRadar_OptionsFrame_DisableDropDown(RecipeRadar_ContinentDropDown)
RecipeRadar_OptionsFrame_DisableDropDown(RecipeRadar_RegionDropDown)
 
-- auto-select the current region
RecipeRadar_NewRegion(GetRealZoneText())
UIDropDownMenu_ClearAll(RecipeRadar_ContinentDropDown)
UIDropDownMenu_Initialize(RecipeRadar_ContinentDropDown,
RecipeRadar_ContinentDropDown_Init)
UIDropDownMenu_Initialize(RecipeRadar_RegionDropDown,
RecipeRadar_RegionDropDown_Init)
 
else
 
PlaySound("igMainMenuOptionCheckBoxOff")
RecipeRadar_Options.AutoSelectRegion = false
RecipeRadar_OptionsFrame_EnableDropDown(RecipeRadar_ContinentDropDown)
RecipeRadar_OptionsFrame_EnableDropDown(RecipeRadar_RegionDropDown)
 
end
 
end
 
-----------------------------------------------------------------------------
-- Continent/region drop down code
-----------------------------------------------------------------------------
 
function RecipeRadar_ContinentDropDown_OnLoad(self)
 
UIDropDownMenu_ClearAll(self)
UIDropDownMenu_SetWidth(self, 140)
 
end
 
function RecipeRadar_ContinentDropDown_Init()
 
for index, name in pairs(RecipeRadar_Continents) do
 
local item = { }
 
if ((not RecipeRadar_ContinentDropDown.selectedValue and
index == RecipeRadar_Options.CurrentContinent) or
index == RecipeRadar_ContinentDropDown.selectedValue) then
item.checked = 1
end
 
item.text = name
item.value = index
item.func = RecipeRadar_ContinentDropDown_OnClick
 
UIDropDownMenu_AddButton(item)
 
end
 
if (not RecipeRadar_ContinentDropDown.selectedValue) then
UIDropDownMenu_SetSelectedValue(RecipeRadar_ContinentDropDown,
RecipeRadar_Options.CurrentContinent)
end
 
end
 
function RecipeRadar_ContinentDropDown_OnClick(self)
 
UIDropDownMenu_SetSelectedValue(RecipeRadar_ContinentDropDown, self.value)
UIDropDownMenu_Initialize(RecipeRadar_RegionDropDown,
RecipeRadar_RegionDropDown_Init)
 
end
 
function RecipeRadar_GetContinentIndex(continent)
 
for index, name in pairs(RecipeRadar_Continents) do
if (name == continent) then
return index
end
end
return nil
 
end
 
function RecipeRadar_RegionDropDown_OnLoad(self)
 
UIDropDownMenu_SetWidth(self, 140)
 
end
 
function RecipeRadar_RegionDropDown_Init()
 
local cont = UIDropDownMenu_GetSelectedValue(RecipeRadar_ContinentDropDown)
local regions = { }
 
if (cont == 0) then
 
-- create sorted list of relevant instances
for k, v in pairs(RecipeRadar_RegionData) do
if (v.Continent == 0) then
table.insert(regions, k)
end
end
table.sort(regions)
 
else
 
-- otherwise just populate with all the continent's regions
regions = { GetMapZones(cont) }
 
end
 
 
for id, region in pairs(regions) do
 
local item = { }
item.text = region
item.value = id
item.func = RecipeRadar_RegionDropDown_OnClick
 
UIDropDownMenu_AddButton(item)
 
end
 
if (cont == RecipeRadar_Options.CurrentContinent) then
UIDropDownMenu_SetSelectedName(RecipeRadar_RegionDropDown,
RecipeRadar_Options.CurrentRegion)
else
UIDropDownMenu_ClearAll(RecipeRadar_RegionDropDown)
end
 
end
 
function RecipeRadar_RegionDropDown_OnClick(self)
 
UIDropDownMenu_SetSelectedID(RecipeRadar_RegionDropDown, self:GetID())
RecipeRadar_NewRegion(self:GetText())
RecipeRadarListScrollFrameScrollBar:SetValue(0)
RecipeRadar_FrameUpdate()
 
end
 
function RecipeRadar_OptionsFrame_DisableDropDown(dropdown)
 
_G[dropdown:GetName().."Text"]:SetVertexColor(
GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b)
_G[dropdown:GetName().."Button"]:Disable()
 
end
 
function RecipeRadar_OptionsFrame_EnableDropDown(dropdown)
 
_G[dropdown:GetName().."Text"]:SetVertexColor(
HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b)
_G[dropdown:GetName().."Button"]:Enable()
 
end
trunk/RecipeRadar/Availability.lua New file
0,0 → 1,446
 
-- Availability.lua: logic for the availability of recipes to characters
-- $Id: Availability.lua 1039 2008-04-08 05:13:09Z jnmiller $
 
-----------------------------------------------------------------------------
-- Generic, abstracted availability entry points
-----------------------------------------------------------------------------
 
function RecipeRadar_Availability_Init()
 
if (RecipeRadar_Options.RealmAvailability) then
RecipeRadar_RealmAvailDropDown:Show()
RecipeRadar_PersonAvailDropDown:Hide()
else
RecipeRadar_PersonAvailDropDown:Show()
RecipeRadar_RealmAvailDropDown:Hide()
end
 
end
 
function RecipeRadar_Availability_Toggle()
 
if (RecipeRadar_RealmAvailDropDown:IsVisible()) then
RecipeRadar_PersonAvailDropDown:Show()
RecipeRadar_RealmAvailDropDown:Hide()
RecipeRadar_Options.RealmAvailability = false
else
RecipeRadar_RealmAvailDropDown:Show()
RecipeRadar_PersonAvailDropDown:Hide()
RecipeRadar_Options.RealmAvailability = true
end
 
RecipeRadar_FrameUpdate()
 
end
 
-----------------------------------------------------------------------------
-- Indicator for vendor/recipe item lists
-----------------------------------------------------------------------------
 
-- Returns a colored indication of a recipe's availability.
function RecipeRadar_Availability_GetIndicator(recipe)
 
if (RecipeRadar_Options.RealmAvailability) then
return RecipeRadar_RealmAvail_GetIndicator(recipe)
else
return RecipeRadar_PersonAvail_GetIndicator(recipe)
end
 
end
 
-- Returns a string with the recipe's skill in parens.
function RecipeRadar_PersonAvail_GetIndicator(recipe)
 
return format(TEXT(PARENS_TEMPLATE), recipe.Skill)
 
end
 
-- Returns a string with a little colored realm-wide availability
-- indicator for the main vendor/recipe list.
function RecipeRadar_RealmAvail_GetIndicator(recipe)
 
local key = RecipeRadar_Availability_GetKey(recipe)
if (not key) then return "" end
 
return RecipeRadar_ColorToCode(RecipeRadar_Availabilities[key].Color) ..
"*" .. FONT_COLOR_CODE_CLOSE
 
end
 
-----------------------------------------------------------------------------
-- Availability tooltip code
-----------------------------------------------------------------------------
 
-- Populates the tooltip that displays on recipe button mouseover.
function RecipeRadar_Availability_CreateTooltip(recipe)
 
local recipe_name = RecipeRadar_GetSafeItemInfo(recipe.ID)
 
if (recipe_name == RRS("Uncached Recipe")) then
 
-- uncached recipes have a special tooltip and warning
-- I'm just coloring 'Warning:' red here for max contrast
local warn = RRS("Warning: if your server has")
local colon = string.find(warn, ":")
local warning =
RecipeRadar_ColorToCode(RecipeRadar_Colors.TooltipWarning) ..
string.sub(warn, 1, colon) .. FONT_COLOR_CODE_CLOSE ..
string.sub(warn, colon + 1)
 
-- the layout of the tooltip, with colors for each line
local tooltip = {
{ text = RRS("Uncached Recipe"), color = RecipeRadar_Colors.UncachedRecipe },
{ text = "", color = nil },
{ text = RRS("You may mouse over the [?]"), color = RecipeRadar_Colors.TooltipHeading },
{ text = RRS("icon to lookup this recipe."), color = RecipeRadar_Colors.TooltipHeading },
{ text = "", color = nil },
{ text = warning, color = RecipeRadar_Colors.TooltipHeading },
{ text = RRS("not yet seen this item, you"), color = RecipeRadar_Colors.TooltipHeading },
{ text = RRS("will be disconnected!"), color = RecipeRadar_Colors.TooltipHeading }, }
for _, line in pairs(tooltip) do
RecipeRadar_AvailabilityTooltip_AddLine(line.text, line.color)
end
return
 
end
 
local avail, prosp, known, line_info = { }, { }, { }, { }
local num_avail, num_prosp, num_known = 0, 0, 0
 
-- recipe labels are not saved in the skill database
recipe_name = RecipeRadar_TrimRecipeLabel(recipe_name)
 
-- iterate through each character on this realm
for player, player_info in pairs(RecipeRadar_SkillDB[GetRealmName()]) do
 
-- do the rest only if the character has the profession
if (player_info.Professions[recipe.Type] and
player_info.Professions[recipe.Type].Rank > 0 and
RecipeRadar_SkillDB_HasSpec(player, recipe) and
RecipeRadar_SkillDB_HasMisc(player, recipe)) then
 
-- get player's rank
local rank = player_info.Professions[recipe.Type].Rank
 
-- get player's relevant faction standing, if any
local rep = nil
if (recipe.Faction and player_info.Factions[recipe.Faction]) then
rep = _G["FACTION_STANDING_LABEL" .. player_info.Factions[recipe.Faction]]
end
 
-- get player's specialty, if any
local spec = nil
if (recipe.Specialty) then
spec = player_info.Professions[recipe.Type].Specialty
end
 
-- now test all of the possible recipe statuses
if (RecipeRadar_Availability_IsAvailable(player, recipe)) then
num_avail = num_avail + 1
avail[num_avail] = {
Name = player, Rank = rank, Rep = rep, Spec = spec }
 
elseif (RecipeRadar_Availability_IsProspect(player, recipe)) then
num_prosp = num_prosp + 1
prosp[num_prosp] = {
Name = player, Rank = rank, Rep = rep, Spec = spec }
 
elseif (RecipeRadar_Availability_IsKnown(player, recipe)) then
num_known = num_known + 1
known[num_known] = {
Name = player, Rank = rank, Rep = rep, Spec = spec }
 
else
local bleh = 0
if (knows) then bleh = 1 end
RecipeRadar_Print("ASSERT FAILED: " .. player .. " - " ..
recipe.Type .. ", " .. recipe_name .. ", " .. recipe.Skill ..
" (have " .. rank .. ") knows = " .. bleh)
end
 
end
 
end
 
-- populate the "available now" entries
if (num_avail > 0) then
 
RecipeRadar_AvailabilityTooltip_AddLine(
RecipeRadar_Availabilities["LearnableByPlayer"].Tooltip.Heading,
RecipeRadar_Colors.TooltipHeading)
table.sort(avail, RecipeRadar_Availability_NameSort)
 
for _, line in pairs(avail) do
 
local color = RecipeRadar_Colors.LearnableByAlt
if (line.Name == UnitName("player")) then
color = RecipeRadar_Colors.LearnableByPlayer
end
 
local rank_suffix = line.Rank
if (line.Rep) then -- reputation is relevant to this line
rank_suffix = rank_suffix .. " - " .. line.Rep
end
rank_suffix = format(TEXT(PARENS_TEMPLATE), rank_suffix)
 
RecipeRadar_AvailabilityTooltip_AddLine(
" " .. line.Name .. " " .. rank_suffix, color)
 
end
 
end
 
-- populate the "available soon" entries
if (num_prosp > 0) then
 
if (num_avail > 0) then
RecipeRadar_AvailabilityTooltip_AddLine()
end
RecipeRadar_AvailabilityTooltip_AddLine(
RecipeRadar_Availabilities["ProspectForPlayer"].Tooltip.Heading,
RecipeRadar_Colors.TooltipHeading)
table.sort(prosp, RecipeRadar_Availability_NameSort)
 
for _, line in pairs(prosp) do
 
local color = RecipeRadar_Colors.ProspectForAlt
if (line.Name == UnitName("player")) then
color = RecipeRadar_Colors.ProspectForPlayer
end
 
local factors = RecipeRadar_Availability_GetLimitingFactors(
line.Name, recipe)
 
local rank = string.format(RRS("%d of %d"), line.Rank, recipe.Skill)
if (factors["rank"]) then
rank = RecipeRadar_HighlightString(rank, color)
end
local suffix = rank -- always include rank in the tooltip
 
if (line.Rep) then
local rep = line.Rep
if (factors["rep"]) then
rep = RecipeRadar_HighlightString(rep, color)
end
suffix = suffix .. " - " .. rep
end
 
if (line.Spec) then
local spec = line.Spec
if (factors["spec"]) then
spec = RecipeRadar_HighlightString(spec, color)
end
suffix = suffix .. " - " .. spec
end
 
suffix = format(TEXT(PARENS_TEMPLATE), suffix)
RecipeRadar_AvailabilityTooltip_AddLine(
" " .. line.Name .. " " .. suffix, color)
 
end
 
end
 
-- populate the "already known" entries
if (num_known > 0) then
 
if (num_prosp > 0 or num_avail > 0) then
RecipeRadar_AvailabilityTooltip_AddLine()
end
RecipeRadar_AvailabilityTooltip_AddLine(
RecipeRadar_Availabilities["KnownByPlayer"].Tooltip.Heading,
RecipeRadar_Colors.TooltipHeading)
table.sort(known, RecipeRadar_Availability_NameSort)
 
for _, line in pairs(known) do
 
local color = RecipeRadar_Colors.KnownByAlt
if (line.Name == UnitName("player")) then
color = RecipeRadar_Colors.KnownByPlayer
end
 
local rank_suffix = line.Rank
if (line.Rep) then -- reputation is relevant to this line
rank_suffix = rank_suffix .. " - " .. line.Rep
end
rank_suffix = format(TEXT(PARENS_TEMPLATE), rank_suffix)
 
RecipeRadar_AvailabilityTooltip_AddLine(
" " .. line.Name .. " " .. rank_suffix, color)
 
end
 
end
 
end
 
-- Boolean test for availability used by CreateTooltip(), above
function RecipeRadar_Availability_NameSort(line1, line2)
 
return line1.Name < line2.Name
 
end
 
-- Returns a set of booleans from which one can derive the availability
-- of any recipe relative to any player.
function RecipeRadar_Availability_GetBooleans(player, recipe)
 
local info = RecipeRadar_SkillDB_GetSafePlayerDB(player)
 
-- if the player doesn't even have the profession, just return
if (not info.Professions[recipe.Type]) then return false end
 
local recipe_name = RecipeRadar_GetSafeItemInfo(recipe.ID)
recipe_name = RecipeRadar_TrimRecipeLabel(recipe_name)
 
if (recipe_name == RRS("Uncached Recipe")) then
return nil
end
 
-- otherwise, get the other relevant booleans
local has_rec = info.Professions[recipe.Type].Recipes[recipe_name]
local has_rank = info.Professions[recipe.Type].Rank >= recipe.Skill
local has_rep = RecipeRadar_SkillDB_HasRep(player, recipe)
local has_spec = RecipeRadar_SkillDB_HasSpec(player, recipe)
local has_misc = RecipeRadar_SkillDB_HasMisc(player, recipe)
 
return true, has_rec, has_rank, has_rep, has_spec, has_misc
 
end
 
-- Boolean test for availability used by CreateTooltip() and GetKey()
function RecipeRadar_Availability_IsAvailable(player, recipe)
 
local has_prof, has_rec, has_rank, has_rep, has_spec, has_misc =
RecipeRadar_Availability_GetBooleans(player, recipe)
 
return (has_prof and not has_rec and has_rank and has_rep
and has_spec and has_misc)
 
end
 
-- Boolean test for availability used by CreateTooltip() and GetKey()
function RecipeRadar_Availability_IsProspect(player, recipe)
 
local has_prof, has_rec, has_rank, has_rep, has_spec, has_misc =
RecipeRadar_Availability_GetBooleans(player, recipe)
 
return (has_prof and not has_rec and
(not has_rank or not has_rep) and has_spec and has_misc)
 
end
 
-- Boolean test for availability used by CreateTooltip() and GetKey()
function RecipeRadar_Availability_IsKnown(player, recipe)
 
local has_prof, has_rec, has_rank, has_rep, has_spec, has_misc =
RecipeRadar_Availability_GetBooleans(player, recipe)
 
return (has_prof and has_rec)
 
end
 
-- Returns a table of strings that specify why the given recipe is not
-- available to the given player.
function RecipeRadar_Availability_GetLimitingFactors(player, recipe)
 
local has_prof, has_rec, has_rank, has_rep, has_spec, has_misc =
RecipeRadar_Availability_GetBooleans(player, recipe)
local factors = { }
 
if (not has_prof) then factors["prof"] = 1 end
if (not has_rec) then factors["rec"] = 1 end
if (not has_rank) then factors["rank"] = 1 end
if (not has_rep) then factors["rep"] = 1 end
if (not has_spec) then factors["spec"] = 1 end
if (not has_misc) then factors["misc"] = 1 end
 
return factors
 
end
 
-----------------------------------------------------------------------------
-- Availability testing for filtering and dropdowns
-----------------------------------------------------------------------------
 
-- This function tests whether the recipe is learnable either by
-- the player or an alt if realm-wide availability is on.
function RecipeRadar_Availability_IsLearnable(recipe, set_filter)
 
local name = RecipeRadar_GetSafeItemInfo(recipe.ID)
 
local avail = RecipeRadar_Availability_GetKey(recipe)
if (not avail) then return false end
 
if (set_filter) then
recipe.IsFilteredByAvailability =
RecipeRadar_IsAvailabilityFiltered(avail)
end
 
if (RecipeRadar_Options.RealmAvailability) then
return avail == "LearnableByPlayer" or avail == "LearnableByAlt"
else
return avail == "LearnableByPlayer"
end
 
end
 
-- Wrapper for the above that makes its functionality clearer.
function RecipeRadar_Availability_SetAvailabilityFilter(recipe)
 
RecipeRadar_Availability_IsLearnable(recipe, true)
 
end
 
-- Generic function returns the key to the RecipeRadar_Availabilities
-- table so the caller can get whatever related info she needs.
function RecipeRadar_Availability_GetKey(recipe)
 
local player = UnitName("player")
 
if (RecipeRadar_Availability_IsAvailable(player, recipe)) then
return "LearnableByPlayer"
 
elseif (RecipeRadar_Options.RealmAvailability and
RecipeRadar_Availability_IsSatisfiedByAlt(recipe,
RecipeRadar_Availability_IsAvailable)) then
return "LearnableByAlt"
 
elseif (RecipeRadar_Availability_IsProspect(player, recipe)) then
return "ProspectForPlayer"
 
elseif (RecipeRadar_Options.RealmAvailability and
RecipeRadar_Availability_IsSatisfiedByAlt(recipe,
RecipeRadar_Availability_IsProspect)) then
return "ProspectForAlt"
 
elseif (RecipeRadar_Availability_IsKnown(player, recipe)) then
return "KnownByPlayer"
 
elseif (RecipeRadar_Options.RealmAvailability and
RecipeRadar_Availability_IsSatisfiedByAlt(recipe,
RecipeRadar_Availability_IsKnown)) then
return "KnownByAlt"
 
else
return "NotApplicable"
end
 
end
 
-- Boolean test for availability used by GetKey(), above.
function RecipeRadar_Availability_IsSatisfiedByAlt(recipe, sat_func)
 
for player, player_info in pairs(RecipeRadar_SkillDB[GetRealmName()]) do
 
if (player_info.Team ~= RecipeRadar_GetOpposingFaction("player") and
player ~= UnitName("player") and
sat_func(player, recipe)) then
return true
end
 
end
return false
 
end
trunk/RecipeRadar/RegionData.lua New file
0,0 → 1,5856
 
-- RegionData.lua: all recipes organized by region
-- Auto generated on 8/11/2009 8:00:23 PM
 
RecipeRadar_RegionData = {
 
 
[RRS("Stormwind City")] = {
IsCity = true,
Continent = 2,
MapFile = "Stormwind-City",
Vendors = {
{
Name = RRS("Alexandra Bolero"),
Team = "Alliance",
Coordinates = {
{ x = 0.533, y = 0.817 },
},
Recipes = {
{ ID = 6274, Type = RRS("Tailoring"), Skill = 100, Cost = 400 },
{ ID = 10325, Type = RRS("Tailoring"), Skill = 250, Cost = 10000 },
},
},
{
Name = RRS("Catherine Leland"),
Team = "Alliance",
Coordinates = {
{ x = 0.551, y = 0.694 },
},
Recipes = {
{ ID = 6325, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
{ ID = 6330, Type = RRS("Cooking"), Skill = 100, Cost = 1200 },
{ ID = 6368, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
},
},
{
Name = RRS("Darian Singh"),
Team = "Alliance",
Coordinates = {
{ x = 0.426, y = 0.769 },
},
Recipes = {
{ ID = 18649, Type = RRS("Engineering"), Skill = 150, Cost = 1800 },
},
},
{
Name = RRS("Jessara Cordell"),
Team = "Alliance",
Coordinates = {
{ x = 0.53, y = 0.742 },
},
Recipes = {
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Kaita Deepforge"),
Team = "Alliance",
Coordinates = {
{ x = 0.633, y = 0.374 },
},
Recipes = {
{ ID = 12162, Type = RRS("Blacksmithing"), Skill = 160, Cost = 3000 },
},
},
{
Name = RRS("Kendor Kabonka"),
Team = "Alliance",
Coordinates = {
{ x = 0.774, y = 0.528 },
},
Recipes = {
{ ID = 2889, Type = RRS("Cooking"), Skill = 10, Cost = 240 },
{ ID = 3679, Type = RRS("Cooking"), Skill = 60, Cost = 400 },
{ ID = 2698, Type = RRS("Cooking"), Skill = 85, Cost = 400 },
{ ID = 3681, Type = RRS("Cooking"), Skill = 120, Cost = 1600 },
{ ID = 3678, Type = RRS("Cooking"), Skill = 80, Cost = 400 },
{ ID = 3682, Type = RRS("Cooking"), Skill = 130, Cost = 1600 },
{ ID = 3683, Type = RRS("Cooking"), Skill = 110, Cost = 1600 },
{ ID = 2697, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 3680, Type = RRS("Cooking"), Skill = 90, Cost = 1600 },
{ ID = 2699, Type = RRS("Cooking"), Skill = 100, Cost = 800 },
{ ID = 2701, Type = RRS("Cooking"), Skill = 100, Cost = 1600 },
{ ID = 2700, Type = RRS("Cooking"), Skill = 110, Cost = 400 },
{ ID = 728, Type = RRS("Cooking"), Skill = 75, Cost = 200 },
},
},
{
Name = RRS("Maria Lumere"),
Team = "Alliance",
Coordinates = {
{ x = 0.557, y = 0.854 },
},
Recipes = {
{ ID = 9301, Type = RRS("Alchemy"), Skill = 250, Cost = 10000 },
},
},
{
Name = RRS("Erika Tate"),
Team = "Alliance",
Coordinates = {
{ x = 0.784, y = 0.53 },
},
Recipes = {
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
{
Name = RRS("Edna Mullby"),
Team = "Alliance",
Coordinates = {
{ x = 0.646, y = 0.715 },
},
Recipes = {
{ ID = 20856, Type = RRS("Jewelcrafting"), Skill = 150, Cost = 1500 },
},
},
{
Name = RRS("Lucan Cordell"),
Team = "Alliance",
Coordinates = {
{ x = 0.431, y = 0.644 },
},
Recipes = {
},
},
{
Name = RRS("Khole Jinglepocket"),
Team = "Alliance",
Notes = RRS("Seasonal: 12"),
Coordinates = {
{ x = 0.622, y = 0.703 },
},
Recipes = {
{ ID = 17201, Type = RRS("Cooking"), Skill = 35, Cost = 240 },
{ ID = 17200, Type = RRS("Cooking"), Skill = 1, Cost = 25 },
},
},
{
Name = RRS("Captain O'Neal"),
Team = "Alliance",
Coordinates = {
{ x = 0.752, y = 0.668 },
},
Recipes = {
{ ID = 41563, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41564, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41565, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41575, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41559, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41573, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41566, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41569, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41572, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41560, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41570, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41571, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
},
},
},
},
 
[RRS("Redridge Mountains")] = {
IsCity = false,
Continent = 2,
MapFile = "Redridge-Mountains",
Vendors = {
{
Name = RRS("Amy Davenport"),
Team = "Alliance",
Coordinates = {
{ x = 0.291, y = 0.473 },
},
Recipes = {
{ ID = 20576, Type = RRS("Leatherworking"), Skill = 100, Cost = 1400 },
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
},
},
{
Name = RRS("Clyde Ranthal"),
Team = "Alliance",
Coordinates = {
{ x = 0.885, y = 0.701 },
},
Recipes = {
{ ID = 7289, Type = RRS("Leatherworking"), Skill = 100, Cost = 650 },
},
},
{
Name = RRS("Gloria Femmel"),
Team = "Alliance",
Coordinates = {
{ x = 0.266, y = 0.435 },
},
Recipes = {
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
},
},
 
[RRS("Arathi Highlands")] = {
IsCity = false,
Continent = 2,
MapFile = "Arathi-Highlands",
Vendors = {
{
Name = RRS("Androd Fadran"),
Team = "Alliance",
Coordinates = {
{ x = 0.451, y = 0.469 },
},
Recipes = {
{ ID = 13288, Type = RRS("Leatherworking"), Skill = 165, Cost = 2500 },
},
},
{
Name = RRS("Deneb Walker"),
Team = "Alliance",
Coordinates = {
{ x = 0.27, y = 0.588 },
},
Recipes = {
{ ID = 16084, Type = RRS("First Aid"), Skill = 125, Cost = 10000 },
{ ID = 16112, Type = RRS("First Aid"), Skill = 180, Cost = 2200 },
{ ID = 16113, Type = RRS("First Aid"), Skill = 210, Cost = 5000 },
},
},
{
Name = RRS("Drovnar Strongbrew"),
Team = "Alliance",
Coordinates = {
{ x = 0.463, y = 0.459 },
},
Recipes = {
{ ID = 6056, Type = RRS("Alchemy"), Skill = 190, Cost = 2000 },
},
},
{
Name = RRS("Hammon Karwn"),
Team = "Alliance",
Coordinates = {
{ x = 0.467, y = 0.475 },
},
Recipes = {
{ ID = 5973, Type = RRS("Leatherworking"), Skill = 170, Cost = 650 },
{ ID = 12228, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21942, Type = RRS("Jewelcrafting"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Jannos Ironwill"),
Team = "Alliance",
Coordinates = {
{ x = 0.459, y = 0.475 },
},
Recipes = {
{ ID = 10858, Type = RRS("Blacksmithing"), Skill = 155, Cost = 3000 },
},
},
{
Name = RRS("Narj Deepslice"),
Team = "Alliance",
Coordinates = {
{ x = 0.455, y = 0.475 },
},
Recipes = {
{ ID = 4609, Type = RRS("Cooking"), Skill = 175, Cost = 1000 },
},
},
{
Name = RRS("Jun'ha"),
Team = "Horde",
Coordinates = {
{ x = 0.73, y = 0.361 },
},
Recipes = {
{ ID = 7089, Type = RRS("Tailoring"), Skill = 175, Cost = 1500 },
},
},
{
Name = RRS("Keena"),
Team = "Horde",
Coordinates = {
{ x = 0.738, y = 0.326 },
},
Recipes = {
{ ID = 11163, Type = RRS("Enchanting"), Skill = 170, Cost = 3000 },
{ ID = 5973, Type = RRS("Leatherworking"), Skill = 170, Cost = 650 },
{ ID = 3682, Type = RRS("Cooking"), Skill = 130, Cost = 1600 },
{ ID = 12228, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21942, Type = RRS("Jewelcrafting"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Tunkk"),
Team = "Horde",
Coordinates = {
{ x = 0.742, y = 0.346 },
},
Recipes = {
{ ID = 13287, Type = RRS("Leatherworking"), Skill = 165, Cost = 2500 },
},
},
},
},
 
[RRS("Azshara")] = {
IsCity = false,
Continent = 1,
MapFile = "Azshara",
Vendors = {
{
Name = RRS("Blimo Gadgetspring"),
Team = "Neutral",
Coordinates = {
{ x = 0.455, y = 0.909 },
},
Recipes = {
{ ID = 15751, Type = RRS("Leatherworking"), Skill = 285, Cost = 20000 },
{ ID = 15729, Type = RRS("Leatherworking"), Skill = 265, Cost = 12000 },
},
},
{
Name = RRS("Jubie Gadgetspring"),
Team = "Neutral",
Coordinates = {
{ x = 0.453, y = 0.91 },
},
Recipes = {
{ ID = 10607, Type = RRS("Engineering"), Skill = 230, Cost = 3600 },
},
},
},
},
 
[RRS("Ironforge")] = {
IsCity = true,
Continent = 2,
MapFile = "Ironforge",
Vendors = {
{
Name = RRS("Bombus Finespindle"),
Team = "Alliance",
Coordinates = {
{ x = 0.395, y = 0.343 },
},
Recipes = {
{ ID = 18731, Type = RRS("Leatherworking"), Skill = 150, Cost = 2000 },
},
},
{
Name = RRS("Gearcutter Cogspinner"),
Team = "Alliance",
Coordinates = {
{ x = 0.678, y = 0.425 },
},
Recipes = {
{ ID = 18649, Type = RRS("Engineering"), Skill = 150, Cost = 1800 },
{ ID = 7560, Type = RRS("Engineering"), Skill = 125, Cost = 1200 },
{ ID = 22729, Type = RRS("Engineering"), Skill = 275, Cost = 8000 },
},
},
{
Name = RRS("Outfitter Eric"),
Team = "Alliance",
Coordinates = {
{ x = 0.432, y = 0.287 },
},
Recipes = {
{ ID = 10314, Type = RRS("Tailoring"), Skill = 230, Cost = 4000 },
{ ID = 10317, Type = RRS("Tailoring"), Skill = 235, Cost = 4000 },
{ ID = 10326, Type = RRS("Tailoring"), Skill = 250, Cost = 5000 },
{ ID = 10323, Type = RRS("Tailoring"), Skill = 245, Cost = 4500 },
{ ID = 10321, Type = RRS("Tailoring"), Skill = 240, Cost = 4500 },
},
},
{
Name = RRS("Soolie Berryfizz"),
Team = "Alliance",
Coordinates = {
{ x = 0.668, y = 0.551 },
},
Recipes = {
{ ID = 13478, Type = RRS("Alchemy"), Skill = 265, Cost = 13000 },
{ ID = 5642, Type = RRS("Alchemy"), Skill = 150, Cost = 1800 },
},
},
{
Name = RRS("Tansy Puddlefizz"),
Team = "Alliance",
Coordinates = {
{ x = 0.482, y = 0.065 },
},
Recipes = {
{ ID = 6328, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 17062, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 6369, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 6326, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
},
},
{
Name = RRS("Tilli Thistlefuzz"),
Team = "Alliance",
Coordinates = {
{ x = 0.609, y = 0.443 },
},
Recipes = {
{ ID = 6349, Type = RRS("Enchanting"), Skill = 100, Cost = 500 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Wulmort Jinglepocket"),
Team = "Neutral",
Notes = RRS("Seasonal: 12"),
Coordinates = {
{ x = 0.33, y = 0.665 },
},
Recipes = {
{ ID = 34319, Type = RRS("Tailoring"), Skill = 250, Cost = 5000 },
{ ID = 34262, Type = RRS("Leatherworking"), Skill = 285, Cost = 5000 },
{ ID = 17201, Type = RRS("Cooking"), Skill = 35, Cost = 240 },
{ ID = 17200, Type = RRS("Cooking"), Skill = 1, Cost = 25 },
{ ID = 34413, Type = RRS("Cooking"), Skill = 325, Cost = 10000 },
},
},
{
Name = RRS("Emrul Riknussun"),
Team = "Alliance",
Coordinates = {
{ x = 0.599, y = 0.374 },
},
Recipes = {
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
{
Name = RRS("Burbik Gearspanner"),
Team = "Alliance",
Coordinates = {
{ x = 0.465, y = 0.271 },
},
Recipes = {
{ ID = 21948, Type = RRS("Jewelcrafting"), Skill = 250, Cost = 7500 },
{ ID = 20975, Type = RRS("Jewelcrafting"), Skill = 170, Cost = 2500 },
},
},
},
},
 
[RRS("Feralas")] = {
IsCity = false,
Continent = 1,
MapFile = "Feralas",
Vendors = {
{
Name = RRS("Brienna Starglow"),
Team = "Alliance",
Coordinates = {
{ x = 0.891, y = 0.46 },
},
Recipes = {
{ ID = 7089, Type = RRS("Tailoring"), Skill = 175, Cost = 1500 },
},
},
{
Name = RRS("Logannas"),
Team = "Alliance",
Coordinates = {
{ x = 0.327, y = 0.44 },
},
Recipes = {
{ ID = 9302, Type = RRS("Alchemy"), Skill = 245, Cost = 9000 },
{ ID = 6057, Type = RRS("Alchemy"), Skill = 190, Cost = 2000 },
},
},
{
Name = RRS("Pratt McGrubben"),
Team = "Alliance",
Coordinates = {
{ x = 0.303, y = 0.422 },
},
Recipes = {
{ ID = 7451, Type = RRS("Leatherworking"), Skill = 190, Cost = 2800 },
{ ID = 15734, Type = RRS("Leatherworking"), Skill = 270, Cost = 14000 },
{ ID = 8385, Type = RRS("Leatherworking"), Skill = 205, Cost = 3500 },
},
},
{
Name = RRS("Vivianna"),
Team = "Alliance",
Coordinates = {
{ x = 0.314, y = 0.434 },
},
Recipes = {
{ ID = 13949, Type = RRS("Cooking"), Skill = 275, Cost = 20000 },
{ ID = 12229, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 13947, Type = RRS("Cooking"), Skill = 275, Cost = 20000 },
{ ID = 13948, Type = RRS("Cooking"), Skill = 275, Cost = 20000 },
},
},
{
Name = RRS("Bronk"),
Team = "Horde",
Coordinates = {
{ x = 0.761, y = 0.433 },
},
Recipes = {
{ ID = 9302, Type = RRS("Alchemy"), Skill = 245, Cost = 9000 },
{ ID = 6057, Type = RRS("Alchemy"), Skill = 190, Cost = 2000 },
},
},
{
Name = RRS("Jangdor Swiftstrider"),
Team = "Horde",
Coordinates = {
{ x = 0.744, y = 0.429 },
},
Recipes = {
{ ID = 7451, Type = RRS("Leatherworking"), Skill = 190, Cost = 2800 },
{ ID = 15734, Type = RRS("Leatherworking"), Skill = 270, Cost = 14000 },
{ ID = 8409, Type = RRS("Leatherworking"), Skill = 210, Cost = 4000 },
{ ID = 8385, Type = RRS("Leatherworking"), Skill = 205, Cost = 3500 },
},
},
{
Name = RRS("Sheendra Tallgrass"),
Team = "Horde",
Coordinates = {
{ x = 0.745, y = 0.427 },
},
Recipes = {
{ ID = 13949, Type = RRS("Cooking"), Skill = 275, Cost = 20000 },
{ ID = 12229, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 13947, Type = RRS("Cooking"), Skill = 275, Cost = 20000 },
{ ID = 13948, Type = RRS("Cooking"), Skill = 275, Cost = 20000 },
},
},
{
Name = RRS("Worb Strongstitch"),
Team = "Horde",
Coordinates = {
{ x = 0.742, y = 0.425 },
},
Recipes = {
},
},
{
Name = RRS("Zorbin Fandazzle"),
Team = "Neutral",
Notes = RRS("Quest"),
Coordinates = {
{ x = 0.445, y = 0.434 },
},
Recipes = {
{ ID = 19027, Type = RRS("Engineering"), Skill = 250, Cost = 5000 },
},
},
{
Name = RRS("Galley Chief Alunwea"),
Team = "Alliance",
Coordinates = {
{ x = 0.212, y = 0.489 },
},
Recipes = {
},
},
},
},
 
[RRS("Stranglethorn Vale")] = {
IsCity = false,
Continent = 2,
MapFile = "Stranglethorn-Vale",
Vendors = {
{
Name = RRS("Corporal Bluth"),
Team = "Alliance",
Coordinates = {
{ x = 0.38, y = 0.03 },
},
Recipes = {
{ ID = 12231, Type = RRS("Cooking"), Skill = 175, Cost = 3000 },
{ ID = 12228, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
{
Name = RRS("Nerrist"),
Team = "Horde",
Coordinates = {
{ x = 0.324, y = 0.287 },
},
Recipes = {
{ ID = 3682, Type = RRS("Cooking"), Skill = 130, Cost = 1600 },
{ ID = 12231, Type = RRS("Cooking"), Skill = 175, Cost = 3000 },
{ ID = 12228, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21943, Type = RRS("Jewelcrafting"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Uthok"),
Team = "Horde",
Coordinates = {
{ x = 0.314, y = 0.282 },
},
Recipes = {
{ ID = 16111, Type = RRS("Cooking"), Skill = 225, Cost = 12000 },
},
},
{
Name = RRS("Vharr"),
Team = "Horde",
Coordinates = {
{ x = 0.322, y = 0.287 },
},
Recipes = {
{ ID = 12164, Type = RRS("Blacksmithing"), Skill = 185, Cost = 4400 },
},
},
{
Name = RRS("Blixrez Goodstitch"),
Team = "Neutral",
Coordinates = {
{ x = 0.281, y = 0.771 },
},
Recipes = {
{ ID = 5789, Type = RRS("Leatherworking"), Skill = 190, Cost = 2800 },
{ ID = 5788, Type = RRS("Leatherworking"), Skill = 170, Cost = 650 },
},
},
{
Name = RRS("Cowardly Crosby"),
Team = "Neutral",
Coordinates = {
{ x = 0.27, y = 0.825 },
},
Recipes = {
{ ID = 10318, Type = RRS("Tailoring"), Skill = 240, Cost = 7000 },
},
},
{
Name = RRS("Crazk Sparks"),
Team = "Neutral",
Coordinates = {
{ x = 0.283, y = 0.765 },
},
Recipes = {
{ ID = 18648, Type = RRS("Engineering"), Skill = 150, Cost = 1800 },
},
},
{
Name = RRS("Glyx Brewright"),
Team = "Neutral",
Coordinates = {
{ x = 0.281, y = 0.781 },
},
Recipes = {
{ ID = 6056, Type = RRS("Alchemy"), Skill = 190, Cost = 2000 },
{ ID = 6057, Type = RRS("Alchemy"), Skill = 190, Cost = 2000 },
},
},
{
Name = RRS("Gnaz Blunderflame"),
Team = "Neutral",
Coordinates = {
{ x = 0.512, y = 0.352 },
},
Recipes = {
{ ID = 13311, Type = RRS("Engineering"), Skill = 200, Cost = 10000 },
},
},
{
Name = RRS("Jaquilina Dramet"),
Team = "Neutral",
Coordinates = {
{ x = 0.357, y = 0.111 },
},
Recipes = {
{ ID = 12164, Type = RRS("Blacksmithing"), Skill = 185, Cost = 4400 },
},
},
{
Name = RRS("Jutak"),
Team = "Neutral",
Coordinates = {
{ x = 0.273, y = 0.774 },
},
Recipes = {
{ ID = 12162, Type = RRS("Blacksmithing"), Skill = 160, Cost = 3000 },
},
},
{
Name = RRS("Kelsey Yance"),
Team = "Neutral",
Coordinates = {
{ x = 0.282, y = 0.743 },
},
Recipes = {
{ ID = 13940, Type = RRS("Cooking"), Skill = 225, Cost = 16000 },
{ ID = 13941, Type = RRS("Cooking"), Skill = 225, Cost = 16000 },
{ ID = 6039, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 13943, Type = RRS("Cooking"), Skill = 240, Cost = 16000 },
{ ID = 17062, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 6369, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
{
Name = RRS("Knaz Blunderflame"),
Team = "Neutral",
Coordinates = {
{ x = 0.512, y = 0.352 },
},
Recipes = {
{ ID = 10602, Type = RRS("Engineering"), Skill = 210, Cost = 3000 },
},
},
{
Name = RRS("Mazk Snipeshot"),
Team = "Neutral",
Coordinates = {
{ x = 0.285, y = 0.751 },
},
Recipes = {
{ ID = 13310, Type = RRS("Engineering"), Skill = 180, Cost = 2000 },
},
},
{
Name = RRS("Narkk"),
Team = "Neutral",
Coordinates = {
{ x = 0.283, y = 0.742 },
},
Recipes = {
{ ID = 10728, Type = RRS("Tailoring"), Skill = 200, Cost = 1500 },
},
},
{
Name = RRS("Old Man Heming"),
Team = "Neutral",
Coordinates = {
{ x = 0.274, y = 0.772 },
},
Recipes = {
{ ID = 16083, Type = RRS("Fishing"), Skill = 125, Cost = 10000 },
},
},
{
Name = RRS("Rikqiz"),
Team = "Neutral",
Coordinates = {
{ x = 0.283, y = 0.757 },
},
Recipes = {
{ ID = 14635, Type = RRS("Leatherworking"), Skill = 185, Cost = 3000 },
{ ID = 18239, Type = RRS("Leatherworking"), Skill = 200, Cost = 3500 },
},
},
{
Name = RRS("Rin'wosho the Trader"),
Team = "Neutral",
Coordinates = {
{ x = 0.151, y = 0.16 },
},
Recipes = {
{ ID = 20013, Type = RRS("Alchemy"), Skill = 285, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 8 },
{ ID = 20011, Type = RRS("Alchemy"), Skill = 275, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 7 },
{ ID = 20014, Type = RRS("Alchemy"), Skill = 290, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 6 },
{ ID = 20012, Type = RRS("Alchemy"), Skill = 275, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 5 },
{ ID = 19781, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 5 },
{ ID = 19780, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 6 },
{ ID = 19779, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 7 },
{ ID = 19778, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 5 },
{ ID = 19777, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 6 },
{ ID = 19776, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 7 },
{ ID = 20756, Type = RRS("Enchanting"), Skill = 300, Cost = 40000, Faction = RRS("Zandalar Tribe"), Level = 6 },
{ ID = 20001, Type = RRS("Engineering"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 5 },
{ ID = 20000, Type = RRS("Engineering"), Skill = 300, Cost = 120000, Faction = RRS("Zandalar Tribe"), Level = 6 },
{ ID = 19771, Type = RRS("Leatherworking"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 5 },
{ ID = 19773, Type = RRS("Leatherworking"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 6 },
{ ID = 19770, Type = RRS("Leatherworking"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 6 },
{ ID = 19772, Type = RRS("Leatherworking"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 7 },
{ ID = 19769, Type = RRS("Leatherworking"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 7 },
{ ID = 19766, Type = RRS("Tailoring"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 5 },
{ ID = 19765, Type = RRS("Tailoring"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 6 },
{ ID = 19764, Type = RRS("Tailoring"), Skill = 300, Cost = 50000, Faction = RRS("Zandalar Tribe"), Level = 7 },
{ ID = 20757, Type = RRS("Enchanting"), Skill = 300, Cost = 40000, Faction = RRS("Zandalar Tribe"), Level = 5 },
},
},
{
Name = RRS("Xizk Goodstitch"),
Team = "Neutral",
Coordinates = {
{ x = 0.287, y = 0.769 },
},
Recipes = {
{ ID = 7087, Type = RRS("Tailoring"), Skill = 180, Cost = 1200 },
{ ID = 14630, Type = RRS("Tailoring"), Skill = 165, Cost = 1000 },
},
},
{
Name = RRS("Zarena Cromwind"),
Team = "Neutral",
Coordinates = {
{ x = 0.285, y = 0.754 },
},
Recipes = {
{ ID = 12163, Type = RRS("Blacksmithing"), Skill = 180, Cost = 4400 },
},
},
{
Name = RRS("Galley Chief Steelbelly"),
Team = "Neutral",
Coordinates = {
{ x = 0.215, y = 0.692 },
},
Recipes = {
},
},
},
},
 
[RRS("Ashenvale")] = {
IsCity = false,
Continent = 1,
MapFile = "Ashenvale",
Vendors = {
{
Name = RRS("Dalria"),
Team = "Alliance",
Coordinates = {
{ x = 0.351, y = 0.521 },
},
Recipes = {
{ ID = 11101, Type = RRS("Enchanting"), Skill = 140, Cost = 2500 },
{ ID = 11039, Type = RRS("Enchanting"), Skill = 110, Cost = 800 },
{ ID = 20855, Type = RRS("Jewelcrafting"), Skill = 125, Cost = 1500 },
},
},
{
Name = RRS("Harklan Moongrove"),
Team = "Alliance",
Coordinates = {
{ x = 0.51, y = 0.67 },
},
Recipes = {
{ ID = 6054, Type = RRS("Alchemy"), Skill = 135, Cost = 900 },
},
},
{
Name = RRS("Harlown Darkweave"),
Team = "Alliance",
Coordinates = {
{ x = 0.184, y = 0.592 },
},
Recipes = {
{ ID = 7361, Type = RRS("Leatherworking"), Skill = 135, Cost = 1800 },
},
},
{
Name = RRS("Lardan"),
Team = "Alliance",
Coordinates = {
{ x = 0.344, y = 0.493 },
},
Recipes = {
{ ID = 5973, Type = RRS("Leatherworking"), Skill = 170, Cost = 650 },
},
},
{
Name = RRS("Shandrina"),
Team = "Alliance",
Coordinates = {
{ x = 0.495, y = 0.671 },
},
Recipes = {
{ ID = 16072, Type = RRS("Cooking"), Skill = 125, Cost = 10000 },
},
},
{
Name = RRS("Ulthaan"),
Team = "Alliance",
Coordinates = {
{ x = 0.5, y = 0.666 },
},
Recipes = {
{ ID = 3734, Type = RRS("Cooking"), Skill = 110, Cost = 1600 },
{ ID = 5489, Type = RRS("Cooking"), Skill = 110, Cost = 1200 },
},
},
{
Name = RRS("Wik'Tar"),
Team = "Horde",
Coordinates = {
{ x = 0.121, y = 0.34 },
},
Recipes = {
{ ID = 17062, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 6369, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
},
},
},
},
 
[RRS("Duskwood")] = {
IsCity = false,
Continent = 2,
MapFile = "Duskwood",
Vendors = {
{
Name = RRS("Danielle Zipstitch"),
Team = "Alliance",
Coordinates = {
{ x = 0.759, y = 0.456 },
},
Recipes = {
{ ID = 14627, Type = RRS("Tailoring"), Skill = 135, Cost = 800 },
},
},
{
Name = RRS("Sheri Zipstitch"),
Team = "Alliance",
Coordinates = {
{ x = 0.757, y = 0.456 },
},
Recipes = {
{ ID = 6401, Type = RRS("Tailoring"), Skill = 155, Cost = 1100 },
{ ID = 6275, Type = RRS("Tailoring"), Skill = 115, Cost = 800 },
},
},
{
Name = RRS("Bliztik"),
Team = "Neutral",
Coordinates = {
{ x = 0.18, y = 0.543 },
},
Recipes = {
{ ID = 6068, Type = RRS("Alchemy"), Skill = 165, Cost = 1500 },
},
},
{
Name = RRS("Kzixx"),
Team = "Neutral",
Coordinates = {
{ x = 0.811, y = 0.205 },
},
Recipes = {
{ ID = 6053, Type = RRS("Alchemy"), Skill = 100, Cost = 800 },
{ ID = 7561, Type = RRS("Engineering"), Skill = 165, Cost = 2000 },
},
},
},
},
 
[RRS("Westfall")] = {
IsCity = false,
Continent = 2,
MapFile = "Westfall",
Vendors = {
{
Name = RRS("Defias Profiteer"),
Team = "Neutral",
Coordinates = {
{ x = 0.436, y = 0.677 },
},
Recipes = {
{ ID = 5640, Type = RRS("Alchemy"), Skill = 60, Cost = 100 },
},
},
{
Name = RRS("Gina MacGregor"),
Team = "Alliance",
Coordinates = {
{ x = 0.572, y = 0.54 },
},
Recipes = {
{ ID = 5786, Type = RRS("Leatherworking"), Skill = 90, Cost = 550 },
{ ID = 5787, Type = RRS("Leatherworking"), Skill = 95, Cost = 600 },
{ ID = 6274, Type = RRS("Tailoring"), Skill = 100, Cost = 400 },
{ ID = 5771, Type = RRS("Tailoring"), Skill = 70, Cost = 200 },
},
},
{
Name = RRS("Kriggon Talsone"),
Team = "Alliance",
Coordinates = {
{ x = 0.365, y = 0.891 },
},
Recipes = {
{ ID = 5528, Type = RRS("Cooking"), Skill = 90, Cost = 800 },
{ ID = 6368, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 6326, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
{ ID = 16111, Type = RRS("Cooking"), Skill = 225, Cost = 12000 },
},
},
},
},
 
[RRS("Loch Modan")] = {
IsCity = false,
Continent = 2,
MapFile = "Loch-Modan",
Vendors = {
{
Name = RRS("Drac Roughcut"),
Team = "Alliance",
Coordinates = {
{ x = 0.356, y = 0.491 },
},
Recipes = {
{ ID = 6892, Type = RRS("Cooking"), Skill = 40, Cost = 250 },
},
},
{
Name = RRS("Rann Flamespinner"),
Team = "Alliance",
Coordinates = {
{ x = 0.359, y = 0.46 },
},
Recipes = {
{ ID = 6275, Type = RRS("Tailoring"), Skill = 115, Cost = 800 },
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
},
},
{
Name = RRS("Khara Deepwater"),
Team = "Alliance",
Coordinates = {
{ x = 0.402, y = 0.393 },
},
Recipes = {
{ ID = 6325, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
{ ID = 6329, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 6328, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
},
},
{
Name = RRS("Xandar Goodbeard"),
Team = "Alliance",
Coordinates = {
{ x = 0.826, y = 0.633 },
},
Recipes = {
{ ID = 6053, Type = RRS("Alchemy"), Skill = 100, Cost = 800 },
{ ID = 5640, Type = RRS("Alchemy"), Skill = 60, Cost = 100 },
},
},
},
},
 
[RRS("Elwynn Forest")] = {
IsCity = false,
Continent = 2,
MapFile = "Elwynn-Forest",
Vendors = {
{
Name = RRS("Drake Lindgren"),
Team = "Alliance",
Coordinates = {
{ x = 0.833, y = 0.667 },
},
Recipes = {
{ ID = 6272, Type = RRS("Tailoring"), Skill = 70, Cost = 300 },
},
},
{
Name = RRS("Tharynn Bouden"),
Team = "Alliance",
Coordinates = {
{ x = 0.418, y = 0.672 },
},
Recipes = {
{ ID = 6270, Type = RRS("Tailoring"), Skill = 55, Cost = 200 },
{ ID = 6325, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
{ ID = 6328, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
},
},
},
},
 
[RRS("Darnassus")] = {
IsCity = true,
Continent = 1,
MapFile = "Darnassus",
Vendors = {
{
Name = RRS("Elynna"),
Team = "Alliance",
Coordinates = {
{ x = 0.643, y = 0.217 },
},
Recipes = {
{ ID = 6272, Type = RRS("Tailoring"), Skill = 70, Cost = 300 },
{ ID = 6275, Type = RRS("Tailoring"), Skill = 115, Cost = 800 },
{ ID = 10311, Type = RRS("Tailoring"), Skill = 220, Cost = 3000 },
},
},
{
Name = RRS("Mythrin'dir"),
Team = "Alliance",
Coordinates = {
{ x = 0.587, y = 0.19 },
},
Recipes = {
{ ID = 11223, Type = RRS("Enchanting"), Skill = 235, Cost = 5800 },
{ ID = 16217, Type = RRS("Enchanting"), Skill = 265, Cost = 12000 },
{ ID = 20854, Type = RRS("Jewelcrafting"), Skill = 110, Cost = 1800 },
},
},
{
Name = RRS("Saenorion"),
Team = "Alliance",
Coordinates = {
{ x = 0.633, y = 0.223 },
},
Recipes = {
{ ID = 18949, Type = RRS("Leatherworking"), Skill = 155, Cost = 2000 },
{ ID = 7451, Type = RRS("Leatherworking"), Skill = 190, Cost = 2800 },
},
},
{
Name = RRS("Ulthir"),
Team = "Alliance",
Coordinates = {
{ x = 0.555, y = 0.231 },
},
Recipes = {
{ ID = 5642, Type = RRS("Alchemy"), Skill = 150, Cost = 1800 },
{ ID = 5643, Type = RRS("Alchemy"), Skill = 175, Cost = 2000 },
},
},
{
Name = RRS("Vaean"),
Team = "Alliance",
Coordinates = {
{ x = 0.58, y = 0.15 },
},
Recipes = {
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Fyldan"),
Team = "Alliance",
Coordinates = {
{ x = 0.48, y = 0.211 },
},
Recipes = {
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
},
},
},
},
 
[RRS("Wetlands")] = {
IsCity = false,
Continent = 2,
MapFile = "Wetlands",
Vendors = {
{
Name = RRS("Fradd Swiftgear"),
Team = "Alliance",
Coordinates = {
{ x = 0.26, y = 0.255 },
},
Recipes = {
{ ID = 13309, Type = RRS("Engineering"), Skill = 120, Cost = 1000 },
{ ID = 14639, Type = RRS("Engineering"), Skill = 140, Cost = 1500 },
},
},
{
Name = RRS("Jennabink Powerseam"),
Team = "Alliance",
Coordinates = {
{ x = 0.081, y = 0.558 },
},
Recipes = {
{ ID = 6275, Type = RRS("Tailoring"), Skill = 115, Cost = 800 },
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
},
},
{
Name = RRS("Stuart Fleming"),
Team = "Alliance",
Coordinates = {
{ x = 0.082, y = 0.584 },
},
Recipes = {
{ ID = 17062, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 6368, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 6369, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
},
},
{
Name = RRS("Wenna Silkbeard"),
Team = "Alliance",
Coordinates = {
{ x = 0.258, y = 0.255 },
},
Recipes = {
{ ID = 7613, Type = RRS("Leatherworking"), Skill = 155, Cost = 2000 },
{ ID = 7290, Type = RRS("Leatherworking"), Skill = 120, Cost = 1600 },
{ ID = 7114, Type = RRS("Tailoring"), Skill = 145, Cost = 1000 },
},
},
{
Name = RRS("Neal Allen"),
Team = "Alliance",
Coordinates = {
{ x = 0.107, y = 0.568 },
},
Recipes = {
{ ID = 20970, Type = RRS("Jewelcrafting"), Skill = 120, Cost = 1500 },
},
},
{
Name = RRS("Galley Chief Grace"),
Team = "Alliance",
Coordinates = {
{ x = 0.005, y = 0.601 },
},
Recipes = {
},
},
},
},
 
[RRS("The Hinterlands")] = {
IsCity = false,
Continent = 2,
MapFile = "The-Hinterlands",
Vendors = {
{
Name = RRS("Gigget Zipcoil"),
Team = "Neutral",
Coordinates = {
{ x = 0.346, y = 0.39 },
},
Recipes = {
{ ID = 15735, Type = RRS("Leatherworking"), Skill = 270, Cost = 14000 },
},
},
{
Name = RRS("Harggan"),
Team = "Alliance",
Coordinates = {
{ x = 0.135, y = 0.446 },
},
Recipes = {
{ ID = 7995, Type = RRS("Blacksmithing"), Skill = 215, Cost = 6000 },
},
},
{
Name = RRS("Nioma"),
Team = "Alliance",
Coordinates = {
{ x = 0.133, y = 0.434 },
},
Recipes = {
{ ID = 8409, Type = RRS("Leatherworking"), Skill = 210, Cost = 4000 },
},
},
{
Name = RRS("Ruppo Zipcoil"),
Team = "Neutral",
Coordinates = {
{ x = 0.344, y = 0.375 },
},
Recipes = {
{ ID = 10609, Type = RRS("Engineering"), Skill = 250, Cost = 4000 },
},
},
{
Name = RRS("Truk Wildbeard"),
Team = "Alliance",
Coordinates = {
{ x = 0.144, y = 0.423 },
},
Recipes = {
{ ID = 18046, Type = RRS("Cooking"), Skill = 225, Cost = 12000 },
},
},
{
Name = RRS("Otho Moji'ko"),
Team = "Horde",
Coordinates = {
{ x = 0.795, y = 0.795 },
},
Recipes = {
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
},
},
 
[RRS("Dun Morogh")] = {
IsCity = false,
Continent = 2,
MapFile = "Dun-Morogh",
Vendors = {
{
Name = RRS("Gretta Ganter"),
Team = "Alliance",
Coordinates = {
{ x = 0.314, y = 0.443 },
},
Recipes = {
{ ID = 6325, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
},
},
{
Name = RRS("High Admiral \"Shelly\" Jorrik"),
Team = "Neutral",
Coordinates = {
{ x = 0.109, y = 0.761 },
},
Recipes = {
{ ID = 10858, Type = RRS("Blacksmithing"), Skill = 155, Cost = 3000 },
},
},
},
},
 
[RRS("Darkshore")] = {
IsCity = false,
Continent = 1,
MapFile = "Darkshore",
Vendors = {
{
Name = RRS("Heldan Galesong"),
Team = "Alliance",
Coordinates = {
{ x = 0.37, y = 0.563 },
},
Recipes = {
{ ID = 5528, Type = RRS("Cooking"), Skill = 90, Cost = 800 },
{ ID = 17062, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 6368, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 6369, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
},
},
{
Name = RRS("Laird"),
Team = "Alliance",
Coordinates = {
{ x = 0.368, y = 0.443 },
},
Recipes = {
{ ID = 5485, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
},
},
{
Name = RRS("Mavralyn"),
Team = "Alliance",
Coordinates = {
{ x = 0.37, y = 0.412 },
},
Recipes = {
{ ID = 5786, Type = RRS("Leatherworking"), Skill = 90, Cost = 550 },
{ ID = 5787, Type = RRS("Leatherworking"), Skill = 95, Cost = 600 },
},
},
{
Name = RRS("Valdaron"),
Team = "Alliance",
Coordinates = {
{ x = 0.381, y = 0.406 },
},
Recipes = {
{ ID = 6270, Type = RRS("Tailoring"), Skill = 55, Cost = 200 },
{ ID = 5771, Type = RRS("Tailoring"), Skill = 70, Cost = 200 },
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
},
},
{
Name = RRS("Harlon Thornguard"),
Team = "Alliance",
Coordinates = {
{ x = 0.377, y = 0.408 },
},
Recipes = {
},
},
{
Name = RRS("Galley Chief Gathers"),
Team = "Alliance",
Coordinates = {
{ x = 0.282, y = 0.501 },
},
Recipes = {
},
},
{
Name = RRS("Galley Chief Halumvorea"),
Team = "Alliance",
Coordinates = {
{ x = 0.303, y = 0.423 },
},
Recipes = {
},
},
{
Name = RRS("Galley Chief Mariss"),
Team = "Alliance",
Coordinates = {
{ x = 0.292, y = 0.196 },
},
Recipes = {
},
},
},
},
 
[RRS("Dustwallow Marsh")] = {
IsCity = false,
Continent = 1,
MapFile = "Dustwallow-Marsh",
Vendors = {
{
Name = RRS("Helenia Olden"),
Team = "Alliance",
Coordinates = {
{ x = 0.664, y = 0.515 },
},
Recipes = {
{ ID = 5789, Type = RRS("Leatherworking"), Skill = 190, Cost = 2800 },
{ ID = 12239, Type = RRS("Cooking"), Skill = 200, Cost = 7000 },
{ ID = 12233, Type = RRS("Cooking"), Skill = 175, Cost = 3000 },
{ ID = 12228, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21943, Type = RRS("Jewelcrafting"), Skill = 225, Cost = 6000 },
{ ID = 21941, Type = RRS("Jewelcrafting"), Skill = 215, Cost = 5000 },
},
},
{
Name = RRS("Balai Lok'Wein"),
Team = "Horde",
Coordinates = {
{ x = 0.361, y = 0.308 },
},
Recipes = {
{ ID = 16084, Type = RRS("First Aid"), Skill = 125, Cost = 10000 },
{ ID = 16112, Type = RRS("First Aid"), Skill = 180, Cost = 2200 },
{ ID = 16113, Type = RRS("First Aid"), Skill = 210, Cost = 5000 },
},
},
{
Name = RRS("Ghok'kah"),
Team = "Horde",
Coordinates = {
{ x = 0.355, y = 0.311 },
},
Recipes = {
{ ID = 4355, Type = RRS("Tailoring"), Skill = 200, Cost = 1500 },
},
},
{
Name = RRS("Ogg'marr"),
Team = "Horde",
Coordinates = {
{ x = 0.359, y = 0.308 },
},
Recipes = {
{ ID = 12232, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 12239, Type = RRS("Cooking"), Skill = 200, Cost = 7000 },
{ ID = 20075, Type = RRS("Cooking"), Skill = 150, Cost = 2000 },
{ ID = 12228, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
},
},
 
[RRS("Desolace")] = {
IsCity = false,
Continent = 1,
MapFile = "Desolace",
Vendors = {
{
Name = RRS("Janet Hommers"),
Team = "Alliance",
Coordinates = {
{ x = 0.662, y = 0.066 },
},
Recipes = {
{ ID = 12240, Type = RRS("Cooking"), Skill = 200, Cost = 7000 },
{ ID = 12233, Type = RRS("Cooking"), Skill = 175, Cost = 3000 },
},
},
{
Name = RRS("Kireena"),
Team = "Horde",
Coordinates = {
{ x = 0.51, y = 0.535 },
},
Recipes = {
{ ID = 7114, Type = RRS("Tailoring"), Skill = 145, Cost = 1000 },
{ ID = 12232, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 12240, Type = RRS("Cooking"), Skill = 200, Cost = 7000 },
{ ID = 20973, Type = RRS("Jewelcrafting"), Skill = 150, Cost = 2000 },
},
},
{
Name = RRS("Muuran"),
Team = "Horde",
Coordinates = {
{ x = 0.555, y = 0.563 },
},
Recipes = {
{ ID = 10858, Type = RRS("Blacksmithing"), Skill = 155, Cost = 3000 },
},
},
{
Name = RRS("Wulan"),
Team = "Horde",
Coordinates = {
{ x = 0.266, y = 0.698 },
},
Recipes = {
{ ID = 16072, Type = RRS("Cooking"), Skill = 125, Cost = 10000 },
{ ID = 17062, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 6369, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
{
Name = RRS("Super-Seller 680"),
Team = "Neutral",
Notes = RRS("Intermittent"),
Coordinates = {
{ x = 0.405, y = 0.793 },
},
Recipes = {
{ ID = 4609, Type = RRS("Cooking"), Skill = 175, Cost = 1000 },
{ ID = 3734, Type = RRS("Cooking"), Skill = 110, Cost = 1600 },
{ ID = 12239, Type = RRS("Cooking"), Skill = 200, Cost = 7000 },
{ ID = 12229, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 12227, Type = RRS("Cooking"), Skill = 125, Cost = 1600 },
{ ID = 12233, Type = RRS("Cooking"), Skill = 175, Cost = 3000 },
},
},
{
Name = RRS("Vendor-Tron 1000"),
Team = "Neutral",
Notes = RRS("Intermittent"),
Coordinates = {
{ x = 0.605, y = 0.378 },
},
Recipes = {
{ ID = 12232, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 12240, Type = RRS("Cooking"), Skill = 200, Cost = 7000 },
{ ID = 3735, Type = RRS("Cooking"), Skill = 125, Cost = 1800 },
{ ID = 12231, Type = RRS("Cooking"), Skill = 175, Cost = 3000 },
{ ID = 5489, Type = RRS("Cooking"), Skill = 110, Cost = 1200 },
{ ID = 12228, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
},
},
 
[RRS("Western Plaguelands")] = {
IsCity = false,
Continent = 2,
MapFile = "Western-Plaguelands",
Vendors = {
{
Name = RRS("Leonard Porter"),
Team = "Alliance",
Coordinates = {
{ x = 0.431, y = 0.843 },
},
Recipes = {
{ ID = 15741, Type = RRS("Leatherworking"), Skill = 275, Cost = 16000 },
{ ID = 15725, Type = RRS("Leatherworking"), Skill = 260, Cost = 12000 },
},
},
{
Name = RRS("Argent Quartermaster Lightspark"),
Team = "Neutral",
Coordinates = {
{ x = 0.428, y = 0.837 },
},
Recipes = {
{ ID = 13482, Type = RRS("Alchemy"), Skill = 275, Cost = 15000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19203, Type = RRS("Blacksmithing"), Skill = 290, Cost = 22000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19205, Type = RRS("Blacksmithing"), Skill = 300, Cost = 40000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19447, Type = RRS("Enchanting"), Skill = 300, Cost = 60000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19446, Type = RRS("Enchanting"), Skill = 290, Cost = 30000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19328, Type = RRS("Leatherworking"), Skill = 290, Cost = 22000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19329, Type = RRS("Leatherworking"), Skill = 300, Cost = 40000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19216, Type = RRS("Tailoring"), Skill = 290, Cost = 22000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19217, Type = RRS("Tailoring"), Skill = 300, Cost = 40000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19442, Type = RRS("First Aid"), Skill = 300, Cost = 100000, Faction = RRS("Argent Dawn"), Level = 6 },
},
},
{
Name = RRS("Magnus Frostwake"),
Team = "Neutral",
Notes = RRS("Quest"),
Coordinates = {
{ x = 0.681, y = 0.775 },
},
Recipes = {
{ ID = 13501, Type = RRS("Alchemy"), Skill = 295, Cost = 30000 },
{ ID = 13485, Type = RRS("Alchemy"), Skill = 275, Cost = 15000 },
{ ID = 8030, Type = RRS("Blacksmithing"), Skill = 255, Cost = 10000 },
{ ID = 12823, Type = RRS("Blacksmithing"), Skill = 280, Cost = 20000 },
{ ID = 12819, Type = RRS("Blacksmithing"), Skill = 275, Cost = 16000 },
{ ID = 12703, Type = RRS("Blacksmithing"), Skill = 295, Cost = 40000 },
},
},
},
},
 
[RRS("Hillsbrad Foothills")] = {
IsCity = false,
Continent = 2,
MapFile = "Hillsbrad-Foothills",
Vendors = {
{
Name = RRS("Lindea Rabonne"),
Team = "Alliance",
Coordinates = {
{ x = 0.506, y = 0.609 },
},
Recipes = {
{ ID = 6330, Type = RRS("Cooking"), Skill = 100, Cost = 1200 },
{ ID = 17062, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 6369, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
},
},
{
Name = RRS("Micha Yance"),
Team = "Alliance",
Coordinates = {
{ x = 0.489, y = 0.55 },
},
Recipes = {
{ ID = 11163, Type = RRS("Enchanting"), Skill = 170, Cost = 3000 },
{ ID = 5788, Type = RRS("Leatherworking"), Skill = 170, Cost = 650 },
{ ID = 4355, Type = RRS("Tailoring"), Skill = 200, Cost = 1500 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 20971, Type = RRS("Jewelcrafting"), Skill = 125, Cost = 1500 },
{ ID = 20973, Type = RRS("Jewelcrafting"), Skill = 150, Cost = 2000 },
},
},
{
Name = RRS("Nandar Branson"),
Team = "Alliance",
Coordinates = {
{ x = 0.509, y = 0.571 },
},
Recipes = {
{ ID = 6055, Type = RRS("Alchemy"), Skill = 165, Cost = 1500 },
},
},
{
Name = RRS("Christoph Jeffcoat"),
Team = "Horde",
Coordinates = {
{ x = 0.625, y = 0.191 },
},
Recipes = {
{ ID = 6054, Type = RRS("Alchemy"), Skill = 135, Cost = 900 },
{ ID = 5788, Type = RRS("Leatherworking"), Skill = 170, Cost = 650 },
{ ID = 20971, Type = RRS("Jewelcrafting"), Skill = 125, Cost = 1500 },
},
},
{
Name = RRS("Derak Nightfall"),
Team = "Horde",
Coordinates = {
{ x = 0.623, y = 0.196 },
},
Recipes = {
{ ID = 6330, Type = RRS("Cooking"), Skill = 100, Cost = 1200 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
{
Name = RRS("George Candarte"),
Team = "Horde",
Coordinates = {
{ x = 0.914, y = 0.39 },
},
Recipes = {
{ ID = 7613, Type = RRS("Leatherworking"), Skill = 155, Cost = 2000 },
},
},
{
Name = RRS("Mallen Swain"),
Team = "Horde",
Coordinates = {
{ x = 0.617, y = 0.214 },
},
Recipes = {
{ ID = 6274, Type = RRS("Tailoring"), Skill = 100, Cost = 400 },
{ ID = 6401, Type = RRS("Tailoring"), Skill = 155, Cost = 1100 },
},
},
{
Name = RRS("Zixil"),
Team = "Neutral",
Notes = RRS("Roving"),
Coordinates = {
{ x = 0.609, y = 0.205 },
{ x = 0.555, y = 0.194 },
{ x = 0.559, y = 0.296 },
{ x = 0.514, y = 0.393 },
{ x = 0.506, y = 0.499 },
},
Recipes = {
{ ID = 6377, Type = RRS("Enchanting"), Skill = 125, Cost = 1000 },
{ ID = 7561, Type = RRS("Engineering"), Skill = 165, Cost = 2000 },
{ ID = 7362, Type = RRS("Leatherworking"), Skill = 135, Cost = 2000 },
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
},
},
},
},
 
[RRS("Felwood")] = {
IsCity = false,
Continent = 1,
MapFile = "Felwood",
Vendors = {
{
Name = RRS("Malygen"),
Team = "Alliance",
Coordinates = {
{ x = 0.623, y = 0.256 },
},
Recipes = {
{ ID = 16110, Type = RRS("Cooking"), Skill = 225, Cost = 12000 },
{ ID = 35564, Type = RRS("Cooking"), Skill = 250, Cost = 18000 },
{ ID = 35566, Type = RRS("Cooking"), Skill = 250, Cost = 18000 },
},
},
{
Name = RRS("Bale"),
Team = "Horde",
Coordinates = {
{ x = 0.348, y = 0.528 },
},
Recipes = {
{ ID = 16110, Type = RRS("Cooking"), Skill = 225, Cost = 12000 },
{ ID = 35564, Type = RRS("Cooking"), Skill = 250, Cost = 18000 },
{ ID = 35566, Type = RRS("Cooking"), Skill = 250, Cost = 18000 },
},
},
{
Name = RRS("Meilosh"),
Team = "Neutral",
Coordinates = {
{ x = 0.66, y = 0.028 },
},
Recipes = {
{ ID = 13484, Type = RRS("Alchemy"), Skill = 275, Cost = 15000, Faction = RRS("Timbermaw Hold"), Level = 5 },
{ ID = 19202, Type = RRS("Blacksmithing"), Skill = 290, Cost = 22000, Faction = RRS("Timbermaw Hold"), Level = 6 },
{ ID = 19204, Type = RRS("Blacksmithing"), Skill = 300, Cost = 40000, Faction = RRS("Timbermaw Hold"), Level = 7 },
{ ID = 19445, Type = RRS("Enchanting"), Skill = 290, Cost = 30000, Faction = RRS("Timbermaw Hold"), Level = 6 },
{ ID = 19326, Type = RRS("Leatherworking"), Skill = 290, Cost = 22000, Faction = RRS("Timbermaw Hold"), Level = 6 },
{ ID = 19327, Type = RRS("Leatherworking"), Skill = 300, Cost = 40000, Faction = RRS("Timbermaw Hold"), Level = 7 },
{ ID = 20253, Type = RRS("Leatherworking"), Skill = 275, Cost = 16000, Faction = RRS("Timbermaw Hold"), Level = 5 },
{ ID = 20254, Type = RRS("Leatherworking"), Skill = 285, Cost = 20000, Faction = RRS("Timbermaw Hold"), Level = 5 },
{ ID = 19215, Type = RRS("Tailoring"), Skill = 290, Cost = 22000, Faction = RRS("Timbermaw Hold"), Level = 6 },
{ ID = 19218, Type = RRS("Tailoring"), Skill = 300, Cost = 40000, Faction = RRS("Timbermaw Hold"), Level = 7 },
{ ID = 22392, Type = RRS("Enchanting"), Skill = 290, Cost = 25000, Faction = RRS("Timbermaw Hold"), Level = 5 },
},
},
},
},
 
[RRS("Gnomeregan")] = {
IsCity = false,
Continent = 0,
MapFile = "Gnomeregan",
Vendors = {
{
Name = RRS("Namdo Bizzfizzle"),
Team = "Alliance",
Recipes = {
},
},
},
},
 
[RRS("Teldrassil")] = {
IsCity = false,
Continent = 1,
MapFile = "Teldrassil",
Vendors = {
{
Name = RRS("Nessa Shadowsong"),
Team = "Alliance",
Coordinates = {
{ x = 0.562, y = 0.924 },
},
Recipes = {
{ ID = 6368, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 6326, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
},
},
{
Name = RRS("Nyoma"),
Team = "Alliance",
Coordinates = {
{ x = 0.572, y = 0.612 },
},
Recipes = {
{ ID = 6325, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
{ ID = 6328, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
},
},
 
[RRS("Blasted Lands")] = {
IsCity = false,
Continent = 2,
MapFile = "Blasted-Lands",
Vendors = {
{
Name = RRS("Nina Lightbrew"),
Team = "Alliance",
Coordinates = {
{ x = 0.668, y = 0.182 },
},
Recipes = {
{ ID = 9300, Type = RRS("Alchemy"), Skill = 250, Cost = 10000 },
},
},
},
},
 
[RRS("Tirisfal Glades")] = {
IsCity = false,
Continent = 2,
MapFile = "Tirisfal-Glades",
Vendors = {
{
Name = RRS("Abigail Shiel"),
Team = "Horde",
Coordinates = {
{ x = 0.61, y = 0.524 },
},
Recipes = {
{ ID = 12226, Type = RRS("Cooking"), Skill = 1, Cost = 25 },
},
},
{
Name = RRS("Constance Brisboise"),
Team = "Horde",
Coordinates = {
{ x = 0.523, y = 0.554 },
},
Recipes = {
{ ID = 6270, Type = RRS("Tailoring"), Skill = 55, Cost = 200 },
},
},
{
Name = RRS("Martine Tramblay"),
Team = "Horde",
Coordinates = {
{ x = 0.662, y = 0.592 },
},
Recipes = {
{ ID = 6325, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
{ ID = 6326, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
},
},
{
Name = RRS("Werg Thickblade"),
Team = "Horde",
Coordinates = {
{ x = 0.833, y = 0.697 },
},
Recipes = {
{ ID = 15741, Type = RRS("Leatherworking"), Skill = 275, Cost = 16000 },
{ ID = 15725, Type = RRS("Leatherworking"), Skill = 260, Cost = 12000 },
},
},
{
Name = RRS("Argent Quartermaster Hasana"),
Team = "Neutral",
Coordinates = {
{ x = 0.832, y = 0.68 },
},
Recipes = {
{ ID = 13482, Type = RRS("Alchemy"), Skill = 275, Cost = 15000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19203, Type = RRS("Blacksmithing"), Skill = 290, Cost = 22000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19205, Type = RRS("Blacksmithing"), Skill = 300, Cost = 40000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19447, Type = RRS("Enchanting"), Skill = 300, Cost = 60000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19446, Type = RRS("Enchanting"), Skill = 290, Cost = 30000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19328, Type = RRS("Leatherworking"), Skill = 290, Cost = 22000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19329, Type = RRS("Leatherworking"), Skill = 300, Cost = 40000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19216, Type = RRS("Tailoring"), Skill = 290, Cost = 22000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19217, Type = RRS("Tailoring"), Skill = 300, Cost = 40000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19442, Type = RRS("First Aid"), Skill = 300, Cost = 100000, Faction = RRS("Argent Dawn"), Level = 6 },
},
},
},
},
 
[RRS("Undercity")] = {
IsCity = true,
Continent = 2,
MapFile = "Undercity",
Vendors = {
{
Name = RRS("Algernon"),
Team = "Horde",
Coordinates = {
{ x = 0.523, y = 0.752 },
},
Recipes = {
{ ID = 9301, Type = RRS("Alchemy"), Skill = 250, Cost = 10000 },
},
},
{
Name = RRS("Daniel Bartlett"),
Team = "Horde",
Coordinates = {
{ x = 0.639, y = 0.369 },
},
Recipes = {
{ ID = 16217, Type = RRS("Enchanting"), Skill = 265, Cost = 12000 },
{ ID = 20854, Type = RRS("Jewelcrafting"), Skill = 110, Cost = 1800 },
},
},
{
Name = RRS("Joseph Moore"),
Team = "Horde",
Coordinates = {
{ x = 0.707, y = 0.578 },
},
Recipes = {
{ ID = 18949, Type = RRS("Leatherworking"), Skill = 155, Cost = 2000 },
{ ID = 7451, Type = RRS("Leatherworking"), Skill = 190, Cost = 2800 },
},
},
{
Name = RRS("Lizbeth Cromwell"),
Team = "Horde",
Coordinates = {
{ x = 0.793, y = 0.31 },
},
Recipes = {
{ ID = 6325, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
{ ID = 6328, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 6369, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 17062, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
},
},
{
Name = RRS("Millie Gregorian"),
Team = "Horde",
Coordinates = {
{ x = 0.707, y = 0.307 },
},
Recipes = {
{ ID = 6275, Type = RRS("Tailoring"), Skill = 115, Cost = 800 },
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
{ ID = 10326, Type = RRS("Tailoring"), Skill = 250, Cost = 5000 },
{ ID = 10323, Type = RRS("Tailoring"), Skill = 245, Cost = 4500 },
{ ID = 10321, Type = RRS("Tailoring"), Skill = 240, Cost = 4500 },
},
},
{
Name = RRS("Ronald Burch"),
Team = "Horde",
Coordinates = {
{ x = 0.623, y = 0.43 },
},
Recipes = {
{ ID = 6330, Type = RRS("Cooking"), Skill = 100, Cost = 1200 },
{ ID = 6368, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
{
Name = RRS("Thaddeus Webb"),
Team = "Horde",
Coordinates = {
{ x = 0.62, y = 0.61 },
},
Recipes = {
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Nardstrum Copperpinch"),
Team = "Horde",
Notes = RRS("Seasonal: 12"),
Coordinates = {
{ x = 0.673, y = 0.383 },
},
Recipes = {
{ ID = 17201, Type = RRS("Cooking"), Skill = 35, Cost = 240 },
{ ID = 17200, Type = RRS("Cooking"), Skill = 1, Cost = 25 },
},
},
{
Name = RRS("Felicia Doan"),
Team = "Horde",
Coordinates = {
{ x = 0.633, y = 0.489 },
},
Recipes = {
{ ID = 20975, Type = RRS("Jewelcrafting"), Skill = 170, Cost = 2500 },
},
},
},
},
 
[RRS("Silverpine Forest")] = {
IsCity = false,
Continent = 2,
MapFile = "Silverpine-Forest",
Vendors = {
{
Name = RRS("Andrew Hilbert"),
Team = "Horde",
Coordinates = {
{ x = 0.432, y = 0.407 },
},
Recipes = {
{ ID = 5786, Type = RRS("Leatherworking"), Skill = 90, Cost = 550 },
{ ID = 5787, Type = RRS("Leatherworking"), Skill = 95, Cost = 600 },
{ ID = 6272, Type = RRS("Tailoring"), Skill = 70, Cost = 300 },
{ ID = 5771, Type = RRS("Tailoring"), Skill = 70, Cost = 200 },
{ ID = 6892, Type = RRS("Cooking"), Skill = 40, Cost = 250 },
},
},
{
Name = RRS("Killian Sanatha"),
Team = "Horde",
Coordinates = {
{ x = 0.33, y = 0.176 },
},
Recipes = {
{ ID = 6328, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 6368, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
},
},
{
Name = RRS("Leo Sarn"),
Team = "Horde",
Coordinates = {
{ x = 0.541, y = 0.821 },
},
Recipes = {
{ ID = 6349, Type = RRS("Enchanting"), Skill = 100, Cost = 500 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Lilly"),
Team = "Horde",
Coordinates = {
{ x = 0.428, y = 0.504 },
},
Recipes = {
{ ID = 6346, Type = RRS("Enchanting"), Skill = 80, Cost = 400 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
},
},
 
[RRS("Swamp of Sorrows")] = {
IsCity = false,
Continent = 2,
MapFile = "Swamp-of-Sorrows",
Vendors = {
{
Name = RRS("Banalash"),
Team = "Horde",
Coordinates = {
{ x = 0.447, y = 0.572 },
},
Recipes = {
{ ID = 11223, Type = RRS("Enchanting"), Skill = 235, Cost = 5800 },
{ ID = 12232, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 16111, Type = RRS("Cooking"), Skill = 225, Cost = 12000 },
{ ID = 21941, Type = RRS("Jewelcrafting"), Skill = 215, Cost = 5000 },
},
},
{
Name = RRS("Gharash"),
Team = "Horde",
Coordinates = {
{ x = 0.457, y = 0.519 },
},
Recipes = {
{ ID = 7995, Type = RRS("Blacksmithing"), Skill = 215, Cost = 6000 },
},
},
{
Name = RRS("Rartar"),
Team = "Horde",
Coordinates = {
{ x = 0.449, y = 0.559 },
},
Recipes = {
{ ID = 9300, Type = RRS("Alchemy"), Skill = 250, Cost = 10000 },
},
},
{
Name = RRS("Masat T'andr"),
Team = "Neutral",
Coordinates = {
{ x = 0.254, y = 0.314 },
},
Recipes = {
{ ID = 15726, Type = RRS("Leatherworking"), Skill = 260, Cost = 12000 },
},
},
},
},
 
[RRS("Orgrimmar")] = {
IsCity = true,
Continent = 1,
MapFile = "Orgrimmar",
Vendors = {
{
Name = RRS("Borya"),
Team = "Horde",
Coordinates = {
{ x = 0.631, y = 0.515 },
},
Recipes = {
{ ID = 6270, Type = RRS("Tailoring"), Skill = 55, Cost = 200 },
{ ID = 6274, Type = RRS("Tailoring"), Skill = 100, Cost = 400 },
{ ID = 10314, Type = RRS("Tailoring"), Skill = 230, Cost = 4000 },
{ ID = 10317, Type = RRS("Tailoring"), Skill = 235, Cost = 4000 },
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
},
},
{
Name = RRS("Hagrus"),
Team = "Horde",
Coordinates = {
{ x = 0.457, y = 0.457 },
},
Recipes = {
{ ID = 5643, Type = RRS("Alchemy"), Skill = 175, Cost = 2000 },
{ ID = 5640, Type = RRS("Alchemy"), Skill = 60, Cost = 100 },
},
},
{
Name = RRS("Kithas"),
Team = "Horde",
Coordinates = {
{ x = 0.539, y = 0.38 },
},
Recipes = {
{ ID = 6349, Type = RRS("Enchanting"), Skill = 100, Cost = 500 },
{ ID = 6346, Type = RRS("Enchanting"), Skill = 80, Cost = 400 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Kor'geld"),
Team = "Horde",
Coordinates = {
{ x = 0.561, y = 0.341 },
},
Recipes = {
{ ID = 13478, Type = RRS("Alchemy"), Skill = 265, Cost = 13000 },
{ ID = 5642, Type = RRS("Alchemy"), Skill = 150, Cost = 1800 },
},
},
{
Name = RRS("Penney Copperpinch"),
Team = "Neutral",
Notes = RRS("Seasonal: 12"),
Coordinates = {
{ x = 0.529, y = 0.657 },
},
Recipes = {
{ ID = 17201, Type = RRS("Cooking"), Skill = 35, Cost = 240 },
{ ID = 17200, Type = RRS("Cooking"), Skill = 1, Cost = 25 },
{ ID = 34413, Type = RRS("Cooking"), Skill = 325, Cost = 10000 },
{ ID = 34262, Type = RRS("Leatherworking"), Skill = 285, Cost = 5000 },
{ ID = 34261, Type = RRS("Tailoring"), Skill = 250, Cost = 5000 },
},
},
{
Name = RRS("Shankys"),
Team = "Horde",
Coordinates = {
{ x = 0.691, y = 0.314 },
},
Recipes = {
{ ID = 17062, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
{ ID = 6368, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 6369, Type = RRS("Cooking"), Skill = 175, Cost = 2200 },
},
},
{
Name = RRS("Sovik"),
Team = "Horde",
Coordinates = {
{ x = 0.752, y = 0.246 },
},
Recipes = {
{ ID = 18647, Type = RRS("Engineering"), Skill = 150, Cost = 1800 },
{ ID = 22729, Type = RRS("Engineering"), Skill = 275, Cost = 8000 },
},
},
{
Name = RRS("Sumi"),
Team = "Horde",
Coordinates = {
{ x = 0.826, y = 0.24 },
},
Recipes = {
{ ID = 12162, Type = RRS("Blacksmithing"), Skill = 160, Cost = 3000 },
},
},
{
Name = RRS("Tamar"),
Team = "Horde",
Coordinates = {
{ x = 0.627, y = 0.454 },
},
Recipes = {
{ ID = 18731, Type = RRS("Leatherworking"), Skill = 150, Cost = 2000 },
},
},
{
Name = RRS("Xen'to"),
Team = "Horde",
Coordinates = {
{ x = 0.576, y = 0.529 },
},
Recipes = {
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
{
Name = RRS("Felika"),
Team = "Horde",
Notes = RRS("Roving"),
Coordinates = {
{ x = 0.488, y = 0.363 },
},
Recipes = {
{ ID = 20856, Type = RRS("Jewelcrafting"), Skill = 150, Cost = 1500 },
},
},
{
Name = RRS("Doris Volanthius"),
Team = "Horde",
Recipes = {
},
},
{
Name = RRS("Lady Palanseer"),
Team = "Horde",
Coordinates = {
{ x = 0.37, y = 0.649 },
},
Recipes = {
{ ID = 41563, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41564, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41565, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41575, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41559, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41573, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41566, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41569, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41572, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41560, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41570, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
{ ID = 41571, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 0 },
},
},
},
},
 
[RRS("Durotar")] = {
IsCity = false,
Continent = 1,
MapFile = "Durotar",
Vendors = {
{
Name = RRS("Grimtak"),
Team = "Horde",
Coordinates = {
{ x = 0.512, y = 0.422 },
},
Recipes = {
{ ID = 5483, Type = RRS("Cooking"), Skill = 20, Cost = 140 },
},
},
{
Name = RRS("Zansoa"),
Team = "Horde",
Coordinates = {
{ x = 0.566, y = 0.733 },
},
Recipes = {
{ ID = 6368, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 6326, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
},
},
},
},
 
[RRS("Mulgore")] = {
IsCity = false,
Continent = 1,
MapFile = "Mulgore",
Vendors = {
{
Name = RRS("Harn Longcast"),
Team = "Horde",
Coordinates = {
{ x = 0.475, y = 0.548 },
},
Recipes = {
{ ID = 6325, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
{ ID = 6328, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
},
},
{
Name = RRS("Wunna Darkmane"),
Team = "Horde",
Coordinates = {
{ x = 0.459, y = 0.584 },
},
Recipes = {
{ ID = 5484, Type = RRS("Cooking"), Skill = 35, Cost = 240 },
},
},
},
},
 
[RRS("The Barrens")] = {
IsCity = false,
Continent = 1,
MapFile = "The-Barrens",
Vendors = {
{
Name = RRS("Hula'mahi"),
Team = "Horde",
Coordinates = {
{ x = 0.514, y = 0.302 },
},
Recipes = {
{ ID = 6053, Type = RRS("Alchemy"), Skill = 100, Cost = 800 },
},
},
{
Name = RRS("Tari'qa"),
Team = "Horde",
Coordinates = {
{ x = 0.517, y = 0.3 },
},
Recipes = {
{ ID = 5488, Type = RRS("Cooking"), Skill = 100, Cost = 400 },
{ ID = 5486, Type = RRS("Cooking"), Skill = 50, Cost = 440 },
},
},
{
Name = RRS("Wrahk"),
Team = "Horde",
Coordinates = {
{ x = 0.522, y = 0.317 },
},
Recipes = {
{ ID = 6272, Type = RRS("Tailoring"), Skill = 70, Cost = 300 },
{ ID = 6270, Type = RRS("Tailoring"), Skill = 55, Cost = 200 },
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
},
},
{
Name = RRS("Yonada"),
Team = "Horde",
Coordinates = {
{ x = 0.453, y = 0.595 },
},
Recipes = {
{ ID = 6274, Type = RRS("Tailoring"), Skill = 100, Cost = 400 },
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
},
},
{
Name = RRS("Zargh"),
Team = "Horde",
Coordinates = {
{ x = 0.526, y = 0.298 },
},
Recipes = {
{ ID = 3735, Type = RRS("Cooking"), Skill = 125, Cost = 1800 },
},
},
{
Name = RRS("Gagsprocket"),
Team = "Neutral",
Coordinates = {
{ x = 0.626, y = 0.363 },
},
Recipes = {
{ ID = 18648, Type = RRS("Engineering"), Skill = 150, Cost = 1800 },
{ ID = 14639, Type = RRS("Engineering"), Skill = 140, Cost = 1500 },
},
},
{
Name = RRS("Kiknikle"),
Team = "Neutral",
Coordinates = {
{ x = 0.418, y = 0.384 },
},
Recipes = {
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
},
},
{
Name = RRS("Kilxx"),
Team = "Neutral",
Coordinates = {
{ x = 0.628, y = 0.382 },
},
Recipes = {
{ ID = 6330, Type = RRS("Cooking"), Skill = 100, Cost = 1200 },
{ ID = 6368, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
},
},
{
Name = RRS("Ranik"),
Team = "Neutral",
Coordinates = {
{ x = 0.619, y = 0.387 },
},
Recipes = {
{ ID = 5640, Type = RRS("Alchemy"), Skill = 60, Cost = 100 },
{ ID = 6272, Type = RRS("Tailoring"), Skill = 70, Cost = 300 },
{ ID = 6275, Type = RRS("Tailoring"), Skill = 115, Cost = 800 },
{ ID = 20855, Type = RRS("Jewelcrafting"), Skill = 125, Cost = 1500 },
},
},
{
Name = RRS("Tarban Hearthgrain"),
Team = "Horde",
Coordinates = {
{ x = 0.557, y = 0.317 },
},
Recipes = {
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
{
Name = RRS("Grub"),
Team = "Horde",
Coordinates = {
{ x = 0.553, y = 0.318 },
},
Recipes = {
{ ID = 44977, Type = RRS("Cooking"), Skill = 90, Cost = 800 },
},
},
{
Name = RRS("Prospector Khazgorm"),
Team = "Alliance",
Coordinates = {
{ x = 0.474, y = 0.848 },
},
Recipes = {
{ ID = 44977, Type = RRS("Cooking"), Skill = 90, Cost = 800 },
},
},
},
},
 
[RRS("Thousand Needles")] = {
IsCity = false,
Continent = 1,
MapFile = "Thousand-Needles",
Vendors = {
{
Name = RRS("Jandia"),
Team = "Horde",
Coordinates = {
{ x = 0.457, y = 0.51 },
},
Recipes = {
{ ID = 5973, Type = RRS("Leatherworking"), Skill = 170, Cost = 650 },
{ ID = 20970, Type = RRS("Jewelcrafting"), Skill = 120, Cost = 1500 },
},
},
{
Name = RRS("Montarr"),
Team = "Horde",
Coordinates = {
{ x = 0.451, y = 0.499 },
},
Recipes = {
{ ID = 6068, Type = RRS("Alchemy"), Skill = 165, Cost = 1500 },
},
},
{
Name = RRS("Jinky Twizzlefixxit"),
Team = "Neutral",
Coordinates = {
{ x = 0.77, y = 0.778 },
},
Recipes = {
{ ID = 7560, Type = RRS("Engineering"), Skill = 125, Cost = 1200 },
{ ID = 13309, Type = RRS("Engineering"), Skill = 120, Cost = 1000 },
},
},
},
},
 
[RRS("Stonetalon Mountains")] = {
IsCity = false,
Continent = 1,
MapFile = "Stonetalon-Mountains",
Vendors = {
{
Name = RRS("Jeeda"),
Team = "Horde",
Coordinates = {
{ x = 0.476, y = 0.616 },
},
Recipes = {
{ ID = 6055, Type = RRS("Alchemy"), Skill = 165, Cost = 1500 },
},
},
{
Name = RRS("Kulwia"),
Team = "Horde",
Coordinates = {
{ x = 0.455, y = 0.595 },
},
Recipes = {
{ ID = 11101, Type = RRS("Enchanting"), Skill = 140, Cost = 2500 },
{ ID = 11039, Type = RRS("Enchanting"), Skill = 110, Cost = 800 },
},
},
{
Name = RRS("Veenix"),
Team = "Neutral",
Coordinates = {
{ x = 0.582, y = 0.517 },
},
Recipes = {
{ ID = 7561, Type = RRS("Engineering"), Skill = 165, Cost = 2000 },
},
},
},
},
 
[RRS("Thunder Bluff")] = {
IsCity = true,
Continent = 1,
MapFile = "Thunder-Bluff",
Vendors = {
{
Name = RRS("Mahu"),
Team = "Horde",
Coordinates = {
{ x = 0.438, y = 0.451 },
},
Recipes = {
{ ID = 10311, Type = RRS("Tailoring"), Skill = 220, Cost = 3000 },
{ ID = 5771, Type = RRS("Tailoring"), Skill = 70, Cost = 200 },
{ ID = 5772, Type = RRS("Tailoring"), Skill = 115, Cost = 500 },
{ ID = 10325, Type = RRS("Tailoring"), Skill = 250, Cost = 10000 },
},
},
{
Name = RRS("Naal Mistrunner"),
Team = "Horde",
Coordinates = {
{ x = 0.51, y = 0.524 },
},
Recipes = {
{ ID = 6330, Type = RRS("Cooking"), Skill = 100, Cost = 1200 },
{ ID = 6328, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
},
},
{
Name = RRS("Nata Dawnstrider"),
Team = "Horde",
Coordinates = {
{ x = 0.45, y = 0.388 },
},
Recipes = {
{ ID = 6349, Type = RRS("Enchanting"), Skill = 100, Cost = 500 },
{ ID = 6377, Type = RRS("Enchanting"), Skill = 125, Cost = 1000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Sewa Mistrunner"),
Team = "Horde",
Coordinates = {
{ x = 0.558, y = 0.47 },
},
Recipes = {
{ ID = 6325, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
{ ID = 6330, Type = RRS("Cooking"), Skill = 100, Cost = 1200 },
},
},
{
Name = RRS("Seersa Copperpinch"),
Team = "Neutral",
Notes = RRS("Seasonal: 12"),
Coordinates = {
{ x = 0.42, y = 0.551 },
},
Recipes = {
{ ID = 17201, Type = RRS("Cooking"), Skill = 35, Cost = 240 },
{ ID = 17200, Type = RRS("Cooking"), Skill = 1, Cost = 25 },
},
},
{
Name = RRS("Shadi Mistrunner"),
Team = "Horde",
Coordinates = {
{ x = 0.391, y = 0.623 },
},
Recipes = {
{ ID = 21948, Type = RRS("Jewelcrafting"), Skill = 250, Cost = 7500 },
},
},
},
},
 
[RRS("Silithus")] = {
IsCity = false,
Continent = 1,
MapFile = "Silithus",
Vendors = {
{
Name = RRS("Aendel Windspear"),
Team = "Neutral",
Coordinates = {
{ x = 0.626, y = 0.498 },
},
Recipes = {
{ ID = 20382, Type = RRS("Leatherworking"), Skill = 300, Cost = 60000, Faction = RRS("Cenarion Circle"), Level = 8 },
{ ID = 20506, Type = RRS("Leatherworking"), Skill = 300, Cost = 40000, Faction = RRS("Cenarion Circle"), Level = 5 },
{ ID = 20507, Type = RRS("Leatherworking"), Skill = 300, Cost = 40000, Faction = RRS("Cenarion Circle"), Level = 6 },
{ ID = 20508, Type = RRS("Leatherworking"), Skill = 300, Cost = 40000, Faction = RRS("Cenarion Circle"), Level = 7 },
{ ID = 20509, Type = RRS("Leatherworking"), Skill = 300, Cost = 40000, Faction = RRS("Cenarion Circle"), Level = 5 },
{ ID = 20510, Type = RRS("Leatherworking"), Skill = 300, Cost = 40000, Faction = RRS("Cenarion Circle"), Level = 6 },
{ ID = 20511, Type = RRS("Leatherworking"), Skill = 300, Cost = 40000, Faction = RRS("Cenarion Circle"), Level = 7 },
{ ID = 22769, Type = RRS("Leatherworking"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 5 },
{ ID = 22770, Type = RRS("Leatherworking"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 6 },
{ ID = 22771, Type = RRS("Leatherworking"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 7 },
},
},
{
Name = RRS("Zannok Hidepiercer"),
Team = "Neutral",
Coordinates = {
{ x = 0.82, y = 0.177 },
},
Recipes = {
{ ID = 15724, Type = RRS("Leatherworking"), Skill = 255, Cost = 12000 },
{ ID = 15762, Type = RRS("Leatherworking"), Skill = 295, Cost = 25000 },
},
},
{
Name = RRS("Kania"),
Team = "Neutral",
Coordinates = {
{ x = 0.518, y = 0.396 },
},
Recipes = {
{ ID = 20732, Type = RRS("Enchanting"), Skill = 300, Cost = 100000, Faction = RRS("Cenarion Circle"), Level = 5 },
{ ID = 20733, Type = RRS("Enchanting"), Skill = 300, Cost = 100000, Faction = RRS("Cenarion Circle"), Level = 6 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20754, Type = RRS("Enchanting"), Skill = 250, Cost = 10000 },
{ ID = 20755, Type = RRS("Enchanting"), Skill = 275, Cost = 20000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
{ ID = 22308, Type = RRS("Tailoring"), Skill = 275, Cost = 20000 },
},
},
{
Name = RRS("Mishta"),
Team = "Neutral",
Coordinates = {
{ x = 0.499, y = 0.363 },
},
Recipes = {
{ ID = 22312, Type = RRS("Tailoring"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 7 },
{ ID = 22310, Type = RRS("Tailoring"), Skill = 275, Cost = 20000, Faction = RRS("Cenarion Circle"), Level = 5 },
{ ID = 22772, Type = RRS("Tailoring"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 5 },
{ ID = 22773, Type = RRS("Tailoring"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 6 },
{ ID = 22774, Type = RRS("Tailoring"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 7 },
{ ID = 22683, Type = RRS("Tailoring"), Skill = 300, Cost = 90000, Faction = RRS("Cenarion Circle"), Level = 7 },
{ ID = 21952, Type = RRS("Jewelcrafting"), Skill = 275, Cost = 10000 },
},
},
{
Name = RRS("Vargus"),
Team = "Neutral",
Coordinates = {
{ x = 0.512, y = 0.389 },
},
Recipes = {
{ ID = 22209, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 5 },
{ ID = 22214, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 6 },
{ ID = 22766, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 7 },
{ ID = 22767, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 6 },
{ ID = 22768, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 5 },
},
},
{
Name = RRS("Blackwing"),
Team = "Neutral",
Coordinates = {
{ x = 0.519, y = 0.391 },
},
Recipes = {
},
},
},
},
 
[RRS("Tanaris")] = {
IsCity = false,
Continent = 1,
MapFile = "Tanaris",
Vendors = {
{
Name = RRS("Alchemist Pestlezugg"),
Team = "Neutral",
Coordinates = {
{ x = 0.509, y = 0.27 },
},
Recipes = {
{ ID = 6057, Type = RRS("Alchemy"), Skill = 190, Cost = 2000 },
{ ID = 9303, Type = RRS("Alchemy"), Skill = 225, Cost = 8000 },
{ ID = 12958, Type = RRS("Alchemy"), Skill = 275, Cost = 50000 },
{ ID = 9304, Type = RRS("Alchemy"), Skill = 225, Cost = 8000 },
{ ID = 9305, Type = RRS("Alchemy"), Skill = 225, Cost = 8000 },
},
},
{
Name = RRS("Dirge Quikcleave"),
Team = "Neutral",
Coordinates = {
{ x = 0.526, y = 0.281 },
},
Recipes = {
{ ID = 18046, Type = RRS("Cooking"), Skill = 225, Cost = 12000 },
},
},
{
Name = RRS("Gikkix"),
Team = "Neutral",
Coordinates = {
{ x = 0.666, y = 0.22 },
},
Recipes = {
{ ID = 13942, Type = RRS("Cooking"), Skill = 240, Cost = 16000 },
{ ID = 13945, Type = RRS("Cooking"), Skill = 250, Cost = 20000 },
{ ID = 13946, Type = RRS("Cooking"), Skill = 250, Cost = 20000 },
{ ID = 13939, Type = RRS("Cooking"), Skill = 225, Cost = 16000 },
},
},
{
Name = RRS("Jabbey"),
Team = "Neutral",
Coordinates = {
{ x = 0.67, y = 0.219 },
},
Recipes = {
{ ID = 16767, Type = RRS("Cooking"), Skill = 225, Cost = 3000 },
},
},
{
Name = RRS("Krinkle Goodsteel"),
Team = "Neutral",
Coordinates = {
{ x = 0.515, y = 0.288 },
},
Recipes = {
{ ID = 6047, Type = RRS("Blacksmithing"), Skill = 190, Cost = 4400 },
},
},
{
Name = RRS("Vizzklick"),
Team = "Neutral",
Coordinates = {
{ x = 0.51, y = 0.273 },
},
Recipes = {
{ ID = 7088, Type = RRS("Tailoring"), Skill = 205, Cost = 5000 },
{ ID = 21358, Type = RRS("Tailoring"), Skill = 260, Cost = 12000 },
},
},
{
Name = RRS("Blizrik Buckshot"),
Team = "Neutral",
Coordinates = {
{ x = 0.508, y = 0.279 },
},
Recipes = {
{ ID = 18650, Type = RRS("Engineering"), Skill = 200, Cost = 5000 },
},
},
{
Name = RRS("Alurmi"),
Team = "Neutral",
Coordinates = {
{ x = 0.636, y = 0.576 },
},
Recipes = {
{ ID = 28272, Type = RRS("Enchanting"), Skill = 360, Cost = 80000, Faction = RRS("Keepers of Time"), Level = 6 },
{ ID = 22536, Type = RRS("Enchanting"), Skill = 360, Cost = 100000, Faction = RRS("Keepers of Time"), Level = 6 },
{ ID = 29713, Type = RRS("Leatherworking"), Skill = 370, Cost = 120000, Faction = RRS("Keepers of Time"), Level = 6 },
{ ID = 24181, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 120000, Faction = RRS("Keepers of Time"), Level = 7 },
{ ID = 24174, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("Keepers of Time"), Level = 7 },
{ ID = 25910, Type = RRS("Jewelcrafting"), Skill = 365, Cost = 120000, Faction = RRS("Keepers of Time"), Level = 6 },
{ ID = 31355, Type = RRS("Alchemy"), Skill = 300, Cost = 40000, Faction = RRS("Keepers of Time"), Level = 8 },
{ ID = 33152, Type = RRS("Enchanting"), Skill = 300, Cost = 100000, Faction = RRS("Keepers of Time"), Level = 8 },
{ ID = 33160, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("Keepers of Time"), Level = 6 },
{ ID = 33158, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("Keepers of Time"), Level = 7 },
},
},
{
Name = RRS("Andormu"),
Team = "Neutral",
Coordinates = {
{ x = 0.576, y = 0.59 },
},
Recipes = {
},
},
{
Name = RRS("Innkeeper Fizzgrimble"),
Team = "Neutral",
Coordinates = {
{ x = 0.519, y = 0.284 },
},
Recipes = {
{ ID = 18046, Type = RRS("Cooking"), Skill = 225, Cost = 12000 },
},
},
{
Name = RRS("Haughty Modiste"),
Team = "Neutral",
Coordinates = {
{ x = 0.665, y = 0.223 },
},
Recipes = {
{ ID = 37915, Type = RRS("Tailoring"), Skill = 250, Cost = 5000 },
{ ID = 38327, Type = RRS("Tailoring"), Skill = 250, Cost = 5000 },
{ ID = 38328, Type = RRS("Tailoring"), Skill = 245, Cost = 4500 },
},
},
},
},
 
[RRS("Alterac Mountains")] = {
IsCity = false,
Continent = 2,
MapFile = "Alterac-Mountains",
Vendors = {
{
Name = RRS("Bro'kin"),
Team = "Neutral",
Coordinates = {
{ x = 0.382, y = 0.389 },
},
Recipes = {
{ ID = 14634, Type = RRS("Alchemy"), Skill = 200, Cost = 2500 },
},
},
{
Name = RRS("Rizz Loosebolt"),
Team = "Neutral",
Coordinates = {
{ x = 0.473, y = 0.352 },
},
Recipes = {
{ ID = 13308, Type = RRS("Engineering"), Skill = 155, Cost = 1800 },
},
},
{
Name = RRS("Smudge Thunderwood"),
Team = "Neutral",
Coordinates = {
{ x = 0.861, y = 0.797 },
},
Recipes = {
{ ID = 18160, Type = RRS("Cooking"), Skill = 60, Cost = 200, Notes = RRS("Class: Rogue") },
},
},
{
Name = RRS("Zan Shivsproket"),
Team = "Neutral",
Coordinates = {
{ x = 0.86, y = 0.801 },
},
Recipes = {
{ ID = 7742, Type = RRS("Engineering"), Skill = 200, Cost = 2400 },
},
},
},
},
 
[RRS("Moonglade")] = {
IsCity = false,
Continent = 1,
MapFile = "Moonglade",
Vendors = {
{
Name = RRS("Darnall"),
Team = "Neutral",
Coordinates = {
{ x = 0.515, y = 0.333 },
},
Recipes = {
{ ID = 14488, Type = RRS("Tailoring"), Skill = 280, Cost = 20000 },
{ ID = 14472, Type = RRS("Tailoring"), Skill = 265, Cost = 12000 },
{ ID = 14469, Type = RRS("Tailoring"), Skill = 260, Cost = 12000 },
},
},
{
Name = RRS("Lorelae Wintersong"),
Team = "Neutral",
Coordinates = {
{ x = 0.482, y = 0.401 },
},
Recipes = {
{ ID = 16224, Type = RRS("Enchanting"), Skill = 285, Cost = 20000 },
{ ID = 16243, Type = RRS("Enchanting"), Skill = 290, Cost = 22000 },
{ ID = 14483, Type = RRS("Tailoring"), Skill = 275, Cost = 16000 },
},
},
{
Name = RRS("Fariel Starsong"),
Team = "Neutral",
Coordinates = {
{ x = 0.538, y = 0.354 },
},
Recipes = {
{ ID = 44916, Type = RRS("Tailoring"), Skill = 250, Cost = 5, Notes = RRS("CostItem: 21100") },
{ ID = 44917, Type = RRS("Tailoring"), Skill = 250, Cost = 5, Notes = RRS("CostItem: 21100") },
{ ID = 44918, Type = RRS("Engineering"), Skill = 275, Cost = 5, Notes = RRS("CostItem: 21100") },
{ ID = 44919, Type = RRS("Engineering"), Skill = 225, Cost = 5, Notes = RRS("CostItem: 21100") },
},
},
},
},
 
[RRS("Winterspring")] = {
IsCity = false,
Continent = 1,
MapFile = "Winterspring",
Vendors = {
{
Name = RRS("Evie Whirlbrew"),
Team = "Neutral",
Coordinates = {
{ x = 0.608, y = 0.379 },
},
Recipes = {
},
},
{
Name = RRS("Himmik"),
Team = "Neutral",
Coordinates = {
{ x = 0.613, y = 0.392 },
},
Recipes = {
{ ID = 16110, Type = RRS("Cooking"), Skill = 225, Cost = 12000 },
},
},
{
Name = RRS("Qia"),
Team = "Neutral",
Coordinates = {
{ x = 0.612, y = 0.372 },
},
Recipes = {
{ ID = 16221, Type = RRS("Enchanting"), Skill = 275, Cost = 16000 },
{ ID = 15740, Type = RRS("Leatherworking"), Skill = 275, Cost = 16000 },
{ ID = 14526, Type = RRS("Tailoring"), Skill = 250, Cost = 20000 },
{ ID = 14468, Type = RRS("Tailoring"), Skill = 260, Cost = 12000 },
{ ID = 21957, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 13500 },
},
},
{
Name = RRS("Xizzer Fizzbolt"),
Team = "Neutral",
Coordinates = {
{ x = 0.608, y = 0.386 },
},
Recipes = {
{ ID = 16050, Type = RRS("Engineering"), Skill = 285, Cost = 20000 },
{ ID = 18652, Type = RRS("Engineering"), Skill = 260, Cost = 12000 },
{ ID = 16046, Type = RRS("Engineering"), Skill = 275, Cost = 16000 },
{ ID = 18656, Type = RRS("Engineering"), Skill = 275, Cost = 16000 },
{ ID = 32381, Type = RRS("Engineering"), Skill = 275, Cost = 16000 },
},
},
},
},
 
[RRS("Eastern Plaguelands")] = {
IsCity = false,
Continent = 2,
MapFile = "Eastern-Plaguelands",
Vendors = {
{
Name = RRS("Jase Farlane"),
Team = "Neutral",
Coordinates = {
{ x = 0.748, y = 0.518 },
},
Recipes = {
{ ID = 21954, Type = RRS("Jewelcrafting"), Skill = 285, Cost = 10000 },
},
},
{
Name = RRS("Quartermaster Miranda Breechlock"),
Team = "Neutral",
Coordinates = {
{ x = 0.758, y = 0.541 },
},
Recipes = {
{ ID = 13482, Type = RRS("Alchemy"), Skill = 275, Cost = 15000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19203, Type = RRS("Blacksmithing"), Skill = 290, Cost = 22000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19205, Type = RRS("Blacksmithing"), Skill = 300, Cost = 40000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19447, Type = RRS("Enchanting"), Skill = 300, Cost = 60000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19446, Type = RRS("Enchanting"), Skill = 290, Cost = 30000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19328, Type = RRS("Leatherworking"), Skill = 290, Cost = 22000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19329, Type = RRS("Leatherworking"), Skill = 300, Cost = 40000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19216, Type = RRS("Tailoring"), Skill = 290, Cost = 22000, Faction = RRS("Argent Dawn"), Level = 6 },
{ ID = 19217, Type = RRS("Tailoring"), Skill = 300, Cost = 40000, Faction = RRS("Argent Dawn"), Level = 7 },
{ ID = 19442, Type = RRS("First Aid"), Skill = 300, Cost = 100000, Faction = RRS("Argent Dawn"), Level = 6 },
},
},
},
},
 
[RRS("Badlands")] = {
IsCity = false,
Continent = 2,
MapFile = "Badlands",
Vendors = {
{
Name = RRS("Jazzrik"),
Team = "Neutral",
Coordinates = {
{ x = 0.418, y = 0.531 },
},
Recipes = {
{ ID = 10858, Type = RRS("Blacksmithing"), Skill = 155, Cost = 3000 },
},
},
},
},
 
[RRS("Wailing Caverns")] = {
IsCity = false,
Continent = 0,
MapFile = "Wailing-Caverns",
Vendors = {
{
Name = RRS("Kalldan Felmoon"),
Team = "Neutral",
Recipes = {
{ ID = 6474, Type = RRS("Leatherworking"), Skill = 90, Cost = 550 },
{ ID = 6475, Type = RRS("Leatherworking"), Skill = 105, Cost = 1500 },
},
},
},
},
 
[RRS("Blackrock Depths")] = {
IsCity = false,
Continent = 0,
MapFile = "Blackrock-Depths",
Vendors = {
{
Name = RRS("Lokhtos Darkbargainer"),
Team = "Neutral",
Recipes = {
{ ID = 19208, Type = RRS("Blacksmithing"), Skill = 300, Cost = 70000, Faction = RRS("Thorium Brotherhood"), Level = 7 },
{ ID = 19209, Type = RRS("Blacksmithing"), Skill = 300, Cost = 70000, Faction = RRS("Thorium Brotherhood"), Level = 8 },
{ ID = 19211, Type = RRS("Blacksmithing"), Skill = 300, Cost = 120000, Faction = RRS("Thorium Brotherhood"), Level = 8 },
{ ID = 17051, Type = RRS("Blacksmithing"), Skill = 295, Cost = 70000, Faction = RRS("Thorium Brotherhood"), Level = 5 },
{ ID = 17060, Type = RRS("Blacksmithing"), Skill = 300, Cost = 220000, Faction = RRS("Thorium Brotherhood"), Level = 8 },
{ ID = 19207, Type = RRS("Blacksmithing"), Skill = 300, Cost = 80000, Faction = RRS("Thorium Brotherhood"), Level = 7 },
{ ID = 19206, Type = RRS("Blacksmithing"), Skill = 300, Cost = 60000, Faction = RRS("Thorium Brotherhood"), Level = 7 },
{ ID = 17052, Type = RRS("Blacksmithing"), Skill = 300, Cost = 180000, Faction = RRS("Thorium Brotherhood"), Level = 8 },
{ ID = 17059, Type = RRS("Blacksmithing"), Skill = 300, Cost = 220000, Faction = RRS("Thorium Brotherhood"), Level = 6 },
{ ID = 20040, Type = RRS("Blacksmithing"), Skill = 300, Cost = 80000, Faction = RRS("Thorium Brotherhood"), Level = 8 },
{ ID = 19210, Type = RRS("Blacksmithing"), Skill = 300, Cost = 120000, Faction = RRS("Thorium Brotherhood"), Level = 8 },
{ ID = 17049, Type = RRS("Blacksmithing"), Skill = 295, Cost = 90000, Faction = RRS("Thorium Brotherhood"), Level = 6 },
{ ID = 17053, Type = RRS("Blacksmithing"), Skill = 300, Cost = 200000, Faction = RRS("Thorium Brotherhood"), Level = 7 },
{ ID = 19212, Type = RRS("Blacksmithing"), Skill = 300, Cost = 120000, Faction = RRS("Thorium Brotherhood"), Level = 8 },
{ ID = 19449, Type = RRS("Enchanting"), Skill = 300, Cost = 100000, Faction = RRS("Thorium Brotherhood"), Level = 7 },
{ ID = 19448, Type = RRS("Enchanting"), Skill = 300, Cost = 80000, Faction = RRS("Thorium Brotherhood"), Level = 6 },
{ ID = 19444, Type = RRS("Enchanting"), Skill = 290, Cost = 30000, Faction = RRS("Thorium Brotherhood"), Level = 5 },
{ ID = 17025, Type = RRS("Leatherworking"), Skill = 300, Cost = 160000, Faction = RRS("Thorium Brotherhood"), Level = 6 },
{ ID = 19331, Type = RRS("Leatherworking"), Skill = 300, Cost = 90000, Faction = RRS("Thorium Brotherhood"), Level = 7 },
{ ID = 19332, Type = RRS("Leatherworking"), Skill = 300, Cost = 90000, Faction = RRS("Thorium Brotherhood"), Level = 7 },
{ ID = 17022, Type = RRS("Leatherworking"), Skill = 295, Cost = 150000, Faction = RRS("Thorium Brotherhood"), Level = 5 },
{ ID = 19330, Type = RRS("Leatherworking"), Skill = 300, Cost = 60000, Faction = RRS("Thorium Brotherhood"), Level = 7 },
{ ID = 19333, Type = RRS("Leatherworking"), Skill = 300, Cost = 90000, Faction = RRS("Thorium Brotherhood"), Level = 7 },
{ ID = 17023, Type = RRS("Leatherworking"), Skill = 300, Cost = 160000, Faction = RRS("Thorium Brotherhood"), Level = 5 },
{ ID = 17018, Type = RRS("Tailoring"), Skill = 300, Cost = 80000, Faction = RRS("Thorium Brotherhood"), Level = 5 },
{ ID = 19220, Type = RRS("Tailoring"), Skill = 300, Cost = 90000, Faction = RRS("Thorium Brotherhood"), Level = 7 },
{ ID = 17017, Type = RRS("Tailoring"), Skill = 300, Cost = 180000, Faction = RRS("Thorium Brotherhood"), Level = 6 },
{ ID = 19219, Type = RRS("Tailoring"), Skill = 300, Cost = 60000, Faction = RRS("Thorium Brotherhood"), Level = 6 },
{ ID = 20761, Type = RRS("Alchemy"), Skill = 300, Cost = 120000, Faction = RRS("Thorium Brotherhood"), Level = 5 },
},
},
{
Name = RRS("Plugger Spazzring"),
Team = "Neutral",
Recipes = {
{ ID = 13483, Type = RRS("Alchemy"), Skill = 275, Cost = 15000 },
{ ID = 15759, Type = RRS("Leatherworking"), Skill = 290, Cost = 22000 },
},
},
},
},
 
[RRS("Un'Goro Crater")] = {
IsCity = false,
Continent = 1,
MapFile = "Un-Goro-Crater",
Vendors = {
{
Name = RRS("Nergal"),
Team = "Neutral",
Coordinates = {
{ x = 0.434, y = 0.082 },
},
Recipes = {
{ ID = 15758, Type = RRS("Leatherworking"), Skill = 290, Cost = 22000 },
},
},
},
},
 
[RRS("Dire Maul")] = {
IsCity = false,
Continent = 0,
MapFile = "Dire-Maul",
Vendors = {
{
Name = RRS("Shen'dralar Provisioner"),
Team = "Neutral",
Recipes = {
{ ID = 18487, Type = RRS("Tailoring"), Skill = 300, Cost = 40000 },
},
},
},
},
 
[RRS("Burning Steppes")] = {
IsCity = false,
Continent = 2,
MapFile = "Burning-Steppes",
Vendors = {
{
Name = RRS("Yuka Screwspigot"),
Team = "Neutral",
Coordinates = {
{ x = 0.656, y = 0.236 },
},
Recipes = {
{ ID = 10602, Type = RRS("Engineering"), Skill = 210, Cost = 3000 },
},
},
},
},
 
[RRS("Naxxramas")] = {
IsCity = false,
Continent = 0,
MapFile = "Naxxramas",
Vendors = {
{
Name = RRS("Master Craftsman Omarion"),
Team = "Neutral",
Recipes = {
},
},
},
},
 
[RRS("Eversong Woods")] = {
IsCity = false,
Continent = 2,
MapFile = "Eversong-Woods",
Vendors = {
{
Name = RRS("Landraelanis"),
Team = "Horde",
Coordinates = {
{ x = 0.49, y = 0.47 },
},
Recipes = {
{ ID = 27685, Type = RRS("Cooking"), Skill = 1, Cost = 40 },
},
},
{
Name = RRS("Erilia"),
Team = "Horde",
Coordinates = {
{ x = 0.554, y = 0.54 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
},
},
 
[RRS("Deadwind Pass")] = {
IsCity = false,
Continent = 2,
MapFile = "Deadwind-Pass",
Vendors = {
{
Name = RRS("Apprentice Darius"),
Team = "Neutral",
Coordinates = {
{ x = 0.47, y = 0.753 },
},
Recipes = {
{ ID = 31401, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 120000, Faction = RRS("The Violet Eye"), Level = 6 },
{ ID = 33209, Type = RRS("Alchemy"), Skill = 375, Cost = 40000, Faction = RRS("The Violet Eye"), Level = 6 },
{ ID = 33165, Type = RRS("Enchanting"), Skill = 350, Cost = 30000, Faction = RRS("The Violet Eye"), Level = 8 },
{ ID = 33205, Type = RRS("Leatherworking"), Skill = 365, Cost = 240000, Faction = RRS("The Violet Eye"), Level = 7 },
{ ID = 33124, Type = RRS("Leatherworking"), Skill = 360, Cost = 50000, Faction = RRS("The Violet Eye"), Level = 8 },
},
},
},
},
 
[RRS("Ghostlands")] = {
IsCity = false,
Continent = 2,
MapFile = "Ghostlands",
Vendors = {
{
Name = RRS("Master Chef Mouldier"),
Team = "Horde",
Coordinates = {
{ x = 0.483, y = 0.309 },
},
Recipes = {
{ ID = 27687, Type = RRS("Cooking"), Skill = 50, Cost = 400 },
{ ID = 22647, Type = RRS("Cooking"), Skill = 60, Cost = 400 },
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
},
},
{
Name = RRS("Rathis Tomber"),
Team = "Horde",
Coordinates = {
{ x = 0.472, y = 0.287 },
},
Recipes = {
{ ID = 5771, Type = RRS("Tailoring"), Skill = 70, Cost = 200 },
},
},
},
},
 
[RRS("Silvermoon City")] = {
IsCity = true,
Continent = 2,
MapFile = "Silvermoon-City",
Vendors = {
{
Name = RRS("Deynna"),
Team = "Horde",
Coordinates = {
{ x = 0.555, y = 0.509 },
},
Recipes = {
{ ID = 21892, Type = RRS("Tailoring"), Skill = 325, Cost = 40000 },
{ ID = 21894, Type = RRS("Tailoring"), Skill = 345, Cost = 40000 },
{ ID = 21896, Type = RRS("Tailoring"), Skill = 340, Cost = 40000 },
{ ID = 21897, Type = RRS("Tailoring"), Skill = 345, Cost = 40000 },
},
},
{
Name = RRS("Eriden"),
Team = "Horde",
Coordinates = {
{ x = 0.797, y = 0.362 },
},
Recipes = {
{ ID = 23591, Type = RRS("Blacksmithing"), Skill = 330, Cost = 40000 },
{ ID = 23592, Type = RRS("Blacksmithing"), Skill = 330, Cost = 40000 },
{ ID = 23590, Type = RRS("Blacksmithing"), Skill = 325, Cost = 40000 },
{ ID = 23593, Type = RRS("Blacksmithing"), Skill = 335, Cost = 40000 },
},
},
{
Name = RRS("Lyna"),
Team = "Horde",
Coordinates = {
{ x = 0.684, y = 0.244 },
},
Recipes = {
{ ID = 22565, Type = RRS("Enchanting"), Skill = 335, Cost = 60000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22562, Type = RRS("Enchanting"), Skill = 310, Cost = 50000 },
{ ID = 22563, Type = RRS("Enchanting"), Skill = 340, Cost = 70000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Zaralda"),
Team = "Horde",
Coordinates = {
{ x = 0.84, y = 0.793 },
},
Recipes = {
{ ID = 25726, Type = RRS("Leatherworking"), Skill = 300, Cost = 10000 },
{ ID = 25720, Type = RRS("Leatherworking"), Skill = 325, Cost = 50000 },
},
},
{
Name = RRS("Quelis"),
Team = "Horde",
Coordinates = {
{ x = 0.693, y = 0.707 },
},
Recipes = {
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
},
},
{
Name = RRS("Gelanthis"),
Team = "Horde",
Coordinates = {
{ x = 0.905, y = 0.736 },
},
Recipes = {
{ ID = 20854, Type = RRS("Jewelcrafting"), Skill = 110, Cost = 1800 },
{ ID = 20856, Type = RRS("Jewelcrafting"), Skill = 150, Cost = 1500 },
{ ID = 21948, Type = RRS("Jewelcrafting"), Skill = 250, Cost = 7500 },
{ ID = 20975, Type = RRS("Jewelcrafting"), Skill = 170, Cost = 2500 },
},
},
{
Name = RRS("Melaris"),
Team = "Horde",
Coordinates = {
{ x = 0.669, y = 0.199 },
},
Recipes = {
{ ID = 23574, Type = RRS("Alchemy"), Skill = 350, Cost = 80000 },
{ ID = 22900, Type = RRS("Alchemy"), Skill = 305, Cost = 30000 },
},
},
{
Name = RRS("Yatheon"),
Team = "Horde",
Coordinates = {
{ x = 0.755, y = 0.396 },
},
Recipes = {
{ ID = 23799, Type = RRS("Engineering"), Skill = 350, Cost = 80000 },
{ ID = 23815, Type = RRS("Engineering"), Skill = 335, Cost = 60000 },
{ ID = 23816, Type = RRS("Engineering"), Skill = 325, Cost = 40000 },
{ ID = 23811, Type = RRS("Engineering"), Skill = 335, Cost = 60000 },
},
},
{
Name = RRS("Hotoppik Copperpinch"),
Team = "Horde",
Notes = RRS("Seasonal: 12"),
Coordinates = {
{ x = 0.631, y = 0.762 },
},
Recipes = {
{ ID = 17201, Type = RRS("Cooking"), Skill = 35, Cost = 240 },
{ ID = 17200, Type = RRS("Cooking"), Skill = 1, Cost = 25 },
},
},
},
},
 
[RRS("The Exodar")] = {
IsCity = true,
Continent = 1,
MapFile = "The-Exodar",
Vendors = {
{
Name = RRS("Neii"),
Team = "Alliance",
Coordinates = {
{ x = 0.631, y = 0.683 },
},
Recipes = {
{ ID = 21892, Type = RRS("Tailoring"), Skill = 325, Cost = 40000 },
{ ID = 21894, Type = RRS("Tailoring"), Skill = 345, Cost = 40000 },
{ ID = 21896, Type = RRS("Tailoring"), Skill = 340, Cost = 40000 },
{ ID = 21897, Type = RRS("Tailoring"), Skill = 345, Cost = 40000 },
},
},
{
Name = RRS("Arras"),
Team = "Alliance",
Coordinates = {
{ x = 0.592, y = 0.902 },
},
Recipes = {
{ ID = 23591, Type = RRS("Blacksmithing"), Skill = 330, Cost = 40000 },
{ ID = 23592, Type = RRS("Blacksmithing"), Skill = 330, Cost = 40000 },
{ ID = 23590, Type = RRS("Blacksmithing"), Skill = 325, Cost = 40000 },
{ ID = 23593, Type = RRS("Blacksmithing"), Skill = 335, Cost = 40000 },
},
},
{
Name = RRS("Egomis"),
Team = "Alliance",
Coordinates = {
{ x = 0.391, y = 0.4 },
},
Recipes = {
{ ID = 22565, Type = RRS("Enchanting"), Skill = 335, Cost = 60000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22562, Type = RRS("Enchanting"), Skill = 310, Cost = 50000 },
{ ID = 22563, Type = RRS("Enchanting"), Skill = 340, Cost = 70000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Haferet"),
Team = "Alliance",
Coordinates = {
{ x = 0.66, y = 0.746 },
},
Recipes = {
{ ID = 25726, Type = RRS("Leatherworking"), Skill = 300, Cost = 10000 },
{ ID = 25720, Type = RRS("Leatherworking"), Skill = 325, Cost = 50000 },
},
},
{
Name = RRS("Phea"),
Team = "Alliance",
Coordinates = {
{ x = 0.543, y = 0.26 },
},
Recipes = {
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
},
},
{
Name = RRS("Arred"),
Team = "Alliance",
Coordinates = {
{ x = 0.425, y = 0.258 },
},
Recipes = {
{ ID = 20854, Type = RRS("Jewelcrafting"), Skill = 110, Cost = 1800 },
{ ID = 20856, Type = RRS("Jewelcrafting"), Skill = 150, Cost = 1500 },
{ ID = 21948, Type = RRS("Jewelcrafting"), Skill = 250, Cost = 7500 },
{ ID = 20975, Type = RRS("Jewelcrafting"), Skill = 170, Cost = 2500 },
},
},
{
Name = RRS("Altaa"),
Team = "Alliance",
Coordinates = {
{ x = 0.276, y = 0.623 },
},
Recipes = {
{ ID = 23574, Type = RRS("Alchemy"), Skill = 350, Cost = 80000 },
{ ID = 22900, Type = RRS("Alchemy"), Skill = 305, Cost = 30000 },
},
},
{
Name = RRS("Feera"),
Team = "Alliance",
Coordinates = {
{ x = 0.537, y = 0.909 },
},
Recipes = {
{ ID = 23799, Type = RRS("Engineering"), Skill = 350, Cost = 80000 },
{ ID = 23815, Type = RRS("Engineering"), Skill = 335, Cost = 60000 },
{ ID = 23816, Type = RRS("Engineering"), Skill = 325, Cost = 40000 },
{ ID = 23811, Type = RRS("Engineering"), Skill = 335, Cost = 60000 },
},
},
{
Name = RRS("Wolgren Jinglepocket"),
Team = "Alliance",
Notes = RRS("Seasonal: 12"),
Coordinates = {
{ x = 0.526, y = 0.468 },
},
Recipes = {
{ ID = 17201, Type = RRS("Cooking"), Skill = 35, Cost = 240 },
{ ID = 17200, Type = RRS("Cooking"), Skill = 1, Cost = 25 },
},
},
},
},
 
[RRS("Azuremyst Isle")] = {
IsCity = false,
Continent = 1,
MapFile = "Azuremyst-Isle",
Vendors = {
{
Name = RRS("\"Cookie\" McWeaksauce"),
Team = "Alliance",
Coordinates = {
{ x = 0.467, y = 0.705 },
},
Recipes = {
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
},
},
},
},
 
[RRS("Bloodmyst Isle")] = {
IsCity = false,
Continent = 1,
MapFile = "Bloodmyst-Isle",
Vendors = {
{
Name = RRS("Fazu"),
Team = "Alliance",
Coordinates = {
{ x = 0.535, y = 0.563 },
},
Recipes = {
{ ID = 22647, Type = RRS("Cooking"), Skill = 60, Cost = 400 },
},
},
},
},
 
[RRS("Zangarmarsh")] = {
IsCity = false,
Continent = 3,
MapFile = "Zangarmarsh",
Vendors = {
{
Name = RRS("Naka"),
Team = "Neutral",
Coordinates = {
{ x = 0.785, y = 0.621 },
},
Recipes = {
{ ID = 27736, Type = RRS("Cooking"), Skill = 300, Cost = 20000 },
},
},
{
Name = RRS("Juno Dufrain"),
Team = "Neutral",
Coordinates = {
{ x = 0.78, y = 0.661 },
},
Recipes = {
{ ID = 27532, Type = RRS("Fishing"), Skill = 275, Cost = 50000 },
{ ID = 27696, Type = RRS("Cooking"), Skill = 310, Cost = 20000 },
},
},
{
Name = RRS("Fedryen Swiftspear"),
Team = "Neutral",
Coordinates = {
{ x = 0.793, y = 0.638 },
},
Recipes = {
{ ID = 31390, Type = RRS("Blacksmithing"), Skill = 375, Cost = 240000, Faction = RRS("Cenarion Expedition"), Level = 8 },
{ ID = 31392, Type = RRS("Blacksmithing"), Skill = 375, Cost = 240000, Faction = RRS("Cenarion Expedition"), Level = 7 },
{ ID = 31391, Type = RRS("Blacksmithing"), Skill = 375, Cost = 240000, Faction = RRS("Cenarion Expedition"), Level = 7 },
{ ID = 23618, Type = RRS("Blacksmithing"), Skill = 350, Cost = 60000, Faction = RRS("Cenarion Expedition"), Level = 6 },
{ ID = 28632, Type = RRS("Blacksmithing"), Skill = 350, Cost = 60000, Faction = RRS("Cenarion Expedition"), Level = 6 },
{ ID = 25526, Type = RRS("Blacksmithing"), Skill = 350, Cost = 60000, Faction = RRS("Cenarion Expedition"), Level = 6 },
{ ID = 28271, Type = RRS("Enchanting"), Skill = 360, Cost = 80000, Faction = RRS("Cenarion Expedition"), Level = 7 },
{ ID = 25737, Type = RRS("Leatherworking"), Skill = 355, Cost = 140000, Faction = RRS("Cenarion Expedition"), Level = 5 },
{ ID = 25736, Type = RRS("Leatherworking"), Skill = 355, Cost = 140000, Faction = RRS("Cenarion Expedition"), Level = 6 },
{ ID = 25735, Type = RRS("Leatherworking"), Skill = 360, Cost = 160000, Faction = RRS("Cenarion Expedition"), Level = 6 },
{ ID = 29720, Type = RRS("Leatherworking"), Skill = 335, Cost = 60000, Faction = RRS("Cenarion Expedition"), Level = 6 },
{ ID = 29721, Type = RRS("Leatherworking"), Skill = 365, Cost = 120000, Faction = RRS("Cenarion Expedition"), Level = 8 },
{ ID = 31402, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 120000, Faction = RRS("Cenarion Expedition"), Level = 8 },
{ ID = 24183, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 120000, Faction = RRS("Cenarion Expedition"), Level = 7 },
{ ID = 31356, Type = RRS("Alchemy"), Skill = 300, Cost = 40000, Faction = RRS("Cenarion Expedition"), Level = 8 },
{ ID = 22918, Type = RRS("Alchemy"), Skill = 350, Cost = 80000, Faction = RRS("Cenarion Expedition"), Level = 7 },
{ ID = 22922, Type = RRS("Alchemy"), Skill = 360, Cost = 100000, Faction = RRS("Cenarion Expedition"), Level = 8 },
{ ID = 25869, Type = RRS("Alchemy"), Skill = 350, Cost = 80000, Faction = RRS("Cenarion Expedition"), Level = 6 },
{ ID = 23814, Type = RRS("Engineering"), Skill = 335, Cost = 60000, Faction = RRS("Cenarion Expedition"), Level = 5 },
{ ID = 32070, Type = RRS("Alchemy"), Skill = 320, Cost = 40000, Faction = RRS("Cenarion Expedition"), Level = 6 },
{ ID = 33149, Type = RRS("Enchanting"), Skill = 300, Cost = 100000, Faction = RRS("Cenarion Expedition"), Level = 8 },
},
},
{
Name = RRS("Loolruna"),
Team = "Alliance",
Coordinates = {
{ x = 0.685, y = 0.501 },
},
Recipes = {
{ ID = 23596, Type = RRS("Blacksmithing"), Skill = 340, Cost = 60000 },
{ ID = 23594, Type = RRS("Blacksmithing"), Skill = 335, Cost = 60000 },
{ ID = 23595, Type = RRS("Blacksmithing"), Skill = 335, Cost = 60000 },
},
},
{
Name = RRS("Doba"),
Team = "Alliance",
Coordinates = {
{ x = 0.423, y = 0.279 },
},
Recipes = {
{ ID = 27694, Type = RRS("Cooking"), Skill = 300, Cost = 20000 },
{ ID = 27695, Type = RRS("Cooking"), Skill = 300, Cost = 20000 },
},
},
{
Name = RRS("Gambarinka"),
Team = "Horde",
Coordinates = {
{ x = 0.317, y = 0.493 },
},
Recipes = {
{ ID = 27694, Type = RRS("Cooking"), Skill = 300, Cost = 20000 },
},
},
{
Name = RRS("Mycah"),
Team = "Neutral",
Coordinates = {
{ x = 0.179, y = 0.512 },
},
Recipes = {
{ ID = 30156, Type = RRS("Cooking"), Skill = 300, Cost = 1, Notes = RRS("CostItem: 24245") },
{ ID = 27689, Type = RRS("Cooking"), Skill = 310, Cost = 2, Notes = RRS("CostItem: 24245") },
{ ID = 22906, Type = RRS("Alchemy"), Skill = 335, Cost = 30, Faction = RRS("Sporeggar"), Level = 8, Notes = RRS("CostItem: 24245") },
{ ID = 22916, Type = RRS("Alchemy"), Skill = 350, Cost = 25, Faction = RRS("Sporeggar"), Level = 7, Notes = RRS("CostItem: 24245") },
{ ID = 38229, Type = RRS("Tailoring"), Skill = 375, Cost = 25, Faction = RRS("Sporeggar"), Level = 7, Notes = RRS("CostItem: 24245") },
},
},
{
Name = RRS("Zurai"),
Team = "Horde",
Coordinates = {
{ x = 0.852, y = 0.547 },
},
Recipes = {
{ ID = 27695, Type = RRS("Cooking"), Skill = 300, Cost = 20000 },
{ ID = 21899, Type = RRS("Tailoring"), Skill = 350, Cost = 60000 },
{ ID = 21898, Type = RRS("Tailoring"), Skill = 340, Cost = 60000 },
},
},
{
Name = RRS("Muheru the Weaver"),
Team = "Alliance",
Coordinates = {
{ x = 0.406, y = 0.282 },
},
Recipes = {
{ ID = 21899, Type = RRS("Tailoring"), Skill = 350, Cost = 60000 },
{ ID = 21898, Type = RRS("Tailoring"), Skill = 340, Cost = 60000 },
},
},
{
Name = RRS("Haalrun"),
Team = "Alliance",
Coordinates = {
{ x = 0.678, y = 0.48 },
},
Recipes = {
{ ID = 22909, Type = RRS("Alchemy"), Skill = 345, Cost = 50000 },
{ ID = 22902, Type = RRS("Alchemy"), Skill = 320, Cost = 40000 },
{ ID = 22907, Type = RRS("Alchemy"), Skill = 340, Cost = 50000 },
},
},
{
Name = RRS("Seer Janidi"),
Team = "Horde",
Coordinates = {
{ x = 0.324, y = 0.519 },
},
Recipes = {
{ ID = 22902, Type = RRS("Alchemy"), Skill = 320, Cost = 40000 },
{ ID = 22901, Type = RRS("Alchemy"), Skill = 315, Cost = 30000 },
},
},
{
Name = RRS("Captured Gnome"),
Team = "Horde",
Coordinates = {
{ x = 0.325, y = 0.481 },
},
Recipes = {
{ ID = 23805, Type = RRS("Engineering"), Skill = 350, Cost = 80000 },
{ ID = 23811, Type = RRS("Engineering"), Skill = 335, Cost = 60000 },
},
},
},
},
 
[RRS("Hellfire Peninsula")] = {
IsCity = false,
Continent = 3,
MapFile = "Hellfire-Peninsula",
Vendors = {
{
Name = RRS("Baxter"),
Team = "Horde",
Coordinates = {
{ x = 0.567, y = 0.374 },
},
Recipes = {
{ ID = 27736, Type = RRS("Cooking"), Skill = 300, Cost = 20000 },
},
},
{
Name = RRS("Gaston"),
Team = "Alliance",
Coordinates = {
{ x = 0.54, y = 0.636 },
},
Recipes = {
{ ID = 27736, Type = RRS("Cooking"), Skill = 300, Cost = 20000 },
},
},
{
Name = RRS("Burko"),
Team = "Alliance",
Coordinates = {
{ x = 0.223, y = 0.394 },
},
Recipes = {
{ ID = 22012, Type = RRS("First Aid"), Skill = 300, Cost = 50000 },
{ ID = 21993, Type = RRS("First Aid"), Skill = 360, Cost = 40000 },
{ ID = 21992, Type = RRS("First Aid"), Skill = 330, Cost = 20000 },
},
},
{
Name = RRS("Aresella"),
Team = "Horde",
Coordinates = {
{ x = 0.262, y = 0.622 },
},
Recipes = {
{ ID = 22012, Type = RRS("First Aid"), Skill = 300, Cost = 50000 },
{ ID = 21993, Type = RRS("First Aid"), Skill = 360, Cost = 40000 },
{ ID = 21992, Type = RRS("First Aid"), Skill = 330, Cost = 20000 },
},
},
{
Name = RRS("Vodesiin"),
Team = "Alliance",
Coordinates = {
{ x = 0.244, y = 0.388 },
},
Recipes = {
{ ID = 25848, Type = RRS("Enchanting"), Skill = 350, Cost = 100000 },
},
},
{
Name = RRS("Rohok"),
Team = "Horde",
Coordinates = {
{ x = 0.532, y = 0.382 },
},
Recipes = {
{ ID = 25847, Type = RRS("Blacksmithing"), Skill = 360, Cost = 120000 },
{ ID = 23638, Type = RRS("Blacksmithing"), Skill = 340, Cost = 60000 },
},
},
{
Name = RRS("Quartermaster Urgronn"),
Team = "Horde",
Coordinates = {
{ x = 0.549, y = 0.379 },
},
Recipes = {
{ ID = 24002, Type = RRS("Blacksmithing"), Skill = 360, Cost = 60000, Faction = RRS("Thrallmar"), Level = 8 },
{ ID = 24000, Type = RRS("Enchanting"), Skill = 325, Cost = 60000, Faction = RRS("Thrallmar"), Level = 5 },
{ ID = 24003, Type = RRS("Enchanting"), Skill = 345, Cost = 60000, Faction = RRS("Thrallmar"), Level = 7 },
{ ID = 25738, Type = RRS("Leatherworking"), Skill = 350, Cost = 120000, Faction = RRS("Thrallmar"), Level = 5 },
{ ID = 25739, Type = RRS("Leatherworking"), Skill = 360, Cost = 160000, Faction = RRS("Thrallmar"), Level = 6 },
{ ID = 25740, Type = RRS("Leatherworking"), Skill = 360, Cost = 160000, Faction = RRS("Thrallmar"), Level = 6 },
{ ID = 31361, Type = RRS("Leatherworking"), Skill = 335, Cost = 60000, Faction = RRS("Thrallmar"), Level = 6 },
{ ID = 31362, Type = RRS("Leatherworking"), Skill = 365, Cost = 120000, Faction = RRS("Thrallmar"), Level = 8 },
{ ID = 31358, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 120000, Faction = RRS("Thrallmar"), Level = 7 },
{ ID = 31359, Type = RRS("Jewelcrafting"), Skill = 315, Cost = 60000, Faction = RRS("Thrallmar"), Level = 5 },
{ ID = 24001, Type = RRS("Alchemy"), Skill = 330, Cost = 50000, Faction = RRS("Thrallmar"), Level = 6 },
{ ID = 29232, Type = RRS("Alchemy"), Skill = 350, Cost = 80000, Faction = RRS("Thrallmar"), Level = 6 },
{ ID = 33151, Type = RRS("Enchanting"), Skill = 300, Cost = 100000, Faction = RRS("Thrallmar"), Level = 8 },
{ ID = 34201, Type = RRS("Leatherworking"), Skill = 350, Cost = 160000, Faction = RRS("Thrallmar"), Level = 7 },
},
},
{
Name = RRS("Logistics Officer Ulrike"),
Team = "Alliance",
Coordinates = {
{ x = 0.567, y = 0.626 },
},
Recipes = {
{ ID = 23619, Type = RRS("Blacksmithing"), Skill = 360, Cost = 60000, Faction = RRS("Honor Hold"), Level = 8 },
{ ID = 22531, Type = RRS("Enchanting"), Skill = 325, Cost = 60000, Faction = RRS("Honor Hold"), Level = 5 },
{ ID = 22547, Type = RRS("Enchanting"), Skill = 345, Cost = 60000, Faction = RRS("Honor Hold"), Level = 7 },
{ ID = 29213, Type = RRS("Leatherworking"), Skill = 350, Cost = 120000, Faction = RRS("Honor Hold"), Level = 5 },
{ ID = 29214, Type = RRS("Leatherworking"), Skill = 360, Cost = 160000, Faction = RRS("Honor Hold"), Level = 6 },
{ ID = 29215, Type = RRS("Leatherworking"), Skill = 360, Cost = 160000, Faction = RRS("Honor Hold"), Level = 6 },
{ ID = 29719, Type = RRS("Leatherworking"), Skill = 335, Cost = 60000, Faction = RRS("Honor Hold"), Level = 6 },
{ ID = 29722, Type = RRS("Leatherworking"), Skill = 365, Cost = 120000, Faction = RRS("Honor Hold"), Level = 8 },
{ ID = 24180, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 120000, Faction = RRS("Honor Hold"), Level = 7 },
{ ID = 23142, Type = RRS("Jewelcrafting"), Skill = 315, Cost = 60000, Faction = RRS("Honor Hold"), Level = 5 },
{ ID = 22905, Type = RRS("Alchemy"), Skill = 330, Cost = 50000, Faction = RRS("Honor Hold"), Level = 6 },
{ ID = 25870, Type = RRS("Alchemy"), Skill = 350, Cost = 80000, Faction = RRS("Honor Hold"), Level = 6 },
{ ID = 33150, Type = RRS("Enchanting"), Skill = 300, Cost = 100000, Faction = RRS("Honor Hold"), Level = 8 },
{ ID = 34218, Type = RRS("Leatherworking"), Skill = 350, Cost = 160000, Faction = RRS("Honor Hold"), Level = 7 },
},
},
{
Name = RRS("Felannia"),
Team = "Horde",
Coordinates = {
{ x = 0.523, y = 0.361 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Johan Barnes"),
Team = "Alliance",
Coordinates = {
{ x = 0.536, y = 0.661 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Cookie One-Eye"),
Team = "Horde",
Coordinates = {
{ x = 0.546, y = 0.411 },
},
Recipes = {
{ ID = 27688, Type = RRS("Cooking"), Skill = 300, Cost = 20000 },
},
},
{
Name = RRS("Sid Limbardi"),
Team = "Alliance",
Coordinates = {
{ x = 0.543, y = 0.636 },
},
Recipes = {
{ ID = 27688, Type = RRS("Cooking"), Skill = 300, Cost = 20000 },
},
},
{
Name = RRS("Kalaen"),
Team = "Horde",
Coordinates = {
{ x = 0.568, y = 0.377 },
},
Recipes = {
{ ID = 23151, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000 },
{ ID = 28291, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000 },
{ ID = 23147, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000 },
{ ID = 23153, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000 },
{ ID = 23131, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000 },
{ ID = 28596, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000 },
{ ID = 23148, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
{ ID = 23137, Type = RRS("Jewelcrafting"), Skill = 315, Cost = 60000 },
{ ID = 23144, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
{ ID = 23135, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
{ ID = 23141, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000 },
{ ID = 23140, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
{ ID = 23152, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
{ ID = 23130, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
},
},
{
Name = RRS("Tatiana"),
Team = "Alliance",
Coordinates = {
{ x = 0.546, y = 0.636 },
},
Recipes = {
{ ID = 23151, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000 },
{ ID = 28291, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000 },
{ ID = 23147, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000 },
{ ID = 23153, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000 },
{ ID = 23131, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000 },
{ ID = 28596, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000 },
{ ID = 23148, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
{ ID = 23137, Type = RRS("Jewelcrafting"), Skill = 315, Cost = 60000 },
{ ID = 23144, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
{ ID = 23135, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
{ ID = 23141, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000 },
{ ID = 23140, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
{ ID = 23152, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
{ ID = 23130, Type = RRS("Jewelcrafting"), Skill = 300, Cost = 40000 },
},
},
{
Name = RRS("Alchemist Gribble"),
Team = "Alliance",
Coordinates = {
{ x = 0.538, y = 0.658 },
},
Recipes = {
{ ID = 22900, Type = RRS("Alchemy"), Skill = 305, Cost = 30000 },
},
},
{
Name = RRS("Apothecary Antonivich"),
Team = "Horde",
Coordinates = {
{ x = 0.524, y = 0.365 },
},
Recipes = {
{ ID = 22900, Type = RRS("Alchemy"), Skill = 305, Cost = 30000 },
},
},
{
Name = RRS("Mixie Farshot"),
Team = "Horde",
Coordinates = {
{ x = 0.611, y = 0.815 },
},
Recipes = {
{ ID = 23807, Type = RRS("Engineering"), Skill = 335, Cost = 60000 },
{ ID = 23803, Type = RRS("Engineering"), Skill = 340, Cost = 60000 },
},
},
{
Name = RRS("Lebowski"),
Team = "Alliance",
Coordinates = {
{ x = 0.557, y = 0.656 },
},
Recipes = {
{ ID = 23803, Type = RRS("Engineering"), Skill = 340, Cost = 60000 },
{ ID = 23805, Type = RRS("Engineering"), Skill = 350, Cost = 80000 },
},
},
},
},
 
[RRS("Blade's Edge Mountains")] = {
IsCity = false,
Continent = 3,
MapFile = "Blade-s-Edge-Mountains",
Vendors = {
{
Name = RRS("Daga Ramba"),
Team = "Horde",
Coordinates = {
{ x = 0.511, y = 0.577 },
},
Recipes = {
{ ID = 22909, Type = RRS("Alchemy"), Skill = 345, Cost = 50000 },
{ ID = 22907, Type = RRS("Alchemy"), Skill = 340, Cost = 50000 },
{ ID = 22911, Type = RRS("Alchemy"), Skill = 350, Cost = 50000 },
},
},
{
Name = RRS("Sassa Weldwell"),
Team = "Alliance",
Coordinates = {
{ x = 0.613, y = 0.689 },
},
Recipes = {
{ ID = 31674, Type = RRS("Cooking"), Skill = 335, Cost = 30000 },
{ ID = 31675, Type = RRS("Cooking"), Skill = 335, Cost = 30000 },
},
},
{
Name = RRS("Xerintha Ravenoak"),
Team = "Neutral",
Coordinates = {
{ x = 0.624, y = 0.403 },
},
Recipes = {
{ ID = 31674, Type = RRS("Cooking"), Skill = 335, Cost = 30000 },
{ ID = 31675, Type = RRS("Cooking"), Skill = 335, Cost = 30000 },
},
},
},
},
 
[RRS("Terokkar Forest")] = {
IsCity = false,
Continent = 3,
MapFile = "Terokkar-Forest",
Vendors = {
{
Name = RRS("Rungor"),
Team = "Horde",
Coordinates = {
{ x = 0.488, y = 0.461 },
},
Recipes = {
{ ID = 25848, Type = RRS("Enchanting"), Skill = 350, Cost = 100000 },
{ ID = 27699, Type = RRS("Cooking"), Skill = 325, Cost = 30000 },
{ ID = 27700, Type = RRS("Cooking"), Skill = 350, Cost = 30000 },
},
},
{
Name = RRS("Innkeeper Grilka"),
Team = "Horde",
Coordinates = {
{ x = 0.488, y = 0.451 },
},
Recipes = {
{ ID = 27690, Type = RRS("Cooking"), Skill = 315, Cost = 30000 },
{ ID = 27692, Type = RRS("Cooking"), Skill = 325, Cost = 30000 },
},
},
{
Name = RRS("Supply Officer Mills"),
Team = "Alliance",
Coordinates = {
{ x = 0.557, y = 0.531 },
},
Recipes = {
{ ID = 27690, Type = RRS("Cooking"), Skill = 315, Cost = 30000 },
{ ID = 27692, Type = RRS("Cooking"), Skill = 325, Cost = 30000 },
},
},
{
Name = RRS("Innkeeper Biribi"),
Team = "Alliance",
Coordinates = {
{ x = 0.567, y = 0.533 },
},
Recipes = {
{ ID = 27699, Type = RRS("Cooking"), Skill = 325, Cost = 30000 },
{ ID = 27700, Type = RRS("Cooking"), Skill = 350, Cost = 30000 },
},
},
{
Name = RRS("Leeli Longhaggle"),
Team = "Alliance",
Coordinates = {
{ x = 0.577, y = 0.534 },
},
Recipes = {
{ ID = 22901, Type = RRS("Alchemy"), Skill = 315, Cost = 30000 },
{ ID = 22911, Type = RRS("Alchemy"), Skill = 350, Cost = 50000 },
},
},
},
},
 
[RRS("Nagrand")] = {
IsCity = false,
Continent = 3,
MapFile = "Nagrand",
Vendors = {
{
Name = RRS("Provisioner Nasela"),
Team = "Horde",
Coordinates = {
{ x = 0.535, y = 0.369 },
},
Recipes = {
{ ID = 25741, Type = RRS("Leatherworking"), Skill = 340, Cost = 120000, Faction = RRS("The Mag'har"), Level = 5 },
{ ID = 25743, Type = RRS("Leatherworking"), Skill = 350, Cost = 120000, Faction = RRS("The Mag'har"), Level = 7 },
{ ID = 25742, Type = RRS("Leatherworking"), Skill = 340, Cost = 120000, Faction = RRS("The Mag'har"), Level = 6 },
{ ID = 29664, Type = RRS("Leatherworking"), Skill = 325, Cost = 50000, Faction = RRS("The Mag'har"), Level = 6 },
{ ID = 22917, Type = RRS("Alchemy"), Skill = 350, Cost = 80000, Faction = RRS("The Mag'har"), Level = 7 },
{ ID = 34174, Type = RRS("Leatherworking"), Skill = 350, Cost = 160000, Faction = RRS("The Mag'har"), Level = 6 },
{ ID = 34172, Type = RRS("Leatherworking"), Skill = 345, Cost = 160000, Faction = RRS("The Mag'har"), Level = 6 },
},
},
{
Name = RRS("Trader Narasu"),
Team = "Alliance",
Coordinates = {
{ x = 0.546, y = 0.752 },
},
Recipes = {
{ ID = 29217, Type = RRS("Leatherworking"), Skill = 340, Cost = 120000, Faction = RRS("Kurenai"), Level = 5 },
{ ID = 29218, Type = RRS("Leatherworking"), Skill = 350, Cost = 120000, Faction = RRS("Kurenai"), Level = 7 },
{ ID = 29219, Type = RRS("Leatherworking"), Skill = 340, Cost = 120000, Faction = RRS("Kurenai"), Level = 6 },
{ ID = 30444, Type = RRS("Leatherworking"), Skill = 325, Cost = 50000, Faction = RRS("Kurenai"), Level = 6 },
{ ID = 30443, Type = RRS("Alchemy"), Skill = 350, Cost = 80000, Faction = RRS("Kurenai"), Level = 7 },
{ ID = 34175, Type = RRS("Leatherworking"), Skill = 350, Cost = 160000, Faction = RRS("Kurenai"), Level = 6 },
{ ID = 34173, Type = RRS("Leatherworking"), Skill = 345, Cost = 160000, Faction = RRS("Kurenai"), Level = 6 },
},
},
{
Name = RRS("Nula the Butcher"),
Team = "Horde",
Coordinates = {
{ x = 0.581, y = 0.357 },
},
Recipes = {
{ ID = 27697, Type = RRS("Cooking"), Skill = 320, Cost = 30000 },
{ ID = 27698, Type = RRS("Cooking"), Skill = 320, Cost = 30000 },
{ ID = 27691, Type = RRS("Cooking"), Skill = 325, Cost = 30000 },
{ ID = 27693, Type = RRS("Cooking"), Skill = 325, Cost = 30000 },
},
},
{
Name = RRS("Uriku"),
Team = "Alliance",
Coordinates = {
{ x = 0.562, y = 0.733 },
},
Recipes = {
{ ID = 27697, Type = RRS("Cooking"), Skill = 320, Cost = 30000 },
{ ID = 27698, Type = RRS("Cooking"), Skill = 320, Cost = 30000 },
{ ID = 27691, Type = RRS("Cooking"), Skill = 325, Cost = 30000 },
{ ID = 27693, Type = RRS("Cooking"), Skill = 325, Cost = 30000 },
},
},
{
Name = RRS("Borto"),
Team = "Alliance",
Coordinates = {
{ x = 0.533, y = 0.719 },
},
Recipes = {
{ ID = 21894, Type = RRS("Tailoring"), Skill = 345, Cost = 40000 },
{ ID = 21902, Type = RRS("Tailoring"), Skill = 355, Cost = 80000 },
},
},
{
Name = RRS("Mathar G'ochar"),
Team = "Horde",
Coordinates = {
{ x = 0.552, y = 0.37 },
},
Recipes = {
{ ID = 21894, Type = RRS("Tailoring"), Skill = 345, Cost = 40000 },
{ ID = 21893, Type = RRS("Tailoring"), Skill = 340, Cost = 40000 },
{ ID = 21902, Type = RRS("Tailoring"), Skill = 355, Cost = 80000 },
},
},
{
Name = RRS("Quartermaster Davian Vaclav"),
Team = "Alliance",
Coordinates = {
{ x = 0.412, y = 0.443 },
},
Recipes = {
{ ID = 32071, Type = RRS("Alchemy"), Skill = 330, Cost = 2, Notes = RRS("CostItem: 26044") },
{ ID = 33783, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 4, Notes = RRS("CostItem: 26044") },
},
},
{
Name = RRS("Quartermaster Jaffrey Noreliqe"),
Team = "Horde",
Coordinates = {
{ x = 0.412, y = 0.443 },
},
Recipes = {
{ ID = 32071, Type = RRS("Alchemy"), Skill = 330, Cost = 2, Notes = RRS("CostItem: 26044") },
{ ID = 33783, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 4, Notes = RRS("CostItem: 26044") },
},
},
{
Name = RRS("Paulsta'ats"),
Team = "Neutral",
Coordinates = {
{ x = 0.305, y = 0.569 },
},
Recipes = {
{ ID = 25733, Type = RRS("Leatherworking"), Skill = 350, Cost = 140000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 25732, Type = RRS("Leatherworking"), Skill = 340, Cost = 120000, Faction = RRS("The Consortium"), Level = 5 },
{ ID = 25734, Type = RRS("Leatherworking"), Skill = 350, Cost = 140000, Faction = RRS("The Consortium"), Level = 7 },
{ ID = 28274, Type = RRS("Enchanting"), Skill = 325, Cost = 40000, Faction = RRS("The Consortium"), Level = 5 },
{ ID = 22552, Type = RRS("Enchanting"), Skill = 340, Cost = 60000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 23874, Type = RRS("Engineering"), Skill = 350, Cost = 80000, Faction = RRS("The Consortium"), Level = 7 },
{ ID = 24314, Type = RRS("Tailoring"), Skill = 340, Cost = 40000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 24178, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Consortium"), Level = 7 },
{ ID = 23134, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 23136, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000, Faction = RRS("The Consortium"), Level = 5 },
{ ID = 23155, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 23146, Type = RRS("Jewelcrafting"), Skill = 315, Cost = 60000, Faction = RRS("The Consortium"), Level = 5 },
{ ID = 23150, Type = RRS("Jewelcrafting"), Skill = 315, Cost = 60000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 25908, Type = RRS("Jewelcrafting"), Skill = 365, Cost = 120000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 33622, Type = RRS("Jewelcrafting"), Skill = 365, Cost = 120000, Faction = RRS("The Consortium"), Level = 8 },
{ ID = 33156, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Consortium"), Level = 7 },
{ ID = 33305, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Consortium"), Level = 7 },
},
},
{
Name = RRS("Aldraan"),
Team = "Alliance",
Coordinates = {
{ x = 0.424, y = 0.438 },
},
Recipes = {
{ ID = 24208, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 120000 },
},
},
{
Name = RRS("Coreiel"),
Team = "Horde",
Coordinates = {
{ x = 0.428, y = 0.426 },
},
Recipes = {
{ ID = 24208, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 120000 },
},
},
},
},
 
[RRS("Shadowmoon Valley")] = {
IsCity = false,
Continent = 3,
MapFile = "Shadowmoon-Valley",
Vendors = {
{
Name = RRS("Krek Cragcrush"),
Team = "Horde",
Coordinates = {
{ x = 0.292, y = 0.31 },
},
Recipes = {
{ ID = 23596, Type = RRS("Blacksmithing"), Skill = 340, Cost = 60000 },
{ ID = 23594, Type = RRS("Blacksmithing"), Skill = 335, Cost = 60000 },
{ ID = 23595, Type = RRS("Blacksmithing"), Skill = 335, Cost = 60000 },
},
},
{
Name = RRS("Mari Stonehand"),
Team = "Alliance",
Coordinates = {
{ x = 0.368, y = 0.551 },
},
Recipes = {
{ ID = 25847, Type = RRS("Blacksmithing"), Skill = 360, Cost = 120000 },
{ ID = 23638, Type = RRS("Blacksmithing"), Skill = 340, Cost = 60000 },
},
},
{
Name = RRS("Arrond"),
Team = "Neutral",
Coordinates = {
{ x = 0.559, y = 0.582 },
},
Recipes = {
{ ID = 21900, Type = RRS("Tailoring"), Skill = 360, Cost = 60000 },
{ ID = 21901, Type = RRS("Tailoring"), Skill = 360, Cost = 60000 },
},
},
{
Name = RRS("Daggle Ironshaper"),
Team = "Alliance",
Coordinates = {
{ x = 0.368, y = 0.544 },
},
Recipes = {
{ ID = 23807, Type = RRS("Engineering"), Skill = 335, Cost = 60000 },
},
},
},
},
 
[RRS("Netherstorm")] = {
IsCity = false,
Continent = 3,
MapFile = "Netherstorm",
Vendors = {
{
Name = RRS("Dealer Malij"),
Team = "Neutral",
Coordinates = {
{ x = 0.442, y = 0.34 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Karaaz"),
Team = "Neutral",
Coordinates = {
{ x = 0.436, y = 0.343 },
},
Recipes = {
{ ID = 28274, Type = RRS("Enchanting"), Skill = 325, Cost = 40000, Faction = RRS("The Consortium"), Level = 5 },
{ ID = 25733, Type = RRS("Leatherworking"), Skill = 350, Cost = 140000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 25732, Type = RRS("Leatherworking"), Skill = 340, Cost = 120000, Faction = RRS("The Consortium"), Level = 5 },
{ ID = 25734, Type = RRS("Leatherworking"), Skill = 350, Cost = 140000, Faction = RRS("The Consortium"), Level = 7 },
{ ID = 24314, Type = RRS("Tailoring"), Skill = 340, Cost = 40000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 24178, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Consortium"), Level = 7 },
{ ID = 23134, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 23136, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000, Faction = RRS("The Consortium"), Level = 5 },
{ ID = 23155, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 23146, Type = RRS("Jewelcrafting"), Skill = 315, Cost = 60000, Faction = RRS("The Consortium"), Level = 5 },
{ ID = 23150, Type = RRS("Jewelcrafting"), Skill = 315, Cost = 60000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 25908, Type = RRS("Jewelcrafting"), Skill = 365, Cost = 120000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 23874, Type = RRS("Engineering"), Skill = 350, Cost = 80000, Faction = RRS("The Consortium"), Level = 7 },
{ ID = 32412, Type = RRS("Jewelcrafting"), Skill = 365, Cost = 0, Faction = RRS("The Consortium"), Level = 8 },
{ ID = 22552, Type = RRS("Enchanting"), Skill = 340, Cost = 60000, Faction = RRS("The Consortium"), Level = 6 },
{ ID = 33622, Type = RRS("Jewelcrafting"), Skill = 365, Cost = 120000, Faction = RRS("The Consortium"), Level = 8 },
{ ID = 33156, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Consortium"), Level = 7 },
{ ID = 33305, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Consortium"), Level = 7 },
},
},
{
Name = RRS("Asarnan"),
Team = "Neutral",
Coordinates = {
{ x = 0.442, y = 0.337 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
},
},
 
[RRS("Shattrath City")] = {
IsCity = true,
Continent = 3,
MapFile = "Shattrath-City",
Vendors = {
{
Name = RRS("Eiin"),
Team = "Neutral",
Coordinates = {
{ x = 0.647, y = 0.669 },
},
Recipes = {
{ ID = 21892, Type = RRS("Tailoring"), Skill = 325, Cost = 40000 },
{ ID = 21896, Type = RRS("Tailoring"), Skill = 340, Cost = 40000 },
{ ID = 21897, Type = RRS("Tailoring"), Skill = 345, Cost = 40000 },
{ ID = 21893, Type = RRS("Tailoring"), Skill = 340, Cost = 40000 },
},
},
{
Name = RRS("Aaron Hollman"),
Team = "Neutral",
Coordinates = {
{ x = 0.623, y = 0.713 },
},
Recipes = {
{ ID = 23591, Type = RRS("Blacksmithing"), Skill = 330, Cost = 40000 },
{ ID = 23592, Type = RRS("Blacksmithing"), Skill = 330, Cost = 40000 },
{ ID = 23590, Type = RRS("Blacksmithing"), Skill = 325, Cost = 40000 },
{ ID = 23593, Type = RRS("Blacksmithing"), Skill = 335, Cost = 40000 },
{ ID = 25846, Type = RRS("Blacksmithing"), Skill = 350, Cost = 40000 },
},
},
{
Name = RRS("Quartermaster Enuril"),
Team = "Neutral",
Coordinates = {
{ x = 0.605, y = 0.642 },
},
Recipes = {
{ ID = 23597, Type = RRS("Blacksmithing"), Skill = 355, Cost = 60000, Faction = RRS("The Scryers"), Level = 5 },
{ ID = 23598, Type = RRS("Blacksmithing"), Skill = 355, Cost = 60000, Faction = RRS("The Scryers"), Level = 6 },
{ ID = 23599, Type = RRS("Blacksmithing"), Skill = 360, Cost = 60000, Faction = RRS("The Scryers"), Level = 7 },
{ ID = 23600, Type = RRS("Blacksmithing"), Skill = 365, Cost = 80000, Faction = RRS("The Scryers"), Level = 8 },
{ ID = 29701, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Scryers"), Level = 6 },
{ ID = 29700, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Scryers"), Level = 7 },
{ ID = 29698, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Scryers"), Level = 8 },
{ ID = 29684, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Scryers"), Level = 7 },
{ ID = 29682, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Scryers"), Level = 6 },
{ ID = 29677, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Scryers"), Level = 8 },
{ ID = 25722, Type = RRS("Leatherworking"), Skill = 325, Cost = 50000, Faction = RRS("The Scryers"), Level = 7 },
{ ID = 24292, Type = RRS("Tailoring"), Skill = 335, Cost = 60000, Faction = RRS("The Scryers"), Level = 6 },
{ ID = 24294, Type = RRS("Tailoring"), Skill = 375, Cost = 360000, Faction = RRS("The Scryers"), Level = 8 },
{ ID = 24176, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Scryers"), Level = 7 },
{ ID = 23143, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000, Faction = RRS("The Scryers"), Level = 6 },
{ ID = 23133, Type = RRS("Jewelcrafting"), Skill = 315, Cost = 60000, Faction = RRS("The Scryers"), Level = 5 },
{ ID = 22908, Type = RRS("Alchemy"), Skill = 345, Cost = 60000, Faction = RRS("The Scryers"), Level = 7 },
},
},
{
Name = RRS("Quartermaster Endarin"),
Team = "Neutral",
Coordinates = {
{ x = 0.479, y = 0.278 },
},
Recipes = {
{ ID = 23601, Type = RRS("Blacksmithing"), Skill = 350, Cost = 60000, Faction = RRS("The Aldor"), Level = 5 },
{ ID = 23604, Type = RRS("Blacksmithing"), Skill = 365, Cost = 80000, Faction = RRS("The Aldor"), Level = 7 },
{ ID = 23603, Type = RRS("Blacksmithing"), Skill = 360, Cost = 60000, Faction = RRS("The Aldor"), Level = 6 },
{ ID = 23602, Type = RRS("Blacksmithing"), Skill = 355, Cost = 60000, Faction = RRS("The Aldor"), Level = 8 },
{ ID = 29704, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Aldor"), Level = 6 },
{ ID = 29703, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Aldor"), Level = 7 },
{ ID = 29702, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Aldor"), Level = 8 },
{ ID = 29693, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Aldor"), Level = 6 },
{ ID = 29691, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Aldor"), Level = 7 },
{ ID = 29689, Type = RRS("Leatherworking"), Skill = 350, Cost = 80000, Faction = RRS("The Aldor"), Level = 8 },
{ ID = 25721, Type = RRS("Leatherworking"), Skill = 325, Cost = 50000, Faction = RRS("The Aldor"), Level = 7 },
{ ID = 30842, Type = RRS("Tailoring"), Skill = 350, Cost = 60000, Faction = RRS("The Aldor"), Level = 5 },
{ ID = 30843, Type = RRS("Tailoring"), Skill = 360, Cost = 80000, Faction = RRS("The Aldor"), Level = 6 },
{ ID = 30844, Type = RRS("Tailoring"), Skill = 370, Cost = 100000, Faction = RRS("The Aldor"), Level = 8 },
{ ID = 24295, Type = RRS("Tailoring"), Skill = 375, Cost = 360000, Faction = RRS("The Aldor"), Level = 8 },
{ ID = 24293, Type = RRS("Tailoring"), Skill = 335, Cost = 60000, Faction = RRS("The Aldor"), Level = 6 },
{ ID = 24177, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Aldor"), Level = 7 },
{ ID = 23149, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000, Faction = RRS("The Aldor"), Level = 5 },
{ ID = 23145, Type = RRS("Jewelcrafting"), Skill = 305, Cost = 50000, Faction = RRS("The Aldor"), Level = 6 },
},
},
{
Name = RRS("Madame Ruby"),
Team = "Neutral",
Coordinates = {
{ x = 0.634, y = 0.7 },
},
Recipes = {
{ ID = 28282, Type = RRS("Enchanting"), Skill = 325, Cost = 40000 },
{ ID = 22565, Type = RRS("Enchanting"), Skill = 335, Cost = 60000 },
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 25849, Type = RRS("Enchanting"), Skill = 375, Cost = 120000 },
{ ID = 22562, Type = RRS("Enchanting"), Skill = 310, Cost = 50000 },
{ ID = 22563, Type = RRS("Enchanting"), Skill = 340, Cost = 70000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Yurial Soulwater"),
Team = "Neutral",
Coordinates = {
{ x = 0.425, y = 0.961 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Almaador"),
Team = "Neutral",
Coordinates = {
{ x = 0.51, y = 0.417 },
},
Recipes = {
{ ID = 28273, Type = RRS("Enchanting"), Skill = 350, Cost = 60000, Faction = RRS("The Sha'tar"), Level = 6 },
{ ID = 28281, Type = RRS("Enchanting"), Skill = 350, Cost = 60000, Faction = RRS("The Sha'tar"), Level = 7 },
{ ID = 22537, Type = RRS("Enchanting"), Skill = 370, Cost = 100000, Faction = RRS("The Sha'tar"), Level = 7 },
{ ID = 29717, Type = RRS("Leatherworking"), Skill = 365, Cost = 120000, Faction = RRS("The Sha'tar"), Level = 6 },
{ ID = 30826, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Sha'tar"), Level = 6 },
{ ID = 24182, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 120000, Faction = RRS("The Sha'tar"), Level = 7 },
{ ID = 25904, Type = RRS("Jewelcrafting"), Skill = 365, Cost = 120000, Faction = RRS("The Sha'tar"), Level = 5 },
{ ID = 31354, Type = RRS("Alchemy"), Skill = 300, Cost = 40000, Faction = RRS("The Sha'tar"), Level = 8 },
{ ID = 22915, Type = RRS("Alchemy"), Skill = 350, Cost = 80000, Faction = RRS("The Sha'tar"), Level = 7 },
{ ID = 13517, Type = RRS("Alchemy"), Skill = 350, Cost = 80000, Faction = RRS("The Sha'tar"), Level = 7 },
{ ID = 33153, Type = RRS("Enchanting"), Skill = 300, Cost = 100000, Faction = RRS("The Sha'tar"), Level = 8 },
{ ID = 33159, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Sha'tar"), Level = 7 },
{ ID = 33155, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("The Sha'tar"), Level = 6 },
},
},
{
Name = RRS("Nakodu"),
Team = "Neutral",
Coordinates = {
{ x = 0.604, y = 0.69 },
},
Recipes = {
{ ID = 30833, Type = RRS("Tailoring"), Skill = 350, Cost = 60000, Faction = RRS("Lower City"), Level = 6 },
{ ID = 24179, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 120000, Faction = RRS("Lower City"), Level = 7 },
{ ID = 24175, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("Lower City"), Level = 7 },
{ ID = 23138, Type = RRS("Jewelcrafting"), Skill = 325, Cost = 60000, Faction = RRS("Lower City"), Level = 5 },
{ ID = 22910, Type = RRS("Alchemy"), Skill = 350, Cost = 80000, Faction = RRS("Lower City"), Level = 7 },
{ ID = 31357, Type = RRS("Alchemy"), Skill = 300, Cost = 40000, Faction = RRS("Lower City"), Level = 8 },
{ ID = 33148, Type = RRS("Enchanting"), Skill = 300, Cost = 100000, Faction = RRS("Lower City"), Level = 8 },
{ ID = 33157, Type = RRS("Jewelcrafting"), Skill = 360, Cost = 120000, Faction = RRS("Lower City"), Level = 7 },
{ ID = 22538, Type = RRS("Enchanting"), Skill = 375, Cost = 200000, Faction = RRS("Lower City"), Level = 6 },
{ ID = 34200, Type = RRS("Leatherworking"), Skill = 350, Cost = 160000, Faction = RRS("Lower City"), Level = 7 },
},
},
{
Name = RRS("Cro Threadstrong"),
Team = "Neutral",
Coordinates = {
{ x = 0.652, y = 0.685 },
},
Recipes = {
{ ID = 25720, Type = RRS("Leatherworking"), Skill = 325, Cost = 50000 },
},
},
{
Name = RRS("Jim Saltit"),
Team = "Neutral",
Coordinates = {
{ x = 0.624, y = 0.691 },
},
Recipes = {
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
},
},
{
Name = RRS("Andrion Darkspinner"),
Team = "Neutral",
Coordinates = {
{ x = 0.647, y = 0.681 },
},
Recipes = {
{ ID = 21915, Type = RRS("Tailoring"), Skill = 375, Cost = 60000 },
{ ID = 21914, Type = RRS("Tailoring"), Skill = 365, Cost = 60000, Specialty = RRS("Shadoweave Tailoring") },
{ ID = 21912, Type = RRS("Tailoring"), Skill = 355, Cost = 60000, Specialty = RRS("Shadoweave Tailoring") },
{ ID = 21913, Type = RRS("Tailoring"), Skill = 375, Cost = 60000, Specialty = RRS("Shadoweave Tailoring") },
{ ID = 30483, Type = RRS("Tailoring"), Skill = 350, Cost = 40000 },
},
},
{
Name = RRS("Nasmara Moonsong"),
Team = "Neutral",
Coordinates = {
{ x = 0.647, y = 0.686 },
},
Recipes = {
{ ID = 21919, Type = RRS("Tailoring"), Skill = 375, Cost = 60000 },
{ ID = 21895, Type = RRS("Tailoring"), Skill = 350, Cost = 40000 },
{ ID = 21916, Type = RRS("Tailoring"), Skill = 355, Cost = 60000, Specialty = RRS("Mooncloth Tailoring") },
{ ID = 21917, Type = RRS("Tailoring"), Skill = 375, Cost = 60000, Specialty = RRS("Mooncloth Tailoring") },
{ ID = 21918, Type = RRS("Tailoring"), Skill = 365, Cost = 60000, Specialty = RRS("Mooncloth Tailoring") },
},
},
{
Name = RRS("Gidge Spellweaver"),
Team = "Neutral",
Coordinates = {
{ x = 0.669, y = 0.687 },
},
Recipes = {
{ ID = 21911, Type = RRS("Tailoring"), Skill = 375, Cost = 60000 },
{ ID = 24316, Type = RRS("Tailoring"), Skill = 350, Cost = 40000 },
{ ID = 21908, Type = RRS("Tailoring"), Skill = 355, Cost = 60000, Specialty = RRS("Spellfire Tailoring") },
{ ID = 21909, Type = RRS("Tailoring"), Skill = 365, Cost = 60000, Specialty = RRS("Spellfire Tailoring") },
{ ID = 21910, Type = RRS("Tailoring"), Skill = 375, Cost = 60000, Specialty = RRS("Spellfire Tailoring") },
},
},
{
Name = RRS("Skreah"),
Team = "Neutral",
Coordinates = {
{ x = 0.46, y = 0.189 },
},
Recipes = {
{ ID = 23574, Type = RRS("Alchemy"), Skill = 350, Cost = 80000 },
},
},
{
Name = RRS("Viggz Shinesparked"),
Team = "Neutral",
Coordinates = {
{ x = 0.636, y = 0.691 },
},
Recipes = {
{ ID = 23799, Type = RRS("Engineering"), Skill = 350, Cost = 80000 },
{ ID = 32381, Type = RRS("Engineering"), Skill = 275, Cost = 16000 },
},
},
{
Name = RRS("Wind Trader Lathrai"),
Team = "Neutral",
Coordinates = {
{ x = 0.723, y = 0.31 },
},
Recipes = {
{ ID = 23815, Type = RRS("Engineering"), Skill = 335, Cost = 60000 },
{ ID = 23816, Type = RRS("Engineering"), Skill = 325, Cost = 40000 },
{ ID = 23811, Type = RRS("Engineering"), Skill = 335, Cost = 60000 },
},
},
{
Name = RRS("Eebee Jinglepocket"),
Team = "Neutral",
Notes = RRS("Seasonal: 12"),
Coordinates = {
{ x = 0.501, y = 0.317 },
},
Recipes = {
{ ID = 17201, Type = RRS("Cooking"), Skill = 35, Cost = 240 },
{ ID = 17200, Type = RRS("Cooking"), Skill = 1, Cost = 25 },
},
},
{
Name = RRS("Ontuvo"),
Team = "Neutral",
Coordinates = {
{ x = 0.487, y = 0.413 },
},
Recipes = {
{ ID = 35769, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35768, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35767, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35766, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35325, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 120000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35322, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 120000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35323, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 120000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35238, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35244, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35245, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35255, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35251, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35246, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35252, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35247, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35256, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35266, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35239, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35257, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35240, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35267, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35253, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35268, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35262, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35258, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35269, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 37504, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35254, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35259, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35241, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35248, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35242, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35260, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35263, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35243, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35264, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35265, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35249, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35250, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35261, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35270, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35271, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
},
},
{
Name = RRS("Enchantress Andiala"),
Team = "Horde",
Coordinates = {
{ x = 0.556, y = 0.746 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
},
},
{
Name = RRS("Zurii"),
Team = "Neutral",
Coordinates = {
{ x = 0.364, y = 0.444 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
},
},
{
Name = RRS("Inessera"),
Team = "Neutral",
Coordinates = {
{ x = 0.345, y = 0.202 },
},
Recipes = {
{ ID = 46945, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47021, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46914, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47023, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
},
},
},
},
 
[RRS("Ruins of Ahn'Qiraj")] = {
IsCity = false,
Continent = 0,
MapFile = "Ruins-of-Ahn-Qiraj",
Vendors = {
{
Name = RRS("Lieutenant General Andorov"),
Team = "Neutral",
Recipes = {
{ ID = 22221, Type = RRS("Blacksmithing"), Skill = 300, Cost = 80000, Faction = RRS("Cenarion Circle"), Level = 8 },
{ ID = 22219, Type = RRS("Blacksmithing"), Skill = 300, Cost = 50000, Faction = RRS("Cenarion Circle"), Level = 7 },
},
},
},
},
 
[RRS("Karazhan")] = {
IsCity = false,
Continent = 0,
MapFile = "Karazhan",
Vendors = {
{
Name = RRS("Koren"),
Team = "Neutral",
Recipes = {
{ ID = 31393, Type = RRS("Blacksmithing"), Skill = 375, Cost = 240000, Faction = RRS("The Violet Eye"), Level = 6 },
{ ID = 31395, Type = RRS("Blacksmithing"), Skill = 375, Cost = 240000, Faction = RRS("The Violet Eye"), Level = 6 },
{ ID = 31394, Type = RRS("Blacksmithing"), Skill = 375, Cost = 240000, Faction = RRS("The Violet Eye"), Level = 7 },
},
},
{
Name = RRS("Ythyar"),
Team = "Neutral",
Recipes = {
{ ID = 22535, Type = RRS("Enchanting"), Skill = 360, Cost = 100000, Faction = RRS("The Consortium"), Level = 7 },
{ ID = 25903, Type = RRS("Jewelcrafting"), Skill = 365, Cost = 120000, Faction = RRS("The Consortium"), Level = 7 },
{ ID = 25902, Type = RRS("Jewelcrafting"), Skill = 365, Cost = 120000, Faction = RRS("The Consortium"), Level = 6 },
},
},
},
},
 
[RRS("Old Hillsbrad Foothills")] = {
IsCity = false,
Continent = 0,
MapFile = "Old-Hillsbrad-Foothills",
Vendors = {
{
Name = RRS("Aged Dalaran Wizard"),
Team = "Neutral",
Recipes = {
{ ID = 22539, Type = RRS("Enchanting"), Skill = 325, Cost = 60000 },
},
},
{
Name = RRS("Thomas Yance"),
Team = "Neutral",
Recipes = {
{ ID = 25725, Type = RRS("Leatherworking"), Skill = 350, Cost = 50000 },
},
},
},
},
 
[RRS("Black Temple")] = {
IsCity = false,
Continent = 0,
MapFile = "Black-Temple",
Vendors = {
{
Name = RRS("Okuno"),
Team = "Neutral",
Recipes = {
{ ID = 32442, Type = RRS("Blacksmithing"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 5 },
{ ID = 32444, Type = RRS("Blacksmithing"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 5 },
{ ID = 32443, Type = RRS("Blacksmithing"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 6 },
{ ID = 32441, Type = RRS("Blacksmithing"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 6 },
{ ID = 32429, Type = RRS("Leatherworking"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 5 },
{ ID = 32430, Type = RRS("Leatherworking"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 5 },
{ ID = 32431, Type = RRS("Leatherworking"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 6 },
{ ID = 32436, Type = RRS("Leatherworking"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 5 },
{ ID = 32435, Type = RRS("Leatherworking"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 5 },
{ ID = 32433, Type = RRS("Leatherworking"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 6 },
{ ID = 32434, Type = RRS("Leatherworking"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 6 },
{ ID = 32432, Type = RRS("Leatherworking"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 6 },
{ ID = 32447, Type = RRS("Tailoring"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 6 },
{ ID = 32438, Type = RRS("Tailoring"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 5 },
{ ID = 32440, Type = RRS("Tailoring"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 5 },
{ ID = 32439, Type = RRS("Tailoring"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 6 },
{ ID = 32437, Type = RRS("Tailoring"), Skill = 375, Cost = 80000, Faction = RRS("Ashtongue Deathsworn"), Level = 6 },
},
},
},
},
 
[RRS("Hyjal Summit")] = {
IsCity = false,
Continent = 0,
MapFile = "Hyjal-Summit",
Vendors = {
{
Name = RRS("Indormi"),
Team = "Neutral",
Recipes = {
{ ID = 32299, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 32274, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32283, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32290, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32311, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 32277, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32309, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 7 },
{ ID = 32293, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32306, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 32301, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 32300, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 32312, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 32305, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 32288, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32304, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 32310, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 32302, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 7 },
{ ID = 32282, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32291, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32286, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32287, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32284, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32281, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32294, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 5 },
{ ID = 32308, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 7 },
{ ID = 32292, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 7 },
{ ID = 35765, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 35763, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 35762, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
{ ID = 35764, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 60000, Faction = RRS("The Scale of the Sands"), Level = 6 },
},
},
},
},
 
[RRS("Isle of Quel'Danas")] = {
IsCity = false,
Continent = 2,
MapFile = "Isle-of-Quel-Danas",
Vendors = {
{
Name = RRS("Eldara Dawnrunner"),
Team = "Neutral",
Coordinates = {
{ x = 0.473, y = 0.308 },
},
Recipes = {
{ ID = 34872, Type = RRS("Enchanting"), Skill = 375, Cost = 150000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35500, Type = RRS("Enchanting"), Skill = 360, Cost = 150000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35505, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 150000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35502, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 150000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35697, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 250000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35699, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 250000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35695, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 250000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35696, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 250000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35698, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 250000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35708, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 120000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35769, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35766, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35767, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35768, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35755, Type = RRS("Alchemy"), Skill = 375, Cost = 250000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35752, Type = RRS("Alchemy"), Skill = 375, Cost = 250000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35754, Type = RRS("Alchemy"), Skill = 375, Cost = 250000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35753, Type = RRS("Alchemy"), Skill = 375, Cost = 250000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
},
},
{
Name = RRS("Shaani"),
Team = "Neutral",
Coordinates = {
{ x = 0.52, y = 0.33 },
},
Recipes = {
{ ID = 35264, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35244, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35261, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35250, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35263, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35249, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35260, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35248, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35262, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35256, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35245, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35255, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35246, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 5 },
{ ID = 35269, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35254, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35253, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35268, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35239, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35266, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35240, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35238, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35251, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 6 },
{ ID = 35252, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35259, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35241, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35271, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35267, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35270, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35258, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35242, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35247, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35265, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35257, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35243, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35769, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35768, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35767, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35766, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 7 },
{ ID = 35325, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 120000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35322, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 120000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 35323, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 120000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
{ ID = 37504, Type = RRS("Jewelcrafting"), Skill = 375, Cost = 500000, Faction = RRS("Shattered Sun Offensive"), Level = 8 },
},
},
},
},
 
[RRS("Borean Tundra")] = {
IsCity = false,
Continent = 4,
MapFile = "Borean-Tundra",
Vendors = {
{
Name = RRS("Librarian Erickson"),
Team = "Neutral",
Coordinates = {
{ x = 0.466, y = 0.324 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Vix Chromeblaster"),
Team = "Horde",
Coordinates = {
{ x = 0.417, y = 0.544 },
},
Recipes = {
{ ID = 21993, Type = RRS("First Aid"), Skill = 360, Cost = 40000 },
{ ID = 21992, Type = RRS("First Aid"), Skill = 330, Cost = 20000 },
{ ID = 22012, Type = RRS("First Aid"), Skill = 300, Cost = 50000 },
},
},
{
Name = RRS("Logistics Officer Silverstone"),
Team = "Alliance",
Coordinates = {
{ x = 0.577, y = 0.664 },
},
Recipes = {
{ ID = 44937, Type = RRS("Blacksmithing"), Skill = 450, Cost = 150000, Faction = RRS("Alliance Vanguard"), Level = 8 },
{ ID = 44503, Type = RRS("Engineering"), Skill = 450, Cost = 4000000, Faction = RRS("Alliance Vanguard"), Level = 8 },
},
},
{
Name = RRS("Gara Skullcrush"),
Team = "Horde",
Coordinates = {
{ x = 0.414, y = 0.536 },
},
Recipes = {
{ ID = 44938, Type = RRS("Blacksmithing"), Skill = 450, Cost = 150000, Faction = RRS("Horde Expedition"), Level = 8 },
{ ID = 44502, Type = RRS("Engineering"), Skill = 450, Cost = 4000000, Faction = RRS("Horde Expedition"), Level = 8 },
},
},
},
},
 
[RRS("Dalaran")] = {
IsCity = true,
Continent = 4,
MapFile = "Dalaran",
Vendors = {
{
Name = RRS("Tiffany Cartier"),
Team = "Neutral",
Coordinates = {
{ x = 0.402, y = 0.35 },
},
Recipes = {
{ ID = 42652, Type = RRS("Jewelcrafting"), Skill = 440, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42649, Type = RRS("Jewelcrafting"), Skill = 430, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42648, Type = RRS("Jewelcrafting"), Skill = 430, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42651, Type = RRS("Jewelcrafting"), Skill = 440, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42653, Type = RRS("Jewelcrafting"), Skill = 440, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42650, Type = RRS("Jewelcrafting"), Skill = 430, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42298, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41576, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42299, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 42300, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41704, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 42301, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41577, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41705, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41706, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41697, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41692, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42302, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41578, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41693, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42303, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41582, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41708, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41694, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41709, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41696, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41689, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42304, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41581, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42305, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41686, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42306, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41702, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41579, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42307, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41690, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41703, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41710, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41707, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41580, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42308, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41701, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42309, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41699, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42310, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 42311, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 42138, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42312, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41687, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42313, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 42314, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 42315, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41711, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41688, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41698, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 43597, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 43317, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 43320, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 43318, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 43497, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 43485, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 43319, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 41747, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41719, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
},
},
{
Name = RRS("Arille Azuregaze"),
Team = "Neutral",
Coordinates = {
{ x = 0.48, y = 0.381 },
},
Recipes = {
},
},
{
Name = RRS("Ildine Sorrowspear"),
Team = "Neutral",
Coordinates = {
{ x = 0.387, y = 0.408 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Linna Bruder"),
Team = "Neutral",
Coordinates = {
{ x = 0.345, y = 0.342 },
},
Recipes = {
{ ID = 21915, Type = RRS("Tailoring"), Skill = 375, Cost = 60000 },
{ ID = 21914, Type = RRS("Tailoring"), Skill = 365, Cost = 60000, Specialty = RRS("Shadoweave Tailoring") },
{ ID = 21913, Type = RRS("Tailoring"), Skill = 375, Cost = 60000, Specialty = RRS("Shadoweave Tailoring") },
{ ID = 21912, Type = RRS("Tailoring"), Skill = 355, Cost = 60000, Specialty = RRS("Shadoweave Tailoring") },
{ ID = 30483, Type = RRS("Tailoring"), Skill = 350, Cost = 40000 },
},
},
{
Name = RRS("Ainderu Summerleaf"),
Team = "Neutral",
Coordinates = {
{ x = 0.365, y = 0.335 },
},
Recipes = {
{ ID = 21919, Type = RRS("Tailoring"), Skill = 375, Cost = 60000 },
{ ID = 21895, Type = RRS("Tailoring"), Skill = 350, Cost = 40000 },
{ ID = 21916, Type = RRS("Tailoring"), Skill = 355, Cost = 60000, Specialty = RRS("Mooncloth Tailoring") },
{ ID = 21917, Type = RRS("Tailoring"), Skill = 375, Cost = 60000, Specialty = RRS("Mooncloth Tailoring") },
{ ID = 21918, Type = RRS("Tailoring"), Skill = 365, Cost = 60000, Specialty = RRS("Mooncloth Tailoring") },
},
},
{
Name = RRS("Lalla Brightweave"),
Team = "Neutral",
Coordinates = {
{ x = 0.364, y = 0.329 },
},
Recipes = {
{ ID = 21911, Type = RRS("Tailoring"), Skill = 375, Cost = 60000 },
{ ID = 24316, Type = RRS("Tailoring"), Skill = 350, Cost = 40000 },
{ ID = 21908, Type = RRS("Tailoring"), Skill = 355, Cost = 60000, Specialty = RRS("Spellfire Tailoring") },
{ ID = 21909, Type = RRS("Tailoring"), Skill = 365, Cost = 60000, Specialty = RRS("Spellfire Tailoring") },
{ ID = 21910, Type = RRS("Tailoring"), Skill = 375, Cost = 60000, Specialty = RRS("Spellfire Tailoring") },
},
},
{
Name = RRS("Misensi"),
Team = "Horde",
Coordinates = {
{ x = 0.697, y = 0.379 },
},
Recipes = {
{ ID = 43035, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43032, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43029, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43033, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43036, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43024, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43505, Type = RRS("Cooking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43030, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43026, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43018, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43022, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43023, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43028, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43506, Type = RRS("Cooking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43031, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43034, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43020, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43025, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43027, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43019, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43037, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43021, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43017, Type = RRS("Cooking"), Skill = 450, Cost = 5, Notes = RRS("CostItem: 43016") },
{ ID = 44954, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
},
},
{
Name = RRS("Derek Odds"),
Team = "Alliance",
Coordinates = {
{ x = 0.405, y = 0.655 },
},
Recipes = {
{ ID = 43032, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43029, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43033, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43036, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43024, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43505, Type = RRS("Cooking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43030, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43026, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43018, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43022, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43023, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43028, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43506, Type = RRS("Cooking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43031, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43034, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43020, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43025, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43027, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43019, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43037, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43021, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43035, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43017, Type = RRS("Cooking"), Skill = 450, Cost = 5, Notes = RRS("CostItem: 43016") },
{ ID = 44954, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
},
},
{
Name = RRS("Vanessa Sellers"),
Team = "Neutral",
Coordinates = {
{ x = 0.384, y = 0.411 },
},
Recipes = {
{ ID = 44483, Type = RRS("Enchanting"), Skill = 430, Cost = 10, Notes = RRS("CostItem: 34052") },
{ ID = 44496, Type = RRS("Enchanting"), Skill = 440, Cost = 10, Notes = RRS("CostItem: 34052") },
{ ID = 44492, Type = RRS("Enchanting"), Skill = 440, Cost = 10, Notes = RRS("CostItem: 34052") },
{ ID = 44495, Type = RRS("Enchanting"), Skill = 440, Cost = 10, Notes = RRS("CostItem: 34052") },
{ ID = 37339, Type = RRS("Enchanting"), Skill = 430, Cost = 10, Notes = RRS("CostItem: 34052") },
{ ID = 37344, Type = RRS("Enchanting"), Skill = 425, Cost = 10, Notes = RRS("CostItem: 34052") },
{ ID = 44494, Type = RRS("Enchanting"), Skill = 425, Cost = 10, Notes = RRS("CostItem: 34052") },
{ ID = 44487, Type = RRS("Enchanting"), Skill = 435, Cost = 10, Notes = RRS("CostItem: 34052") },
{ ID = 44473, Type = RRS("Enchanting"), Skill = 430, Cost = 10, Notes = RRS("CostItem: 34052") },
{ ID = 44486, Type = RRS("Enchanting"), Skill = 435, Cost = 10, Notes = RRS("CostItem: 34052") },
{ ID = 44490, Type = RRS("Enchanting"), Skill = 440, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 44491, Type = RRS("Enchanting"), Skill = 440, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 44498, Type = RRS("Enchanting"), Skill = 440, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 44484, Type = RRS("Enchanting"), Skill = 430, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 44489, Type = RRS("Enchanting"), Skill = 440, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 44472, Type = RRS("Enchanting"), Skill = 430, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 44471, Type = RRS("Enchanting"), Skill = 430, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 37349, Type = RRS("Enchanting"), Skill = 440, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 37347, Type = RRS("Enchanting"), Skill = 435, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 44488, Type = RRS("Enchanting"), Skill = 440, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 44485, Type = RRS("Enchanting"), Skill = 435, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 44944, Type = RRS("Enchanting"), Skill = 450, Cost = 5, Notes = RRS("CostItem: 34057") },
{ ID = 37340, Type = RRS("Enchanting"), Skill = 410, Cost = 4, Notes = RRS("CostItem: 34052") },
{ ID = 45059, Type = RRS("Enchanting"), Skill = 450, Cost = 10, Notes = RRS("CostItem: 34052") },
},
},
{
Name = RRS("Braeg Stoutbeard"),
Team = "Neutral",
Coordinates = {
{ x = 0.373, y = 0.287 },
},
Recipes = {
{ ID = 44553, Type = RRS("Leatherworking"), Skill = 440, Cost = 2, Notes = RRS("CostItem: 44128") },
{ ID = 44552, Type = RRS("Leatherworking"), Skill = 440, Cost = 2, Notes = RRS("CostItem: 44128") },
{ ID = 44547, Type = RRS("Leatherworking"), Skill = 440, Cost = 2, Notes = RRS("CostItem: 44128") },
{ ID = 44546, Type = RRS("Leatherworking"), Skill = 440, Cost = 2, Notes = RRS("CostItem: 44128") },
{ ID = 44588, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44589, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44587, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44586, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44585, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44584, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44548, Type = RRS("Leatherworking"), Skill = 440, Cost = 2, Notes = RRS("CostItem: 44128") },
{ ID = 44549, Type = RRS("Leatherworking"), Skill = 440, Cost = 2, Notes = RRS("CostItem: 44128") },
{ ID = 44551, Type = RRS("Leatherworking"), Skill = 440, Cost = 2, Notes = RRS("CostItem: 44128") },
{ ID = 44550, Type = RRS("Leatherworking"), Skill = 440, Cost = 2, Notes = RRS("CostItem: 44128") },
{ ID = 44516, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44515, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44513, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44517, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44519, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44514, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44520, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44518, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44526, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44528, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44524, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44523, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44525, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44521, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44527, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44522, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44543, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44538, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44542, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44540, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44544, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44539, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44545, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44541, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44535, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44537, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44533, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44534, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44532, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44530, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44536, Type = RRS("Leatherworking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44531, Type = RRS("Leatherworking"), Skill = 420, Cost = 3, Notes = RRS("CostItem: 38425") },
{ ID = 44932, Type = RRS("Leatherworking"), Skill = 440, Cost = 2, Notes = RRS("CostItem: 44128") },
{ ID = 44933, Type = RRS("Leatherworking"), Skill = 440, Cost = 2, Notes = RRS("CostItem: 44128") },
},
},
{
Name = RRS("Archmage Alvareaux"),
Team = "Neutral",
Coordinates = {
{ x = 0.254, y = 0.474 },
},
Recipes = {
{ ID = 41718, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 40000, Faction = RRS("Kirin Tor"), Level = 8 },
{ ID = 42188, Type = RRS("Tailoring"), Skill = 430, Cost = 50000, Faction = RRS("Kirin Tor"), Level = 8 },
},
},
{
Name = RRS("Bryan Landers"),
Team = "Neutral",
Coordinates = {
{ x = 0.389, y = 0.252 },
},
Recipes = {
{ ID = 23817, Type = RRS("Engineering"), Skill = 405, Cost = 80000 },
},
},
{
Name = RRS("Timothy Jones"),
Team = "Neutral",
Coordinates = {
{ x = 0.404, y = 0.352 },
},
Recipes = {
{ ID = 47010, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46934, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46917, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46919, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46930, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47015, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46900, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46949, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46941, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47020, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46918, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46952, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47016, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46897, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46912, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46953, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47019, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46923, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46904, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46921, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47012, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47008, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46936, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46942, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46945, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46948, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46910, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46901, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46909, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47021, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46947, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46927, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46905, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46943, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46932, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 49112, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46914, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46950, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46920, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46956, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46944, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46937, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46933, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46911, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47007, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46940, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47022, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47018, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46928, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46939, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46916, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46903, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46913, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46938, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46907, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46929, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46924, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46935, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46925, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47017, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47023, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46898, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46926, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46922, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46906, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46908, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46946, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46931, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46902, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46915, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46951, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 46899, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 47011, Type = RRS("Jewelcrafting"), Skill = 450, Cost = 4, Notes = RRS("CostItem: 41596") },
},
},
},
},
 
[RRS("Dragonblight")] = {
IsCity = false,
Continent = 4,
MapFile = "Dragonblight",
Vendors = {
{
Name = RRS("Alys Vol'tyr"),
Team = "Horde",
Coordinates = {
{ x = 0.362, y = 0.465 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Bradley Towns"),
Team = "Horde",
Coordinates = {
{ x = 0.769, y = 0.621 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Modoru"),
Team = "Alliance",
Coordinates = {
{ x = 0.288, y = 0.558 },
},
Recipes = {
{ ID = 20753, Type = RRS("Enchanting"), Skill = 200, Cost = 4000 },
{ ID = 20752, Type = RRS("Enchanting"), Skill = 150, Cost = 3000 },
{ ID = 20758, Type = RRS("Enchanting"), Skill = 45, Cost = 500 },
{ ID = 22307, Type = RRS("Tailoring"), Skill = 225, Cost = 6000 },
},
},
{
Name = RRS("Sairuk"),
Team = "Neutral",
Coordinates = {
{ x = 0.485, y = 0.757 },
},
Recipes = {
{ ID = 44511, Type = RRS("Leatherworking"), Skill = 415, Cost = 50000, Faction = RRS("The Kalu'ak"), Level = 6 },
{ ID = 44509, Type = RRS("Leatherworking"), Skill = 415, Cost = 50000, Faction = RRS("The Kalu'ak"), Level = 7 },
{ ID = 41574, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 20000, Faction = RRS("The Kalu'ak"), Level = 6 },
{ ID = 41568, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 20000, Faction = RRS("The Kalu'ak"), Level = 5 },
{ ID = 45774, Type = RRS("Tailoring"), Skill = 435, Cost = 50000, Faction = RRS("The Kalu'ak"), Level = 7 },
},
},
{
Name = RRS("Cielstrasza"),
Team = "Neutral",
Coordinates = {
{ x = 0.599, y = 0.531 },
},
Recipes = {
{ ID = 41722, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 40000, Faction = RRS("The Wyrmrest Accord"), Level = 8 },
{ ID = 42185, Type = RRS("Tailoring"), Skill = 440, Cost = 50000, Faction = RRS("The Wyrmrest Accord"), Level = 7 },
},
},
},
},
 
[RRS("Grizzly Hills")] = {
IsCity = false,
Continent = 4,
MapFile = "Grizzly-Hills",
Vendors = {
{
Name = RRS("Provisioner Lorkran"),
Team = "Horde",
Coordinates = {
{ x = 0.226, y = 0.659 },
},
Recipes = {
{ ID = 21219, Type = RRS("Cooking"), Skill = 175, Cost = 5000 },
{ ID = 21099, Type = RRS("Cooking"), Skill = 80, Cost = 500 },
},
},
},
},
 
[RRS("Howling Fjord")] = {
IsCity = false,
Continent = 4,
MapFile = "Howling-Fjord",
Vendors = {
{
Name = RRS("Tanaika"),
Team = "Neutral",
Coordinates = {
{ x = 0.255, y = 0.587 },
},
Recipes = {
{ ID = 44511, Type = RRS("Leatherworking"), Skill = 415, Cost = 50000, Faction = RRS("The Kalu'ak"), Level = 6 },
{ ID = 44509, Type = RRS("Leatherworking"), Skill = 415, Cost = 50000, Faction = RRS("The Kalu'ak"), Level = 7 },
{ ID = 41574, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 20000, Faction = RRS("The Kalu'ak"), Level = 6 },
{ ID = 41568, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 20000, Faction = RRS("The Kalu'ak"), Level = 5 },
{ ID = 45774, Type = RRS("Tailoring"), Skill = 435, Cost = 50000, Faction = RRS("The Kalu'ak"), Level = 7 },
},
},
{
Name = RRS("Logistics Officer Brighton"),
Team = "Alliance",
Coordinates = {
{ x = 0.597, y = 0.639 },
},
Recipes = {
{ ID = 44937, Type = RRS("Blacksmithing"), Skill = 450, Cost = 150000, Faction = RRS("Alliance Vanguard"), Level = 8 },
{ ID = 44503, Type = RRS("Engineering"), Skill = 450, Cost = 4000000, Faction = RRS("Alliance Vanguard"), Level = 8 },
},
},
{
Name = RRS("Sebastian Crane"),
Team = "Horde",
Coordinates = {
{ x = 0.796, y = 0.307 },
},
Recipes = {
{ ID = 44938, Type = RRS("Blacksmithing"), Skill = 450, Cost = 150000, Faction = RRS("Horde Expedition"), Level = 8 },
{ ID = 44502, Type = RRS("Engineering"), Skill = 450, Cost = 4000000, Faction = RRS("Horde Expedition"), Level = 8 },
},
},
},
},
 
[RRS("Icecrown")] = {
IsCity = false,
Continent = 4,
MapFile = "Icecrown",
Vendors = {
{
Name = RRS("Duchess Mynx"),
Team = "Neutral",
Coordinates = {
{ x = 0.434, y = 0.206 },
},
Recipes = {
{ ID = 44512, Type = RRS("Leatherworking"), Skill = 415, Cost = 50000, Faction = RRS("Knights of the Ebon Blade"), Level = 6 },
{ ID = 41725, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 40000, Faction = RRS("Knights of the Ebon Blade"), Level = 8 },
{ ID = 41721, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 40000, Faction = RRS("Knights of the Ebon Blade"), Level = 7 },
{ ID = 41562, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 20000, Faction = RRS("Knights of the Ebon Blade"), Level = 5 },
{ ID = 42183, Type = RRS("Tailoring"), Skill = 435, Cost = 50000, Faction = RRS("Knights of the Ebon Blade"), Level = 7 },
},
},
{
Name = RRS("Veteran Crusader Aliocha Segard"),
Team = "Neutral",
Coordinates = {
{ x = 0.876, y = 0.756 },
},
Recipes = {
{ ID = 41726, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 40000, Faction = RRS("Argent Crusade"), Level = 7 },
{ ID = 42187, Type = RRS("Tailoring"), Skill = 430, Cost = 50000, Faction = RRS("Argent Crusade"), Level = 8 },
},
},
{
Name = RRS("Anuur"),
Team = "Neutral",
Coordinates = {
{ x = 0.714, y = 0.208 },
},
Recipes = {
{ ID = 42652, Type = RRS("Jewelcrafting"), Skill = 440, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42649, Type = RRS("Jewelcrafting"), Skill = 430, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 43597, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42648, Type = RRS("Jewelcrafting"), Skill = 430, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42651, Type = RRS("Jewelcrafting"), Skill = 440, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42653, Type = RRS("Jewelcrafting"), Skill = 440, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42650, Type = RRS("Jewelcrafting"), Skill = 430, Cost = 6, Notes = RRS("CostItem: 41596") },
{ ID = 42298, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41576, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42299, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 42300, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41704, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 42301, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41577, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41705, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41706, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41697, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41692, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42302, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41578, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41693, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42303, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41582, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41708, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41694, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41709, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41696, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41689, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42304, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41581, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42305, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41686, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42306, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41702, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41579, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42307, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41690, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41703, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41710, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41707, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41580, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42308, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 43317, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 43320, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 43318, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 41701, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42309, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 43497, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 43485, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
{ ID = 41699, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41747, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42310, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 42311, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 42138, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42312, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41687, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42313, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 42314, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41719, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 42315, Type = RRS("Jewelcrafting"), Skill = 370, Cost = 2, Notes = RRS("CostItem: 41596") },
{ ID = 41711, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 5, Notes = RRS("CostItem: 41596") },
{ ID = 41688, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 41698, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 3, Notes = RRS("CostItem: 41596") },
{ ID = 43319, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 4, Notes = RRS("CostItem: 41596") },
},
},
{
Name = RRS("Fizzix Blastbolt"),
Team = "Neutral",
Coordinates = {
{ x = 0.722, y = 0.208 },
},
Recipes = {
{ ID = 23817, Type = RRS("Engineering"), Skill = 405, Cost = 80000 },
},
},
{
Name = RRS("Mera Mistrunner"),
Team = "Neutral",
Coordinates = {
{ x = 0.724, y = 0.208 },
},
Recipes = {
{ ID = 43035, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43032, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43029, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43033, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43036, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43024, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43017, Type = RRS("Cooking"), Skill = 450, Cost = 5, Notes = RRS("CostItem: 43016") },
{ ID = 43505, Type = RRS("Cooking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43030, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43026, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43018, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43022, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43023, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43028, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43506, Type = RRS("Cooking"), Skill = 425, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43031, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43034, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43020, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43025, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43027, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43019, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43037, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 43021, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
{ ID = 44954, Type = RRS("Cooking"), Skill = 400, Cost = 3, Notes = RRS("CostItem: 43016") },
},
},
},
},
 
[RRS("Wintergrasp")] = {
IsCity = false,
Continent = 4,
MapFile = "Wintergrasp",
Vendors = {
{
Name = RRS("Knight Dameron"),
Team = "Alliance",
Coordinates = {
{ x = 0.517, y = 0.174 },
},
Recipes = {
{ ID = 41730, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41732, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41742, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 24, Notes = RRS("CostItem: 43228") },
{ ID = 41743, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 24, Notes = RRS("CostItem: 43228") },
{ ID = 41744, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 24, Notes = RRS("CostItem: 43228") },
{ ID = 41733, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41740, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41727, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41739, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41734, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41735, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41738, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41728, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41736, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41737, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
},
},
{
Name = RRS("Morgan Day"),
Team = "Neutral",
Coordinates = {
{ x = 0.489, y = 0.176 },
},
Recipes = {
{ ID = 41730, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41732, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41742, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 24, Notes = RRS("CostItem: 43228") },
{ ID = 41743, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 24, Notes = RRS("CostItem: 43228") },
{ ID = 41744, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 24, Notes = RRS("CostItem: 43228") },
{ ID = 41733, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41740, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41727, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41739, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41734, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41735, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41738, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41728, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41736, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41737, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
},
},
{
Name = RRS("Stone Guard Mukar"),
Team = "Horde",
Coordinates = {
{ x = 0.517, y = 0.174 },
},
Recipes = {
{ ID = 41730, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41732, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41742, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 24, Notes = RRS("CostItem: 43228") },
{ ID = 41743, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 24, Notes = RRS("CostItem: 43228") },
{ ID = 41744, Type = RRS("Jewelcrafting"), Skill = 420, Cost = 24, Notes = RRS("CostItem: 43228") },
{ ID = 41733, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41740, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41727, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41739, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41734, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41735, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41738, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41728, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41736, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
{ ID = 41737, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 12, Notes = RRS("CostItem: 43228") },
},
},
},
},
 
[RRS("Sholazar Basin")] = {
IsCity = false,
Continent = 4,
MapFile = "Sholazar-Basin",
Vendors = {
{
Name = RRS("Tanak"),
Team = "Neutral",
Coordinates = {
{ x = 0.551, y = 0.691 },
},
Recipes = {
{ ID = 41723, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 40000, Faction = RRS("Frenzyheart Tribe"), Level = 7 },
{ ID = 41561, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 20000, Faction = RRS("Frenzyheart Tribe"), Level = 5 },
},
},
{
Name = RRS("Geen"),
Team = "Alliance",
Coordinates = {
{ x = 0.545, y = 0.562 },
},
Recipes = {
{ ID = 41724, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 40000, Faction = RRS("The Oracles"), Level = 7 },
{ ID = 41567, Type = RRS("Jewelcrafting"), Skill = 350, Cost = 20000, Faction = RRS("The Oracles"), Level = 5 },
},
},
},
},
 
[RRS("The Storm Peaks")] = {
IsCity = false,
Continent = 4,
MapFile = "The-Storm-Peaks",
Vendors = {
{
Name = RRS("Lillehoff"),
Team = "Neutral",
Coordinates = {
{ x = 0.661, y = 0.615 },
},
Recipes = {
{ ID = 44510, Type = RRS("Leatherworking"), Skill = 415, Cost = 50000, Faction = RRS("The Sons of Hodir"), Level = 6 },
{ ID = 41720, Type = RRS("Jewelcrafting"), Skill = 390, Cost = 40000, Faction = RRS("The Sons of Hodir"), Level = 8 },
{ ID = 42184, Type = RRS("Tailoring"), Skill = 445, Cost = 50000, Faction = RRS("The Sons of Hodir"), Level = 8 },
},
},
},
},
 
}
 
RecipeRadar_MaxVendorsByLocation = 21
RecipeRadar_MaxVendorCoordinates = 5
 
trunk/RecipeRadar/NameMap.lua New file
0,0 → 1,490

-- NameMap.lua: recipes named differently after learning
-- Auto generated on 8/9/2009 10:36:58 PM
 
RecipeRadar_NameMap = {
 
["enUS"] = {
-- Alchemy
["Transmute: Arcanite"] = "Transmute Arcanite",
["Transmute: Iron to Gold"] = "Transmute Iron to Gold",
["Transmute: Mithril to Truesilver"] = "Transmute Mithril to Truesilver",
["Transmute: Fire to Earth"] = "Transmute Fire to Earth",
["Transmute: Air to Fire"] = "Transmute Air to Fire",
["Transmute: Earth to Water"] = "Transmute Earth to Water",
["Transmute: Water to Air"] = "Transmute Water to Air",
["Mighty Troll\'s Blood Elixir"] = "Major Troll\'s Blood Elixir",
["Transmute: Elemental Fire"] = "Transmute Elemental Fire",
["Transmute: Primal Air to Fire"] = "Transmute Primal Air to Fire",
["Transmute: Primal Earth to Water"] = "Transmute Primal Earth to Water",
["Transmute: Primal Fire to Earth"] = "Transmute Primal Fire to Earth",
["Transmute: Primal Might"] = "Transmute Primal Might",
["Transmute: Primal Water to Air"] = "Transmute Primal Water to Air",
["Transmute: Earthstorm Diamond"] = "Transmute Earthstorm Diamond",
["Transmute: Skyfire Diamond"] = "Transmute Skyfire Diamond",
["Transmute: Skyfire Diamond"] = "Transmute Skyfire Diamond",
["Transmute: Primal Fire to Earth"] = "Transmute Primal Fire to Earth",
-- Enchanting
["Enchant 2H Weapon - Scourgebane"] = "Enchant Weapon - Scourgebane",
["Enchant Bracers - Superior Spellpower"] = "Enchant Bracer - Superior Spellpower",
["Enchant Bracers - Major Stamina"] = "Enchant Bracer - Major Stamina",
-- Engineering
["Firework Cluster Launcher"] = "Cluster Launcher",
-- Leatherworking
["Felstalker Bracer"] = "Felstalker Bracers",
["Felstalker Bracer"] = "Felstalker Bracers",
-- Tailoring
["Festive Red Pant Suit"] = "Festival Suit",
-- Jewelcrafting
["Figurine - Truesilver Crab"] = "Truesilver Crab",
["Figurine - Black Pearl Panther"] = "Black Pearl Panther",
["Figurine - Dawnstone Crab"] = "Dawnstone Crab",
["Figurine - Dawnstone Crab"] = "Dawnstone Crab",
["Figurine - Felsteel Boar"] = "Felsteel Boar",
["Figurine - Living Ruby Serpent"] = "Living Ruby Serpent",
["Figurine - Nightseye Panther"] = "Nightseye Panther",
["Figurine - Talasite Owl"] = "Talasite Owl",
},
 
["enGB"] = {
-- Alchemy
["Transmute: Arcanite"] = "Transmute Arcanite",
["Transmute: Iron to Gold"] = "Transmute Iron to Gold",
["Transmute: Mithril to Truesilver"] = "Transmute Mithril to Truesilver",
["Transmute: Fire to Earth"] = "Transmute Fire to Earth",
["Transmute: Air to Fire"] = "Transmute Air to Fire",
["Transmute: Earth to Water"] = "Transmute Earth to Water",
["Transmute: Water to Air"] = "Transmute Water to Air",
["Mighty Troll\'s Blood Elixir"] = "Major Troll\'s Blood Elixir",
["Transmute: Elemental Fire"] = "Transmute Elemental Fire",
["Transmute: Primal Air to Fire"] = "Transmute Primal Air to Fire",
["Transmute: Primal Earth to Water"] = "Transmute Primal Earth to Water",
["Transmute: Primal Fire to Earth"] = "Transmute Primal Fire to Earth",
["Transmute: Primal Might"] = "Transmute Primal Might",
["Transmute: Primal Water to Air"] = "Transmute Primal Water to Air",
["Transmute: Earthstorm Diamond"] = "Transmute Earthstorm Diamond",
["Transmute: Skyfire Diamond"] = "Transmute Skyfire Diamond",
["Transmute: Skyfire Diamond"] = "Transmute Skyfire Diamond",
["Transmute: Primal Fire to Earth"] = "Transmute Primal Fire to Earth",
-- Enchanting
["Enchant 2H Weapon - Scourgebane"] = "Enchant Weapon - Scourgebane",
["Enchant Bracers - Superior Spellpower"] = "Enchant Bracer - Superior Spellpower",
["Enchant Bracers - Major Stamina"] = "Enchant Bracer - Major Stamina",
-- Engineering
["Firework Cluster Launcher"] = "Cluster Launcher",
-- Leatherworking
["Felstalker Bracer"] = "Felstalker Bracers",
["Felstalker Bracer"] = "Felstalker Bracers",
-- Tailoring
["Festive Red Pant Suit"] = "Festival Suit",
-- Jewelcrafting
["Figurine - Truesilver Crab"] = "Truesilver Crab",
["Figurine - Black Pearl Panther"] = "Black Pearl Panther",
["Figurine - Dawnstone Crab"] = "Dawnstone Crab",
["Figurine - Dawnstone Crab"] = "Dawnstone Crab",
["Figurine - Felsteel Boar"] = "Felsteel Boar",
["Figurine - Living Ruby Serpent"] = "Living Ruby Serpent",
["Figurine - Nightseye Panther"] = "Nightseye Panther",
["Figurine - Talasite Owl"] = "Talasite Owl",
},
 
["deDE"] = {
-- Alchemy
["Transmutieren: Arkanit"] = "Arkanit transmutieren",
["Transmutieren: Eisen in Gold"] = "Eisen in Gold transmutieren",
["Transmutieren: Mithril in Echtsilber"] = "Mithril in Echtsilber transmutieren",
["Transmutieren: Feuer zu Erde"] = "Feuer zu Erde transmutieren",
["Transmutieren: Luft zu Feuer"] = "Luft zu Feuer transmutieren",
["Transmutieren: Erde zu Wasser"] = "Erde zu Wasser transmutieren",
["Transmutieren: Wasser zu Luft"] = "Wasser zu Luft transmutieren",
["Mächtiges Trollblutelixier"] = "Erhebliches Trollblutelixier",
["Transmutieren: Urluft zu Urfeuer"] = "Urluft zu Urfeuer transmutieren",
["Transmutieren: Urerde zu Urwasser"] = "Urerde zu Urwasser transmutieren",
["Transmutieren: Urfeuer zu Urerde"] = "Urfeuer zu Urerde transmutieren",
["Transmutieren: Urmacht"] = "Urmacht transmutieren",
["Transmutieren: Urwasser zu Urluft"] = "Urwasser zu Urluft transmutieren",
["Transmutieren: Erdsturmdiamant"] = "Erdsturmdiamanten transmutieren",
["Transmutieren: Himmelsfeuerdiamant"] = "Himmelsfeuerdiamanten transmutieren",
["Transmutieren: Himmelsfeuerdiamant"] = "Himmelsfeuerdiamanten transmutieren",
["Transmutieren: Urfeuer zu Urerde"] = "Urfeuer zu Urerde transmutieren",
-- Enchanting
["Handschuhe - Präzise Schläge"] = "Handschuhe - Präzise Stöße",
["Waffe - Lebensschutz"] = "Waffe - Lebenswächter",
["Zweihandwaffe - Geißelbann"] = "Waffe - Geißelbann",
["Armschiene - Höchste Ausdauer"] = "Armschiene - Erhebliche Ausdauer",
-- Leatherworking
["Verzauberte Grollhufstiefel"] = "Verzauberte Grollschuppenstiefel",
["Handgelenksschützer der erlösten Seele"] = "Handgelenksschutz der erlösten Seele",
-- Tailoring
["Festlicher roter Hosenanzug"] = "Festtagsanzug",
-- Jewelcrafting
["Figur - Echtsilberkrebs"] = "Echtsilberkrebs",
["Figur - Schwarzer Perlenpanther"] = "Schwarzer Perlenpanther",
["Figur - Dämmersteinkrebs"] = "Dämmersteinkrebs",
["Figur - Dämmersteinkrebs"] = "Dämmersteinkrebs",
["Figur - Teufelsstahleber"] = "Teufelsstahleber",
["Figur - Lebendige Rubinschlange"] = "Lebendige Rubinschlange",
["Figur - Nachtaugenpanther"] = "Nachtaugenpanther",
["Figur - Talasiteule"] = "Talasiteule",
["Glänzender Golddraenit"] = "Brillantierter Golddraenit",
["Ring der scharlachroten Schatten"] = "Ring des scharlachroten Schattens",
},
 
["frFR"] = {
-- Alchemy
["Transmutation : Fer en Or"] = "Transmutation du fer en or",
["Transmutation : Mithril en Vrai-argent"] = "Transmutation du mithril en vrai-argent",
["Transmutation : Feu en Terre"] = "Transmutation du Feu en Terre",
["Transmutation : Air en Feu"] = "Transmutation de l\'Air en Feu",
["Transmutation : Terre en Eau"] = "Transmutation de la Terre en Eau",
["Transmutation : Eau en Air"] = "Transmutation de l\'Eau en Air",
["Elixir de sang de troll puissant"] = "Elixir de sang de troll majeur",
["Transmutation : Feu élémentaire"] = "Transmutation du feu élémentaire",
["Transmutation primordiale : Air en Feu"] = "Transmutation primordiale (Air en Feu)",
["Transmutation primordiale : Terre en Eau"] = "Transmutation primordiale (Terre en Eau)",
["Transmutation primordiale : Feu en Terre"] = "Transmutation primordiale (Feu en Terre)",
["Transmutation primordiale : Pouvoir"] = "Transmutation primordiale (Pouvoir)",
["Transmutation primordiale : Eau en Air"] = "Transmutation primordiale (Eau en Air)",
["Transmutation : Diamant tonneterre"] = "Transmutation de diamant tonneterre",
["Transmutation : Diamant brûleciel"] = "Transmutation de diamant brûleciel",
["Transmutation : Diamant brûleciel"] = "Transmutation de diamant brûleciel",
["Transmutation primordiale : Feu en Terre"] = "Transmutation primordiale (Feu en Terre)",
-- Enchanting
["Ench. d\'arme 2M (Intelligence inférieure)"] = "Enchantement d\'arme 2M (Intelligence inférieure)",
["Ench. de brassards (Déviation)"] = "Enchantement de brassards (Déviation)",
["Ench. de brassards (Déviation inférieure)"] = "Enchantement de brassards (Déviation inférieure)",
["Ench. de brassards (Force inférieure)"] = "Enchantement de brassards (Force inférieure)",
["Ench. de cape (Agilité mineure)"] = "Enchantement de cape (Agilité mineure)",
["Ench. de bouclier (Endurance supérieure)"] = "Enchantement de bouclier (Endurance supérieure)",
["Ench. de bottes (Agilité mineure)"] = "Enchantement de bottes (Agilité mineure)",
["Ench. de plastron (Mana inférieur)"] = "Enchantement de plastron (Mana inférieur)",
["Ench. de plastron (Santé majeure)"] = "Enchantement de plastron (Santé majeure)",
["Ench. de cape (Défense excellente)"] = "Enchantement de cape (Défense excellent)",
["Ench. d\'arme (Intelligence renforcée)"] = "Enchantement d\'arme (Intelligence renforcée)",
["Ench. d\'arme (Esprit renforcé)"] = "Enchantement d\'arme (Esprit renforcé)",
["Ench. d\'arme (Force)"] = "Enchantement d\'arme (Force)",
["Ench. d\'arme (Agilité)"] = "Enchantement d\'arme (Agilité)",
["Ench. de brassards (Régénération de mana)"] = "Enchantement de brassards (Régénération de mana)",
["Ench. de cape (Résistance au Feu supérieure)"] = "Enchantement de cape (Résistance au Feu supérieure)",
["Ench. de cape (Résistance à la Nature supérieure)"] = "Enchantement de cape (Résistance à la Nature supérieure)",
["Ench. d\'arme 2M (Agilité)"] = "Enchantement d\'arme 2M (Agilité)",
["Ench. de cape (Pénétration des sorts)"] = "Enchantement de cape (Pénétration des sorts)",
["Ench. de gants (Soins majeurs)"] = "Enchantement de gants (Soins majeurs)",
["Ench. de gants (Puissance des sorts majeure)"] = "Enchantement de gants (Puissance des sorts majeure)",
["Ench. de gants (Frappes précises)"] = "Enchantement de gants (Frappes précises)",
["Ench. d\'arme (Soins majeurs)"] = "Enchantement d\'arme (Soins majeurs)",
["Ench. de brassards (Soins excellents)"] = "Enchantement de brassards (Soins excellents)",
["Ench. de brassards (Soins excellents)"] = "Enchantement de brassards (Soins excellents)",
["Ench. de plastron (Carac. exceptionnelles)"] = "Enchantement de plastron (Caractéristiques exceptionelles)",
["Ench. de plastron (Carac. exceptionnelles)"] = "Enchantement de plastron (Caractéristiques exceptionelles)",
["Ench. d\'anneau (Pouvoir de guérison)"] = "Enchantement d\'anneau (Pouvoir de guérison)",
["Ench. d\'anneau (Puissance des sorts)"] = "Enchantement d\'anneau (Puissance des sorts)",
["Ench. de bouclier (Intelligence)"] = "Enchantement de bouclier (Intelligence)",
["Ench. de bouclier (Endurance majeure)"] = "Enchantement de bouclier (Endurance majeure)",
["Ench. d\'anneau (Frappe)"] = "Enchantement d\'anneau (Frappe)",
["Ench. d\'arme (Frappe majeure)"] = "Enchantement d\'arme (Frappe majeure)",
["Ench. de cape (Esquive)"] = "Enchantement de cape (Esquive)",
["Ench. de cape (Camouflage)"] = "Enchantement de cape (Camouflage)",
["Ench. de cape (Discrétion)"] = "Enchantement de cape (Discrétion)",
["Ench. de cape (Discrétion)"] = "Enchantement de cape (Discrétion)",
["Ench. de gants (Agilité excellente)"] = "Enchantement de gants (Agilité excellente)",
["Ench. de gants (Menace)"] = "Enchantement de gants (Menace)",
["Ench. d\'anneau (Caractéristiques)"] = "Enchantement d\'anneau (Caractéristiques)",
["Ench. d\'arme (Agilité supérieure)"] = "Enchantement d\'arme (Agilité supérieure)",
["Ench. de plastron (Défense)"] = "Enchantement de plastron (Défense)",
["Ench. d\'arme 2M (Massacre)"] = "Enchantement d\'arme 2M (Massacre)",
["Ench. d\'arme (Précision)"] = "Enchantement d\'arme (Précision)",
["Ench. d\'arme (Berserker)"] = "Enchantement d\'arme (Berserker)",
["Ench. d\'arme (Magie noire)"] = "Enchantement d\'arme (Magie noire)",
["Ench. d\'arme (Tueur de géant)"] = "Enchantement d\'arme (Tueur de géant)",
["Ench. d\'arme (Brise-glace)"] = "Enchantement d\'arme (Brise-glace)",
["Ench. d\'arme (Gardevie)"] = "Enchantement d\'arme (Gardevie)",
["Ench. d\'arme (Puissance des sorts renforcée)"] = "Enchantement d\'arme (Puissance des sorts renforcée)",
["Ench. d\'arme 2M (Plaie-du-Fléau)"] = "Enchantement d\'arme (Plaie du Fléau)",
["Ench. d\'arme (Toute-puissance excellente)"] = "Enchantement d\'arme (Toute-puissance excellente)",
["Ench. de bottes (Assaut supérieur)"] = "Enchantement de bottes (Assaut supérieur)",
["Ench. de bottes (Vitalité rohart)"] = "Enchantement de bottes (Vitalité des roharts)",
["Ench. de brassards (Puissance des sorts excellente)"] = "Enchantement de brassards (Puissance des sorts excellente)",
["Ench. de brassards (Assaut supérieur)"] = "Enchantement de brassards (Assaut supérieur)",
["Ench. de plastron (Caract. puissantes)"] = "Enchantement de plastron (Caractéristiques puissantes)",
["Ench. de cape (Vitesse supérieure)"] = "Enchantement de cape (Vitesse supérieure)",
["Ench. de cape (Armure puissante)"] = "Enchantement de cape (Armure puissante)",
["Ench. de cape (Armure de l\'ombre)"] = "Enchantement de cape (Armure de l\'ombre)",
["Ench. de cape (Tisse-titan)"] = "Enchantement de cape (Tisse-titan)",
["Ench. de cape (Sagesse)"] = "Enchantement de cape (Sagesse)",
["Ench. de gants (Homme d\'armes)"] = "Enchantement de gants (Homme d\'armes)",
["Ench. de brassards (Endurance majeure)"] = "Enchantements de brassards (Endurance majeure)",
["Ench. de plastron (Résilience exceptionnelle)"] = "Enchantement de plastron (Résilience exceptionnelle)",
["Ench. de brassards (Pouvoir de guérison)"] = "Enchantement de brassards (Pouvoir de guérison)",
["Ench. de bâton (Puissance des sorts supérieure)"] = "Enchantement de bâton (Puissance des sorts supérieure)",
-- Engineering
["Lanceur de chapelets de feu d\'artifice"] = "Lanceur de chapelets",
-- Leatherworking
["Armure de jambe de cobra du Néant"] = "Armure de jambe en cobra du Néant",
["Armure de jambe de cobra du Néant"] = "Armure de jambe en cobra du Néant",
-- Tailoring
["Habit de fête rouge"] = "Habit de fête",
-- Jewelcrafting
["Figurine de crabe en vrai-argent"] = "Crabe en vrai-argent",
["Figurine de panthère de perle noire"] = "Panthère de perle noire",
["Figurine de crabe de pierre d\'aube"] = "Crabe de pierre d\'aube",
["Figurine de crabe de pierre d\'aube"] = "Crabe de pierre d\'aube",
["Figurine de sanglier en gangracier"] = "Sanglier en gangracier",
["Figurine de serpent de rubis vivant"] = "Serpent de rubis vivant",
["Figurine de panthère d\'oeil de nuit"] = "Panthère d\'oeil de nuit",
["Figurine de chouette de talasite"] = "Chouette de talasite",
["Diamant brûleciel énigmatique"] = "Diamant brûleciel de mystère",
["Coeur de don Julio"] = "Cœur de don Julio",
["Oeil de nuit régalien"] = "Œil de nuit régalien",
["Oeil de lion mystique"] = "Œil de lion mystique",
["Topaze monarchique durable"] = "Topaze monarchique solide",
["Diamant flambeciel énigmatique"] = "flambeciel énigmatique",
["Enorme citrine durable"] = "Enorme citrine solide",
["Cristal ombreux mystérieux"] = "ombreux mystérieux",
["Opale du crépuscule luminescente"] = "Opale du crépuscule luminescente.",
["Cristal ombreux du défenseur"] = "Cristal ombreux de défenseur",
},
 
["esES"] = {
-- Alchemy
["Transmutar: arcanita"] = "transmutar arcanita",
["Transmutar: hierro a oro"] = "transmutar hierro a oro",
["Transmutar: mitril a veraplata"] = "transmutar mitril a veraplata",
["Transmutar: fuego a tierra"] = "transmutar fuego a tierra",
["Transmutar: aire en fuego"] = "transmutar aire en fuego",
["Transmutar: tierra a agua"] = "transmutar tierra a agua",
["Transmutar: agua a aire"] = "transmutar agua a aire",
["Elixir de sangre de trol poderoso"] = "elixir de sangre de trol sublime",
["Transmutar: fuego elemental"] = "transmutar fuego elemental",
["Transmutar: aire primigenio a fuego primigenio"] = "transmutar aire primigenio en fuego",
["Transmutar: tierra primigenia a agua primigenia"] = "transmutar tierra primigenia a agua",
["Transmutar: fuego primigenio a tierra primigenia"] = "transmutar fuego primigenio a tierra",
["Transmutar: poderío primigenio"] = "transmutar poderío primigenio",
["Transmutar: agua primigenia a aire primigenio"] = "transmutar agua primigenia a aire",
["Transmutar: diamante de tormenta de tierra"] = "transmutar diamante de tormenta de tierra",
["Transmutar: diamante de fuego celeste"] = "transmutar diamante de fuego celeste",
["Transmutar: diamante de fuego celeste"] = "transmutar diamante de fuego celeste",
["Transmutar: fuego primigenio a tierra primigenia"] = "transmutar fuego primigenio a tierra",
-- Blacksmithing
["Guanteletes de alma de sangre"] = "guanteletes Alma de sangre",
["Sobrehombros de alma de sangre"] = "sobrehombros Alma de sangre",
["Coraza de alma de sangre"] = "coraza alma de sangre",
["Coraza Parraférrea"] = "coraza parraférrea",
["Guantes Parraférrea"] = "guantes parraférrea",
["Cinturón Parraférrea"] = "cinturón parraférrea",
["Cinturón de adamantita encantada"] = "cinturón de adamantita encantado",
["Leotardos de adamantita encantada"] = "Leotardos de adamantita encantados",
-- Enchanting
["Encantar arma 2M: intelecto inferior"] = "encantar arma de 2M: intelecto inferior",
["Encantar capa: resistencia al Fuego superior"] = "encantar capa: Resistencia al Fuego superior",
["Encantar arma 2M: agilidad"] = "encantar arma de 2M: agilidad",
["Encantar guantes: golpes precisos"] = "encantar guantes: Golpes precisos",
["Encantar arma 2M: masacre"] = "encantar arma de 2M: masacre",
["Encantar arma: precisión"] = "encantar arma: Precisión",
["Encantar arma 2M: finiquiplaga"] = "encantar arma: Finiquiplaga",
-- Engineering
["Lanzatracas de fuegos de artificio"] = "lanzatracas",
-- Leatherworking
["Brazales de escórpido pesados"] = "brazales de escórpido gruesos",
["Yelmo de escórpido pesado"] = "yelmo de escórpido grueso",
["Coraza Escupefuego"] = "coraza escupefuego",
["Brazales acecharenas"] = "brazales Acecharenas",
["Guanteletes acecharenas"] = "guanteletes Acecharenas",
["Coraza acecharenas"] = "coraza Acecharenas",
["Brazal de acechador vil"] = "brazales de acechador vil",
["Brazal de acechador vil"] = "brazales de acechador vil",
["Botas de uñagrieta pesadas"] = "botas uñagrieta pesadas",
["Leotardos de uñagrieta pesados"] = "leotardos uñagrieta pesados",
["Jubón de uñagrieta pesado"] = "jubón de uñagrieta grueso",
["Botas de uñagrieta encantadas"] = "botas uñagrieta encantadas",
["Guantes de uñagrieta encantados"] = "guantes uñagrieta encantados",
-- Tailoring
["Bolsa de las Sombras de ébano"] = "bolsa de Sombra de ébano",
["Hilo de hechizo de oro"] = "hilo de hechizo dorado",
["Fin de la Noche"] = "Fin de la noche",
["Pantalones rojos de traje festivos"] = "traje de fiesta",
-- Cooking
["Delicia de furia del Loch Modan"] = "delicia de furia de Loch Modan",
["Aperitivo para alimañas"] = "aperitivos para alimañas",
["Festín gigante"] = "festín gigantesco",
-- Jewelcrafting
["Figurilla: cangrejo de veraplata"] = "cangrejo de veraplata",
["Figurilla: pantera de perla negra"] = "pantera de perla negra",
["Figurilla: cangrejo de piedra del alba"] = "cangrejo de piedra del alba",
["Figurilla: cangrejo de piedra del alba"] = "cangrejo de piedra del alba",
["Figurilla: jabalí de acero vil"] = "jabalí de acero vil",
["Figurilla: serpiente de rubí vivo"] = "serpiente de rubí vivo",
["Figurilla: pantera de ojo de noche"] = "pantera de ojo de noche",
["Figurilla: búho de talasita"] = "búho de talasita",
["Ojo de noche regio"] = "Ojo de noche majestuoso",
["Gran ojo de león"] = "gran Ojo de león",
["Ópalo crepuscular regio"] = "ópalo crepuscular majestuoso",
},
 
["ruRU"] = {
-- Alchemy
["Трансмутация: арканит"] = "трансмутация арканита",
["Трансмутация: огонь в землю"] = "трансмутация огня в землю",
["Трансмутация: воздух в огонь"] = "трансмутация воздуха в огонь",
["Трансмутация: земля в воду"] = "трансмутация земли в воду",
["Трансмутация: вода в воздух"] = "трансмутация воды в воздух",
["Мощный эликсир тролльей крови"] = "большое зелье тролльей крови",
["Трансмутация: первородный огонь"] = "трансмутация первородного огня",
["Трансмутация: первичный воздух в огонь"] = "трансмутация изначального воздуха в огонь",
["Трансмутация: первичная земля в воду"] = "трансмутация изначальной земли в воду",
["Трансмутация: изначальный огонь в землю"] = "трансмутация изначального огня в землю",
["Трансмутация: изначальная мощь"] = "трансмутация изначальной мощи",
["Трансмутация: первичная вода в воздух"] = "трансмутация изначальной воды в воздух",
["Трансмутация: алмаз земной бури"] = "трансмутация алмаза земной бури",
["Трансмутация: алмаз небесного огня"] = "трансмутация алмаза небесного огня",
["Трансмутация: алмаз небесного огня"] = "трансмутация алмаза небесного огня",
["Трансмутация: изначальный огонь в землю"] = "трансмутация изначального огня в землю",
-- Blacksmithing
["Изысканный ториевый одноручный топор"] = "изысканный одноручный топор секач",
-- Enchanting
["Чары для двуручного оружия - интеллект I"] = "чар для двуручного оружия - интеллект I",
["Чары для наручей - отражение III"] = "чар для наручей - отражение III",
["Чары для наручей - отражение II"] = "чар для наручей - отражение II",
["Чары для наручей - сила II"] = "чар для наручей - сила II",
["Чары для плаща - ловкость I"] = "чар для плаща - ловкость I",
["Чары для щита - выносливость IV"] = "чар для щита - выносливость IV",
["Чары для обуви - ловкость I"] = "чар для обуви - ловкость I",
["Чары для нагрудника - мана II"] = "чар для нагрудника - мана II",
["Чары для нагрудника - здоровье VI"] = "чар для нагрудника - здоровье VI",
["Чары для плаща - защита III"] = "чар для плаща - защита III",
["Чары для оружия - могучий интеллект"] = "чар для оружия - могучий интеллект",
["Чары для оружия - могучий дух"] = "чар для оружия - могучий дух",
["Чары для оружия - сила"] = "чар для оружия - сила",
["Чары для оружия - ловкость I"] = "чар для оружия - ловкость I",
["Чары для наручей - восполнение маны"] = "чар для наручей - восполнение маны",
["Чары для плаща - сопротивление огню III"] = "чар для плаща - сопротивление огню III",
["Чары для плаща - сопротивление силам природы I"] = "чар для плаща - сопротивление силам природы I",
["Чары для двуручного оружия - ловкость I"] = "чар для двуручного оружия - ловкость I",
["Чары для плаща - проникающая способность заклинаний"] = "чар для плаща - проникающая способность заклинаний",
["Чары для перчаток - лечение I"] = "чар для перчаток - лечение I",
["Чары для перчаток - сила заклинаний I"] = "чар для перчаток - сила заклинаний I",
["Чары для перчаток - точные удары"] = "чар для перчаток - точные удары",
["Чары для оружия - лечение I"] = "чар для оружия - лечение I",
["Чары для наручей - лечение II"] = "чар для наручей - лечение II",
["Чары для наручей - лечение II"] = "чар для наручей - лечение II",
["Чары для нагрудника - все характеристики V"] = "чар для нагрудника - все характеристики V",
["Чары для нагрудника - все характеристики V"] = "чар для нагрудника - все характеристики V",
["Чары для кольца - целительная сила"] = "чар для кольца - целительная сила",
["Чары для кольца - сила заклинаний I"] = "чар для кольца - сила заклинаний I",
["Чары для щита - интеллект I"] = "чар для щита - интеллект I",
["Чары для щита - выносливость V"] = "чар для щита - выносливость V",
["Чары для кольца - удар"] = "чар для кольца - удар",
["Чары для оружия - удар VI"] = "чар для оружия - удар VI",
["Чары для плаща - уклонение"] = "чар для плаща - уклонение",
["Чары для плаща - незаметность"] = "чар для плаща - незаметность",
["Чары для плаща - скрытность"] = "чар для плаща - скрытность",
["Чары для плаща - скрытность"] = "чар для плаща - скрытность",
["Чары для перчаток - ловкость III"] = "чар для перчаток - ловкость III",
["Чары для перчаток - угроза"] = "чар для перчаток - угроза",
["Чары для кольца - все характеристики"] = "чар для кольца - все характеристики",
["Чары для оружия - ловкость II"] = "чар для оружия - ловкость II",
["Чары для нагрудника - защита I"] = "чар для нагрудника - защита I",
["Чары для двуручного оружия - резня"] = "чар для двуручного оружия - резня",
["Чары для оружия - меткость"] = "чар для оружия - точность",
["Чары для оружия - берсерк"] = "чар для оружия - берсерк",
["Чары для оружия - черная магия"] = "чар для оружия - черная магия",
["Чары для оружия - истребитель гигантов"] = "чар для оружия - истребитель гигантов",
["Чары для оружия - ледорез"] = "чар для оружия - ледорез",
["Чары для оружия - оберег"] = "чар для оружия - оберег",
["Чары для оружия - сила заклинаний III"] = "чар для оружия - сила заклинаний III",
["Чары для двуручного оружия - проклятие Плети"] = "чар для оружия - проклятие Плети",
["Чары для оружия - могущество III"] = "чар для оружия - могущество III",
["Чары для обуви - штурм II"] = "чар для обуви - штурм II",
["Чары для обуви - живучесть клыкарра"] = "чар для обуви - живучесть клыкарра",
["Чары для наручей - сила заклинаний III"] = "чар для наручей - сила заклинаний III",
["Чары для наручей - штурм II"] = "чар для наручей - штурм II",
["Чары для нагрудника - все характеристики VII"] = "чар для нагрудника - все характеристики VII",
["Чары для плаща - скорость II"] = "чар для плаща - скорость II",
["Чары для плаща - могучая броня"] = "чар для плаща - могучая броня",
["Чары для плаща - теневая броня"] = "чар для плаща - теневая броня",
["Чары для плаща - ткань титанов"] = "чар для плаща - ткань титанов",
["Чары для плаща - мудрость"] = "чар для плаща - мудрость",
["Чары для перчаток - оружейник"] = "чар для перчаток - оружейник",
["Чары для наручей - выносливость VI"] = "чар для наручей - выносливость V",
["Чары для нагрудника - устойчивость II"] = "чар для нагрудника - устойчивость II",
["Чары для наручей - целительная сила"] = "чар для наручей - целительная сила",
["Чары для посоха - сила заклинаний II"] = "чар для посоха - сила заклинаний II",
-- Leatherworking
["Рукавицы дьявозавра"] = "рукавицы девизавра",
["Пояс гончей Недр"] = "пояс пса недр",
["Сапоги гончей Недр"] = "сапоги пса недр",
-- Tailoring
["Праздничный красный костюм"] = "праздничный костюм",
["Сумка Бездны"] = "сумка бездны",
-- Jewelcrafting
["Статуэтка краба из истинного серебра"] = "краб из истинного серебра",
["Статуэтка пантеры из черного жемчуга"] = "пантера из черного жемчуга",
["Статуэтка краба из зоревика"] = "краб из зоревика",
["Статуэтка краба из зоревика"] = "краб из зоревика",
["Статуэтка вепря из оскверненной стали"] = "Вепрь из оскверненной стали",
["Статуэтка змеи из животворного рубина"] = "змея из животворного рубина",
["Статуэтка пантеры из ока ночи"] = "пантера из ока ночи",
["Статуэтка таласситовой совы"] = "таласситовая сова",
["Прочный золотой дренит"] = "твердый золотой дренит",
["Королевский сумрачный дренит"] = "королевский сумеречный дренит",
["Изменчивый сумрачный дренит"] = "изменчивый сумеречный дренит",
["Царственный сумрачный дренит"] = "царственный сумеречный дренит",
["Светящийся сумрачный дренит"] = "светящийся сумеречный дренит",
["Цельный лазурный лунный камень"] = "твердый лазурный лунный камень",
["Рельефная пунцовая шпинель"] = "рельефная алая шпинель",
["Яркая пунцовая шпинель"] = "яркая алая шпинель",
["Изысканная пунцовая шпинель"] = "изысканная алая шпинель",
["Руническая пунцовая шпинель"] = "руническая алая шпинель",
["Цельный неземной сапфир"] = "твердый неземной сапфир",
["Изящная пунцовая шпинель"] = "изящная алая шпинель",
["Каплевидная пунцовая шпинель"] = "каплевидная алая шпинель",
["Прочный львиный глаз"] = "твердый львиный глаз",
["Пунцовое солнце"] = "багровое солнце",
["Мощный морской изумруд"] = "могущественный морской изумруд",
["Мягкий львиный глаз"] = "горящий львиный глаз",
["Рельефная пунцовая шпинель"] = "рельефная алая шпинель",
["Каплевидная пунцовая шпинель"] = "каплевидная алая шпинель",
["Цельный неземной сапфир"] = "твердый неземной сапфир",
["Изящная пунцовая шпинель"] = "изящная алая шпинель",
["Руническая пунцовая шпинель"] = "руническая алая шпинель",
["Яркая пунцовая шпинель"] = "яркая алая шпинель",
["Изысканная пунцовая шпинель"] = "изысканная алая шпинель",
["Прочный львиный глаз"] = "твердый львиный глаз",
["Блистательная пунцовая шпинель"] = "блистательная алая шпинель",
["Великий львиный глаз"] = "большой львиный глаз",
["Мощный морской изумруд"] = "могущественный морской изумруд",
["Мягкий львиный глаз"] = "горящий львиный глаз",
["Угасающий алмаз небесного сияния"] = "тлеющий алмаз небесного сияния",
["Усиленный лесной изумруд"] = "заряженный лесной изумруд",
["Мощный талассит"] = "могущественный талассит",
["Блистающий императорский топаз"] = "блистающий королевский топаз",
["Светоносный императорский топаз"] = "светоносный королевский топаз",
["Могущественный императорский топаз"] = "могущественный королевский топаз",
["Мягкое сияние осени"] = "мимолетное сияние осени",
["Мягкий зоревик"] = "горящий зоревик",
["Мягкое Око дракона"] = "быстрое око дракона",
["Тревожный императорский топаз"] = "тревожный королевский топаз",
["Прочное сияние осени"] = "яркое сияние осени",
["Прочное око дракона"] = "твердое око дракона",
["Цельное око дракона"] = "твердое око дракона",
["Цельный небесный сапфир"] = "твердый небесный сапфир",
["Застывший императорский топаз"] = "застывший королевский топаз",
["Сокрытый императорский топаз"] = "сокрытый королевский топаз",
["Надежный императорский топаз"] = "надежный королевский топаз",
["Наделенный силой императорский топаз"] = "наделенный силой королевский топаз",
["Жалкий алмаз небесного сияния"] = "мизерный алмаз небесного сияния",
["Прозрачный императорский топаз"] = "прозрачный королевский топаз",
["Мистическое сияние осени"] = "таинственное сияние осени",
["Глянцевый императорский топаз"] = "глянцевый королевский топаз",
["Таинственный сумрачный кристалл"] = "таинственный теневой кристалл",
["Мерцающий императорский топаз"] = "мерцающий королевский топаз",
["Гладкое сияние осени"] = "мягкое сияние осени",
["Гибельный императорский топаз"] = "гибельный королевский топаз",
["Сумрачный кристалл защитника"] = "теневой кристалл защитника",
},
 
["zhTW"] = {
},
 
}
 
trunk/RecipeRadar/DropDowns.lua New file
0,0 → 1,561
 
-- DropDowns.lua: code concerned the dropdowns and corresponding filters
-- $Id: DropDowns.lua 1046 2008-10-24 03:13:47Z jnmiller $
 
function RecipeRadar_DropDowns_Init()
 
-- can't use the OnLoad events because we use saved variables
RecipeRadar_TeamDropDown_OnLoad()
RecipeRadar_Prof1DropDown_OnLoad()
RecipeRadar_RealmAvailDropDown_OnLoad()
RecipeRadar_Prof2DropDown_OnLoad()
RecipeRadar_PersonAvailDropDown_OnLoad()
 
-- initialize the recipe filters and recipe tab icon
RecipeRadar_SetProf2Filter(RecipeRadar_Options.CurrentProfession)
 
if (RecipeRadar_Options.RealmAvailability) then
return RecipeRadar_RealmAvailDropDown:Show()
else
return RecipeRadar_PersonAvailDropDown:Show()
end
 
end
 
-----------------------------------------------------------------------------
-- Realm-wide availability drop down and filtering
-----------------------------------------------------------------------------
 
function RecipeRadar_RealmAvailDropDown_OnLoad()
 
local dropdown = _G["RecipeRadar_RealmAvailDropDown"]
UIDropDownMenu_Initialize(dropdown, RecipeRadar_RealmAvailDropDown_Init)
UIDropDownMenu_SetText(dropdown, RRS("Availability"))
UIDropDownMenu_SetWidth(dropdown, 135)
 
end
 
function RecipeRadar_RealmAvailDropDown_Init()
 
-- sort our drop down list by table-specified order
local t = { }
for k, v in pairs(RecipeRadar_Availabilities) do
t[v.DropDown.ROrder] = k
end
 
for _, key in pairs(t) do
 
local info = RecipeRadar_Availabilities[key]
local checked, item = nil, { }
 
item.text = RecipeRadar_ColorToCode(info.Color) ..
info.Text .. FONT_COLOR_CODE_CLOSE
item.value = key
item.func = RecipeRadar_RealmAvailDropDown_OnClick
item.checked = not RecipeRadar_IsRealmAvailFiltered(key)
item.keepShownOnClick = 1
 
UIDropDownMenu_AddButton(item)
 
end
 
end
 
function RecipeRadar_RealmAvailDropDown_OnClick(self)
 
if (UIDropDownMenuButton_GetChecked(self)) then
RecipeRadar_SetRealmAvailFilter(self.value, false)
else
RecipeRadar_SetRealmAvailFilter(self.value, true)
end
 
RecipeRadarListScrollFrameScrollBar:SetValue(0)
 
end
 
function RecipeRadar_IsRealmAvailFiltered(avail)
 
return RecipeRadar_Filters.RealmAvails[avail]
 
end
 
function RecipeRadar_SetRealmAvailFilter(avail, is_filtered)
 
RecipeRadar_Filters.RealmAvails[avail] = is_filtered
-- we filter out vendors here to keep the Update() quick
RecipeRadar_FilterVendors("avail", avail, is_filtered)
RecipeRadar_FilterRecipes("avail", avail, is_filtered)
RecipeRadar_FrameUpdate()
 
end
 
-----------------------------------------------------------------------------
-- Personal availability drop down and filtering
-----------------------------------------------------------------------------
 
function RecipeRadar_PersonAvailDropDown_OnLoad()
 
local dropdown = _G["RecipeRadar_PersonAvailDropDown"]
UIDropDownMenu_Initialize(dropdown, RecipeRadar_PersonAvailDropDown_Init)
UIDropDownMenu_SetText(dropdown, RRS("Availability"))
UIDropDownMenu_SetWidth(dropdown, 135)
 
end
 
function RecipeRadar_PersonAvailDropDown_Init()
 
-- sort our drop down list by table-specified order
local t = { }
for k, v in pairs(RecipeRadar_Availabilities) do
if (v.DropDown.POrder) then
t[v.DropDown.POrder] = k
end
end
 
for _, key in pairs(t) do
 
local info = RecipeRadar_Availabilities[key]
local checked, item = nil, { }
 
item.text = RecipeRadar_ColorToCode(info.Color) ..
info.Text .. FONT_COLOR_CODE_CLOSE
item.value = key
item.func = RecipeRadar_PersonAvailDropDown_OnClick
item.checked = not RecipeRadar_IsPersonAvailFiltered(key)
item.keepShownOnClick = 1
 
UIDropDownMenu_AddButton(item)
 
end
 
end
 
function RecipeRadar_PersonAvailDropDown_OnClick(self)
 
if (UIDropDownMenuButton_GetChecked(self)) then
RecipeRadar_SetPersonAvailFilter(self.value, false)
else
RecipeRadar_SetPersonAvailFilter(self.value, true)
end
 
RecipeRadarListScrollFrameScrollBar:SetValue(0)
 
end
 
function RecipeRadar_IsPersonAvailFiltered(avail)
 
return RecipeRadar_Filters.PersonAvails[avail]
 
end
 
function RecipeRadar_SetPersonAvailFilter(avail, is_filtered)
 
RecipeRadar_Filters.PersonAvails[avail] = is_filtered
-- we filter out vendors here to keep the Update() quick
RecipeRadar_FilterVendors("avail", avail, is_filtered)
RecipeRadar_FilterRecipes("avail", avail, is_filtered)
RecipeRadar_FrameUpdate()
 
end
 
-- Generic tester for those who don't care about the current mode.
function RecipeRadar_IsAvailabilityFiltered(avail)
 
if (RecipeRadar_Options.RealmAvailability) then
return RecipeRadar_IsRealmAvailFiltered(avail)
else
return RecipeRadar_IsPersonAvailFiltered(avail)
end
 
end
 
-----------------------------------------------------------------------------
-- Teams/factions drop down and filtering
-----------------------------------------------------------------------------
 
function RecipeRadar_TeamDropDown_OnLoad()
 
local dropdown = _G["RecipeRadar_TeamDropDown"]
UIDropDownMenu_Initialize(dropdown, RecipeRadar_TeamDropDown_Init)
UIDropDownMenu_SetText(dropdown, RRS("Factions"))
UIDropDownMenu_SetWidth(dropdown, 112)
 
end
 
function RecipeRadar_TeamDropDown_Init()
 
-- sort our drop down list by table key
local t = { }
for k, _ in pairs(RecipeRadar_Teams) do
table.insert(t, k)
end
table.sort(t)
 
for _, key in pairs(t) do
 
local info = RecipeRadar_Teams[key]
local checked, item = nil, { }
 
item.text = RecipeRadar_ColorToCode(info.Color) ..
info.Name .. FONT_COLOR_CODE_CLOSE
item.value = key
item.func = RecipeRadar_TeamDropDown_OnClick
item.checked = not RecipeRadar_IsTeamFiltered(key)
item.keepShownOnClick = 1
 
UIDropDownMenu_AddButton(item)
 
end
 
end
 
function RecipeRadar_TeamDropDown_OnClick(self)
 
if (UIDropDownMenuButton_GetChecked(self)) then
RecipeRadar_SetTeamFilter(self.value, false)
else
RecipeRadar_SetTeamFilter(self.value, true)
end
 
RecipeRadarListScrollFrameScrollBar:SetValue(0)
 
end
 
function RecipeRadar_IsTeamFiltered(team)
 
return RecipeRadar_Filters.Teams[team]
 
end
 
function RecipeRadar_SetTeamFilter(team, is_filtered)
 
RecipeRadar_Filters.Teams[team] = is_filtered
-- we filter out vendors here to keep the Update() quick
RecipeRadar_FilterVendors("team", team, is_filtered)
RecipeRadar_FilterRecipes("team", team, is_filtered)
RecipeRadar_FrameUpdate()
 
end
 
-----------------------------------------------------------------------------
-- Multi-select professions drop down and filtering (for radar tab)
-----------------------------------------------------------------------------
 
function RecipeRadar_Prof1DropDown_OnLoad()
 
local dropdown = _G["RecipeRadar_Prof1DropDown"]
UIDropDownMenu_Initialize(dropdown, RecipeRadar_Prof1DropDown_Init)
UIDropDownMenu_SetText(dropdown, RRS("Professions"))
UIDropDownMenu_SetWidth(dropdown, 135)
 
end
 
function RecipeRadar_Prof1DropDown_Init()
 
-- sort our drop down list by table key
local t = { }
for k, _ in pairs(RecipeRadar_Professions) do
table.insert(t, k)
end
table.sort(t)
 
for _, key in pairs(t) do
 
local info = RecipeRadar_Professions[key]
local checked, item = nil, { }
 
item.text = info.Name
item.value = key
item.func = RecipeRadar_Prof1DropDown_OnClick
item.checked = not RecipeRadar_IsProfFiltered(key)
item.keepShownOnClick = 1
 
UIDropDownMenu_AddButton(item)
 
end
 
end
 
function RecipeRadar_Prof1DropDown_OnClick(self)
 
if (UIDropDownMenuButton_GetChecked(self)) then
RecipeRadar_SetProfFilter(self.value, false)
else
RecipeRadar_SetProfFilter(self.value, true)
end
 
RecipeRadarListScrollFrameScrollBar:SetValue(0)
 
end
 
function RecipeRadar_IsProfFiltered(prof)
 
return RecipeRadar_Filters.Professions[prof]
 
end
 
function RecipeRadar_SetProfFilter(prof, is_filtered)
 
RecipeRadar_Filters.Professions[prof] = is_filtered
-- we filter out vendors here to keep the Update() quick
RecipeRadar_FilterVendors("prof", prof, is_filtered)
RecipeRadar_FrameUpdate()
 
end
 
-----------------------------------------------------------------------------
-- Single-select professions drop down and filtering (for recipes tab)
-----------------------------------------------------------------------------
 
function RecipeRadar_Prof2DropDown_OnLoad()
 
local dropdown = _G["RecipeRadar_Prof2DropDown"]
UIDropDownMenu_Initialize(dropdown, RecipeRadar_Prof2DropDown_Init)
UIDropDownMenu_SetText(dropdown, RRS("Professions"))
UIDropDownMenu_SetWidth(dropdown, 135)
 
end
 
function RecipeRadar_Prof2DropDown_Init()
 
-- sort our drop down list by table key
local t = { }
for k, _ in pairs(RecipeRadar_Professions) do
table.insert(t, k)
end
table.sort(t)
 
for _, key in pairs(t) do
 
local info = RecipeRadar_Professions[key]
local checked, item = nil, { }
 
if (RecipeRadar_IsCurrentProfession(key)) then
checked = 1
end
 
item.text = info.Name
item.value = key
item.func = RecipeRadar_Prof2DropDown_OnClick
item.checked = checked
 
UIDropDownMenu_AddButton(item)
 
end
 
end
 
function RecipeRadar_Prof2DropDown_OnClick(self)
 
UIDropDownMenu_SetSelectedID(RecipeRadar_Prof2DropDown, self:GetID())
RecipeRadar_SetProf2Filter(self.value)
RecipeRadarListScrollFrameScrollBar:SetValue(0)
 
end
 
function RecipeRadar_IsCurrentProfession(prof)
 
return RecipeRadar_Options.CurrentProfession == prof
 
end
 
function RecipeRadar_SetProf2Filter(prof)
 
RecipeRadarRecipesTabFrame:SetNormalTexture(
RecipeRadar_Professions[prof].Icon)
RecipeRadar_Options.CurrentProfession = prof
RecipeRadar_InitRecipeFilters()
RecipeRadar_FrameUpdate()
 
end
 
-----------------------------------------------------------------------------
-- Radar tab filtering code
-----------------------------------------------------------------------------
 
-- Checks for recipe filtering by either profession or availability.
function RecipeRadar_IsRecipeFiltered(recipe)
 
return recipe.IsFilteredByTeam or recipe.IsFilteredByProfession or
recipe.IsFilteredByAvailability
 
end
 
-- Checks for vendor filtering by either team or the vendor's notes.
function RecipeRadar_IsVendorFiltered(vendor)
 
local note_type, note_value = RecipeRadar_ParseNote(vendor.Notes)
 
if (note_type == "Seasonal") then
local current = date("!*t")
if (current.month ~= note_value) then
return true;
end
end
 
return RecipeRadar_IsTeamFiltered(vendor.Team)
 
end
 
-- Iterate through all vendors or recipes and set their filter state.
-- This function is only useful for the radar tab, not the recipes tab.
-- filter_type is one of 'team', 'prof' or 'avail', filter_on is the
-- key on which to filter (eg. "Horde"), and is_filtered is the new state.
function RecipeRadar_FilterVendors(filter_type, filter_on, is_filtered)
 
local region = RecipeRadar_RegionData[RecipeRadar_Options.CurrentRegion]
if (not region) then return end
 
for _, vendor in pairs(region.Vendors) do
 
-- this bit filters vendors by their team
if (filter_type == "team" and filter_on == vendor.Team) then
 
vendor.IsFiltered = RecipeRadar_IsVendorFiltered(vendor)
 
-- if the to-be-filtered vendor is "active", unselect her
if (RecipeRadarRadarTabFrame.SelectedVendor == vendor) then
RecipeRadar_RadarTab_ClearSelection()
end
 
-- this bit filters recipes by their profession
elseif (filter_type == "prof") then
 
for _, recipe in pairs(vendor.Recipes) do
 
if (filter_on == recipe.Type) then
 
recipe.IsFilteredByProfession = is_filtered
 
-- if the to-be-filtered recipe is selected, unselect it
if (RecipeRadarRadarTabFrame.SelectedRecipe == recipe) then
RecipeRadar_RadarTab_ClearSelection()
end
 
end
 
end
 
-- this bit filters recipes by their availability state
elseif (filter_type == "avail") then
 
for _, recipe in pairs(vendor.Recipes) do
 
if (filter_on == RecipeRadar_Availability_GetKey(recipe)) then
 
recipe.IsFilteredByAvailability = is_filtered
 
-- if the to-be-filtered recipe is selected, unselect it
if (RecipeRadarRadarTabFrame.SelectedRecipe == recipe) then
RecipeRadar_RadarTab_ClearSelection()
end
 
end
 
end
 
end
 
end
 
end
 
-- Initializes vendor/recipe filters according to saved filter settings.
function RecipeRadar_InitVendorFilters()
 
local region = RecipeRadar_RegionData[RecipeRadar_Options.CurrentRegion]
if (not region) then return end
 
for _, vendor in pairs(region.Vendors) do
 
-- set vendor filters
vendor.IsFiltered = RecipeRadar_IsVendorFiltered(vendor)
 
for _, recipe in pairs(vendor.Recipes) do
 
-- set profession filter
recipe.IsFilteredByProfession =
RecipeRadar_IsProfFiltered(recipe.Type)
 
-- set availability filter (the 'true') and auto-map if necessary
if (RecipeRadar_Availability_IsLearnable(recipe, true) and
RecipeRadar_Options.AutoMapVendors) then
RecipeRadar_Maps_AddVendor(vendor,
RecipeRadar_Options.CurrentRegion)
end
 
end
 
end
 
end
 
-----------------------------------------------------------------------------
-- Recipes tab filtering code
-----------------------------------------------------------------------------
 
-- Iterate through all recipes and set their filter state.
-- This function is only useful for the recipes tab, not the radar tab.
-- filter_type is one of 'team' or 'avail', filter_on is the
-- key on which to filter (eg. "Horde"), and is_filtered is the new state.
function RecipeRadar_FilterRecipes(filter_type, filter_on, is_filtered)
 
local prof = RecipeRadar_RecipeData[RecipeRadar_Options.CurrentProfession]
 
for _, recipe in pairs(prof.Recipes) do
 
-- this bit filters recipes by their availability state
if (filter_type == "avail" and
filter_on == RecipeRadar_Availability_GetKey(recipe)) then
 
recipe.IsFilteredByAvailability = is_filtered
 
-- if the to-be-filtered recipe is "active", unselect it
if (RecipeRadarRecipesTabFrame.SelectedRecipe == recipe) then
RecipeRadar_RecipesTab_ClearSelection()
end
 
-- this bit filters vendors by their team
elseif (filter_type == "team") then
 
for _, location in pairs(recipe.Locations) do
 
if (filter_on == location.Team) then
 
location.IsFiltered = is_filtered
 
-- if the to-be-filtered recipe is selected, unselect it
if (RecipeRadarRecipesTabFrame.SelectedLocation ==
location.Region) then
RecipeRadar_RecipesTab_ClearSelection()
end
 
end
 
end
 
end
 
end
 
end
 
-- Initializes vendor/recipe filters according to saved filter settings.
function RecipeRadar_InitRecipeFilters()
 
local prof = RecipeRadar_RecipeData[RecipeRadar_Options.CurrentProfession]
if (not prof) then return end
 
for _, recipe in pairs(prof.Recipes) do
 
-- set availability filter (the 'true')
RecipeRadar_Availability_SetAvailabilityFilter(recipe)
 
for _, location in pairs(recipe.Locations) do
-- set team filter
location.IsFiltered = RecipeRadar_IsTeamFiltered(location.Team)
end
 
end
 
end
trunk/RecipeRadar/RadarTab.lua New file
0,0 → 1,500
 
-- RadarTab.lua: handles clicking and drawing for the Radar tab
-- $Id: RadarTab.lua 1049 2008-10-29 14:57:03Z jnmiller $
 
function RecipeRadar_RadarTab_Init()
 
RecipeRadar_Prof1DropDown:Show()
RecipeRadar_Prof2DropDown:Hide()
 
RecipeRadar_SetActiveTab(1)
 
RecipeRadar_RadarTab_Update()
RecipeRadarListScrollFrameScrollBar:SetValue(
RecipeRadarRadarTabFrame.ScrollValue)
 
end
 
function RecipeRadar_RadarTab_OnClick(self)
 
if (RecipeRadar_Options.ActiveTab == 1) then
return
end
 
PlaySound("igSpellBookClose")
RecipeRadar_RadarTab_Init()
 
end
 
function RecipeRadar_RadarTab_ExpandAll(expand)
 
local region = RecipeRadar_RegionData[RecipeRadar_Options.CurrentRegion]
if (not region) then return end
 
for _, vendor in pairs(region.Vendors) do
vendor.IsExpanded = expand
end
 
RecipeRadar_SelectFirstRecipe()
RecipeRadar_FrameUpdate()
 
end
 
function RecipeRadar_RadarTab_Update()
 
if (RecipeRadar_Options.ActiveTab ~= 1) then
return
end
 
local title = RRS("Recipe Radar")
if (RecipeRadar_Options.CurrentRegion) then
title = title .. " - " .. RecipeRadar_Options.CurrentRegion
local parens = string.find(title, " %(")
if (parens) then -- remove parenthesized zone title
title = string.sub(title, 1, parens - 1)
end
end
TitleBarText:SetText(title)
 
-- some globals for the Update() procedure
RecipeRadar_row = 0
RecipeRadar_last_button = ""
RecipeRadar_ContextMenuGlobal.RadarTabHasExpanded = false
RecipeRadar_ContextMenuGlobal.RadarTabHasCollapsed = false
 
RecipeRadarHighlightFrame:Hide()
 
local region = RecipeRadar_RegionData[RecipeRadar_Options.CurrentRegion]
-- only populate the scroll frame if we have valid region data
if (region) then
RecipeRadar_SortVendors(region)
for k, v in pairs(region.Vendors) do
RecipeRadar_RadarTab_AddVendor(k, v)
end
end
 
-- update the scroll position and the width of the highlight frame
FauxScrollFrame_Update(RecipeRadarListScrollFrame, RecipeRadar_row,
RECIPERADAR_VENDORS_DISPLAYED, RECIPERADAR_VENDOR_HEIGHT,
nil, nil, nil, RecipeRadarHighlightFrame, 361, 384)
 
-- update the widths of the vendor/recipe buttons after scroll update
for i = 1, RECIPERADAR_VENDORS_DISPLAYED do
local button = _G["RecipeRadarVendor" .. i]
if (i > RecipeRadar_row) then
button:Hide()
elseif (button.Recipe) then
if (RecipeRadarListScrollFrame:IsVisible()) then
button:SetWidth(361 - RECIPERADAR_VENDOR_OFFSET)
else
button:SetWidth(384 - RECIPERADAR_VENDOR_OFFSET)
end
else
if (RecipeRadarListScrollFrame:IsVisible()) then
button:SetWidth(361)
else
button:SetWidth(384)
end
end
end
 
-- update the current selection (or lack thereof)
if (not region or not RecipeRadarRadarTabFrame.SelectedRecipe) then
RecipeRadar_HideRecipeDetails()
elseif (RecipeRadarRadarTabFrame.SelectedVendor) then
RecipeRadar_SetSelection(RecipeRadarRadarTabFrame.SelectedVendor,
RecipeRadarRadarTabFrame.SelectedRecipe)
RecipeRadar_ShowRecipeDetails()
end
 
end
 
-- This function is called for each vendor during the main update. It
-- adds the vendor and her recipes, if appropriate, to the main scroll frame.
function RecipeRadar_RadarTab_AddVendor(key, vendor)
 
-- don't add the vendor if she or her recipes are filtered
if (vendor.IsFiltered or not RecipeRadar_VendorHasRecipes(vendor)) then
if (vendor.IsMapped) then
RecipeRadar_Maps_RemoveVendor(vendor)
end
return
end
 
RecipeRadar_row = RecipeRadar_row + 1
 
local offset = FauxScrollFrame_GetOffset(RecipeRadarListScrollFrame)
local index = RecipeRadar_row - offset
 
-- reset our radio button to red/off in case there are no listed vendors
RecipeRadarMapVendorIndicator:SetVertexColor(1.0, 0, 0)
 
-- only do the following if we're in the scroll frame's visible portion
if (index > 0 and index <= RECIPERADAR_VENDORS_DISPLAYED) then
 
local button = _G["RecipeRadarVendor" .. index]
 
-- decide the horizontal offset of this button
if (index == 1) then
button:SetPoint("TOPLEFT", "RecipeRadarFrame",
"TOPLEFT", 22, -96)
elseif (RecipeRadar_last_button == "recipe") then
button:SetPoint("TOPLEFT", "RecipeRadarVendor" .. index - 1,
"BOTTOMLEFT", -RECIPERADAR_VENDOR_OFFSET, 0)
elseif (RecipeRadar_last_button == "vendor") then
button:SetPoint("TOPLEFT", "RecipeRadarVendor" .. index - 1,
"BOTTOMLEFT", 0, 0)
end
 
-- this variable decides the next button's horizontal offset
RecipeRadar_last_button = "vendor"
 
-- basic drawing code
button:UnlockHighlight()
button:SetText(vendor.Name)
RecipeRadar_SetButtonFont(button, vendor.Team)
button:SetID(index)
button:Show()
 
-- drawing code for the little subtext field
local subtext = _G["RecipeRadarVendor" .. index .. "SubText"]
if (vendor.Notes and vendor.Notes ~= "") then
local note = RecipeRadar_FormatVendorNote(vendor.Notes, true)
VendorNameDummySubText:SetText(note .. " ")
subtext:SetText(note)
button.r = RecipeRadar_Teams[vendor.Team].Color.r
button.g = RecipeRadar_Teams[vendor.Team].Color.g
button.b = RecipeRadar_Teams[vendor.Team].Color.b
subtext:SetTextColor(
RecipeRadar_Teams[vendor.Team].Color.r,
RecipeRadar_Teams[vendor.Team].Color.g,
RecipeRadar_Teams[vendor.Team].Color.b)
subtext:SetPoint("LEFT", "RecipeRadarVendor" .. index .. "Text",
"RIGHT", 10, 0)
subtext:Show()
else
subtext:Hide()
end
 
-- show or hide the little mapped indicator check mark
local check = _G["RecipeRadarVendor" .. index .. "Check"]
if (vendor.IsMapped) then
VendorNameDummyText:SetText(vendor.Name .. " ")
local check_offset = VendorNameDummyText:GetWidth() + 24
if (vendor.Notes and vendor.Notes ~= "") then
check_offset = check_offset + VendorNameDummySubText:GetWidth()
end
check:SetPoint("TOPLEFT", "RecipeRadarVendor" .. index, "TOPLEFT",
check_offset, 0)
check:Show()
else
check:Hide()
end
 
-- unset to indicate this is a vendor header for the tooltip stuff
button.Recipe = nil
 
-- icon highlight is different for vendors than recipes
_G["RecipeRadarVendor" .. index .. "Highlight"]:SetTexture(
"Interface\\Buttons\\UI-PlusButton-Hilight")
 
if (vendor.IsExpanded ~= false) then
RecipeRadar_ContextMenuGlobal.RadarTabHasExpanded = true
button:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up")
else
RecipeRadar_ContextMenuGlobal.RadarTabHasCollapsed = true
button:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up")
return
end
 
else
 
-- if the vendor is collapsed, we don't need to count her recipes
if (vendor.IsExpanded == false) then
RecipeRadar_ContextMenuGlobal.RadarTabHasCollapsed = true
return
else
RecipeRadar_ContextMenuGlobal.RadarTabHasExpanded = true
end
 
end
 
RecipeRadar_SortRecipes(vendor)
 
for _, recipe in pairs(vendor.Recipes) do
 
-- skip filtered recipes, of course
if (not RecipeRadar_IsRecipeFiltered(recipe)) then
 
RecipeRadar_row = RecipeRadar_row + 1
index = RecipeRadar_row - offset;
 
-- only do this if we're in the scroll frame's visible portion
if (index > 0 and index <= RECIPERADAR_VENDORS_DISPLAYED) then
 
local button = _G["RecipeRadarVendor" .. index]
 
-- decide the horizontal offset of this button
if (index == 1) then
button:SetPoint("TOPLEFT", "RecipeRadarFrame",
"TOPLEFT", 22 + RECIPERADAR_VENDOR_OFFSET, -96)
elseif (RecipeRadar_last_button == "recipe") then
button:SetPoint("TOPLEFT", "RecipeRadarVendor" .. index - 1,
"BOTTOMLEFT", 0, 0)
elseif (RecipeRadar_last_button == "vendor") then
button:SetPoint("TOPLEFT", "RecipeRadarVendor" .. index - 1,
"BOTTOMLEFT", RECIPERADAR_VENDOR_OFFSET, 0)
end
 
-- this variable decides the next button's horizontal offset
RecipeRadar_last_button = "recipe"
 
-- generic list item drawing
RecipeRadar_DrawListItem(index, recipe)
 
-- radar tab-specific list item drawing
button:SetNormalTexture(RecipeRadar_Professions[recipe.Type].Icon)
_G["RecipeRadarVendor" .. index .. "Check"]:Hide()
_G["RecipeRadarVendor" .. index .. "Highlight"]:
SetTexture(RECIPERADAR_IMAGE_ROOT .. "Icons\\Highlight")
 
-- selected recipes look a little bit different
if (RecipeRadarRadarTabFrame.SelectedRecipe == recipe) then
RecipeRadarHighlightFrame:SetPoint("TOPLEFT",
"RecipeRadarVendor" .. index, "TOPLEFT", -22, 0)
RecipeRadarHighlightFrame:Show()
button:LockHighlight()
else
button:UnlockHighlight()
end
 
end
 
end
 
end
 
end
 
-- Handles a vendor/recipe button click in the main scroll frame. The
-- supplied index is row + offset in the scroll frame. index may also
-- be set to -1 to select the first visible recipe.
function RecipeRadar_RadarTab_ServiceClickIndex(self, index, button)
 
local region = RecipeRadar_RegionData[RecipeRadar_Options.CurrentRegion]
if (not region) then return end
 
if (not button) then button = "LeftButton" end
 
-- save this index so we can return to it on tab switch
RecipeRadarRadarTabFrame.SelectedIndex = index
 
-- sort the vendors so we're counting in the right order
RecipeRadar_SortVendors(region)
local row = 0
 
-- iterate through each vendor, counting up to index
for _, vendor in pairs(region.Vendors) do
 
-- if this vendor is filtered, she does not count towards our index
if (not vendor.IsFiltered and RecipeRadar_VendorHasRecipes(vendor)) then
 
row = row + 1
 
if (row == index) then
 
if (button == "LeftButton") then
 
-- if the shift key is down, the user wants to (un)map this vendor
if (IsShiftKeyDown()) then
if (vendor.IsMapped) then
RecipeRadar_Maps_RemoveVendor(vendor)
else
RecipeRadar_Maps_AddVendor(vendor,
RecipeRadar_Options.CurrentRegion)
end
 
-- otherwise, we collapse or expand the vendor button
else
RecipeRadar_RadarTab_ToggleExpanded(vendor)
end
 
return
 
elseif (button == "RightButton") then
 
HideDropDownMenu(1)
RecipeRadar_ContextMenuGlobal.Vendor = vendor
RecipeRadar_RadarTab_ContextMenuOnLoad()
ToggleDropDownMenu(1, nil, RadarTabDropDown,
self:GetName(), GetCursorPosition(), 0)
return
 
end
 
end
 
if (vendor.IsExpanded ~= false) then
 
-- sort the recipes so we're counting in the right order
RecipeRadar_SortRecipes(vendor)
local vendor_index = row
 
-- iterate through each recipe, counting up to index
for _, recipe in pairs(vendor.Recipes) do
 
-- don't count filtered recipes
if (not RecipeRadar_IsRecipeFiltered(recipe)) then
 
row = row + 1
 
-- if index is -1, this catches on the first iteration
if (row == index or index == -1) then
 
if (button == "LeftButton") then
 
-- if the shift key is down, we map this recipe's vendor
if (IsShiftKeyDown()) then
if (vendor.IsMapped) then
RecipeRadar_Maps_RemoveVendor(vendor)
else
RecipeRadar_Maps_AddVendor(vendor,
RecipeRadar_Options.CurrentRegion)
end
end
 
-- otherwise, select this recipe and show its details
RecipeRadarRadarTabFrame.SelectedVendor = vendor
RecipeRadarRadarTabFrame.SelectedRecipe = recipe
RecipeRadar_SetSelection(vendor, recipe)
RecipeRadar_ShowRecipeDetails()
return
 
elseif (button == "RightButton") then
 
HideDropDownMenu(1)
RecipeRadar_ContextMenuGlobal.Vendor = vendor
RecipeRadar_RadarTab_ContextMenuOnLoad()
ToggleDropDownMenu(1, nil, RadarTabDropDown,
self:GetName(), GetCursorPosition(), 0)
return
 
end
 
end
 
end
 
end
 
end
 
end
 
end
 
-- if the index was not found, select nothing
RecipeRadar_RadarTab_ClearSelection()
RecipeRadar_HideRecipeDetails()
 
end
 
function RecipeRadar_RadarTab_ToggleExpanded(vendor)
 
if (vendor.IsExpanded == false) then
vendor.IsExpanded = true
else
vendor.IsExpanded = false
end
RecipeRadar_RadarTab_ClearSelection()
RecipeRadar_FrameUpdate()
 
end
 
function RecipeRadar_RadarTab_ClearSelection()
 
RecipeRadarRadarTabFrame.SelectedVendor = nil
RecipeRadarRadarTabFrame.SelectedRecipe = nil
 
end
 
-- OnLoad event handler for the right-click context menu for map buttons.
function RecipeRadar_RadarTab_ContextMenuOnLoad()
 
UIDropDownMenu_Initialize(RadarTabDropDown,
RecipeRadar_RadarTab_ContextMenuInit, "MENU")
 
end
 
-- Initialization routine for the right-click context menu for map buttons.
function RecipeRadar_RadarTab_ContextMenuInit()
 
if (not RecipeRadar_ContextMenuGlobal.Vendor) then return end
 
-- putting in the vendor's name as the title of the popup
local item = { }
item.text = RecipeRadar_ContextMenuGlobal.Vendor.Name
item.isTitle = 1
item.notCheckable = 1
UIDropDownMenu_AddButton(item)
 
item = { }
if (RecipeRadar_ContextMenuGlobal.Vendor.IsMapped) then
item.text = RRS("Unmap Vendor")
item.value = "unmap"
else
item.text = RRS("Map Vendor")
item.value = "map"
end
item.notCheckable = 1
item.func = RecipeRadar_RadarTab_ContextMenuOnClick
UIDropDownMenu_AddButton(item)
 
item = { }
item.text = RRS("Expand All")
item.value = "expandall"
item.notCheckable = 1
item.func = RecipeRadar_RadarTab_ContextMenuOnClick
if (not RecipeRadar_ContextMenuGlobal.RadarTabHasCollapsed) then
item.disabled = 1
end
UIDropDownMenu_AddButton(item)
 
item = { }
item.text = RRS("Collapse All")
item.value = "collapseall"
item.notCheckable = 1
item.func = RecipeRadar_RadarTab_ContextMenuOnClick
if (not RecipeRadar_ContextMenuGlobal.RadarTabHasExpanded) then
item.disabled = 1
end
UIDropDownMenu_AddButton(item)
 
item = { }
item.text = CANCEL
item.notCheckable = 1
item.func = RecipeRadar_RadarTab_ContextMenuOnClick
UIDropDownMenu_AddButton(item)
 
end
 
-- OnClick event handler for the right-click context menu for map buttons.
function RecipeRadar_RadarTab_ContextMenuOnClick(self)
 
if (self.value == "unmap") then
RecipeRadar_Maps_RemoveVendor(RecipeRadar_ContextMenuGlobal.Vendor)
RecipeRadar_FrameUpdate()
 
elseif (self.value == "map") then
RecipeRadar_Maps_AddVendor(RecipeRadar_ContextMenuGlobal.Vendor,
RecipeRadar_Options.CurrentRegion)
RecipeRadar_FrameUpdate()
 
elseif (self.value == "expandall") then
RecipeRadar_RadarTab_ExpandAll(true)
 
elseif (self.value == "collapseall") then
RecipeRadar_RadarTab_ExpandAll(false)
end
 
end
trunk/RecipeRadar/Globals.lua New file
0,0 → 1,376
 
-- Globals.lua: global/saved variables and some related initialization code
-- $Id: Globals.lua 1099 2009-08-10 04:51:22Z jnmiller $
 
RECIPERADAR_VERSION = "1.33"
 
RECIPERADAR_VENDORS_DISPLAYED = 8
RECIPERADAR_VENDOR_HEIGHT = 16
RECIPERADAR_VENDOR_OFFSET = 20
RECIPERADAR_IMAGE_ROOT = "Interface\\Addons\\RecipeRadar\\Images\\"
 
-- this should be <= the number of RecipeRadar*Icons
RECIPERADAR_MAPPED_VENDORS_MAX = 20
 
BINDING_HEADER_RECIPERADAR_HEADER = RRS("Recipe Radar Bindings")
BINDING_NAME_RECIPERADAR_TOGGLE = RRS("Toggle Recipe Radar")
 
RecipeRadar_Options = { }
 
RecipeRadar_Filters = {
Teams = { },
Professions = { },
RealmAvails = { },
PersonAvails = { },
}
 
RecipeRadar_Colors = {
 
MainFont = { r = 1.0, g = 0.75, b = 0.0 },
Alliance = { r = 0.5, g = 0.625, b = 1.0 },
Horde = { r = 1.0, g = 0.125, b = 0.25 },
Neutral = { r = 1.0, g = 0.82, b = 0.0 },
LightGray = { r = 0.9, g = 0.9, b = 0.9 },
UncachedRecipe = { r = 0.75, g = 0.75, b = 0.75 },
DisabledGray = { r = 0.5, g = 0.5, b = 0.5 },
 
TooltipHeading = { r = 0.9, g = 0.9, b = 0.9 },
TooltipWarning = { r = 1.0, g = 0.3, b = 0.3 },
 
-- realm-wide availability tooltip/indicator colors
LearnableByPlayer = { r = 0.0, g = 1.0, b = 0.0 },
LearnableByAlt = { r = 0.0, g = 0.8, b = 0.0 },
ProspectForPlayer = { r = 1.0, g = 0.2, b = 0.2 },
ProspectForAlt = { r = 0.8, g = 0.2, b = 0.2 },
KnownByPlayer = { r = 0.7, g = 0.7, b = 0.7 },
KnownByAlt = { r = 0.5, g = 0.5, b = 0.5 },
NotApplicable = { r = 0.5, g = 0.5, b = 0.5 },
 
-- person-wide availability tooltip/indicator colors
Available = GREEN_FONT_COLOR,
Unavailable = RED_FONT_COLOR,
AlreadyKnown = GRAY_FONT_COLOR,
 
-- amount that colors will be phased to highlight the text
Highlight = 0.2,
 
}
 
RecipeRadar_Continents = {
 
[0] = RRS("Instances"),
[1] = RRS("Kalimdor"),
[2] = RRS("Eastern Kingdoms"),
[3] = RRS("Outland"),
[4] = RRS("Northrend"),
 
}
 
RecipeRadar_Teams = {
 
["Alliance"] = {
Name = FACTION_ALLIANCE,
Color = RecipeRadar_Colors.Alliance,
},
["Horde"] = {
Name = FACTION_HORDE,
Color = RecipeRadar_Colors.Horde,
},
["Neutral"] = {
Name = RRS("Neutral"),
Color = RecipeRadar_Colors.Neutral,
},
 
}
 
RecipeRadar_Professions = {
 
[RRS("Alchemy")] = {
Name = RRS("Alchemy"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "Alchemy",
},
[RRS("Blacksmithing")] = {
Name = RRS("Blacksmithing"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "Blacksmithing",
},
[RRS("Cooking")] = {
Name = RRS("Cooking"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "Cooking",
},
[RRS("Enchanting")] = {
Name = RRS("Enchanting"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "Enchanting",
},
[RRS("Engineering")] = {
Name = RRS("Engineering"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "Engineering",
},
[RRS("First Aid")] = {
Name = RRS("First Aid"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "First-Aid",
},
[RRS("Fishing")] = {
Name = RRS("Fishing"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "Fishing",
},
[RRS("Leatherworking")] = {
Name = RRS("Leatherworking"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "Leatherworking",
},
[RRS("Tailoring")] = {
Name = RRS("Tailoring"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "Tailoring",
},
[RRS("Jewelcrafting")] = {
Name = RRS("Jewelcrafting"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "Jewelcrafting",
},
[RRS("Inscription")] = {
Name = RRS("Inscription"),
Icon = RECIPERADAR_IMAGE_ROOT .. "Icons\\" .. "Inscription",
},
 
}
 
RecipeRadar_Specialties = {
 
[RRS("Gnomish Engineer")] = RRS("Engineering"),
[RRS("Goblin Engineer")] = RRS("Engineering"),
[RRS("Tribal Leatherworking")] = RRS("Leatherworking"),
[RRS("Elemental Leatherworking")] = RRS("Leatherworking"),
[RRS("Dragonscale Leatherworking")] = RRS("Leatherworking"),
[RRS("Armorsmith")] = RRS("Blacksmithing"),
[RRS("Weaponsmith")] = RRS("Blacksmithing"),
[RRS("Master Axesmith")] = RRS("Blacksmithing"),
[RRS("Master Swordsmith")] = RRS("Blacksmithing"),
[RRS("Master Hammersmith")] = RRS("Blacksmithing"),
[RRS("Master Axesmith")] = RRS("Blacksmithing"),
[RRS("Master Swordsmith")] = RRS("Blacksmithing"),
[RRS("Master Hammersmith")] = RRS("Blacksmithing"),
[RRS("Spellfire Tailoring")] = RRS("Tailoring"),
[RRS("Shadoweave Tailoring")] = RRS("Tailoring"),
[RRS("Mooncloth Tailoring")] = RRS("Tailoring"),
 
}
 
RecipeRadar_Factions = {
 
RRS("Argent Dawn"),
RRS("Cenarion Circle"),
RRS("Thorium Brotherhood"),
RRS("Timbermaw Hold"),
RRS("Zandalar Tribe"),
RRS("Cenarion Expedition"),
RRS("The Consortium"),
RRS("Honor Hold"),
RRS("Kurenai"),
RRS("The Mag'har"),
RRS("Netherwing"),
RRS("Sporeggar"),
RRS("Thrallmar"),
RRS("The Aldor"),
RRS("The Scryers"),
RRS("Lower City"),
RRS("The Sha'tar"),
RRS("The Violet Eye"),
RRS("The Scale of the Sands"),
RRS("Keepers of Time"),
RRS("Ashtongue Deathsworn"),
RRS("Shattered Sun Offensive"),
RRS("Argent Crusade"),
RRS("Explorers' League"),
RRS("Frenzyheart Tribe"),
RRS("Kirin Tor"),
RRS("Knights of the Ebon Blade"),
RRS("The Frostborn"),
RRS("The Hand of Vengeance"),
RRS("The Kalu'ak"),
RRS("The Oracles"),
RRS("The Silver Covenant"),
RRS("The Sons of Hodir"),
RRS("The Taunka"),
RRS("The Wyrmrest Accord"),
RRS("Valiance Expedition"),
RRS("Warsong Offensive"),
 
}
 
RecipeRadar_Availabilities = {
 
["LearnableByPlayer"] = {
Text = RRS("Available Now (Player)"),
Tooltip = { Group = 1, Heading = RRS("Available For:") },
DropDown = { POrder = 1, ROrder = 1 },
Color = RecipeRadar_Colors.LearnableByPlayer,
TestFunction = RecipeRadar_Availability_IsLearnableByPlayer,
},
["LearnableByAlt"] = {
Text = RRS("Available Now (Alts)"),
Tooltip = { Group = 1, Heading = RRS("Available For:") },
DropDown = { POrder = nil, ROrder = 2 },
Color = RecipeRadar_Colors.LearnableByAlt,
TestFunction = RecipeRadar_Availability_IsLearnableByAlt,
},
["ProspectForPlayer"] = {
Text = RRS("Future Prospect (Player)"),
Tooltip = { Group = 2, Heading = RRS("Future Prospect For:") },
DropDown = { POrder = 2, ROrder = 3 },
Color = RecipeRadar_Colors.ProspectForPlayer,
TestFunction = RecipeRadar_Availability_IsProspectForPlayer,
},
["ProspectForAlt"] = {
Text = RRS("Future Prospect (Alts)"),
Tooltip = { Group = 2, Heading = RRS("Future Prospect For:") },
DropDown = { POrder = nil, ROrder = 4 },
Color = RecipeRadar_Colors.ProspectForAlt,
TestFunction = RecipeRadar_Availability_IsProspectForAlt,
},
["KnownByPlayer"] = {
Text = RRS("Already Known (Player)"),
Tooltip = { Group = 3, Heading = RRS("Already Known By:") },
DropDown = { POrder = 3, ROrder = 5 },
Color = RecipeRadar_Colors.KnownByPlayer,
TestFunction = RecipeRadar_Availability_IsKnownByPlayer,
},
["KnownByAlt"] = {
Text = RRS("Already Known (Alts)"),
Tooltip = { Group = 3, Heading = RRS("Already Known By:") },
DropDown = { POrder = nil, ROrder = 6 },
Color = RecipeRadar_Colors.KnownByAlt,
TestFunction = RecipeRadar_Availability_IsKnownByAlt,
},
["NotApplicable"] = {
Text = RRS("Inapplicable"),
Tooltip = { Group = 0 }, -- do not show in tooltip
DropDown = { POrder = 4, ROrder = 7 },
Color = RecipeRadar_Colors.NotApplicable,
TestFunction = nil, -- don't need to test the default case
},
 
}
 
 
-----------------------------------------------------------------------------
-- Global initialization functions
-----------------------------------------------------------------------------
 
-- This function "upgrades" the user's saved variables, if necessary.
function RecipeRadar_Globals_Init(force)
 
RecipeRadar_Options_Init()
 
if (not force and RecipeRadar_Options.Version >= RECIPERADAR_VERSION) then
return -- running version is current
end
 
-- v1.5 filter upgrades
if (RecipeRadar_IsVersionLessThan(RecipeRadar_Options.Version, "1.5")) then
if (RecipeRadar_Filters.PersonAvails[AVAILABLE]) then
RecipeRadar_Filters.PersonAvails["LearnableByPlayer"] = true
end
if (RecipeRadar_Filters.PersonAvails[UNAVAILABLE]) then
RecipeRadar_Filters.PersonAvails["ProspectForPlayer"] = true
end
if (RecipeRadar_Filters.PersonAvails[USED]) then
RecipeRadar_Filters.PersonAvails["KnownByPlayer"] = true
RecipeRadar_Filters.PersonAvails["NotApplicable"] = true
end
RecipeRadar_Filters.PersonAvails[AVAILABLE] = nil
RecipeRadar_Filters.PersonAvails[UNAVAILABLE] = nil
RecipeRadar_Filters.PersonAvails[USED] = nil
end
 
-- v1.9 skill DB format change
if (RecipeRadar_IsVersionLessThan(RecipeRadar_Options.Version, "1.9") and
RecipeRadar_SkillDB) then
for realm, realm_info in pairs(RecipeRadar_SkillDB) do
if (type(realm_info) == "string") then
realm_info = nil
else
realm_info.Team = nil
for player, player_info in pairs(realm_info) do
local temp = { }
for prof, prof_info in pairs(player_info) do
if (RecipeRadar_IsProfession(prof)) then
temp[prof] = prof_info
player_info[prof] = nil
end
end
if (not player_info.Professions) then
player_info.Professions = { }
end
for k, v in pairs(temp) do
player_info.Professions[k] = v
end
end
end
end
end
 
-- v1.12 skill DB version removal (sigh)
if (RecipeRadar_SkillDB and RecipeRadar_SkillDB.Version) then
RecipeRadar_SkillDB.Version = nil
end
 
-- v1.15 (now v1.17 thanks to my dumbness) skill DB cleanup
if (RecipeRadar_IsVersionLessThan(RecipeRadar_Options.Version, "1.17") and
RecipeRadar_SkillDB) then
for realm, realm_info in pairs(RecipeRadar_SkillDB) do
for player, player_info in pairs(realm_info) do
if (player_info.Professions) then
for prof, _ in pairs(player_info.Professions) do
if (not RecipeRadar_IsProfession(prof)) then
player_info.Professions[prof] = nil
end
end
end
end
end
end
 
-- upgrade is complete
RecipeRadar_Options.Version = RECIPERADAR_VERSION
 
end
 
-- Initializes the Options table with some defaults.
function RecipeRadar_Options_Init()
 
if (RecipeRadar_Options.Version == nil) then
-- setting this to the lowest version forces an
-- upgrade for all characters on this account
RecipeRadar_Options.Version = "1.0"
end
 
if (RecipeRadar_Options.MinimapButtonPosition == nil) then
RecipeRadar_Options.MinimapButtonPosition = 256
end
 
if (RecipeRadar_Options.ShowMinimapButton == nil) then
RecipeRadar_Options.ShowMinimapButton = true
RecipeRadarMinimapButtonFrame:Show()
end
 
if (not RecipeRadar_IsProfession(
RecipeRadar_Options.CurrentProfession)) then
RecipeRadar_Options.CurrentProfession = RRS("Cooking")
end
 
if (RecipeRadar_Options.RealmAvailability == nil) then
RecipeRadar_Options.RealmAvailability = true
RecipeRadar_RealmAvailDropDown:Show()
end
 
if (RecipeRadar_Options.Locked == nil) then
RecipeRadar_Options.Locked = false
end
 
if (RecipeRadar_Options.AutoSelectRegion == nil) then
RecipeRadar_Options.AutoSelectRegion = true
end
 
if (RecipeRadar_Options.AutoMapVendors == nil) then
RecipeRadar_Options.AutoMapVendors = false
end
 
end
trunk/RecipeRadar/Images/Regions/Howling-Fjord.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Netherstorm.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Sholazar-Basin.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Dun-Morogh.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Durotar.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/The-Storm-Peaks.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Blade-s-Edge-Mountains.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Hellfire-Peninsula.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Azshara.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Stonetalon-Mountains.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Thousand-Needles.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Dalaran.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Darnassus.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Silithus.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Hillsbrad-Foothills.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Wintergrasp.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Teldrassil.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Bloodmyst-Isle.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Ashenvale.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Crystalsong-Forest.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Icecrown.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Mulgore.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/The-Barrens.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Tirisfal-Glades.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Feralas.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Blasted-Lands.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Desolace.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Stranglethorn-Vale.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Eversong-Woods.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Darkshore.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Terokkar-Forest.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Stormwind.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Searing-Gorge.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Ironforge.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Stormwind-City.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Azuremyst-Isle.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Redridge-Mountains.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Tanaris.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Dragonblight.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Un-Goro-Crater.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Thunder-Bluff.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Moonglade.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Undercity.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Arathi-Highlands.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Shattrath-City.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Badlands.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Zangarmarsh.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Silverpine-Forest.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Westfall.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Wetlands.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Deadwind-Pass.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Burning-Steppes.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Alterac-Mountains.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Isle-of-Quel-Danas.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Zul-Drak.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Eastern-Plaguelands.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Silvermoon-City.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Shadowmoon-Valley.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Nagrand.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Elwynn-Forest.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Dustwallow-Marsh.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Loch-Modan.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Grizzly-Hills.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Western-Plaguelands.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/The-Hinterlands.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Winterspring.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Felwood.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Duskwood.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Orgrimmar.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/The-Exodar.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Borean-Tundra.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Swamp-of-Sorrows.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Regions/Ghostlands.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/FrameTopLeft.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/LockButton-Locked-Down.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/LockButton-Unlocked-Up.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/HorizontalBarLeft.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/FrameBottomLeft.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/FrameTopRight.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/LockButton-Unlocked-Down.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/HorizontalBarRight.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/FrameBottomRight.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/Tab-Right.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Frame/LockButton-Locked-Up.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Enchanting.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Blacksmithing.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Inscription.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Alchemy.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/First-Aid.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Jewelcrafting.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Leatherworking.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Fishing.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Highlight.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Tailoring.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Cooking.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Icons/Engineering.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Misc/MinimapButtonDown.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Misc/Scroll.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Misc/RecipeHighlight.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Misc/IconHighlight.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Misc/QuestionMark.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Misc/Radar.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/Images/Misc/MinimapButtonUp.blp Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/RecipeRadar/OptionsFrame.xml New file
0,0 → 1,253
<?xml version="1.0" encoding="utf-8" ?>
 
<UI xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
 
<Script file="OptionsFrame.lua"/>
 
<Frame name="RecipeRadarOptionsFrame" toplevel="true" frameStrata="DIALOG" movable="true" enableMouse="true" hidden="true" parent="UIParent" enableKeyboard="true">
 
<Size>
<AbsDimension x="300" y="360"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
<BackgroundInsets>
<AbsInset left="11" right="12" top="12" bottom="11"/>
</BackgroundInsets>
<TileSize>
<AbsValue val="32"/>
</TileSize>
<EdgeSize>
<AbsValue val="32"/>
</EdgeSize>
</Backdrop>
<Layers>
 
<Layer level="ARTWORK">
<Texture name="RecipeRadarOptionsFrameHeader" file="Interface\DialogFrame\UI-DialogBox-Header">
<Size>
<AbsDimension x="256" y="64"/>
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="12"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
<FontString name="RecipeRadarOptionsFrameHeaderText" inherits="GameFontNormal">
<Anchors>
<Anchor point="TOP" relativeTo="RecipeRadarOptionsFrameHeader">
<Offset>
<AbsDimension x="0" y="-14"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
 
</Layers>
<Frames>
 
<!-- Check availability for alts checkbox -->
<CheckButton name="RecipeRadarRealmAvailability" inherits="OptionsCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="40" y="-40"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
_G[self:GetName() .. "Text"]:SetText(RRS("Check Availability for Alts"))
</OnLoad>
<OnClick>
if (self:GetChecked()) then
PlaySound("igMainMenuOptionCheckBoxOn")
else
PlaySound("igMainMenuOptionCheckBoxOff")
end
RecipeRadar_Availability_Toggle()
</OnClick>
</Scripts>
</CheckButton>
 
<!-- Show minimap button checkbox -->
<CheckButton name="RecipeRadarShowMinimapButton" inherits="OptionsCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="40" y="-80"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
_G[self:GetName() .. "Text"]:SetText(RRS("Show Minimap Button"))
</OnLoad>
<OnClick>
if (self:GetChecked()) then
PlaySound("igMainMenuOptionCheckBoxOn")
else
PlaySound("igMainMenuOptionCheckBoxOff")
end
RecipeRadar_MinimapButton_Toggle()
</OnClick>
</Scripts>
</CheckButton>
 
<!-- Minimap button position slider -->
<Slider name="RecipeRadarMinimapButtonPositionSlider" inherits="OptionsSliderTemplate">
<Size>
<AbsDimension x="220" y="16"/>
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="-130"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
_G[self:GetName() .. "Text"]:SetText(RRS("Minimap Button Position"))
_G[self:GetName() .. "High"]:SetText()
_G[self:GetName() .. "Low"]:SetText()
RecipeRadarMinimapButtonPositionSlider:SetMinMaxValues(0, 360)
RecipeRadarMinimapButtonPositionSlider:SetValueStep(1)
</OnLoad>
<OnValueChanged>
RecipeRadar_Options.MinimapButtonPosition = self:GetValue()
RecipeRadar_MinimapButton_UpdatePosition()
</OnValueChanged>
</Scripts>
</Slider>
 
<!-- Auto-select region checkbox -->
<CheckButton name="RecipeRadarAutoSelectRegionButton" inherits="OptionsCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="40" y="-160"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
_G[self:GetName() .. "Text"]:SetText(RRS("Auto-select Current Region"))
</OnLoad>
<OnClick>
RecipeRadar_OptionsFrame_AutoSelectRegion_OnClick(self)
</OnClick>
</Scripts>
</CheckButton>
 
<!-- Region selection dropdowns -->
<Frame name="RecipeRadar_ContinentDropDown" inherits="UIDropDownMenuTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="50" y="-197"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
RecipeRadar_ContinentDropDown_OnLoad(self)
</OnLoad>
</Scripts>
</Frame>
<Frame name="RecipeRadar_RegionDropDown" inherits="UIDropDownMenuTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="RecipeRadar_ContinentDropDown" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-2"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
RecipeRadar_RegionDropDown_OnLoad(self)
</OnLoad>
</Scripts>
</Frame>
 
<!-- Auto-select region checkbox -->
<CheckButton name="RecipeRadarAutoMapVendorsButton" inherits="OptionsCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="40" y="-270"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
_G[self:GetName() .. "Text"]:SetText(RRS("Auto-map Contributive Vendors"))
</OnLoad>
<OnClick>
if (self:GetChecked()) then
PlaySound("igMainMenuOptionCheckBoxOn")
RecipeRadar_Options.AutoMapVendors = true
RecipeRadar_InitVendorFilters()
RecipeRadar_FrameUpdate()
else
PlaySound("igMainMenuOptionCheckBoxOff")
RecipeRadar_Options.AutoMapVendors = false
end
</OnClick>
</Scripts>
</CheckButton>
 
<!-- Okay/done button -->
<Button inherits="OptionsButtonTemplate" text="OKAY">
<Anchors>
<Anchor point="BOTTOM">
<Offset>
<AbsDimension x="0" y="20"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
PlaySound("gsTitleOptionOK")
RecipeRadar_OptionsFrame_Toggle()
</OnClick>
</Scripts>
</Button>
 
</Frames>
<Scripts>
<OnLoad>
RecipeRadar_OptionsFrame_OnLoad(self)
</OnLoad>
<OnShow>
RecipeRadar_OptionsFrame_OnShow()
</OnShow>
<OnHide>
self:StopMovingOrSizing()
</OnHide>
<OnKeyDown>
if (button == "ESCAPE") then
RecipeRadar_OptionsFrame_Toggle()
end
</OnKeyDown>
<OnDragStart>
if (button == "LeftButton") then self:StartMoving() end
</OnDragStart>
<OnDragStop>
self:StopMovingOrSizing()
</OnDragStop>
<OnMouseUp>
self:StopMovingOrSizing()
</OnMouseUp>
</Scripts>
 
</Frame>
</UI>
trunk/RecipeRadar/MinimapButton.lua New file
0,0 → 1,90
 
-- MinimapButton.lua: code to handle the little Recipe Radar minimap button
-- $Id: MinimapButton.lua 1022 2008-03-07 20:57:50Z jnmiller $
 
function RecipeRadar_MinimapButton_OnClick(self, button)
 
RecipeRadar_Toggle()
 
end
 
function RecipeRadar_MinimapButton_Init()
 
if (RecipeRadar_Options.ShowMinimapButton) then
RecipeRadarMinimapButtonFrame:Show()
else
RecipeRadarMinimapButtonFrame:Hide()
end
RecipeRadar_MinimapButton_UpdatePosition()
 
end
 
function RecipeRadar_MinimapButton_Toggle()
 
if (RecipeRadarMinimapButtonFrame:IsVisible()) then
RecipeRadarMinimapButtonFrame:Hide()
RecipeRadar_Options.ShowMinimapButton = false
else
RecipeRadarMinimapButtonFrame:Show()
RecipeRadar_Options.ShowMinimapButton = true
end
 
end
 
-- Turns on the slow highlight/outline flash.
function RecipeRadar_MinimapButton_Flash()
 
RECIPERADAR_FLASH_MINIMAP_BUTTON = true
RecipeRadarMinimapButtonHighlightFrame:Show()
 
end
 
-- OnUpdate event handler manages the flashing highlight when appropriate.
function RecipeRadar_MinimapButton_OnUpdate(self, elapsed)
 
if (not RECIPERADAR_FLASH_MINIMAP_BUTTON) then
return
end
 
self.total = self.total + elapsed
local cntr = self.cntr + elapsed
local sign = self.sign
local alpha
 
-- alternate coming/going every half-second
if (cntr > 0.5) then
sign = -sign
self.sign = sign
end
cntr = mod(cntr, 0.5)
self.cntr = cntr
 
-- change the alpha value to create the flashing
if (sign == 1) then
alpha = (25 + (cntr * 400)) / 255
else
alpha = (255 - (cntr * 400)) / 255
end
 
-- only make the new value visible if the button is also visible
if (RecipeRadarMinimapButtonFrame:IsVisible()) then
RecipeRadarMinimapButtonHighlightFrame:SetAlpha(alpha)
end
 
-- only flash for a few seconds, then shut off
if (self.total > 4) then
RecipeRadarMinimapButtonHighlightFrame:Hide()
RECIPERADAR_FLASH_MINIMAP_BUTTON = false
self.total = 0
end
 
end
 
-- Sets the location of the button according to the current options.
function RecipeRadar_MinimapButton_UpdatePosition()
 
RecipeRadarMinimapButtonFrame:SetPoint("TOPLEFT", "Minimap", "TOPLEFT",
54 - (78 * cos(RecipeRadar_Options.MinimapButtonPosition)),
(78 * sin(RecipeRadar_Options.MinimapButtonPosition)) - 55)
 
end
trunk/RecipeRadar/Localization.lua New file
0,0 → 1,2650

-- Localization.lua: localization strings and code
-- Auto generated on 8/11/2009 8:00:22 PM
 
RecipeRadar_Strings = { }
 
-- String translation function. Looks up the given string in the string
-- table and returns the result, or the original string if no result is
-- found. This means that localizations needn't account for every string -
-- the missing strings will just match the hardcoded defaults.
function RRS(s)
 
if (RecipeRadar_Strings[s] and RecipeRadar_Strings[s] ~= "") then
return RecipeRadar_Strings[s]
end
return s
 
end
 
-- This is a sample locale that includes null translations of all strings
-- used by the addon. Real translations will contain a subset of these
-- with, of course, mappings to actual strings in other languages. This
-- section is purely for the benefit of translators and doesn't affect the
-- operation of the addon in any way (note the behavior of RRS(), above).
if (GetLocale() == "sample") then
 
-- the name of the addon!
RecipeRadar_Strings["Recipe Radar"] = ""
 
-- these show up in the game's Key Bindings screen
RecipeRadar_Strings["Recipe Radar Bindings"] = ""
RecipeRadar_Strings["Toggle Recipe Radar"] = ""
 
-- options button and corresponding options frame
RecipeRadar_Strings["Options"] = ""
RecipeRadar_Strings["Auto-map Contributive Vendors"] = ""
RecipeRadar_Strings["Auto-select Current Region"] = ""
RecipeRadar_Strings["Check Availability for Alts"] = ""
RecipeRadar_Strings["Minimap Button Position"] = ""
RecipeRadar_Strings["Show Minimap Button"] = ""
 
-- format strings used in the map tooltips
RecipeRadar_Strings["1 recipe"] = ""
RecipeRadar_Strings["%d learnable"] = ""
RecipeRadar_Strings["%d recipes"] = ""
 
-- this appears when the recipe is not in your local database
RecipeRadar_Strings["Uncached Recipe"] = ""
 
-- uncached recipe tooltip - see RecipeRadar_Availability_CreateTooltip()
RecipeRadar_Strings["You may mouse over the"] = ""
RecipeRadar_Strings["icon to lookup this recipe."] = ""
RecipeRadar_Strings["Warning: if your server has"] = ""
RecipeRadar_Strings["not yet seen this item, you"] = ""
RecipeRadar_Strings["will be disconnected!"] = ""
 
-- some regions don't have any recipes for sale
RecipeRadar_Strings["No recipes for sale in this region."] = ""
 
-- radio button (and tooltip) that indicates a mapped vendor
RecipeRadar_Strings["Locate Vendor on Map"] = ""
RecipeRadar_Strings["Shift-click a vendor to add or remove her location on the world map."] = ""
 
-- strings in the faction filtering dropdown; we don't need 'Horde' or 'Alliance' because Blizzard provides them for us
RecipeRadar_Strings["Factions"] = ""
RecipeRadar_Strings["Neutral"] = ""
 
-- profession filtering dropdown - these strings must match those returned by GetTradeSkillLine() and GetCraftDisplaySkillLine()
RecipeRadar_Strings["Professions"] = ""
RecipeRadar_Strings["Alchemy"] = ""
RecipeRadar_Strings["Blacksmithing"] = ""
RecipeRadar_Strings["Cooking"] = ""
RecipeRadar_Strings["Enchanting"] = ""
RecipeRadar_Strings["Engineering"] = ""
RecipeRadar_Strings["First Aid"] = ""
RecipeRadar_Strings["Fishing"] = ""
RecipeRadar_Strings["Inscription"] = ""
RecipeRadar_Strings["Jewelcrafting"] = ""
RecipeRadar_Strings["Leatherworking"] = ""
RecipeRadar_Strings["Tailoring"] = ""
 
-- strings in the availability filtering dropdown
RecipeRadar_Strings["Availability"] = ""
RecipeRadar_Strings["Already Known (Alts)"] = ""
RecipeRadar_Strings["Already Known (Player)"] = ""
RecipeRadar_Strings["Available Now (Alts)"] = ""
RecipeRadar_Strings["Available Now (Player)"] = ""
RecipeRadar_Strings["Future Prospect (Alts)"] = ""
RecipeRadar_Strings["Future Prospect (Player)"] = ""
RecipeRadar_Strings["Inapplicable"] = ""
 
-- headings for the availability tooltip
RecipeRadar_Strings["Available For:"] = ""
RecipeRadar_Strings["Already Known By:"] = ""
RecipeRadar_Strings["Future Prospect For:"] = ""
 
-- format string for rank indicator for future prospects; that is, it tells you how soon you can learn the recipe - eg. "163 of 175"
RecipeRadar_Strings["%d of %d"] = ""
 
-- special notes for vendor requirements follow vendor names (eg. "Seasonal Vendor")
RecipeRadar_Strings["%s Vendor"] = ""
RecipeRadar_Strings["Intermittent"] = ""
RecipeRadar_Strings["Quest"] = ""
RecipeRadar_Strings["Roving"] = ""
RecipeRadar_Strings["Seasonal"] = ""
 
-- faction names for recipe reputation requirements
RecipeRadar_Strings["Argent Dawn"] = ""
RecipeRadar_Strings["Argent Crusade"] = ""
RecipeRadar_Strings["Ashtongue Deathsworn"] = ""
RecipeRadar_Strings["Cenarion Circle"] = ""
RecipeRadar_Strings["Cenarion Expedition"] = ""
RecipeRadar_Strings["Explorers' League"] = ""
RecipeRadar_Strings["Frenzyheart Tribe"] = ""
RecipeRadar_Strings["Honor Hold"] = ""
RecipeRadar_Strings["Keepers of Time"] = ""
RecipeRadar_Strings["Kirin Tor"] = ""
RecipeRadar_Strings["Knights of the Ebon Blade"] = ""
RecipeRadar_Strings["Kurenai"] = ""
RecipeRadar_Strings["Lower City"] = ""
RecipeRadar_Strings["Netherwing"] = ""
RecipeRadar_Strings["Shattered Sun Offensive"] = ""
RecipeRadar_Strings["Sporeggar"] = ""
RecipeRadar_Strings["The Aldor"] = ""
RecipeRadar_Strings["The Consortium"] = ""
RecipeRadar_Strings["The Frostborn"] = ""
RecipeRadar_Strings["The Hand of Vengeance"] = ""
RecipeRadar_Strings["The Kalu'ak"] = ""
RecipeRadar_Strings["The Mag'har"] = ""
RecipeRadar_Strings["The Oracles"] = ""
RecipeRadar_Strings["The Scale of the Sands"] = ""
RecipeRadar_Strings["The Scryers"] = ""
RecipeRadar_Strings["The Sha'tar"] = ""
RecipeRadar_Strings["The Silver Covenant"] = ""
RecipeRadar_Strings["The Sons of Hodir"] = ""
RecipeRadar_Strings["The Taunka"] = ""
RecipeRadar_Strings["The Violet Eye"] = ""
RecipeRadar_Strings["The Wyrmrest Accord"] = ""
RecipeRadar_Strings["Thorium Brotherhood"] = ""
RecipeRadar_Strings["Thrallmar"] = ""
RecipeRadar_Strings["Timbermaw Hold"] = ""
RecipeRadar_Strings["Valiance Expedition"] = ""
RecipeRadar_Strings["Warsong Offensive"] = ""
RecipeRadar_Strings["Zandalar Tribe"] = ""
 
-- other recipe requirements
RecipeRadar_Strings["%s Only"] = ""
RecipeRadar_Strings["Rogue"] = ""
RecipeRadar_Strings["Special"] = ""
 
-- menu item in the right-click context menu for mapped vendor buttons
RecipeRadar_Strings["Unmap Vendor"] = ""
RecipeRadar_Strings["Collapse"] = ""
RecipeRadar_Strings["Collapse All"] = ""
RecipeRadar_Strings["Expand"] = ""
RecipeRadar_Strings["Expand All"] = ""
RecipeRadar_Strings["Map Vendor"] = ""
 
-- trade skill specialties
RecipeRadar_Strings["Gnomish Engineer"] = ""
RecipeRadar_Strings["Armorsmith"] = ""
RecipeRadar_Strings["Dragonscale Leatherworking"] = ""
RecipeRadar_Strings["Elemental Leatherworking"] = ""
RecipeRadar_Strings["Goblin Engineer"] = ""
RecipeRadar_Strings["Master Axesmith"] = ""
RecipeRadar_Strings["Master Hammersmith"] = ""
RecipeRadar_Strings["Master Swordsmith"] = ""
RecipeRadar_Strings["Mooncloth Tailoring"] = ""
RecipeRadar_Strings["Shadoweave Tailoring"] = ""
RecipeRadar_Strings["Spellfire Tailoring"] = ""
RecipeRadar_Strings["Tribal Leatherworking"] = ""
RecipeRadar_Strings["Weaponsmith"] = ""
 
-- continent names for alternate region selection
RecipeRadar_Strings["Kalimdor"] = ""
RecipeRadar_Strings["Eastern Kingdoms"] = ""
RecipeRadar_Strings["Instances"] = ""
RecipeRadar_Strings["Northrend"] = ""
RecipeRadar_Strings["Outland"] = ""
 
-- these are the location names returned by GetRealZoneText()
-- feel free to add regions not present in this list, too, of course
RecipeRadar_Strings["Alterac Mountains"] = ""
RecipeRadar_Strings["Arathi Highlands"] = ""
RecipeRadar_Strings["Ashenvale"] = ""
RecipeRadar_Strings["Azshara"] = ""
RecipeRadar_Strings["Azuremyst Isle"] = ""
RecipeRadar_Strings["Badlands"] = ""
RecipeRadar_Strings["Black Temple"] = ""
RecipeRadar_Strings["Blackrock Depths"] = ""
RecipeRadar_Strings["Blade's Edge Mountains"] = ""
RecipeRadar_Strings["Blasted Lands"] = ""
RecipeRadar_Strings["Bloodmyst Isle"] = ""
RecipeRadar_Strings["Borean Tundra"] = ""
RecipeRadar_Strings["Burning Steppes"] = ""
RecipeRadar_Strings["Crystalsong Forest"] = ""
RecipeRadar_Strings["Dalaran"] = ""
RecipeRadar_Strings["Darkshore"] = ""
RecipeRadar_Strings["Darnassus"] = ""
RecipeRadar_Strings["Deadwind Pass"] = ""
RecipeRadar_Strings["Desolace"] = ""
RecipeRadar_Strings["Dire Maul"] = ""
RecipeRadar_Strings["Dragonblight"] = ""
RecipeRadar_Strings["Dun Morogh"] = ""
RecipeRadar_Strings["Durotar"] = ""
RecipeRadar_Strings["Duskwood"] = ""
RecipeRadar_Strings["Dustwallow Marsh"] = ""
RecipeRadar_Strings["Eastern Plaguelands"] = ""
RecipeRadar_Strings["Elwynn Forest"] = ""
RecipeRadar_Strings["Eversong Woods"] = ""
RecipeRadar_Strings["Felwood"] = ""
RecipeRadar_Strings["Feralas"] = ""
RecipeRadar_Strings["Ghostlands"] = ""
RecipeRadar_Strings["Gnomeregan"] = ""
RecipeRadar_Strings["Grizzly Hills"] = ""
RecipeRadar_Strings["Hellfire Peninsula"] = ""
RecipeRadar_Strings["Hillsbrad Foothills"] = ""
RecipeRadar_Strings["Howling Fjord"] = ""
RecipeRadar_Strings["Hyjal Summit"] = ""
RecipeRadar_Strings["Icecrown"] = ""
RecipeRadar_Strings["Ironforge"] = ""
RecipeRadar_Strings["Isle of Quel'Danas"] = ""
RecipeRadar_Strings["Karazhan"] = ""
RecipeRadar_Strings["Loch Modan"] = ""
RecipeRadar_Strings["Moonglade"] = ""
RecipeRadar_Strings["Mulgore"] = ""
RecipeRadar_Strings["Nagrand"] = ""
RecipeRadar_Strings["Naxxramas"] = ""
RecipeRadar_Strings["Netherstorm"] = ""
RecipeRadar_Strings["Old Hillsbrad Foothills"] = ""
RecipeRadar_Strings["Orgrimmar"] = ""
RecipeRadar_Strings["Redridge Mountains"] = ""
RecipeRadar_Strings["Ruins of Ahn'Qiraj"] = ""
RecipeRadar_Strings["Searing Gorge"] = ""
RecipeRadar_Strings["Shadowmoon Valley"] = ""
RecipeRadar_Strings["Shattrath City"] = ""
RecipeRadar_Strings["Sholazar Basin"] = ""
RecipeRadar_Strings["Silithus"] = ""
RecipeRadar_Strings["Silvermoon City"] = ""
RecipeRadar_Strings["Silverpine Forest"] = ""
RecipeRadar_Strings["Stonetalon Mountains"] = ""
RecipeRadar_Strings["Stormwind City"] = ""
RecipeRadar_Strings["Stranglethorn Vale"] = ""
RecipeRadar_Strings["Swamp of Sorrows"] = ""
RecipeRadar_Strings["Tanaris"] = ""
RecipeRadar_Strings["Teldrassil"] = ""
RecipeRadar_Strings["Terokkar Forest"] = ""
RecipeRadar_Strings["The Barrens"] = ""
RecipeRadar_Strings["The Exodar"] = ""
RecipeRadar_Strings["The Hinterlands"] = ""
RecipeRadar_Strings["The Storm Peaks"] = ""
RecipeRadar_Strings["Thousand Needles"] = ""
RecipeRadar_Strings["Thunder Bluff"] = ""
RecipeRadar_Strings["Tirisfal Glades"] = ""
RecipeRadar_Strings["Undercity"] = ""
RecipeRadar_Strings["Un'Goro Crater"] = ""
RecipeRadar_Strings["Wailing Caverns"] = ""
RecipeRadar_Strings["Western Plaguelands"] = ""
RecipeRadar_Strings["Westfall"] = ""
RecipeRadar_Strings["Wetlands"] = ""
RecipeRadar_Strings["Wintergrasp"] = ""
RecipeRadar_Strings["Winterspring"] = ""
RecipeRadar_Strings["Zangarmarsh"] = ""
RecipeRadar_Strings["Zul'Drak"] = ""
 
-- some vendor names may need translating
RecipeRadar_Strings["\"Cookie\" McWeaksauce"] = ""
RecipeRadar_Strings["Aaron Hollman"] = ""
RecipeRadar_Strings["Abigail Shiel"] = ""
RecipeRadar_Strings["Aendel Windspear"] = ""
RecipeRadar_Strings["Aged Dalaran Wizard"] = ""
RecipeRadar_Strings["Ainderu Summerleaf"] = ""
RecipeRadar_Strings["Alchemist Gribble"] = ""
RecipeRadar_Strings["Alchemist Pestlezugg"] = ""
RecipeRadar_Strings["Aldraan"] = ""
RecipeRadar_Strings["Alexandra Bolero"] = ""
RecipeRadar_Strings["Algernon"] = ""
RecipeRadar_Strings["Almaador"] = ""
RecipeRadar_Strings["Altaa"] = ""
RecipeRadar_Strings["Alurmi"] = ""
RecipeRadar_Strings["Alys Vol'tyr"] = ""
RecipeRadar_Strings["Amy Davenport"] = ""
RecipeRadar_Strings["Andormu"] = ""
RecipeRadar_Strings["Andrew Hilbert"] = ""
RecipeRadar_Strings["Andrion Darkspinner"] = ""
RecipeRadar_Strings["Androd Fadran"] = ""
RecipeRadar_Strings["Anuur"] = ""
RecipeRadar_Strings["Apothecary Antonivich"] = ""
RecipeRadar_Strings["Apprentice Darius"] = ""
RecipeRadar_Strings["Archmage Alvareaux"] = ""
RecipeRadar_Strings["Aresella"] = ""
RecipeRadar_Strings["Argent Quartermaster Hasana"] = ""
RecipeRadar_Strings["Argent Quartermaster Lightspark"] = ""
RecipeRadar_Strings["Arille Azuregaze"] = ""
RecipeRadar_Strings["Arras"] = ""
RecipeRadar_Strings["Arred"] = ""
RecipeRadar_Strings["Arrond"] = ""
RecipeRadar_Strings["Asarnan"] = ""
RecipeRadar_Strings["Balai Lok'Wein"] = ""
RecipeRadar_Strings["Bale"] = ""
RecipeRadar_Strings["Banalash"] = ""
RecipeRadar_Strings["Baxter"] = ""
RecipeRadar_Strings["Blackwing"] = ""
RecipeRadar_Strings["Blimo Gadgetspring"] = ""
RecipeRadar_Strings["Blixrez Goodstitch"] = ""
RecipeRadar_Strings["Blizrik Buckshot"] = ""
RecipeRadar_Strings["Bliztik"] = ""
RecipeRadar_Strings["Bombus Finespindle"] = ""
RecipeRadar_Strings["Borto"] = ""
RecipeRadar_Strings["Borya"] = ""
RecipeRadar_Strings["Bradley Towns"] = ""
RecipeRadar_Strings["Braeg Stoutbeard"] = ""
RecipeRadar_Strings["Brienna Starglow"] = ""
RecipeRadar_Strings["Bro'kin"] = ""
RecipeRadar_Strings["Bronk"] = ""
RecipeRadar_Strings["Bryan Landers"] = ""
RecipeRadar_Strings["Burbik Gearspanner"] = ""
RecipeRadar_Strings["Burko"] = ""
RecipeRadar_Strings["Captain O'Neal"] = ""
RecipeRadar_Strings["Captured Gnome"] = ""
RecipeRadar_Strings["Catherine Leland"] = ""
RecipeRadar_Strings["Christoph Jeffcoat"] = ""
RecipeRadar_Strings["Cielstrasza"] = ""
RecipeRadar_Strings["Clyde Ranthal"] = ""
RecipeRadar_Strings["Constance Brisboise"] = ""
RecipeRadar_Strings["Cookie One-Eye"] = ""
RecipeRadar_Strings["Coreiel"] = ""
RecipeRadar_Strings["Corporal Bluth"] = ""
RecipeRadar_Strings["Cowardly Crosby"] = ""
RecipeRadar_Strings["Crazk Sparks"] = ""
RecipeRadar_Strings["Cro Threadstrong"] = ""
RecipeRadar_Strings["Daga Ramba"] = ""
RecipeRadar_Strings["Daggle Ironshaper"] = ""
RecipeRadar_Strings["Dalria"] = ""
RecipeRadar_Strings["Daniel Bartlett"] = ""
RecipeRadar_Strings["Danielle Zipstitch"] = ""
RecipeRadar_Strings["Darian Singh"] = ""
RecipeRadar_Strings["Darnall"] = ""
RecipeRadar_Strings["Dealer Malij"] = ""
RecipeRadar_Strings["Defias Profiteer"] = ""
RecipeRadar_Strings["Deneb Walker"] = ""
RecipeRadar_Strings["Derak Nightfall"] = ""
RecipeRadar_Strings["Derek Odds"] = ""
RecipeRadar_Strings["Deynna"] = ""
RecipeRadar_Strings["Dirge Quikcleave"] = ""
RecipeRadar_Strings["Doba"] = ""
RecipeRadar_Strings["Doris Volanthius"] = ""
RecipeRadar_Strings["Drac Roughcut"] = ""
RecipeRadar_Strings["Drake Lindgren"] = ""
RecipeRadar_Strings["Drovnar Strongbrew"] = ""
RecipeRadar_Strings["Duchess Mynx"] = ""
RecipeRadar_Strings["Edna Mullby"] = ""
RecipeRadar_Strings["Eebee Jinglepocket"] = ""
RecipeRadar_Strings["Egomis"] = ""
RecipeRadar_Strings["Eiin"] = ""
RecipeRadar_Strings["Eldara Dawnrunner"] = ""
RecipeRadar_Strings["Elynna"] = ""
RecipeRadar_Strings["Emrul Riknussun"] = ""
RecipeRadar_Strings["Enchantress Andiala"] = ""
RecipeRadar_Strings["Eriden"] = ""
RecipeRadar_Strings["Erika Tate"] = ""
RecipeRadar_Strings["Erilia"] = ""
RecipeRadar_Strings["Evie Whirlbrew"] = ""
RecipeRadar_Strings["Fariel Starsong"] = ""
RecipeRadar_Strings["Fazu"] = ""
RecipeRadar_Strings["Fedryen Swiftspear"] = ""
RecipeRadar_Strings["Feera"] = ""
RecipeRadar_Strings["Felannia"] = ""
RecipeRadar_Strings["Felicia Doan"] = ""
RecipeRadar_Strings["Felika"] = ""
RecipeRadar_Strings["Fizzix Blastbolt"] = ""
RecipeRadar_Strings["Fradd Swiftgear"] = ""
RecipeRadar_Strings["Fyldan"] = ""
RecipeRadar_Strings["Gagsprocket"] = ""
RecipeRadar_Strings["Galley Chief Alunwea"] = ""
RecipeRadar_Strings["Galley Chief Gathers"] = ""
RecipeRadar_Strings["Galley Chief Grace"] = ""
RecipeRadar_Strings["Galley Chief Halumvorea"] = ""
RecipeRadar_Strings["Galley Chief Mariss"] = ""
RecipeRadar_Strings["Galley Chief Steelbelly"] = ""
RecipeRadar_Strings["Gambarinka"] = ""
RecipeRadar_Strings["Gara Skullcrush"] = ""
RecipeRadar_Strings["Gaston"] = ""
RecipeRadar_Strings["Gearcutter Cogspinner"] = ""
RecipeRadar_Strings["Geen"] = ""
RecipeRadar_Strings["Gelanthis"] = ""
RecipeRadar_Strings["George Candarte"] = ""
RecipeRadar_Strings["Gharash"] = ""
RecipeRadar_Strings["Ghok'kah"] = ""
RecipeRadar_Strings["Gidge Spellweaver"] = ""
RecipeRadar_Strings["Gigget Zipcoil"] = ""
RecipeRadar_Strings["Gikkix"] = ""
RecipeRadar_Strings["Gina MacGregor"] = ""
RecipeRadar_Strings["Gloria Femmel"] = ""
RecipeRadar_Strings["Glyx Brewright"] = ""
RecipeRadar_Strings["Gnaz Blunderflame"] = ""
RecipeRadar_Strings["Gretta Ganter"] = ""
RecipeRadar_Strings["Grimtak"] = ""
RecipeRadar_Strings["Grub"] = ""
RecipeRadar_Strings["Haalrun"] = ""
RecipeRadar_Strings["Haferet"] = ""
RecipeRadar_Strings["Hagrus"] = ""
RecipeRadar_Strings["Hammon Karwn"] = ""
RecipeRadar_Strings["Harggan"] = ""
RecipeRadar_Strings["Harklan Moongrove"] = ""
RecipeRadar_Strings["Harlon Thornguard"] = ""
RecipeRadar_Strings["Harlown Darkweave"] = ""
RecipeRadar_Strings["Harn Longcast"] = ""
RecipeRadar_Strings["Haughty Modiste"] = ""
RecipeRadar_Strings["Heldan Galesong"] = ""
RecipeRadar_Strings["Helenia Olden"] = ""
RecipeRadar_Strings["High Admiral \"Shelly\" Jorrik"] = ""
RecipeRadar_Strings["Himmik"] = ""
RecipeRadar_Strings["Hotoppik Copperpinch"] = ""
RecipeRadar_Strings["Hula'mahi"] = ""
RecipeRadar_Strings["Ildine Sorrowspear"] = ""
RecipeRadar_Strings["Indormi"] = ""
RecipeRadar_Strings["Inessera"] = ""
RecipeRadar_Strings["Innkeeper Biribi"] = ""
RecipeRadar_Strings["Innkeeper Fizzgrimble"] = ""
RecipeRadar_Strings["Innkeeper Grilka"] = ""
RecipeRadar_Strings["Jabbey"] = ""
RecipeRadar_Strings["Jandia"] = ""
RecipeRadar_Strings["Janet Hommers"] = ""
RecipeRadar_Strings["Jangdor Swiftstrider"] = ""
RecipeRadar_Strings["Jannos Ironwill"] = ""
RecipeRadar_Strings["Jaquilina Dramet"] = ""
RecipeRadar_Strings["Jase Farlane"] = ""
RecipeRadar_Strings["Jazzrik"] = ""
RecipeRadar_Strings["Jeeda"] = ""
RecipeRadar_Strings["Jennabink Powerseam"] = ""
RecipeRadar_Strings["Jessara Cordell"] = ""
RecipeRadar_Strings["Jim Saltit"] = ""
RecipeRadar_Strings["Jinky Twizzlefixxit"] = ""
RecipeRadar_Strings["Johan Barnes"] = ""
RecipeRadar_Strings["Joseph Moore"] = ""
RecipeRadar_Strings["Jubie Gadgetspring"] = ""
RecipeRadar_Strings["Jun'ha"] = ""
RecipeRadar_Strings["Juno Dufrain"] = ""
RecipeRadar_Strings["Jutak"] = ""
RecipeRadar_Strings["Kaita Deepforge"] = ""
RecipeRadar_Strings["Kalaen"] = ""
RecipeRadar_Strings["Kalldan Felmoon"] = ""
RecipeRadar_Strings["Kania"] = ""
RecipeRadar_Strings["Karaaz"] = ""
RecipeRadar_Strings["Keena"] = ""
RecipeRadar_Strings["Kelsey Yance"] = ""
RecipeRadar_Strings["Kendor Kabonka"] = ""
RecipeRadar_Strings["Khara Deepwater"] = ""
RecipeRadar_Strings["Khole Jinglepocket"] = ""
RecipeRadar_Strings["Kiknikle"] = ""
RecipeRadar_Strings["Killian Sanatha"] = ""
RecipeRadar_Strings["Kilxx"] = ""
RecipeRadar_Strings["Kireena"] = ""
RecipeRadar_Strings["Kithas"] = ""
RecipeRadar_Strings["Knaz Blunderflame"] = ""
RecipeRadar_Strings["Knight Dameron"] = ""
RecipeRadar_Strings["Koren"] = ""
RecipeRadar_Strings["Kor'geld"] = ""
RecipeRadar_Strings["Krek Cragcrush"] = ""
RecipeRadar_Strings["Kriggon Talsone"] = ""
RecipeRadar_Strings["Krinkle Goodsteel"] = ""
RecipeRadar_Strings["Kulwia"] = ""
RecipeRadar_Strings["Kzixx"] = ""
RecipeRadar_Strings["Lady Palanseer"] = ""
RecipeRadar_Strings["Laird"] = ""
RecipeRadar_Strings["Lalla Brightweave"] = ""
RecipeRadar_Strings["Landraelanis"] = ""
RecipeRadar_Strings["Lardan"] = ""
RecipeRadar_Strings["Lebowski"] = ""
RecipeRadar_Strings["Leeli Longhaggle"] = ""
RecipeRadar_Strings["Leo Sarn"] = ""
RecipeRadar_Strings["Leonard Porter"] = ""
RecipeRadar_Strings["Librarian Erickson"] = ""
RecipeRadar_Strings["Lieutenant General Andorov"] = ""
RecipeRadar_Strings["Lillehoff"] = ""
RecipeRadar_Strings["Lilly"] = ""
RecipeRadar_Strings["Lindea Rabonne"] = ""
RecipeRadar_Strings["Linna Bruder"] = ""
RecipeRadar_Strings["Lizbeth Cromwell"] = ""
RecipeRadar_Strings["Logannas"] = ""
RecipeRadar_Strings["Logistics Officer Brighton"] = ""
RecipeRadar_Strings["Logistics Officer Silverstone"] = ""
RecipeRadar_Strings["Logistics Officer Ulrike"] = ""
RecipeRadar_Strings["Lokhtos Darkbargainer"] = ""
RecipeRadar_Strings["Loolruna"] = ""
RecipeRadar_Strings["Lorelae Wintersong"] = ""
RecipeRadar_Strings["Lucan Cordell"] = ""
RecipeRadar_Strings["Lyna"] = ""
RecipeRadar_Strings["Madame Ruby"] = ""
RecipeRadar_Strings["Magnus Frostwake"] = ""
RecipeRadar_Strings["Mahu"] = ""
RecipeRadar_Strings["Mallen Swain"] = ""
RecipeRadar_Strings["Malygen"] = ""
RecipeRadar_Strings["Mari Stonehand"] = ""
RecipeRadar_Strings["Maria Lumere"] = ""
RecipeRadar_Strings["Martine Tramblay"] = ""
RecipeRadar_Strings["Masat T'andr"] = ""
RecipeRadar_Strings["Master Chef Mouldier"] = ""
RecipeRadar_Strings["Master Craftsman Omarion"] = ""
RecipeRadar_Strings["Mathar G'ochar"] = ""
RecipeRadar_Strings["Mavralyn"] = ""
RecipeRadar_Strings["Mazk Snipeshot"] = ""
RecipeRadar_Strings["Meilosh"] = ""
RecipeRadar_Strings["Melaris"] = ""
RecipeRadar_Strings["Mera Mistrunner"] = ""
RecipeRadar_Strings["Micha Yance"] = ""
RecipeRadar_Strings["Millie Gregorian"] = ""
RecipeRadar_Strings["Misensi"] = ""
RecipeRadar_Strings["Mishta"] = ""
RecipeRadar_Strings["Mixie Farshot"] = ""
RecipeRadar_Strings["Modoru"] = ""
RecipeRadar_Strings["Montarr"] = ""
RecipeRadar_Strings["Morgan Day"] = ""
RecipeRadar_Strings["Muheru the Weaver"] = ""
RecipeRadar_Strings["Muuran"] = ""
RecipeRadar_Strings["Mycah"] = ""
RecipeRadar_Strings["Mythrin'dir"] = ""
RecipeRadar_Strings["Naal Mistrunner"] = ""
RecipeRadar_Strings["Naka"] = ""
RecipeRadar_Strings["Nakodu"] = ""
RecipeRadar_Strings["Namdo Bizzfizzle"] = ""
RecipeRadar_Strings["Nandar Branson"] = ""
RecipeRadar_Strings["Nardstrum Copperpinch"] = ""
RecipeRadar_Strings["Narj Deepslice"] = ""
RecipeRadar_Strings["Narkk"] = ""
RecipeRadar_Strings["Nasmara Moonsong"] = ""
RecipeRadar_Strings["Nata Dawnstrider"] = ""
RecipeRadar_Strings["Neal Allen"] = ""
RecipeRadar_Strings["Neii"] = ""
RecipeRadar_Strings["Nergal"] = ""
RecipeRadar_Strings["Nerrist"] = ""
RecipeRadar_Strings["Nessa Shadowsong"] = ""
RecipeRadar_Strings["Nina Lightbrew"] = ""
RecipeRadar_Strings["Nioma"] = ""
RecipeRadar_Strings["Nula the Butcher"] = ""
RecipeRadar_Strings["Nyoma"] = ""
RecipeRadar_Strings["Ogg'marr"] = ""
RecipeRadar_Strings["Okuno"] = ""
RecipeRadar_Strings["Old Man Heming"] = ""
RecipeRadar_Strings["Ontuvo"] = ""
RecipeRadar_Strings["Otho Moji'ko"] = ""
RecipeRadar_Strings["Outfitter Eric"] = ""
RecipeRadar_Strings["Paulsta'ats"] = ""
RecipeRadar_Strings["Penney Copperpinch"] = ""
RecipeRadar_Strings["Phea"] = ""
RecipeRadar_Strings["Plugger Spazzring"] = ""
RecipeRadar_Strings["Pratt McGrubben"] = ""
RecipeRadar_Strings["Prospector Khazgorm"] = ""
RecipeRadar_Strings["Provisioner Lorkran"] = ""
RecipeRadar_Strings["Provisioner Nasela"] = ""
RecipeRadar_Strings["Qia"] = ""
RecipeRadar_Strings["Quartermaster Davian Vaclav"] = ""
RecipeRadar_Strings["Quartermaster Endarin"] = ""
RecipeRadar_Strings["Quartermaster Enuril"] = ""
RecipeRadar_Strings["Quartermaster Jaffrey Noreliqe"] = ""
RecipeRadar_Strings["Quartermaster Miranda Breechlock"] = ""
RecipeRadar_Strings["Quartermaster Urgronn"] = ""
RecipeRadar_Strings["Quelis"] = ""
RecipeRadar_Strings["Ranik"] = ""
RecipeRadar_Strings["Rann Flamespinner"] = ""
RecipeRadar_Strings["Rartar"] = ""
RecipeRadar_Strings["Rathis Tomber"] = ""
RecipeRadar_Strings["Rikqiz"] = ""
RecipeRadar_Strings["Rin'wosho the Trader"] = ""
RecipeRadar_Strings["Rizz Loosebolt"] = ""
RecipeRadar_Strings["Rohok"] = ""
RecipeRadar_Strings["Ronald Burch"] = ""
RecipeRadar_Strings["Rungor"] = ""
RecipeRadar_Strings["Ruppo Zipcoil"] = ""
RecipeRadar_Strings["Saenorion"] = ""
RecipeRadar_Strings["Sairuk"] = ""
RecipeRadar_Strings["Sassa Weldwell"] = ""
RecipeRadar_Strings["Sebastian Crane"] = ""
RecipeRadar_Strings["Seer Janidi"] = ""
RecipeRadar_Strings["Seersa Copperpinch"] = ""
RecipeRadar_Strings["Sewa Mistrunner"] = ""
RecipeRadar_Strings["Shaani"] = ""
RecipeRadar_Strings["Shadi Mistrunner"] = ""
RecipeRadar_Strings["Shandrina"] = ""
RecipeRadar_Strings["Shankys"] = ""
RecipeRadar_Strings["Sheendra Tallgrass"] = ""
RecipeRadar_Strings["Shen'dralar Provisioner"] = ""
RecipeRadar_Strings["Sheri Zipstitch"] = ""
RecipeRadar_Strings["Sid Limbardi"] = ""
RecipeRadar_Strings["Skreah"] = ""
RecipeRadar_Strings["Smudge Thunderwood"] = ""
RecipeRadar_Strings["Soolie Berryfizz"] = ""
RecipeRadar_Strings["Sovik"] = ""
RecipeRadar_Strings["Stone Guard Mukar"] = ""
RecipeRadar_Strings["Stuart Fleming"] = ""
RecipeRadar_Strings["Sumi"] = ""
RecipeRadar_Strings["Super-Seller 680"] = ""
RecipeRadar_Strings["Supply Officer Mills"] = ""
RecipeRadar_Strings["Tamar"] = ""
RecipeRadar_Strings["Tanaika"] = ""
RecipeRadar_Strings["Tanak"] = ""
RecipeRadar_Strings["Tansy Puddlefizz"] = ""
RecipeRadar_Strings["Tarban Hearthgrain"] = ""
RecipeRadar_Strings["Tari'qa"] = ""
RecipeRadar_Strings["Tatiana"] = ""
RecipeRadar_Strings["Thaddeus Webb"] = ""
RecipeRadar_Strings["Tharynn Bouden"] = ""
RecipeRadar_Strings["Thomas Yance"] = ""
RecipeRadar_Strings["Tiffany Cartier"] = ""
RecipeRadar_Strings["Tilli Thistlefuzz"] = ""
RecipeRadar_Strings["Timothy Jones"] = ""
RecipeRadar_Strings["Trader Narasu"] = ""
RecipeRadar_Strings["Truk Wildbeard"] = ""
RecipeRadar_Strings["Tunkk"] = ""
RecipeRadar_Strings["Ulthaan"] = ""
RecipeRadar_Strings["Ulthir"] = ""
RecipeRadar_Strings["Uriku"] = ""
RecipeRadar_Strings["Uthok"] = ""
RecipeRadar_Strings["Vaean"] = ""
RecipeRadar_Strings["Valdaron"] = ""
RecipeRadar_Strings["Vanessa Sellers"] = ""
RecipeRadar_Strings["Vargus"] = ""
RecipeRadar_Strings["Veenix"] = ""
RecipeRadar_Strings["Vendor-Tron 1000"] = ""
RecipeRadar_Strings["Veteran Crusader Aliocha Segard"] = ""
RecipeRadar_Strings["Vharr"] = ""
RecipeRadar_Strings["Viggz Shinesparked"] = ""
RecipeRadar_Strings["Vivianna"] = ""
RecipeRadar_Strings["Vix Chromeblaster"] = ""
RecipeRadar_Strings["Vizzklick"] = ""
RecipeRadar_Strings["Vodesiin"] = ""
RecipeRadar_Strings["Wenna Silkbeard"] = ""
RecipeRadar_Strings["Werg Thickblade"] = ""
RecipeRadar_Strings["Wik'Tar"] = ""
RecipeRadar_Strings["Wind Trader Lathrai"] = ""
RecipeRadar_Strings["Wolgren Jinglepocket"] = ""
RecipeRadar_Strings["Worb Strongstitch"] = ""
RecipeRadar_Strings["Wrahk"] = ""
RecipeRadar_Strings["Wulan"] = ""
RecipeRadar_Strings["Wulmort Jinglepocket"] = ""
RecipeRadar_Strings["Wunna Darkmane"] = ""
RecipeRadar_Strings["Xandar Goodbeard"] = ""
RecipeRadar_Strings["Xen'to"] = ""
RecipeRadar_Strings["Xerintha Ravenoak"] = ""
RecipeRadar_Strings["Xizk Goodstitch"] = ""
RecipeRadar_Strings["Xizzer Fizzbolt"] = ""
RecipeRadar_Strings["Yatheon"] = ""
RecipeRadar_Strings["Yonada"] = ""
RecipeRadar_Strings["Ythyar"] = ""
RecipeRadar_Strings["Yuka Screwspigot"] = ""
RecipeRadar_Strings["Yurial Soulwater"] = ""
RecipeRadar_Strings["Zan Shivsproket"] = ""
RecipeRadar_Strings["Zannok Hidepiercer"] = ""
RecipeRadar_Strings["Zansoa"] = ""
RecipeRadar_Strings["Zaralda"] = ""
RecipeRadar_Strings["Zarena Cromwind"] = ""
RecipeRadar_Strings["Zargh"] = ""
RecipeRadar_Strings["Zixil"] = ""
RecipeRadar_Strings["Zorbin Fandazzle"] = ""
RecipeRadar_Strings["Zurai"] = ""
RecipeRadar_Strings["Zurii"] = ""
 
end
 
-- actual locales and the relevant string tables follow
 
if (GetLocale() == "deDE") then
 
RecipeRadar_Strings["Toggle Recipe Radar"] = "Recipe Radar umschalten"
RecipeRadar_Strings["Recipe Radar Bindings"] = "Recipe Radar Tastenbelegung"
RecipeRadar_Strings["Auto-map Contributive Vendors"] = "Erlernbare Rezepte Automatisch Markieren"
RecipeRadar_Strings["Auto-select Current Region"] = "Automatisch aktuelle Zone wählen"
RecipeRadar_Strings["Check Availability for Alts"] = "Verwendbarkeit für Alts prüfen"
RecipeRadar_Strings["Minimap Button Position"] = "Position des Minimap-Button"
RecipeRadar_Strings["Show Minimap Button"] = "Minimap-Button anzeigen"
RecipeRadar_Strings["Options"] = "Optionen"
RecipeRadar_Strings["%d learnable"] = "%d lernbar"
RecipeRadar_Strings["%d recipes"] = "%d Rezepte"
RecipeRadar_Strings["1 recipe"] = "1 Rezept"
RecipeRadar_Strings["Uncached Recipe"] = "Rezept nicht im Cache"
RecipeRadar_Strings["You may mouse over the"] = "Bewege die Maus über das Symbol"
RecipeRadar_Strings["icon to lookup this recipe."] = "um dieses Rezept nachzuschlagen."
RecipeRadar_Strings["Warning: if your server has"] = "Warnung: wenn der Server dieses"
RecipeRadar_Strings["not yet seen this item, you"] = "Rezept noch nicht gesehen hat"
RecipeRadar_Strings["will be disconnected!"] = "wird die Verbindung getrennt!"
RecipeRadar_Strings["No recipes for sale in this region."] = "Keine Rezepte zum Verkauf in dieser Region."
RecipeRadar_Strings["Shift-click a vendor to add or remove her location on the world map."] = "Shift-Klicke einen Händler, um seine Position auf der Weltkarte und Minikarte hinzuzufügen oder zu entfernen."
RecipeRadar_Strings["Locate Vendor on Map"] = "Händler auf Karte zeigen"
RecipeRadar_Strings["Factions"] = "Parteien"
RecipeRadar_Strings["Alchemy"] = "Alchemie"
RecipeRadar_Strings["Blacksmithing"] = "Schmiedekunst"
RecipeRadar_Strings["Cooking"] = "Kochkunst"
RecipeRadar_Strings["Enchanting"] = "Verzauberkunst"
RecipeRadar_Strings["Engineering"] = "Ingenieurskunst"
RecipeRadar_Strings["First Aid"] = "Erste Hilfe"
RecipeRadar_Strings["Fishing"] = "Angeln"
RecipeRadar_Strings["Inscription"] = "Inschriftenkunde"
RecipeRadar_Strings["Jewelcrafting"] = "Juwelenschleifen"
RecipeRadar_Strings["Leatherworking"] = "Lederverarbeitung"
RecipeRadar_Strings["Tailoring"] = "Schneiderei"
RecipeRadar_Strings["Professions"] = "Berufe"
RecipeRadar_Strings["Already Known (Alts)"] = "Bereits bekannt (Alts)"
RecipeRadar_Strings["Already Known (Player)"] = "Bereits bekannt (Spieler)"
RecipeRadar_Strings["Available Now (Alts)"] = "Vorhanden jetzt (Alts)"
RecipeRadar_Strings["Available Now (Player)"] = "Vorhanden jetzt (Spieler)"
RecipeRadar_Strings["Future Prospect (Alts)"] = "Zukünftige Aussicht (Alts)"
RecipeRadar_Strings["Future Prospect (Player)"] = "Zukünftige Aussicht (Spieler)"
RecipeRadar_Strings["Inapplicable"] = "Nicht anwendbar"
RecipeRadar_Strings["Availability"] = "Verwendbarkeit"
RecipeRadar_Strings["Already Known By:"] = "Bereits bekannt für:"
RecipeRadar_Strings["Future Prospect For:"] = "Zukünftige Aussicht für:"
RecipeRadar_Strings["Available For:"] = "Vorhanden für:"
RecipeRadar_Strings["%d of %d"] = "%d von %d"
RecipeRadar_Strings["Intermittent"] = "Zeitweiliger"
RecipeRadar_Strings["Quest"] = "Quest"
RecipeRadar_Strings["Roving"] = "Wandernder"
RecipeRadar_Strings["Seasonal"] = "Saisonaler"
RecipeRadar_Strings["%s Vendor"] = "%s Händler"
RecipeRadar_Strings["Argent Crusade"] = "Argentumkreuzzug"
RecipeRadar_Strings["Ashtongue Deathsworn"] = "Die Todeshörigen"
RecipeRadar_Strings["Cenarion Circle"] = "Zirkel des Cenarius"
RecipeRadar_Strings["Cenarion Expedition"] = "Expedition des Cenarius"
RecipeRadar_Strings["Explorers' League"] = "Forscherliga"
RecipeRadar_Strings["Frenzyheart Tribe"] = "Stamm der Wildherzen"
RecipeRadar_Strings["Honor Hold"] = "Ehrenfeste"
RecipeRadar_Strings["Keepers of Time"] = "Hüter der Zeit"
RecipeRadar_Strings["Knights of the Ebon Blade"] = "Ritter der Schwarzen Klinge"
RecipeRadar_Strings["Lower City"] = "Unteres Viertel"
RecipeRadar_Strings["Netherwing"] = "Netherschwingen"
RecipeRadar_Strings["Shattered Sun Offensive"] = "Zerschmetterte Sonne"
RecipeRadar_Strings["The Aldor"] = "Die Aldor"
RecipeRadar_Strings["The Consortium"] = "Das Consortium"
RecipeRadar_Strings["The Frostborn"] = "Die Frosterben"
RecipeRadar_Strings["The Hand of Vengeance"] = "Die Hand der Rache"
RecipeRadar_Strings["The Kalu'ak"] = "Die Kalu'ak"
RecipeRadar_Strings["The Mag'har"] = "Die Mag'har"
RecipeRadar_Strings["The Oracles"] = "Die Orakel"
RecipeRadar_Strings["The Scale of the Sands"] = "Die Wächter der Sande"
RecipeRadar_Strings["The Scryers"] = "Die Seher"
RecipeRadar_Strings["The Sha'tar"] = "Die Sha'tar"
RecipeRadar_Strings["The Silver Covenant"] = "Der Silberbund"
RecipeRadar_Strings["The Sons of Hodir"] = "Die Söhne Hodirs"
RecipeRadar_Strings["The Taunka"] = "Die Taunka"
RecipeRadar_Strings["The Violet Eye"] = "Das Violette Auge"
RecipeRadar_Strings["The Wyrmrest Accord"] = "Der Wyrmruhpakt"
RecipeRadar_Strings["Thorium Brotherhood"] = "Thorium-Bruderschaft"
RecipeRadar_Strings["Timbermaw Hold"] = "Holzschlundfeste"
RecipeRadar_Strings["Valiance Expedition"] = "Expedition \"Valianz\""
RecipeRadar_Strings["Warsong Offensive"] = "Kriegshymnenoffensive"
RecipeRadar_Strings["Zandalar Tribe"] = "Zandalar"
RecipeRadar_Strings["Argent Dawn"] = "Argentumdämmerung"
RecipeRadar_Strings["Rogue"] = "Schurke"
RecipeRadar_Strings["Special"] = "Speziell"
RecipeRadar_Strings["%s Only"] = "Nur %s"
RecipeRadar_Strings["Collapse"] = "Einklappen"
RecipeRadar_Strings["Collapse All"] = "Alle einklappen"
RecipeRadar_Strings["Expand"] = "Ausklappen"
RecipeRadar_Strings["Expand All"] = "Alle ausklappen"
RecipeRadar_Strings["Map Vendor"] = "Händler auf Karte anzeigen"
RecipeRadar_Strings["Unmap Vendor"] = "Händler von Karte entfernen"
RecipeRadar_Strings["Armorsmith"] = "Rüstungsschmied"
RecipeRadar_Strings["Dragonscale Leatherworking"] = "Drachenschuppenlederverarbeitung"
RecipeRadar_Strings["Elemental Leatherworking"] = "Elementarlederverarbeitung"
RecipeRadar_Strings["Goblin Engineer"] = "Goblin-Ingenieur"
RecipeRadar_Strings["Master Axesmith"] = "Axtschmiedemeister"
RecipeRadar_Strings["Master Hammersmith"] = "Hammerschmiedemeister"
RecipeRadar_Strings["Master Swordsmith"] = "Schwertschmiedemeister"
RecipeRadar_Strings["Tribal Leatherworking"] = "Stammeslederverarbeitung"
RecipeRadar_Strings["Weaponsmith"] = "Waffenschmied"
RecipeRadar_Strings["Gnomish Engineer"] = "Gnomen-Ingenieur"
RecipeRadar_Strings["Eastern Kingdoms"] = "Östliche Königreiche"
RecipeRadar_Strings["Instances"] = "Instanzen"
 
RecipeRadar_Strings["Alterac Mountains"] = "Alteracgebirge"
RecipeRadar_Strings["Arathi Highlands"] = "Arathihochland"
RecipeRadar_Strings["Ashenvale"] = "Eschental"
RecipeRadar_Strings["Azuremyst Isle"] = "Azurmythosinsel"
RecipeRadar_Strings["Badlands"] = "Ödland"
RecipeRadar_Strings["Black Temple"] = "Der Schwarze Tempel"
RecipeRadar_Strings["Blackrock Depths"] = "Schwarzfelstiefen"
RecipeRadar_Strings["Blade's Edge Mountains"] = "Schergrat"
RecipeRadar_Strings["Blasted Lands"] = "Verwüstete Lande"
RecipeRadar_Strings["Bloodmyst Isle"] = "Blutmythosinsel"
RecipeRadar_Strings["Borean Tundra"] = "Boreanische Tundra"
RecipeRadar_Strings["Burning Steppes"] = "Brennende Steppe"
RecipeRadar_Strings["Crystalsong Forest"] = "Kristallsangwald"
RecipeRadar_Strings["Darkshore"] = "Dunkelküste"
RecipeRadar_Strings["Dire Maul"] = "Düsterbruch"
RecipeRadar_Strings["Dragonblight"] = "Drachenöde"
RecipeRadar_Strings["Duskwood"] = "Dämmerwald"
RecipeRadar_Strings["Dustwallow Marsh"] = "Düstermarschen"
RecipeRadar_Strings["Eastern Plaguelands"] = "Östliche Pestländer"
RecipeRadar_Strings["Elwynn Forest"] = "Wald von Elwynn"
RecipeRadar_Strings["Eversong Woods"] = "Immersangwald"
RecipeRadar_Strings["Felwood"] = "Teufelswald"
RecipeRadar_Strings["Ghostlands"] = "Geisterlande"
RecipeRadar_Strings["Grizzly Hills"] = "Grzzlyhügel"
RecipeRadar_Strings["Hellfire Peninsula"] = "Höllenfeuerhalbinsel"
RecipeRadar_Strings["Hillsbrad Foothills"] = "Vorgebirge des Hügellands"
RecipeRadar_Strings["Howling Fjord"] = "Heulender Fjord"
RecipeRadar_Strings["Icecrown"] = "Eiskrone"
RecipeRadar_Strings["Ironforge"] = "Eisenschmiede"
RecipeRadar_Strings["Moonglade"] = "Mondlichtung"
RecipeRadar_Strings["Netherstorm"] = "Nethersturm"
RecipeRadar_Strings["Old Hillsbrad Foothills"] = "Vorgebirge des Alten Hügellands"
RecipeRadar_Strings["Redridge Mountains"] = "Rotkammgebirge"
RecipeRadar_Strings["Shadowmoon Valley"] = "Schattenmondtal"
RecipeRadar_Strings["Shattrath City"] = "Shattrath"
RecipeRadar_Strings["Sholazar Basin"] = "Sholazarbecken"
RecipeRadar_Strings["Silvermoon City"] = "Silbermond"
RecipeRadar_Strings["Silverpine Forest"] = "Silberwald"
RecipeRadar_Strings["Stonetalon Mountains"] = "Steinkrallengebirge"
RecipeRadar_Strings["Stormwind City"] = "Sturmwind"
RecipeRadar_Strings["Stranglethorn Vale"] = "Schlingendorntal"
RecipeRadar_Strings["Swamp of Sorrows"] = "Sümpfe des Elends"
RecipeRadar_Strings["Terokkar Forest"] = "Wälder von Terokkar"
RecipeRadar_Strings["The Barrens"] = "Brachland"
RecipeRadar_Strings["The Exodar"] = "Die Exodar"
RecipeRadar_Strings["The Hinterlands"] = "Hinterland"
RecipeRadar_Strings["The Storm Peaks"] = "Sturmgipfel"
RecipeRadar_Strings["Thousand Needles"] = "Tausend Nadeln"
RecipeRadar_Strings["Thunder Bluff"] = "Donnerfels"
RecipeRadar_Strings["Tirisfal Glades"] = "Tirisfal"
RecipeRadar_Strings["Undercity"] = "Unterstadt"
RecipeRadar_Strings["Un'Goro Crater"] = "Krater von Un'Goro"
RecipeRadar_Strings["Wailing Caverns"] = "Höhlen des Wehklagens"
RecipeRadar_Strings["Western Plaguelands"] = "Westliche Pestländer"
RecipeRadar_Strings["Wetlands"] = "Sumpfland"
RecipeRadar_Strings["Wintergrasp"] = "Tausendwinter"
RecipeRadar_Strings["Winterspring"] = "Winterquell"
RecipeRadar_Strings["Zangarmarsh"] = "Zangarmarschen"
 
RecipeRadar_Strings["\"Cookie\" McWeaksauce"] = "\"Kräcka\" Aschebäscha"
RecipeRadar_Strings["Aaron Hollman"] = "Aaron Hollmann"
RecipeRadar_Strings["Aendel Windspear"] = "Aendel Windspeer"
RecipeRadar_Strings["Aged Dalaran Wizard"] = "Gealterter Hexer von Dalaran"
RecipeRadar_Strings["Alchemist Gribble"] = "Alchimist Grabbel"
RecipeRadar_Strings["Alchemist Pestlezugg"] = "Alchimist Stößelbruch"
RecipeRadar_Strings["Andrion Darkspinner"] = "Andrion Dunkelweber"
RecipeRadar_Strings["Apothecary Antonivich"] = "Apotheker Antonivich"
RecipeRadar_Strings["Apprentice Darius"] = "Lehrling Darius"
RecipeRadar_Strings["Argent Quartermaster Hasana"] = "Argentumrüstmeister Hasana"
RecipeRadar_Strings["Argent Quartermaster Lightspark"] = "Argentumrüstmeister Funkellicht"
RecipeRadar_Strings["Blackwing"] = "[Blackwing]"
RecipeRadar_Strings["Blimo Gadgetspring"] = "Blimo Federdings"
RecipeRadar_Strings["Blixrez Goodstitch"] = "Blixrez Gutstich"
RecipeRadar_Strings["Blizrik Buckshot"] = "Blizrik Bockschuss"
RecipeRadar_Strings["Bombus Finespindle"] = "Bombus Feinspindel"
RecipeRadar_Strings["Brienna Starglow"] = "Brienna Sternenglanz"
RecipeRadar_Strings["Burbik Gearspanner"] = "Burbik Ritzelspann"
RecipeRadar_Strings["Captured Gnome"] = "Gefangener Gnom"
RecipeRadar_Strings["Christoph Jeffcoat"] = "Christoph Jeffkott"
RecipeRadar_Strings["Cookie One-Eye"] = "Kräcka Einauge"
RecipeRadar_Strings["Corporal Bluth"] = "Korporal Bluth"
RecipeRadar_Strings["Cowardly Crosby"] = "Feiger Crosby"
RecipeRadar_Strings["Crazk Sparks"] = "Crazk Funks"
RecipeRadar_Strings["Cro Threadstrong"] = "Cro Dickfädel"
RecipeRadar_Strings["Daggle Ironshaper"] = "Daggle Eisenformer"
RecipeRadar_Strings["Danielle Zipstitch"] = "Danielle Stichelnaht"
RecipeRadar_Strings["Dealer Malij"] = "Händler Malij"
RecipeRadar_Strings["Defias Profiteer"] = "Schieber der Defias"
RecipeRadar_Strings["Deneb Walker"] = "Deneb Wandler"
RecipeRadar_Strings["Derak Nightfall"] = "Derak Nachtlauer"
RecipeRadar_Strings["Dirge Quikcleave"] = "Dirge Schnetzelhack"
RecipeRadar_Strings["Drac Roughcut"] = "Drac Grobschnitt"
RecipeRadar_Strings["Drovnar Strongbrew"] = "Drovnar Starkbräu"
RecipeRadar_Strings["Eebee Jinglepocket"] = "Eebee Klingeltasche"
RecipeRadar_Strings["Eldara Dawnrunner"] = "Eldara Dämmerflucht"
RecipeRadar_Strings["Evie Whirlbrew"] = "Evie Wirbelbräu"
RecipeRadar_Strings["Fedryen Swiftspear"] = "Fedryen Flinkspeer"
RecipeRadar_Strings["Fradd Swiftgear"] = "Fradd Schnellschalt"
RecipeRadar_Strings["Gagsprocket"] = "Quietschspross"
RecipeRadar_Strings["Galley Chief Alunwea"] = "Smutje Alunwea"
RecipeRadar_Strings["Galley Chief Gathers"] = "Smutje Schlaz"
RecipeRadar_Strings["Galley Chief Grace"] = "Smutje Gunzl"
RecipeRadar_Strings["Galley Chief Halumvorea"] = "Smutje Halumvorea"
RecipeRadar_Strings["Galley Chief Mariss"] = "Smutje Mariss"
RecipeRadar_Strings["Galley Chief Steelbelly"] = "Smutje Stahlbauch"
RecipeRadar_Strings["Gearcutter Cogspinner"] = "Ritzelschnitt Zahnrad"
RecipeRadar_Strings["Gidge Spellweaver"] = "Gidge Spruchwirker"
RecipeRadar_Strings["Gigget Zipcoil"] = "Gigget Reißspule"
RecipeRadar_Strings["Glyx Brewright"] = "Glyx Gutbräu"
RecipeRadar_Strings["Gnaz Blunderflame"] = "Gnaz Dusselflamm"
RecipeRadar_Strings["Harklan Moongrove"] = "Harklan Mondhain"
RecipeRadar_Strings["Harlon Thornguard"] = "Harlon Dornenwacht"
RecipeRadar_Strings["Harlown Darkweave"] = "Harlown Dunkelwirker"
RecipeRadar_Strings["Harn Longcast"] = "Harn Rutenwurf"
RecipeRadar_Strings["Haughty Modiste"] = "Eingebildete Modeschöpferin"
RecipeRadar_Strings["Heldan Galesong"] = "Heldan Sturmgesang"
RecipeRadar_Strings["Hotoppik Copperpinch"] = "Hotoppik Kupferzwick"
RecipeRadar_Strings["Innkeeper Biribi"] = "Gastwirtin Biribi"
RecipeRadar_Strings["Innkeeper Fizzgrimble"] = "Gastwirt Zischgrimbel"
RecipeRadar_Strings["Innkeeper Grilka"] = "Gastwirtin Grilka"
RecipeRadar_Strings["Jabbey"] = "Stupser"
RecipeRadar_Strings["Jangdor Swiftstrider"] = "Jangdor Flinkschreiter"
RecipeRadar_Strings["Jannos Ironwill"] = "Jannos Eisenwill"
RecipeRadar_Strings["Jase Farlane"] = "Jase Langweg"
RecipeRadar_Strings["Jennabink Powerseam"] = "Jennabink Starksaum"
RecipeRadar_Strings["Jim Saltit"] = "Jim Salzit"
RecipeRadar_Strings["Jinky Twizzlefixxit"] = "Jinky Pfuschelfix"
RecipeRadar_Strings["Joseph Moore"] = "Joseph Moor"
RecipeRadar_Strings["Jubie Gadgetspring"] = "Jubie Federdings"
RecipeRadar_Strings["Kaita Deepforge"] = "Kaita Tiefenschmied"
RecipeRadar_Strings["Kalldan Felmoon"] = "Kalldan Teufelsmond"
RecipeRadar_Strings["Khara Deepwater"] = "Khara Tiefenwasser"
RecipeRadar_Strings["Khole Jinglepocket"] = "Khole Klingeltaschen"
RecipeRadar_Strings["Knaz Blunderflame"] = "Knaz Dusselflamm"
RecipeRadar_Strings["Krek Cragcrush"] = "Krek Schmetterfels"
RecipeRadar_Strings["Krinkle Goodsteel"] = "Krinkle Goldstahl"
RecipeRadar_Strings["Leeli Longhaggle"] = "Leeli Langfeilsch"
RecipeRadar_Strings["Lieutenant General Andorov"] = "Generalleutnant Andorov"
RecipeRadar_Strings["Lizbeth Cromwell"] = "Lizbeth Kromwell"
RecipeRadar_Strings["Logistics Officer Ulrike"] = "Nachschuboffizier Ulrike"
RecipeRadar_Strings["Lokhtos Darkbargainer"] = "Lokhtos Düsterfeilsch"
RecipeRadar_Strings["Lorelae Wintersong"] = "Lorelae Winterklang"
RecipeRadar_Strings["Madame Ruby"] = "Madame Rubin"
RecipeRadar_Strings["Magnus Frostwake"] = "Magnus Frostrufer"
RecipeRadar_Strings["Mallen Swain"] = "Mallen Knab"
RecipeRadar_Strings["Mari Stonehand"] = "Mari Steinhand"
RecipeRadar_Strings["Martine Tramblay"] = "Martine Tramblei"
RecipeRadar_Strings["Master Chef Mouldier"] = "Meisterkoch Mouldier"
RecipeRadar_Strings["Master Craftsman Omarion"] = "Meisterhandwerker Omarion"
RecipeRadar_Strings["Mazk Snipeshot"] = "Mazk Zielschuss"
RecipeRadar_Strings["Mixie Farshot"] = "Mixie Weitschuss"
RecipeRadar_Strings["Muheru the Weaver"] = "Muheru der Weber"
RecipeRadar_Strings["Naal Mistrunner"] = "Naal Nebelläufer"
RecipeRadar_Strings["Namdo Bizzfizzle"] = "Namdo Blitzzischel"
RecipeRadar_Strings["Nardstrum Copperpinch"] = "Nardstrum Kupferzwick"
RecipeRadar_Strings["Narj Deepslice"] = "Narj Schnitzelschnitt"
RecipeRadar_Strings["Nasmara Moonsong"] = "Nasmara Mondweise"
RecipeRadar_Strings["Nata Dawnstrider"] = "Nata Morgenwandler"
RecipeRadar_Strings["Nessa Shadowsong"] = "Nessa Schattensang"
RecipeRadar_Strings["Nina Lightbrew"] = "Nina Brauleicht"
RecipeRadar_Strings["Nula the Butcher"] = "Nula die Metzgerin"
RecipeRadar_Strings["Old Man Heming"] = "Der alte Mann Heming"
RecipeRadar_Strings["Outfitter Eric"] = "Ausstatter Eric"
RecipeRadar_Strings["Penney Copperpinch"] = "Penney Kupferzwick"
RecipeRadar_Strings["Plugger Spazzring"] = "Stöpsel Zapfring"
RecipeRadar_Strings["Provisioner Nasela"] = "Versorgerin Nasela"
RecipeRadar_Strings["Quartermaster Davian Vaclav"] = "Rüstmeister Davian Watzlav"
RecipeRadar_Strings["Quartermaster Endarin"] = "Rüstmeister Endarin"
RecipeRadar_Strings["Quartermaster Enuril"] = "Rüstmeister Enuril"
RecipeRadar_Strings["Quartermaster Jaffrey Noreliqe"] = "Rüstmeister Jaffrey Keinespuhr"
RecipeRadar_Strings["Quartermaster Miranda Breechlock"] = "Rüstmeisterin Miranda Knackschloss"
RecipeRadar_Strings["Quartermaster Urgronn"] = "Rüstmeister Urgronn"
RecipeRadar_Strings["Rann Flamespinner"] = "Rann Flammenweber"
RecipeRadar_Strings["Rin'wosho the Trader"] = "Rin'wosho der Händler"
RecipeRadar_Strings["Rizz Loosebolt"] = "Rizz Wackelbolz"
RecipeRadar_Strings["Ruppo Zipcoil"] = "Ruppo Reißspule"
RecipeRadar_Strings["Sassa Weldwell"] = "Sassa Nahtgut"
RecipeRadar_Strings["Seer Janidi"] = "Seherin Janidi"
RecipeRadar_Strings["Seersa Copperpinch"] = "Seersa Kupferzwick"
RecipeRadar_Strings["Sewa Mistrunner"] = "Sewa Nebelläufer"
RecipeRadar_Strings["Shadi Mistrunner"] = "Shadi Nebelläufer"
RecipeRadar_Strings["Sheendra Tallgrass"] = "Sheendra Hochschilf"
RecipeRadar_Strings["Shen'dralar Provisioner"] = "Versorger der Shen'dralar"
RecipeRadar_Strings["Sheri Zipstitch"] = "Sheri Stichelnaht"
RecipeRadar_Strings["Smudge Thunderwood"] = "Smudge Donnerholz"
RecipeRadar_Strings["Soolie Berryfizz"] = "Soolie Brausefitz"
RecipeRadar_Strings["Super-Seller 680"] = "Superverkaufomat 680"
RecipeRadar_Strings["Supply Officer Mills"] = "Versorgungsoffizier Mühlens"
RecipeRadar_Strings["Tansy Puddlefizz"] = "Tansy Pfützplatsch"
RecipeRadar_Strings["Tarban Hearthgrain"] = "Tarban Kornbäcker"
RecipeRadar_Strings["Thaddeus Webb"] = "Thaddeus Webner"
RecipeRadar_Strings["Tilli Thistlefuzz"] = "Tilli Distelflaum"
RecipeRadar_Strings["Trader Narasu"] = "Händler Narasu"
RecipeRadar_Strings["Truk Wildbeard"] = "Truk Wildbart"
RecipeRadar_Strings["Vendor-Tron 1000"] = "Kaufotron 1000"
RecipeRadar_Strings["Viggz Shinesparked"] = "Viggz Funkenschimmer"
RecipeRadar_Strings["Wenna Silkbeard"] = "Wenna Seidenbart"
RecipeRadar_Strings["Werg Thickblade"] = "Werg Breitklinge"
RecipeRadar_Strings["Wind Trader Lathrai"] = "Windhändler Lathrai"
RecipeRadar_Strings["Wolgren Jinglepocket"] = "Wolgren Klingeltaschen"
RecipeRadar_Strings["Worb Strongstitch"] = "Worb Starkahle"
RecipeRadar_Strings["Wulmort Jinglepocket"] = "Wulmort Klingeltaschen"
RecipeRadar_Strings["Wunna Darkmane"] = "Wunna Dunkelmähne"
RecipeRadar_Strings["Xandar Goodbeard"] = "Xandar Gutbart"
RecipeRadar_Strings["Xerintha Ravenoak"] = "Xerintha Rabeneiche"
RecipeRadar_Strings["Xizk Goodstitch"] = "Xizk Gutstich"
RecipeRadar_Strings["Xizzer Fizzbolt"] = "Xizzer Zischbolz"
RecipeRadar_Strings["Yuka Screwspigot"] = "Yuka Schraubstutz"
RecipeRadar_Strings["Yurial Soulwater"] = "Yurial Seelenwasser"
RecipeRadar_Strings["Zan Shivsproket"] = "Zan Messerritzel"
RecipeRadar_Strings["Zannok Hidepiercer"] = "Zannok Ledernaht"
RecipeRadar_Strings["Zarena Cromwind"] = "Zarena Stahlwind"
RecipeRadar_Strings["Zorbin Fandazzle"] = "Zorbin von Schiller"
 
end
 
if (GetLocale() == "frFR") then
 
RecipeRadar_Strings["Toggle Recipe Radar"] = "Recipe Radar À bascule"
RecipeRadar_Strings["Recipe Radar Bindings"] = "Attaches De Recipe Radar"
RecipeRadar_Strings["Auto-map Contributive Vendors"] = "Recettes Disponibles d'affichage"
RecipeRadar_Strings["Auto-select Current Region"] = "Sélection automatique de la région courante"
RecipeRadar_Strings["Check Availability for Alts"] = "Examinez la disponibilité pour les alts"
RecipeRadar_Strings["Minimap Button Position"] = "Position du bouton sur la Minimap"
RecipeRadar_Strings["Show Minimap Button"] = "Montrez le Bouton sur la Minimap"
RecipeRadar_Strings["%d learnable"] = "%d utilisables"
RecipeRadar_Strings["%d recipes"] = "%d recettes"
RecipeRadar_Strings["1 recipe"] = "1 recette"
RecipeRadar_Strings["Uncached Recipe"] = "Recette Non présente"
RecipeRadar_Strings["You may mouse over the"] = "Vous devez passer la souris sur l'icône pour"
RecipeRadar_Strings["icon to lookup this recipe."] = "ajouter cette recette à votre base de donnèe."
RecipeRadar_Strings["Warning: if your server has"] = "Avertissement: si votre serveur n'a"
RecipeRadar_Strings["not yet seen this item, you"] = "pas encore vu cet article, vous serez"
RecipeRadar_Strings["will be disconnected!"] = "déconnecté!"
RecipeRadar_Strings["No recipes for sale in this region."] = "Aucune recette à vendre dans cette région."
RecipeRadar_Strings["Shift-click a vendor to add or remove her location on the world map."] = "Shift-clic sur un marchand pour ajouter ou enlever sa position sur la carte du monde."
RecipeRadar_Strings["Locate Vendor on Map"] = "Localiser le marchand"
RecipeRadar_Strings["Neutral"] = "Neutre"
RecipeRadar_Strings["Alchemy"] = "Alchimie"
RecipeRadar_Strings["Blacksmithing"] = "Forge"
RecipeRadar_Strings["Cooking"] = "Cuisine"
RecipeRadar_Strings["Enchanting"] = "Enchantement"
RecipeRadar_Strings["Engineering"] = "Ingénierie"
RecipeRadar_Strings["First Aid"] = "Secourisme"
RecipeRadar_Strings["Fishing"] = "Pêche"
RecipeRadar_Strings["Inscription"] = "Calligraphie"
RecipeRadar_Strings["Jewelcrafting"] = "Joaillerie"
RecipeRadar_Strings["Leatherworking"] = "Travail du cuir"
RecipeRadar_Strings["Tailoring"] = "Couture"
RecipeRadar_Strings["Professions"] = "Métiers"
RecipeRadar_Strings["Already Known (Alts)"] = "Déjà Connu (Alts)"
RecipeRadar_Strings["Already Known (Player)"] = "Déjà Connu (Joueur)"
RecipeRadar_Strings["Available Now (Alts)"] = "Disponible Maintenant (Alts)"
RecipeRadar_Strings["Available Now (Player)"] = "Disponible Maintenant (Joueur) "
RecipeRadar_Strings["Future Prospect (Alts)"] = "Bientôt disponible (Alts)"
RecipeRadar_Strings["Future Prospect (Player)"] = "Bientôt disponible (Joueur)"
RecipeRadar_Strings["Inapplicable"] = "Innaplicable"
RecipeRadar_Strings["Availability"] = "Disponibilité"
RecipeRadar_Strings["Already Known By:"] = "Déjà Connu Par:"
RecipeRadar_Strings["Future Prospect For:"] = "Bientôt disponible pour:"
RecipeRadar_Strings["Available For:"] = "Disponible Pour:"
RecipeRadar_Strings["%d of %d"] = "%d de %d"
RecipeRadar_Strings["Quest"] = "Quête"
RecipeRadar_Strings["Roving"] = "Boudinage"
RecipeRadar_Strings["Seasonal"] = "Saisonnier"
RecipeRadar_Strings["%s Vendor"] = "%s Marchand"
RecipeRadar_Strings["Argent Crusade"] = "La Croisade d'argent"
RecipeRadar_Strings["Ashtongue Deathsworn"] = "Ligemort cendrelangue"
RecipeRadar_Strings["Cenarion Circle"] = "Le Cercle de Cenarius"
RecipeRadar_Strings["Cenarion Expedition"] = "Expédition cénarienne"
RecipeRadar_Strings["Explorers' League"] = "Ligue des explorateurs"
RecipeRadar_Strings["Frenzyheart Tribe"] = "Tribu Frénécœur"
RecipeRadar_Strings["Honor Hold"] = "Bastion de l'Honneur"
RecipeRadar_Strings["Keepers of Time"] = "Gardiens du Temps"
RecipeRadar_Strings["Knights of the Ebon Blade"] = "Chevaliers de la Lame d'ébène"
RecipeRadar_Strings["Lower City"] = "Ville basse"
RecipeRadar_Strings["Shattered Sun Offensive"] = "Opération Soleil brisé"
RecipeRadar_Strings["The Aldor"] = "L'Aldor"
RecipeRadar_Strings["The Consortium"] = "Le Consortium"
RecipeRadar_Strings["The Frostborn"] = "Les Givre-nés"
RecipeRadar_Strings["The Hand of Vengeance"] = "La Main de la vengeance"
RecipeRadar_Strings["The Kalu'ak"] = "Les Kalu'aks"
RecipeRadar_Strings["The Mag'har"] = "Mag'har"
RecipeRadar_Strings["The Oracles"] = "Les Oracles"
RecipeRadar_Strings["The Scale of the Sands"] = "L'écaille des sables"
RecipeRadar_Strings["The Scryers"] = "Les Clairvoyants"
RecipeRadar_Strings["The Sha'tar"] = "Les Sha'tar"
RecipeRadar_Strings["The Silver Covenant"] = "Le Concordat argenté"
RecipeRadar_Strings["The Sons of Hodir"] = "Les Fils de Hodir"
RecipeRadar_Strings["The Taunka"] = "Les Taunkas"
RecipeRadar_Strings["The Violet Eye"] = "L'Œil pourpre"
RecipeRadar_Strings["The Wyrmrest Accord"] = "L'Accord de Repos du ver"
RecipeRadar_Strings["Thorium Brotherhood"] = "La Confrérie du thorium"
RecipeRadar_Strings["Timbermaw Hold"] = "Furbolgs Timbermaw"
RecipeRadar_Strings["Valiance Expedition"] = "Expédition de la Bravoure"
RecipeRadar_Strings["Warsong Offensive"] = "Offensive chanteguerre"
RecipeRadar_Strings["Zandalar Tribe"] = "Fournitures et réparations Zandalar"
RecipeRadar_Strings["Argent Dawn"] = "L'Aube d'argent"
RecipeRadar_Strings["Rogue"] = "Voleur"
RecipeRadar_Strings["Special"] = "Spécial"
RecipeRadar_Strings["%s Only"] = "%s Seulement"
RecipeRadar_Strings["Collapse"] = "Réduire"
RecipeRadar_Strings["Collapse All"] = "Réduire Tout"
RecipeRadar_Strings["Expand"] = "Etendre"
RecipeRadar_Strings["Expand All"] = "Etendre Tout"
RecipeRadar_Strings["Map Vendor"] = "Indique la position du marchand sur la carte"
RecipeRadar_Strings["Unmap Vendor"] = "Enlevez Marchand"
RecipeRadar_Strings["Armorsmith"] = "Fabricant d'armures"
RecipeRadar_Strings["Dragonscale Leatherworking"] = "Travail du cuir d'écailles de dragon"
RecipeRadar_Strings["Elemental Leatherworking"] = "Travail du cuir élémentaire"
RecipeRadar_Strings["Goblin Engineer"] = "Ingénieur gobelin"
RecipeRadar_Strings["Master Axesmith"] = "Maître fabricant de haches"
RecipeRadar_Strings["Master Hammersmith"] = "Maître Fabricant de marteaux"
RecipeRadar_Strings["Master Swordsmith"] = "Maître Fabricant d'épées"
RecipeRadar_Strings["Tribal Leatherworking"] = "Travail du cuir tribal"
RecipeRadar_Strings["Weaponsmith"] = "Fabricant d'armes"
RecipeRadar_Strings["Gnomish Engineer"] = "Ingénieur gnome"
RecipeRadar_Strings["Eastern Kingdoms"] = "Royaumes de l'est"
 
RecipeRadar_Strings["Alterac Mountains"] = "Montagnes d'Alterac"
RecipeRadar_Strings["Arathi Highlands"] = "Hautes-terres d'Arathi"
RecipeRadar_Strings["Ashenvale"] = "Orneval"
RecipeRadar_Strings["Azuremyst Isle"] = "Ile de Brume-azur"
RecipeRadar_Strings["Badlands"] = "Terres ingrates"
RecipeRadar_Strings["Blackrock Depths"] = "Profondeurs de Rochenoire"
RecipeRadar_Strings["Blade's Edge Mountains"] = "Les Tranchantes"
RecipeRadar_Strings["Blasted Lands"] = "Terres foudroyées"
RecipeRadar_Strings["Bloodmyst Isle"] = "Ile de Brume-sang"
RecipeRadar_Strings["Borean Tundra"] = "Toundra boréenne"
RecipeRadar_Strings["Burning Steppes"] = "Steppes ardentes"
RecipeRadar_Strings["Crystalsong Forest"] = "Forêt du Chant de cristal"
RecipeRadar_Strings["Darkshore"] = "Sombrivage"
RecipeRadar_Strings["Deadwind Pass"] = "Défilé de Deuillevent"
RecipeRadar_Strings["Desolace"] = "Désolace"
RecipeRadar_Strings["Dire Maul"] = "Hache-Tripes"
RecipeRadar_Strings["Dragonblight"] = "La désolation des dragons"
RecipeRadar_Strings["Duskwood"] = "Bois de la Pénombre"
RecipeRadar_Strings["Dustwallow Marsh"] = "Marécage d'Âprefange"
RecipeRadar_Strings["Eastern Plaguelands"] = "Maleterres de l'est"
RecipeRadar_Strings["Elwynn Forest"] = "Forêt d'Elwynn"
RecipeRadar_Strings["Eversong Woods"] = "Bois des Chants éternels"
RecipeRadar_Strings["Felwood"] = "Gangrebois"
RecipeRadar_Strings["Feralas"] = "Féralas"
RecipeRadar_Strings["Ghostlands"] = "Les Terres fantômes"
RecipeRadar_Strings["Grizzly Hills"] = "Les Grisonnes"
RecipeRadar_Strings["Hellfire Peninsula"] = "Péninsule des Flammes infernales"
RecipeRadar_Strings["Hillsbrad Foothills"] = "Contreforts de Hautebrande"
RecipeRadar_Strings["Howling Fjord"] = "Fjord hurlant"
RecipeRadar_Strings["Icecrown"] = "La Couronne de glace"
RecipeRadar_Strings["Ironforge"] = "Forgefer"
RecipeRadar_Strings["Moonglade"] = "Reflet-de-Lune"
RecipeRadar_Strings["Netherstorm"] = "Raz-de-Néant"
RecipeRadar_Strings["Redridge Mountains"] = "Les Carmines"
RecipeRadar_Strings["Ruins of Ahn'Qiraj"] = "Ruines d'Ahn'Qiraj"
RecipeRadar_Strings["Shadowmoon Valley"] = "Vallée d'Ombrelune"
RecipeRadar_Strings["Shattrath City"] = "Shattrath"
RecipeRadar_Strings["Sholazar Basin"] = "Bassin de Sholazar"
RecipeRadar_Strings["Silvermoon City"] = "Lune-d'argent"
RecipeRadar_Strings["Silverpine Forest"] = "Forêt des Pins argentés"
RecipeRadar_Strings["Stonetalon Mountains"] = "Les Serres-Rocheuses"
RecipeRadar_Strings["Stormwind City"] = "Hurlevent"
RecipeRadar_Strings["Stranglethorn Vale"] = "Vallée de Strangleronce"
RecipeRadar_Strings["Swamp of Sorrows"] = "Marais des Chagrins"
RecipeRadar_Strings["Terokkar Forest"] = "Forêt de Terokkar"
RecipeRadar_Strings["The Barrens"] = "Les Tarides"
RecipeRadar_Strings["The Exodar"] = "L'Exodar"
RecipeRadar_Strings["The Hinterlands"] = "Les Hinterlands"
RecipeRadar_Strings["The Storm Peaks"] = "Les pics foudroyés"
RecipeRadar_Strings["Thousand Needles"] = "Mille pointes"
RecipeRadar_Strings["Thunder Bluff"] = "Les Pitons du Tonnerre"
RecipeRadar_Strings["Tirisfal Glades"] = "Clairières de Tirisfal"
RecipeRadar_Strings["Undercity"] = "Fossoyeuse"
RecipeRadar_Strings["Un'Goro Crater"] = "Cratère d'Un'Goro"
RecipeRadar_Strings["Wailing Caverns"] = "Cavernes des lamentations"
RecipeRadar_Strings["Western Plaguelands"] = "Maleterres de l'ouest"
RecipeRadar_Strings["Westfall"] = "Marche de l'Ouest"
RecipeRadar_Strings["Wetlands"] = "Les Paluns"
RecipeRadar_Strings["Wintergrasp"] = "Joug-d'hiver"
RecipeRadar_Strings["Winterspring"] = "Berceau-de-l'Hiver"
RecipeRadar_Strings["Zangarmarsh"] = "Marécage de Zangar"
 
RecipeRadar_Strings["\"Cookie\" McWeaksauce"] = "\"Cuistot\" McFadesauce"
RecipeRadar_Strings["Aendel Windspear"] = "Aendel Lancevent"
RecipeRadar_Strings["Aged Dalaran Wizard"] = "Sorcier de Dalaran âgé"
RecipeRadar_Strings["Alchemist Gribble"] = "Alchimiste Limnorie"
RecipeRadar_Strings["Alchemist Pestlezugg"] = "Alchimiste Pilonzugg"
RecipeRadar_Strings["Andrion Darkspinner"] = "Andrion Sombrefileur"
RecipeRadar_Strings["Apothecary Antonivich"] = "Apothicaire Antonivitch"
RecipeRadar_Strings["Apprentice Darius"] = "Apprenti Darius"
RecipeRadar_Strings["Argent Quartermaster Hasana"] = "Intendante de l'Aube d'argent Hasana"
RecipeRadar_Strings["Argent Quartermaster Lightspark"] = "Intendant de l'Aube d'argent Feuzopoudre"
RecipeRadar_Strings["Blackwing"] = "[Blackwing]"
RecipeRadar_Strings["Blimo Gadgetspring"] = "Blimo Gadgettaressort"
RecipeRadar_Strings["Blixrez Goodstitch"] = "Blixrez Beaupiqué"
RecipeRadar_Strings["Blizrik Buckshot"] = "Blizrik Chevrotine"
RecipeRadar_Strings["Bombus Finespindle"] = "Bombus Finfuseau"
RecipeRadar_Strings["Brienna Starglow"] = "Brienna Luisétoile"
RecipeRadar_Strings["Bro'kin"] = "Fra'kas"
RecipeRadar_Strings["Burbik Gearspanner"] = "Burbik Clépharnaüm"
RecipeRadar_Strings["Captured Gnome"] = "Gnome capturé"
RecipeRadar_Strings["Cookie One-Eye"] = "Qu'un-œil le cuistot"
RecipeRadar_Strings["Corporal Bluth"] = "Caporal Bluth"
RecipeRadar_Strings["Cowardly Crosby"] = "Crosby la Trouille"
RecipeRadar_Strings["Crazk Sparks"] = "Crazk Escarbilles"
RecipeRadar_Strings["Cro Threadstrong"] = "Cro Fermefil"
RecipeRadar_Strings["Daggle Ironshaper"] = "Détrempe Sculptefer"
RecipeRadar_Strings["Danielle Zipstitch"] = "Danielle Vivaiguille"
RecipeRadar_Strings["Dealer Malij"] = "Camelot Malij"
RecipeRadar_Strings["Defias Profiteer"] = "Profiteur défias"
RecipeRadar_Strings["Derak Nightfall"] = "Derak Crépuscule"
RecipeRadar_Strings["Dirge Quikcleave"] = "Dirge Hachillico"
RecipeRadar_Strings["Drac Roughcut"] = "Drac Taillebrute"
RecipeRadar_Strings["Drovnar Strongbrew"] = "Drovnar Fortebière"
RecipeRadar_Strings["Eebee Jinglepocket"] = "Eudé Tintinnapoche"
RecipeRadar_Strings["Eldara Dawnrunner"] = "Eldara Coursaurore"
RecipeRadar_Strings["Evie Whirlbrew"] = "Evie Tourbouillon"
RecipeRadar_Strings["Fedryen Swiftspear"] = "Fedryen Vivelance"
RecipeRadar_Strings["Fradd Swiftgear"] = "Fradd Vifembraye"
RecipeRadar_Strings["Gagsprocket"] = "Muserouage"
RecipeRadar_Strings["Galley Chief Alunwea"] = "Cambusière Alunwea"
RecipeRadar_Strings["Galley Chief Gathers"] = "Cambusier Lassemble"
RecipeRadar_Strings["Galley Chief Grace"] = "Cambusière Grace"
RecipeRadar_Strings["Galley Chief Halumvorea"] = "Cambusière Halumvorea"
RecipeRadar_Strings["Galley Chief Mariss"] = "Cambusière Mariss"
RecipeRadar_Strings["Galley Chief Steelbelly"] = "Cambusier Ventracier"
RecipeRadar_Strings["Gearcutter Cogspinner"] = "Coupebraquet Tournepignon"
RecipeRadar_Strings["Gidge Spellweaver"] = "Gidge Tisse-sort"
RecipeRadar_Strings["Gigget Zipcoil"] = "Giguette Filebobine"
RecipeRadar_Strings["Glyx Brewright"] = "Glyx Bonbouilleur"
RecipeRadar_Strings["Gnaz Blunderflame"] = "Gnaz Bourdeflamme"
RecipeRadar_Strings["Harklan Moongrove"] = "Harklan Bosquelune"
RecipeRadar_Strings["Harlon Thornguard"] = "Harlon Garderonce"
RecipeRadar_Strings["Harlown Darkweave"] = "Harlown Tisselombre"
RecipeRadar_Strings["Harn Longcast"] = "Harn Jette-loin"
RecipeRadar_Strings["Haughty Modiste"] = "Hautaine Lamodiste"
RecipeRadar_Strings["Heldan Galesong"] = "Heldan Chantetrombe"
RecipeRadar_Strings["Hotoppik Copperpinch"] = "Niourok Chipsou"
RecipeRadar_Strings["Innkeeper Biribi"] = "Aubergiste Biribi"
RecipeRadar_Strings["Innkeeper Fizzgrimble"] = "Aubergiste Rouspétille"
RecipeRadar_Strings["Innkeeper Grilka"] = "Aubergiste Grilka"
RecipeRadar_Strings["Jangdor Swiftstrider"] = "Jangdor Rôdeur-agile"
RecipeRadar_Strings["Jannos Ironwill"] = "Jannos Volonté-de-fer"
RecipeRadar_Strings["Jennabink Powerseam"] = "Jennabink Doublepiqûre"
RecipeRadar_Strings["Jim Saltit"] = "Jim Poivressel"
RecipeRadar_Strings["Jinky Twizzlefixxit"] = "Jinky Rafistépingle"
RecipeRadar_Strings["Jubie Gadgetspring"] = "Jubie Gadgettaressort"
RecipeRadar_Strings["Kaita Deepforge"] = "Kaita Forge-profonde"
RecipeRadar_Strings["Kalldan Felmoon"] = "Kalldan Gangrelune"
RecipeRadar_Strings["Khara Deepwater"] = "Khara Eau-profonde"
RecipeRadar_Strings["Khole Jinglepocket"] = "Samatiraine Tintinnabourse"
RecipeRadar_Strings["Kiknikle"] = "Piéniklé"
RecipeRadar_Strings["Knaz Blunderflame"] = "Knaz Bourdeflamme"
RecipeRadar_Strings["Krek Cragcrush"] = "Krek Cassecombe"
RecipeRadar_Strings["Krinkle Goodsteel"] = "Froisse Bonnacier"
RecipeRadar_Strings["Leeli Longhaggle"] = "Leeli Longnégoce"
RecipeRadar_Strings["Lieutenant General Andorov"] = "Général de division Andorov"
RecipeRadar_Strings["Logistics Officer Ulrike"] = "Officier de logistique Ulrike"
RecipeRadar_Strings["Lokhtos Darkbargainer"] = "Lokhtos Sombrescompte"
RecipeRadar_Strings["Lorelae Wintersong"] = "Lorelae Chante-hiver"
RecipeRadar_Strings["Magnus Frostwake"] = "Magnus Givréveil"
RecipeRadar_Strings["Mallen Swain"] = "Mallen Legallant"
RecipeRadar_Strings["Mari Stonehand"] = "Mari Main-de-pierre"
RecipeRadar_Strings["Master Chef Mouldier"] = "Maître cuisinier Mouldier"
RecipeRadar_Strings["Master Craftsman Omarion"] = "Maître-artisan Omarion"
RecipeRadar_Strings["Mazk Snipeshot"] = "Mazk Tiraubut"
RecipeRadar_Strings["Mixie Farshot"] = "Mixie Vise-loin"
RecipeRadar_Strings["Muheru the Weaver"] = "Muheru le Tisserand"
RecipeRadar_Strings["Naal Mistrunner"] = "Naal Cours-la-brume"
RecipeRadar_Strings["Namdo Bizzfizzle"] = "Namdo Ventaperte"
RecipeRadar_Strings["Nardstrum Copperpinch"] = "Prijunic Chipsou"
RecipeRadar_Strings["Narj Deepslice"] = "Narj Tranchefond"
RecipeRadar_Strings["Nasmara Moonsong"] = "Nasmara Lunechant"
RecipeRadar_Strings["Nata Dawnstrider"] = "Nata Aube-glorieuse"
RecipeRadar_Strings["Nessa Shadowsong"] = "Nessa Chantelombre"
RecipeRadar_Strings["Nina Lightbrew"] = "Nina Bouillelume"
RecipeRadar_Strings["Nula the Butcher"] = "Nula la Bouchère"
RecipeRadar_Strings["Old Man Heming"] = "Vieil Heming"
RecipeRadar_Strings["Outfitter Eric"] = "Eric le tailleur"
RecipeRadar_Strings["Penney Copperpinch"] = "Praintan Chipsou"
RecipeRadar_Strings["Plugger Spazzring"] = "Lanfiche Brouillecircuit"
RecipeRadar_Strings["Provisioner Nasela"] = "Approvisionneur Nasela"
RecipeRadar_Strings["Quartermaster Davian Vaclav"] = "Intendant Davian Vaclav"
RecipeRadar_Strings["Quartermaster Endarin"] = "Intendant Endarin"
RecipeRadar_Strings["Quartermaster Enuril"] = "Intendant Enuril"
RecipeRadar_Strings["Quartermaster Jaffrey Noreliqe"] = "Intendant Jaffrey Noreliqe"
RecipeRadar_Strings["Quartermaster Miranda Breechlock"] = "Intendante Miranda Coinceculasse"
RecipeRadar_Strings["Quartermaster Urgronn"] = "Intendant Urgronn"
RecipeRadar_Strings["Rann Flamespinner"] = "Rann Tisseflamme"
RecipeRadar_Strings["Rathis Tomber"] = "Rathis Tombal"
RecipeRadar_Strings["Rin'wosho the Trader"] = "Rin'wosho le marchand"
RecipeRadar_Strings["Rizz Loosebolt"] = "Rizz Court-boulon"
RecipeRadar_Strings["Ruppo Zipcoil"] = "Ruppo Filebobine"
RecipeRadar_Strings["Sassa Weldwell"] = "Sassa Belsoudure"
RecipeRadar_Strings["Seer Janidi"] = "Prophète Janidi"
RecipeRadar_Strings["Seersa Copperpinch"] = "Sokyriel Chipsou"
RecipeRadar_Strings["Sewa Mistrunner"] = "Sewa Cours-la-brume"
RecipeRadar_Strings["Shadi Mistrunner"] = "Shadi Cours-la-brume"
RecipeRadar_Strings["Sheendra Tallgrass"] = "Sheendra Hautes-herbes"
RecipeRadar_Strings["Shen'dralar Provisioner"] = "Approvisionneur Shen'dralar"
RecipeRadar_Strings["Sheri Zipstitch"] = "Sheri Vivaiguille"
RecipeRadar_Strings["Smudge Thunderwood"] = "Smudge Tonnebois"
RecipeRadar_Strings["Soolie Berryfizz"] = "Soolie Baiedesbulles"
RecipeRadar_Strings["Super-Seller 680"] = "Super-Vendeur 680"
RecipeRadar_Strings["Supply Officer Mills"] = "Officier de ravitaillement Mills"
RecipeRadar_Strings["Tansy Puddlefizz"] = "Tansy Flaquabulle"
RecipeRadar_Strings["Tarban Hearthgrain"] = "Tarban Blé-du-foyer"
RecipeRadar_Strings["Tilli Thistlefuzz"] = "Tilli Duvechardon"
RecipeRadar_Strings["Trader Narasu"] = "Marchand Nasaru"
RecipeRadar_Strings["Truk Wildbeard"] = "Truk Barbe-hirsute"
RecipeRadar_Strings["Vendor-Tron 1000"] = "Vendeur-o-tron 1000"
RecipeRadar_Strings["Viggz Shinesparked"] = "Viggz Fibriller"
RecipeRadar_Strings["Wenna Silkbeard"] = "Wenna Barbe-de-soie"
RecipeRadar_Strings["Werg Thickblade"] = "Werg Largelame"
RecipeRadar_Strings["Wind Trader Lathrai"] = "Marchand des vents Lathrai"
RecipeRadar_Strings["Wolgren Jinglepocket"] = "Céropha Tintinnabourse"
RecipeRadar_Strings["Worb Strongstitch"] = "Worb Point-solide"
RecipeRadar_Strings["Wulmort Jinglepocket"] = "Karfour Tintinnabourse"
RecipeRadar_Strings["Wunna Darkmane"] = "Wunna Sombre-crin"
RecipeRadar_Strings["Xandar Goodbeard"] = "Xandar Bonnebarbe"
RecipeRadar_Strings["Xerintha Ravenoak"] = "Xerintha Corvichêne"
RecipeRadar_Strings["Xizk Goodstitch"] = "Xizk Beaupiqué"
RecipeRadar_Strings["Xizzer Fizzbolt"] = "Xizzer Klaqueboulon"
RecipeRadar_Strings["Yuka Screwspigot"] = "Yuka Fermevanne"
RecipeRadar_Strings["Yurial Soulwater"] = "Yurial Âmeflot"
RecipeRadar_Strings["Zan Shivsproket"] = "Zan Tympeustache"
RecipeRadar_Strings["Zannok Hidepiercer"] = "Zannok Percecuir"
RecipeRadar_Strings["Zorbin Fandazzle"] = "Zorbin Poudrozieu"
 
end
 
if (GetLocale() == "esES") then
 
RecipeRadar_Strings["Toggle Recipe Radar"] = "Barra de Recipe Radar"
RecipeRadar_Strings["Auto-map Contributive Vendors"] = "Recetas Disponibles de la Exhibición"
RecipeRadar_Strings["Auto-select Current Region"] = "Auto-seleccionar la región actual"
RecipeRadar_Strings["Check Availability for Alts"] = "Comprobar la disponibilidad en Alts"
RecipeRadar_Strings["Minimap Button Position"] = "Posición del Icono"
RecipeRadar_Strings["Show Minimap Button"] = "Mostrar botón en el Minimapa"
RecipeRadar_Strings["Options"] = "Opciones"
RecipeRadar_Strings["%d learnable"] = "%d disponible"
RecipeRadar_Strings["%d recipes"] = "%d recetas"
RecipeRadar_Strings["1 recipe"] = "1 receta"
RecipeRadar_Strings["Uncached Recipe"] = "Receta no descargada"
RecipeRadar_Strings["You may mouse over the"] = "Puede colocar el ratón sobre la icono"
RecipeRadar_Strings["icon to lookup this recipe."] = "para buscar la receta en el servidor."
RecipeRadar_Strings["Warning: if your server has"] = "Advertencia: ¡si tu servidor"
RecipeRadar_Strings["not yet seen this item, you"] = "todavía no dispone de este"
RecipeRadar_Strings["will be disconnected!"] = "artículo, te desconectarán!"
RecipeRadar_Strings["No recipes for sale in this region."] = "No hay recetas para la venta en esta región."
RecipeRadar_Strings["Shift-click a vendor to add or remove her location on the world map."] = "Haz Shift+Click en un vendedor para agregar o quitar su localización en el mapa del mundo."
RecipeRadar_Strings["Locate Vendor on Map"] = "Localizar a Vendedor en Mapa"
RecipeRadar_Strings["Factions"] = "Bandos"
RecipeRadar_Strings["Alchemy"] = "Alquimia"
RecipeRadar_Strings["Blacksmithing"] = "Herrería"
RecipeRadar_Strings["Cooking"] = "Cocina"
RecipeRadar_Strings["Enchanting"] = "Encantamiento"
RecipeRadar_Strings["Engineering"] = "Ingeniería"
RecipeRadar_Strings["First Aid"] = "Primeros auxilios"
RecipeRadar_Strings["Fishing"] = "Pesca"
RecipeRadar_Strings["Inscription"] = "Inscripción"
RecipeRadar_Strings["Jewelcrafting"] = "Joyería"
RecipeRadar_Strings["Leatherworking"] = "Peletería"
RecipeRadar_Strings["Tailoring"] = "Sastrería"
RecipeRadar_Strings["Professions"] = "Profesiones"
RecipeRadar_Strings["Already Known (Alts)"] = "Ya conocido (Alts)"
RecipeRadar_Strings["Already Known (Player)"] = "Ya conocido (Jugador)"
RecipeRadar_Strings["Available Now (Alts)"] = "Disponible (Alts)"
RecipeRadar_Strings["Available Now (Player)"] = "Disponible (Jugador)"
RecipeRadar_Strings["Future Prospect (Alts)"] = "Perspectiva Futura (Alts)"
RecipeRadar_Strings["Future Prospect (Player)"] = "Perspectiva Futura (Jugador)"
RecipeRadar_Strings["Inapplicable"] = "Inaplicable"
RecipeRadar_Strings["Availability"] = "Disponibilidad"
RecipeRadar_Strings["Already Known By:"] = "Ya conocido por:"
RecipeRadar_Strings["Future Prospect For:"] = "Perspectiva futura para:"
RecipeRadar_Strings["Available For:"] = "Disponible para:"
RecipeRadar_Strings["%d of %d"] = "%d de %d"
RecipeRadar_Strings["Intermittent"] = "Intermitente"
RecipeRadar_Strings["Quest"] = "Misión"
RecipeRadar_Strings["Roving"] = "Ambulante"
RecipeRadar_Strings["Seasonal"] = "Estacional"
RecipeRadar_Strings["%s Vendor"] = "%s Vendedor"
RecipeRadar_Strings["Argent Crusade"] = "Cruzada Argenta"
RecipeRadar_Strings["Ashtongue Deathsworn"] = "Juramorte Lengua de ceniza"
RecipeRadar_Strings["Cenarion Circle"] = "El Círculo Cenarion"
RecipeRadar_Strings["Cenarion Expedition"] = "Expedición Cenarion"
RecipeRadar_Strings["Explorers' League"] = "Liga de Expedicionarios"
RecipeRadar_Strings["Frenzyheart Tribe"] = "Tribu Corazón Frenético"
RecipeRadar_Strings["Honor Hold"] = "Bastión del Honor"
RecipeRadar_Strings["Keepers of Time"] = "Guardianes del Tiempo"
RecipeRadar_Strings["Knights of the Ebon Blade"] = "Caballeros de la Espada de Ébano"
RecipeRadar_Strings["Shattered Sun Offensive"] = "Ofensiva Sol Devastado"
RecipeRadar_Strings["The Consortium"] = "El consorcio"
RecipeRadar_Strings["The Frostborn"] = "Los Natoescarcha"
RecipeRadar_Strings["The Hand of Vengeance"] = "La Mano de la Venganza"
RecipeRadar_Strings["The Kalu'ak"] = "Los Kalu'ak"
RecipeRadar_Strings["The Mag'har"] = "El Mag’har"
RecipeRadar_Strings["The Oracles"] = "Los Oráculos"
RecipeRadar_Strings["The Scale of the Sands"] = "Escama de las Arenas"
RecipeRadar_Strings["The Scryers"] = "Los Arúspices"
RecipeRadar_Strings["The Sha'tar"] = "El Sha’tar"
RecipeRadar_Strings["The Silver Covenant"] = "El Pacto de Plata"
RecipeRadar_Strings["The Sons of Hodir"] = "Los Hijos de Hodir"
RecipeRadar_Strings["The Taunka"] = "Los taunka"
RecipeRadar_Strings["The Violet Eye"] = "El Ojo Violeta"
RecipeRadar_Strings["The Wyrmrest Accord"] = "El Acuerdo del Reposo del Dragón"
RecipeRadar_Strings["Thorium Brotherhood"] = "La Hermandad del Torio"
RecipeRadar_Strings["Valiance Expedition"] = "Expedición de Denuedo"
RecipeRadar_Strings["Warsong Offensive"] = "Ofensiva Grito de Guerra"
RecipeRadar_Strings["Zandalar Tribe"] = "Tribu de Zandalar"
RecipeRadar_Strings["Argent Dawn"] = "El Alba Argenta"
RecipeRadar_Strings["Rogue"] = "Pícaro"
RecipeRadar_Strings["Special"] = "Especial"
RecipeRadar_Strings["%s Only"] = "%s Sólamente"
RecipeRadar_Strings["Collapse"] = "Contraer"
RecipeRadar_Strings["Collapse All"] = "Contraer Todos"
RecipeRadar_Strings["Expand"] = "Ampliar"
RecipeRadar_Strings["Expand All"] = "Ampliar Todos"
RecipeRadar_Strings["Map Vendor"] = "Marcar a Vendedor"
RecipeRadar_Strings["Unmap Vendor"] = "Quitar a vendedor"
RecipeRadar_Strings["Goblin Engineer"] = "Ingeniero goblin"
RecipeRadar_Strings["Gnomish Engineer"] = "Ingeniero gnomo"
RecipeRadar_Strings["Eastern Kingdoms"] = "Reinos del Este"
RecipeRadar_Strings["Instances"] = "Instancias"
 
RecipeRadar_Strings["Alterac Mountains"] = "Montañas de Alterac"
RecipeRadar_Strings["Arathi Highlands"] = "Tierras Altas de Arathi"
RecipeRadar_Strings["Ashenvale"] = "Vallefresno"
RecipeRadar_Strings["Azuremyst Isle"] = "Isla Bruma Azur"
RecipeRadar_Strings["Badlands"] = "Tierras Inhóspitas"
RecipeRadar_Strings["Blackrock Depths"] = "Profundidades de Roca Negra"
RecipeRadar_Strings["Blade's Edge Mountains"] = "Montañas Filospada"
RecipeRadar_Strings["Blasted Lands"] = "Las Tierras Devastadas"
RecipeRadar_Strings["Bloodmyst Isle"] = "Isla Bruma de Sangre"
RecipeRadar_Strings["Borean Tundra"] = "Tundra Boreal"
RecipeRadar_Strings["Burning Steppes"] = "Las Estepas Ardientes"
RecipeRadar_Strings["Crystalsong Forest"] = "Bosque Canto de Cristal"
RecipeRadar_Strings["Darkshore"] = "Costa Oscura"
RecipeRadar_Strings["Deadwind Pass"] = "Paso de la Muerte"
RecipeRadar_Strings["Dire Maul"] = "La Masacre"
RecipeRadar_Strings["Dragonblight"] = "Cementerio de Dragones"
RecipeRadar_Strings["Duskwood"] = "Bosque del Ocaso"
RecipeRadar_Strings["Dustwallow Marsh"] = "Marjal Revolcafango"
RecipeRadar_Strings["Eastern Plaguelands"] = "Tierras de la Peste del Este"
RecipeRadar_Strings["Elwynn Forest"] = "Bosque de Elwynn"
RecipeRadar_Strings["Eversong Woods"] = "Bosque Canción Eterna"
RecipeRadar_Strings["Felwood"] = "Frondavil"
RecipeRadar_Strings["Ghostlands"] = "Tierras Fantasma"
RecipeRadar_Strings["Grizzly Hills"] = "Colinas Pardas"
RecipeRadar_Strings["Hellfire Peninsula"] = "Península del Fuego Infernal"
RecipeRadar_Strings["Hillsbrad Foothills"] = "Laderas de Trabalomas"
RecipeRadar_Strings["Howling Fjord"] = "Fiordo Aquilonal"
RecipeRadar_Strings["Icecrown"] = "Corona de Hielo"
RecipeRadar_Strings["Ironforge"] = "Forjaz"
RecipeRadar_Strings["Moonglade"] = "Claro de la Luna"
RecipeRadar_Strings["Netherstorm"] = "Tormenta Abisal"
RecipeRadar_Strings["Redridge Mountains"] = "Montañas Crestagrana"
RecipeRadar_Strings["Ruins of Ahn'Qiraj"] = "Ruinas de Ahn'Qiraj"
RecipeRadar_Strings["Shadowmoon Valley"] = "Valle de Sombraluna"
RecipeRadar_Strings["Shattrath City"] = "Ciudad de Shattrath"
RecipeRadar_Strings["Sholazar Basin"] = "Cuenca de Sholazar"
RecipeRadar_Strings["Silvermoon City"] = "Lunargenta"
RecipeRadar_Strings["Silverpine Forest"] = "Bosque de Argénteos"
RecipeRadar_Strings["Stonetalon Mountains"] = "Sierra Espolón"
RecipeRadar_Strings["Stormwind City"] = "Ciudad de Ventormenta"
RecipeRadar_Strings["Stranglethorn Vale"] = "Vega de Tuercespina"
RecipeRadar_Strings["Swamp of Sorrows"] = "Pantano de las Penas"
RecipeRadar_Strings["Terokkar Forest"] = "Bosque de Terokkar"
RecipeRadar_Strings["The Barrens"] = "Los Baldíos"
RecipeRadar_Strings["The Exodar"] = "El Exodar"
RecipeRadar_Strings["The Hinterlands"] = "Tierras del Interior"
RecipeRadar_Strings["The Storm Peaks"] = "Las Cumbres Tormentosas"
RecipeRadar_Strings["Thousand Needles"] = "Las Mil Agujas"
RecipeRadar_Strings["Thunder Bluff"] = "Cima del Trueno"
RecipeRadar_Strings["Tirisfal Glades"] = "Claros de Tirisfal"
RecipeRadar_Strings["Undercity"] = "Entrañas"
RecipeRadar_Strings["Un'Goro Crater"] = "Cráter de Un'Goro"
RecipeRadar_Strings["Wailing Caverns"] = "Cuevas de los Lamentos"
RecipeRadar_Strings["Western Plaguelands"] = "Tierras de la Peste del Oeste"
RecipeRadar_Strings["Westfall"] = "Páramos de Poniente"
RecipeRadar_Strings["Wetlands"] = "Los Humedales"
RecipeRadar_Strings["Wintergrasp"] = "Conquista del Invierno"
RecipeRadar_Strings["Winterspring"] = "Cuna del Invierno"
RecipeRadar_Strings["Zangarmarsh"] = "Marisma de Zangar"
 
RecipeRadar_Strings["\"Cookie\" McWeaksauce"] = "\"Cocinitas\" MacSalsafloja"
RecipeRadar_Strings["Aendel Windspear"] = "Aendel Lanzavento"
RecipeRadar_Strings["Aged Dalaran Wizard"] = "Zahorí de Dalaran envejecido"
RecipeRadar_Strings["Alchemist Gribble"] = "Alquimista Gribble"
RecipeRadar_Strings["Alchemist Pestlezugg"] = "Alquimista Morterozugg"
RecipeRadar_Strings["Andrion Darkspinner"] = "Andrion Giroscuro"
RecipeRadar_Strings["Apothecary Antonivich"] = "Boticario Antonivich"
RecipeRadar_Strings["Apprentice Darius"] = "Aprendiz Darius"
RecipeRadar_Strings["Argent Quartermaster Hasana"] = "Intendente Argenta Hasana"
RecipeRadar_Strings["Argent Quartermaster Lightspark"] = "Intendente Argenta Destelllo de Luz"
RecipeRadar_Strings["Bale"] = "Fardo"
RecipeRadar_Strings["Banalash"] = "Banatralla"
RecipeRadar_Strings["Blackwing"] = "[Blackwing]"
RecipeRadar_Strings["Blimo Gadgetspring"] = "Blimo Cacharretio"
RecipeRadar_Strings["Blixrez Goodstitch"] = "Blixrez Cortefino"
RecipeRadar_Strings["Blizrik Buckshot"] = "Blizrik Machobala"
RecipeRadar_Strings["Bombus Finespindle"] = "Bombus Bueneje"
RecipeRadar_Strings["Brienna Starglow"] = "Brienna Brillastrella"
RecipeRadar_Strings["Burbik Gearspanner"] = "Burbik Trazagranaje"
RecipeRadar_Strings["Captured Gnome"] = "Gnomo capturado"
RecipeRadar_Strings["Christoph Jeffcoat"] = "Christoph Yabrigo"
RecipeRadar_Strings["Constance Brisboise"] = "Constanza Brisboise"
RecipeRadar_Strings["Cookie One-Eye"] = "Listillo el Tuerto"
RecipeRadar_Strings["Corporal Bluth"] = "Cabo Bluth"
RecipeRadar_Strings["Cowardly Crosby"] = "Blandengue Crosby"
RecipeRadar_Strings["Crazk Sparks"] = "Craz Chispaz"
RecipeRadar_Strings["Cro Threadstrong"] = "Cro Hilofuerte"
RecipeRadar_Strings["Daggle Ironshaper"] = "Afilador Daggle"
RecipeRadar_Strings["Danielle Zipstitch"] = "Danielle Puntillas"
RecipeRadar_Strings["Dealer Malij"] = "Tratante Malij"
RecipeRadar_Strings["Defias Profiteer"] = "Especulador Defias"
RecipeRadar_Strings["Deneb Walker"] = "Deneb Camino"
RecipeRadar_Strings["Derak Nightfall"] = "Derak Ocaso"
RecipeRadar_Strings["Dirge Quikcleave"] = "Dirge Hojágil"
RecipeRadar_Strings["Drake Lindgren"] = "Draco Lindgren"
RecipeRadar_Strings["Drovnar Strongbrew"] = "Drovanar Brevaforte"
RecipeRadar_Strings["Eebee Jinglepocket"] = "Eebee Calderilla"
RecipeRadar_Strings["Eldara Dawnrunner"] = "Eldara Correalba"
RecipeRadar_Strings["Evie Whirlbrew"] = "Evie Brebegira"
RecipeRadar_Strings["Fedryen Swiftspear"] = "Fedryen Lanzapresta"
RecipeRadar_Strings["Fradd Swiftgear"] = "Fradd Cambioveloz"
RecipeRadar_Strings["Gagsprocket"] = "Dentolio"
RecipeRadar_Strings["Galley Chief Alunwea"] = "Jefa de galera Alunwea"
RecipeRadar_Strings["Galley Chief Gathers"] = "Jefe de galera Gaders"
RecipeRadar_Strings["Galley Chief Grace"] = "Jefa de galera Grace"
RecipeRadar_Strings["Galley Chief Halumvorea"] = "Jefa de galera Halumvorea"
RecipeRadar_Strings["Galley Chief Mariss"] = "Jefa de galera Mariss"
RecipeRadar_Strings["Galley Chief Steelbelly"] = "Jefe de galera Tripacero"
RecipeRadar_Strings["Gearcutter Cogspinner"] = "Cortallave Volopiñón"
RecipeRadar_Strings["Gidge Spellweaver"] = "Gidge Tejehechizos"
RecipeRadar_Strings["Gigget Zipcoil"] = "Gigget Retramuelle"
RecipeRadar_Strings["Glyx Brewright"] = "Glyx Bonatrama"
RecipeRadar_Strings["Gnaz Blunderflame"] = "Gnaz Flamerrada"
RecipeRadar_Strings["Harklan Moongrove"] = "Harklan Arboluna"
RecipeRadar_Strings["Harlon Thornguard"] = "Harlon Guardaspina"
RecipeRadar_Strings["Harlown Darkweave"] = "Harlown Tejeoscuro"
RecipeRadar_Strings["Harn Longcast"] = "Harn Tiralejo"
RecipeRadar_Strings["Haughty Modiste"] = "Modista Jonti"
RecipeRadar_Strings["Heldan Galesong"] = "Heldan Vendasón"
RecipeRadar_Strings["Hotoppik Copperpinch"] = "[Hotoppik Copperpinch]"
RecipeRadar_Strings["Innkeeper Biribi"] = "Tabernera Biribi"
RecipeRadar_Strings["Innkeeper Fizzgrimble"] = "Tabernero Fizzgrimble"
RecipeRadar_Strings["Innkeeper Grilka"] = "Tabernera Grilka"
RecipeRadar_Strings["Jangdor Swiftstrider"] = "Jangdor Zancoveloz"
RecipeRadar_Strings["Jannos Ironwill"] = "Jannos Dolocerado"
RecipeRadar_Strings["Jennabink Powerseam"] = "Jennabink Costura Potente"
RecipeRadar_Strings["Jinky Twizzlefixxit"] = "Jinky Arreglatodo"
RecipeRadar_Strings["Jubie Gadgetspring"] = "Jubie Cacharretio"
RecipeRadar_Strings["Kaita Deepforge"] = "Kaita Forjahonda"
RecipeRadar_Strings["Kalldan Felmoon"] = "Kalldan Lunavil"
RecipeRadar_Strings["Khara Deepwater"] = "Khara Aguahonda"
RecipeRadar_Strings["Khole Jinglepocket"] = "Khole Calderilla"
RecipeRadar_Strings["Knaz Blunderflame"] = "Knaz Flamerrada"
RecipeRadar_Strings["Krek Cragcrush"] = "Krek Peñazo"
RecipeRadar_Strings["Krinkle Goodsteel"] = "Krinkle Buenacero"
RecipeRadar_Strings["Leeli Longhaggle"] = "Leeli Regateo"
RecipeRadar_Strings["Lieutenant General Andorov"] = "Teniente General Andorov"
RecipeRadar_Strings["Logistics Officer Ulrike"] = "Oficial de logística Ulrike"
RecipeRadar_Strings["Lokhtos Darkbargainer"] = "Lokhtos Tratoscuro"
RecipeRadar_Strings["Lorelae Wintersong"] = "Lorelae Cantinvernal"
RecipeRadar_Strings["Madame Ruby"] = "Madame Rubí"
RecipeRadar_Strings["Magnus Frostwake"] = "Magnus Vespescarcha"
RecipeRadar_Strings["Mari Stonehand"] = "Mari Petramano"
RecipeRadar_Strings["Master Chef Mouldier"] = "Maestro cocinero Mouldier"
RecipeRadar_Strings["Master Craftsman Omarion"] = "Maestro artesano Omarion"
RecipeRadar_Strings["Mazk Snipeshot"] = "Mazk Tirocertero"
RecipeRadar_Strings["Mixie Farshot"] = "Mixie Tirolejano"
RecipeRadar_Strings["Muheru the Weaver"] = "Muheru el Tejedor"
RecipeRadar_Strings["Naal Mistrunner"] = "Naal Correbruma"
RecipeRadar_Strings["Namdo Bizzfizzle"] = "Namdo Silvabín"
RecipeRadar_Strings["Nardstrum Copperpinch"] = "Nardstrum Cobrellizco"
RecipeRadar_Strings["Narj Deepslice"] = "Narj Tajofondo"
RecipeRadar_Strings["Nasmara Moonsong"] = "Nasmara Canción de Luna"
RecipeRadar_Strings["Nata Dawnstrider"] = "Nata Caminalba"
RecipeRadar_Strings["Nessa Shadowsong"] = "Nessa Cantosombrío"
RecipeRadar_Strings["Nina Lightbrew"] = "Nina Burbuluz"
RecipeRadar_Strings["Nula the Butcher"] = "Nula la Carnicera"
RecipeRadar_Strings["Old Man Heming"] = "Viejo Heming"
RecipeRadar_Strings["Outfitter Eric"] = "Proveedor Eric"
RecipeRadar_Strings["Penney Copperpinch"] = "Penney Cobrellizco"
RecipeRadar_Strings["Plugger Spazzring"] = "Plugger Aropatoso"
RecipeRadar_Strings["Provisioner Nasela"] = "Proveedora Nasela"
RecipeRadar_Strings["Quartermaster Davian Vaclav"] = "Intendente Davian Vaclav"
RecipeRadar_Strings["Quartermaster Endarin"] = "Intendente Endarin"
RecipeRadar_Strings["Quartermaster Enuril"] = "Intendente Enuril"
RecipeRadar_Strings["Quartermaster Jaffrey Noreliqe"] = "Intendente Jaffrey Noreliqe"
RecipeRadar_Strings["Quartermaster Miranda Breechlock"] = "Intendente Cerrobrecha"
RecipeRadar_Strings["Quartermaster Urgronn"] = "Intendente Urgronn"
RecipeRadar_Strings["Rann Flamespinner"] = "Rann Flamejes"
RecipeRadar_Strings["Rathis Tomber"] = "Rathis Tumbero"
RecipeRadar_Strings["Rin'wosho the Trader"] = "Rin'wosho el Mercader"
RecipeRadar_Strings["Rizz Loosebolt"] = "Rizz Tornillosuelto"
RecipeRadar_Strings["Ruppo Zipcoil"] = "Rupo Brirrollo"
RecipeRadar_Strings["Sassa Weldwell"] = "Sassa Soldabien"
RecipeRadar_Strings["Seer Janidi"] = "Vidente Janidi"
RecipeRadar_Strings["Seersa Copperpinch"] = "Seersa Cobrellizco"
RecipeRadar_Strings["Sewa Mistrunner"] = "Seua Correbruma"
RecipeRadar_Strings["Shadi Mistrunner"] = "Shadi Correbruma"
RecipeRadar_Strings["Sheendra Tallgrass"] = "Sheendra Pastoalto"
RecipeRadar_Strings["Shen'dralar Provisioner"] = "Proveedor Shen'dralar"
RecipeRadar_Strings["Sheri Zipstitch"] = "Sheri Puntillas"
RecipeRadar_Strings["Smudge Thunderwood"] = "Smudge Truenedera"
RecipeRadar_Strings["Soolie Berryfizz"] = "Soolie Burbubaya"
RecipeRadar_Strings["Super-Seller 680"] = "Supervendedor 680"
RecipeRadar_Strings["Supply Officer Mills"] = "Oficial Avituallador Mills"
RecipeRadar_Strings["Tansy Puddlefizz"] = "Tansy Burbajea"
RecipeRadar_Strings["Tarban Hearthgrain"] = "Tarban Granogar"
RecipeRadar_Strings["Tilli Thistlefuzz"] = "Tilli Cardopelusa"
RecipeRadar_Strings["Trader Narasu"] = "Comerciante Narasu"
RecipeRadar_Strings["Truk Wildbeard"] = "Truk Barbaje"
RecipeRadar_Strings["Vendor-Tron 1000"] = "Vende-Tron 1000"
RecipeRadar_Strings["Viggz Shinesparked"] = "Viggz Brillochispa"
RecipeRadar_Strings["Wenna Silkbeard"] = "Wenna Barbasedosa"
RecipeRadar_Strings["Werg Thickblade"] = "Werg Filospeso"
RecipeRadar_Strings["Wind Trader Lathrai"] = "Comerciante de viento Lathrai"
RecipeRadar_Strings["Wolgren Jinglepocket"] = "[Wolgren Jinglepocket]"
RecipeRadar_Strings["Worb Strongstitch"] = "Worb Puntofuerte"
RecipeRadar_Strings["Wulmort Jinglepocket"] = "Wulmort Calderilla"
RecipeRadar_Strings["Wunna Darkmane"] = "Wunna Crinoscuro"
RecipeRadar_Strings["Xandar Goodbeard"] = "Xandar Bonbarba"
RecipeRadar_Strings["Xerintha Ravenoak"] = "Xerintha Roblecuervo"
RecipeRadar_Strings["Xizk Goodstitch"] = "Xizk Cortefino"
RecipeRadar_Strings["Xizzer Fizzbolt"] = "Xizzer Raybuja"
RecipeRadar_Strings["Yuka Screwspigot"] = "Yuka Llavenrosca"
RecipeRadar_Strings["Yurial Soulwater"] = "Yurial Agua de Alma"
RecipeRadar_Strings["Zan Shivsproket"] = "Zan Sivadento"
RecipeRadar_Strings["Zannok Hidepiercer"] = "Zannok Perforapieles"
RecipeRadar_Strings["Zarena Cromwind"] = "Zarena Cromvento"
RecipeRadar_Strings["Zorbin Fandazzle"] = "Zorbin Ventipnotizador"
 
end
 
if (GetLocale() == "ruRU") then
 
RecipeRadar_Strings["Toggle Recipe Radar"] = "Включить Радар Рецептов"
RecipeRadar_Strings["Auto-map Contributive Vendors"] = "Автоматически показывать продавцов \nс доступными рецептами на мини-карте"
RecipeRadar_Strings["Auto-select Current Region"] = "Автоматически выбирать текущую \nтерриторию"
RecipeRadar_Strings["Check Availability for Alts"] = "Проверять доступность для альтов"
RecipeRadar_Strings["Minimap Button Position"] = "Позиция кнопки у мини-карты"
RecipeRadar_Strings["Show Minimap Button"] = "Показывать кнопку у мини-карты"
RecipeRadar_Strings["Options"] = "Настройки"
RecipeRadar_Strings["%d learnable"] = "%d можно изучить"
RecipeRadar_Strings["%d recipes"] = "Рецептов: %d"
RecipeRadar_Strings["1 recipe"] = "1 рецепт"
RecipeRadar_Strings["Uncached Recipe"] = "Неизвестный рецепт"
RecipeRadar_Strings["You may mouse over the"] = "Вы можете провести мышью через иконку"
RecipeRadar_Strings["icon to lookup this recipe."] = "чтобы узнать этот рецепт."
RecipeRadar_Strings["Warning: if your server has"] = "Внимание: если ваш сервер"
RecipeRadar_Strings["not yet seen this item, you"] = "еще не имеет этого предмета, вы"
RecipeRadar_Strings["will be disconnected!"] = "будете отсоеденены!"
RecipeRadar_Strings["No recipes for sale in this region."] = "В этой территории нет рецептов"
RecipeRadar_Strings["Shift-click a vendor to add or remove her location on the world map."] = "Shift-клик чтобы добавить или убрать местонахождение продавца на карте мира"
RecipeRadar_Strings["Locate Vendor on Map"] = "Показывать продавцов на карте"
RecipeRadar_Strings["Neutral"] = "Нейтрально"
RecipeRadar_Strings["Factions"] = "Фракции"
RecipeRadar_Strings["Alchemy"] = "Алхимия"
RecipeRadar_Strings["Blacksmithing"] = "Кузнечное дело"
RecipeRadar_Strings["Cooking"] = "Кулинария"
RecipeRadar_Strings["Enchanting"] = "Наложение чар"
RecipeRadar_Strings["Engineering"] = "Инженерное дело"
RecipeRadar_Strings["First Aid"] = "Первая помощь"
RecipeRadar_Strings["Fishing"] = "Рыбная ловля"
RecipeRadar_Strings["Jewelcrafting"] = "Ювелирное дело"
RecipeRadar_Strings["Leatherworking"] = "Кожевничество"
RecipeRadar_Strings["Tailoring"] = "Портняжное дело"
RecipeRadar_Strings["Professions"] = "Профессии"
RecipeRadar_Strings["Already Known (Alts)"] = "Уже известно (альт)"
RecipeRadar_Strings["Already Known (Player)"] = "Уже известно (игрок)"
RecipeRadar_Strings["Available Now (Alts)"] = "Доступно (альт)"
RecipeRadar_Strings["Available Now (Player)"] = "Доступно (игрок)"
RecipeRadar_Strings["Future Prospect (Alts)"] = "Будет доступно (альт)"
RecipeRadar_Strings["Future Prospect (Player)"] = "Будет доступно (игрок)"
RecipeRadar_Strings["Inapplicable"] = "Неподходящий"
RecipeRadar_Strings["Availability"] = "Доступно"
RecipeRadar_Strings["Already Known By:"] = "Уже известно:"
RecipeRadar_Strings["Future Prospect For:"] = "Будет доступно для:"
RecipeRadar_Strings["Available For:"] = "Доступно для:"
RecipeRadar_Strings["%d of %d"] = "%d из %d"
RecipeRadar_Strings["Intermittent"] = "Перемещяющийся"
RecipeRadar_Strings["Quest"] = "C заданий"
RecipeRadar_Strings["Roving"] = "Бродячий"
RecipeRadar_Strings["Seasonal"] = "Сезонный"
RecipeRadar_Strings["%s Vendor"] = "%s продавец"
RecipeRadar_Strings["Argent Crusade"] = "Серебряный Авангард"
RecipeRadar_Strings["Ashtongue Deathsworn"] = "Служители Смерти"
RecipeRadar_Strings["Cenarion Circle"] = "Служители Ценариона"
RecipeRadar_Strings["Cenarion Expedition"] = "Экспедиция Ценариона"
RecipeRadar_Strings["Explorers' League"] = "Лига исследователей"
RecipeRadar_Strings["Frenzyheart Tribe"] = "Племя Мятежного Сердца"
RecipeRadar_Strings["Honor Hold"] = "Оплот Чести"
RecipeRadar_Strings["Keepers of Time"] = "Хранители Времени"
RecipeRadar_Strings["Kirin Tor"] = "Кирин-Тор"
RecipeRadar_Strings["Knights of the Ebon Blade"] = "Рыцари Черного Клинка"
RecipeRadar_Strings["Kurenai"] = "Куренай"
RecipeRadar_Strings["Lower City"] = "Нижний Город"
RecipeRadar_Strings["Netherwing"] = "Крылья Пустоверти"
RecipeRadar_Strings["Shattered Sun Offensive"] = "Армия Расколотого Солнца"
RecipeRadar_Strings["Sporeggar"] = "Спореггар"
RecipeRadar_Strings["The Aldor"] = "Алдоры"
RecipeRadar_Strings["The Consortium"] = "Консорциум"
RecipeRadar_Strings["The Frostborn"] = "Зиморожденные"
RecipeRadar_Strings["The Hand of Vengeance"] = "Карающая длань"
RecipeRadar_Strings["The Kalu'ak"] = "Калу'ак"
RecipeRadar_Strings["The Mag'har"] = "Маг'хар"
RecipeRadar_Strings["The Oracles"] = "Оракулы"
RecipeRadar_Strings["The Scale of the Sands"] = "Песчаная чешуя"
RecipeRadar_Strings["The Scryers"] = "Провидцы"
RecipeRadar_Strings["The Sha'tar"] = "Ша'тар"
RecipeRadar_Strings["The Silver Covenant"] = "Серебряный Союз"
RecipeRadar_Strings["The Sons of Hodir"] = "Сыновья Ходира"
RecipeRadar_Strings["The Taunka"] = "Таунка"
RecipeRadar_Strings["The Violet Eye"] = "Аметистовое Око"
RecipeRadar_Strings["The Wyrmrest Accord"] = "Драконий союз"
RecipeRadar_Strings["Thorium Brotherhood"] = "Братство Тория"
RecipeRadar_Strings["Thrallmar"] = "Траллмар"
RecipeRadar_Strings["Timbermaw Hold"] = "Древобрюхи"
RecipeRadar_Strings["Valiance Expedition"] = "Экспедиция Отважных"
RecipeRadar_Strings["Warsong Offensive"] = "Армия Песни Войны"
RecipeRadar_Strings["Zandalar Tribe"] = "Племя Зандалар"
RecipeRadar_Strings["Argent Dawn"] = "Серебряный Рассвет"
RecipeRadar_Strings["Rogue"] = "Разбойник"
RecipeRadar_Strings["Special"] = "Особенное"
RecipeRadar_Strings["%s Only"] = "Только %s"
RecipeRadar_Strings["Collapse"] = "Свернуть"
RecipeRadar_Strings["Collapse All"] = "Свернуть все"
RecipeRadar_Strings["Expand"] = "Раскрыть"
RecipeRadar_Strings["Expand All"] = "Раскрыть все"
RecipeRadar_Strings["Map Vendor"] = "Показать продовца на карте"
RecipeRadar_Strings["Unmap Vendor"] = "Убрать продовца с карты"
RecipeRadar_Strings["Armorsmith"] = "Бронник"
RecipeRadar_Strings["Dragonscale Leatherworking"] = "Кожевничество: чешуя драконов"
RecipeRadar_Strings["Elemental Leatherworking"] = "Кожевничество: сила стихий"
RecipeRadar_Strings["Goblin Engineer"] = "Гоблинский механик"
RecipeRadar_Strings["Master Axesmith"] = "Мастер школы топора"
RecipeRadar_Strings["Master Hammersmith"] = "Мастер школы молота"
RecipeRadar_Strings["Master Swordsmith"] = "Мастер ковки клинков"
RecipeRadar_Strings["Mooncloth Tailoring"] = "Шитье из луноткани"
RecipeRadar_Strings["Shadoweave Tailoring"] = "Шитье из тенеткани"
RecipeRadar_Strings["Spellfire Tailoring"] = "Шитье из чароткани"
RecipeRadar_Strings["Tribal Leatherworking"] = "Кожевничество: традиции предков"
RecipeRadar_Strings["Weaponsmith"] = "Оружейник"
RecipeRadar_Strings["Gnomish Engineer"] = "Гномский Механик"
RecipeRadar_Strings["Eastern Kingdoms"] = "Восточные королевства"
RecipeRadar_Strings["Instances"] = "Подземелья"
RecipeRadar_Strings["Kalimdor"] = "Калимдор"
 
RecipeRadar_Strings["Alterac Mountains"] = "Альтеракские горы"
RecipeRadar_Strings["Arathi Highlands"] = "Нагорье Арати"
RecipeRadar_Strings["Ashenvale"] = "Ясеневый лес"
RecipeRadar_Strings["Azshara"] = "Азшара"
RecipeRadar_Strings["Azuremyst Isle"] = "Остров Лазурной Дымки"
RecipeRadar_Strings["Badlands"] = "Бесплодные земли"
RecipeRadar_Strings["Black Temple"] = "Черный Храм"
RecipeRadar_Strings["Blackrock Depths"] = "Глубины Черной горы"
RecipeRadar_Strings["Blade's Edge Mountains"] = "Острогорье"
RecipeRadar_Strings["Blasted Lands"] = "Выжженные земли"
RecipeRadar_Strings["Bloodmyst Isle"] = "Остров Кровавой Дымки"
RecipeRadar_Strings["Borean Tundra"] = "Борейская тундра"
RecipeRadar_Strings["Burning Steppes"] = "Пылающие степи"
RecipeRadar_Strings["Crystalsong Forest"] = "Лес Хрустальной Песни"
RecipeRadar_Strings["Dalaran"] = "Даларан"
RecipeRadar_Strings["Darkshore"] = "Темные берега"
RecipeRadar_Strings["Darnassus"] = "Дарнасс"
RecipeRadar_Strings["Deadwind Pass"] = "Перевал Мертвого Ветра"
RecipeRadar_Strings["Desolace"] = "Пустоши"
RecipeRadar_Strings["Dire Maul"] = "Забытый Город"
RecipeRadar_Strings["Dragonblight"] = "Драконий Погост"
RecipeRadar_Strings["Dun Morogh"] = "Дун Морог"
RecipeRadar_Strings["Durotar"] = "Дуротар"
RecipeRadar_Strings["Duskwood"] = "Сумеречный лес"
RecipeRadar_Strings["Dustwallow Marsh"] = "Пылевые топи"
RecipeRadar_Strings["Eastern Plaguelands"] = "Восточные Чумные земли"
RecipeRadar_Strings["Elwynn Forest"] = "Элвиннский лес"
RecipeRadar_Strings["Eversong Woods"] = "Леса Вечной Песни"
RecipeRadar_Strings["Felwood"] = "Оскверненный лес"
RecipeRadar_Strings["Feralas"] = "Фералас"
RecipeRadar_Strings["Ghostlands"] = "Призрачные земли"
RecipeRadar_Strings["Gnomeregan"] = "Гномреган"
RecipeRadar_Strings["Grizzly Hills"] = "Седые холмы"
RecipeRadar_Strings["Hellfire Peninsula"] = "Полуостров Адского Пламени"
RecipeRadar_Strings["Hillsbrad Foothills"] = "Предгорья Хилсбрада"
RecipeRadar_Strings["Howling Fjord"] = "Ревущий фьорд"
RecipeRadar_Strings["Hyjal Summit"] = "Вершина Хиджала"
RecipeRadar_Strings["Icecrown"] = "Ледяная Корона"
RecipeRadar_Strings["Ironforge"] = "Стальгорн"
RecipeRadar_Strings["Isle of Quel'Danas"] = "Остров Кель'Данас"
RecipeRadar_Strings["Karazhan"] = "Каражан"
RecipeRadar_Strings["Loch Modan"] = "Лок Модан"
RecipeRadar_Strings["Moonglade"] = "Лунная поляна"
RecipeRadar_Strings["Mulgore"] = "Мулгор"
RecipeRadar_Strings["Nagrand"] = "Награнд"
RecipeRadar_Strings["Naxxramas"] = "Наксрамас"
RecipeRadar_Strings["Netherstorm"] = "Пустоверть"
RecipeRadar_Strings["Old Hillsbrad Foothills"] = "Старые предгорья Хилсбрада"
RecipeRadar_Strings["Orgrimmar"] = "Оргриммар"
RecipeRadar_Strings["Redridge Mountains"] = "Красногорье"
RecipeRadar_Strings["Ruins of Ahn'Qiraj"] = "Руины Ан'Киража"
RecipeRadar_Strings["Searing Gorge"] = "Тлеющее ущелье"
RecipeRadar_Strings["Shadowmoon Valley"] = "Долина Призрачной Луны"
RecipeRadar_Strings["Shattrath City"] = "Шаттрат"
RecipeRadar_Strings["Sholazar Basin"] = "Низина Шолазар"
RecipeRadar_Strings["Silithus"] = "Силитус"
RecipeRadar_Strings["Silvermoon City"] = "Луносвет"
RecipeRadar_Strings["Silverpine Forest"] = "Серебряный бор"
RecipeRadar_Strings["Stonetalon Mountains"] = "Когтистые горы"
RecipeRadar_Strings["Stormwind City"] = "Штормград"
RecipeRadar_Strings["Stranglethorn Vale"] = "Тернистая долина"
RecipeRadar_Strings["Swamp of Sorrows"] = "Болото Печали"
RecipeRadar_Strings["Tanaris"] = "Танарис"
RecipeRadar_Strings["Teldrassil"] = "Тельдрассил"
RecipeRadar_Strings["Terokkar Forest"] = "Лес Тероккар"
RecipeRadar_Strings["The Barrens"] = "Степи"
RecipeRadar_Strings["The Exodar"] = "Экзодар"
RecipeRadar_Strings["The Hinterlands"] = "Внутренние земли"
RecipeRadar_Strings["The Storm Peaks"] = "Грозовая Гряда"
RecipeRadar_Strings["Thousand Needles"] = "Тысяча Игл"
RecipeRadar_Strings["Thunder Bluff"] = "Громовой Утес"
RecipeRadar_Strings["Tirisfal Glades"] = "Тирисфальский Лес"
RecipeRadar_Strings["Undercity"] = "Подгород"
RecipeRadar_Strings["Un'Goro Crater"] = "Кратер Ун'Горо"
RecipeRadar_Strings["Wailing Caverns"] = "Пещеры Стенаний"
RecipeRadar_Strings["Western Plaguelands"] = "Западные Чумные земли"
RecipeRadar_Strings["Westfall"] = "Западный Край"
RecipeRadar_Strings["Wetlands"] = "Болотина"
RecipeRadar_Strings["Wintergrasp"] = "Ледяные Оковы"
RecipeRadar_Strings["Winterspring"] = "Зимние Ключи"
RecipeRadar_Strings["Zangarmarsh"] = "Зангартопь"
RecipeRadar_Strings["Zul'Drak"] = "Зул'Драк"
 
RecipeRadar_Strings["\"Cookie\" McWeaksauce"] = "\"Поваренок\" Максъедобус"
RecipeRadar_Strings["Aaron Hollman"] = "Аарон Холлман"
RecipeRadar_Strings["Abigail Shiel"] = "Эбигейл Шиль"
RecipeRadar_Strings["Aendel Windspear"] = "Эндель Копье Ветра"
RecipeRadar_Strings["Aged Dalaran Wizard"] = "Даларанский старый волшебник"
RecipeRadar_Strings["Alchemist Gribble"] = "Алхимик Гриббл"
RecipeRadar_Strings["Alchemist Pestlezugg"] = "Алхимик Пестычинс"
RecipeRadar_Strings["Aldraan"] = "Алдраан"
RecipeRadar_Strings["Alexandra Bolero"] = "Александра Болеро"
RecipeRadar_Strings["Algernon"] = "Алжернон"
RecipeRadar_Strings["Almaador"] = "Альмаадор"
RecipeRadar_Strings["Altaa"] = "Алтаа"
RecipeRadar_Strings["Alurmi"] = "Алурми"
RecipeRadar_Strings["Amy Davenport"] = "Ами Девенпорт"
RecipeRadar_Strings["Andormu"] = "Андорму"
RecipeRadar_Strings["Andrew Hilbert"] = "Эндрю Гилберт"
RecipeRadar_Strings["Andrion Darkspinner"] = "Андрион Темнопряд"
RecipeRadar_Strings["Androd Fadran"] = "Андрод Фадран"
RecipeRadar_Strings["Apothecary Antonivich"] = "Аптекарь Антонивич"
RecipeRadar_Strings["Apprentice Darius"] = "Ученик Дариус"
RecipeRadar_Strings["Aresella"] = "Ареселла"
RecipeRadar_Strings["Argent Quartermaster Hasana"] = "Интендант Хасна из ордена Серебряного Рассвета"
RecipeRadar_Strings["Argent Quartermaster Lightspark"] = "Интендант Искромет из ордена Серебряного Рассвета"
RecipeRadar_Strings["Arras"] = "Аррас"
RecipeRadar_Strings["Arred"] = "Арред"
RecipeRadar_Strings["Arrond"] = "Арронд"
RecipeRadar_Strings["Asarnan"] = "Азарнан"
RecipeRadar_Strings["Balai Lok'Wein"] = "Бала Лок'Вен"
RecipeRadar_Strings["Bale"] = "Тюкн"
RecipeRadar_Strings["Banalash"] = "Баналаш"
RecipeRadar_Strings["Baxter"] = "Бакстер"
RecipeRadar_Strings["Blackwing"] = "[Blackwing]"
RecipeRadar_Strings["Blimo Gadgetspring"] = "Блимо Прибамбас"
RecipeRadar_Strings["Blixrez Goodstitch"] = "Бликрез Ладноскрой"
RecipeRadar_Strings["Blizrik Buckshot"] = "Близрик Шрапнельс"
RecipeRadar_Strings["Bliztik"] = "Близтик"
RecipeRadar_Strings["Bombus Finespindle"] = "Бомбус Остроигл"
RecipeRadar_Strings["Borto"] = "Борто"
RecipeRadar_Strings["Borya"] = "Боря"
RecipeRadar_Strings["Brienna Starglow"] = "Бриенна Мерцание Звезд"
RecipeRadar_Strings["Bro'kin"] = "Бро'кин"
RecipeRadar_Strings["Bronk"] = "Бронк"
RecipeRadar_Strings["Burbik Gearspanner"] = "Бурбик Гайковерт"
RecipeRadar_Strings["Burko"] = "Бюрко"
RecipeRadar_Strings["Captured Gnome"] = "Пленный гном"
RecipeRadar_Strings["Catherine Leland"] = "Катрин Лиланд"
RecipeRadar_Strings["Christoph Jeffcoat"] = "Кристоф Френч"
RecipeRadar_Strings["Clyde Ranthal"] = "Клайд Рантал"
RecipeRadar_Strings["Constance Brisboise"] = "Констанция Брибуа"
RecipeRadar_Strings["Cookie One-Eye"] = "Поваренок Одноглаз"
RecipeRadar_Strings["Coreiel"] = "Кориэль"
RecipeRadar_Strings["Corporal Bluth"] = "Капрал Блуф"
RecipeRadar_Strings["Cowardly Crosby"] = "Трусишка Кросби"
RecipeRadar_Strings["Crazk Sparks"] = "Кразк Искрец"
RecipeRadar_Strings["Cro Threadstrong"] = "Кро Ладнокрой"
RecipeRadar_Strings["Daga Ramba"] = "Дага Рамба"
RecipeRadar_Strings["Daggle Ironshaper"] = "Даггл Железодел"
RecipeRadar_Strings["Dalria"] = "Дальрия"
RecipeRadar_Strings["Daniel Bartlett"] = "Даниэль Бартлетт"
RecipeRadar_Strings["Danielle Zipstitch"] = "Даниэлла Рваношов"
RecipeRadar_Strings["Darian Singh"] = "Дариан Сингх"
RecipeRadar_Strings["Darnall"] = "Дарналл"
RecipeRadar_Strings["Dealer Malij"] = "Делец Малиж"
RecipeRadar_Strings["Defias Profiteer"] = "Спекулянт из Братства Справедливости"
RecipeRadar_Strings["Deneb Walker"] = "Денеб Уокер"
RecipeRadar_Strings["Derak Nightfall"] = "Дерек Сумерек"
RecipeRadar_Strings["Deynna"] = "Дейна"
RecipeRadar_Strings["Dirge Quikcleave"] = "Могиль Быстроруб"
RecipeRadar_Strings["Doba"] = "Доба"
RecipeRadar_Strings["Drac Roughcut"] = "Драк Грубиян"
RecipeRadar_Strings["Drake Lindgren"] = "Дрейк Линдгрен"
RecipeRadar_Strings["Drovnar Strongbrew"] = "Дровнар Густовар"
RecipeRadar_Strings["Edna Mullby"] = "Эдна Милби"
RecipeRadar_Strings["Eebee Jinglepocket"] = "[Eebee Jinglepocket]"
RecipeRadar_Strings["Egomis"] = "Эгомис"
RecipeRadar_Strings["Eiin"] = "Эйин"
RecipeRadar_Strings["Eldara Dawnrunner"] = "Эльдара Вестница Рассвета"
RecipeRadar_Strings["Elynna"] = "Элинна"
RecipeRadar_Strings["Emrul Riknussun"] = "Эмруль Рикнуссен"
RecipeRadar_Strings["Eriden"] = "Эриден"
RecipeRadar_Strings["Erika Tate"] = "Эрика Тейт"
RecipeRadar_Strings["Erilia"] = "Эрилия"
RecipeRadar_Strings["Evie Whirlbrew"] = "Иви Бурноварка"
RecipeRadar_Strings["Fazu"] = "Фазу"
RecipeRadar_Strings["Fedryen Swiftspear"] = "Федриен Быстрое Копье"
RecipeRadar_Strings["Feera"] = "Феера"
RecipeRadar_Strings["Felannia"] = "Феланния"
RecipeRadar_Strings["Felicia Doan"] = "Фелиция Доан"
RecipeRadar_Strings["Felika"] = "Фелика"
RecipeRadar_Strings["Fradd Swiftgear"] = "Фрадд Бынструмент"
RecipeRadar_Strings["Fyldan"] = "Филдан"
RecipeRadar_Strings["Gagsprocket"] = "Заглушестер"
RecipeRadar_Strings["Galley Chief Alunwea"] = "Галерный кок Алунвея"
RecipeRadar_Strings["Galley Chief Gathers"] = "Галерный кок Сборень"
RecipeRadar_Strings["Galley Chief Grace"] = "Галерный повар Грейс"
RecipeRadar_Strings["Galley Chief Halumvorea"] = "Галерный кок Галумвория"
RecipeRadar_Strings["Galley Chief Mariss"] = "Галерный кок Марисс"
RecipeRadar_Strings["Galley Chief Steelbelly"] = "Галерный кок Сталебрюх"
RecipeRadar_Strings["Gambarinka"] = "Гамбаринко"
RecipeRadar_Strings["Gaston"] = "Гастон"
RecipeRadar_Strings["Gearcutter Cogspinner"] = "Зуборез Шестеренок"
RecipeRadar_Strings["Gelanthis"] = "Гелантис"
RecipeRadar_Strings["George Candarte"] = "Джорлж Кандарте"
RecipeRadar_Strings["Gharash"] = "Гхарраш"
RecipeRadar_Strings["Ghok'kah"] = "Гхок'ка"
RecipeRadar_Strings["Gidge Spellweaver"] = "Гиджа Чароплетка"
RecipeRadar_Strings["Gigget Zipcoil"] = "Гиджет Свистопулька"
RecipeRadar_Strings["Gikkix"] = "Гиккикс"
RecipeRadar_Strings["Gina MacGregor"] = "Джина Макгрегор"
RecipeRadar_Strings["Gloria Femmel"] = "Глория Даммель"
RecipeRadar_Strings["Glyx Brewright"] = "Гликс Пивоправ"
RecipeRadar_Strings["Gnaz Blunderflame"] = "Гназ Огнепых"
RecipeRadar_Strings["Gretta Ganter"] = "Гретта Гантер"
RecipeRadar_Strings["Grimtak"] = "Гримтак"
RecipeRadar_Strings["Haalrun"] = "Хаалрун"
RecipeRadar_Strings["Haferet"] = "Хаферет"
RecipeRadar_Strings["Hagrus"] = "Хагрус"
RecipeRadar_Strings["Hammon Karwn"] = "Хаммон Карун"
RecipeRadar_Strings["Harggan"] = "Харгган"
RecipeRadar_Strings["Harklan Moongrove"] = "Харклан Лунная Роща"
RecipeRadar_Strings["Harlon Thornguard"] = "Харлон Терновый Страж"
RecipeRadar_Strings["Harlown Darkweave"] = "Харлон Темный Узор"
RecipeRadar_Strings["Harn Longcast"] = "Харн Далекий Заброс"
RecipeRadar_Strings["Haughty Modiste"] = "Отти Кутюри"
RecipeRadar_Strings["Heldan Galesong"] = "Хельдан Рокот Прибоя"
RecipeRadar_Strings["Helenia Olden"] = "Еления Ольден"
RecipeRadar_Strings["Himmik"] = "Химмик"
RecipeRadar_Strings["Hotoppik Copperpinch"] = "[Hotoppik Copperpinch]"
RecipeRadar_Strings["Hula'mahi"] = "Хула'махи"
RecipeRadar_Strings["Indormi"] = "Индорми"
RecipeRadar_Strings["Innkeeper Biribi"] = "Хозяйка таверны Бириби"
RecipeRadar_Strings["Innkeeper Fizzgrimble"] = "Хозяин таверны Ворчунелло"
RecipeRadar_Strings["Innkeeper Grilka"] = "Хозяйка таверны Грилка"
RecipeRadar_Strings["Jabbey"] = "Джабби"
RecipeRadar_Strings["Jandia"] = "Джандия"
RecipeRadar_Strings["Janet Hommers"] = "Джанет Хоммерс"
RecipeRadar_Strings["Jangdor Swiftstrider"] = "Джангор Быстрый Странник"
RecipeRadar_Strings["Jannos Ironwill"] = "Джаннос Неуступ"
RecipeRadar_Strings["Jaquilina Dramet"] = "Жаклина Драмет"
RecipeRadar_Strings["Jase Farlane"] = "Джез Фарлен"
RecipeRadar_Strings["Jazzrik"] = "Джаззрик"
RecipeRadar_Strings["Jeeda"] = "Джиида"
RecipeRadar_Strings["Jennabink Powerseam"] = "Дженнабик Мелкостёжка"
RecipeRadar_Strings["Jessara Cordell"] = "Джессара Корделл"
RecipeRadar_Strings["Jim Saltit"] = "Джим Соленит"
RecipeRadar_Strings["Jinky Twizzlefixxit"] = "Джинки Дзыньбламбум"
RecipeRadar_Strings["Johan Barnes"] = "Йохан Барнс"
RecipeRadar_Strings["Joseph Moore"] = "Джозеф Мур"
RecipeRadar_Strings["Jubie Gadgetspring"] = "Джуби Прибамбас"
RecipeRadar_Strings["Jun'ha"] = "Джун'ха"
RecipeRadar_Strings["Juno Dufrain"] = "Джуно Дюфрейн"
RecipeRadar_Strings["Jutak"] = "Ютак"
RecipeRadar_Strings["Kaita Deepforge"] = "Кайта Подземная Кузня"
RecipeRadar_Strings["Kalaen"] = "Келаен"
RecipeRadar_Strings["Kalldan Felmoon"] = "Калидан Лунный Серп"
RecipeRadar_Strings["Kania"] = "Кания"
RecipeRadar_Strings["Karaaz"] = "Карааз"
RecipeRadar_Strings["Keena"] = "Кеена"
RecipeRadar_Strings["Kelsey Yance"] = "Келси Янс"
RecipeRadar_Strings["Kendor Kabonka"] = "Кендор Кабонка"
RecipeRadar_Strings["Khara Deepwater"] = "Хара Рыбовод"
RecipeRadar_Strings["Khole Jinglepocket"] = "[Khole Jinglepocket]"
RecipeRadar_Strings["Kiknikle"] = "Пниподзад"
RecipeRadar_Strings["Killian Sanatha"] = "Киллиан Саната"
RecipeRadar_Strings["Kilxx"] = "Кликс"
RecipeRadar_Strings["Kireena"] = "Киреена"
RecipeRadar_Strings["Kithas"] = "Китхас"
RecipeRadar_Strings["Knaz Blunderflame"] = "Наз Огнепых"
RecipeRadar_Strings["Koren"] = "Корен"
RecipeRadar_Strings["Kor'geld"] = "Кор'гельд"
RecipeRadar_Strings["Krek Cragcrush"] = "Крек Скалолом"
RecipeRadar_Strings["Kriggon Talsone"] = "Криггон Талсон"
RecipeRadar_Strings["Krinkle Goodsteel"] = "Кринкель Сталлер"
RecipeRadar_Strings["Kulwia"] = "Кульвия"
RecipeRadar_Strings["Kzixx"] = "Кзикс"
RecipeRadar_Strings["Laird"] = "Лайрд"
RecipeRadar_Strings["Landraelanis"] = "Ландреленис"
RecipeRadar_Strings["Lardan"] = "Лардан"
RecipeRadar_Strings["Lebowski"] = "Лебовский"
RecipeRadar_Strings["Leeli Longhaggle"] = "Леели Нудноторг"
RecipeRadar_Strings["Leo Sarn"] = "Лео Сарн"
RecipeRadar_Strings["Leonard Porter"] = "Леонард Портер"
RecipeRadar_Strings["Lieutenant General Andorov"] = "Генерал-лейтенант Андоров"
RecipeRadar_Strings["Lilly"] = "Лилли"
RecipeRadar_Strings["Lindea Rabonne"] = "Линди Рабонн"
RecipeRadar_Strings["Lizbeth Cromwell"] = "Лизбет Кромвель"
RecipeRadar_Strings["Logannas"] = "Логаннас"
RecipeRadar_Strings["Logistics Officer Ulrike"] = "Офицер-логистик Ульрика"
RecipeRadar_Strings["Lokhtos Darkbargainer"] = "Локтос Зловещий Торговец"
RecipeRadar_Strings["Loolruna"] = "Лооруна"
RecipeRadar_Strings["Lorelae Wintersong"] = "Лорелея Песнь Зимы"
RecipeRadar_Strings["Lucan Cordell"] = "Лукан Корделл"
RecipeRadar_Strings["Lyna"] = "Лина"
RecipeRadar_Strings["Madame Ruby"] = "Мадам Рубина"
RecipeRadar_Strings["Magnus Frostwake"] = "Магнус Хладоступ"
RecipeRadar_Strings["Mahu"] = "Маху"
RecipeRadar_Strings["Mallen Swain"] = "Маллен Свейн"
RecipeRadar_Strings["Malygen"] = "Малиген"
RecipeRadar_Strings["Mari Stonehand"] = "Мари Камнерук"
RecipeRadar_Strings["Maria Lumere"] = "Мария Лумере"
RecipeRadar_Strings["Martine Tramblay"] = "Мартин Трамбле"
RecipeRadar_Strings["Masat T'andr"] = "Масат Т'андр"
RecipeRadar_Strings["Master Chef Mouldier"] = "Главный шеф-повар Плеснер"
RecipeRadar_Strings["Master Craftsman Omarion"] = "Мастер-ремесленник Омарион"
RecipeRadar_Strings["Mathar G'ochar"] = "Матар Гочар"
RecipeRadar_Strings["Mavralyn"] = "Мавралинн"
RecipeRadar_Strings["Mazk Snipeshot"] = "Мазк Карабинс"
RecipeRadar_Strings["Meilosh"] = "Мелиош"
RecipeRadar_Strings["Melaris"] = "Меларис"
RecipeRadar_Strings["Micha Yance"] = "Мика Янс"
RecipeRadar_Strings["Millie Gregorian"] = "Милли Грегориан"
RecipeRadar_Strings["Mishta"] = "Мишта"
RecipeRadar_Strings["Mixie Farshot"] = "Микси Дальнострел"
RecipeRadar_Strings["Montarr"] = "Монтарр"
RecipeRadar_Strings["Muheru the Weaver"] = "Мугеру Ткач"
RecipeRadar_Strings["Muuran"] = "Мууран"
RecipeRadar_Strings["Mycah"] = "Микаа"
RecipeRadar_Strings["Mythrin'dir"] = "Митрин'дир"
RecipeRadar_Strings["Naal Mistrunner"] = "Наал Вестник Туманов"
RecipeRadar_Strings["Naka"] = "Нака"
RecipeRadar_Strings["Nakodu"] = "Накоду"
RecipeRadar_Strings["Namdo Bizzfizzle"] = "Намдо Вклвыкл"
RecipeRadar_Strings["Nandar Branson"] = "Нандар Брансон"
RecipeRadar_Strings["Nardstrum Copperpinch"] = "[Nardstrum Copperpinch]"
RecipeRadar_Strings["Narj Deepslice"] = "Нардж Ломтерез"
RecipeRadar_Strings["Narkk"] = "Наркк"
RecipeRadar_Strings["Nasmara Moonsong"] = "Назмара Песнь Луны"
RecipeRadar_Strings["Nata Dawnstrider"] = "Ната Рассветная Странница"
RecipeRadar_Strings["Neal Allen"] = "Нил Аллен"
RecipeRadar_Strings["Neii"] = "Нейи"
RecipeRadar_Strings["Nergal"] = "Нергал"
RecipeRadar_Strings["Nerrist"] = "Неррист"
RecipeRadar_Strings["Nessa Shadowsong"] = "Несса Песня Теней"
RecipeRadar_Strings["Nina Lightbrew"] = "Ниней Легковар"
RecipeRadar_Strings["Nioma"] = "Ниома"
RecipeRadar_Strings["Nula the Butcher"] = "Нула Мясник"
RecipeRadar_Strings["Nyoma"] = "Ньома"
RecipeRadar_Strings["Ogg'marr"] = "Огг'марр"
RecipeRadar_Strings["Okuno"] = "Окуно"
RecipeRadar_Strings["Old Man Heming"] = "Старик Хеминг"
RecipeRadar_Strings["Ontuvo"] = "Онтуво"
RecipeRadar_Strings["Otho Moji'ko"] = "Отхо Можи'ко"
RecipeRadar_Strings["Outfitter Eric"] = "Галантерейщик Эрик"
RecipeRadar_Strings["Paulsta'ats"] = "Пауласта'атс"
RecipeRadar_Strings["Penney Copperpinch"] = "[Penney Copperpinch]"
RecipeRadar_Strings["Phea"] = "Фэа"
RecipeRadar_Strings["Plugger Spazzring"] = "Штоппор Наливалс"
RecipeRadar_Strings["Pratt McGrubben"] = "Пратт Макгруббен"
RecipeRadar_Strings["Provisioner Nasela"] = "Поставщик Несела"
RecipeRadar_Strings["Qia"] = "Кийя"
RecipeRadar_Strings["Quartermaster Davian Vaclav"] = "Интендант Дэвиан Ваклав"
RecipeRadar_Strings["Quartermaster Endarin"] = "Интендант Эндарин"
RecipeRadar_Strings["Quartermaster Enuril"] = "Интендант Инурил"
RecipeRadar_Strings["Quartermaster Jaffrey Noreliqe"] = "Интендант Джеффри Норелик"
RecipeRadar_Strings["Quartermaster Miranda Breechlock"] = "Интендант Миранда Бричлок"
RecipeRadar_Strings["Quartermaster Urgronn"] = "Интендант Ургронн"
RecipeRadar_Strings["Quelis"] = "Келис"
RecipeRadar_Strings["Ranik"] = "Раник"
RecipeRadar_Strings["Rann Flamespinner"] = "Ранн Пламепряд"
RecipeRadar_Strings["Rartar"] = "Рартар"
RecipeRadar_Strings["Rathis Tomber"] = "Ратис Могильщик"
RecipeRadar_Strings["Rikqiz"] = "Риккиз"
RecipeRadar_Strings["Rin'wosho the Trader"] = "Рин'вошо Торговец"
RecipeRadar_Strings["Rizz Loosebolt"] = "Ризз Болтень"
RecipeRadar_Strings["Rohok"] = "Рохок"
RecipeRadar_Strings["Ronald Burch"] = "Рональд Берч"
RecipeRadar_Strings["Rungor"] = "Рунгор"
RecipeRadar_Strings["Ruppo Zipcoil"] = "Руппо Свистопулькин"
RecipeRadar_Strings["Saenorion"] = "Санарион"
RecipeRadar_Strings["Sassa Weldwell"] = "Сасса Крутоварка"
RecipeRadar_Strings["Seer Janidi"] = "Ясновидящая Джаниди"
RecipeRadar_Strings["Sewa Mistrunner"] = "Сива Вестница Туманов"
RecipeRadar_Strings["Shaani"] = "Шаани"
RecipeRadar_Strings["Shadi Mistrunner"] = "Шади Вестница Туманов"
RecipeRadar_Strings["Shandrina"] = "Шандрина"
RecipeRadar_Strings["Shankys"] = "Шанкис"
RecipeRadar_Strings["Sheendra Tallgrass"] = "Шиендра Высокая Трава"
RecipeRadar_Strings["Shen'dralar Provisioner"] = "Шен'драларский поставщик"
RecipeRadar_Strings["Sheri Zipstitch"] = "Шери Рваношов"
RecipeRadar_Strings["Sid Limbardi"] = "Сид Лимбарди"
RecipeRadar_Strings["Skreah"] = "Скреах"
RecipeRadar_Strings["Smudge Thunderwood"] = "Клякс Громодрев"
RecipeRadar_Strings["Soolie Berryfizz"] = "Сули Гонобобельзз"
RecipeRadar_Strings["Sovik"] = "Совик"
RecipeRadar_Strings["Stuart Fleming"] = "Стюарт Флеминг"
RecipeRadar_Strings["Sumi"] = "Суми"
RecipeRadar_Strings["Super-Seller 680"] = "Робо-торговец 680"
RecipeRadar_Strings["Supply Officer Mills"] = "Снабженец Миллс"
RecipeRadar_Strings["Tamar"] = "Тамар"
RecipeRadar_Strings["Tansy Puddlefizz"] = "Танси Грязебульк"
RecipeRadar_Strings["Tarban Hearthgrain"] = "Тарбан Домашний Очаг"
RecipeRadar_Strings["Tari'qa"] = "Тарик'ка"
RecipeRadar_Strings["Tatiana"] = "Татьяна"
RecipeRadar_Strings["Thaddeus Webb"] = "Таддеус Уэбб"
RecipeRadar_Strings["Tharynn Bouden"] = "Таринн Боуден"
RecipeRadar_Strings["Thomas Yance"] = "Томас Янс"
RecipeRadar_Strings["Tilli Thistlefuzz"] = "Тилли Чертополуш"
RecipeRadar_Strings["Trader Narasu"] = "Торговец Нарасу"
RecipeRadar_Strings["Truk Wildbeard"] = "Трук Косматая Борода"
RecipeRadar_Strings["Tunkk"] = "Тункк"
RecipeRadar_Strings["Ulthaan"] = "Ультаан"
RecipeRadar_Strings["Ulthir"] = "Ультир"
RecipeRadar_Strings["Uriku"] = "Урику"
RecipeRadar_Strings["Uthok"] = "Утхок"
RecipeRadar_Strings["Vaean"] = "Ваеан"
RecipeRadar_Strings["Valdaron"] = "Вальдарон"
RecipeRadar_Strings["Vargus"] = "Варгус"
RecipeRadar_Strings["Veenix"] = "Виеникс"
RecipeRadar_Strings["Vendor-Tron 1000"] = "Торготрон 1000"
RecipeRadar_Strings["Vharr"] = "Вхарр"
RecipeRadar_Strings["Viggz Shinesparked"] = "Виггз Синеискр"
RecipeRadar_Strings["Vivianna"] = "Вивианна"
RecipeRadar_Strings["Vizzklick"] = "Визглик"
RecipeRadar_Strings["Vodesiin"] = "Водесиин"
RecipeRadar_Strings["Wenna Silkbeard"] = "Венна Шелкобород"
RecipeRadar_Strings["Werg Thickblade"] = "Верг Крепкий Клинок"
RecipeRadar_Strings["Wik'Tar"] = "Вик'Тар"
RecipeRadar_Strings["Wind Trader Lathrai"] = "Латрай Торговец Ветром"
RecipeRadar_Strings["Wolgren Jinglepocket"] = "[Wolgren Jinglepocket]"
RecipeRadar_Strings["Worb Strongstitch"] = "Ворб Крепкий Шов"
RecipeRadar_Strings["Wrahk"] = "Ракх"
RecipeRadar_Strings["Wulan"] = "Вулан"
RecipeRadar_Strings["Wulmort Jinglepocket"] = "[Wulmort Jinglepocket]"
RecipeRadar_Strings["Wunna Darkmane"] = "Вунна Темная Грива"
RecipeRadar_Strings["Xandar Goodbeard"] = "Ксаварик"
RecipeRadar_Strings["Xen'to"] = "Ксен'то"
RecipeRadar_Strings["Xerintha Ravenoak"] = "Зеринта Воронья Ольха"
RecipeRadar_Strings["Xizk Goodstitch"] = "Зиск Ладноскрой"
RecipeRadar_Strings["Xizzer Fizzbolt"] = "Ксиззер Шумоболт"
RecipeRadar_Strings["Yatheon"] = "Ятеон"
RecipeRadar_Strings["Yonada"] = "Йонада"
RecipeRadar_Strings["Ythyar"] = "Айтар"
RecipeRadar_Strings["Yuka Screwspigot"] = "Юка Крутипроб"
RecipeRadar_Strings["Yurial Soulwater"] = "Юриал Душа Воды"
RecipeRadar_Strings["Zan Shivsproket"] = "Зан Кругореззик"
RecipeRadar_Strings["Zannok Hidepiercer"] = "Заннок Проткни-Шкуру"
RecipeRadar_Strings["Zansoa"] = "Зансоа"
RecipeRadar_Strings["Zaralda"] = "Заральда"
RecipeRadar_Strings["Zarena Cromwind"] = "Зарена Кромвинд"
RecipeRadar_Strings["Zargh"] = "Заргх"
RecipeRadar_Strings["Zixil"] = "Зиксель"
RecipeRadar_Strings["Zorbin Fandazzle"] = "Зорбин Дребезгун"
RecipeRadar_Strings["Zurai"] = "Зурай"
 
end
 
if (GetLocale() == "zhTW") then
 
RecipeRadar_Strings["Recipe Radar"] = "配方雷達"
RecipeRadar_Strings["Toggle Recipe Radar"] = "顯示配方雷達"
RecipeRadar_Strings["Recipe Radar Bindings"] = "配方雷達熱鍵"
RecipeRadar_Strings["Auto-map Contributive Vendors"] = "顯示屏食譜"
RecipeRadar_Strings["Auto-select Current Region"] = "自動選擇地區"
RecipeRadar_Strings["Check Availability for Alts"] = "判斷分身是否可用"
RecipeRadar_Strings["Minimap Button Position"] = "小地圖按鈕位置"
RecipeRadar_Strings["Show Minimap Button"] = "顯示小地圖按鈕"
RecipeRadar_Strings["Options"] = "選項"
RecipeRadar_Strings["%d learnable"] = "%d 可學"
RecipeRadar_Strings["%d recipes"] = "%d 配方"
RecipeRadar_Strings["1 recipe"] = "1 配方"
RecipeRadar_Strings["Uncached Recipe"] = "未快取的配方"
RecipeRadar_Strings["You may mouse over the"] = "可把滑鼠移到"
RecipeRadar_Strings["icon to lookup this recipe."] = "圖示來看這個配方."
RecipeRadar_Strings["Warning: if your server has"] = "警告: 如果妳的伺服器"
RecipeRadar_Strings["not yet seen this item, you"] = "還沒出現過這個物品"
RecipeRadar_Strings["will be disconnected!"] = "妳將有可能斷線!"
RecipeRadar_Strings["No recipes for sale in this region."] = "這地區沒有配方可買"
RecipeRadar_Strings["Shift-click a vendor to add or remove her location on the world map."] = "Shift-click 一個商人來加入或移除在世界地圖的標示."
RecipeRadar_Strings["Locate Vendor on Map"] = "在地圖上標示商人"
RecipeRadar_Strings["Neutral"] = "中立"
RecipeRadar_Strings["Factions"] = "聲望"
RecipeRadar_Strings["Alchemy"] = "煉金術"
RecipeRadar_Strings["Blacksmithing"] = "鍛造"
RecipeRadar_Strings["Cooking"] = "烹飪"
RecipeRadar_Strings["Enchanting"] = "附魔"
RecipeRadar_Strings["Engineering"] = "工程學"
RecipeRadar_Strings["First Aid"] = "急救"
RecipeRadar_Strings["Fishing"] = "釣魚"
RecipeRadar_Strings["Jewelcrafting"] = "珠寶設計"
RecipeRadar_Strings["Leatherworking"] = "製皮"
RecipeRadar_Strings["Tailoring"] = "裁縫"
RecipeRadar_Strings["Professions"] = "專業技能"
RecipeRadar_Strings["Already Known (Alts)"] = "已學會 (分身)"
RecipeRadar_Strings["Already Known (Player)"] = "已學會 (玩家)"
RecipeRadar_Strings["Available Now (Alts)"] = "現在可學 (分身)"
RecipeRadar_Strings["Available Now (Player)"] = "現在可學 (玩家)"
RecipeRadar_Strings["Future Prospect (Alts)"] = "以後可學 (分身)"
RecipeRadar_Strings["Future Prospect (Player)"] = "以後可學 (玩家)"
RecipeRadar_Strings["Inapplicable"] = "無法學習"
RecipeRadar_Strings["Availability"] = "可獲得性"
RecipeRadar_Strings["Already Known By:"] = "已知:"
RecipeRadar_Strings["Future Prospect For:"] = "以後可學會:"
RecipeRadar_Strings["Available For:"] = "可學:"
RecipeRadar_Strings["Quest"] = "任務"
RecipeRadar_Strings["Roving"] = "漫遊"
RecipeRadar_Strings["Seasonal"] = "季節性"
RecipeRadar_Strings["%s Vendor"] = "%s 商人"
RecipeRadar_Strings["Ashtongue Deathsworn"] = "灰舌死亡誓言者"
RecipeRadar_Strings["Cenarion Circle"] = "塞納里奧議會"
RecipeRadar_Strings["Cenarion Expedition"] = "塞納里奧遠征隊"
RecipeRadar_Strings["Honor Hold"] = "榮譽堡"
RecipeRadar_Strings["Keepers of Time"] = "時光守衛者"
RecipeRadar_Strings["Kurenai"] = "卡爾奈"
RecipeRadar_Strings["Lower City"] = "陰鬱城"
RecipeRadar_Strings["Netherwing"] = "虛空之翼"
RecipeRadar_Strings["Shattered Sun Offensive"] = "破碎之日進攻部隊"
RecipeRadar_Strings["Sporeggar"] = "斯博格爾"
RecipeRadar_Strings["The Aldor"] = "奧多爾"
RecipeRadar_Strings["The Consortium"] = "聯合團"
RecipeRadar_Strings["The Mag'har"] = "瑪格哈"
RecipeRadar_Strings["The Scale of the Sands"] = "流沙之鱗"
RecipeRadar_Strings["The Scryers"] = "占卜者"
RecipeRadar_Strings["The Sha'tar"] = "薩塔"
RecipeRadar_Strings["The Violet Eye"] = "紫羅蘭之眼"
RecipeRadar_Strings["Thorium Brotherhood"] = "瑟銀兄弟會"
RecipeRadar_Strings["Thrallmar"] = "索爾瑪"
RecipeRadar_Strings["Timbermaw Hold"] = "木喉要塞"
RecipeRadar_Strings["Zandalar Tribe"] = "贊達拉部族"
RecipeRadar_Strings["Argent Dawn"] = "銀色黎明"
RecipeRadar_Strings["Rogue"] = "盜賊"
RecipeRadar_Strings["Special"] = "特殊"
RecipeRadar_Strings["Collapse"] = "折疊"
RecipeRadar_Strings["Collapse All"] = "折疊全部"
RecipeRadar_Strings["Expand"] = "展開"
RecipeRadar_Strings["Expand All"] = "展開全部"
RecipeRadar_Strings["Armorsmith"] = "護甲鍛造師"
RecipeRadar_Strings["Dragonscale Leatherworking"] = "龍鱗製皮"
RecipeRadar_Strings["Elemental Leatherworking"] = "元素製皮"
RecipeRadar_Strings["Goblin Engineer"] = "哥布林工程師"
RecipeRadar_Strings["Master Axesmith"] = "鑄斧大師"
RecipeRadar_Strings["Master Hammersmith"] = "鑄鎚大師"
RecipeRadar_Strings["Master Swordsmith"] = "鑄劍大師"
RecipeRadar_Strings["Mooncloth Tailoring"] = "月系裁縫"
RecipeRadar_Strings["Shadoweave Tailoring"] = "暗紋裁縫"
RecipeRadar_Strings["Spellfire Tailoring"] = "魔焰裁縫"
RecipeRadar_Strings["Tribal Leatherworking"] = "部族製皮"
RecipeRadar_Strings["Weaponsmith"] = "武器鑄造"
RecipeRadar_Strings["Gnomish Engineer"] = "地精工程"
RecipeRadar_Strings["Eastern Kingdoms"] = "東部王國"
RecipeRadar_Strings["Instances"] = "副本"
RecipeRadar_Strings["Kalimdor"] = "卡林多"
 
RecipeRadar_Strings["Alterac Mountains"] = "奧特蘭克山脈"
RecipeRadar_Strings["Arathi Highlands"] = "阿拉希高地"
RecipeRadar_Strings["Ashenvale"] = "梣谷"
RecipeRadar_Strings["Azshara"] = "艾薩拉"
RecipeRadar_Strings["Azuremyst Isle"] = "藍謎島"
RecipeRadar_Strings["Badlands"] = "荒蕪之地"
RecipeRadar_Strings["Blackrock Depths"] = "黑石深淵"
RecipeRadar_Strings["Blade's Edge Mountains"] = "劍刃山脈"
RecipeRadar_Strings["Blasted Lands"] = "詛咒之地"
RecipeRadar_Strings["Bloodmyst Isle"] = "血謎島"
RecipeRadar_Strings["Burning Steppes"] = "燃燒平原"
RecipeRadar_Strings["Darkshore"] = "黑海岸"
RecipeRadar_Strings["Darnassus"] = "達納蘇斯"
RecipeRadar_Strings["Deadwind Pass"] = "逆風小徑"
RecipeRadar_Strings["Desolace"] = "淒涼之地"
RecipeRadar_Strings["Dire Maul"] = "厄運之槌"
RecipeRadar_Strings["Dun Morogh"] = "丹莫洛"
RecipeRadar_Strings["Durotar"] = "杜洛塔"
RecipeRadar_Strings["Duskwood"] = "暮色森林"
RecipeRadar_Strings["Dustwallow Marsh"] = "塵泥沼澤"
RecipeRadar_Strings["Eastern Plaguelands"] = "東瘟疫之地"
RecipeRadar_Strings["Elwynn Forest"] = "艾爾文森林"
RecipeRadar_Strings["Eversong Woods"] = "永歌森林"
RecipeRadar_Strings["Felwood"] = "費伍德森林"
RecipeRadar_Strings["Feralas"] = "菲拉斯"
RecipeRadar_Strings["Ghostlands"] = "鬼魂之地"
RecipeRadar_Strings["Gnomeregan"] = "諾姆瑞根"
RecipeRadar_Strings["Hellfire Peninsula"] = "地獄火半島"
RecipeRadar_Strings["Hillsbrad Foothills"] = "希爾斯布萊德丘陵"
RecipeRadar_Strings["Ironforge"] = "鐵爐堡"
RecipeRadar_Strings["Karazhan"] = "卡拉贊"
RecipeRadar_Strings["Loch Modan"] = "洛克莫丹"
RecipeRadar_Strings["Moonglade"] = "月光林地"
RecipeRadar_Strings["Mulgore"] = "莫高雷"
RecipeRadar_Strings["Nagrand"] = "納葛蘭"
RecipeRadar_Strings["Naxxramas"] = "納克薩瑪斯"
RecipeRadar_Strings["Netherstorm"] = "虛空風暴"
RecipeRadar_Strings["Old Hillsbrad Foothills"] = "希爾斯布萊德丘陵舊址"
RecipeRadar_Strings["Orgrimmar"] = "奧格瑪"
RecipeRadar_Strings["Redridge Mountains"] = "赤脊山"
RecipeRadar_Strings["Ruins of Ahn'Qiraj"] = "安其拉廢墟"
RecipeRadar_Strings["Searing Gorge"] = "灼熱峽谷"
RecipeRadar_Strings["Shadowmoon Valley"] = "影月谷"
RecipeRadar_Strings["Shattrath City"] = "撒塔斯城"
RecipeRadar_Strings["Silithus"] = "希利蘇斯"
RecipeRadar_Strings["Silvermoon City"] = "銀月城"
RecipeRadar_Strings["Silverpine Forest"] = "銀松森林"
RecipeRadar_Strings["Stonetalon Mountains"] = "石爪山脈"
RecipeRadar_Strings["Stormwind City"] = "暴風城"
RecipeRadar_Strings["Stranglethorn Vale"] = "荊棘谷"
RecipeRadar_Strings["Swamp of Sorrows"] = "悲傷沼澤"
RecipeRadar_Strings["Tanaris"] = "塔納利斯"
RecipeRadar_Strings["Teldrassil"] = "泰達希爾"
RecipeRadar_Strings["Terokkar Forest"] = "泰洛卡森林"
RecipeRadar_Strings["The Barrens"] = "貧瘠之地"
RecipeRadar_Strings["The Exodar"] = "艾克索達"
RecipeRadar_Strings["The Hinterlands"] = "辛特蘭"
RecipeRadar_Strings["Thousand Needles"] = "千針石林"
RecipeRadar_Strings["Thunder Bluff"] = "雷霆崖"
RecipeRadar_Strings["Tirisfal Glades"] = "提裡斯法林地"
RecipeRadar_Strings["Undercity"] = "幽暗城"
RecipeRadar_Strings["Un'Goro Crater"] = "安戈洛環形山"
RecipeRadar_Strings["Wailing Caverns"] = "哀嚎洞穴"
RecipeRadar_Strings["Western Plaguelands"] = "西瘟疫之地"
RecipeRadar_Strings["Westfall"] = "西部荒野"
RecipeRadar_Strings["Wetlands"] = "濕地"
RecipeRadar_Strings["Winterspring"] = "冬泉谷"
RecipeRadar_Strings["Zangarmarsh"] = "贊格沼澤"
 
RecipeRadar_Strings["\"Cookie\" McWeaksauce"] = "『小廚』麥克威醬"
RecipeRadar_Strings["Aaron Hollman"] = "艾朗·赫曼"
RecipeRadar_Strings["Abigail Shiel"] = "阿比蓋爾·沙伊爾"
RecipeRadar_Strings["Aendel Windspear"] = "安迪爾·風矛"
RecipeRadar_Strings["Aged Dalaran Wizard"] = "年邁的達拉然法師"
RecipeRadar_Strings["Alchemist Gribble"] = "鍊金師古利伯"
RecipeRadar_Strings["Alchemist Pestlezugg"] = "煉金師匹斯特蘇格"
RecipeRadar_Strings["Aldraan"] = "阿爾德蘭"
RecipeRadar_Strings["Alexandra Bolero"] = "亞歷山卓·波利羅"
RecipeRadar_Strings["Algernon"] = "奧格諾恩"
RecipeRadar_Strings["Almaador"] = "阿拉瑪多爾"
RecipeRadar_Strings["Altaa"] = "艾歐塔"
RecipeRadar_Strings["Alurmi"] = "阿勒米"
RecipeRadar_Strings["Amy Davenport"] = "艾米·達文波特"
RecipeRadar_Strings["Andormu"] = "安杜姆"
RecipeRadar_Strings["Andrew Hilbert"] = "安德魯·希爾伯特"
RecipeRadar_Strings["Andrion Darkspinner"] = "安德利恩·暗紋紡織者"
RecipeRadar_Strings["Androd Fadran"] = "安多德·法德蘭"
RecipeRadar_Strings["Apothecary Antonivich"] = "藥劑師安拓維奇"
RecipeRadar_Strings["Apprentice Darius"] = "學徒達瑞爾斯"
RecipeRadar_Strings["Aresella"] = "艾瑞斯拉"
RecipeRadar_Strings["Argent Quartermaster Hasana"] = "銀色黎明軍需官哈薩娜"
RecipeRadar_Strings["Argent Quartermaster Lightspark"] = "銀色黎明軍需官萊斯巴克"
RecipeRadar_Strings["Arras"] = "阿拉斯"
RecipeRadar_Strings["Arred"] = "阿瑞德"
RecipeRadar_Strings["Arrond"] = "阿羅德"
RecipeRadar_Strings["Asarnan"] = "阿薩南"
RecipeRadar_Strings["Balai Lok'Wein"] = "巴萊·洛克維"
RecipeRadar_Strings["Bale"] = "拜爾"
RecipeRadar_Strings["Banalash"] = "巴納拉許"
RecipeRadar_Strings["Baxter"] = "拜斯特"
RecipeRadar_Strings["Blimo Gadgetspring"] = "布里莫"
RecipeRadar_Strings["Blixrez Goodstitch"] = "布里克雷茲·古斯提"
RecipeRadar_Strings["Blizrik Buckshot"] = "布雷茲里克·巴克舒特"
RecipeRadar_Strings["Bliztik"] = "布里茲提克"
RecipeRadar_Strings["Bombus Finespindle"] = "伯布斯·鋼軸"
RecipeRadar_Strings["Borto"] = "波爾土"
RecipeRadar_Strings["Borya"] = "博亞"
RecipeRadar_Strings["Brienna Starglow"] = "布琳娜·星光"
RecipeRadar_Strings["Bro'kin"] = "布洛金"
RecipeRadar_Strings["Bronk"] = "布隆克"
RecipeRadar_Strings["Burbik Gearspanner"] = "巴比克·齒輪"
RecipeRadar_Strings["Burko"] = "波爾寇"
RecipeRadar_Strings["Captured Gnome"] = "捕獲的地精"
RecipeRadar_Strings["Catherine Leland"] = "凱薩琳·利蘭"
RecipeRadar_Strings["Christoph Jeffcoat"] = "克里斯多夫·傑弗寇特"
RecipeRadar_Strings["Clyde Ranthal"] = "克萊德·蘭薩爾"
RecipeRadar_Strings["Constance Brisboise"] = "康斯坦茨·布里斯博埃斯"
RecipeRadar_Strings["Cookie One-Eye"] = "獨眼廚師"
RecipeRadar_Strings["Coreiel"] = "寇瑞歐"
RecipeRadar_Strings["Corporal Bluth"] = "布魯斯下士"
RecipeRadar_Strings["Cowardly Crosby"] = "怯懦的克羅斯比"
RecipeRadar_Strings["Crazk Sparks"] = "克拉賽·斯巴克斯"
RecipeRadar_Strings["Cro Threadstrong"] = "克洛·絲壯"
RecipeRadar_Strings["Daga Ramba"] = "達卡·萊芭"
RecipeRadar_Strings["Daggle Ironshaper"] = "達茍·煉鐵者"
RecipeRadar_Strings["Dalria"] = "達利亞"
RecipeRadar_Strings["Daniel Bartlett"] = "丹尼爾·巴特萊特"
RecipeRadar_Strings["Danielle Zipstitch"] = "丹尼勒·希普斯迪"
RecipeRadar_Strings["Darian Singh"] = "達利安·辛格"
RecipeRadar_Strings["Darnall"] = "旅店老闆達納爾"
RecipeRadar_Strings["Dealer Malij"] = "商人瑪力吉"
RecipeRadar_Strings["Defias Profiteer"] = "迪菲亞奸商"
RecipeRadar_Strings["Deneb Walker"] = "德尼布·沃克"
RecipeRadar_Strings["Derak Nightfall"] = "德拉克·奈特弗"
RecipeRadar_Strings["Deynna"] = "笛娜"
RecipeRadar_Strings["Dirge Quikcleave"] = "迪爾格·奎克里弗"
RecipeRadar_Strings["Doba"] = "杜巴"
RecipeRadar_Strings["Drac Roughcut"] = "德拉克·卷刃"
RecipeRadar_Strings["Drake Lindgren"] = "崔克·林格雷"
RecipeRadar_Strings["Drovnar Strongbrew"] = "德魯納·烈酒"
RecipeRadar_Strings["Edna Mullby"] = "艾德娜·穆比"
RecipeRadar_Strings["Eebee Jinglepocket"] = "伊比·響囊"
RecipeRadar_Strings["Egomis"] = "伊歐糜斯"
RecipeRadar_Strings["Eiin"] = "伊恩"
RecipeRadar_Strings["Eldara Dawnrunner"] = "艾達拉·晨路"
RecipeRadar_Strings["Elynna"] = "愛琳娜"
RecipeRadar_Strings["Emrul Riknussun"] = "埃姆盧爾·里克努斯"
RecipeRadar_Strings["Eriden"] = "艾利丹"
RecipeRadar_Strings["Erika Tate"] = "艾瑞卡·塔特"
RecipeRadar_Strings["Erilia"] = "艾瑞麗雅"
RecipeRadar_Strings["Evie Whirlbrew"] = "埃文·維布魯"
RecipeRadar_Strings["Fazu"] = "法蘇"
RecipeRadar_Strings["Fedryen Swiftspear"] = "費德萊恩·迅矛"
RecipeRadar_Strings["Feera"] = "菲娜"
RecipeRadar_Strings["Felannia"] = "菲蘭妮雅"
RecipeRadar_Strings["Felicia Doan"] = "菲利希亞·杜安"
RecipeRadar_Strings["Felika"] = "菲利卡"
RecipeRadar_Strings["Fradd Swiftgear"] = "弗拉德"
RecipeRadar_Strings["Fyldan"] = "菲爾丹"
RecipeRadar_Strings["Gagsprocket"] = "加格斯普吉特"
RecipeRadar_Strings["Galley Chief Alunwea"] = "船艙長艾魯威"
RecipeRadar_Strings["Galley Chief Gathers"] = "船艙長賈德斯"
RecipeRadar_Strings["Galley Chief Grace"] = "船艙長葛蕾絲"
RecipeRadar_Strings["Galley Chief Halumvorea"] = "船艙長哈倫寶利"
RecipeRadar_Strings["Galley Chief Mariss"] = "船艙長馬里斯"
RecipeRadar_Strings["Gambarinka"] = "坎巴利卡"
RecipeRadar_Strings["Gaston"] = "凱斯頓"
RecipeRadar_Strings["Gearcutter Cogspinner"] = "考格斯賓"
RecipeRadar_Strings["Gelanthis"] = "吉藍迪斯"
RecipeRadar_Strings["George Candarte"] = "喬治·坎達特"
RecipeRadar_Strings["Gharash"] = "卡爾拉什"
RecipeRadar_Strings["Ghok'kah"] = "格魯克卡恩"
RecipeRadar_Strings["Gidge Spellweaver"] = "蓋吉·術法編織者"
RecipeRadar_Strings["Gikkix"] = "吉科希斯"
RecipeRadar_Strings["Gina MacGregor"] = "吉娜·馬克葛瑞格"
RecipeRadar_Strings["Gloria Femmel"] = "格勞瑞亞·菲米爾"
RecipeRadar_Strings["Glyx Brewright"] = "格里克斯·布魯維特"
RecipeRadar_Strings["Gnaz Blunderflame"] = "格納茲·槍焰"
RecipeRadar_Strings["Gretta Ganter"] = "格雷塔·甘特"
RecipeRadar_Strings["Grimtak"] = "格瑞姆塔克"
RecipeRadar_Strings["Haalrun"] = "哈爾隆恩"
RecipeRadar_Strings["Haferet"] = "哈弗瑞"
RecipeRadar_Strings["Hagrus"] = "哈格魯斯"
RecipeRadar_Strings["Hammon Karwn"] = "哈蒙·卡文"
RecipeRadar_Strings["Harggan"] = "哈爾甘"
RecipeRadar_Strings["Harklan Moongrove"] = "哈克蘭·月林"
RecipeRadar_Strings["Harlon Thornguard"] = "哈隆·棘甲"
RecipeRadar_Strings["Harn Longcast"] = "哈恩·長線"
RecipeRadar_Strings["Haughty Modiste"] = "傲慢的店主"
RecipeRadar_Strings["Heldan Galesong"] = "海爾丹·風歌"
RecipeRadar_Strings["Helenia Olden"] = "海倫妮亞·奧德恩"
RecipeRadar_Strings["Himmik"] = "西米克"
RecipeRadar_Strings["Hula'mahi"] = "哈拉瑪"
RecipeRadar_Strings["Indormi"] = "隱多米"
RecipeRadar_Strings["Innkeeper Biribi"] = "旅店老闆畢瑞比"
RecipeRadar_Strings["Innkeeper Fizzgrimble"] = "旅店老闆菲茲格瑞博"
RecipeRadar_Strings["Innkeeper Grilka"] = "旅店老闆格瑞伊卡"
RecipeRadar_Strings["Jabbey"] = "加貝"
RecipeRadar_Strings["Jandia"] = "詹迪亞"
RecipeRadar_Strings["Janet Hommers"] = "詹奈特·霍莫斯"
RecipeRadar_Strings["Jangdor Swiftstrider"] = "杉多爾·迅蹄"
RecipeRadar_Strings["Jannos Ironwill"] = "加諾斯·鐵心"
RecipeRadar_Strings["Jaquilina Dramet"] = "加奎琳娜·德拉米特"
RecipeRadar_Strings["Jase Farlane"] = "賈斯·法拉恩"
RecipeRadar_Strings["Jazzrik"] = "加茲里克"
RecipeRadar_Strings["Jeeda"] = "基達"
RecipeRadar_Strings["Jennabink Powerseam"] = "吉娜比克·鐵線"
RecipeRadar_Strings["Jessara Cordell"] = "傑薩拉·考迪爾"
RecipeRadar_Strings["Jim Saltit"] = "吉姆·沙提"
RecipeRadar_Strings["Jinky Twizzlefixxit"] = "金克·鐵鉤"
RecipeRadar_Strings["Johan Barnes"] = "裘汗·巴奈斯"
RecipeRadar_Strings["Joseph Moore"] = "約瑟夫·摩爾"
RecipeRadar_Strings["Jubie Gadgetspring"] = "朱比"
RecipeRadar_Strings["Jun'ha"] = "祖恩哈"
RecipeRadar_Strings["Juno Dufrain"] = "喬諾·杜伏恩"
RecipeRadar_Strings["Jutak"] = "祖塔克"
RecipeRadar_Strings["Kaita Deepforge"] = "凱塔·深爐"
RecipeRadar_Strings["Kalaen"] = "卡連恩"
RecipeRadar_Strings["Kalldan Felmoon"] = "卡爾丹·暗月"
RecipeRadar_Strings["Kania"] = "卡妮亞"
RecipeRadar_Strings["Karaaz"] = "卡瑞阿斯"
RecipeRadar_Strings["Keena"] = "基納"
RecipeRadar_Strings["Kelsey Yance"] = "凱爾希·楊斯"
RecipeRadar_Strings["Kendor Kabonka"] = "肯多爾·卡邦卡"
RecipeRadar_Strings["Khara Deepwater"] = "卡拉·深水"
RecipeRadar_Strings["Khole Jinglepocket"] = "霍勒"
RecipeRadar_Strings["Kiknikle"] = "吉克尼庫"
RecipeRadar_Strings["Killian Sanatha"] = "基利恩·薩納森"
RecipeRadar_Strings["Kilxx"] = "基爾克斯"
RecipeRadar_Strings["Kireena"] = "基瑞娜"
RecipeRadar_Strings["Kithas"] = "基薩斯"
RecipeRadar_Strings["Knaz Blunderflame"] = "克納茲·槍焰"
RecipeRadar_Strings["Koren"] = "卡爾侖"
RecipeRadar_Strings["Kor'geld"] = "考吉爾德"
RecipeRadar_Strings["Krek Cragcrush"] = "克瑞克·碎岩"
RecipeRadar_Strings["Kriggon Talsone"] = "克雷貢·塔爾松"
RecipeRadar_Strings["Krinkle Goodsteel"] = "克林科·古德斯迪爾"
RecipeRadar_Strings["Kulwia"] = "庫爾維亞"
RecipeRadar_Strings["Kzixx"] = "卡茲克斯"
RecipeRadar_Strings["Laird"] = "賴爾德"
RecipeRadar_Strings["Landraelanis"] = "藍卓阿蘭妮絲"
RecipeRadar_Strings["Lardan"] = "拉爾丹"
RecipeRadar_Strings["Lebowski"] = "樂柏斯基"
RecipeRadar_Strings["Leeli Longhaggle"] = "莉利·長爭"
RecipeRadar_Strings["Leonard Porter"] = "萊納德·波特"
RecipeRadar_Strings["Lieutenant General Andorov"] = "安多洛夫中將"
RecipeRadar_Strings["Lilly"] = "莉蕾"
RecipeRadar_Strings["Lindea Rabonne"] = "林迪·拉波尼"
RecipeRadar_Strings["Lizbeth Cromwell"] = "莉茲白·克倫威爾"
RecipeRadar_Strings["Logannas"] = "洛加納斯"
RecipeRadar_Strings["Logistics Officer Ulrike"] = "物流幹部烏賴克"
RecipeRadar_Strings["Lokhtos Darkbargainer"] = "羅克圖斯·暗契"
RecipeRadar_Strings["Loolruna"] = "路歐露娜"
RecipeRadar_Strings["Lorelae Wintersong"] = "羅賴爾·冬歌"
RecipeRadar_Strings["Lucan Cordell"] = "魯坎·考迪爾"
RecipeRadar_Strings["Lyna"] = "萊娜"
RecipeRadar_Strings["Madame Ruby"] = "魯比夫人"
RecipeRadar_Strings["Magnus Frostwake"] = "瑪格努斯·霜鳴"
RecipeRadar_Strings["Mahu"] = "曼胡"
RecipeRadar_Strings["Mallen Swain"] = "瑪林·斯萬"
RecipeRadar_Strings["Malygen"] = "瑪里甘"
RecipeRadar_Strings["Mari Stonehand"] = "瑪利·石手"
RecipeRadar_Strings["Maria Lumere"] = "瑪麗亞·盧米爾"
RecipeRadar_Strings["Martine Tramblay"] = "馬丁·塔布雷"
RecipeRadar_Strings["Masat T'andr"] = "馬薩特·坦德"
RecipeRadar_Strings["Master Chef Mouldier"] = "大廚師瑪戴爾"
RecipeRadar_Strings["Master Craftsman Omarion"] = "工匠大師歐瑪利安"
RecipeRadar_Strings["Mathar G'ochar"] = "瑪沙爾·葛歐洽"
RecipeRadar_Strings["Mavralyn"] = "馬弗拉林"
RecipeRadar_Strings["Mazk Snipeshot"] = "瑪茲克·斯奈普沙特"
RecipeRadar_Strings["Meilosh"] = "梅羅什"
RecipeRadar_Strings["Melaris"] = "米拉瑞斯"
RecipeRadar_Strings["Micha Yance"] = "米莎·楊斯"
RecipeRadar_Strings["Millie Gregorian"] = "米利爾·格里高利"
RecipeRadar_Strings["Mishta"] = "米希塔"
RecipeRadar_Strings["Mixie Farshot"] = "扎米·費雪"
RecipeRadar_Strings["Montarr"] = "莫塔爾"
RecipeRadar_Strings["Muheru the Weaver"] = "『編織者』姆賀魯"
RecipeRadar_Strings["Muuran"] = "莫爾蘭"
RecipeRadar_Strings["Mycah"] = "麥卡"
RecipeRadar_Strings["Mythrin'dir"] = "邁斯林迪爾"
RecipeRadar_Strings["Naal Mistrunner"] = "納爾·迷霧行者"
RecipeRadar_Strings["Naka"] = "那卡"
RecipeRadar_Strings["Nakodu"] = "納克杜"
RecipeRadar_Strings["Namdo Bizzfizzle"] = "納姆杜"
RecipeRadar_Strings["Nandar Branson"] = "南達·布拉森"
RecipeRadar_Strings["Narj Deepslice"] = "納爾基·長刀"
RecipeRadar_Strings["Narkk"] = "納爾克"
RecipeRadar_Strings["Nasmara Moonsong"] = "那斯馬拉·月歌"
RecipeRadar_Strings["Nata Dawnstrider"] = "納塔·黎明行者"
RecipeRadar_Strings["Neal Allen"] = "尼爾·奧雷"
RecipeRadar_Strings["Neii"] = "奈伊"
RecipeRadar_Strings["Nergal"] = "奈爾加"
RecipeRadar_Strings["Nerrist"] = "耐里斯特"
RecipeRadar_Strings["Nessa Shadowsong"] = "奈莎·影歌"
RecipeRadar_Strings["Nina Lightbrew"] = "妮娜·萊特布魯"
RecipeRadar_Strings["Nioma"] = "尼奧瑪"
RecipeRadar_Strings["Nula the Butcher"] = "屠夫奴拉"
RecipeRadar_Strings["Nyoma"] = "奈歐瑪"
RecipeRadar_Strings["Ogg'marr"] = "奧克瑪爾"
RecipeRadar_Strings["Okuno"] = "歐庫諾"
RecipeRadar_Strings["Old Man Heming"] = "老人海明威"
RecipeRadar_Strings["Ontuvo"] = "昂圖沃"
RecipeRadar_Strings["Otho Moji'ko"] = "奧索·莫吉克"
RecipeRadar_Strings["Outfitter Eric"] = "埃瑞克"
RecipeRadar_Strings["Paulsta'ats"] = "波斯塔茲"
RecipeRadar_Strings["Phea"] = "菲亞"
RecipeRadar_Strings["Plugger Spazzring"] = "普拉格"
RecipeRadar_Strings["Pratt McGrubben"] = "普拉特·馬克格魯比"
RecipeRadar_Strings["Provisioner Nasela"] = "糧食供應者奈斯拉"
RecipeRadar_Strings["Qia"] = "琦亞"
RecipeRadar_Strings["Quartermaster Davian Vaclav"] = "軍需官戴夫恩·瓦克拉夫"
RecipeRadar_Strings["Quartermaster Endarin"] = "軍需官伊恩達瑞"
RecipeRadar_Strings["Quartermaster Enuril"] = "軍需官伊奴瑞歐"
RecipeRadar_Strings["Quartermaster Jaffrey Noreliqe"] = "軍需官傑夫利·諾利克"
RecipeRadar_Strings["Quartermaster Miranda Breechlock"] = "軍需官米蘭達·布利洛克"
RecipeRadar_Strings["Quartermaster Urgronn"] = "軍需官優爾古隆"
RecipeRadar_Strings["Quelis"] = "奎利斯"
RecipeRadar_Strings["Ranik"] = "拉尼克"
RecipeRadar_Strings["Rann Flamespinner"] = "拉恩·火翼"
RecipeRadar_Strings["Rartar"] = "拉爾塔"
RecipeRadar_Strings["Rathis Tomber"] = "拉提斯·土柏"
RecipeRadar_Strings["Rikqiz"] = "雷克奇茲"
RecipeRadar_Strings["Rin'wosho the Trader"] = "商人林沃斯"
RecipeRadar_Strings["Rizz Loosebolt"] = "里茲·飛矢"
RecipeRadar_Strings["Rohok"] = "洛赫克"
RecipeRadar_Strings["Ronald Burch"] = "羅奈爾得·伯奇"
RecipeRadar_Strings["Rungor"] = "阮勾爾"
RecipeRadar_Strings["Saenorion"] = "塞諾里奧"
RecipeRadar_Strings["Sassa Weldwell"] = "莎紗·威德衛爾"
RecipeRadar_Strings["Seer Janidi"] = "先知賈尼迪"
RecipeRadar_Strings["Sewa Mistrunner"] = "蘇瓦·迷霧行者"
RecipeRadar_Strings["Shaani"] = "夏尼"
RecipeRadar_Strings["Shadi Mistrunner"] = "沙迪·迷霧行者"
RecipeRadar_Strings["Shandrina"] = "珊蒂瑞亞"
RecipeRadar_Strings["Shankys"] = "山吉斯"
RecipeRadar_Strings["Sheendra Tallgrass"] = "希恩德拉·深草"
RecipeRadar_Strings["Shen'dralar Provisioner"] = "辛德拉聖職者"
RecipeRadar_Strings["Sheri Zipstitch"] = "舍瑞·希普斯迪"
RecipeRadar_Strings["Sid Limbardi"] = "希德·琳巴迪"
RecipeRadar_Strings["Skreah"] = "史卡瑞"
RecipeRadar_Strings["Smudge Thunderwood"] = "斯穆德·雷木"
RecipeRadar_Strings["Soolie Berryfizz"] = "蘇雷·漿泡"
RecipeRadar_Strings["Sovik"] = "索維克"
RecipeRadar_Strings["Stuart Fleming"] = "斯圖亞特·弗雷明"
RecipeRadar_Strings["Sumi"] = "蘇米"
RecipeRadar_Strings["Super-Seller 680"] = "超級商人680型"
RecipeRadar_Strings["Supply Officer Mills"] = "物資商人米歐斯"
RecipeRadar_Strings["Tamar"] = "達瑪爾"
RecipeRadar_Strings["Tansy Puddlefizz"] = "坦斯·泥泡"
RecipeRadar_Strings["Tarban Hearthgrain"] = "塔班·熟麥"
RecipeRadar_Strings["Tari'qa"] = "塔里查"
RecipeRadar_Strings["Tatiana"] = "塔蒂安娜"
RecipeRadar_Strings["Thaddeus Webb"] = "薩德烏斯·韋伯"
RecipeRadar_Strings["Tharynn Bouden"] = "薩瑞恩·博丁"
RecipeRadar_Strings["Thomas Yance"] = "湯瑪斯·陽斯"
RecipeRadar_Strings["Tilli Thistlefuzz"] = "提爾利·草鬚"
RecipeRadar_Strings["Trader Narasu"] = "商人娜拉蘇"
RecipeRadar_Strings["Truk Wildbeard"] = "特魯克·蠻鬃"
RecipeRadar_Strings["Tunkk"] = "吞克"
RecipeRadar_Strings["Ulthaan"] = "尤薩恩"
RecipeRadar_Strings["Ulthir"] = "尤希爾"
RecipeRadar_Strings["Uriku"] = "烏銳庫"
RecipeRadar_Strings["Uthok"] = "尤索克"
RecipeRadar_Strings["Vaean"] = "維安"
RecipeRadar_Strings["Valdaron"] = "瓦爾達隆"
RecipeRadar_Strings["Vargus"] = "瓦古斯"
RecipeRadar_Strings["Veenix"] = "維尼克斯"
RecipeRadar_Strings["Vendor-Tron 1000"] = "貿易機器人1000型"
RecipeRadar_Strings["Vharr"] = "維哈爾"
RecipeRadar_Strings["Viggz Shinesparked"] = "維格斯·亮星"
RecipeRadar_Strings["Vivianna"] = "薇薇安娜"
RecipeRadar_Strings["Vizzklick"] = "維茲格里克"
RecipeRadar_Strings["Vodesiin"] = "伏德希恩"
RecipeRadar_Strings["Wenna Silkbeard"] = "溫納·銀鬚"
RecipeRadar_Strings["Werg Thickblade"] = "維爾格·厚刃"
RecipeRadar_Strings["Wik'Tar"] = "維克塔"
RecipeRadar_Strings["Wind Trader Lathrai"] = "風之貿易者拉斯蕊"
RecipeRadar_Strings["Wolgren Jinglepocket"] = "沃格蘭·響囊"
RecipeRadar_Strings["Worb Strongstitch"] = "沃爾布"
RecipeRadar_Strings["Wrahk"] = "瓦爾克"
RecipeRadar_Strings["Wulan"] = "烏蘭"
RecipeRadar_Strings["Wulmort Jinglepocket"] = "烏爾莫特"
RecipeRadar_Strings["Wunna Darkmane"] = "溫納·黑鬃"
RecipeRadar_Strings["Xandar Goodbeard"] = "山達·細鬚"
RecipeRadar_Strings["Xen'to"] = "克森圖"
RecipeRadar_Strings["Xerintha Ravenoak"] = "希瑞莎·鴉橡"
RecipeRadar_Strings["Xizk Goodstitch"] = "希茲克·古斯提"
RecipeRadar_Strings["Xizzer Fizzbolt"] = "希茲爾·菲茲波特"
RecipeRadar_Strings["Yatheon"] = "亞斯恩"
RecipeRadar_Strings["Yonada"] = "猶納達"
RecipeRadar_Strings["Ythyar"] = "伊斯亞爾"
RecipeRadar_Strings["Yuka Screwspigot"] = "尤卡·斯庫比格特"
RecipeRadar_Strings["Yurial Soulwater"] = "優立歐·靈魂之水"
RecipeRadar_Strings["Zan Shivsproket"] = "薩恩·刀鏈"
RecipeRadar_Strings["Zannok Hidepiercer"] = "札諾克"
RecipeRadar_Strings["Zansoa"] = "詹蘇爾"
RecipeRadar_Strings["Zaralda"] = "莎拉達"
RecipeRadar_Strings["Zarena Cromwind"] = "薩瑞娜·克羅姆溫德"
RecipeRadar_Strings["Zargh"] = "札爾夫"
RecipeRadar_Strings["Zixil"] = "吉克希爾"
RecipeRadar_Strings["Zorbin Fandazzle"] = "索爾賓·范達瑟"
RecipeRadar_Strings["Zurai"] = "祖瑞伊"
 
end
 
trunk/RecipeRadar/README.txt New file
0,0 → 1,68
 
Recipe Radar
 
(by Jay Miller [jnmiller@cryptofreak.org])
 
http://www.cryptofreak.org/projects/reciperadar
 
$Id: README.txt 1031 2008-03-27 05:41:46Z jnmiller $
 
 
Installation
~~~~~~~~~~~~
You've probably already installed the addon. In case you're not sure how
to do it, unzip the archive to your
 
... \World of Warcraft\Interface\AddOns
 
directory. A new directory called 'RecipeRadar' should appear, along with
several files and subdirectories. That should be all you need to do to
use Recipe Radar.
 
When you get in game, you may want to map a key to toggle Recipe Radar.
You should be able to find the option to do this in your Key Bindings menu,
all the way at the bottom. Otherwise, you can hit the new icon on your
minimap to open Recipe Radar or use the slash command, '/rrdr'.
 
 
Bugs
~~~~
If you spot a bug in this software, *please let me know!* The best way
to do so is to hit the bug tracker at
 
http://sourceforge.net/tracker/?group_id=165127
 
and leave a short report on what was happening at the time. If possible,
please include the version of Recipe Radar that caused the bug and the
language of your WoW client.
 
Also in the bugs category are misplaced vendors. The location information
for all of the vendors in the Recipe Radar database was retrieved in a
mostly automated way, so some coordinates are incorrect. If you come upon
a vendor whose mapped location does not match their actual location, please
let me know! The most helpful thing you can do is this quick process:
 
1) Target the mis-mapped vendor.
2) Move your character exactly on top of the vendor.
3) Enter the following slash command on a single line:
 
/script SetMapToCurrentZone() local x, y = GetPlayerMapPosition("player") RecipeRadar_Print(format("'%s': [%.3f, %.3f]", UnitName("target"), x, y))
 
4) Record the text you see. It should resemble this:
 
'Drac Roughcut': [0.356, 0.489]
 
5) File a bug report and include this text.
 
Thank you very much for your help!
 
 
Acknowledgements
~~~~~~~~~~~~~~~~
- I'd like to thank Nimrah for passing on Technetium's TGAtoBLP2 code.
It dropped the almost 50 maps from 343k each to 130k each!
- Esamynn is responsible for Astrolabe, a high-quality, generic mapping
addon that Recipe Radar now relies on.
 
 
Thanks for trying Recipe Radar! Enjoy!