Add files via upload

This commit is contained in:
HonkinGamer
2020-06-01 22:15:40 -04:00
committed by GitHub
parent 5d6ff4a161
commit cccf837212
32 changed files with 55367 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
--[[
Name : AtlasLootFu
Version : 1.1
Author : Daviesh (oma_daviesh@hotmail.com)
Website : http://www.atlasloot.net
Description : Adds AtlasLoot to FuBar.
]]
--Invoke libraries
local tablet = AceLibrary("Tablet-2.0");
--Define the plugin
AtlasLootFu = AceLibrary("AceAddon-2.0"):new("AceEvent-2.0", "AceDB-2.0", "FuBarPlugin-2.0");
AtlasLootFu.title = "AtlasLootFu";
AtlasLootFu.hasIcon = "Interface\\Icons\\INV_Box_01";
AtlasLootFu.defaultPosition = "LEFT";
AtlasLootFu.defaultMinimapPosition = 180;
AtlasLootFu.cannotDetachTooltip = true;
-- Activate menu options to hide icon/text (no point in having the colour option)
AtlasLootFu.hasNoColor = true;
AtlasLootFu:RegisterDB("AtlasLootFuDB");
--Make sure the plugin is the rightt format when activated
function AtlasLootFu:OnEnable()
self:Update();
end
--Define text to display when the cursor mouses over the plugin
function AtlasLootFu:OnTooltipUpdate()
local cat = tablet:AddCategory()
cat:AddLine(
"text", ATLASLOOTFU_LEFTCLICK
)
cat:AddLine(
"text", ATLASLOOTFU_SHIFTCLICK
)
cat:AddLine(
"text", ATLASLOOTFU_LEFTDRAG
)
end
--Define what to do when the plugin is clicked
function AtlasLootFu:OnClick(button)
--Left click -> open loot browser
--Shift Left Click -> show options menu
--Right click -> standard FuBar options
if IsShiftKeyDown() then
AtlasLootOptions_Toggle();
else
if AtlasLootDefaultFrame:IsVisible() then
AtlasLootDefaultFrame:Hide();
else
AtlasLootDefaultFrame:Show();
end
end
end
+24
View File
@@ -0,0 +1,24 @@
## Interface: 30300
## Title: AtlasLootFu
## Notes: Minimap button for AtlasLoot
## Title-zhTW: |r|cFF0099FF[地圖]|rAL 小地圖按鍵
## Notes-zhTW: AtlasLoot 小地圖按鍵
## Author: Hegarol
## Version: v5.11.04
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2
## X-Website: http://www.atlasloot.net
## X-Embeds: Ace2, FuBarPlugin-2.0, TabletLib
## SavedVariables: AtlasLootFuDB
## Dependencies: AtlasLoot
## OptionalDeps: Ace2, FuBarPlugin-2.0, TabletLib, FuBar
## X-Curse-Packaged-Version: v5.11.04
## X-Curse-Project-Name: Atlasloot Enhanced
## X-Curse-Project-ID: atlasloot-enhanced
## X-Curse-Repository-ID: wow/atlasloot-enhanced/mainline
embeds.xml
Locales.lua
AtlasLootFu.lua
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,17 @@
## Interface: 30300
## X-Curse-Packaged-Version: r1101
## X-Curse-Project-Name: Ace2
## X-Curse-Project-ID: ace2
## X-Curse-Repository-ID: wow/ace2/mainline
## Title: Lib: AceAddon-2.0
## Notes: AddOn development framework
## Author: Ace Development Team
## LoadOnDemand: 1
## X-Website: http://www.wowace.com
## X-Category: Library
## X-License: LGPL v2.1 + MIT for AceOO-2.0
## Dependencies: AceLibrary, AceOO-2.0
AceAddon-2.0.lua
File diff suppressed because it is too large Load Diff
+17
View File
@@ -0,0 +1,17 @@
## Interface: 30300
## X-Curse-Packaged-Version: r1101
## X-Curse-Project-Name: Ace2
## X-Curse-Project-ID: ace2
## X-Curse-Repository-ID: wow/ace2/mainline
## Title: Lib: AceDB-2.0
## Notes: AddOn development framework
## Author: Ace Development Team
## LoadOnDemand: 1
## X-Website: http://www.wowace.com
## X-Category: Library
## X-License: LGPL v2.1 + MIT for AceOO-2.0
## Dependencies: AceLibrary, AceEvent-2.0, AceOO-2.0
AceDB-2.0.lua
@@ -0,0 +1,998 @@
--[[
Name: AceEvent-2.0
Revision: $Rev: 1097 $
Developed by: The Ace Development Team (http://www.wowace.com/index.php/The_Ace_Development_Team)
Inspired By: Ace 1.x by Turan (turan@gryphon.com)
Website: http://www.wowace.com/
Documentation: http://www.wowace.com/index.php/AceEvent-2.0
SVN: http://svn.wowace.com/wowace/trunk/Ace2/AceEvent-2.0
Description: Mixin to allow for event handling, scheduling, and inter-addon
communication.
Dependencies: AceLibrary, AceOO-2.0
License: LGPL v2.1
]]
local MAJOR_VERSION = "AceEvent-2.0"
local MINOR_VERSION = 90000 + tonumber(("$Revision: 1097 $"):match("(%d+)"))
if not AceLibrary then error(MAJOR_VERSION .. " requires AceLibrary") end
if not AceLibrary:IsNewVersion(MAJOR_VERSION, MINOR_VERSION) then return end
if not AceLibrary:HasInstance("AceOO-2.0") then error(MAJOR_VERSION .. " requires AceOO-2.0") end
local AceOO = AceLibrary:GetInstance("AceOO-2.0")
local Mixin = AceOO.Mixin
local AceEvent = Mixin {
"RegisterEvent",
"RegisterAllEvents",
"UnregisterEvent",
"UnregisterAllEvents",
"TriggerEvent",
"ScheduleEvent",
"ScheduleRepeatingEvent",
"CancelScheduledEvent",
"CancelAllScheduledEvents",
"IsEventRegistered",
"IsEventScheduled",
"RegisterBucketEvent",
"UnregisterBucketEvent",
"UnregisterAllBucketEvents",
"IsBucketEventRegistered",
"ScheduleLeaveCombatAction",
"CancelAllCombatSchedules",
}
local weakKey = {__mode="k"}
local FAKE_NIL
local RATE
local eventsWhichHappenOnce = {
PLAYER_LOGIN = true,
AceEvent_FullyInitialized = true,
VARIABLES_LOADED = true,
PLAYER_LOGOUT = true,
}
local next = next
local pairs = pairs
local pcall = pcall
local type = type
local GetTime = GetTime
local gcinfo = gcinfo
local unpack = unpack
local geterrorhandler = geterrorhandler
local new, del
do
local cache = setmetatable({}, {__mode='k'})
function new(...)
local t = next(cache)
if t then
cache[t] = nil
for i = 1, select('#', ...) do
t[i] = select(i, ...)
end
return t
else
return { ... }
end
end
function del(t)
for k in pairs(t) do
t[k] = nil
end
cache[t] = true
return nil
end
end
local registeringFromAceEvent
--[[----------------------------------------------------------------------------------
Notes:
* Registers the addon with a Blizzard event or a custom AceEvent, which will cause the given method to be called when that is triggered.
Arguments:
string - name of the event to register
[optional] string or function - name of the method or function to call. Default: same name as "event".
[optional] boolean - whether to have method called only once. Default: false
------------------------------------------------------------------------------------]]
function AceEvent:RegisterEvent(event, method, once)
AceEvent:argCheck(event, 2, "string")
if self == AceEvent and not registeringFromAceEvent then
AceEvent:argCheck(method, 3, "function")
self = method
else
AceEvent:argCheck(method, 3, "string", "function", "nil", "boolean", "number")
if type(method) == "boolean" or type(method) == "number" then
AceEvent:argCheck(once, 4, "nil")
once, method = method, event
end
end
AceEvent:argCheck(once, 4, "number", "boolean", "nil")
if eventsWhichHappenOnce[event] then
once = true
end
local throttleRate
if type(once) == "number" then
throttleRate, once = once
end
if not method then
method = event
end
if type(method) == "string" and type(self[method]) ~= "function" then
AceEvent:error("Cannot register event %q to method %q, it does not exist", event, method)
else
assert(type(method) == "function" or type(method) == "string")
end
local AceEvent_registry = AceEvent.registry
if not AceEvent_registry[event] then
AceEvent_registry[event] = new()
AceEvent.frame:RegisterEvent(event)
end
local remember = true
if AceEvent_registry[event][self] then
remember = false
end
AceEvent_registry[event][self] = method
local AceEvent_onceRegistry = AceEvent.onceRegistry
if once then
if not AceEvent_onceRegistry then
AceEvent.onceRegistry = {}
AceEvent_onceRegistry = AceEvent.onceRegistry
end
if not AceEvent_onceRegistry[event] then
AceEvent_onceRegistry[event] = new()
end
AceEvent_onceRegistry[event][self] = true
else
if AceEvent_onceRegistry and AceEvent_onceRegistry[event] then
AceEvent_onceRegistry[event][self] = nil
if not next(AceEvent_onceRegistry[event]) then
AceEvent_onceRegistry[event] = del(AceEvent_onceRegistry[event])
end
end
end
local AceEvent_throttleRegistry = AceEvent.throttleRegistry
if throttleRate then
if not AceEvent_throttleRegistry then
AceEvent.throttleRegistry = {}
AceEvent_throttleRegistry = AceEvent.throttleRegistry
end
if not AceEvent_throttleRegistry[event] then
AceEvent_throttleRegistry[event] = new()
end
if AceEvent_throttleRegistry[event][self] then
AceEvent_throttleRegistry[event][self] = nil
end
AceEvent_throttleRegistry[event][self] = setmetatable(new(), weakKey)
local t = AceEvent_throttleRegistry[event][self]
t[RATE] = throttleRate
else
if AceEvent_throttleRegistry and AceEvent_throttleRegistry[event] then
if AceEvent_throttleRegistry[event][self] then
AceEvent_throttleRegistry[event][self] = nil
end
if not next(AceEvent_throttleRegistry[event]) then
AceEvent_throttleRegistry[event] = del(AceEvent_throttleRegistry[event])
end
end
end
if remember then
AceEvent:TriggerEvent("AceEvent_EventRegistered", self, event)
end
end
local ALL_EVENTS
--[[----------------------------------------------------------------------------------
Notes:
* Registers all events to the given method
* To access the current event, check AceEvent.currentEvent
* To access the current event's unique identifier, check AceEvent.currentEventUID
* This is only for debugging purposes.
Arguments:
[optional] string or function - name of the method or function to call. Default: same name as "event".
------------------------------------------------------------------------------------]]
function AceEvent:RegisterAllEvents(method)
if self == AceEvent then
AceEvent:argCheck(method, 1, "function")
self = method
else
AceEvent:argCheck(method, 1, "string", "function")
if type(method) == "string" and type(self[method]) ~= "function" then
AceEvent:error("Cannot register all events to method %q, it does not exist", method)
end
end
local AceEvent_registry = AceEvent.registry
if not AceEvent_registry[ALL_EVENTS] then
AceEvent_registry[ALL_EVENTS] = new()
AceEvent.frame:RegisterAllEvents()
end
local remember = not AceEvent_registry[ALL_EVENTS][self]
AceEvent_registry[ALL_EVENTS][self] = method
if remember then
AceEvent:TriggerEvent("AceEvent_EventRegistered", self, "all")
end
end
--[[----------------------------------------------------------------------------------
Notes:
* Trigger a custom AceEvent.
* This should never be called to simulate fake Blizzard events.
* Custom events should be in the form of AddonName_SpecificEvent
Arguments:
string - name of the event
tuple - list of arguments to pass along
------------------------------------------------------------------------------------]]
function AceEvent:TriggerEvent(event, ...)
AceEvent:argCheck(event, 2, "string")
local AceEvent_registry = AceEvent.registry
if (not AceEvent_registry[event] or not next(AceEvent_registry[event])) and (not AceEvent_registry[ALL_EVENTS] or not next(AceEvent_registry[ALL_EVENTS])) then
return
end
local lastEvent = AceEvent.currentEvent
AceEvent.currentEvent = event
local lastEventUID = AceEvent.currentEventUID
local uid = AceEvent.UID_NUM + 1
AceEvent.UID_NUM = uid
AceEvent.currentEventUID = uid
local tmp = new()
local AceEvent_onceRegistry = AceEvent.onceRegistry
if AceEvent_onceRegistry and AceEvent_onceRegistry[event] then
for obj, method in pairs(AceEvent_onceRegistry[event]) do
tmp[obj] = AceEvent_registry[event] and AceEvent_registry[event][obj] or nil
end
local obj = next(tmp)
while obj do
local method = tmp[obj]
AceEvent.UnregisterEvent(obj, event)
if type(method) == "string" then
local obj_method = obj[method]
if obj_method then
local success, err = pcall(obj_method, obj, ...)
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("(.-: )in.-\n") or "") .. err) end
end
elseif method then -- function
local success, err = pcall(method, ...)
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("(.-: )in.-\n") or "") .. err) end
end
tmp[obj] = nil
obj = next(tmp)
end
end
local AceEvent_throttleRegistry = AceEvent.throttleRegistry
local throttleTable = AceEvent_throttleRegistry and AceEvent_throttleRegistry[event]
if AceEvent_registry[event] then
for obj, method in pairs(AceEvent_registry[event]) do
tmp[obj] = method
end
local obj = next(tmp)
while obj do
local cont = nil
if throttleTable and throttleTable[obj] then
local a1 = ...
if a1 == nil then
a1 = FAKE_NIL
end
if not throttleTable[obj][a1] or GetTime() - throttleTable[obj][a1] >= throttleTable[obj][RATE] then
throttleTable[obj][a1] = GetTime()
else
cont = true
end
end
if not cont then
local method = tmp[obj]
local t = type(method)
if t == "string" then
local obj_method = obj[method]
if obj_method then
local success, err = pcall(obj_method, obj, ...)
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("(.-: )in.-\n") or "") .. err) end
end
elseif t == "function" then -- function
local success, err = pcall(method, ...)
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("(.-: )in.-\n") or "") .. err) end
else
AceEvent:error("Cannot trigger event %q. %q's handler, %q, is not a method or function (%s).", event, obj, method, t)
end
end
tmp[obj] = nil
obj = next(tmp)
end
end
if AceEvent_registry[ALL_EVENTS] then
for obj, method in pairs(AceEvent_registry[ALL_EVENTS]) do
tmp[obj] = method
end
local obj = next(tmp)
while obj do
local method = tmp[obj]
local t = type(method)
if t == "string" then
local obj_method = obj[method]
if obj_method then
local success, err = pcall(obj_method, obj, ...)
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("(.-: )in.-\n") or "") .. err) end
end
elseif t == "function" then
local success, err = pcall(method, ...)
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("(.-: )in.-\n") or "") .. err) end
else
AceEvent:error("Cannot trigger event %q. %q's handler, %q, is not a method or function (%s).", event, obj, method, t)
end
tmp[obj] = nil
obj = next(tmp)
end
end
tmp = del(tmp)
AceEvent.currentEvent = lastEvent
AceEvent.currentEventUID = lastEventUID
end
local delayRegistry
local OnUpdate
do
local tmp = {}
OnUpdate = function()
local t = GetTime()
for k,v in pairs(delayRegistry) do
tmp[k] = true
end
for k in pairs(tmp) do
local v = delayRegistry[k]
if v then
local v_time = v.time
if not v_time then
delayRegistry[k] = nil
elseif v_time <= t then
local v_repeatDelay = v.repeatDelay
if v_repeatDelay then
-- use the event time, not the current time, else timing inaccuracies add up over time
v.time = v_time + v_repeatDelay
end
local event = v.event
local t = type(event)
if t == "function" then
local uid = AceEvent.UID_NUM + 1
AceEvent.UID_NUM = uid
AceEvent.currentEventUID = uid
local success, err = pcall(event, unpack(v, 1, v.n))
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("(.-: )in.-\n") or "") .. err) end
AceEvent.currentEventUID = nil
elseif t == "string" then
AceEvent:TriggerEvent(event, unpack(v, 1, v.n))
else
AceEvent:error("Cannot trigger event %q, it's not a method or function (%s).", event, t)
end
if not v_repeatDelay then
local x = delayRegistry[k]
if x and x.time == v_time then -- check if it was manually reset
if type(k) == "string" then
del(delayRegistry[k])
end
delayRegistry[k] = nil
end
end
end
end
end
for k in pairs(tmp) do
tmp[k] = nil
end
if not next(delayRegistry) then
AceEvent.frame:Hide()
end
end
end
local function ScheduleEvent(self, repeating, event, delay, ...)
local id
if type(event) == "string" and type(delay) ~= "number" then
id, event, delay = event, delay, ...
AceEvent:argCheck(event, 3, "string", "function", --[[ so message is right ]] "number")
AceEvent:argCheck(delay, 4, "number")
self:CancelScheduledEvent(id)
else
AceEvent:argCheck(event, 2, "string", "function")
AceEvent:argCheck(delay, 3, "number")
end
if not delayRegistry then
AceEvent.delayRegistry = {}
delayRegistry = AceEvent.delayRegistry
AceEvent.frame:SetScript("OnUpdate", OnUpdate)
end
local t
if id then
t = new(select(2, ...))
t.n = select('#', ...) - 1
else
t = new(...)
t.n = select('#', ...)
end
t.event = event
t.time = GetTime() + delay
t.self = self
t.id = id or t
t.repeatDelay = repeating and delay
delayRegistry[t.id] = t
AceEvent.frame:Show()
end
--[[----------------------------------------------------------------------------------
Notes:
* Schedule an event to fire.
* To fire on the next frame, specify a delay of 0.
Arguments:
string or function - name of the event to fire, or a function to call.
number - the amount of time to wait until calling.
tuple - a list of arguments to pass along.
------------------------------------------------------------------------------------]]
function AceEvent:ScheduleEvent(event, delay, ...)
if type(event) == "string" and type(delay) ~= "number" then
AceEvent:argCheck(delay, 3, "string", "function", --[[ so message is right ]] "number")
AceEvent:argCheck(..., 4, "number")
else
AceEvent:argCheck(event, 2, "string", "function")
AceEvent:argCheck(delay, 3, "number")
end
return ScheduleEvent(self, false, event, delay, ...)
end
function AceEvent:ScheduleRepeatingEvent(event, delay, ...)
if type(event) == "string" and type(delay) ~= "number" then
AceEvent:argCheck(delay, 3, "string", "function", --[[ so message is right ]] "number")
AceEvent:argCheck(..., 4, "number")
else
AceEvent:argCheck(event, 2, "string", "function")
AceEvent:argCheck(delay, 3, "number")
end
return ScheduleEvent(self, true, event, delay, ...)
end
function AceEvent:CancelScheduledEvent(t)
AceEvent:argCheck(t, 2, "string")
if delayRegistry then
local v = delayRegistry[t]
if v then
if type(t) == "string" then
del(delayRegistry[t])
end
delayRegistry[t] = nil
if not next(delayRegistry) then
AceEvent.frame:Hide()
end
return true
end
end
return false
end
function AceEvent:IsEventScheduled(t)
AceEvent:argCheck(t, 2, "string")
if delayRegistry then
local v = delayRegistry[t]
if v then
return true, v.time - GetTime()
end
end
return false, nil
end
function AceEvent:UnregisterEvent(event)
AceEvent:argCheck(event, 2, "string")
local AceEvent_registry = AceEvent.registry
if AceEvent_registry[event] and AceEvent_registry[event][self] then
AceEvent_registry[event][self] = nil
local AceEvent_onceRegistry = AceEvent.onceRegistry
if AceEvent_onceRegistry and AceEvent_onceRegistry[event] and AceEvent_onceRegistry[event][self] then
AceEvent_onceRegistry[event][self] = nil
if not next(AceEvent_onceRegistry[event]) then
AceEvent_onceRegistry[event] = del(AceEvent_onceRegistry[event])
end
end
local AceEvent_throttleRegistry = AceEvent.throttleRegistry
if AceEvent_throttleRegistry and AceEvent_throttleRegistry[event] and AceEvent_throttleRegistry[event][self] then
AceEvent_throttleRegistry[event][self] = nil
if not next(AceEvent_throttleRegistry[event]) then
AceEvent_throttleRegistry[event] = del(AceEvent_throttleRegistry[event])
end
end
if not next(AceEvent_registry[event]) then
AceEvent_registry[event] = del(AceEvent_registry[event])
if not AceEvent_registry[ALL_EVENTS] or not next(AceEvent_registry[ALL_EVENTS]) then
AceEvent.frame:UnregisterEvent(event)
end
end
else
if self == AceEvent then
error(("Cannot unregister event %q. Improperly unregistering from AceEvent-2.0."):format(event), 2)
else
AceEvent:error("Cannot unregister event %q. %q is not registered with it.", event, self)
end
end
AceEvent:TriggerEvent("AceEvent_EventUnregistered", self, event)
end
function AceEvent:UnregisterAllEvents()
local AceEvent_registry = AceEvent.registry
if AceEvent_registry[ALL_EVENTS] and AceEvent_registry[ALL_EVENTS][self] then
AceEvent_registry[ALL_EVENTS][self] = nil
if not next(AceEvent_registry[ALL_EVENTS]) then
AceEvent_registry[ALL_EVENTS] = del(AceEvent_registry[ALL_EVENTS])
AceEvent.frame:UnregisterAllEvents()
for k,v in pairs(AceEvent_registry) do
AceEvent.frame:RegisterEvent(k)
end
end
end
if AceEvent_registry.AceEvent_EventUnregistered then
local event, data = "AceEvent_EventUnregistered", AceEvent_registry.AceEvent_EventUnregistered
local x = data[self]
data[self] = nil
if x then
if not next(data) then
if not AceEvent_registry[ALL_EVENTS] then
AceEvent.frame:UnregisterEvent(event)
end
AceEvent_registry[event] = del(AceEvent_registry[event])
end
AceEvent:TriggerEvent("AceEvent_EventUnregistered", self, event)
end
end
for event, data in pairs(AceEvent_registry) do
local x = data[self]
data[self] = nil
if x and event ~= ALL_EVENTS then
if not next(data) then
if not AceEvent_registry[ALL_EVENTS] then
AceEvent.frame:UnregisterEvent(event)
end
AceEvent_registry[event] = del(AceEvent_registry[event])
end
AceEvent:TriggerEvent("AceEvent_EventUnregistered", self, event)
end
end
if AceEvent.onceRegistry then
for event, data in pairs(AceEvent.onceRegistry) do
data[self] = nil
end
end
end
function AceEvent:CancelAllScheduledEvents()
if delayRegistry then
for k,v in pairs(delayRegistry) do
if v.self == self then
if type(k) == "string" then
del(delayRegistry[k])
end
delayRegistry[k] = nil
end
end
if not next(delayRegistry) then
AceEvent.frame:Hide()
end
end
end
function AceEvent:IsEventRegistered(event)
AceEvent:argCheck(event, 2, "string")
local AceEvent_registry = AceEvent.registry
if self == AceEvent then
return AceEvent_registry[event] and next(AceEvent_registry[event]) or AceEvent_registry[ALL_EVENTS] and next(AceEvent_registry[ALL_EVENTS]) and true or false
end
if AceEvent_registry[event] and AceEvent_registry[event][self] then
return true, AceEvent_registry[event][self]
end
if AceEvent_registry[ALL_EVENTS] and AceEvent_registry[ALL_EVENTS][self] then
return true, AceEvent_registry[ALL_EVENTS][self]
end
return false, nil
end
local UnitExists = UnitExists
local bucketfunc
function AceEvent:RegisterBucketEvent(event, delay, method, ...)
AceEvent:argCheck(event, 2, "string", "table")
if type(event) == "table" then
for k,v in pairs(event) do
if type(k) ~= "number" then
AceEvent:error("All keys to argument #2 to `RegisterBucketEvent' must be numbers.")
elseif type(v) ~= "string" then
AceEvent:error("All values to argument #2 to `RegisterBucketEvent' must be strings.")
end
end
end
AceEvent:argCheck(delay, 3, "number")
if AceEvent == self then
AceEvent:argCheck(method, 4, "function")
self = method
else
if type(event) == "string" then
AceEvent:argCheck(method, 4, "string", "function", "nil")
if not method then
method = event
end
else
AceEvent:argCheck(method, 4, "string", "function")
end
if type(method) == "string" and type(self[method]) ~= "function" then
AceEvent:error("Cannot register event %q to method %q, it does not exist", event, method)
end
end
local buckets = AceEvent.buckets
if not buckets[event] then
buckets[event] = new()
end
if not buckets[event][self] then
local t = {}
t.current = {}
t.self = self
buckets[event][self] = t
else
AceEvent.CancelScheduledEvent(self, buckets[event][self].id)
end
local bucket = buckets[event][self]
bucket.method = method
local n = select('#', ...)
if n > 0 then
for i = 1, n do
bucket[i] = select(i, ...)
end
end
bucket.n = n
local func = function(arg1)
bucket.run = true
if arg1 then
bucket.current[arg1] = true
end
end
buckets[event][self].func = func
local isUnitBucket = true
if type(event) == "string" then
AceEvent.RegisterEvent(self, event, func)
if not event:find("^UNIT_") then
isUnitBucket = nil
end
else
for _,v in ipairs(event) do
AceEvent.RegisterEvent(self, v, func)
if isUnitBucket and not v:find("^UNIT_") then
isUnitBucket = nil
end
end
end
bucket.unit = isUnitBucket
if not bucketfunc then
bucketfunc = function(bucket)
if bucket.run then
local current = bucket.current
local method = bucket.method
local self = bucket.self
if bucket.unit then
for unit in pairs(current) do
if not UnitExists(unit) then
current[unit] = nil
end
end
end
if type(method) == "string" then
self[method](self, current, unpack(bucket, 1, bucket.n))
elseif method then -- function
method(current, unpack(bucket, 1, bucket.n))
end
for k in pairs(current) do
current[k] = nil
k = nil
end
bucket.run = nil
end
end
end
bucket.id = "AceEvent-Bucket-" .. tostring(bucket)
AceEvent.ScheduleRepeatingEvent(self, bucket.id, bucketfunc, delay, bucket)
end
function AceEvent:IsBucketEventRegistered(event)
AceEvent:argCheck(event, 2, "string", "table")
return AceEvent.buckets and AceEvent.buckets[event] and AceEvent.buckets[event][self]
end
function AceEvent:UnregisterBucketEvent(event)
AceEvent:argCheck(event, 2, "string", "table")
if not AceEvent.buckets or not AceEvent.buckets[event] or not AceEvent.buckets[event][self] then
AceEvent:error("Cannot unregister bucket event %q. %q is not registered with it.", event, self)
end
local bucket = AceEvent.buckets[event][self]
if type(event) == "string" then
AceEvent.UnregisterEvent(self, event)
else
for _,v in ipairs(event) do
AceEvent.UnregisterEvent(self, v)
end
end
AceEvent:CancelScheduledEvent(bucket.id)
bucket.current = nil
AceEvent.buckets[event][self] = nil
if not next(AceEvent.buckets[event]) then
AceEvent.buckets[event] = del(AceEvent.buckets[event])
end
end
function AceEvent:UnregisterAllBucketEvents()
if not AceEvent.buckets or not next(AceEvent.buckets) then
return
end
for k,v in pairs(AceEvent.buckets) do
if v == self then
AceEvent.UnregisterBucketEvent(self, k)
k = nil
end
end
end
local combatSchedules
function AceEvent:CancelAllCombatSchedules()
local i = 0
while true do
i = i + 1
if not combatSchedules[i] then
break
end
local v = combatSchedules[i]
if v.self == self then
v = del(v)
table.remove(combatSchedules, i)
i = i - 1
end
end
end
local inCombat = false
function AceEvent:PLAYER_REGEN_DISABLED()
inCombat = true
end
do
local tmp = {}
function AceEvent:PLAYER_REGEN_ENABLED()
inCombat = false
for i, v in ipairs(combatSchedules) do
tmp[i] = v
combatSchedules[i] = nil
end
for i, v in ipairs(tmp) do
local func = v.func
if func then
local success, err = pcall(func, unpack(v, 1, v.n))
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("(.-: )in.-\n") or "") .. err) end
else
local obj = v.obj or v.self
local method = v.method
local obj_method = obj[method]
if obj_method then
local success, err = pcall(obj_method, obj, unpack(v, 1, v.n))
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("(.-: )in.-\n") or "") .. err) end
end
end
tmp[i] = del(v)
end
end
end
function AceEvent:ScheduleLeaveCombatAction(method, ...)
local style = type(method)
if self == AceEvent then
if style == "table" then
local func = (...)
AceEvent:argCheck(func, 3, "string")
if type(method[func]) ~= "function" then
AceEvent:error("Cannot schedule a combat action to method %q, it does not exist", func)
end
else
AceEvent:argCheck(method, 2, "function", --[[so message is right]] "table")
end
self = method
else
AceEvent:argCheck(method, 2, "function", "string", "table")
if style == "string" and type(self[method]) ~= "function" then
AceEvent:error("Cannot schedule a combat action to method %q, it does not exist", method)
elseif style == "table" then
local func = (...)
AceEvent:argCheck(func, 3, "string")
if type(method[func]) ~= "function" then
AceEvent:error("Cannot schedule a combat action to method %q, it does not exist", func)
end
end
end
if not inCombat then
local success, err
if type(method) == "function" then
success, err = pcall(method, ...)
elseif type(method) == "table" then
local func = (...)
success, err = pcall(method[func], method, select(2, ...))
else
success, err = pcall(self[method], self, ...)
end
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("(.-: )in.-\n") or "") .. err) end
return
end
local t
local n = select('#', ...)
if style == "table" then
t = new(select(2, ...))
t.obj = method
t.method = (...)
t.n = n-1
else
t = new(...)
t.n = n
if style == "function" then
t.func = method
else
t.method = method
end
end
t.self = self
table.insert(combatSchedules, t)
end
function AceEvent:OnEmbedDisable(target)
self.UnregisterAllEvents(target)
self.CancelAllScheduledEvents(target)
self.UnregisterAllBucketEvents(target)
self.CancelAllCombatSchedules(target)
end
function AceEvent:IsFullyInitialized()
return self.postInit or false
end
local function activate(self, oldLib, oldDeactivate)
AceEvent = self
self.onceRegistry = oldLib and oldLib.onceRegistry or {}
self.throttleRegistry = oldLib and oldLib.throttleRegistry or {}
self.delayRegistry = oldLib and oldLib.delayRegistry or {}
self.buckets = oldLib and oldLib.buckets or {}
self.registry = oldLib and oldLib.registry or {}
self.frame = oldLib and oldLib.frame or CreateFrame("Frame", "AceEvent20Frame")
self.playerLogin = IsLoggedIn() and true
self.postInit = oldLib and oldLib.postInit or self.playerLogin and ChatTypeInfo and ChatTypeInfo.WHISPER and ChatTypeInfo.WHISPER.r and true
self.ALL_EVENTS = oldLib and oldLib.ALL_EVENTS or _G.newproxy()
self.FAKE_NIL = oldLib and oldLib.FAKE_NIL or _G.newproxy()
self.RATE = oldLib and oldLib.RATE or _G.newproxy()
self.combatSchedules = oldLib and oldLib.combatSchedules or {}
self.UID_NUM = oldLib and oldLib.UID_NUM or 0
combatSchedules = self.combatSchedules
ALL_EVENTS = self.ALL_EVENTS
FAKE_NIL = self.FAKE_NIL
RATE = self.RATE
local inPlw = false
local blacklist = {
UNIT_INVENTORY_CHANGED = true,
BAG_UPDATE = true,
ITEM_LOCK_CHANGED = true,
ACTIONBAR_SLOT_CHANGED = true,
}
self.frame:SetScript("OnEvent", function(_, event, ...)
if event == "PLAYER_ENTERING_WORLD" then
inPlw = false
elseif event == "PLAYER_LEAVING_WORLD" then
inPlw = true
end
if event and (not inPlw or not blacklist[event]) then
self:TriggerEvent(event, ...)
end
end)
if self.delayRegistry then
delayRegistry = self.delayRegistry
self.frame:SetScript("OnUpdate", OnUpdate)
end
self:UnregisterAllEvents()
self:CancelAllScheduledEvents()
local function handleFullInit()
if not self.postInit then
local function func()
self.postInit = true
self:TriggerEvent("AceEvent_FullyInitialized")
if self.registry["CHAT_MSG_CHANNEL_NOTICE"] and self.registry["CHAT_MSG_CHANNEL_NOTICE"][self] then
self:UnregisterEvent("CHAT_MSG_CHANNEL_NOTICE")
end
if self.registry["MEETINGSTONE_CHANGED"] and self.registry["MEETINGSTONE_CHANGED"][self] then
self:UnregisterEvent("MEETINGSTONE_CHANGED")
end
end
registeringFromAceEvent = true
self:RegisterEvent("MEETINGSTONE_CHANGED", func, true)
self:RegisterEvent("CHAT_MSG_CHANNEL_NOTICE", func, true)
self:ScheduleEvent("AceEvent_FullyInitialized", func, 10)
registeringFromAceEvent = nil
end
end
if not self.playerLogin then
registeringFromAceEvent = true
self:RegisterEvent("PLAYER_LOGIN", function()
self.playerLogin = true
handleFullInit()
handleFullInit = nil
end, true)
registeringFromAceEvent = nil
else
handleFullInit()
handleFullInit = nil
end
if not AceEvent20EditBox then
CreateFrame("Editbox", "AceEvent20EditBox")
end
local editbox = AceEvent20EditBox
function editbox:Execute(line)
local defaulteditbox = DEFAULT_CHAT_FRAME.editBox
self:SetAttribute("chatType", defaulteditbox:GetAttribute("chatType"))
self:SetAttribute("tellTarget", defaulteditbox:GetAttribute("tellTarget"))
self:SetAttribute("channelTarget", defaulteditbox:GetAttribute("channelTarget"))
self:SetText(line)
ChatEdit_SendText(self)
end
editbox:Hide()
_G["SLASH_IN1"] = "/in"
SlashCmdList["IN"] = function(msg)
local seconds, command, rest = msg:match("^([^%s]+)%s+(/[^%s]+)(.*)$")
seconds = tonumber(seconds)
if not seconds then
DEFAULT_CHAT_FRAME:AddMessage("Error, bad arguments to /in. Must be in the form of `/in 5 /say hi'")
return
end
if IsSecureCmd(command) then
DEFAULT_CHAT_FRAME:AddMessage(("Error, /in cannot call secure command: %s"):format(command))
return
end
self:ScheduleEvent("AceEventSlashIn-" .. math.random(1, 1000000000), editbox.Execute, seconds, editbox, command .. rest)
end
registeringFromAceEvent = true
self:RegisterEvent("PLAYER_REGEN_ENABLED")
self:RegisterEvent("PLAYER_REGEN_DISABLED")
self:RegisterEvent("LOOT_OPENED", function()
if GetRealNumRaidMembers() > 0 or GetRealNumPartyMembers() > 0 then SendAddonMessage("LOOT_OPENED", "", "RAID") end
end)
inCombat = InCombatLockdown()
registeringFromAceEvent = nil
self:activate(oldLib, oldDeactivate)
if oldLib then
oldDeactivate(oldLib)
end
end
AceLibrary:Register(AceEvent, MAJOR_VERSION, MINOR_VERSION, activate)
@@ -0,0 +1,17 @@
## Interface: 30300
## X-Curse-Packaged-Version: r1101
## X-Curse-Project-Name: Ace2
## X-Curse-Project-ID: ace2
## X-Curse-Repository-ID: wow/ace2/mainline
## Title: Lib: AceEvent-2.0
## Notes: AddOn development framework
## Author: Ace Development Team
## LoadOnDemand: 1
## X-Website: http://www.wowace.com
## X-Category: Library
## X-License: LGPL v2.1 + MIT for AceOO-2.0
## Dependencies: AceLibrary, AceOO-2.0
AceEvent-2.0.lua
+799
View File
@@ -0,0 +1,799 @@
--[[
Name: AceLibrary
Revision: $Rev: 1091 $
Developed by: The Ace Development Team (http://www.wowace.com/index.php/The_Ace_Development_Team)
Inspired By: Iriel (iriel@vigilance-committee.org)
Tekkub (tekkub@gmail.com)
Revision: $Rev: 1091 $
Website: http://www.wowace.com/
Documentation: http://www.wowace.com/index.php/AceLibrary
SVN: http://svn.wowace.com/wowace/trunk/Ace2/AceLibrary
Description: Versioning library to handle other library instances, upgrading,
and proper access.
It also provides a base for libraries to work off of, providing
proper error tools. It is handy because all the errors occur in the
file that called it, not in the library file itself.
Dependencies: None
License: LGPL v2.1
]]
local ACELIBRARY_MAJOR = "AceLibrary"
local ACELIBRARY_MINOR = 90000 + tonumber(("$Revision: 1091 $"):match("(%d+)"))
local _G = getfenv(0)
local previous = _G[ACELIBRARY_MAJOR]
if previous and not previous:IsNewVersion(ACELIBRARY_MAJOR, ACELIBRARY_MINOR) then return end
do
-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
-- LibStub is hereby placed in the Public Domain -- Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
local LibStub = _G[LIBSTUB_MAJOR]
if not LibStub or LibStub.minor < LIBSTUB_MINOR then
LibStub = LibStub or {libs = {}, minors = {} }
_G[LIBSTUB_MAJOR] = LibStub
LibStub.minor = LIBSTUB_MINOR
function LibStub:NewLibrary(major, minor)
assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
local oldminor = self.minors[major]
if oldminor and oldminor >= minor then return nil end
self.minors[major], self.libs[major] = minor, self.libs[major] or {}
return self.libs[major], oldminor
end
function LibStub:GetLibrary(major, silent)
if not self.libs[major] and not silent then
error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
end
return self.libs[major], self.minors[major]
end
function LibStub:IterateLibraries() return pairs(self.libs) end
setmetatable(LibStub, { __call = LibStub.GetLibrary })
end
end
local LibStub = _G.LibStub
-- If you don't want AceLibrary to enable libraries that are LoadOnDemand but
-- disabled in the addon screen, set this to true.
local DONT_ENABLE_LIBRARIES = nil
local function safecall(func,...)
local success, err = pcall(func,...)
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("\n(.-: )in.-\n") or "") .. err) end
end
-- @table AceLibrary
-- @brief System to handle all versioning of libraries.
local AceLibrary = {}
local AceLibrary_mt = {}
setmetatable(AceLibrary, AceLibrary_mt)
local function error(self, message, ...)
if type(self) ~= "table" then
return _G.error(("Bad argument #1 to `error' (table expected, got %s)"):format(type(self)), 2)
end
local stack = debugstack()
if not message then
local second = stack:match("\n(.-)\n")
message = "error raised! " .. second
else
local arg = { ... } -- not worried about table creation, as errors don't happen often
for i = 1, #arg do
arg[i] = tostring(arg[i])
end
for i = 1, 10 do
table.insert(arg, "nil")
end
message = message:format(unpack(arg))
end
if getmetatable(self) and getmetatable(self).__tostring then
message = ("%s: %s"):format(tostring(self), message)
elseif type(rawget(self, 'GetLibraryVersion')) == "function" and AceLibrary:HasInstance(self:GetLibraryVersion()) then
message = ("%s: %s"):format(self:GetLibraryVersion(), message)
elseif type(rawget(self, 'class')) == "table" and type(rawget(self.class, 'GetLibraryVersion')) == "function" and AceLibrary:HasInstance(self.class:GetLibraryVersion()) then
message = ("%s: %s"):format(self.class:GetLibraryVersion(), message)
end
local first = stack:gsub("\n.*", "")
local file = first:gsub(".*\\(.*).lua:%d+: .*", "%1")
file = file:gsub("([%(%)%.%*%+%-%[%]%?%^%$%%])", "%%%1")
local i = 0
for s in stack:gmatch("\n([^\n]*)") do
i = i + 1
if not s:find(file .. "%.lua:%d+:") and not s:find("%(tail call%)") then
file = s:gsub("^.*\\(.*).lua:%d+: .*", "%1")
file = file:gsub("([%(%)%.%*%+%-%[%]%?%^%$%%])", "%%%1")
break
end
end
local j = 0
for s in stack:gmatch("\n([^\n]*)") do
j = j + 1
if j > i and not s:find(file .. "%.lua:%d+:") and not s:find("%(tail call%)") then
return _G.error(message, j+1)
end
end
return _G.error(message, 2)
end
local type = type
local function argCheck(self, arg, num, kind, kind2, kind3, kind4, kind5)
if type(num) ~= "number" then
return error(self, "Bad argument #3 to `argCheck' (number expected, got %s)", type(num))
elseif type(kind) ~= "string" then
return error(self, "Bad argument #4 to `argCheck' (string expected, got %s)", type(kind))
end
arg = type(arg)
if arg ~= kind and arg ~= kind2 and arg ~= kind3 and arg ~= kind4 and arg ~= kind5 then
local stack = debugstack()
local func = stack:match("`argCheck'.-([`<].-['>])")
if not func then
func = stack:match("([`<].-['>])")
end
if kind5 then
return error(self, "Bad argument #%s to %s (%s, %s, %s, %s, or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, kind3, kind4, kind5, arg)
elseif kind4 then
return error(self, "Bad argument #%s to %s (%s, %s, %s, or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, kind3, kind4, arg)
elseif kind3 then
return error(self, "Bad argument #%s to %s (%s, %s, or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, kind3, arg)
elseif kind2 then
return error(self, "Bad argument #%s to %s (%s or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, arg)
else
return error(self, "Bad argument #%s to %s (%s expected, got %s)", tonumber(num) or 0/0, func, kind, arg)
end
end
end
local pcall
do
local function check(self, ret, ...)
if not ret then
local s = ...
return error(self, (s:gsub(".-%.lua:%d-: ", "")))
else
return ...
end
end
function pcall(self, func, ...)
return check(self, _G.pcall(func, ...))
end
end
local recurse = {}
local function addToPositions(t, major)
if not AceLibrary.positions[t] or AceLibrary.positions[t] == major then
rawset(t, recurse, true)
AceLibrary.positions[t] = major
for k,v in pairs(t) do
if type(v) == "table" and not rawget(v, recurse) then
addToPositions(v, major)
end
if type(k) == "table" and not rawget(k, recurse) then
addToPositions(k, major)
end
end
local mt = getmetatable(t)
if mt and not rawget(mt, recurse) then
addToPositions(mt, major)
end
rawset(t, recurse, nil)
end
end
local function svnRevisionToNumber(text)
local kind = type(text)
if kind == "number" or tonumber(text) then
return tonumber(text)
elseif kind == "string" then
if text:find("^%$Revision: (%d+) %$$") then
return tonumber((text:match("^%$Revision: (%d+) %$$")))
elseif text:find("^%$Rev: (%d+) %$$") then
return tonumber((text:match("^%$Rev: (%d+) %$$")))
elseif text:find("^%$LastChangedRevision: (%d+) %$$") then
return tonumber((text:match("^%$LastChangedRevision: (%d+) %$$")))
end
end
return nil
end
local crawlReplace
do
local recurse = {}
local function func(t, to, from)
if recurse[t] then
return
end
recurse[t] = true
local mt = getmetatable(t)
setmetatable(t, nil)
rawset(t, to, rawget(t, from))
rawset(t, from, nil)
for k,v in pairs(t) do
if v == from then
t[k] = to
elseif type(v) == "table" then
if not recurse[v] then
func(v, to, from)
end
end
if type(k) == "table" then
if not recurse[k] then
func(k, to, from)
end
end
end
setmetatable(t, mt)
if mt then
if mt == from then
setmetatable(t, to)
elseif not recurse[mt] then
func(mt, to, from)
end
end
end
function crawlReplace(t, to, from)
func(t, to, from)
for k in pairs(recurse) do
recurse[k] = nil
end
end
end
-- @function destroyTable
-- @brief remove all the contents of a table
-- @param t table to destroy
local function destroyTable(t)
setmetatable(t, nil)
for k,v in pairs(t) do
t[k] = nil
end
end
local function isFrame(frame)
return type(frame) == "table" and type(rawget(frame, 0)) == "userdata" and type(rawget(frame, 'IsFrameType')) == "function" and getmetatable(frame) and type(rawget(getmetatable(frame), '__index')) == "function"
end
-- @function copyTable
-- @brief Create a shallow copy of a table and return it.
-- @param from The table to copy from
-- @return A shallow copy of the table
local function copyTable(from, to)
if not to then
to = {}
end
for k,v in pairs(from) do
to[k] = v
end
setmetatable(to, getmetatable(from))
return to
end
-- @function deepTransfer
-- @brief Fully transfer all data, keeping proper previous table
-- backreferences stable.
-- @param to The table with which data is to be injected into
-- @param from The table whose data will be injected into the first
-- @param saveFields If available, a shallow copy of the basic data is saved
-- in here.
-- @param list The account of table references
-- @param list2 The current status on which tables have been traversed.
local deepTransfer
do
-- @function examine
-- @brief Take account of all the table references to be shared
-- between the to and from tables.
-- @param to The table with which data is to be injected into
-- @param from The table whose data will be injected into the first
-- @param list An account of the table references
local function examine(to, from, list, major)
list[from] = to
for k,v in pairs(from) do
if rawget(to, k) and type(from[k]) == "table" and type(to[k]) == "table" and not list[from[k]] then
if from[k] == to[k] then
list[from[k]] = to[k]
elseif AceLibrary.positions[from[v]] ~= major and AceLibrary.positions[from[v]] then
list[from[k]] = from[k]
elseif not list[from[k]] then
examine(to[k], from[k], list, major)
end
end
end
return list
end
function deepTransfer(to, from, saveFields, major, list, list2)
setmetatable(to, nil)
if not list then
list = {}
list2 = {}
examine(to, from, list, major)
end
list2[to] = to
for k,v in pairs(to) do
if type(rawget(from, k)) ~= "table" or type(v) ~= "table" or isFrame(v) then
if saveFields then
saveFields[k] = v
end
to[k] = nil
elseif v ~= _G then
if saveFields then
saveFields[k] = copyTable(v)
end
end
end
for k in pairs(from) do
if rawget(to, k) and to[k] ~= from[k] and AceLibrary.positions[to[k]] == major and from[k] ~= _G then
if not list2[to[k]] then
deepTransfer(to[k], from[k], nil, major, list, list2)
end
to[k] = list[to[k]] or list2[to[k]]
else
rawset(to, k, from[k])
end
end
setmetatable(to, getmetatable(from))
local mt = getmetatable(to)
if mt then
if list[mt] then
setmetatable(to, list[mt])
elseif mt.__index and list[mt.__index] then
mt.__index = list[mt.__index]
end
end
destroyTable(from)
end
end
local function TryToEnable(addon)
if DONT_ENABLE_LIBRARIES then return end
local isondemand = IsAddOnLoadOnDemand(addon)
if isondemand then
local _, _, _, enabled = GetAddOnInfo(addon)
EnableAddOn(addon)
local _, _, _, _, loadable = GetAddOnInfo(addon)
if not loadable and not enabled then
DisableAddOn(addon)
end
return loadable
end
end
-- @method TryToLoadStandalone
-- @brief Attempt to find and load a standalone version of the requested library
-- @param major A string representing the major version
-- @return If library is found and loaded, true is return. If not loadable, false is returned.
-- If the library has been requested previously, nil is returned.
local function TryToLoadStandalone(major)
if not AceLibrary.scannedlibs then AceLibrary.scannedlibs = {} end
if AceLibrary.scannedlibs[major] then return end
AceLibrary.scannedlibs[major] = true
local name, _, _, enabled, loadable = GetAddOnInfo(major)
loadable = (enabled and loadable) or TryToEnable(name)
local loaded = false
if loadable then
loaded = true
LoadAddOn(name)
end
local field = "X-AceLibrary-" .. major
for i = 1, GetNumAddOns() do
if GetAddOnMetadata(i, field) then
name, _, _, enabled, loadable = GetAddOnInfo(i)
loadable = (enabled and loadable) or TryToEnable(name)
if loadable then
loaded = true
LoadAddOn(name)
end
end
end
return loaded
end
-- @method IsNewVersion
-- @brief Obtain whether the supplied version would be an upgrade to the
-- current version. This allows for bypass code in library
-- declaration.
-- @param major A string representing the major version
-- @param minor An integer or an svn revision string representing the minor version
-- @return whether the supplied version would be newer than what is
-- currently available.
function AceLibrary:IsNewVersion(major, minor)
argCheck(self, major, 2, "string")
TryToLoadStandalone(major)
if type(minor) == "string" then
local m = svnRevisionToNumber(minor)
if m then
minor = m
else
_G.error(("Bad argument #3 to `IsNewVersion'. Must be a number or SVN revision string. %q is not appropriate"):format(minor), 2)
end
end
argCheck(self, minor, 3, "number")
local lib, oldMinor = LibStub:GetLibrary(major, true)
if lib then
return oldMinor < minor
end
local data = self.libs[major]
if not data then
return true
end
return data.minor < minor
end
-- @method HasInstance
-- @brief Returns whether an instance exists. This allows for optional support of a library.
-- @param major A string representing the major version.
-- @param minor (optional) An integer or an svn revision string representing the minor version.
-- @return Whether an instance exists.
function AceLibrary:HasInstance(major, minor)
argCheck(self, major, 2, "string")
if minor ~= false then
TryToLoadStandalone(major)
end
local lib, ver = LibStub:GetLibrary(major, true)
if not lib and self.libs[major] then
lib, ver = self.libs[major].instance, self.libs[major].minor
end
if minor then
if type(minor) == "string" then
local m = svnRevisionToNumber(minor)
if m then
minor = m
else
_G.error(("Bad argument #3 to `HasInstance'. Must be a number or SVN revision string. %q is not appropriate"):format(minor), 2)
end
end
argCheck(self, minor, 3, "number")
if not lib then
return false
end
return ver == minor
end
return not not lib
end
-- @method GetInstance
-- @brief Returns the library with the given major/minor version.
-- @param major A string representing the major version.
-- @param minor (optional) An integer or an svn revision string representing the minor version.
-- @return The library with the given major/minor version.
function AceLibrary:GetInstance(major, minor)
argCheck(self, major, 2, "string")
if minor ~= false then
TryToLoadStandalone(major)
end
local data, ver = LibStub:GetLibrary(major, true)
if not data then
if self.libs[major] then
data, ver = self.libs[major].instance, self.libs[major].minor
else
_G.error(("Cannot find a library instance of %s."):format(major), 2)
return
end
end
if minor then
if type(minor) == "string" then
local m = svnRevisionToNumber(minor)
if m then
minor = m
else
_G.error(("Bad argument #3 to `GetInstance'. Must be a number or SVN revision string. %q is not appropriate"):format(minor), 2)
end
end
argCheck(self, minor, 2, "number")
if ver ~= minor then
_G.error(("Cannot find a library instance of %s, minor version %d."):format(major, minor), 2)
end
end
return data
end
-- Syntax sugar. AceLibrary("FooBar-1.0")
AceLibrary_mt.__call = AceLibrary.GetInstance
local donothing = function() end
local AceEvent
local tmp = {}
-- @method Register
-- @brief Registers a new version of a given library.
-- @param newInstance the library to register
-- @param major the major version of the library
-- @param minor the minor version of the library
-- @param activateFunc (optional) A function to be called when the library is
-- fully activated. Takes the arguments
-- (newInstance [, oldInstance, oldDeactivateFunc]). If
-- oldInstance is given, you should probably call
-- oldDeactivateFunc(oldInstance).
-- @param deactivateFunc (optional) A function to be called by a newer library's
-- activateFunc.
-- @param externalFunc (optional) A function to be called whenever a new
-- library is registered.
function AceLibrary:Register(newInstance, major, minor, activateFunc, deactivateFunc, externalFunc)
argCheck(self, newInstance, 2, "table")
argCheck(self, major, 3, "string")
if major ~= ACELIBRARY_MAJOR then
for k,v in pairs(_G) do
if v == newInstance then
geterrorhandler()((debugstack():match("(.-: )in.-\n") or "") .. ("Cannot register library %q. It is part of the global table in _G[%q]."):format(major, k))
end
end
end
if major ~= ACELIBRARY_MAJOR and not major:find("^[%a%-][%a%d%-]*%-%d+%.%d+$") then
_G.error(string.format("Bad argument #3 to `Register'. Must be in the form of \"Name-1.0\". %q is not appropriate", major), 2)
end
if type(minor) == "string" then
local m = svnRevisionToNumber(minor)
if m then
minor = m
else
_G.error(("Bad argument #4 to `Register'. Must be a number or SVN revision string. %q is not appropriate"):format(minor), 2)
end
end
argCheck(self, minor, 4, "number")
if math.floor(minor) ~= minor or minor < 0 then
error(self, "Bad argument #4 to `Register' (integer >= 0 expected, got %s)", minor)
end
argCheck(self, activateFunc, 5, "function", "nil")
argCheck(self, deactivateFunc, 6, "function", "nil")
argCheck(self, externalFunc, 7, "function", "nil")
if not deactivateFunc then
deactivateFunc = donothing
end
local data = self.libs[major]
if not data then
-- This is new
if LibStub:GetLibrary(major, true) then
error(self, "Cannot register library %q. It is already registered with LibStub.", major)
end
local instance = LibStub:NewLibrary(major, minor)
copyTable(newInstance, instance)
crawlReplace(instance, instance, newInstance)
destroyTable(newInstance)
if AceLibrary == newInstance then
self = instance
AceLibrary = instance
end
self.libs[major] = {
instance = instance,
minor = minor,
deactivateFunc = deactivateFunc,
externalFunc = externalFunc,
}
rawset(instance, 'GetLibraryVersion', function(self)
return major, minor
end)
if not rawget(instance, 'error') then
rawset(instance, 'error', error)
end
if not rawget(instance, 'argCheck') then
rawset(instance, 'argCheck', argCheck)
end
if not rawget(instance, 'pcall') then
rawset(instance, 'pcall', pcall)
end
addToPositions(instance, major)
if activateFunc then
safecall(activateFunc, instance, nil, nil) -- no old version, so explicit nil
end
if externalFunc then
for k, data_instance in LibStub:IterateLibraries() do -- all libraries
tmp[k] = data_instance
end
for k, data in pairs(self.libs) do -- Ace libraries which may not have been registered with LibStub
tmp[k] = data.instance
end
for k, data_instance in pairs(tmp) do
if k ~= major then
safecall(externalFunc, instance, k, data_instance)
end
tmp[k] = nil
end
end
for k,data in pairs(self.libs) do -- only Ace libraries
if k ~= major and data.externalFunc then
safecall(data.externalFunc, data.instance, major, instance)
end
end
if major == "AceEvent-2.0" then
AceEvent = instance
end
if AceEvent then
AceEvent.TriggerEvent(self, "AceLibrary_Register", major, instance)
end
return instance
end
if minor <= data.minor then
-- This one is already obsolete, raise an error.
_G.error(("Obsolete library registered. %s is already registered at version %d. You are trying to register version %d. Hint: if not AceLibrary:IsNewVersion(%q, %d) then return end"):format(major, data.minor, minor, major, minor), 2)
return
end
local instance = data.instance
-- This is an update
local oldInstance = {}
local libStubInstance = LibStub:GetLibrary(major, true)
if not libStubInstance then -- non-LibStub AceLibrary registered the library
-- pass
elseif libStubInstance ~= instance then
error(self, "Cannot register library %q. It is already registered with LibStub.", major)
else
LibStub:NewLibrary(major, minor) -- upgrade the minor version
end
addToPositions(newInstance, major)
local isAceLibrary = (AceLibrary == newInstance)
local old_error, old_argCheck, old_pcall
if isAceLibrary then
self = instance
AceLibrary = instance
old_error = instance.error
old_argCheck = instance.argCheck
old_pcall = instance.pcall
self.error = error
self.argCheck = argCheck
self.pcall = pcall
end
deepTransfer(instance, newInstance, oldInstance, major)
crawlReplace(instance, instance, newInstance)
local oldDeactivateFunc = data.deactivateFunc
data.minor = minor
data.deactivateFunc = deactivateFunc
data.externalFunc = externalFunc
rawset(instance, 'GetLibraryVersion', function()
return major, minor
end)
if not rawget(instance, 'error') then
rawset(instance, 'error', error)
end
if not rawget(instance, 'argCheck') then
rawset(instance, 'argCheck', argCheck)
end
if not rawget(instance, 'pcall') then
rawset(instance, 'pcall', pcall)
end
if isAceLibrary then
for _,v in pairs(self.libs) do
local i = type(v) == "table" and v.instance
if type(i) == "table" then
if not rawget(i, 'error') or i.error == old_error then
rawset(i, 'error', error)
end
if not rawget(i, 'argCheck') or i.argCheck == old_argCheck then
rawset(i, 'argCheck', argCheck)
end
if not rawget(i, 'pcall') or i.pcall == old_pcall then
rawset(i, 'pcall', pcall)
end
end
end
end
if activateFunc then
safecall(activateFunc, instance, oldInstance, oldDeactivateFunc)
else
safecall(oldDeactivateFunc, oldInstance)
end
oldInstance = nil
if externalFunc then
for k, data_instance in LibStub:IterateLibraries() do -- all libraries
tmp[k] = data_instance
end
for k, data in pairs(self.libs) do -- Ace libraries which may not have been registered with LibStub
tmp[k] = data.instance
end
for k, data_instance in pairs(tmp) do
if k ~= major then
safecall(externalFunc, instance, k, data_instance)
end
tmp[k] = nil
end
end
return instance
end
function AceLibrary:IterateLibraries()
local t = {}
for major, instance in LibStub:IterateLibraries() do
t[major] = instance
end
for major, data in pairs(self.libs) do
t[major] = data.instance
end
return pairs(t)
end
local function manuallyFinalize(major, instance)
if AceLibrary.libs[major] then
-- don't work on Ace libraries
return
end
local finalizedExternalLibs = AceLibrary.finalizedExternalLibs
if finalizedExternalLibs[major] then
return
end
finalizedExternalLibs[major] = true
for k,data in pairs(AceLibrary.libs) do -- only Ace libraries
if k ~= major and data.externalFunc then
safecall(data.externalFunc, data.instance, major, instance)
end
end
end
-- @function Activate
-- @brief The activateFunc for AceLibrary itself. Called when
-- AceLibrary properly registers.
-- @param self Reference to AceLibrary
-- @param oldLib (optional) Reference to an old version of AceLibrary
-- @param oldDeactivate (optional) Function to deactivate the old lib
local function activate(self, oldLib, oldDeactivate)
AceLibrary = self
if not self.libs then
self.libs = oldLib and oldLib.libs or {}
self.scannedlibs = oldLib and oldLib.scannedlibs or {}
end
if not self.positions then
self.positions = oldLib and oldLib.positions or setmetatable({}, { __mode = "k" })
end
self.finalizedExternalLibs = oldLib and oldLib.finalizedExternalLibs or {}
self.frame = oldLib and oldLib.frame or CreateFrame("Frame")
self.frame:UnregisterAllEvents()
self.frame:RegisterEvent("ADDON_LOADED")
self.frame:SetScript("OnEvent", function()
for major, instance in LibStub:IterateLibraries() do
manuallyFinalize(major, instance)
end
end)
for major, instance in LibStub:IterateLibraries() do
manuallyFinalize(major, instance)
end
-- Expose the library in the global environment
_G[ACELIBRARY_MAJOR] = self
if oldDeactivate then
oldDeactivate(oldLib)
end
end
if not previous then
previous = AceLibrary
end
if not previous.libs then
previous.libs = {}
end
AceLibrary.libs = previous.libs
if not previous.positions then
previous.positions = setmetatable({}, { __mode = "k" })
end
AceLibrary.positions = previous.positions
AceLibrary:Register(AceLibrary, ACELIBRARY_MAJOR, ACELIBRARY_MINOR, activate, nil)
@@ -0,0 +1,15 @@
## Interface: 30300
## X-Curse-Packaged-Version: r1101
## X-Curse-Project-Name: Ace2
## X-Curse-Project-ID: ace2
## X-Curse-Repository-ID: wow/ace2/mainline
## Title: Lib: AceLibrary
## Notes: AddOn development framework
## Author: Ace Development Team
## X-Website: http://www.wowace.com
## X-Category: Library
## X-License: LGPL v2.1 + MIT for AceOO-2.0
AceLibrary.lua
+980
View File
@@ -0,0 +1,980 @@
--[[
Name: AceOO-2.0
Revision: $Rev: 1091 $
Developed by: The Ace Development Team (http://www.wowace.com/index.php/The_Ace_Development_Team)
Inspired By: Ace 1.x by Turan (turan@gryphon.com)
Website: http://www.wowace.com/
Documentation: http://www.wowace.com/index.php/AceOO-2.0
SVN: http://svn.wowace.com/wowace/trunk/Ace2/AceOO-2.0
Description: Library to provide an object-orientation framework.
Dependencies: AceLibrary
License: MIT
]]
local MAJOR_VERSION = "AceOO-2.0"
local MINOR_VERSION = 90000 + tonumber(("$Revision: 1091 $"):match("(%d+)"))
-- This ensures the code is only executed if the libary doesn't already exist, or is a newer version
if not AceLibrary then error(MAJOR_VERSION .. " requires AceLibrary.") end
if not AceLibrary:IsNewVersion(MAJOR_VERSION, MINOR_VERSION) then return end
local AceOO = {
error = AceLibrary.error,
argCheck = AceLibrary.argCheck
}
-- @function getuid
-- @brief Obtain a unique string identifier for the object in question.
-- @param t The object to obtain the uid for.
-- @return The uid string.
local function getuid(t)
local mt = getmetatable(t)
setmetatable(t, nil)
local str = tostring(t)
setmetatable(t, mt)
local cap = str:match("[^:]*: 0x(.*)$") or str:match("[^:]*: (.*)$")
if cap then
return ("0"):rep(8 - #cap) .. cap
end
end
local function getlibrary(o)
if type(o) == "table" then
return o
elseif type(o) == "string" then
if not AceLibrary:HasInstance(o) then
AceOO:error("Library %q does not exist.", o)
end
return AceLibrary(o)
end
end
local function deeprawget(self, k)
while true do
local v = rawget(self, k)
if v ~= nil then
return v
end
local mt = getmetatable(self)
if not mt or type(mt.__index) ~= "table" then
return nil
end
self = mt.__index
end
end
-- @function Factory
-- @brief Construct a factory for the creation of objects.
-- @param obj The object whose init method will be called on the new factory
-- object.
-- @param newobj The object whose init method will be called on the new
-- objects that the Factory creates, to initialize them.
-- @param (...) Arguments which will be passed to obj.init() in addition
-- to the Factory object.
-- @return The new factory which creates a newobj when its new method is called,
-- or when it is called directly (__call metamethod).
local Factory
do
local function getlibraries(...)
if select('#', ...) == 0 then
return
end
return getlibrary((select(1, ...))), getlibraries(select(2, ...))
end
local arg = {}
local function new(obj, ...)
local t = {}
local uid = getuid(t)
obj:init(t, getlibraries(...))
t.uid = uid
return t
end
local function createnew(self, ...)
local o = self.prototype
local x = new(o, getlibraries(...))
return x
end
function Factory(obj, newobj, ...)
local t = new(obj, ...)
t.prototype = newobj
t.new = createnew
getmetatable(t).__call = t.new
return t
end
end
local function objtostring(self)
if self.ToString then
return self:ToString()
elseif self.GetLibraryVersion then
return (self:GetLibraryVersion())
elseif self.super then
local s = "Sub-" .. tostring(self.super)
local first = true
if self.interfaces then
for interface in pairs(self.interfaces) do
if first then
s = s .. "(" .. tostring(interface)
first = false
else
s = s .. ", " .. tostring(interface)
end
end
end
if self.mixins then
for mixin in pairs(self.mixins) do
if first then
s = s .. tostring(mixin)
first = false
else
s = s .. ", " .. tostring(mixin)
end
end
end
if first then
if self.uid then
return s .. ":" .. self.uid
else
return s
end
else
return s .. ")"
end
else
return self.uid and 'Subclass:' .. self.uid or 'Subclass'
end
end
-- @table Object
-- @brief Base of all objects, including Class.
--
-- @method init
-- @brief Initialize a new object.
-- @param newobject The object to initialize
-- @param class The class to make newobject inherit from
local Object
do
Object = {}
function Object:init(newobject, class)
local parent = class or self
if not rawget(newobject, 'uid') then
newobject.uid = getuid(newobject)
end
local mt = {
__index = parent,
__tostring = objtostring,
}
setmetatable(newobject, mt)
end
Object.uid = getuid(Object)
setmetatable(Object, { __tostring = function() return 'Object' end })
end
local Interface
local function validateInterface(object, interface)
if not object.class and object.prototype then
object = object.prototype
end
for k,v in pairs(interface.interface) do
if tostring(type(object[k])) ~= v then
return false
end
end
if interface.superinterfaces then
for superinterface in pairs(interface.superinterfaces) do
if not validateInterface(object, superinterface) then
return false
end
end
end
if type(object.class) == "table" and rawequal(object.class.prototype, object) then
if not object.class.interfaces then
rawset(object.class, 'interfaces', {})
end
object.class.interfaces[interface] = true
elseif type(object.class) == "table" and type(object.class.prototype) == "table" then
validateInterface(object.class.prototype, interface)
-- check if class is proper, thus preventing future checks.
end
return true
end
-- @function inherits
-- @brief Return whether an Object or Class inherits from a given
-- parent.
-- @param object Object or Class to check
-- @param parent Parent to test inheritance from
-- @return whether an Object or Class inherits from a given
-- parent.
local function inherits(object, parent)
object = getlibrary(object)
if type(parent) == "string" then
if not AceLibrary:HasInstance(parent) then
return false
else
parent = AceLibrary(parent)
end
end
AceOO:argCheck(parent, 2, "table")
if type(object) ~= "table" then
return false
end
local current
local class = deeprawget(object, 'class')
if class then
current = class
else
current = object
end
if type(current) ~= "table" then
return false
end
if rawequal(current, parent) then
return true
end
if parent.class then
while true do
if rawequal(current, Object) then
break
end
if current.mixins then
for mixin in pairs(current.mixins) do
if rawequal(mixin, parent) then
return true
end
end
end
if current.interfaces then
for interface in pairs(current.interfaces) do
if rawequal(interface, parent) then
return true
end
end
end
current = deeprawget(current, 'super')
if type(current) ~= "table" then
break
end
end
local isInterface = false
local curr = parent.class
while true do
if rawequal(curr, Object) then
break
elseif rawequal(curr, Interface) then
isInterface = true
break
end
curr = deeprawget(curr, 'super')
if type(curr) ~= "table" then
break
end
end
return isInterface and validateInterface(object, parent)
else
while true do
if rawequal(current, parent) then
return true
elseif rawequal(current, Object) then
return false
end
current = deeprawget(current, 'super')
if type(current) ~= "table" then
return false
end
end
end
end
-- @table Class
-- @brief An object factory which sets up inheritence and supports
-- 'mixins'.
--
-- @metamethod Class call
-- @brief Call ClassFactory:new() to create a new class.
--
-- @method Class new
-- @brief Construct a new object.
-- @param (...) Arguments to pass to the object init function.
-- @return The new object.
--
-- @method Class init
-- @brief Initialize a new class.
-- @param parent Superclass.
-- @param (...) Mixins.
--
-- @method Class ToString
-- @return A string representing the object, in this case 'Class'.
local initStatus
local Class
local Mixin
local autoEmbed = false
local function traverseInterfaces(bit, total)
if bit.superinterfaces then
for interface in pairs(bit.superinterfaces) do
if not total[interface] then
total[interface] = true
traverseInterfaces(interface, total)
end
end
end
end
local class_new
do
Class = Factory(Object, setmetatable({}, {__index = Object}), Object)
Class.super = Object
local function protostring(t)
return '<' .. tostring(t.class) .. ' prototype>'
end
local function classobjectstring(t)
if t.ToString then
return t:ToString()
elseif t.GetLibraryVersion then
return (t:GetLibraryVersion())
else
return '<' .. tostring(t.class) .. ' instance>'
end
end
local function classobjectequal(self, other)
if type(self) == "table" and self.Equals then
return self:Equals(other)
elseif type(other) == "table" and other.Equals then
return other:Equals(self)
elseif type(self) == "table" and self.CompareTo then
return self:CompareTo(other) == 0
elseif type(other) == "table" and other.CompareTo then
return other:CompareTo(self) == 0
else
return rawequal(self, other)
end
end
local function classobjectlessthan(self, other)
if type(self) == "table" and self.IsLessThan then
return self:IsLessThan(other)
elseif type(other) == "table" and other.IsLessThanOrEqualTo then
return not other:IsLessThanOrEqualTo(self)
elseif type(self) == "table" and self.CompareTo then
return self:CompareTo(other) < 0
elseif type(other) == "table" and other.CompareTo then
return other:CompareTo(self) > 0
elseif type(other) == "table" and other.IsLessThan and other.Equals then
return other:Equals(self) or other:IsLessThan(self)
else
AceOO:error("cannot compare two objects")
end
end
local function classobjectlessthanequal(self, other)
if type(self) == "table" and self.IsLessThanOrEqualTo then
return self:IsLessThanOrEqualTo(other)
elseif type(other) == "table" and other.IsLessThan then
return not other:IsLessThan(self)
elseif type(self) == "table" and self.CompareTo then
return self:CompareTo(other) <= 0
elseif type(other) == "table" and other.CompareTo then
return other:CompareTo(self) >= 0
elseif type(self) == "table" and self.IsLessThan and self.Equals then
return self:Equals(other) or self:IsLessThan(other)
else
AceOO:error("cannot compare two incompatible objects")
end
end
local function classobjectadd(self, other)
if type(self) == "table" and self.Add then
return self:Add(other)
else
AceOO:error("cannot add two incompatible objects")
end
end
local function classobjectsub(self, other)
if type(self) == "table" and self.Subtract then
return self:Subtract(other)
else
AceOO:error("cannot subtract two incompatible objects")
end
end
local function classobjectunm(self, other)
if type(self) == "table" and self.UnaryNegation then
return self:UnaryNegation(other)
else
AceOO:error("attempt to negate an incompatible object")
end
end
local function classobjectmul(self, other)
if type(self) == "table" and self.Multiply then
return self:Multiply(other)
else
AceOO:error("cannot multiply two incompatible objects")
end
end
local function classobjectdiv(self, other)
if type(self) == "table" and self.Divide then
return self:Divide(other)
else
AceOO:error("cannot divide two incompatible objects")
end
end
local function classobjectpow(self, other)
if type(self) == "table" and self.Exponent then
return self:Exponent(other)
else
AceOO:error("cannot exponentiate two incompatible objects")
end
end
local function classobjectconcat(self, other)
if type(self) == "table" and self.Concatenate then
return self:Concatenate(other)
else
AceOO:error("cannot concatenate two incompatible objects")
end
end
function class_new(self, ...)
if self.virtual then
AceOO:error("Cannot instantiate a virtual class.")
end
local o = self.prototype
local newobj = {}
if o.class and o.class.instancemeta then
setmetatable(newobj, o.class.instancemeta)
else
Object:init(newobj, o)
end
if self.interfaces and not self.interfacesVerified then
-- Verify the interfaces
for interface in pairs(self.interfaces) do
for field,kind in pairs(interface.interface) do
if tostring(type(newobj[field])) ~= kind then
AceOO:error("Class did not satisfy all interfaces. %q is required to be a %s. It is a %s", field, kind, tostring(type(newobj[field])))
end
end
end
self.interfacesVerified = true
end
local tmp = initStatus
initStatus = newobj
newobj:init(...)
if initStatus then
initStatus = tmp
AceOO:error("Initialization not completed, be sure to call the superclass's init method.")
return
end
initStatus = tmp
return newobj
end
local classmeta = {
__tostring = objtostring,
__call = function(self, ...)
return self:new(...)
end,
}
function Class:init(newclass, parent, ...)
parent = parent or self
local total
if parent.class then
total = { parent, ... }
parent = self
else
total = { ... }
end
if not inherits(parent, Class) then
AceOO:error("Classes must inherit from a proper class")
end
if parent.sealed then
AceOO:error("Cannot inherit from a sealed class")
end
for i,v in ipairs(total) do
if inherits(v, Mixin) and v.class then
if v.__deprecated then
AceOO:error(v.__deprecated)
end
if not newclass.mixins then
newclass.mixins = {}
end
if newclass.mixins[v] then
AceOO:error("Cannot explicitly inherit from the same mixin twice")
end
newclass.mixins[v] = true
elseif inherits(v, Interface) and v.class then
if not newclass.interfaces then
newclass.interfaces = {}
end
if newclass.interfaces[v] then
AceOO:error("Cannot explicitly inherit from the same interface twice")
end
newclass.interfaces[v] = true
else
AceOO:error("Classes can only inherit from one or zero classes and any number of mixins or interfaces")
end
end
if parent.interfaces then
if not newclass.interfaces then
newclass.interfaces = {}
end
for interface in pairs(parent.interfaces) do
newclass.interfaces[interface] = true
end
end
for k in pairs(total) do
total[k] = nil
end
newclass.super = parent
newclass.prototype = setmetatable(total, {
__index = parent.prototype,
__tostring = protostring,
})
total = nil
newclass.instancemeta = {
__index = newclass.prototype,
__tostring = classobjectstring,
__eq = classobjectequal,
__lt = classobjectlessthan,
__le = classobjectlessthanequal,
__add = classobjectadd,
__sub = classobjectsub,
__unm = classobjectunm,
__mul = classobjectmul,
__div = classobjectdiv,
__pow = classobjectpow,
__concat = classobjectconcat,
}
setmetatable(newclass, classmeta)
newclass.new = class_new
if newclass.mixins then
-- Fold in the mixins
local err, msg
for mixin in pairs(newclass.mixins) do
local ret
autoEmbed = true
ret, msg = pcall(mixin.embed, mixin, newclass.prototype)
autoEmbed = false
if not ret then
err = true
break
end
end
if err then
local pt = newclass.prototype
for k,v in pairs(pt) do
pt[k] = nil
end
-- method conflict
AceOO:error(msg)
end
end
newclass.prototype.class = newclass
if newclass.interfaces then
for interface in pairs(newclass.interfaces) do
traverseInterfaces(interface, newclass.interfaces)
end
end
if newclass.mixins then
for mixin in pairs(newclass.mixins) do
if mixin.interfaces then
if not newclass.interfaces then
newclass.interfaces = {}
end
for interface in pairs(mixin.interfaces) do
newclass.interfaces[interface] = true
end
end
end
end
end
function Class:ToString()
if type(self.GetLibraryVersion) == "function" then
return (self:GetLibraryVersion())
else
return "Class"
end
end
local tmp
function Class.prototype:init()
if rawequal(self, initStatus) then
initStatus = nil
else
AceOO:error("Improper self passed to init. You must do MyClass.super.prototype.init(self, ...)", 2)
end
self.uid = getuid(self)
local current = self.class
while true do
if current == Class then
break
end
if current.mixins then
for mixin in pairs(current.mixins) do
if type(mixin.OnInstanceInit) == "function" then
mixin:OnInstanceInit(self)
end
end
end
current = current.super
end
end
end
-- @object ClassFactory
-- @brief A factory for creating classes. Rarely used directly.
local ClassFactory = Factory(Object, Class, Object)
function Class:new(...)
local x = ClassFactory:new(...)
if AceOO.classes then
AceOO.classes[x] = true
end
return x
end
getmetatable(Class).__call = Class.new
-- @class Mixin
-- @brief A class to create mixin objects, which contain methods that get
-- "mixed in" to class prototypes.
--
-- @object Mixin prototype
-- @brief The prototype that mixin objects inherit their methods from.
--
-- @method Mixin prototype embed
-- @brief Mix in the methods of our object which are listed in our interface
-- to the supplied target table.
--
-- @method Mixin prototype init
-- @brief Initialize the mixin object.
-- @param newobj The new object we're initializing.
-- @param interface The interface we implement (the list of methods our
-- prototype provides which should be mixed into the target
-- table by embed).
do
Mixin = Class()
function Mixin:ToString()
if self.GetLibraryVersion then
return (self:GetLibraryVersion())
else
return 'Mixin'
end
end
local function _Embed(state, field, target)
field = next(state.export, field)
if field == nil then
return
end
if rawget(target, field) or (target[field] and target[field] ~= state[field]) then
AceOO:error("Method conflict in attempt to mixin. Field %q", field)
end
target[field] = state[field]
local ret,msg = pcall(_Embed, state, field, target)
if not ret then
-- Mix in the next method according to the defined interface. If that
-- fails due to a conflict, re-raise to back out the previous mixed
-- methods.
target[field] = nil
AceOO:error(msg)
end
end
function Mixin.prototype:embed(target)
if self.__deprecated then
AceOO:error(self.__deprecated)
end
local mt = getmetatable(target)
setmetatable(target, nil)
local err, msg = pcall(_Embed, self, nil, target)
if not err then
setmetatable(target, mt)
AceOO:error(msg)
return
end
if type(self.embedList) == "table" then
self.embedList[target] = true
end
if type(target.class) ~= "table" then
target[self] = true
end
if not autoEmbed and type(self.OnManualEmbed) == "function" then
self:OnManualEmbed(target)
end
setmetatable(target, mt)
end
function Mixin.prototype:activate(oldLib, oldDeactivate)
if oldLib and oldLib.embedList then
for target in pairs(oldLib.embedList) do
local mt = getmetatable(target)
setmetatable(target, nil)
for field in pairs(oldLib.export) do
target[field] = nil
end
setmetatable(target, mt)
end
self.embedList = oldLib.embedList
for target in pairs(self.embedList) do
self:embed(target)
end
else
self.embedList = setmetatable({}, {__mode="k"})
end
end
function Mixin.prototype:init(export, ...)
AceOO:argCheck(export, 2, "table")
for k,v in pairs(export) do
if type(k) ~= "number" then
AceOO:error("All keys to argument #2 must be numbers.")
elseif type(v) ~= "string" then
AceOO:error("All values to argument #2 must be strings.")
end
end
local num = #export
for i = 1, num do
local v = export[i]
export[i] = nil
export[v] = true
end
local interfaces
if select('#', ...) >= 1 then
interfaces = { ... }
for i,v in ipairs(interfaces) do
v = getlibrary(v)
interfaces[i] = v
if not v.class or not inherits(v, Interface) then
AceOO:error("Mixins can inherit only from interfaces")
end
end
local num = #interfaces
for i = 1, num do
local v = interfaces[i]
interfaces[i] = nil
interfaces[v] = true
end
for interface in pairs(interfaces) do
traverseInterfaces(interface, interfaces)
end
for interface in pairs(interfaces) do
for field,kind in pairs(interface.interface) do
if kind ~= "nil" then
local good = false
for bit in pairs(export) do
if bit == field then
good = true
break
end
end
if not good then
AceOO:error("Mixin does not fully accommodate field %q", field)
end
end
end
end
end
self.super = Mixin.prototype
Mixin.super.prototype.init(self)
self.export = export
self.interfaces = interfaces
end
end
-- @class Interface
-- @brief A class to create interfaces, which contain contracts that classes
-- which inherit from this must comply with.
--
-- @object Interface prototype
-- @brief The prototype that interface objects must adhere to.
--
-- @method Interface prototype init
-- @brief Initialize the mixin object.
-- @param interface The interface we contract (the hash of fields forced).
-- @param (...) Superinterfaces
do
Interface = Class()
function Interface:ToString()
if self.GetLibraryVersion then
return (self:GetLibraryVersion())
else
return 'Instance'
end
end
function Interface.prototype:init(interface, ...)
Interface.super.prototype.init(self)
AceOO:argCheck(interface, 2, "table")
for k,v in pairs(interface) do
if type(k) ~= "string" then
AceOO:error("All keys to argument #2 must be numbers.")
elseif type(v) ~= "string" then
AceOO:error("All values to argument #2 must be strings.")
elseif v ~= "nil" and v ~= "string" and v ~= "number" and v ~= "table" and v ~= "function" then
AceOO:error('All values to argument #2 must either be "nil", "string", "number", "table", or "function".')
end
end
if select('#', ...) >= 1 then
self.superinterfaces = { ... }
for i,v in ipairs(self.superinterfaces) do
v = getlibrary(v)
self.superinterfaces[i] = v
if not inherits(v, Interface) or not v.class then
AceOO:error('Cannot provide a non-Interface to inherit from')
end
end
local num = #self.superinterfaces
for i = 1, num do
local v = self.superinterfaces[i]
self.superinterfaces[i] = nil
self.superinterfaces[v] = true
end
end
self.interface = interface
end
end
-- @function Classpool
-- @brief Obtain a read only class from our pool of classes, indexed by the
-- superclass and mixins.
-- @param sc The superclass of the class we want.
-- @param (m1..m20) Mixins of the class we want's objects.
-- @return A read only class from the class pool.
local Classpool
do
local pool = setmetatable({}, {__mode = 'v'})
local function newindex(k, v)
AceOO:error('Attempt to modify a read-only class.')
end
local function protonewindex(k, v)
AceOO:error('Attempt to modify a read-only class prototype.')
end
local function ts(bit)
if type(bit) ~= "table" then
return tostring(bit)
elseif getmetatable(bit) and bit.__tostring then
return tostring(bit)
elseif type(bit.GetLibraryVersion) == "function" then
return bit:GetLibraryVersion()
else
return tostring(bit)
end
end
local t = {}
local function getcomplexuid(sc, ...)
if sc then
if sc.uid then
table.insert(t, sc.uid)
else
AceOO:error("%s is not an appropriate class/mixin", ts(sc))
end
end
for i = 1, select('#', ...) do
local m = select(i, ...)
if m.uid then
table.insert(t, m.uid)
else
AceOO:error("%s is not an appropriate mixin", ts(m))
end
end
table.sort(t)
local uid = table.concat(t, '')
local num = #t
for i = 1, num do
t[i] = nil
end
return uid
end
local classmeta
local arg = {}
function Classpool(superclass, ...)
local l = getlibrary
superclass = getlibrary(superclass)
arg = { ... }
for i, v in ipairs(arg) do
arg[i] = getlibrary(v)
end
if superclass then
if superclass.class then -- mixin
table.insert(arg, 1, superclass)
superclass = Class
end
else
superclass = Class
end
local key = getcomplexuid(superclass, unpack(arg))
if not pool[key] then
local class = Class(superclass, unpack(arg))
if not classmeta then
classmeta = {}
local mt = getmetatable(class)
for k,v in pairs(mt) do
classmeta[k] = v
end
classmeta.__newindex = newindex
end
-- Prevent the user from adding methods to this class.
-- NOTE: I'm not preventing modifications of existing class members,
-- but it's likely that only a truly malicious user will be doing so.
class.sealed = true
setmetatable(class, classmeta)
getmetatable(class.prototype).__newindex = protonewindex
pool[key] = class
end
return pool[key]
end
end
AceOO.Factory = Factory
AceOO.Object = Object
AceOO.Class = Class
AceOO.Mixin = Mixin
AceOO.Interface = Interface
AceOO.Classpool = Classpool
AceOO.inherits = inherits
-- Library handling bits
local function activate(self, oldLib, oldDeactivate)
AceOO = self
Factory = self.Factory
Object = self.Object
Class = self.Class
ClassFactory.prototype = Class
Mixin = self.Mixin
Interface = self.Interface
Classpool = self.Classpool
if oldLib then
self.classes = oldLib.classes
end
if not self.classes then
self.classes = setmetatable({}, {__mode="k"})
else
for class in pairs(self.classes) do
class.new = class_new
end
end
if oldDeactivate then
oldDeactivate(oldLib)
end
end
AceLibrary:Register(AceOO, MAJOR_VERSION, MINOR_VERSION, activate)
AceOO = AceLibrary(MAJOR_VERSION)
+16
View File
@@ -0,0 +1,16 @@
## Interface: 30300
## X-Curse-Packaged-Version: r1101
## X-Curse-Project-Name: Ace2
## X-Curse-Project-ID: ace2
## X-Curse-Repository-ID: wow/ace2/mainline
## Title: Lib: AceOO-2.0
## Notes: AddOn development framework
## Author: Ace Development Team
## LoadOnDemand: 1
## X-Website: http://www.wowace.com
## X-Category: Library
## X-License: LGPL v2.1 + MIT for AceOO-2.0
## Dependencies: AceLibrary
AceOO-2.0.lua
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,799 @@
--[[
Name: AceLibrary
Revision: $Rev: 1091 $
Developed by: The Ace Development Team (http://www.wowace.com/index.php/The_Ace_Development_Team)
Inspired By: Iriel (iriel@vigilance-committee.org)
Tekkub (tekkub@gmail.com)
Revision: $Rev: 1091 $
Website: http://www.wowace.com/
Documentation: http://www.wowace.com/index.php/AceLibrary
SVN: http://svn.wowace.com/wowace/trunk/Ace2/AceLibrary
Description: Versioning library to handle other library instances, upgrading,
and proper access.
It also provides a base for libraries to work off of, providing
proper error tools. It is handy because all the errors occur in the
file that called it, not in the library file itself.
Dependencies: None
License: LGPL v2.1
]]
local ACELIBRARY_MAJOR = "AceLibrary"
local ACELIBRARY_MINOR = 90000 + tonumber(("$Revision: 1091 $"):match("(%d+)"))
local _G = getfenv(0)
local previous = _G[ACELIBRARY_MAJOR]
if previous and not previous:IsNewVersion(ACELIBRARY_MAJOR, ACELIBRARY_MINOR) then return end
do
-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
-- LibStub is hereby placed in the Public Domain -- Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
local LibStub = _G[LIBSTUB_MAJOR]
if not LibStub or LibStub.minor < LIBSTUB_MINOR then
LibStub = LibStub or {libs = {}, minors = {} }
_G[LIBSTUB_MAJOR] = LibStub
LibStub.minor = LIBSTUB_MINOR
function LibStub:NewLibrary(major, minor)
assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
local oldminor = self.minors[major]
if oldminor and oldminor >= minor then return nil end
self.minors[major], self.libs[major] = minor, self.libs[major] or {}
return self.libs[major], oldminor
end
function LibStub:GetLibrary(major, silent)
if not self.libs[major] and not silent then
error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
end
return self.libs[major], self.minors[major]
end
function LibStub:IterateLibraries() return pairs(self.libs) end
setmetatable(LibStub, { __call = LibStub.GetLibrary })
end
end
local LibStub = _G.LibStub
-- If you don't want AceLibrary to enable libraries that are LoadOnDemand but
-- disabled in the addon screen, set this to true.
local DONT_ENABLE_LIBRARIES = nil
local function safecall(func,...)
local success, err = pcall(func,...)
if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("\n(.-: )in.-\n") or "") .. err) end
end
-- @table AceLibrary
-- @brief System to handle all versioning of libraries.
local AceLibrary = {}
local AceLibrary_mt = {}
setmetatable(AceLibrary, AceLibrary_mt)
local function error(self, message, ...)
if type(self) ~= "table" then
return _G.error(("Bad argument #1 to `error' (table expected, got %s)"):format(type(self)), 2)
end
local stack = debugstack()
if not message then
local second = stack:match("\n(.-)\n")
message = "error raised! " .. second
else
local arg = { ... } -- not worried about table creation, as errors don't happen often
for i = 1, #arg do
arg[i] = tostring(arg[i])
end
for i = 1, 10 do
table.insert(arg, "nil")
end
message = message:format(unpack(arg))
end
if getmetatable(self) and getmetatable(self).__tostring then
message = ("%s: %s"):format(tostring(self), message)
elseif type(rawget(self, 'GetLibraryVersion')) == "function" and AceLibrary:HasInstance(self:GetLibraryVersion()) then
message = ("%s: %s"):format(self:GetLibraryVersion(), message)
elseif type(rawget(self, 'class')) == "table" and type(rawget(self.class, 'GetLibraryVersion')) == "function" and AceLibrary:HasInstance(self.class:GetLibraryVersion()) then
message = ("%s: %s"):format(self.class:GetLibraryVersion(), message)
end
local first = stack:gsub("\n.*", "")
local file = first:gsub(".*\\(.*).lua:%d+: .*", "%1")
file = file:gsub("([%(%)%.%*%+%-%[%]%?%^%$%%])", "%%%1")
local i = 0
for s in stack:gmatch("\n([^\n]*)") do
i = i + 1
if not s:find(file .. "%.lua:%d+:") and not s:find("%(tail call%)") then
file = s:gsub("^.*\\(.*).lua:%d+: .*", "%1")
file = file:gsub("([%(%)%.%*%+%-%[%]%?%^%$%%])", "%%%1")
break
end
end
local j = 0
for s in stack:gmatch("\n([^\n]*)") do
j = j + 1
if j > i and not s:find(file .. "%.lua:%d+:") and not s:find("%(tail call%)") then
return _G.error(message, j+1)
end
end
return _G.error(message, 2)
end
local type = type
local function argCheck(self, arg, num, kind, kind2, kind3, kind4, kind5)
if type(num) ~= "number" then
return error(self, "Bad argument #3 to `argCheck' (number expected, got %s)", type(num))
elseif type(kind) ~= "string" then
return error(self, "Bad argument #4 to `argCheck' (string expected, got %s)", type(kind))
end
arg = type(arg)
if arg ~= kind and arg ~= kind2 and arg ~= kind3 and arg ~= kind4 and arg ~= kind5 then
local stack = debugstack()
local func = stack:match("`argCheck'.-([`<].-['>])")
if not func then
func = stack:match("([`<].-['>])")
end
if kind5 then
return error(self, "Bad argument #%s to %s (%s, %s, %s, %s, or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, kind3, kind4, kind5, arg)
elseif kind4 then
return error(self, "Bad argument #%s to %s (%s, %s, %s, or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, kind3, kind4, arg)
elseif kind3 then
return error(self, "Bad argument #%s to %s (%s, %s, or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, kind3, arg)
elseif kind2 then
return error(self, "Bad argument #%s to %s (%s or %s expected, got %s)", tonumber(num) or 0/0, func, kind, kind2, arg)
else
return error(self, "Bad argument #%s to %s (%s expected, got %s)", tonumber(num) or 0/0, func, kind, arg)
end
end
end
local pcall
do
local function check(self, ret, ...)
if not ret then
local s = ...
return error(self, (s:gsub(".-%.lua:%d-: ", "")))
else
return ...
end
end
function pcall(self, func, ...)
return check(self, _G.pcall(func, ...))
end
end
local recurse = {}
local function addToPositions(t, major)
if not AceLibrary.positions[t] or AceLibrary.positions[t] == major then
rawset(t, recurse, true)
AceLibrary.positions[t] = major
for k,v in pairs(t) do
if type(v) == "table" and not rawget(v, recurse) then
addToPositions(v, major)
end
if type(k) == "table" and not rawget(k, recurse) then
addToPositions(k, major)
end
end
local mt = getmetatable(t)
if mt and not rawget(mt, recurse) then
addToPositions(mt, major)
end
rawset(t, recurse, nil)
end
end
local function svnRevisionToNumber(text)
local kind = type(text)
if kind == "number" or tonumber(text) then
return tonumber(text)
elseif kind == "string" then
if text:find("^%$Revision: (%d+) %$$") then
return tonumber((text:match("^%$Revision: (%d+) %$$")))
elseif text:find("^%$Rev: (%d+) %$$") then
return tonumber((text:match("^%$Rev: (%d+) %$$")))
elseif text:find("^%$LastChangedRevision: (%d+) %$$") then
return tonumber((text:match("^%$LastChangedRevision: (%d+) %$$")))
end
end
return nil
end
local crawlReplace
do
local recurse = {}
local function func(t, to, from)
if recurse[t] then
return
end
recurse[t] = true
local mt = getmetatable(t)
setmetatable(t, nil)
rawset(t, to, rawget(t, from))
rawset(t, from, nil)
for k,v in pairs(t) do
if v == from then
t[k] = to
elseif type(v) == "table" then
if not recurse[v] then
func(v, to, from)
end
end
if type(k) == "table" then
if not recurse[k] then
func(k, to, from)
end
end
end
setmetatable(t, mt)
if mt then
if mt == from then
setmetatable(t, to)
elseif not recurse[mt] then
func(mt, to, from)
end
end
end
function crawlReplace(t, to, from)
func(t, to, from)
for k in pairs(recurse) do
recurse[k] = nil
end
end
end
-- @function destroyTable
-- @brief remove all the contents of a table
-- @param t table to destroy
local function destroyTable(t)
setmetatable(t, nil)
for k,v in pairs(t) do
t[k] = nil
end
end
local function isFrame(frame)
return type(frame) == "table" and type(rawget(frame, 0)) == "userdata" and type(rawget(frame, 'IsFrameType')) == "function" and getmetatable(frame) and type(rawget(getmetatable(frame), '__index')) == "function"
end
-- @function copyTable
-- @brief Create a shallow copy of a table and return it.
-- @param from The table to copy from
-- @return A shallow copy of the table
local function copyTable(from, to)
if not to then
to = {}
end
for k,v in pairs(from) do
to[k] = v
end
setmetatable(to, getmetatable(from))
return to
end
-- @function deepTransfer
-- @brief Fully transfer all data, keeping proper previous table
-- backreferences stable.
-- @param to The table with which data is to be injected into
-- @param from The table whose data will be injected into the first
-- @param saveFields If available, a shallow copy of the basic data is saved
-- in here.
-- @param list The account of table references
-- @param list2 The current status on which tables have been traversed.
local deepTransfer
do
-- @function examine
-- @brief Take account of all the table references to be shared
-- between the to and from tables.
-- @param to The table with which data is to be injected into
-- @param from The table whose data will be injected into the first
-- @param list An account of the table references
local function examine(to, from, list, major)
list[from] = to
for k,v in pairs(from) do
if rawget(to, k) and type(from[k]) == "table" and type(to[k]) == "table" and not list[from[k]] then
if from[k] == to[k] then
list[from[k]] = to[k]
elseif AceLibrary.positions[from[v]] ~= major and AceLibrary.positions[from[v]] then
list[from[k]] = from[k]
elseif not list[from[k]] then
examine(to[k], from[k], list, major)
end
end
end
return list
end
function deepTransfer(to, from, saveFields, major, list, list2)
setmetatable(to, nil)
if not list then
list = {}
list2 = {}
examine(to, from, list, major)
end
list2[to] = to
for k,v in pairs(to) do
if type(rawget(from, k)) ~= "table" or type(v) ~= "table" or isFrame(v) then
if saveFields then
saveFields[k] = v
end
to[k] = nil
elseif v ~= _G then
if saveFields then
saveFields[k] = copyTable(v)
end
end
end
for k in pairs(from) do
if rawget(to, k) and to[k] ~= from[k] and AceLibrary.positions[to[k]] == major and from[k] ~= _G then
if not list2[to[k]] then
deepTransfer(to[k], from[k], nil, major, list, list2)
end
to[k] = list[to[k]] or list2[to[k]]
else
rawset(to, k, from[k])
end
end
setmetatable(to, getmetatable(from))
local mt = getmetatable(to)
if mt then
if list[mt] then
setmetatable(to, list[mt])
elseif mt.__index and list[mt.__index] then
mt.__index = list[mt.__index]
end
end
destroyTable(from)
end
end
local function TryToEnable(addon)
if DONT_ENABLE_LIBRARIES then return end
local isondemand = IsAddOnLoadOnDemand(addon)
if isondemand then
local _, _, _, enabled = GetAddOnInfo(addon)
EnableAddOn(addon)
local _, _, _, _, loadable = GetAddOnInfo(addon)
if not loadable and not enabled then
DisableAddOn(addon)
end
return loadable
end
end
-- @method TryToLoadStandalone
-- @brief Attempt to find and load a standalone version of the requested library
-- @param major A string representing the major version
-- @return If library is found and loaded, true is return. If not loadable, false is returned.
-- If the library has been requested previously, nil is returned.
local function TryToLoadStandalone(major)
if not AceLibrary.scannedlibs then AceLibrary.scannedlibs = {} end
if AceLibrary.scannedlibs[major] then return end
AceLibrary.scannedlibs[major] = true
local name, _, _, enabled, loadable = GetAddOnInfo(major)
loadable = (enabled and loadable) or TryToEnable(name)
local loaded = false
if loadable then
loaded = true
LoadAddOn(name)
end
local field = "X-AceLibrary-" .. major
for i = 1, GetNumAddOns() do
if GetAddOnMetadata(i, field) then
name, _, _, enabled, loadable = GetAddOnInfo(i)
loadable = (enabled and loadable) or TryToEnable(name)
if loadable then
loaded = true
LoadAddOn(name)
end
end
end
return loaded
end
-- @method IsNewVersion
-- @brief Obtain whether the supplied version would be an upgrade to the
-- current version. This allows for bypass code in library
-- declaration.
-- @param major A string representing the major version
-- @param minor An integer or an svn revision string representing the minor version
-- @return whether the supplied version would be newer than what is
-- currently available.
function AceLibrary:IsNewVersion(major, minor)
argCheck(self, major, 2, "string")
TryToLoadStandalone(major)
if type(minor) == "string" then
local m = svnRevisionToNumber(minor)
if m then
minor = m
else
_G.error(("Bad argument #3 to `IsNewVersion'. Must be a number or SVN revision string. %q is not appropriate"):format(minor), 2)
end
end
argCheck(self, minor, 3, "number")
local lib, oldMinor = LibStub:GetLibrary(major, true)
if lib then
return oldMinor < minor
end
local data = self.libs[major]
if not data then
return true
end
return data.minor < minor
end
-- @method HasInstance
-- @brief Returns whether an instance exists. This allows for optional support of a library.
-- @param major A string representing the major version.
-- @param minor (optional) An integer or an svn revision string representing the minor version.
-- @return Whether an instance exists.
function AceLibrary:HasInstance(major, minor)
argCheck(self, major, 2, "string")
if minor ~= false then
TryToLoadStandalone(major)
end
local lib, ver = LibStub:GetLibrary(major, true)
if not lib and self.libs[major] then
lib, ver = self.libs[major].instance, self.libs[major].minor
end
if minor then
if type(minor) == "string" then
local m = svnRevisionToNumber(minor)
if m then
minor = m
else
_G.error(("Bad argument #3 to `HasInstance'. Must be a number or SVN revision string. %q is not appropriate"):format(minor), 2)
end
end
argCheck(self, minor, 3, "number")
if not lib then
return false
end
return ver == minor
end
return not not lib
end
-- @method GetInstance
-- @brief Returns the library with the given major/minor version.
-- @param major A string representing the major version.
-- @param minor (optional) An integer or an svn revision string representing the minor version.
-- @return The library with the given major/minor version.
function AceLibrary:GetInstance(major, minor)
argCheck(self, major, 2, "string")
if minor ~= false then
TryToLoadStandalone(major)
end
local data, ver = LibStub:GetLibrary(major, true)
if not data then
if self.libs[major] then
data, ver = self.libs[major].instance, self.libs[major].minor
else
_G.error(("Cannot find a library instance of %s."):format(major), 2)
return
end
end
if minor then
if type(minor) == "string" then
local m = svnRevisionToNumber(minor)
if m then
minor = m
else
_G.error(("Bad argument #3 to `GetInstance'. Must be a number or SVN revision string. %q is not appropriate"):format(minor), 2)
end
end
argCheck(self, minor, 2, "number")
if ver ~= minor then
_G.error(("Cannot find a library instance of %s, minor version %d."):format(major, minor), 2)
end
end
return data
end
-- Syntax sugar. AceLibrary("FooBar-1.0")
AceLibrary_mt.__call = AceLibrary.GetInstance
local donothing = function() end
local AceEvent
local tmp = {}
-- @method Register
-- @brief Registers a new version of a given library.
-- @param newInstance the library to register
-- @param major the major version of the library
-- @param minor the minor version of the library
-- @param activateFunc (optional) A function to be called when the library is
-- fully activated. Takes the arguments
-- (newInstance [, oldInstance, oldDeactivateFunc]). If
-- oldInstance is given, you should probably call
-- oldDeactivateFunc(oldInstance).
-- @param deactivateFunc (optional) A function to be called by a newer library's
-- activateFunc.
-- @param externalFunc (optional) A function to be called whenever a new
-- library is registered.
function AceLibrary:Register(newInstance, major, minor, activateFunc, deactivateFunc, externalFunc)
argCheck(self, newInstance, 2, "table")
argCheck(self, major, 3, "string")
if major ~= ACELIBRARY_MAJOR then
for k,v in pairs(_G) do
if v == newInstance then
geterrorhandler()((debugstack():match("(.-: )in.-\n") or "") .. ("Cannot register library %q. It is part of the global table in _G[%q]."):format(major, k))
end
end
end
if major ~= ACELIBRARY_MAJOR and not major:find("^[%a%-][%a%d%-]*%-%d+%.%d+$") then
_G.error(string.format("Bad argument #3 to `Register'. Must be in the form of \"Name-1.0\". %q is not appropriate", major), 2)
end
if type(minor) == "string" then
local m = svnRevisionToNumber(minor)
if m then
minor = m
else
_G.error(("Bad argument #4 to `Register'. Must be a number or SVN revision string. %q is not appropriate"):format(minor), 2)
end
end
argCheck(self, minor, 4, "number")
if math.floor(minor) ~= minor or minor < 0 then
error(self, "Bad argument #4 to `Register' (integer >= 0 expected, got %s)", minor)
end
argCheck(self, activateFunc, 5, "function", "nil")
argCheck(self, deactivateFunc, 6, "function", "nil")
argCheck(self, externalFunc, 7, "function", "nil")
if not deactivateFunc then
deactivateFunc = donothing
end
local data = self.libs[major]
if not data then
-- This is new
if LibStub:GetLibrary(major, true) then
error(self, "Cannot register library %q. It is already registered with LibStub.", major)
end
local instance = LibStub:NewLibrary(major, minor)
copyTable(newInstance, instance)
crawlReplace(instance, instance, newInstance)
destroyTable(newInstance)
if AceLibrary == newInstance then
self = instance
AceLibrary = instance
end
self.libs[major] = {
instance = instance,
minor = minor,
deactivateFunc = deactivateFunc,
externalFunc = externalFunc,
}
rawset(instance, 'GetLibraryVersion', function(self)
return major, minor
end)
if not rawget(instance, 'error') then
rawset(instance, 'error', error)
end
if not rawget(instance, 'argCheck') then
rawset(instance, 'argCheck', argCheck)
end
if not rawget(instance, 'pcall') then
rawset(instance, 'pcall', pcall)
end
addToPositions(instance, major)
if activateFunc then
safecall(activateFunc, instance, nil, nil) -- no old version, so explicit nil
end
if externalFunc then
for k, data_instance in LibStub:IterateLibraries() do -- all libraries
tmp[k] = data_instance
end
for k, data in pairs(self.libs) do -- Ace libraries which may not have been registered with LibStub
tmp[k] = data.instance
end
for k, data_instance in pairs(tmp) do
if k ~= major then
safecall(externalFunc, instance, k, data_instance)
end
tmp[k] = nil
end
end
for k,data in pairs(self.libs) do -- only Ace libraries
if k ~= major and data.externalFunc then
safecall(data.externalFunc, data.instance, major, instance)
end
end
if major == "AceEvent-2.0" then
AceEvent = instance
end
if AceEvent then
AceEvent.TriggerEvent(self, "AceLibrary_Register", major, instance)
end
return instance
end
if minor <= data.minor then
-- This one is already obsolete, raise an error.
_G.error(("Obsolete library registered. %s is already registered at version %d. You are trying to register version %d. Hint: if not AceLibrary:IsNewVersion(%q, %d) then return end"):format(major, data.minor, minor, major, minor), 2)
return
end
local instance = data.instance
-- This is an update
local oldInstance = {}
local libStubInstance = LibStub:GetLibrary(major, true)
if not libStubInstance then -- non-LibStub AceLibrary registered the library
-- pass
elseif libStubInstance ~= instance then
error(self, "Cannot register library %q. It is already registered with LibStub.", major)
else
LibStub:NewLibrary(major, minor) -- upgrade the minor version
end
addToPositions(newInstance, major)
local isAceLibrary = (AceLibrary == newInstance)
local old_error, old_argCheck, old_pcall
if isAceLibrary then
self = instance
AceLibrary = instance
old_error = instance.error
old_argCheck = instance.argCheck
old_pcall = instance.pcall
self.error = error
self.argCheck = argCheck
self.pcall = pcall
end
deepTransfer(instance, newInstance, oldInstance, major)
crawlReplace(instance, instance, newInstance)
local oldDeactivateFunc = data.deactivateFunc
data.minor = minor
data.deactivateFunc = deactivateFunc
data.externalFunc = externalFunc
rawset(instance, 'GetLibraryVersion', function()
return major, minor
end)
if not rawget(instance, 'error') then
rawset(instance, 'error', error)
end
if not rawget(instance, 'argCheck') then
rawset(instance, 'argCheck', argCheck)
end
if not rawget(instance, 'pcall') then
rawset(instance, 'pcall', pcall)
end
if isAceLibrary then
for _,v in pairs(self.libs) do
local i = type(v) == "table" and v.instance
if type(i) == "table" then
if not rawget(i, 'error') or i.error == old_error then
rawset(i, 'error', error)
end
if not rawget(i, 'argCheck') or i.argCheck == old_argCheck then
rawset(i, 'argCheck', argCheck)
end
if not rawget(i, 'pcall') or i.pcall == old_pcall then
rawset(i, 'pcall', pcall)
end
end
end
end
if activateFunc then
safecall(activateFunc, instance, oldInstance, oldDeactivateFunc)
else
safecall(oldDeactivateFunc, oldInstance)
end
oldInstance = nil
if externalFunc then
for k, data_instance in LibStub:IterateLibraries() do -- all libraries
tmp[k] = data_instance
end
for k, data in pairs(self.libs) do -- Ace libraries which may not have been registered with LibStub
tmp[k] = data.instance
end
for k, data_instance in pairs(tmp) do
if k ~= major then
safecall(externalFunc, instance, k, data_instance)
end
tmp[k] = nil
end
end
return instance
end
function AceLibrary:IterateLibraries()
local t = {}
for major, instance in LibStub:IterateLibraries() do
t[major] = instance
end
for major, data in pairs(self.libs) do
t[major] = data.instance
end
return pairs(t)
end
local function manuallyFinalize(major, instance)
if AceLibrary.libs[major] then
-- don't work on Ace libraries
return
end
local finalizedExternalLibs = AceLibrary.finalizedExternalLibs
if finalizedExternalLibs[major] then
return
end
finalizedExternalLibs[major] = true
for k,data in pairs(AceLibrary.libs) do -- only Ace libraries
if k ~= major and data.externalFunc then
safecall(data.externalFunc, data.instance, major, instance)
end
end
end
-- @function Activate
-- @brief The activateFunc for AceLibrary itself. Called when
-- AceLibrary properly registers.
-- @param self Reference to AceLibrary
-- @param oldLib (optional) Reference to an old version of AceLibrary
-- @param oldDeactivate (optional) Function to deactivate the old lib
local function activate(self, oldLib, oldDeactivate)
AceLibrary = self
if not self.libs then
self.libs = oldLib and oldLib.libs or {}
self.scannedlibs = oldLib and oldLib.scannedlibs or {}
end
if not self.positions then
self.positions = oldLib and oldLib.positions or setmetatable({}, { __mode = "k" })
end
self.finalizedExternalLibs = oldLib and oldLib.finalizedExternalLibs or {}
self.frame = oldLib and oldLib.frame or CreateFrame("Frame")
self.frame:UnregisterAllEvents()
self.frame:RegisterEvent("ADDON_LOADED")
self.frame:SetScript("OnEvent", function()
for major, instance in LibStub:IterateLibraries() do
manuallyFinalize(major, instance)
end
end)
for major, instance in LibStub:IterateLibraries() do
manuallyFinalize(major, instance)
end
-- Expose the library in the global environment
_G[ACELIBRARY_MAJOR] = self
if oldDeactivate then
oldDeactivate(oldLib)
end
end
if not previous then
previous = AceLibrary
end
if not previous.libs then
previous.libs = {}
end
AceLibrary.libs = previous.libs
if not previous.positions then
previous.positions = setmetatable({}, { __mode = "k" })
end
AceLibrary.positions = previous.positions
AceLibrary:Register(AceLibrary, ACELIBRARY_MAJOR, ACELIBRARY_MINOR, activate, nil)
@@ -0,0 +1,15 @@
## Interface: 30300
## X-Curse-Packaged-Version: r1101
## X-Curse-Project-Name: Ace2
## X-Curse-Project-ID: ace2
## X-Curse-Repository-ID: wow/ace2/mainline
## Title: Lib: AceLibrary
## Notes: AddOn development framework
## Author: Ace Development Team
## X-Website: http://www.wowace.com
## X-Category: Library
## X-License: LGPL v2.1 + MIT for AceOO-2.0
AceLibrary.lua
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+34
View File
@@ -0,0 +1,34 @@
ATLASLOOTFU_LEFTCLICK = "|cff1eff00Left-Click|r Browse Loot Tables";
ATLASLOOTFU_SHIFTCLICK = "|cffff0000Shift-Click|r View Options";
ATLASLOOTFU_LEFTDRAG = "|cffccccccLeft-Click + Drag|r Move Minimap Button";
if (GetLocale() == "deDE") then
ATLASLOOTFU_LEFTCLICK = "|cff1eff00Linksklick|r Loot-Tabellen durchsuchen";
ATLASLOOTFU_SHIFTCLICK = "|cffff0000Shift-Klick|r Optionen anzeigen";
ATLASLOOTFU_LEFTDRAG = "|cffccccccLinksklick + Ziehen|r Minimap-Button bewegen";
end
if (GetLocale() == "frFR") then
ATLASLOOTFU_LEFTCLICK = "|cff1eff00Clic-Gauche|r Parcourir les tables de butin";
ATLASLOOTFU_SHIFTCLICK = "|cffff0000Shift-Clic|r Affiche les Options";
ATLASLOOTFU_LEFTDRAG = "|cffccccccClic-Gauche + Maintenir|r Déplacer l'icone de la minimap";
end
if (GetLocale() == "ruRU") then
ATLASLOOTFU_LEFTCLICK = "|cff1eff00Левый-Клик|r обзор таблици добычи";
ATLASLOOTFU_SHIFTCLICK = "|cffff0000Shift-Клик|r настройки";
ATLASLOOTFU_LEFTDRAG = "|cffccccccЛевый-Клик + тащить|r перемещение кнопки";
end
if (GetLocale() == "zhTW") then
ATLASLOOTFU_LEFTCLICK = "|cff1eff00左鍵|r 瀏覽物品掉落表格";
ATLASLOOTFU_SHIFTCLICK = "|cffff0000Shift-點擊|r 查看選項";
ATLASLOOTFU_LEFTDRAG = "|cffcccccc右鍵 + 拖曳|r 移動小地圖按鈕";
end
if (GetLocale() == "zhCN") then
ATLASLOOTFU_LEFTCLICK = "|cff1eff00左键|r 浏览物品掉落表格";
ATLASLOOTFU_SHIFTCLICK = "|cffff0000Shift-点击|r 查看选项";
ATLASLOOTFU_LEFTDRAG = "|cffcccccc右键 + 拖曳|r 移动小地图按钮";
end
+14
View File
@@ -0,0 +1,14 @@
<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="Libs\AceLibrary\AceLibrary.lua"/>
<Script file="Libs\AceOO-2.0\AceOO-2.0.lua"/>
<Script file="Libs\AceAddon-2.0\AceAddon-2.0.lua"/>
<Script file="Libs\AceEvent-2.0\AceEvent-2.0.lua"/>
<Script file="Libs\AceDB-2.0\AceDB-2.0.lua"/>
<Script file="Libs\FuBarPlugin-2.0\FuBarPlugin-2.0.lua"/>
<Script file="Libs\Tablet-2.0\Tablet-2.0.lua"/>
</Ui>
+23
View File
@@ -0,0 +1,23 @@
## Interface: 30300
## Title: AtlasLoot_Crafting
## Title-zhCN: AtlasLoot |cFF0099FF[交易技能]|r
## Title-zhTW: |r|cFF0099FF[地圖]|rAL 商業技能
## Notes: AtlasLoot loot tables of Crafting Items
## Notes-deDE: AtlasLoot loot tables of Crafting Items
## Notes-zhCN: AtlasLoot 交易技能制造出的物品表
## Notes-zhTW: AtlasLoot 商業技能物品資料庫
## Author: Hegarol
## Version: v5.11.04
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2
## X-Website: http://www.atlasloot.net
## Dependencies: AtlasLoot
## LoadOnDemand: 1
## X-Curse-Packaged-Version: v5.11.04
## X-Curse-Project-Name: Atlasloot Enhanced
## X-Curse-Project-ID: atlasloot-enhanced
## X-Curse-Repository-ID: wow/atlasloot-enhanced/mainline
crafting.lua
localization.lua
File diff suppressed because it is too large Load Diff
+511
View File
@@ -0,0 +1,511 @@
-- AtlasLoot loot tables localization file
-- NOTE: THIS FILE IS AUTO-GENERATED BY A TOOL, ANY MANUALLY CHANGE MIGHT BE OVERWRITTEN.
-- $Id: localization.lua 2725 2010-07-18 16:25:23Z arith $
local process = function(category,check,data) if not AtlasLoot_Data[category] or #AtlasLoot_Data[category] ~= check then return end for i = 1, #data do if data[i] and data[i] ~= "" then AtlasLoot_Data[category][i][4] = data[i] end end data = nil end
local locale = GetLocale()
if locale == "frFR" then
process("BlacksmithingMailBloodsoulEmbrace",4,{"","=q3=Epaulières d'âmesang","=q3=Cuirasse d'âmesang","=q3=Gantelets d'âmesang"})
process("BlacksmithingMailFelIronChain",5,{"","=q2=Camail en anneaux de gangrefer","=q2=Tunique en anneaux de gangrefer","=q2=Brassards en anneaux de gangrefer","=q2=Gants en anneaux de gangrefer"})
process("BlacksmithingPlateAdamantiteB",4,{"","=q3=Cuirasse en adamantite","=q3=Brassards en plaques d'adamantite","=q3=Gants en plaques d'adamantite"})
process("BlacksmithingPlateBurningRage",5,{"","=q3=Casque rage-acier","=q3=Epaulières rage-acier","=q3=Cuirasse rage-acier","=q3=Gants rage-acier"})
process("BlacksmithingPlateEnchantedAdaman",5,{"","=q3=Cuirasse enchantée en adamantite","=q3=Ceinture enchantée en adamantite","=q3=Jambières enchantées en adamantite","=q3=Bottes enchantées en adamantite"})
process("BlacksmithingPlateFaithFelsteel",4,{"","=q3=Casque en gangracier","=q3=Gants en gangracier","=q3=Jambières en gangracier"})
process("BlacksmithingPlateFelIronPlate",6,{"","=q2=Cuirasse en gangrefer","=q2=Gants en plaques de gangrefer","=q2=Ceinture en plaques de gangrefer","=q2=Pantalon en plaques de gangrefer","=q2=Bottes en plaques de gangrefer"})
process("BlacksmithingPlateFlameG",5,{"","=q3=Casque plaie-des-flammes","=q3=Cuirasse plaie-des-flammes","=q3=Brassards plaie-des-flammes","=q3=Gants plaie-des-flammes"})
process("BlacksmithingPlateImperialPlate",8,{"","=q2=Heaume impérial en plaques","=q2=Epaulières impériales en plaques","=q2=Pansière impériale","=q2=Brassards impériaux en plaques","=q2=Ceinture impériale en plaques","=q2=Jambières impériales en plaques","=q2=Bottes impériales en plaques"})
process("BlacksmithingPlateKhoriumWard",4,{"","=q3=Ceinture en khorium","=q3=Pantalon en khorium","=q3=Bottes en khorium"})
process("BlacksmithingPlateOrnateSaroniteBattlegear",9,{"","=q3=Bouclier-crâne orné en saronite","=q3=Espauliers ornés en saronite","=q3=Haubert orné en saronite","=q3=Brassards ornés en saronite","=q3=Gantelets ornés en saronite","=q3=Sangle ornée en saronite","=q3=Cuissards ornés en saronite","=q3=Brodequins ornés en saronite"})
process("BlacksmithingPlateSavageSaroniteBattlegear",9,{"","=q3=Bouclier-crâne sauvage en saronite","=q3=Espauliers sauvages en saronite","=q3=Haubert sauvage en saronite","=q3=Brassards sauvages en saronite","=q3=Gantelets sauvages en saronite","=q3=Sangle sauvage en saronite","=q3=Cuissards sauvages en saronite","=q3=Brodequins sauvages en saronite"})
process("BlacksmithingPlateTheDarksoul",4,{"","=q3=Epaulières de ténébrâme","=q3=Cuirasse de ténébrâme","=q3=Jambières de ténébrâme"})
process("CookingDaily1",6,{"=q3=Recette : Gâteau au chocolat délicieux","=q3=Recette : Côtelettes foudroyantes","=q2=Recette : Aileron-de-sang grillé","=q2=Recette : Croquettes de Kibler","=q2=Recette : Soupe de poisson-crâne","=q2=Recette : Talbuk extra piquant"})
process("CookingDaily2",27,{"=q2=Recette : Aileron-de-dragon noirci","=q2=Recette : Steak de worg noirci","=q2=Recette : Bouchées de bestiole","=q2=Recette : Steak de seiche","=q2=Recette : Filet d'aileron-de-dragon","=q2=Recette : Saumon brûle-langue","=q2=Recette : Rhinocéros sain","=q2=Recette : Steak de raie manta impériale","=q2=Recette : Méga-menu de mammouth","=q2=Recette : Saucisses de rhinocéros puissant","=q2=Recette : Rascasse nordique pochée","=q2=Recette : Steak de wyrm rhinolicieux","=q2=Recette : Lutjan extrême","=q2=Recette : Friandises de mammouth épicées","=q2=Recette : Steak de wyrm épicé","=q2=Recette : Méduse bleue piquante","=q2=Recette : Hareng frit piquant","=q2=Recette : Steak de brochepelle tendre","=q2=Recette : En-cas du pisteur","=q2=Recette : Worg cuit","=q3=Toque de chef","=q1=Epices nordiques","","=q3=Recette : Gâteau au chocolat délicieux","=q3=Recette : Côtelettes foudroyantes","=q1=Epice de bébé","=q1=Epices anciennes"})
process("CraftedWeapons1",24,{"=q4=Tranchant de l'ombre","","=q4=Sorcelame en acier-titan","=q4=Crochet en acier-titan","=q4=Ecraseur d'os en acier-titan","=q4=Gardien en acier-titan","=q4=Destructeur en acier-titan","=q4=Pavois en acier-titan","","=q4=Fusil de combat blindé","=q4=Nesingwary 4000","","=q4=Lame runique en éternium","=q4=Complainte","=q4=Lame longue en gangracier","=q4=Champion en khorium","=q4=Hache de bataille à tranchant gangrené","=q4=Faucheuse en gangracier","=q4=Main de l'éternité","=q4=Marteau runique","=q4=Maillet corrompu durci","=q4=Marteau de la puissance pieuse","","=q4=Destructeur gyroscopique en khorium"})
process("CraftedWeapons2",13,{"","=q4=Amnistie noire","=q4=Lame feuille-de-saule","=q4=Garde noire","=q4=Crépuscule","=q4=Main d'ébène","=q4=Eloquente","=q4=Marteau en sulfuron","=q4=Fureur noire","=q4=Bouclier dentelé en obsidienne","","=q4=Carabine de tireur d'élite endurci","=q4=Disque de force réactif"})
process("CraftedWeapons3",21,{"","=q4=Garde du feu","=q4=Brasegarde","=q4=Brasefurie","=q4=Lame Coeur-de-lion","=q4=Championne Coeur-de-lion","=q4=Exécutrice Coeur-de-lion","","=q4=Tranchant planaire","=q4=Tranchant planaire noir","=q4=Tranchant cruel des plans","=q4=Croissant lunaire","=q4=Tranchelune","=q4=Lune sanguine","","=q4=Marteau poing-de-drake","=q4=Gueule de dragon","=q4=Frappe du dragon","=q4=Tonnerre","=q4=Tonnerre-profond","=q4=Héraut de la tempête"})
process("FishingDaily1",17,{"=q4=L'anneau second","=q3=Chapeau de pêche déformé","=q3=Seau de Chuck","=q3=Seau de Bourbe-haleine","=q3=Seau de Patibulle","=q3=Seau de Chicot","=q3=Oeil de la mer","=q2=Recette : Brune du capitaine Rumsey","=q2=Ligne de pêche en vrai-argent filé","=q1=Monocle de noble","=q1=Boutons de manchette antiques en argent","=q1=Bague de mariage en or","=q1=Bock orné","=q1=Couteau à steak tranchant","=q1=Journal détrempé","=q1=Elixir de marche sur l'eau","=q1=Hameçon aiguisé"})
process("FishingDaily2",23,{"=q4=Joyau-tempête soutenu","=q4=Joyau-tempête brillant","=q4=Joyau-tempête délicat","=q4=Joyau-tempête rigide","=q4=Joyau-tempête runique","=q4=Joyau-tempête solide","=q4=Joyau-tempête étincelant","=q3=Chapeau de pêche déformé","=q3=Canne à pêche en os","=q3=Canne à pêche ornée de joyaux","=q3=Clampant des rivages","=q3=Larme de sirène","=q3=Minuscule coffret en titane","=q2=Recette : Brune du capitaine Rumsey","=q2=Ligne de pêche à toute épreuve en éternium","=q1=Chapeau de jungle endommagé","=q1=Canne à pointe de diamant","=q1=Ver luisant","=q1=Boussole étrange","=q1=Huile de pygmée","=q1=Elixir de marche sur l'eau","=q1=Fiole de poison scellée","=q1=Recette détrempée"})
process("JewelDragonsEye1",19,{"","","","","","","","","","","","","","","","","","","=q3=Oeil de dragon"})
process("JewelcraftingDaily1",19,{"=q3=Dessin : Rubis cardinal soutenu","=q3=Dessin : Rubis cardinal éclatant","=q3=Dessin : Rubis cardinal délicat","=q3=Dessin : Rubis cardinal miroitant","=q3=Dessin : Rubis cardinal cassé","=q3=Dessin : Rubis cardinal précis","=q3=Dessin : Rubis cardinal runique","=q3=Dessin : Rubis cardinal subtil","=q3=Dessin : Rubis écarlate soutenu","=q3=Dessin : Rubis écarlate délicat","=q3=Dessin : Rubis écarlate miroitant","=q3=Dessin : Ambre du roi brillant","=q3=Dessin : Ambre du roi mystique","=q3=Dessin : Ambre du roi rapide","=q3=Dessin : Ambre du roi rigide","=q3=Dessin : Ambre du roi lisse","=q3=Dessin : Ambre du roi bombé","=q3=Dessin : Halo de l'automne rapide","=q3=Dessin : Halo de l'automne rigide"})
process("JewelcraftingDaily2",28,{"=q3=Dessin : Amétrine de précision","=q3=Dessin : Amétrine de champion","=q3=Dessin : Amétrine mortelle","=q3=Dessin : Amétrine adroite","=q3=Dessin : Amétrine durable","=q3=Dessin : Amétrine investie","=q3=Dessin : Amétrine gravée","=q3=Dessin : Amétrine féroce","=q3=Dessin : Amétrine rougeoyante","=q3=Dessin : Amétrine luisante","=q3=Dessin : Amétrine intaillée","=q3=Dessin : Amétrine transparente","=q3=Dessin : Amétrine lumineuse","=q3=Dessin : Amétrine toute-puissante","=q3=Dessin : Amétrine en parfait état","=q3=Dessin : Amétrine téméraire","=q3=Dessin : Amétrine résolue","=q3=Dessin : Amétrine resplendissante","=q3=Dessin : Amétrine infrangible","=q3=Dessin : Amétrine sobre","=q3=Dessin : Amétrine voilée","=q3=Dessin : Amétrine pernicieuse","=q3=Dessin : Topaze monarchique luisante","=q3=Dessin : Topaze monarchique lumineuse","=q3=Dessin : Topaze monarchique toute-puissante","=q3=Dessin : Topaze monarchique téméraire","=q3=Dessin : Topaze monarchique sobre","=q3=Dessin : Topaze monarchique voilée"})
process("JewelcraftingDaily3",26,{"=q3=Dessin : Oeil de Zul éblouissant","=q3=Dessin : Oeil de Zul durci","=q3=Dessin : Oeil de Zul énergisé","=q3=Dessin : Oeil de Zul énergique","=q3=Dessin : Oeil de Zul complexe","=q3=Dessin : Oeil de Zul dentelé","=q3=Dessin : Oeil de Zul diapré","=q3=Dessin : Oeil de Zul brumeux","=q3=Dessin : Oeil de Zul opaque","=q3=Dessin : Oeil de Zul radieux","=q3=Dessin : Oeil de Zul de voyant","=q3=Dessin : Oeil de Zul brisé","=q3=Dessin : Oeil de Zul rayonnant","=q3=Dessin : Oeil de Zul stable","=q3=Dessin : Oeil de Zul scindé","=q3=Dessin : Oeil de Zul contracté","=q3=Dessin : Oeil de Zul intemporel","=q3=Dessin : Oeil de Zul trouble","=q3=Dessin : Oeil de Zul vif","=q3=Dessin : Emeraude forestière durcie","=q3=Dessin : Emeraude forestière énergisée","=q3=Dessin : Emeraude forestière énergique","=q3=Dessin : Emeraude forestière complexe","=q3=Dessin : Emeraude forestière diaprée","=q3=Dessin : Emeraude forestière de voyant","=q3=Dessin : Emeraude forestière vive"})
process("JewelcraftingDaily4",16,{"=q3=Dessin : Pierre d'effroi équilibrée","=q3=Dessin : Pierre d'effroi de défenseur","=q3=Dessin : Pierre d'effroi luminescente","=q3=Dessin : Pierre d'effroi de gardien","=q3=Dessin : Pierre d'effroi infusée","=q3=Dessin : Pierre d'effroi mystérieuse","=q3=Dessin : Pierre d'effroi surpuissante","=q3=Dessin : Pierre d'effroi purifiée","=q3=Dessin : Pierre d'effroi régalienne","=q3=Dessin : Pierre d'effroi royale","=q3=Dessin : Pierre d'effroi changeante","=q3=Dessin : Pierre d'effroi souveraine","=q3=Dessin : Pierre d'effroi ténue","=q3=Dessin : Opale du crépuscule surpuissante","=q3=Dessin : Opale du crépuscule régalienne","=q3=Dessin : Opale du crépuscule royale"})
process("JewelcraftingDaily5",14,{"=q3=Dessin : Zircon majestueux satiné","=q3=Dessin : Zircon majestueux solide","=q3=Dessin : Zircon majestueux étincelant","=q3=Dessin : Zircon majestueux orageux","=q3=Dessin : Saphir céleste satiné","=q3=Dessin : Saphir céleste solide","=q3=Dessin : Diamant flambeciel chaotique","=q3=Dessin : Diamant flambeciel nitescent","=q3=Dessin : Diamant flambeciel brasillé","=q3=Dessin : Diamant siègeterre de perspicacité","=q3=Dessin : Diamant siègeterre vivifiant","=q3=Dessin : Diamant siègeterre implacable","=q3=Dessin : Diamant flambeciel revitalisant","=q3=Dessin : Diamant siègeterre incisif"})
process("JewelcraftingDaily6",24,{"=q3=Dessin : Oeil de dragon soutenu","=q3=Dessin : Oeil de dragon éclatant","=q3=Dessin : Oeil de dragon brillant","=q3=Dessin : Oeil de dragon délicat","=q3=Dessin : Oeil de dragon miroitant","=q3=Dessin : Oeil de dragon cassé","=q3=Dessin : Oeil de dragon satiné","=q3=Dessin : Oeil de dragon mystique","=q3=Dessin : Oeil de dragon précis","=q3=Dessin : Oeil de dragon rapide","=q3=Dessin : Oeil de dragon rigide","=q3=Dessin : Oeil de dragon runique","=q3=Dessin : Oeil de dragon lisse","=q3=Dessin : Oeil de dragon solide","=q3=Dessin : Oeil de dragon étincelant","=q3=Dessin : Oeil de dragon orageux","=q3=Dessin : Oeil de dragon subtil","=q3=Dessin : Oeil de dragon bombé","=q4=Dessin : Collier garde-terre en titane","=q4=Dessin : Anneau garde-terre en titane","=q4=Dessin : Bague d'impact en titane","=q4=Dessin : Sautoir d'impact en titane","=q4=Dessin : Collier des horions en titane","=q4=Dessin : Anneau des horions en titane"})
process("LeatherworkingLeatherBloodTigerH",3,{"","=q3=Epaulières du tigre-sang","=q3=Cuirasse du tigre-sang"})
process("LeatherworkingLeatherBoreanEmbrace",9,{"","=q2=Heaume arctique","=q2=Protège-épaules arctiques","=q2=Plastron arctique","=q2=Garde-poignets arctiques","=q2=Gants arctiques","=q2=Ceinture arctique","=q2=Jambières arctiques","=q2=Bottes arctiques"})
process("LeatherworkingLeatherDevilsaurArmor",3,{"","=q3=Gantelets diablosaures","=q3=Jambières diablosaures"})
process("LeatherworkingLeatherEvisceratorBattlegear",9,{"","=q3=Masque d'éviscérateur","=q3=Protège-épaules d'éviscérateur","=q3=Corselet d'éviscérateur","=q3=Manchettes d'éviscérateur","=q3=Gantelets d'éviscérateur","=q3=Sangle d'éviscérateur","=q3=Garde-jambes d'éviscérateur","=q3=Bottines d'éviscérateur"})
process("LeatherworkingLeatherFelSkin",4,{"","=q3=Gants en gangrecuir","=q3=Jambières en gangrecuir","=q3=Bottes en gangrecuir"})
process("LeatherworkingLeatherIceborneEmbrace",9,{"","=q2=Heaume cryostène","=q2=Protège-épaules cryostènes","=q2=Corselet cryostène","=q2=Garde-poignets cryostènes","=q2=Gants cryostènes","=q2=Ceinture cryostène","=q2=Jambières cryostènes","=q2=Bottes cryostènes"})
process("LeatherworkingLeatherIronfeatherArmor",3,{"","=q3=Epaulières en plumacier","=q3=Cuirasse en plumacier"})
process("LeatherworkingLeatherOvercasterBattlegear",9,{"","=q3=Protège-front surjeté","=q3=Spallières surjetées","=q3=Corselet surjeté","=q3=Brassards surjetés","=q3=Protège-mains surjetés","=q3=Ceinture surjetée","=q3=Jambières surjetées","=q3=Bottes surjetées"})
process("LeatherworkingLeatherPrimalBatskin",4,{"","=q3=Pourpoint en peau de chauve-souris primordiale","=q3=Brassards en peau de chauve-souris primordiale","=q3=Gants en peau de chauve-souris primordiale"})
process("LeatherworkingLeatherPrimalIntent",4,{"","=q4=Gilet de frappe primordiale","=q4=Brassards de frappe primordiale","=q4=Ceinture de frappe primordiale"})
process("LeatherworkingLeatherSClefthoof",4,{"","=q3=Gilet du sabot-fourchu épais","=q3=Jambières du sabot-fourchu épaisses","=q3=Bottes du sabot-fourchu épaisses"})
process("LeatherworkingLeatherStormshroudArmor",5,{"","=q3=Epaulières tempétueuses","=q3=Armure tempétueuse","=q3=Gants tempétueux","=q3=Pantalon tempétueux"})
process("LeatherworkingLeatherThickDraenicA",5,{"","=q2=Gilet draenique épais","=q2=Gants draeniques épais","=q2=Pantalon draenique épais","=q2=Bottes draeniques épaisses"})
process("LeatherworkingLeatherVolcanicArmor",4,{"","=q2=Epaulières volcaniques","=q2=Cuirasse volcanique","=q2=Jambières volcaniques"})
process("LeatherworkingLeatherWildDraenishA",5,{"","=q2=Gilet draenique sauvage","=q2=Gants draeniques sauvages","=q2=Jambières draeniques sauvages","=q2=Bottes draeniques sauvages"})
process("LeatherworkingLeatherWindhawkArmor",4,{"","=q4=Haubert Faucon-du-vent","=q4=Brassards Faucon-du-vent","=q4=Ceinture Faucon-du-vent"})
process("LeatherworkingMailBlackDragonM",5,{"","=q3=Epaulières en écailles de dragon noir","=q3=Cuirasse en écailles de dragon noir","=q3=Jambières en écailles de dragon noir","=q4=Bottes en écailles de dragon noir"})
process("LeatherworkingMailBlueDragonM",4,{"","=q3=Epaulières en écailles de dragon bleu","=q3=Cuirasse en écailles de dragon bleu","=q3=Jambières en écailles de dragon bleu"})
process("LeatherworkingMailFelscaleArmor",5,{"","=q2=Cuirasse en gangrécailles","=q2=Gants en gangrécailles","=q2=Pantalon en gangrécailles","=q2=Bottes en gangrécailles"})
process("LeatherworkingMailFelstalkerArmor",4,{"","=q3=Cuirasse de traqueur gangrené","=q3=Brassards de traqueur gangrené","=q3=Ceinture de traqueur gangrené"})
process("LeatherworkingMailFrostscaleBinding",9,{"","=q2=Heaume en écailles de givre","=q2=Epaulières en écailles de givre","=q2=Corselet en écailles de givre","=q2=Brassards en écailles de givre","=q2=Gants en écailles de givre","=q2=Ceinture en écailles de givre","=q2=Jambières en écailles de givre","=q2=Bottes en écailles de givre"})
process("LeatherworkingMailGreenDragonM",4,{"","=q3=Cuirasse en écailles de dragon vert","=q3=Gantelets en écailles de dragon vert","=q3=Jambières en écailles de dragon vert"})
process("LeatherworkingMailNerubianHive",9,{"","=q2=Heaume nérubien","=q2=Epaulières nérubiennes","=q2=Corselet nérubien","=q2=Brassards nérubiens","=q2=Gants nérubiens","=q2=Ceinture nérubienne","=q2=Garde-jambes nérubiens","=q2=Bottes nérubiennes"})
process("LeatherworkingMailNetherFury",4,{"","=q3=Ceinture de la Furie du Néant","=q3=Jambières de la Furie du Néant","=q3=Bottes de la Furie du Néant"})
process("LeatherworkingMailNetherscaleArmor",4,{"","=q4=Cuirasse d'ébène en écailles du Néant","=q4=Brassards d'ébène en écailles du Néant","=q4=Ceinture d'ébène en écailles du Néant"})
process("LeatherworkingMailNetherstrikeArmor",4,{"","=q4=Cuirasse Coup-de-Néant","=q4=Brassards Coup-de-Néant","=q4=Ceinture Coup-de-Néant"})
process("LeatherworkingMailScaledDraenicA",5,{"","=q2=Broigne draenique","=q2=Gants draeniques en écailles","=q2=Pantalon draenique en écailles","=q2=Bottes draeniques en écailles"})
process("LeatherworkingMailStormhideBattlegear",9,{"","=q3=Couronne de l'orageux","=q3=Epaulières de l'orageux","=q3=Haubert de l'orageux","=q3=Garde-poignets de l'orageux","=q3=Poignes de l'orageux","=q3=Ceinture de l'orageux","=q3=Garde-jambes de l'orageux","=q3=Croquenots de l'orageux"})
process("LeatherworkingMailSwiftarrowBattlefear",9,{"","=q3=Heaume viveflèche","=q3=Garde-épaules viveflèche","=q3=Haubert viveflèche","=q3=Brassards viveflèche","=q3=Gantelets viveflèche","=q3=Ceinture viveflèche","=q3=Jambières viveflèche","=q3=Bottes viveflèche"})
process("TailoringArcanoVest",4,{"","=q3=Robe en tisse-arcane","=q3=Brassards en tisse-arcane","=q3=Bottes en tisse-arcane"})
process("TailoringBattlecastG",3,{"","=q4=Chaperon d'escarmouche","=q4=Pantalon d'escarmouche"})
process("TailoringBloodvineG",4,{"","=q3=Gilet en vignesang","=q3=Jambières en vignesang","=q3=Bottes en vignesang"})
process("TailoringDuskweaver",9,{"","=q2=Capuche en tisse-brune","=q2=Epaulières en tisse-brune","=q2=Robe en tisse-brune","=q2=Bandelettes en tisse-brune","=q2=Gants en tisse-brune","=q2=Ceinture en tisse-brune","=q2=Jambières en tisse-brune","=q2=Bottes en tisse-brune"})
process("TailoringFrostsavageBattlegear",9,{"","=q3=Capuche du givre sauvage","=q3=Epaulières du givre sauvage","=q3=Robe du givre sauvage","=q3=Brassards du givre sauvage","=q3=Gants du givre sauvage","=q3=Ceinture du givre sauvage","=q3=Jambières du givre sauvage","=q3=Bottes du givre sauvage"})
process("TailoringFrostwovenPower",9,{"","=q2=Coiffe tissée de givre","=q2=Epaulières tissées de givre","=q2=Robe tissée de givre","=q2=Bandelettes tissées de givre","=q2=Gants tissés de givre","=q2=Ceinture tissée de givre","=q2=Jambières tissées de givre","=q2=Bottes tissées de givre"})
process("TailoringImbuedNeather",5,{"","=q3=Tunique en tisse-néant imprégné","=q3=Robe en tisse-néant imprégné","=q3=Pantalon en tisse-néant imprégné","=q3=Bottes en tisse-néant imprégné"})
process("TailoringNeatherVest",8,{"","=q2=Tunique en tisse-néant","=q2=Robe en tisse-néant","=q2=Brassards en tisse-néant","=q2=Gants en tisse-néant","=q2=Ceinture en tisse-néant","=q2=Pantalon en tisse-néant","=q2=Bottes en tisse-néant"})
process("TailoringPrimalMoon",4,{"","=q4=Epaulières d'étoffe lunaire primordiale","=q4=Robe d'étoffe lunaire primordiale","=q4=Ceinture d'étoffe lunaire primordiale"})
process("TailoringShadowEmbrace",4,{"","=q4=Epaulières en tisse-ombre gelé","=q4=Robe en tisse-ombre gelé","=q4=Bottes en tisse-ombre gelé"})
process("TailoringSoulclothEm",4,{"","=q4=Epaulières d'âmétoffe","=q4=Gilet d'âmétoffe","=q4=Gants d'âmétoffe"})
process("TailoringSpellfireWrath",4,{"","=q4=Robe du feu-sorcier","=q4=Gants du feu-sorcier","=q4=Ceinture du feu-sorcier"})
process("TailoringSpellstrikeInfu",3,{"","=q4=Chaperon frappe-sort","=q4=Pantalon frappe-sort"})
process("TailoringTheUnyielding",3,{"","=q3=Brassards inflexibles","=q4=Ceinturon inflexible"})
process("TailoringWhitemendWis",3,{"","=q4=Chaperon de la blanche guérison","=q4=Pantalon de la blanche guérison"})
elseif locale == "deDE" then
process("BlacksmithingMailBloodsoulEmbrace",4,{"","=q3=Blutseelenschultern","=q3=Blutseelenbrustplatte","=q3=Blutseelenstulpen"})
process("BlacksmithingMailFelIronChain",5,{"","=q2=Teufelseisenkettenhelmkappe","=q2=Teufelseisenkettentunika","=q2=Teufelseisenkettenarmschienen","=q2=Teufelseisenkettenhandschuhe"})
process("BlacksmithingPlateAdamantiteB",4,{"","=q3=Adamantitbrustplatte","=q3=Adamantitarmschienen","=q3=Adamantithandschuhe"})
process("BlacksmithingPlateBurningRage",5,{"","=q3=Zornstahlhelm","=q3=Zornstahlschultern","=q3=Zornstahlbrustplatte","=q3=Zornstahlhandschuhe"})
process("BlacksmithingPlateEnchantedAdaman",5,{"","=q3=Verzauberte Adamantitbrustplatte","=q3=Verzauberter Adamantitgürtel","=q3=Verzauberte Adamantitgamaschen","=q3=Verzauberte Adamantitstiefel"})
process("BlacksmithingPlateFaithFelsteel",4,{"","=q3=Teufelsstahlhelm","=q3=Teufelsstahlhandschuhe","=q3=Teufelsstahlgamaschen"})
process("BlacksmithingPlateFelIronPlate",6,{"","=q2=Teufelseisenbrustplatte","=q2=Teufelseisenplattenhandschuhe","=q2=Teufelseisenplattengürtel","=q2=Teufelseisenplattenhose","=q2=Teufelseisenplattenstiefel"})
process("BlacksmithingPlateFlameG",5,{"","=q3=Flammenbannhelm","=q3=Flammenbannbrustplatte","=q3=Flammenbannarmschienen","=q3=Flammenbannhandschuhe"})
process("BlacksmithingPlateImperialPlate",8,{"","=q2=Imperialer Plattenhelm","=q2=Imperiale Plattenschultern","=q2=Imperiale Plattenrüstung","=q2=Imperiale Plattenarmschienen","=q2=Imperialer Plattengürtel","=q2=Imperiale Plattengamaschen","=q2=Imperiale Plattenstiefel"})
process("BlacksmithingPlateKhoriumWard",4,{"","=q3=Khoriumgürtel","=q3=Khoriumhose","=q3=Khoriumstiefel"})
process("BlacksmithingPlateOrnateSaroniteBattlegear",9,{"","=q3=Verzierter Saronitschädelschild","=q3=Verzierte Saronitschulterstücke","=q3=Verzierte Saronithalsberge","=q3=Verzierte Saronitarmschienen","=q3=Verzierte Saronitstulpen","=q3=Verzierte Saronittaillenschutz","=q3=Verzierte Saronitbeinplatten","=q3=Verzierte Saronitlaufschuhe"})
process("BlacksmithingPlateSavageSaroniteBattlegear",9,{"","=q3=Wilder Saronitschädelschild","=q3=Wilde Saronitschulterstücke","=q3=Wilde Saronithalsberge","=q3=Wilde Saronitarmschienen","=q3=Wilde Saronitstulpen","=q3=Wilder Saronittaillenschutz","=q3=Wilde Saronitbeinplatten","=q3=Wilde Saronitlaufschuhe"})
process("BlacksmithingPlateTheDarksoul",4,{"","=q3=Dunkelseelenschultern","=q3=Dunkelseelenbrustplatte","=q3=Dunkelseelengamaschen"})
process("CookingDaily1",6,{"=q3=Rezept: Köstlicher Schokoladenkuchen","=q3=Rezept: Sturmkoteletts","=q2=Rezept: Gebratene Blutflosse","=q2=Rezept: Kiblers Häppchen","=q2=Rezept: Schädelfischsuppe","=q2=Rezept: Feuriger Würztalbuk"})
process("CookingDaily2",27,{"=q2=Rezept: Geschwärzte Drachenflosse","=q2=Rezept: Schwarzgebratenes Worgsteak","=q2=Rezept: Tierhappen","=q2=Rezept: Sepiasteak","=q2=Rezept: Drachenflossenfilet","=q2=Rezept: Feuerkracherlachs","=q2=Rezept: Herzhaftes Rhinozeros","=q2=Rezept: Steak von imperialen Mantarochen","=q2=Rezept: Megamammutmahl","=q2=Rezept: Große Rhinowurst","=q2=Rezept: Pochierte nordische Groppe","=q2=Rezept: Rhinoziöses Wyrmsteak","=q2=Rezept: Bombenschnapper","=q2=Rezept: Gewürzte Mammutleckereien","=q2=Rezept: Würziger Wyrmburger","=q2=Rezept: Würziger blauer Nesselfisch","=q2=Rezept: Würziger Brathering","=q2=Rezept: Zartes Schaufelhauersteak","=q2=Rezept: Fährtenlesersnacks","=q2=Rezept: Sehr verbrannter Worg","=q3=Kochmütze","=q1=Nordische Gewürze","","=q3=Rezept: Köstlicher Schokoladenkuchen","=q3=Rezept: Sturmkoteletts","=q1=Junges Gemüse","=q1=Gewürzmischung 4711"})
process("CraftedWeapons1",24,{"=q4=Schattenschneide","","=q4=Titanstahlzauberklinge","=q4=Titanstahlmesser","=q4=Titanstahlknochenzermalmer","=q4=Titanstahlwächter","=q4=Titanstahlzerstörer","=q4=Titanschildwall","","=q4=Plattenverstärkte Gefechtsschrotflinte","=q4=Nesingwary 4000","","=q4=Runenverzierte Eterniumklinge","=q4=Todeslied","=q4=Teufelsstahllangschwert","=q4=Khoriumchampion","=q4=Teuflisch scharfe Kampfaxt","=q4=Teufelsstahlschneide","=q4=Hand der Ewigkeit","=q4=Runenverzierter Hammer","=q4=Teufelsgehärteter Schlägel","=q4=Hammer der rechtschaffenen Macht","","=q4=Gyrobalancierter Khoriumzerstörer"})
process("CraftedWeapons2",13,{"","=q4=Schwarze Amnestie","=q4=Weisenklinge","=q4=Finsterer Streiter","=q4=Nachtlauer","=q4=Ebenholzhand","=q4=Willensbrecher","=q4=Sulfuronhammer","=q4=Schattenzorn","=q4=Gezackter Obsidianschild","","=q4=Kernscharfschützengewehr","=q4=Machtreaktive Scheibe"})
process("CraftedWeapons3",21,{"","=q4=Brandwache","=q4=Lodernder Wächter","=q4=Lodernder Zorn","=q4=Löwenherzklinge","=q4=Löwenherzchampion","=q4=Löwenherzrichtklinge","","=q4=Die Planaraxt","=q4=Schwarze Planaraxt","=q4=Tückische Schneide der Ebenen","=q4=Mondsichel","=q4=Mondspaltbeil","=q4=Blutmond","","=q4=Drachenfaust","=q4=Drachenmal","=q4=Drachenschlag","=q4=Donner","=q4=Donnergroll","=q4=Bote des Sturms"})
process("FishingDaily1",17,{"=q4=Der Andere Ring","=q3=Wettergegerbter Angelhut","=q3=Schnapps Eimer","=q3=Matschbrabbels Eimer","=q3=Knurris Eimer","=q3=Zähnchens Eimer","=q3=Auge des Meeres","=q2=Rezept: Kapitän Rumseys Lagerbier","=q2=Gesponnene Echtsilberangelschnur","=q1=Adligenmonokel","=q1=Antiker Silbermanschettenknopf","=q1=Goldener Trauring","=q1=Verschnörkelter Trinkkrug","=q1=Rasiermesserscharfes Filetiermesser","=q1=Verwittertes Tagebuch","=q1=Elixier des Wasserwandelns","=q1=Geschärfter Angelhaken"})
process("FishingDaily2",23,{"=q4=Klobiges Sturmjuwel","=q4=Glänzendes Sturmjuwel","=q4=Feingeschliffenes Sturmjuwel","=q4=Starres Sturmjuwel","=q4=Runenverziertes Sturmjuwel","=q4=Gediegenes Sturmjuwel","=q4=Funkelndes Sturmjuwel","=q3=Wettergegerbter Angelhut","=q3=Knöcherne Angelrute","=q3=Juwelenbesetzte Angelrute","=q3=Strandkriecher","=q3=Sirenenträne","=q3=Winzige Titanschließkassette","=q2=Rezept: Kapitän Rumseys Lagerbier","=q2=Extremgetestete Eterniumangelschnur","=q1=Zerknitterter Dschungelhut","=q1=Gehstock mit Diamantspitze","=q1=Glühwürmchen","=q1=Ungewöhnlicher Kompass","=q1=Pygmäenöl","=q1=Elixier des Wasserwandelns","=q1=Versiegelte Giftphiole","=q1=Durchnässtes Rezept"})
process("JewelDragonsEye1",19,{"","","","","","","","","","","","","","","","","","","=q3=Drachenauge"})
process("JewelcraftingDaily1",19,{"=q3=Vorlage: Klobiger Kardinalsrubin","=q3=Vorlage: Heller Kardinalsrubin","=q3=Vorlage: Feingeschliffener Kardinalsrubin","=q3=Vorlage: Scheinender Kardinalsrubin","=q3=Vorlage: Frakturierter Kardinalsrubin","=q3=Vorlage: Präziser Kardinalsrubin","=q3=Vorlage: Runenbeschriebener Kardinalsrubin","=q3=Vorlage: Fragiler Kardinalsrubin","=q3=Vorlage: Klobiger Scharlachrubin","=q3=Vorlage: Feingeschliffener Scharlachrubin","=q3=Vorlage: Scheinender Scharlachrubin","=q3=Vorlage: Glänzender Königsbernstein","=q3=Vorlage: Mystischer Königsbernstein","=q3=Vorlage: Spiegelnder Königsbernstein","=q3=Vorlage: Massiver Königsbernstein","=q3=Vorlage: Glatter Königsbernstein","=q3=Vorlage: Kompakter Königsbernstein","=q3=Vorlage: Spiegelnder Herbstglimmer","=q3=Vorlage: Massiver Herbstglimmer"})
process("JewelcraftingDaily2",28,{"=q3=Vorlage: Akkurater Ametrin","=q3=Vorlage: Ametrin des Champions","=q3=Vorlage: Tödlicher Ametrin","=q3=Vorlage: Gewandter Ametrin","=q3=Vorlage: Solider Ametrin","=q3=Vorlage: Machterfüllter Ametrin","=q3=Vorlage: Geätzter Ametrin","=q3=Vorlage: Wilder Ametrin","=q3=Vorlage: Gleißender Ametrin","=q3=Vorlage: Glitzernder Ametrin","=q3=Vorlage: Gravierter Ametrin","=q3=Vorlage: Transparenter Ametrin","=q3=Vorlage: Glänzender Ametrin","=q3=Vorlage: Mächtiger Ametrin","=q3=Vorlage: Makelloser Ametrin","=q3=Vorlage: Tollkühner Ametrin","=q3=Vorlage: Resoluter Ametrin","=q3=Vorlage: Prunkvoller Ametrin","=q3=Vorlage: Bruchfester Ametrin","=q3=Vorlage: Reiner Ametrin","=q3=Vorlage: Verschleierter Ametrin","=q3=Vorlage: Tückischer Ametrin","=q3=Vorlage: Glitzernder Monarchentopas","=q3=Vorlage: Glänzender Monarchentopas","=q3=Vorlage: Mächtiger Monarchentopas","=q3=Vorlage: Tollkühner Monarchentopas","=q3=Vorlage: Reiner Monarchentopas","=q3=Vorlage: Verschleierter Monarchentopas"})
process("JewelcraftingDaily3",26,{"=q3=Vorlage: Schillerndes Auge von Zul","=q3=Vorlage: Robustes Auge von Zul","=q3=Vorlage: Geladenes Auge von Zul","=q3=Vorlage: Kraftvolles Auge von Zul","=q3=Vorlage: Aufwendiges Auge von Zul","=q3=Vorlage: Gezacktes Auge von Zul","=q3=Vorlage: Flackerndes Auge von Zul","=q3=Vorlage: Nebliges Auge von Zul","=q3=Vorlage: Opakes Auge von Zul","=q3=Vorlage: Strahlendes Auge von Zul","=q3=Vorlage: Seherauge von Zul","=q3=Vorlage: Zerschmettertes Auge von Zul","=q3=Vorlage: Feuriges Auge von Zul","=q3=Vorlage: Beständiges Auge von Zul","=q3=Vorlage: Gesplittertes Auge von Zul","=q3=Vorlage: Sprödes Auge von Zul","=q3=Vorlage: Zeitloses Auge von Zul","=q3=Vorlage: Trübes Auge von Zul","=q3=Vorlage: Klares Auge von Zul","=q3=Vorlage: Robuster Waldsmaragd","=q3=Vorlage: Geladener Waldsmaragd","=q3=Vorlage: Kraftvoller Waldsmaragd","=q3=Vorlage: Aufwendiger Waldsmaragd","=q3=Vorlage: Flackernder Waldsmaragd","=q3=Vorlage: Waldsmaragd des Sehers","=q3=Vorlage: Klarer Waldsmaragd"})
process("JewelcraftingDaily4",16,{"=q3=Vorlage: Ausbalancierter Schreckensstein","=q3=Vorlage: Schreckensstein des Verteidigers","=q3=Vorlage: Leuchtender Schreckensstein","=q3=Vorlage: Schreckensstein des Wächters","=q3=Vorlage: Energieerfüllter Schreckensstein","=q3=Vorlage: Geheimnisvoller Schreckensstein","=q3=Vorlage: Imposanter Schreckensstein","=q3=Vorlage: Geläuterter Schreckensstein","=q3=Vorlage: Majestätischer Schreckensstein","=q3=Vorlage: Königlicher Schreckensstein","=q3=Vorlage: Unbeständiger Schreckensstein","=q3=Vorlage: Stattlicher Schreckensstein","=q3=Vorlage: Zarter Schreckensstein","=q3=Vorlage: Imposanter Zwielichtopal","=q3=Vorlage: Majestätischer Zwielichtopal","=q3=Vorlage: Königlicher Zwielichtopal"})
process("JewelcraftingDaily5",14,{"=q3=Vorlage: Irisierender Fürstenzirkon","=q3=Vorlage: Gediegener Fürstenzirkon","=q3=Vorlage: Funkelnder Fürstenzirkon","=q3=Vorlage: Stürmischer Fürstenzirkon","=q3=Vorlage: Irisierender Himmelssaphir","=q3=Vorlage: Gediegener Himmelssaphir","=q3=Vorlage: Chaotischer Polarlichtdiamant","=q3=Vorlage: Glühender Polarlichtdiamant","=q3=Vorlage: Glimmender Polarlichtdiamant","=q3=Vorlage: Bemerkenswerter Erdringdiamant","=q3=Vorlage: Kräftigender Erdringdiamant","=q3=Vorlage: Unerbittlicher Erdringdiamant","=q3=Vorlage: Belebender Polarlichtdiamant","=q3=Vorlage: Energischer Erdringdiamant"})
process("JewelcraftingDaily6",24,{"=q3=Vorlage: Klobiges Drachenauge","=q3=Vorlage: Helles Drachenauge","=q3=Vorlage: Brillantiertes Drachenauge","=q3=Vorlage: Feingeschliffenes Drachenauge","=q3=Vorlage: Scheinendes Drachenauge","=q3=Vorlage: Frakturiertes Drachenauge","=q3=Vorlage: Irisierendes Drachenauge","=q3=Vorlage: Mystisches Drachenauge","=q3=Vorlage: Präzises Drachenauge","=q3=Vorlage: Spiegelndes Drachenauge","=q3=Vorlage: Massives Drachenauge","=q3=Vorlage: Runenbeschriebenes Drachenauge","=q3=Vorlage: Glattes Drachenauge","=q3=Vorlage: Gediegenes Drachenauge","=q3=Vorlage: Funkelndes Drachenauge","=q3=Vorlage: Stürmisches Drachenauge","=q3=Vorlage: Fragiles Drachenauge","=q3=Vorlage: Kompaktes Drachenauge","=q4=Vorlage: Titankette des Erdenwächters","=q4=Vorlage: Titanring des Erdenwächters","=q4=Vorlage: Titanband des Einschlags","=q4=Vorlage: Titanhalsreif des Einschlags","=q4=Vorlage: Titanhalskette des Zauberschocks","=q4=Vorlage: Titanring des Zauberschocks"})
process("LeatherworkingLeatherBloodTigerH",3,{"","=q3=Bluttigerschultern","=q3=Bluttigerbrustplatte"})
process("LeatherworkingLeatherBoreanEmbrace",9,{"","=q2=Arktischer Helm","=q2=Arktische Schulterpolster","=q2=Arktischer Brustschutz","=q2=Arktische Handgelenksschützer","=q2=Arktische Handschuhe","=q2=Arktischer Gürtel","=q2=Arktische Gamaschen","=q2=Arktische Stiefel"})
process("LeatherworkingLeatherDevilsaurArmor",3,{"","=q3=Teufelssaurierstulpen","=q3=Teufelssauriergamaschen"})
process("LeatherworkingLeatherEvisceratorBattlegear",9,{"","=q3=Gesichtsmaske des Ausweiders","=q3=Schulterpolster des Ausweiders","=q3=Brustschutz des Ausweiders","=q3=Bindungen des Ausweiders","=q3=Stulpen des Ausweiders","=q3=Taillenschutz des Ausweiders","=q3=Beinschützer des Ausweiders","=q3=Treter des Ausweiders"})
process("LeatherworkingLeatherFelSkin",4,{"","=q3=Teufelslederhandschuhe","=q3=Teufelsledergamaschen","=q3=Teufelslederstiefel"})
process("LeatherworkingLeatherIceborneEmbrace",9,{"","=q2=Winterlicher Helm","=q2=Winterliche Schulterpolster","=q2=Winterlicher Brustschutz","=q2=Winterlicher Handgelenksschutz","=q2=Winterliche Handschuhe","=q2=Winterlicher Gürtel","=q2=Winterliche Beinlinge","=q2=Winterliche Stiefel"})
process("LeatherworkingLeatherIronfeatherArmor",3,{"","=q3=Eisenfederschultern","=q3=Eisenfederbrustplatte"})
process("LeatherworkingLeatherOvercasterBattlegear",9,{"","=q3=Unwetterkopfschutz","=q3=Unwetterschiftung","=q3=Unwetterbrustschutz","=q3=Unwetterarmschienen","=q3=Unwetterhandlappen","=q3=Unwettergürtel","=q3=Unwettergamaschen","=q3=Unwetterstiefel"})
process("LeatherworkingLeatherPrimalBatskin",4,{"","=q3=Urzeitliches Fledermaushautwams","=q3=Urzeitliche Fledermaushautarmschienen","=q3=Urzeitliche Fledermaushauthandschuhe"})
process("LeatherworkingLeatherPrimalIntent",4,{"","=q4=Erstschlagweste","=q4=Erstschlagarmschienen","=q4=Erstschlaggürtel"})
process("LeatherworkingLeatherSClefthoof",4,{"","=q3=Schwere Grollhufweste","=q3=Schwere Grollhufgamaschen","=q3=Schwere Grollhufstiefel"})
process("LeatherworkingLeatherStormshroudArmor",5,{"","=q3=Sturmschleierschultern","=q3=Sturmschleierrüstung","=q3=Sturmschleierhandschuhe","=q3=Sturmschleierhose"})
process("LeatherworkingLeatherThickDraenicA",5,{"","=q2=Dicke draenische Weste","=q2=Dicke draenische Handschuhe","=q2=Dicke draenische Hose","=q2=Dicke draenische Stiefel"})
process("LeatherworkingLeatherVolcanicArmor",4,{"","=q2=Vulkanische Schultern","=q2=Vulkanische Brustplatte","=q2=Vulkanische Gamaschen"})
process("LeatherworkingLeatherWildDraenishA",5,{"","=q2=Wilde draenische Weste","=q2=Wilde draenische Handschuhe","=q2=Wilde draenische Gamaschen","=q2=Wilde draenische Stiefel"})
process("LeatherworkingLeatherWindhawkArmor",4,{"","=q4=Windfalkenhalsberge","=q4=Windfalkenarmschienen","=q4=Windfalkengürtel"})
process("LeatherworkingMailBlackDragonM",5,{"","=q3=Schwarze Drachenschuppenschultern","=q3=Schwarze Drachenschuppenbrustplatte","=q3=Schwarze Drachenschuppengamaschen","=q4=Schwarze Drachenschuppenstiefel"})
process("LeatherworkingMailBlueDragonM",4,{"","=q3=Blaue Drachenschuppenschultern","=q3=Blaue Drachenschuppenbrustplatte","=q3=Blaue Drachenschuppengamaschen"})
process("LeatherworkingMailFelscaleArmor",5,{"","=q2=Teufelsschuppenbrustplatte","=q2=Teufelsschuppenhandschuhe","=q2=Teufelsschuppenhose","=q2=Teufelsschuppenstiefel"})
process("LeatherworkingMailFelstalkerArmor",4,{"","=q3=Brustplatte des Teufelspirschers","=q3=Armschienen des Teufelspirschers","=q3=Gürtel des Teufelspirschers"})
process("LeatherworkingMailFrostscaleBinding",9,{"","=q2=Frostschuppenhelm","=q2=Frostschuppenschultern","=q2=Frostschuppenbrustschutz","=q2=Frostschuppenarmschienen","=q2=Frostschuppenhandschuhe","=q2=Frostschuppengürtel","=q2=Frostschuppenbeinlinge","=q2=Frostschuppenstiefel"})
process("LeatherworkingMailGreenDragonM",4,{"","=q3=Grüne Drachenschuppenbrustplatte","=q3=Grüne Drachenschuppenstulpen","=q3=Grüne Drachenschuppengamaschen"})
process("LeatherworkingMailNerubianHive",9,{"","=q2=Nerubischer Helm","=q2=Nerubische Schultern","=q2=Nerubischer Brustschutz","=q2=Nerubische Armschienen","=q2=Nerubische Handschuhe","=q2=Nerubischer Gürtel","=q2=Nerubische Beinschützer","=q2=Nerubische Stiefel"})
process("LeatherworkingMailNetherFury",4,{"","=q3=Netherzorngürtel","=q3=Netherzorngamaschen","=q3=Netherzornstiefel"})
process("LeatherworkingMailNetherscaleArmor",4,{"","=q4=Ebenholzfarbene Netherschuppenbrustplatte","=q4=Ebenholzfarbene Netherschuppenarmschienen","=q4=Ebenholzfarbener Netherschuppengürtel"})
process("LeatherworkingMailNetherstrikeArmor",4,{"","=q4=Netherstoßbrustplatte","=q4=Netherstoßarmschienen","=q4=Netherstoßgürtel"})
process("LeatherworkingMailScaledDraenicA",5,{"","=q2=Geschuppte draenische Weste","=q2=Geschuppte draenische Handschuhe","=q2=Geschuppte draenische Hose","=q2=Geschuppte draenische Stiefel"})
process("LeatherworkingMailStormhideBattlegear",9,{"","=q3=Sturmbalgkrone","=q3=Sturmbalgschultern","=q3=Sturmbalghalsberge","=q3=Sturmbalghandgelenksschutz","=q3=Sturmbalghandschutz","=q3=Sturmbalggürtel","=q3=Sturmbalgbeinschützer","=q3=Sturmbalgstampfer"})
process("LeatherworkingMailSwiftarrowBattlefear",9,{"","=q3=Flinkpfeilhelm","=q3=Flinkpfeilschulterschutz","=q3=Flinkpfeilhalsberge","=q3=Flinkpfeilarmschienen","=q3=Flinkpfeilstulpen","=q3=Flinkpfeilgürtel","=q3=Flinkpfeilgamaschen","=q3=Flinkpfeilstiefel"})
process("TailoringArcanoVest",4,{"","=q3=Arkanostoffrobe","=q3=Arkanostoffarmschienen","=q3=Arkanostoffstiefel"})
process("TailoringBattlecastG",3,{"","=q4=Kapuze des Schlachtenzaubers","=q4=Hose des Schlachtenzaubers"})
process("TailoringBloodvineG",4,{"","=q3=Blutrebenweste","=q3=Blutrebengamaschen","=q3=Blutrebenstiefel"})
process("TailoringDuskweaver",9,{"","=q2=Dämmergewirkte Gugel","=q2=Dämmergewirkte Schultern","=q2=Dämmergewirkte Robe","=q2=Dämmergewirkte Gelenkbänder","=q2=Dämmergewirkte Handschuhe","=q2=Dämmergewirkter Gürtel","=q2=Dämmergewirkte Gamaschen","=q2=Dämmergewirkte Stiefel"})
process("TailoringFrostsavageBattlegear",9,{"","=q3=Frostgrimmgugel","=q3=Frostgrimmschultern","=q3=Frostgrimmrobe","=q3=Frostgrimmarmschienen","=q3=Frostgrimmhandschuhe","=q3=Frostgrimmgürtel","=q3=Frostgrimmgamaschen","=q3=Frostgrimmstiefel"})
process("TailoringFrostwovenPower",9,{"","=q2=Frostgewirkte Gugel","=q2=Frostgewirkte Schultern","=q2=Frostgewirkte Robe","=q2=Frostgewirkte Gelenkbänder","=q2=Frostgewirkte Handschuhe","=q2=Frostgewirkter Gürtel","=q2=Frostgewirkte Gamaschen","=q2=Frostgewirkte Stiefel"})
process("TailoringImbuedNeather",5,{"","=q3=Magieerfüllte Netherstofftunika","=q3=Magieerfüllte Netherstoffrobe","=q3=Magieerfüllte Netherstoffhose","=q3=Magieerfüllte Netherstoffstiefel"})
process("TailoringNeatherVest",8,{"","=q2=Netherstofftunika","=q2=Netherstoffrobe","=q2=Netherstoffarmschienen","=q2=Netherstoffhandschuhe","=q2=Netherstoffgürtel","=q2=Netherstoffhose","=q2=Netherstoffstiefel"})
process("TailoringPrimalMoon",4,{"","=q4=Urmondstoffschultern","=q4=Urmondstoffrobe","=q4=Urmondstoffgürtel"})
process("TailoringShadowEmbrace",4,{"","=q4=Eisschattenzwirnschultern","=q4=Eisschattenzwirnrobe","=q4=Eisschattenzwirnstiefel"})
process("TailoringSoulclothEm",4,{"","=q4=Seelenstoffschultern","=q4=Seelenstoffweste","=q4=Seelenstoffhandschuhe"})
process("TailoringSpellfireWrath",4,{"","=q4=Zauberfeuerrobe","=q4=Zauberfeuerhandschuhe","=q4=Zauberfeuergürtel"})
process("TailoringSpellstrikeInfu",3,{"","=q4=Kapuze des Zauberschlags","=q4=Hose des Zauberschlags"})
process("TailoringTheUnyielding",3,{"","=q3=Armschienen des Unerschütterlichen","=q4=Gurt des Unerschütterlichen"})
process("TailoringWhitemendWis",3,{"","=q4=Kapuze des weißen Heilers","=q4=Hose des weißen Heilers"})
elseif locale == "esES" then
process("BlacksmithingMailBloodsoulEmbrace",4,{"","=q3=Sobrehombros alma de sangre","=q3=Coraza alma de sangre","=q3=Guanteletes alma de sangre"})
process("BlacksmithingMailFelIronChain",5,{"","=q2=Almófar de anillas de hierro vil","=q2=Túnica de anillas de hierro vil","=q2=Brazales de anillas de hierro vil","=q2=Guantes de anillas de hierro vil"})
process("BlacksmithingPlateAdamantiteB",4,{"","=q3=Coraza de adamantita","=q3=Brazales de placas de adamantita","=q3=Guantes de placas de adamantita"})
process("BlacksmithingPlateBurningRage",5,{"","=q3=Yelmo de acerira","=q3=Sobrehombros de acerira","=q3=Coraza de acerira","=q3=Guantes de acerira"})
process("BlacksmithingPlateEnchantedAdaman",5,{"","=q3=Coraza de adamantita encantada","=q3=Cinturón de adamantita encantado","=q3=Leotardos de adamantita encantados","=q3=Botas de adamantita encantada"})
process("BlacksmithingPlateFaithFelsteel",4,{"","=q3=Yelmo de acero vil","=q3=Guantes de acero vil","=q3=Leotardos de acero vil"})
process("BlacksmithingPlateFelIronPlate",6,{"","=q2=Coraza de hierro vil","=q2=Guantes de placas de hierro vil","=q2=Cinturón de placas de hierro vil","=q2=Pantalones de placas de hierro vil","=q2=Botas de placas de hierro vil"})
process("BlacksmithingPlateFlameG",5,{"","=q3=Yelmo aterrallamas","=q3=Coraza aterrallamas","=q3=Brazales aterrallamas","=q3=Guantes aterrallamas"})
process("BlacksmithingPlateImperialPlate",8,{"","=q2=Yelmo de placas imperiales","=q2=Sobrehombros de placas imperiales","=q2=Peto de placas imperiales","=q2=Brazales de placas imperiales","=q2=Cinturón de placas imperiales","=q2=Leotardos de placas imperiales","=q2=Botas de placas imperiales"})
process("BlacksmithingPlateKhoriumWard",4,{"","=q3=Cinturón de korio","=q3=Pantalones de korio","=q3=Botas de korio"})
process("BlacksmithingPlateOrnateSaroniteBattlegear",9,{"","=q3=Escudo de calavera de saronita ornamentada","=q3=Espaldares de saronita ornamentada","=q3=Camisote de saronita ornamentada","=q3=Brazales de saronita ornamentada","=q3=Guanteletes de saronita ornamentada","=q3=Guardarrenes de saronita ornamentada","=q3=Quijotes de saronita ornamentada","=q3=Botos de saronita ornamentada"})
process("BlacksmithingPlateSavageSaroniteBattlegear",9,{"","=q3=Escudo de calavera de saronita salvaje","=q3=Espaldares de saronita salvaje","=q3=Camisote de saronita salvaje","=q3=Brazales de saronita salvaje","=q3=Guanteletes de saronita salvaje","=q3=Guardarrenes de saronita salvaje","=q3=Quijotes de saronita salvaje","=q3=Botos de saronita salvaje"})
process("BlacksmithingPlateTheDarksoul",4,{"","=q3=Sobrehombros almanegra","=q3=Coraza almanegra","=q3=Leotardos almanegra"})
process("CookingDaily1",6,{"=q3=Receta: pastel de chocolate delicioso","=q3=Receta: costillas de truenos","=q2=Receta: sangraleta a la parrilla","=q2=Receta: tapitas de Kibler","=q2=Receta: sopa de pez calavera","=q2=Receta: talbuk con guindillas"})
process("CookingDaily2",27,{"=q2=Receta: aletadragón ennegrecido","=q2=Receta: filete de huargo ennegrecido","=q2=Receta: aperitivos para alimañas","=q2=Receta: filete de calamar","=q2=Receta: filete de aletadragón","=q2=Receta: salmón petardo","=q2=Receta: rinoceronte suculento","=q2=Receta: filete de manta imperial","=q2=Receta: comida de megamamut","=q2=Receta: perritos de rinoceronte poderosos","=q2=Receta: pez escorpión del norte pochado","=q2=Receta: filete de vermis rinolicioso","=q2=Receta: pargo extremo","=q2=Receta: delicias de mamut especiado","=q2=Receta: hamburguesa de vermis especiada","=q2=Receta: medusa azul picante","=q2=Receta: arenque frito picante","=q2=Receta: filete de colmipala tierno","=q2=Receta: aperitivo de rastreador","=q2=Receta: huargo muy quemado","=q3=Gorro de cocinero","=q1=Especias del norte","","=q3=Receta: pastel de chocolate delicioso","=q3=Receta: costillas de truenos","=q1=Especias de bebé","=q1=Especias viejas"})
process("CraftedWeapons1",24,{"=q4=Filo de las Sombras","","=q4=Hoja de hechizo de acero de titanes","=q4=Faca de acero de titanes","=q4=Aplastahuesos de acero de titanes","=q4=Guardián de acero de titanes","=q4=Destructor de acero de titanes","=q4=Escudo muro de acero de titanes","","=q4=Escopeta de combate con placas de armadura","=q4=4000 de Nesingwary","","=q4=Hoja rúnica de eternio","=q4=Réquiem","=q4=Hoja larga de acero vil","=q4=Campeón de korio","=q4=Hacha de batalla vil afilada","=q4=Segadora de acero vil","=q4=Mano de la eternidad","=q4=Martillo rúnico","=q4=Gran maza vil endurecida","=q4=Martillo de poderío recto","","=q4=Destructor de korio giroequilibrado"})
process("CraftedWeapons2",13,{"","=q4=Amnistía negra","=q4=Hoja sabia","=q4=Guardanegra","=q4=Ocaso","=q4=Mano de ébano","=q4=Persuasor","=q4=Martillo de Sulfuron","=q4=Furianegra","=q4=Escudo de obsidiana dentado","","=q4=Rifle de tirador del Núcleo","=q4=Disco reactivo a la fuerza"})
process("CraftedWeapons3",21,{"","=q4=Guardia de fuego","=q4=Guardia abrasadora","=q4=Furia abrasadora","=q4=Hoja de corazón de león","=q4=Campeón corazón de león","=q4=Verdugo corazón de león","","=q4=El filo bidimensional","=q4=Filo bidimensional negro","=q4=Filo despiadado de los planos","=q4=Luna creciente","=q4=Cortaluna","=q4=Luna de sangre","","=q4=Martillo de puñodraco","=q4=Faucedraco","=q4=Golpe de dragón","=q4=Trueno","=q4=Trueno profundo","=q4=Heraldo de la tormenta"})
process("FishingDaily1",17,{"=q4=El anillo 2","=q3=Sombrero para pescar deteriorado","=q3=Cubo de Chuck","=q3=Cubo de Malaliento","=q3=Cubo de Gruñi","=q3=Cubo de Dientecitos","=q3=Ojo del mar","=q2=Receta: cerveza del capitán Rumsey","=q2=Sedal de hilo de veraplata","=q1=Monóculo de noble","=q1=Gemelos de plata solariegos","=q1=Alianza de oro","=q1=Jarra ornamentada","=q1=Cuchillo para filetear afilado","=q1=Diario deteriorado","=q1=Elixir de Caminar sobre el agua","=q1=Anzuelo afilado"})
process("FishingDaily2",23,{"=q4=Joya de tormenta llamativa","=q4=Joya de tormenta luminosa","=q4=Joya de tormenta delicada","=q4=Joya de tormenta rígida","=q4=Joya de tormenta rúnica","=q4=Joya de tormenta sólida","=q4=Joya de tormenta chispeante","=q3=Sombrero para pescar deteriorado","=q3=Caña de pescar de hueso","=q3=Caña de pescar enjoyada","=q3=Reptador de playa","=q3=Lágrima de sirena","=q3=Arcón de titanio diminuto","=q2=Receta: cerveza del capitán Rumsey","=q2=Gran línea de pesca de prueba de eternio","=q1=Sombrero de aventurero maltrecho","=q1=Bastón con punta de diamante","=q1=Gusano de luz","=q1=Brújula poco corriente","=q1=Aceite de pigmeo","=q1=Elixir de Caminar sobre el agua","=q1=Vial de veneno sellado","=q1=Receta con marcas de agua"})
process("JewelDragonsEye1",19,{"","","","","","","","","","","","","","","","","","","=q3=Ojo de dragón"})
process("JewelcraftingDaily1",19,{"=q3=Boceto: rubí cárdeno llamativo","=q3=Boceto: rubí cárdeno brillante","=q3=Boceto: rubí cárdeno delicado","=q3=Boceto: rubí cárdeno ostentoso","=q3=Boceto: rubí cárdeno fracturado","=q3=Boceto: rubí cárdeno preciso","=q3=Boceto: rubí cárdeno rúnico","=q3=Boceto: rubí cárdeno sutil","=q3=Boceto: rubí escarlata llamativo","=q3=Boceto: rubí escarlata delicado","=q3=Boceto: rubí escarlata ostentoso","=q3=Boceto: ámbar del rey luminoso","=q3=Boceto: ámbar del rey místico","=q3=Boceto: ámbar del rey rápido","=q3=Boceto: ámbar del rey rígido","=q3=Boceto: ámbar del rey liso","=q3=Boceto: ámbar del rey grueso","=q3=Boceto: Brillo del otoño rápido","=q3=Boceto: Brillo del otoño rígido"})
process("JewelcraftingDaily2",28,{"=q3=Boceto: ametrino de precisión","=q3=Boceto: ametrino de Campeón","=q3=Boceto: ametrino mortal","=q3=Boceto: ametrino diestro","=q3=Boceto: ametrino durable","=q3=Boceto: ametrino potenciado","=q3=Boceto: ametrino grabado","=q3=Boceto: ametrino fiero","=q3=Boceto: ametrino de luz trémula","=q3=Boceto: ametrino destellante","=q3=Boceto: ametrino con inscripciones","=q3=Boceto: ametrino iluminado","=q3=Boceto: ametrino luminoso","=q3=Boceto: ametrino pujante","=q3=Boceto: ametrino prístino","=q3=Boceto: ametrino temerario","=q3=Boceto: ametrino resuelto","=q3=Boceto: ametrino resplandeciente","=q3=Boceto: ametrino de adepto","=q3=Boceto: ametrino completo","=q3=Boceto: ametrino velado","=q3=Boceto: ametrino maligno","=q3=Boceto: topacio monarca destellante","=q3=Boceto: topacio monarca luminoso","=q3=Boceto: topacio monarca pujante","=q3=Boceto: topacio monarca temerario","=q3=Boceto: topacio monarca completo","=q3=Boceto: topacio monarca velado"})
process("JewelcraftingDaily3",26,{"=q3=Boceto: ojo de Zul deslumbrante","=q3=Boceto: ojo de Zul duradero","=q3=Boceto: ojo de Zul energizado","=q3=Boceto: ojo de Zul fuerte","=q3=Boceto: ojo de Zul intrincado","=q3=Boceto: ojo de Zul irregular","=q3=Boceto: ojo de Zul luminiscente","=q3=Boceto: ojo de Zul brumoso","=q3=Boceto: ojo de Zul opaco","=q3=Boceto: ojo de Zul radiante","=q3=Boceto: ojo de Zul de vidente","=q3=Boceto: ojo de Zul destrozado","=q3=Boceto: ojo de Zul brillante","=q3=Boceto: ojo de Zul resistente","=q3=Boceto: ojo de Zul hendido","=q3=Boceto: ojo de Zul tenso","=q3=Boceto: ojo de Zul intemporal","=q3=Boceto: ojo de Zul turbio","=q3=Boceto: ojo de Zul vívido","=q3=Boceto: esmeralda del bosque duradera","=q3=Boceto: esmeralda del bosque energizada","=q3=Boceto: esmeralda del bosque fuerte","=q3=Boceto: esmeralda del bosque intrincada","=q3=Boceto: esmeralda del bosque luminiscente","=q3=Boceto: esmeralda del bosque de vidente","=q3=Boceto: esmeralda del bosque vívida"})
process("JewelcraftingDaily4",16,{"=q3=Boceto: piedra de terror equilibrada","=q3=Boceto: piedra de terror de defensor","=q3=Boceto: piedra de terror resplandeciente","=q3=Boceto: piedra de terror de guardián","=q3=Boceto: piedra de terror imbuida","=q3=Boceto: piedra de terror misteriosa","=q3=Boceto: piedra de terror enjundiosa","=q3=Boceto: piedra de terror purificada","=q3=Boceto: piedra de terror regia","=q3=Boceto: piedra de terror real","=q3=Boceto: piedra de terror cambiante","=q3=Boceto: piedra de terror soberana","=q3=Boceto: piedra de terror de tenuidad","=q3=Boceto: ópalo Crepuscular enjundioso","=q3=Boceto: ópalo Crepuscular majestuoso","=q3=Boceto: ópalo Crepuscular real"})
process("JewelcraftingDaily5",14,{"=q3=Boceto: circón majestuoso luciente","=q3=Boceto: circón majestuoso sólido","=q3=Boceto: circón majestuoso chispeante","=q3=Boceto: circón majestuoso tormentoso","=q3=Boceto: zafiro celestial luciente","=q3=Boceto: zafiro celestial sólido","=q3=Boceto: diamante de llama celeste caótico","=q3=Boceto: diamante de llama celeste refulgente","=q3=Boceto: diamante de llama celeste de ascuas","=q3=Boceto: diamante de asedio de tierra perspicaz","=q3=Boceto: diamante de asedio de tierra vigorizador","=q3=Boceto: diamante de asedio de tierra incansable","=q3=Boceto: diamante de llama celeste revitalizante","=q3=Boceto: diamante de asedio de tierra mordaz"})
process("JewelcraftingDaily6",24,{"=q3=Boceto: Ojo de dragón llamativo","=q3=Boceto: Ojo de dragón brillante","=q3=Boceto: Ojo de dragón luminoso","=q3=Boceto: Ojo de dragón delicado","=q3=Boceto: Ojo de dragón ostentoso","=q3=Boceto: Ojo de dragón fracturado","=q3=Boceto: Ojo de dragón lustroso","=q3=Boceto: Ojo de dragón místico","=q3=Boceto: Ojo de dragón preciso","=q3=Boceto: Ojo de dragón rápido","=q3=Boceto: Ojo de dragón rígido","=q3=Boceto: Ojo de dragón rúnico","=q3=Boceto: Ojo de dragón liso","=q3=Boceto: Ojo de dragón sólido","=q3=Boceto: Ojo de dragón chispeante","=q3=Boceto: Ojo de dragón tormentoso","=q3=Boceto: Ojo de dragón sutil","=q3=Boceto: Ojo de dragón grueso","=q4=Boceto: cadena de guardia de tierra de titanio","=q4=Boceto: anillo de guardia de tierra de titanio","=q4=Boceto: sortija impactante de titanio","=q4=Boceto: gargantilla impactante de titanio","=q4=Boceto: collar de choque de hechizo de titanio","=q4=Boceto: anillo de choque de hechizo de titanio"})
process("LeatherworkingLeatherBloodTigerH",3,{"","=q3=Sobrehombros de tigre de sangre","=q3=Coraza de tigre de sangre"})
process("LeatherworkingLeatherBoreanEmbrace",9,{"","=q2=Yelmo ártico","=q2=Hombreras árticas","=q2=Pechera ártica","=q2=Guardamuñecas árticos","=q2=Guantes árticos","=q2=Cinturón ártico","=q2=Leotardos árticos","=q2=Botas árticas"})
process("LeatherworkingLeatherDevilsaurArmor",3,{"","=q3=Guanteletes de demosaurio","=q3=Leotardos de demosaurio"})
process("LeatherworkingLeatherEvisceratorBattlegear",9,{"","=q3=Máscara facial de eviscerador","=q3=Hombreras de eviscerador","=q3=Coselete de eviscerador","=q3=Ataduras de eviscerador","=q3=Guanteletes de eviscerador","=q3=Guardarrenes de eviscerador","=q3=Musleras de eviscerador","=q3=Botines de eviscerador"})
process("LeatherworkingLeatherFelSkin",4,{"","=q3=Guantes de cuero vil","=q3=Leotardos de cuero vil","=q3=Botas de cuero vil"})
process("LeatherworkingLeatherIceborneEmbrace",9,{"","=q2=Yelmo de contrahielo","=q2=Hombreras de contrahielo","=q2=Coselete de contrahielo","=q2=Guardamuñecas de contrahielo","=q2=Guantes de contrahielo","=q2=Cinturón de contrahielo","=q2=Leotardos de contrahielo","=q2=Botas de contrahielo"})
process("LeatherworkingLeatherIronfeatherArmor",3,{"","=q3=Sobrehombros plumahierro","=q3=Coraza plumahierro"})
process("LeatherworkingLeatherOvercasterBattlegear",9,{"","=q3=Protegecabezas encapotado","=q3=Bufas encapotadas","=q3=Coselete encapotado","=q3=Brazales encapotados","=q3=Manijas encapotadas","=q3=Cinturón encapotado","=q3=Leotardos encapotados","=q3=Botas encapotadas"})
process("LeatherworkingLeatherPrimalBatskin",4,{"","=q3=Chaleco de piel de murciélago primigenio","=q3=Brazales de piel de murciélago primigenio","=q3=Guantes de piel de murciélago primigenio"})
process("LeatherworkingLeatherPrimalIntent",4,{"","=q4=Jubón de golpe primigenio","=q4=Brazales de golpe primigenio","=q4=Cinturón de golpe primigenio"})
process("LeatherworkingLeatherSClefthoof",4,{"","=q3=Jubón uñagrieta pesado","=q3=Leotardos uñagrieta pesados","=q3=Botas uñagrieta pesadas"})
process("LeatherworkingLeatherStormshroudArmor",5,{"","=q3=Sobrehombrosde embozo de tormenta","=q3=Armadura de embozo de tormenta","=q3=Guantes de embozo de tormenta","=q3=Pantalones de embozo de tormenta"})
process("LeatherworkingLeatherThickDraenicA",5,{"","=q2=Jubón draénico grueso","=q2=Guantes draénicos gruesos","=q2=Pantalones draénicos gruesos","=q2=Botas draénicas gruesas"})
process("LeatherworkingLeatherVolcanicArmor",4,{"","=q2=Sobrehombros volcánicos","=q2=Coraza volcánica","=q2=Leotardos volcánicos"})
process("LeatherworkingLeatherWildDraenishA",5,{"","=q2=Jubón draeniano salvaje","=q2=Guantes draenianos salvajes","=q2=Leotardos draenianos salvajes","=q2=Botas draenianas salvajes"})
process("LeatherworkingLeatherWindhawkArmor",4,{"","=q4=Camisote de halcón del viento","=q4=Brazales de halcón del viento","=q4=Cinturón de halcón del viento"})
process("LeatherworkingMailBlackDragonM",5,{"","=q3=Sobrehombros de escamas de dragón negro","=q3=Coraza de escamas de dragón negro","=q3=Leotardos de escamas de dragón negro","=q4=Botas de escamas de dragón negro"})
process("LeatherworkingMailBlueDragonM",4,{"","=q3=Sobrehombros de escamas de dragón azul","=q3=Coraza de escamas de dragón azul","=q3=Leotardos de escamas de dragón azul"})
process("LeatherworkingMailFelscaleArmor",5,{"","=q2=Coraza de escamas viles","=q2=Guantes de escamas viles","=q2=Pantalones de escamas viles","=q2=Botas de escamas viles"})
process("LeatherworkingMailFelstalkerArmor",4,{"","=q3=Coraza de acechador vil","=q3=Brazales de acechador vil","=q3=Cinturón de acechador vil"})
process("LeatherworkingMailFrostscaleBinding",9,{"","=q2=Casco de escamas de escarcha","=q2=Sobrehombros de escamas de escarcha","=q2=Coselete de escamas de escarcha","=q2=Brazales de escamas de escarcha","=q2=Guantes de escamas de escarcha","=q2=Cinturón de escamas de escarcha","=q2=Leotardos de escamas de escarcha","=q2=Botas de escamas de escarcha"})
process("LeatherworkingMailGreenDragonM",4,{"","=q3=Coraza de escamas de dragón verde","=q3=Guanteletes de escamas de dragón verde","=q3=Leotardos de escamas de dragón verde"})
process("LeatherworkingMailNerubianHive",9,{"","=q2=Yelmo nerubiano","=q2=Sobrehombros nerubianos","=q2=Coselete nerubiano","=q2=Brazales nerubianos","=q2=Guantes nerubianos","=q2=Cinturón nerubiano","=q2=Musleras nerubianas","=q2=Botas nerubianas"})
process("LeatherworkingMailNetherFury",4,{"","=q3=Cinturón de furia abisal","=q3=Leotardos de furia abisal","=q3=Botas de furia abisal"})
process("LeatherworkingMailNetherscaleArmor",4,{"","=q4=Coraza de escamas abisales de ébano","=q4=Brazales de escamas abisales de ébano","=q4=Cinturón de escamas abisales de ébano"})
process("LeatherworkingMailNetherstrikeArmor",4,{"","=q4=Coraza de golpe abisal","=q4=Brazales de golpe abisal","=q4=Cinturón de golpe abisal"})
process("LeatherworkingMailScaledDraenicA",5,{"","=q2=Jubón draénico escamado","=q2=Guantes draénicos escamados","=q2=Pantalones draénicos escamados","=q2=Botas draénicas escamadas"})
process("LeatherworkingMailStormhideBattlegear",9,{"","=q3=Corona de Tormentero","=q3=Sobrehombros de Tormentero","=q3=Camisote de Tormentero","=q3=Guardamuñecas de Tormentero","=q3=Puños de Tormentero","=q3=Cinturón de Tormentero","=q3=Musleras de Tormentero","=q3=Apisonadoras de Tormentero"})
process("LeatherworkingMailSwiftarrowBattlefear",9,{"","=q3=Yelmo Flechapresta","=q3=Guardahombros Flechapresta","=q3=Camisote Flechapresta","=q3=Brazales Flechapresta","=q3=Guanteletes Flechapresta","=q3=Cinturón Flechapresta","=q3=Leotardos Flechapresta","=q3=Botas Flechapresta"})
process("TailoringArcanoVest",4,{"","=q3=Toga de tejido Arcano","=q3=Brazales de tejido Arcano","=q3=Botas de tejido Arcano"})
process("TailoringBattlecastG",3,{"","=q4=Caperuza de conjuro de batalla","=q4=Pantalones de conjuro de batalla"})
process("TailoringBloodvineG",4,{"","=q3=Jubón vid de sangre","=q3=Leotardos vid de sangre","=q3=Botas vid de sangre"})
process("TailoringDuskweaver",9,{"","=q2=Capucha de tejido del alba","=q2=Sobrehombros de tejido del alba","=q2=Toga de tejido del alba","=q2=Cubremuñecas de tejido del alba","=q2=Guantes de tejido del alba","=q2=Cinturón de tejido del alba","=q2=Leotardos de tejido del alba","=q2=Botas de tejido del alba"})
process("TailoringFrostsavageBattlegear",9,{"","=q3=Cogulla de escarcha salvaje","=q3=Sobrehombros de escarcha salvaje","=q3=Toga de escarcha salvaje","=q3=Brazales de escarcha salvaje","=q3=Guantes de escarcha salvaje","=q3=Cinturón de escarcha salvaje","=q3=Leotardos de escarcha salvaje","=q3=Botas de escarcha salvaje"})
process("TailoringFrostwovenPower",9,{"","=q2=Capucha tejida con Escarcha","=q2=Sobrehombros tejidos con Escarcha","=q2=Toga tejida con Escarcha","=q2=Cubremuñecas tejidos con Escarcha","=q2=Guantes tejidos con Escarcha","=q2=Cinturón tejido con Escarcha","=q2=Leotardos tejidos con Escarcha","=q2=Botas tejidas con Escarcha"})
process("TailoringImbuedNeather",5,{"","=q3=Túnica de tejido abisal imbuido","=q3=Toga de tejido abisal imbuido","=q3=Pantalones de tejido abisal imbuido","=q3=Botas de tejido abisal imbuido"})
process("TailoringNeatherVest",8,{"","=q2=Túnica de tejido abisal","=q2=Toga de tejido abisal","=q2=Brazales de tejido abisal","=q2=Guantes de tejido abisal","=q2=Cinturón de tejido abisal","=q2=Pantalones de tejido abisal","=q2=Botas de tejido abisal"})
process("TailoringPrimalMoon",4,{"","=q4=Sobrehombros de tela lunar primigenia","=q4=Toga de tela lunar primigenia","=q4=Cinturón de tela lunar primigenia"})
process("TailoringShadowEmbrace",4,{"","=q4=Sobrehombros de tejido de sombra congelado","=q4=Toga de tejido de sombra congelado","=q4=Botas de tejido de sombra congelado"})
process("TailoringSoulclothEm",4,{"","=q4=Sobrehombros de paño de alma","=q4=Jubón de paño de alma","=q4=Guantes de paño de alma"})
process("TailoringSpellfireWrath",4,{"","=q4=Toga de fuego de hechizo","=q4=Guantes de fuego de hechizo","=q4=Cinturón de fuego de hechizo"})
process("TailoringSpellstrikeInfu",3,{"","=q4=Caperuza de golpe de hechizo","=q4=Pantalones de golpe de hechizo"})
process("TailoringTheUnyielding",3,{"","=q3=Brazales implacables","=q4=Faja implacable"})
process("TailoringWhitemendWis",3,{"","=q4=Caperuza con remiendos blancos","=q4=Pantalones con remiendos blancos"})
elseif locale == "zhCN" then
process("BlacksmithingMailBloodsoulEmbrace",4,{"","=q3=血魂护肩","=q3=血魂胸甲","=q3=血魂护手"})
process("BlacksmithingMailFelIronChain",5,{"","=q2=魔铁链甲罩帽","=q2=魔铁链甲外套","=q2=魔铁链甲护腕","=q2=魔铁链甲手套"})
process("BlacksmithingPlateAdamantiteB",4,{"","=q3=精金胸甲","=q3=精金板甲护腕","=q3=精金板甲手套"})
process("BlacksmithingPlateBurningRage",5,{"","=q3=怒钢头盔","=q3=怒钢护肩","=q3=怒钢胸甲","=q3=怒钢手套"})
process("BlacksmithingPlateEnchantedAdaman",5,{"","=q3=魔化精金胸甲","=q3=魔化精金腰带","=q3=魔化精金护腿","=q3=魔化精金长靴"})
process("BlacksmithingPlateFaithFelsteel",4,{"","=q3=魔钢头盔","=q3=魔钢手套","=q3=魔钢护腿"})
process("BlacksmithingPlateFelIronPlate",6,{"","=q2=魔铁胸甲","=q2=魔铁板甲手套","=q2=魔铁板甲腰带","=q2=魔铁板甲短裤","=q2=魔铁板甲战靴"})
process("BlacksmithingPlateFlameG",5,{"","=q3=灭焰头盔","=q3=灭焰胸甲","=q3=灭焰护腕","=q3=灭焰手套"})
process("BlacksmithingPlateImperialPlate",8,{"","=q2=君王板甲头盔","=q2=君王板甲护肩","=q2=君王板甲护胸","=q2=君王板甲护腕","=q2=君王板甲腰带","=q2=君王板甲护腿","=q2=君王板甲战靴"})
process("BlacksmithingPlateKhoriumWard",4,{"","=q3=氪金腰带","=q3=氪金短裤","=q3=氪金战靴"})
process("BlacksmithingPlateOrnateSaroniteBattlegear",9,{"","=q3=Ornate Saronite Skullshield","=q3=Ornate Saronite Pauldrons","=q3=Ornate Saronite Hauberk","=q3=Ornate Saronite Bracers","=q3=Ornate Saronite Gauntlets","=q3=Ornate Saronite Waistguard","=q3=Ornate Saronite Legplates","=q3=Ornate Saronite Walkers"})
process("BlacksmithingPlateSavageSaroniteBattlegear",9,{"","=q3=Savage Saronite Skullshield","=q3=Savage Saronite Pauldrons","=q3=Savage Saronite Hauberk","=q3=Savage Saronite Bracers","=q3=Savage Saronite Gauntlets","=q3=Savage Saronite Waistguard","=q3=Savage Saronite Legplates","=q3=Savage Saronite Walkers"})
process("BlacksmithingPlateTheDarksoul",4,{"","=q3=黑暗之魂护肩","=q3=黑暗之魂胸甲","=q3=黑暗之魂护腿"})
process("CookingDaily1",6,{"=q3=Recipe: Delicious Chocolate Cake","=q3=Recipe: Stormchops","=q2=Recipe: Broiled Bloodfin","=q2=Recipe: Kibler's Bits","=q2=Recipe: Skullfish Soup","=q2=Recipe: Spicy Hot Talbuk"})
process("CookingDaily2",27,{"=q2=食谱:熏烤龙鳞鱼","=q2=食谱:熏烤座狼肉排","=q2=食谱:小动物的零食","=q2=食谱:墨鱼片","=q2=食谱:龙鳞鱼片","=q2=食谱:爆炒鲑鱼","=q2=食谱:犀牛大餐","=q2=食谱:帝王鳐鱼片","=q2=食谱:猛犸肉大餐","=q2=食谱:巨型犀牛热狗","=q2=食谱:水煮北地蚌背鱼","=q2=食谱:龙犀肉排","=q2=食谱:钳鱼大餐","=q2=食谱:香辣猛犸小吃","=q2=食谱:香辣龙肉汉堡","=q2=食谱:香辣蓝色水母","=q2=食谱:香辣油炸青鱼","=q2=食谱:香嫩铲齿鹿排","=q2=食谱:追踪快餐","=q2=食谱:焦烤座狼","=q3=Chef's Hat","=q1=北地香料","","=q3=Recipe: Delicious Chocolate Cake","=q3=Recipe: Stormchops","=q1=Baby Spice","=q1=Old Spices"})
process("CraftedWeapons1",24,{"=q4=Shadow's Edge","","=q4=Titansteel Spellblade","=q4=Titansteel Shanker","=q4=Titansteel Bonecrusher","=q4=Titansteel Guardian","=q4=Titansteel Destroyer","=q4=Titansteel Shield Wall","","=q4=Armor Plated Combat Shotgun","=q4=Nesingwary 4000","","=q4=恒金符文之刃","=q4=挽歌","=q4=魔钢长剑","=q4=氪金圣剑","=q4=魔能利斧","=q4=魔钢收割者","=q4=永恒之手","=q4=符印战锤","=q4=魔能强化战槌","=q4=正义力量之锤","","=q4=陀螺平衡氪金重枪"})
process("CraftedWeapons2",13,{"","=q4=黑色赦免者","=q4=先知之刃","=q4=黑色卫士","=q4=夜幕","=q4=黑手","=q4=说服者","=q4=萨弗隆战锤","=q4=黑色怒火","=q4=碎裂黑曜石盾牌","","=q4=火核狙击步枪","=q4=力反馈盾牌"})
process("CraftedWeapons3",21,{"","=q4=火焰卫士","=q4=光芒卫士","=q4=光芒之怒","=q4=狮心之刃","=q4=狮心圣剑","=q4=狮心斩杀者","","=q4=位面战斧","=q4=黑色位面战斧","=q4=邪恶位面战斧","=q4=新月","=q4=月牙屠斧","=q4=血月","","=q4=龙拳之锤","=q4=巨龙之喉","=q4=巨龙之击","=q4=雷霆","=q4=惊雷","=q4=风暴使者"})
process("FishingDaily1",17,{"=q4=The 2 Ring","=q3=Weather-Beaten Fishing Hat","=q3=莫莫的小桶","=q3=毒皮的小桶","=q3=尼尼的小桶","=q3=牙牙的小桶","=q3=Eye of the Sea","=q2=Recipe: Captain Rumsey's Lager","=q2=Spun Truesilver Fishing Line","=q1=Noble's Monocle","=q1=Antique Silver Cufflinks","=q1=Gold Wedding Band","=q1=Ornate Drinking Stein","=q1=Razor Sharp Fillet Knife","=q1=Weather-Beaten Journal","=q1=Elixir of Water Walking","=q1=Sharpened Fish Hook"})
process("FishingDaily2",23,{"=q4=Bold Stormjewel","=q4=Brilliant Stormjewel","=q4=Delicate Stormjewel","=q4=Rigid Stormjewel","=q4=Runed Stormjewel","=q4=Solid Stormjewel","=q4=Sparkling Stormjewel","=q3=Weather-Beaten Fishing Hat","=q3=Bone Fishing Pole","=q3=Jeweled Fishing Pole","=q3=Strand Crawler","=q3=海妖之泪","=q3=Tiny Titanium Lockbox","=q2=Recipe: Captain Rumsey's Lager","=q2=高强度恒金渔线","=q1=Battered Jungle Hat","=q1=Diamond-tipped Cane","=q1=Glow Worm","=q1=Unusual Compass","=q1=Pygmy Oil","=q1=Elixir of Water Walking","=q1=Sealed Vial of Poison","=q1=Waterlogged Recipe"})
process("JewelDragonsEye1",19,{"","","","","","","","","","","","","","","","","","","=q3=Dragon's Eye"})
process("JewelcraftingDaily1",19,{"=q3=Design: Bold Cardinal Ruby","=q3=Design: Bright Cardinal Ruby","=q3=Design: Delicate Cardinal Ruby","=q3=Design: Flashing Cardinal Ruby","=q3=Design: Fractured Cardinal Ruby","=q3=Design: Precise Cardinal Ruby","=q3=Design: Runed Cardinal Ruby","=q3=Design: Subtle Cardinal Ruby","=q3=图鉴:朴素血玉石","=q3=图鉴:精致血玉石","=q3=图鉴:闪光血玉石","=q3=Design: Brilliant King's Amber","=q3=Design: Mystic King's Amber","=q3=Design: Quick King's Amber","=q3=Design: Rigid King's Amber","=q3=Design: Smooth King's Amber","=q3=Design: Thick King's Amber","=q3=图鉴:迅捷秋色石","=q3=图鉴:刚硬秋色石"})
process("JewelcraftingDaily2",28,{"=q3=Design: Accurate Ametrine","=q3=Design: Champion's Ametrine","=q3=Design: Deadly Ametrine","=q3=Design: Deft Ametrine","=q3=Design: Durable Ametrine","=q3=Design: Empowered Ametrine","=q3=Design: Etched Ametrine","=q3=Design: Fierce Ametrine","=q3=Design: Glimmering Ametrine","=q3=Design: Glinting Ametrine","=q3=Design: Inscribed Ametrine","=q3=Design: Lucent Ametrine","=q3=Design: Luminous Ametrine","=q3=Design: Potent Ametrine","=q3=Design: Pristine Ametrine","=q3=Design: Reckless Ametrine","=q3=Design: Resolute Ametrine","=q3=Design: Resplendent Ametrine","=q3=Design: Stalwart Ametrine","=q3=Design: Stark Ametrine","=q3=Design: Veiled Ametrine","=q3=Design: Wicked Ametrine","=q3=图鉴:反光帝黄晶","=q3=图鉴:辉光帝黄晶","=q3=图鉴:高能帝黄晶","=q3=图鉴:鲁莽帝黄晶","=q3=图鉴:荒凉帝黄晶","=q3=图鉴:隐秘帝黄晶"})
process("JewelcraftingDaily3",26,{"=q3=Design: Dazzling Eye of Zul","=q3=Design: Enduring Eye of Zul","=q3=Design: Energized Eye of Zul","=q3=Design: Forceful Eye of Zul","=q3=Design: Intricate Eye of Zul","=q3=Design: Jagged Eye of Zul","=q3=Design: Lambent Eye of Zul","=q3=Design: Misty Eye of Zul","=q3=Design: Opaque Eye of Zul","=q3=Design: Radiant Eye of Zul","=q3=Design: Seer's Eye of Zul","=q3=Design: Shattered Eye of Zul","=q3=Design: Shining Eye of Zul","=q3=Design: Steady Eye of Zul","=q3=Design: Sundered Eye of Zul","=q3=Design: Tense Eye of Zul","=q3=Design: Timeless Eye of Zul","=q3=Design: Turbid Eye of Zul","=q3=Design: Vivid Eye of Zul","=q3=图鉴:坚硬森林翡翠","=q3=图鉴:活跃森林翡翠","=q3=图鉴:坚强森林翡翠","=q3=图鉴:复杂森林翡翠","=q3=图鉴:烁光森林翡翠","=q3=图鉴:先知的森林翡翠","=q3=图鉴:鲜艳森林翡翠"})
process("JewelcraftingDaily4",16,{"=q3=Design: Balanced Dreadstone","=q3=Design: Defender's Dreadstone","=q3=Design: Glowing Dreadstone","=q3=Design: Guardian's Dreadstone","=q3=Design: Infused Dreadstone","=q3=Design: Mysterious Dreadstone","=q3=Design: Puissant Dreadstone","=q3=Design: Purified Dreadstone","=q3=Design: Regal Dreadstone","=q3=Design: Royal Dreadstone","=q3=Design: Shifting Dreadstone","=q3=Design: Sovereign Dreadstone","=q3=Design: Tenuous Dreadstone","=q3=图鉴:强攻曙光猫眼石","=q3=图鉴:华丽曙光猫眼石","=q3=图鉴:皇家曙光猫眼石"})
process("JewelcraftingDaily5",14,{"=q3=Design: Lustrous Majestic Zircon","=q3=Design: Solid Majestic Zircon","=q3=Design: Sparkling Majestic Zircon","=q3=Design: Stormy Majestic Zircon","=q3=图鉴:异彩天蓝石","=q3=图鉴:致密天蓝石","=q3=图鉴:混乱之天焰钻石","=q3=图鉴:光辉之天焰钻石","=q3=图鉴:灰烬之天焰钻石","=q3=图鉴:洞察之大地侵攻钻石","=q3=图鉴:充沛之大地侵攻钻石","=q3=图鉴:残酷之大地侵攻钻石","=q3=图鉴:复苏之天焰钻石","=q3=图鉴:锋利之大地侵攻钻石"})
process("JewelcraftingDaily6",24,{"=q3=图鉴:朴素龙眼石","=q3=图鉴:明亮龙眼石","=q3=图鉴:闪耀龙眼石","=q3=图鉴:精致龙眼石","=q3=图鉴:闪光龙眼石","=q3=图鉴:断裂龙眼石","=q3=图鉴:异彩龙眼石","=q3=图鉴:秘法龙眼石","=q3=图鉴:精准龙眼石","=q3=图鉴:迅捷龙眼石","=q3=图鉴:刚硬龙眼石","=q3=图鉴:符文龙眼石","=q3=图鉴:圆润龙眼石","=q3=图鉴:致密龙眼石","=q3=图鉴:火花龙眼石","=q3=图鉴:风暴龙眼石","=q3=图鉴:诡秘龙眼石","=q3=图鉴:厚重龙眼石","=q4=图鉴:泰坦神铁地卫项圈","=q4=图鉴:泰坦神铁地卫指环","=q4=图鉴:泰坦神铁冲击指环","=q4=图鉴:泰坦神铁冲击项圈","=q4=图鉴:泰坦神铁魔震项链","=q4=图鉴:泰坦神铁魔震指环"})
process("LeatherworkingLeatherBloodTigerH",3,{"","=q3=血虎护肩","=q3=血虎胸甲"})
process("LeatherworkingLeatherBoreanEmbrace",9,{"","=q2=Arctic Helm","=q2=Arctic Shoulderpads","=q2=Arctic Chestpiece","=q2=Arctic Wristguards","=q2=Arctic Gloves","=q2=Arctic Belt","=q2=Arctic Leggings","=q2=Arctic Boots"})
process("LeatherworkingLeatherDevilsaurArmor",3,{"","=q3=魔暴龙皮手套","=q3=魔暴龙皮护腿"})
process("LeatherworkingLeatherEvisceratorBattlegear",9,{"","=q3=Eviscerator's Facemask","=q3=Eviscerator's Shoulderpads","=q3=Eviscerator's Chestguard","=q3=Eviscerator's Bindings","=q3=Eviscerator's Gauntlets","=q3=Eviscerator's Waistguard","=q3=Eviscerator's Legguards","=q3=Eviscerator's Treads"})
process("LeatherworkingLeatherFelSkin",4,{"","=q3=魔能皮甲手套","=q3=魔能皮甲护腿","=q3=魔能皮甲长靴"})
process("LeatherworkingLeatherIceborneEmbrace",9,{"","=q2=Iceborne Helm","=q2=Iceborne Shoulderpads","=q2=Iceborne Chestguard","=q2=Iceborne Wristguards","=q2=Iceborne Gloves","=q2=Iceborne Belt","=q2=Iceborne Leggings","=q2=Iceborne Boots"})
process("LeatherworkingLeatherIronfeatherArmor",3,{"","=q3=铁羽护肩","=q3=铁羽胸甲"})
process("LeatherworkingLeatherOvercasterBattlegear",9,{"","=q3=Overcast Headguard","=q3=Overcast Spaulders","=q3=Overcast Chestguard","=q3=Overcast Bracers","=q3=Overcast Handwraps","=q3=Overcast Belt","=q3=Overcast Leggings","=q3=Overcast Boots"})
process("LeatherworkingLeatherPrimalBatskin",4,{"","=q3=原始蝙蝠皮外套","=q3=原始蝙蝠皮护腕","=q3=原始蝙蝠皮手套"})
process("LeatherworkingLeatherPrimalIntent",4,{"","=q4=原始打击外衣","=q4=原始打击护腕","=q4=原始打击腰带"})
process("LeatherworkingLeatherSClefthoof",4,{"","=q3=厚重裂蹄外套","=q3=厚重裂蹄护腿","=q3=厚重裂蹄长靴"})
process("LeatherworkingLeatherStormshroudArmor",5,{"","=q3=雷暴护肩","=q3=雷暴护甲","=q3=雷暴手套","=q3=雷暴短裤"})
process("LeatherworkingLeatherThickDraenicA",5,{"","=q2=厚重德莱尼外套","=q2=厚重德莱尼手套","=q2=厚重德莱尼短裤","=q2=厚重德莱尼长靴"})
process("LeatherworkingLeatherVolcanicArmor",4,{"","=q2=火山护肩","=q2=火山胸甲","=q2=火山护腿"})
process("LeatherworkingLeatherWildDraenishA",5,{"","=q2=野性德莱尼外套","=q2=野性德莱尼手套","=q2=野性德莱尼护腿","=q2=野性德莱尼长靴"})
process("LeatherworkingLeatherWindhawkArmor",4,{"","=q4=风鹰胸甲","=q4=风鹰护腕","=q4=风鹰腰带"})
process("LeatherworkingMailBlackDragonM",5,{"","=q3=黑色龙鳞护肩","=q3=黑色龙鳞胸甲","=q3=黑色龙鳞护腿","=q4=黑色龙鳞战靴"})
process("LeatherworkingMailBlueDragonM",4,{"","=q3=蓝龙鳞片护肩","=q3=蓝龙鳞片胸甲","=q3=蓝龙鳞片护腿"})
process("LeatherworkingMailFelscaleArmor",5,{"","=q2=魔鳞胸甲","=q2=魔鳞手套","=q2=魔鳞短裤","=q2=魔鳞长靴"})
process("LeatherworkingMailFelstalkerArmor",4,{"","=q3=魔能猎手胸甲","=q3=魔能猎手护腕","=q3=魔能猎手腰带"})
process("LeatherworkingMailFrostscaleBinding",9,{"","=q2=Frostscale Helm","=q2=Frostscale Shoulders","=q2=Frostscale Chestguard","=q2=Frostscale Bracers","=q2=Frostscale Gloves","=q2=Frostscale Belt","=q2=Frostscale Leggings","=q2=Frostscale Boots"})
process("LeatherworkingMailGreenDragonM",4,{"","=q3=绿龙鳞片胸甲","=q3=绿色龙鳞护手","=q3=绿龙鳞片护腿"})
process("LeatherworkingMailNerubianHive",9,{"","=q2=Nerubian Helm","=q2=Nerubian Shoulders","=q2=Nerubian Chestguard","=q2=Nerubian Bracers","=q2=Nerubian Gloves","=q2=Nerubian Belt","=q2=Nerubian Legguards","=q2=Nerubian Boots"})
process("LeatherworkingMailNetherFury",4,{"","=q3=虚空之怒腰带","=q3=虚空之怒护腿","=q3=虚空之怒长靴"})
process("LeatherworkingMailNetherscaleArmor",4,{"","=q4=黑色虚鳞胸甲","=q4=黑色虚鳞护腕","=q4=黑色虚鳞腰带"})
process("LeatherworkingMailNetherstrikeArmor",4,{"","=q4=虚空打击胸甲","=q4=虚空打击护腕","=q4=虚空打击腰带"})
process("LeatherworkingMailScaledDraenicA",5,{"","=q2=缀鳞德拉诺外套","=q2=缀鳞德拉诺手套","=q2=缀鳞德拉诺短裤","=q2=缀鳞德拉诺长靴"})
process("LeatherworkingMailStormhideBattlegear",9,{"","=q3=Stormhide Crown","=q3=Stormhide Shoulders","=q3=Stormhide Hauberk","=q3=Stormhide Wristguards","=q3=Stormhide Grips","=q3=Stormhide Belt","=q3=Stormhide Legguards","=q3=Stormhide Stompers"})
process("LeatherworkingMailSwiftarrowBattlefear",9,{"","=q3=Swiftarrow Helm","=q3=Swiftarrow Shoulderguards","=q3=Swiftarrow Hauberk","=q3=Swiftarrow Bracers","=q3=Swiftarrow Gauntlets","=q3=Swiftarrow Belt","=q3=Swiftarrow Leggings","=q3=Swiftarrow Boots"})
process("TailoringArcanoVest",4,{"","=q3=奥法交织长袍","=q3=奥法交织护腕","=q3=奥法交织长靴"})
process("TailoringBattlecastG",3,{"","=q4=战斗施法罩帽","=q4=战斗施法短裤"})
process("TailoringBloodvineG",4,{"","=q3=血藤外套","=q3=血藤护腿","=q3=血藤长靴"})
process("TailoringDuskweaver",9,{"","=q2=Duskweave Cowl","=q2=Duskweave Shoulders","=q2=Duskweave Robe","=q2=Duskweave Wristwraps","=q2=Duskweave Gloves","=q2=Duskweave Belt","=q2=Duskweave Leggings","=q2=Duskweave Boots"})
process("TailoringFrostsavageBattlegear",9,{"","=q3=Frostsavage Cowl","=q3=Frostsavage Shoulders","=q3=Frostsavage Robe","=q3=Frostsavage Bracers","=q3=Frostsavage Gloves","=q3=Frostsavage Belt","=q3=Frostsavage Leggings","=q3=Frostsavage Boots"})
process("TailoringFrostwovenPower",9,{"","=q2=Frostwoven Cowl","=q2=Frostwoven Shoulders","=q2=Frostwoven Robe","=q2=Frostwoven Wristwraps","=q2=Frostwoven Gloves","=q2=Frostwoven Belt","=q2=Frostwoven Leggings","=q2=Frostwoven Boots"})
process("TailoringImbuedNeather",5,{"","=q3=魔化灵纹外套","=q3=魔化灵纹长袍","=q3=魔化灵纹短裤","=q3=魔化灵纹长靴"})
process("TailoringNeatherVest",8,{"","=q2=灵纹外套","=q2=灵纹长袍","=q2=灵纹护腕","=q2=灵纹手套","=q2=灵纹腰带","=q2=灵纹短裤","=q2=灵纹长靴"})
process("TailoringPrimalMoon",4,{"","=q4=原始月布护肩","=q4=原始月布长袍","=q4=原始月布腰带"})
process("TailoringShadowEmbrace",4,{"","=q4=冰霜暗纹护肩","=q4=冰霜暗纹长袍","=q4=冰霜暗纹长靴"})
process("TailoringSoulclothEm",4,{"","=q4=灵魂布护肩","=q4=灵魂布外衣","=q4=灵魂布手套"})
process("TailoringSpellfireWrath",4,{"","=q4=魔焰长袍","=q4=魔焰手套","=q4=魔焰腰带"})
process("TailoringSpellstrikeInfu",3,{"","=q4=法术打击兜帽","=q4=法术打击短裤"})
process("TailoringTheUnyielding",3,{"","=q3=不屈护腕","=q4=不屈束带"})
process("TailoringWhitemendWis",3,{"","=q4=白色治愈兜帽","=q4=白色治愈短裤"})
elseif locale == "zhTW" then
process("BlacksmithingMailBloodsoulEmbrace",4,{"","=q3=血魂護肩","=q3=血魂胸甲","=q3=血魂護手"})
process("BlacksmithingMailFelIronChain",5,{"","=q2=魔鐵鍊甲罩盔","=q2=魔鐵鍊甲外套","=q2=魔鐵鍊甲護腕","=q2=魔鐵鍊甲手套"})
process("BlacksmithingPlateAdamantiteB",4,{"","=q3=堅鋼胸甲","=q3=堅鋼鎧甲護腕","=q3=堅鋼鎧甲手套"})
process("BlacksmithingPlateBurningRage",5,{"","=q3=怒鋼頭盔","=q3=怒鋼護肩","=q3=怒鋼胸甲","=q3=怒鋼手套"})
process("BlacksmithingPlateEnchantedAdaman",5,{"","=q3=附魔堅鋼胸甲","=q3=附魔堅鋼腰帶","=q3=附魔堅鋼護腿","=q3=附魔堅鋼長靴"})
process("BlacksmithingPlateFaithFelsteel",4,{"","=q3=魔鋼頭盔","=q3=魔鋼手套","=q3=魔鋼護腿"})
process("BlacksmithingPlateFelIronPlate",6,{"","=q2=魔鐵胸甲","=q2=魔鐵鎧甲手套","=q2=魔鐵鎧甲腰帶","=q2=魔鐵鎧甲束褲","=q2=魔鐵鎧甲長靴"})
process("BlacksmithingPlateFlameG",5,{"","=q3=烈焰毀滅頭盔","=q3=烈焰毀滅胸甲","=q3=烈焰毀滅護腕","=q3=烈焰毀滅手套"})
process("BlacksmithingPlateImperialPlate",8,{"","=q2=帝國鎧甲頭盔","=q2=帝國鎧甲護肩","=q2=帝國鎧甲護胸","=q2=帝國鎧甲護腕","=q2=帝國鎧甲腰帶","=q2=帝國鎧甲護腿","=q2=帝國鎧甲長靴"})
process("BlacksmithingPlateKhoriumWard",4,{"","=q3=克銀腰帶","=q3=克銀束褲","=q3=克銀長靴"})
process("BlacksmithingPlateOrnateSaroniteBattlegear",9,{"","=q3=Ornate Saronite Skullshield","=q3=Ornate Saronite Pauldrons","=q3=Ornate Saronite Hauberk","=q3=Ornate Saronite Bracers","=q3=Ornate Saronite Gauntlets","=q3=Ornate Saronite Waistguard","=q3=Ornate Saronite Legplates","=q3=Ornate Saronite Walkers"})
process("BlacksmithingPlateSavageSaroniteBattlegear",9,{"","=q3=Savage Saronite Skullshield","=q3=Savage Saronite Pauldrons","=q3=Savage Saronite Hauberk","=q3=Savage Saronite Bracers","=q3=Savage Saronite Gauntlets","=q3=Savage Saronite Waistguard","=q3=Savage Saronite Legplates","=q3=Savage Saronite Walkers"})
process("BlacksmithingPlateTheDarksoul",4,{"","=q3=黑暗之魂護肩","=q3=黑暗之魂胸甲","=q3=黑暗之魂護腿"})
process("CookingDaily1",6,{"=q3=Recipe: Delicious Chocolate Cake","=q3=Recipe: Stormchops","=q2=Recipe: Broiled Bloodfin","=q2=Recipe: Kibler's Bits","=q2=Recipe: Skullfish Soup","=q2=Recipe: Spicy Hot Talbuk"})
process("CookingDaily2",27,{"=q2=食譜:焦黑的龍鰭","=q2=食譜:焦黑的座狼排","=q2=食譜:小動物餌食","=q2=食譜:墨魚排","=q2=食譜:龍鰭魚片","=q2=食譜:爆香鮭魚","=q2=食譜:營養犀牛肉","=q2=食譜:帝王韌皮魟魚排","=q2=食譜:超級長毛象餐","=q2=食譜:強力犀牛熱狗","=q2=食譜:水煮北地牛尾魚","=q2=食譜:犀蟲雜肉排","=q2=食譜:終極鯛魚","=q2=食譜:辣味長毛象美饌","=q2=食譜:辣味巨蟲堡","=q2=食譜:辣味藍蕁麻魚","=q2=食譜:辣味炸鯡魚","=q2=食譜:嫩鍬牙肉排","=q2=食譜:追蹤者點心","=q2=食譜:嚴重烤焦的座狼肉","=q3=Chef's Hat","=q1=北地香料","","=q3=Recipe: Delicious Chocolate Cake","=q3=Recipe: Stormchops","=q1=Baby Spice","=q1=Old Spices"})
process("CraftedWeapons1",24,{"=q4=Shadow's Edge","","=q4=Titansteel Spellblade","=q4=Titansteel Shanker","=q4=Titansteel Bonecrusher","=q4=Titansteel Guardian","=q4=Titansteel Destroyer","=q4=Titansteel Shield Wall","","=q4=Armor Plated Combat Shotgun","=q4=Nesingwary 4000","","=q4=恆金符文刃","=q4=輓歌之刃","=q4=魔鋼長刃","=q4=克銀勇士","=q4=魔鋒戰鬥斧","=q4=魔鋼斧","=q4=永恆之手","=q4=符刻錘","=q4=魔鐵強化槌","=q4=公正力量之錘","","=q4=迴轉平衡克銀毀滅火槍"})
process("CraftedWeapons2",13,{"","=q4=黑色赦免者","=q4=賢者之刃","=q4=黑色衛士","=q4=夜幕","=q4=黑檀之手","=q4=說服者","=q4=薩弗隆戰錘","=q4=黑色怒火","=q4=鋸齒黑曜石之盾","","=q4=熔核狙擊步槍","=q4=力回饋盾牌"})
process("CraftedWeapons3",21,{"","=q4=火焰衛士","=q4=燃燒守護者","=q4=燃燒之怒","=q4=獅心之刃","=q4=獅心勇士劍","=q4=獅心斬首者","","=q4=異界之鋒","=q4=黑色異界之鋒","=q4=諸界邪鋒","=q4=新月斧","=q4=月光斬斧","=q4=血月","","=q4=龍拳之錘","=q4=龍喉","=q4=龍擊","=q4=雷","=q4=深雷","=q4=風暴信使"})
process("FishingDaily1",17,{"=q4=The 2 Ring","=q3=Weather-Beaten Fishing Hat","=q3=恰克的水桶","=q3=污息的水桶","=q3=史納立的水桶","=q3=凸牙的水桶","=q3=Eye of the Sea","=q2=Recipe: Captain Rumsey's Lager","=q2=Spun Truesilver Fishing Line","=q1=Noble's Monocle","=q1=Antique Silver Cufflinks","=q1=Gold Wedding Band","=q1=Ornate Drinking Stein","=q1=Razor Sharp Fillet Knife","=q1=Weather-Beaten Journal","=q1=Elixir of Water Walking","=q1=Sharpened Fish Hook"})
process("FishingDaily2",23,{"=q4=Bold Stormjewel","=q4=Brilliant Stormjewel","=q4=Delicate Stormjewel","=q4=Rigid Stormjewel","=q4=Runed Stormjewel","=q4=Solid Stormjewel","=q4=Sparkling Stormjewel","=q3=Weather-Beaten Fishing Hat","=q3=Bone Fishing Pole","=q3=Jeweled Fishing Pole","=q3=Strand Crawler","=q3=海妖之淚","=q3=Tiny Titanium Lockbox","=q2=Recipe: Captain Rumsey's Lager","=q2=高強度恆金漁線","=q1=Battered Jungle Hat","=q1=Diamond-tipped Cane","=q1=Glow Worm","=q1=Unusual Compass","=q1=Pygmy Oil","=q1=Elixir of Water Walking","=q1=Sealed Vial of Poison","=q1=Waterlogged Recipe"})
process("JewelDragonsEye1",19,{"","","","","","","","","","","","","","","","","","","=q3=Dragon's Eye"})
process("JewelcraftingDaily1",19,{"=q3=Design: Bold Cardinal Ruby","=q3=Design: Bright Cardinal Ruby","=q3=Design: Delicate Cardinal Ruby","=q3=Design: Flashing Cardinal Ruby","=q3=Design: Fractured Cardinal Ruby","=q3=Design: Precise Cardinal Ruby","=q3=Design: Runed Cardinal Ruby","=q3=Design: Subtle Cardinal Ruby","=q3=設計圖:清晰的血色紅寶石","=q3=設計圖:精緻的血色紅寶石","=q3=設計圖:閃光的血色紅寶石","=q3=Design: Brilliant King's Amber","=q3=Design: Mystic King's Amber","=q3=Design: Quick King's Amber","=q3=Design: Rigid King's Amber","=q3=Design: Smooth King's Amber","=q3=Design: Thick King's Amber","=q3=設計圖:迅速的秋輝石","=q3=設計圖:堅硬的秋輝石"})
process("JewelcraftingDaily2",28,{"=q3=Design: Accurate Ametrine","=q3=Design: Champion's Ametrine","=q3=Design: Deadly Ametrine","=q3=Design: Deft Ametrine","=q3=Design: Durable Ametrine","=q3=Design: Empowered Ametrine","=q3=Design: Etched Ametrine","=q3=Design: Fierce Ametrine","=q3=Design: Glimmering Ametrine","=q3=Design: Glinting Ametrine","=q3=Design: Inscribed Ametrine","=q3=Design: Lucent Ametrine","=q3=Design: Luminous Ametrine","=q3=Design: Potent Ametrine","=q3=Design: Pristine Ametrine","=q3=Design: Reckless Ametrine","=q3=Design: Resolute Ametrine","=q3=Design: Resplendent Ametrine","=q3=Design: Stalwart Ametrine","=q3=Design: Stark Ametrine","=q3=Design: Veiled Ametrine","=q3=Design: Wicked Ametrine","=q3=設計圖:閃爍的君王黃寶石","=q3=設計圖:夜光的君王黃寶石","=q3=設計圖:高效的君王黃寶石","=q3=設計圖:魯莽的君王黃寶石","=q3=設計圖:突出的君王黃寶石","=q3=設計圖:朦朧的君王黃寶石"})
process("JewelcraftingDaily3",26,{"=q3=Design: Dazzling Eye of Zul","=q3=Design: Enduring Eye of Zul","=q3=Design: Energized Eye of Zul","=q3=Design: Forceful Eye of Zul","=q3=Design: Intricate Eye of Zul","=q3=Design: Jagged Eye of Zul","=q3=Design: Lambent Eye of Zul","=q3=Design: Misty Eye of Zul","=q3=Design: Opaque Eye of Zul","=q3=Design: Radiant Eye of Zul","=q3=Design: Seer's Eye of Zul","=q3=Design: Shattered Eye of Zul","=q3=Design: Shining Eye of Zul","=q3=Design: Steady Eye of Zul","=q3=Design: Sundered Eye of Zul","=q3=Design: Tense Eye of Zul","=q3=Design: Timeless Eye of Zul","=q3=Design: Turbid Eye of Zul","=q3=Design: Vivid Eye of Zul","=q3=設計圖:耐久的森之翡翠","=q3=設計圖:充能的森之翡翠","=q3=設計圖:堅強的森之翡翠","=q3=設計圖:錯綜的森之翡翠","=q3=設計圖:柔光的森之翡翠","=q3=設計圖:先知的森之翡翠","=q3=設計圖:鮮艷的森之翡翠"})
process("JewelcraftingDaily4",16,{"=q3=Design: Balanced Dreadstone","=q3=Design: Defender's Dreadstone","=q3=Design: Glowing Dreadstone","=q3=Design: Guardian's Dreadstone","=q3=Design: Infused Dreadstone","=q3=Design: Mysterious Dreadstone","=q3=Design: Puissant Dreadstone","=q3=Design: Purified Dreadstone","=q3=Design: Regal Dreadstone","=q3=Design: Royal Dreadstone","=q3=Design: Shifting Dreadstone","=q3=Design: Sovereign Dreadstone","=q3=Design: Tenuous Dreadstone","=q3=設計圖:強權的暮光蛋白石","=q3=設計圖:華貴的暮光蛋白石","=q3=設計圖:皇家的暮光蛋白石"})
process("JewelcraftingDaily5",14,{"=q3=Design: Lustrous Majestic Zircon","=q3=Design: Solid Majestic Zircon","=q3=Design: Sparkling Majestic Zircon","=q3=Design: Stormy Majestic Zircon","=q3=設計圖:光輝的青空藍寶石","=q3=設計圖:堅固的青空藍寶石","=q3=設計圖:混沌的天燄鑽石","=q3=設計圖:光耀的天燄鑽石","=q3=設計圖:餘燼的天燄鑽石","=q3=設計圖:洞察的大地圍城鑽石","=q3=設計圖:鼓舞的大地圍城鑽石","=q3=設計圖:不懈的大地圍城鑽石","=q3=設計圖:甦活的天燄鑽石","=q3=設計圖:鋒銳的大地圍城鑽石"})
process("JewelcraftingDaily6",24,{"=q3=設計圖:清晰的龍瞳石","=q3=設計圖:光亮的龍瞳石","=q3=設計圖:明亮的龍瞳石","=q3=設計圖:精緻的龍瞳石","=q3=設計圖:閃光的龍瞳石","=q3=設計圖:裂面的龍瞳石","=q3=設計圖:光輝的龍瞳石","=q3=設計圖:神秘的龍瞳石","=q3=設計圖:精確的龍瞳石","=q3=設計圖:迅速的龍瞳石","=q3=設計圖:堅硬的龍瞳石","=q3=設計圖:符文的龍瞳石","=q3=設計圖:光滑的龍瞳石","=q3=設計圖:堅固的龍瞳石","=q3=設計圖:閃亮的龍瞳石","=q3=設計圖:風暴的龍瞳石","=q3=設計圖:精巧的龍瞳石","=q3=設計圖:厚重的龍瞳石","=q4=設計圖:泰坦鋼大地守衛之鍊","=q4=設計圖:泰坦鋼大地守衛戒指","=q4=設計圖:泰坦鋼衝擊指環","=q4=設計圖:泰坦鋼衝擊頸飾","=q4=設計圖:泰坦鋼法術震擊項鍊","=q4=設計圖:泰坦鋼法術震擊戒指"})
process("LeatherworkingLeatherBloodTigerH",3,{"","=q3=血虎護肩","=q3=血虎胸甲"})
process("LeatherworkingLeatherBoreanEmbrace",9,{"","=q2=Arctic Helm","=q2=Arctic Shoulderpads","=q2=Arctic Chestpiece","=q2=Arctic Wristguards","=q2=Arctic Gloves","=q2=Arctic Belt","=q2=Arctic Leggings","=q2=Arctic Boots"})
process("LeatherworkingLeatherDevilsaurArmor",3,{"","=q3=魔暴龍護手","=q3=魔暴龍皮護腿"})
process("LeatherworkingLeatherEvisceratorBattlegear",9,{"","=q3=Eviscerator's Facemask","=q3=Eviscerator's Shoulderpads","=q3=Eviscerator's Chestguard","=q3=Eviscerator's Bindings","=q3=Eviscerator's Gauntlets","=q3=Eviscerator's Waistguard","=q3=Eviscerator's Legguards","=q3=Eviscerator's Treads"})
process("LeatherworkingLeatherFelSkin",4,{"","=q3=惡魔皮手套","=q3=惡魔皮護腿","=q3=惡魔皮靴"})
process("LeatherworkingLeatherIceborneEmbrace",9,{"","=q2=Iceborne Helm","=q2=Iceborne Shoulderpads","=q2=Iceborne Chestguard","=q2=Iceborne Wristguards","=q2=Iceborne Gloves","=q2=Iceborne Belt","=q2=Iceborne Leggings","=q2=Iceborne Boots"})
process("LeatherworkingLeatherIronfeatherArmor",3,{"","=q3=鐵羽護肩","=q3=鐵羽胸甲"})
process("LeatherworkingLeatherOvercasterBattlegear",9,{"","=q3=Overcast Headguard","=q3=Overcast Spaulders","=q3=Overcast Chestguard","=q3=Overcast Bracers","=q3=Overcast Handwraps","=q3=Overcast Belt","=q3=Overcast Leggings","=q3=Overcast Boots"})
process("LeatherworkingLeatherPrimalBatskin",4,{"","=q3=原始蝙蝠皮上衣","=q3=原始蝙蝠皮護腕","=q3=原始蝙蝠皮手套"})
process("LeatherworkingLeatherPrimalIntent",4,{"","=q4=原始之擊外衣","=q4=原始之擊護腕","=q4=原始之擊腰帶"})
process("LeatherworkingLeatherSClefthoof",4,{"","=q3=重型裂蹄外衣","=q3=重型裂蹄護腿","=q3=重型裂蹄長靴"})
process("LeatherworkingLeatherStormshroudArmor",5,{"","=q3=雷暴護肩","=q3=雷暴護甲","=q3=雷暴手套","=q3=雷暴束褲"})
process("LeatherworkingLeatherThickDraenicA",5,{"","=q2=厚德萊尼外衣","=q2=厚德萊尼手套","=q2=厚德萊尼束褲","=q2=厚德萊尼長靴"})
process("LeatherworkingLeatherVolcanicArmor",4,{"","=q2=火山護肩","=q2=火山胸甲","=q2=火山護腿"})
process("LeatherworkingLeatherWildDraenishA",5,{"","=q2=狂野德萊尼外衣","=q2=狂野德萊尼手套","=q2=狂野德萊尼護腿","=q2=狂野德萊尼長靴"})
process("LeatherworkingLeatherWindhawkArmor",4,{"","=q4=風之隼鍊衫","=q4=風之隼護腕","=q4=風之隼腰帶"})
process("LeatherworkingMailBlackDragonM",5,{"","=q3=黑色龍鱗護肩","=q3=黑色龍鱗胸甲","=q3=黑色龍鱗護腿","=q4=黑色龍鱗長靴"})
process("LeatherworkingMailBlueDragonM",4,{"","=q3=藍龍鱗片護肩","=q3=藍龍鱗片胸甲","=q3=藍龍鱗片護腿"})
process("LeatherworkingMailFelscaleArmor",5,{"","=q2=魔鱗胸甲","=q2=魔鱗手套","=q2=魔鱗束褲","=q2=魔鱗長靴"})
process("LeatherworkingMailFelstalkerArmor",4,{"","=q3=惡魔捕獵者胸甲","=q3=惡魔捕獵者護腕","=q3=惡魔捕獵者腰帶"})
process("LeatherworkingMailFrostscaleBinding",9,{"","=q2=Frostscale Helm","=q2=Frostscale Shoulders","=q2=Frostscale Chestguard","=q2=Frostscale Bracers","=q2=Frostscale Gloves","=q2=Frostscale Belt","=q2=Frostscale Leggings","=q2=Frostscale Boots"})
process("LeatherworkingMailGreenDragonM",4,{"","=q3=綠龍鱗片胸甲","=q3=綠色龍鱗護手","=q3=綠龍鱗片護腿"})
process("LeatherworkingMailNerubianHive",9,{"","=q2=Nerubian Helm","=q2=Nerubian Shoulders","=q2=Nerubian Chestguard","=q2=Nerubian Bracers","=q2=Nerubian Gloves","=q2=Nerubian Belt","=q2=Nerubian Legguards","=q2=Nerubian Boots"})
process("LeatherworkingMailNetherFury",4,{"","=q3=虛空之怒腰帶","=q3=虛空之怒護腿","=q3=虛空之怒長靴"})
process("LeatherworkingMailNetherscaleArmor",4,{"","=q4=黑虛空鱗胸甲","=q4=黑虛空鱗護腕","=q4=黑虛空鱗腰帶"})
process("LeatherworkingMailNetherstrikeArmor",4,{"","=q4=地擊胸甲","=q4=地擊護腕","=q4=地擊腰帶"})
process("LeatherworkingMailScaledDraenicA",5,{"","=q2=德萊尼綴鱗外衣","=q2=德萊尼綴鱗手套","=q2=德萊尼綴鱗束褲","=q2=德萊尼綴鱗長靴"})
process("LeatherworkingMailStormhideBattlegear",9,{"","=q3=Stormhide Crown","=q3=Stormhide Shoulders","=q3=Stormhide Hauberk","=q3=Stormhide Wristguards","=q3=Stormhide Grips","=q3=Stormhide Belt","=q3=Stormhide Legguards","=q3=Stormhide Stompers"})
process("LeatherworkingMailSwiftarrowBattlefear",9,{"","=q3=Swiftarrow Helm","=q3=Swiftarrow Shoulderguards","=q3=Swiftarrow Hauberk","=q3=Swiftarrow Bracers","=q3=Swiftarrow Gauntlets","=q3=Swiftarrow Belt","=q3=Swiftarrow Leggings","=q3=Swiftarrow Boots"})
process("TailoringArcanoVest",4,{"","=q3=奧紋長袍","=q3=奧紋護腕","=q3=奧紋長靴"})
process("TailoringBattlecastG",3,{"","=q4=戰放兜帽","=q4=戰放束褲"})
process("TailoringBloodvineG",4,{"","=q3=血藤外衣","=q3=血藤護腿","=q3=血藤長靴"})
process("TailoringDuskweaver",9,{"","=q2=Duskweave Cowl","=q2=Duskweave Shoulders","=q2=Duskweave Robe","=q2=Duskweave Wristwraps","=q2=Duskweave Gloves","=q2=Duskweave Belt","=q2=Duskweave Leggings","=q2=Duskweave Boots"})
process("TailoringFrostsavageBattlegear",9,{"","=q3=Frostsavage Cowl","=q3=Frostsavage Shoulders","=q3=Frostsavage Robe","=q3=Frostsavage Bracers","=q3=Frostsavage Gloves","=q3=Frostsavage Belt","=q3=Frostsavage Leggings","=q3=Frostsavage Boots"})
process("TailoringFrostwovenPower",9,{"","=q2=Frostwoven Cowl","=q2=Frostwoven Shoulders","=q2=Frostwoven Robe","=q2=Frostwoven Wristwraps","=q2=Frostwoven Gloves","=q2=Frostwoven Belt","=q2=Frostwoven Leggings","=q2=Frostwoven Boots"})
process("TailoringImbuedNeather",5,{"","=q3=魔染幽紋外套","=q3=魔染幽紋長袍","=q3=魔染幽紋束褲","=q3=魔染幽紋長靴"})
process("TailoringNeatherVest",8,{"","=q2=幽紋外套","=q2=幽紋長袍","=q2=幽紋護腕","=q2=幽紋手套","=q2=幽紋腰帶","=q2=幽紋束褲","=q2=幽紋長靴"})
process("TailoringPrimalMoon",4,{"","=q4=原始月布護肩","=q4=原始月布長袍","=q4=原始月布腰帶"})
process("TailoringShadowEmbrace",4,{"","=q4=冰霜影紋護肩","=q4=冰霜影紋長袍","=q4=冰霜影紋長靴"})
process("TailoringSoulclothEm",4,{"","=q4=靈魂布護肩","=q4=靈魂布外衣","=q4=靈魂布手套"})
process("TailoringSpellfireWrath",4,{"","=q4=魔焰長袍","=q4=魔焰手套","=q4=魔焰腰帶"})
process("TailoringSpellstrikeInfu",3,{"","=q4=法擊兜帽","=q4=法擊束褲"})
process("TailoringTheUnyielding",3,{"","=q3=不屈護腕","=q4=不屈束腰"})
process("TailoringWhitemendWis",3,{"","=q4=白癒兜帽","=q4=白癒束褲"})
elseif locale == "koKR" then
process("BlacksmithingMailBloodsoulEmbrace",4,{"","=q3=붉은영혼의 어깨보호구","=q3=붉은영혼의 흉갑","=q3=붉은영혼의 건틀릿"})
process("BlacksmithingMailFelIronChain",5,{"","=q2=지옥무쇠 사슬 코이프","=q2=지옥무쇠 사슬 조끼","=q2=지옥무쇠 사슬 팔보호구","=q2=지옥무쇠 사슬 장갑"})
process("BlacksmithingPlateAdamantiteB",4,{"","=q3=아다만타이트 흉갑","=q3=아다만타이트 판금 팔보호구","=q3=아다만타이트 판금 장갑"})
process("BlacksmithingPlateBurningRage",5,{"","=q3=분노의 강철 투구","=q3=분노의 강철 어깨보호구","=q3=분노의 강철 흉갑","=q3=분노의 강철 장갑"})
process("BlacksmithingPlateEnchantedAdaman",5,{"","=q3=마력 깃든 아다만타이트 흉갑","=q3=마력 깃든 아다만타이트 허리띠","=q3=마력 깃든 아다만타이트 다리보호구","=q3=마력 깃든 아다만타이트 장화"})
process("BlacksmithingPlateFaithFelsteel",4,{"","=q3=지옥강철 투구","=q3=지옥강철 장갑","=q3=지옥강철 다리보호구"})
process("BlacksmithingPlateFelIronPlate",6,{"","=q2=지옥무쇠 흉갑","=q2=지옥무쇠 장갑","=q2=지옥무쇠 허리띠","=q2=지옥무쇠 바지","=q2=지옥무쇠 장화"})
process("BlacksmithingPlateFlameG",5,{"","=q3=화염파멸 투구","=q3=화염파멸 흉갑","=q3=화염파멸 팔보호구","=q3=화염파멸 장갑"})
process("BlacksmithingPlateImperialPlate",8,{"","=q2=황제의 판금 투구","=q2=황제의 판금 어깨보호구","=q2=황제의 판금 흉갑","=q2=황제의 판금 팔보호구","=q2=황제의 판금 허리띠","=q2=황제의 판금 다리보호구","=q2=황제의 판금 장화"})
process("BlacksmithingPlateKhoriumWard",4,{"","=q3=코륨 허리띠","=q3=코륨 바지","=q3=코륨 장화"})
process("BlacksmithingPlateOrnateSaroniteBattlegear",9,{"","=q3=화려한 사로나이트 해골투구","=q3=화려한 사로나이트 어깨갑옷","=q3=화려한 사로나이트 갑옷","=q3=화려한 사로나이트 팔보호구","=q3=화려한 사로나이트 건틀릿","=q3=화려한 사로나이트 허리보호대","=q3=화려한 사로나이트 다리갑옷","=q3=화려한 사로나이트 장화"})
process("BlacksmithingPlateSavageSaroniteBattlegear",9,{"","=q3=야만의 사로나이트 해골투구","=q3=야만의 사로나이트 어깨갑옷","=q3=야만의 사로나이트 갑옷","=q3=야만의 사로나이트 팔보호구","=q3=야만의 사로나이트 건틀릿","=q3=야만의 사로나이트 허리보호대","=q3=야만의 사로나이트 다리갑옷","=q3=야만의 사로나이트 장화"})
process("BlacksmithingPlateTheDarksoul",4,{"","=q3=검은영혼의 어깨보호구","=q3=검은영혼의 흉갑","=q3=검은영혼의 다리보호구"})
process("CookingDaily1",6,{"=q3=조리법: 맛좋은 초콜릿 케이크","=q3=조리법: 번개구이","=q2=조리법: 피지느러미 구이","=q2=조리법: 키블러의 간식","=q2=조리법: 해골물고기 수프","=q2=조리법: 매콤한 양념 탈부크 구이"})
process("CookingDaily2",27,{"=q2=용지느러미 장작구이","=q2=조리법: 검은늑대 스테이크","=q2=조리법: 동물 먹이","=q2=조리법: 오징어 스테이크","=q2=조리법: 용지느러미 살코기 요리","=q2=조리법: 연어 숯불구이","=q2=조리법: 영양가 높은 코뿔소 고기","=q2=조리법: 황제 쥐가오리 스테이크","=q2=조리법: 커다란 매머드 고기","=q2=조리법: 커다란 코뿔소 핫도그","=q2=조리법: 삶은 북해 둑중개","=q2=조리법: 맛있는 고룡 스테이크","=q2=조리법: 퉁돔 순살 구이","=q2=조리법: 매콤한 매머드고기 요리","=q2=조리법: 매콤한 고룡 햄버거","=q2=조리법: 매콤한 청해파리","=q2=조리법: 매콤한 청어 튀김","=q2=조리법: 부드러운 뾰족엄니 스테이크","=q2=조리법: 추적자 과자","=q2=조리법: 탄 검은늑대 고기","=q3=요리사 모자","=q1=북지 양념","","=q3=조리법: 맛좋은 초콜릿 케이크","=q3=조리법: 번개구이","=q1=아기 향료","=q1=오래된 향료"})
process("CraftedWeapons1",24,{"=q4=어둠의 칼날도끼","","=q4=티탄강철 마법검","=q4=티탄강철 단도","=q4=티탄강철 해골파쇄기","=q4=티탄강철 수호자","=q4=티탄강철 파괴자","=q4=티탄강철 철벽 방패","","=q4=강철도금 전투 산탄총","=q4=네싱워리 4000","","=q4=이터늄 룬검","=q4=진혼곡","=q4=지옥강철 장검","=q4=용사의 코륨검","=q4=지옥날 전투도끼","=q4=지옥강철 도끼","=q4=영원의 손길","=q4=룬문자 망치","=q4=지옥 경화 마울","=q4=정의로운 힘의 망치","","=q4=균형 잡힌 회전식 코륨 파괴자"})
process("CraftedWeapons2",13,{"","=q4=어둠의 사절","=q4=현자의 검","=q4=검은 수호자","=q4=일몰","=q4=칠흑의 손","=q4=강권의 망치","=q4=설퍼론 망치","=q4=검은분노","=q4=뾰족한 흑요석 방패","","=q4=명사수의 라이플","=q4=마력장 원반"})
process("CraftedWeapons3",21,{"","=q4=불꽃의 수호검","=q4=타오르는 수호검","=q4=타오르는 격노","=q4=사자심장 검","=q4=용사의 사자심장 검","=q4=집행의 사자심장 검","","=q4=차원의 도끼","=q4=검은 차원의 도끼","=q4=사악한 차원의 도끼","=q4=초승달 도끼","=q4=달빛 클레버","=q4=피의 달","","=q4=비룡갈퀴 망치","=q4=용아귀","=q4=용의 일격","=q4=천둥 망치","=q4=천둥번개 망치","=q4=폭풍의 전령"})
process("FishingDaily1",17,{"=q4=두반지","=q3=풍파에 낡은 낚시용 모자","=q3=크릉이의 물동이","=q3=캭캭이의 물동이","=q3=으릉이의 물동이","=q3=덥석이의 물동이","=q3=바다의 눈","=q2=조리법: 럼지 선장의 맥주","=q2=정교한 진은 낚싯줄","=q1=귀족의 외눈 안경","=q1=오래된 은 단추","=q1=결혼 금반지","=q1=화려한 맥주잔","=q1=아주 날카로운 회칼","=q1=풍파에 낡은 일지","=q1=수면 걷기의 비약","=q1=예리한 낚싯바늘"})
process("FishingDaily2",23,{"=q4=굵은 폭풍석","=q4=찬란한 폭풍석","=q4=섬세한 폭풍석","=q4=강도 높은 폭풍석","=q4=룬이 새겨진 폭풍석","=q4=단단한 폭풍석","=q4=반짝거리는 폭풍석","=q3=풍파에 낡은 낚시용 모자","=q3=뼈다귀 낚싯대","=q3=보석 박힌 낚싯대","=q3=해안 게","=q3=세이렌의 눈물","=q3=작은 티타늄 금고","=q2=조리법: 럼지 선장의 맥주","=q2=고탄성 이터늄 낚싯줄","=q1=닳아해진 밀림 모자","=q1=다이아몬드 박힌 지팡이","=q1=빛나는 벌레","=q1=진귀한 나침반","=q1=피그미 기름","=q1=수면 걷기의 비약","=q1=봉인된 독약병","=q1=물에 젖은 제조법"})
process("JewelDragonsEye1",19,{"","","","","","","","","","","","","","","","","","","=q3=용의 눈"})
process("JewelcraftingDaily1",19,{"=q3=디자인: 굵은 선홍빛 루비","=q3=디자인: 광채 나는 선홍빛 루비","=q3=디자인: 섬세한 선홍빛 루비","=q3=디자인: 번쩍이는 선홍빛 루비","=q3=디자인: 부서진 선홍빛 루비","=q3=디자인: 정교한 선홍빛 루비","=q3=디자인: 룬이 새겨진 선홍빛 루비","=q3=디자인: 미묘한 선홍빛 루비","=q3=디자인: 굵은 단홍빛 루비","=q3=디자인: 섬세한 단홍빛 루비","=q3=디자인: 번쩍이는 단홍빛 루비","=q3=디자인: 찬란한 왕의 호박석","=q3=디자인: 신비로운 왕의 호박석","=q3=디자인: 쾌속의 왕의 호박석","=q3=디자인: 강도 높은 왕의 호박석","=q3=디자인: 매끄러운 왕의 호박석","=q3=디자인: 두꺼운 왕의 호박석","=q3=디자인: 쾌속의 단풍석","=q3=디자인: 강도 높은 단풍석"})
process("JewelcraftingDaily2",28,{"=q3=디자인: 정밀한 자황수정","=q3=디자인: 용사의 자황수정","=q3=디자인: 날카로운 자황수정","=q3=디자인: 기교의 자황수정","=q3=디자인: 내구성이 뛰어난 자황수정","=q3=디자인: 힘이 깃든 자황수정","=q3=디자인: 글이 새겨진 자황수정","=q3=디자인: 이글거리는 자황수정","=q3=디자인: 희미하게 빛나는 자황수정","=q3=디자인: 예리하게 빛나는 자황수정","=q3=디자인: 문자가 새겨진 자황수정","=q3=디자인: 반짝이는 자황수정","=q3=디자인: 영롱한 자황수정","=q3=디자인: 마력이 담긴 자황수정","=q3=디자인: 가공하지 않은 자황수정","=q3=디자인: 무모의 자황수정","=q3=디자인: 결의의 자황수정","=q3=디자인: 반들반들한 자황수정","=q3=디자인: 옹골진 자황수정","=q3=디자인: 딱딱한 자황수정","=q3=디자인: 가리어진 자황수정","=q3=디자인: 악의의 자황수정","=q3=디자인: 예리하게 빛나는 제왕 토파즈","=q3=디자인: 영롱한 제왕 토파즈","=q3=디자인: 마력이 담긴 제왕 토파즈","=q3=디자인: 무모의 제왕 토파즈","=q3=디자인: 딱딱한 제왕 토파즈","=q3=디자인: 가리어진 제왕 토파즈"})
process("JewelcraftingDaily3",26,{"=q3=디자인: 휘황찬란한 줄의 눈","=q3=디자인: 견고한 줄의 눈","=q3=디자인: 활력의 줄의 눈","=q3=디자인: 강인한 줄의 눈","=q3=디자인: 엉클어진 줄의 눈","=q3=디자인: 톱니모양 줄의 눈","=q3=디자인: 은은하게 빛나는 줄의 눈","=q3=디자인: 안개 어린 줄의 눈","=q3=디자인: 불투명한 줄의 눈","=q3=디자인: 눈부신 줄의 눈","=q3=디자인: 예언하는 줄의 눈","=q3=디자인: 부서진 줄의 눈","=q3=디자인: 탁월한 줄의 눈","=q3=디자인: 한결같은 줄의 눈","=q3=디자인: 갈라진 줄의 눈","=q3=디자인: 조밀한 줄의 눈","=q3=디자인: 변함없는 줄의 눈","=q3=디자인: 농밀한 줄의 눈","=q3=디자인: 선명한 줄의 눈","=q3=디자인: 견고한 숲 에메랄드","=q3=디자인: 활력의 숲 에메랄드","=q3=디자인: 강인한 숲 에메랄드","=q3=디자인: 엉클어진 숲 에메랄드","=q3=디자인: 은은하게 빛나는 숲 에메랄드","=q3=디자인: 현자의 숲 에메랄드","=q3=디자인: 선명한 숲 에메랄드"})
process("JewelcraftingDaily4",16,{"=q3=디자인: 균형 잡힌 공포석","=q3=디자인: 파수병의 공포석","=q3=디자인: 작열하는 공포석","=q3=디자인: 수호자의 공포석","=q3=디자인: 마력 깃든 공포석","=q3=디자인: 신비한 공포석","=q3=디자인: 권력의 공포석","=q3=디자인: 정화된 공포석","=q3=디자인: 제왕의 공포석","=q3=디자인: 호화로운 공포석","=q3=디자인: 아른거리는 공포석","=q3=디자인: 최상급 공포석","=q3=디자인: 가느다란 공포석","=q3=디자인: 권력의 황혼 오팔","=q3=디자인: 제왕의 황혼 오팔","=q3=디자인: 호화로운 황혼 오팔"})
process("JewelcraftingDaily5",14,{"=q3=디자인: 빛나는 귀족 지르콘","=q3=디자인: 단단한 귀족 지르콘","=q3=디자인: 반짝거리는 귀족 지르콘","=q3=디자인: 휘몰아치는 귀족 지르콘","=q3=디자인: 빛나는 하늘 사파이어","=q3=디자인: 단단한 하늘 사파이어","=q3=디자인: 혼돈의 하늘섬광 다이아몬드","=q3=디자인: 눈부시게 빛나는 하늘섬광 다이아몬드","=q3=디자인: 이글거리는 하늘섬광 다이아몬드","=q3=디자인: 통찰의 대지울림 다이아몬드","=q3=디자인: 활기의 대지울림 다이아몬드","=q3=디자인: 냉혹의 대지울림 다이아몬드","=q3=디자인: 부흥의 하늘섬광 다이아몬드","=q3=디자인: 예리한 대지울림 다이아몬드"})
process("JewelcraftingDaily6",24,{"=q3=디자인: 굵은 용의 눈","=q3=디자인: 광채 나는 용의 눈","=q3=디자인: 찬란한 용의 눈","=q3=디자인: 섬세한 용의 눈","=q3=디자인: 번쩍이는 용의 눈","=q3=디자인: 부서진 용의 눈","=q3=디자인: 빛나는 용의 눈","=q3=디자인: 신비로운 용의 눈","=q3=디자인: 정교한 용의 눈","=q3=디자인: 쾌속의 용의 눈","=q3=디자인: 강도 높은 용의 눈","=q3=디자인: 룬이 새겨진 용의 눈","=q3=디자인: 매끄러운 용의 눈","=q3=디자인: 단단한 용의 눈","=q3=디자인: 반짝거리는 용의 눈","=q3=디자인: 휘몰아치는 용의 눈","=q3=디자인: 미묘한 용의 눈","=q3=디자인: 두꺼운 용의 눈","=q4=디자인: 티타늄 대지수호 사슬목걸이","=q4=디자인: 티타늄 대지수호 반지","=q4=디자인: 티타늄 충격 고리","=q4=디자인: 티타늄 충격 목걸이","=q4=디자인: 티타늄 주문충격 목걸이","=q4=디자인: 티타늄 주문충격 반지"})
process("LeatherworkingLeatherBloodTigerH",3,{"","=q3=붉은호랑이 어깨보호구","=q3=붉은호랑이 흉갑"})
process("LeatherworkingLeatherBoreanEmbrace",9,{"","=q2=북극의 투구","=q2=북극의 어깨보호구","=q2=북극의 흉갑","=q2=북극의 손목보호구","=q2=북극의 장갑","=q2=북극의 허리띠","=q2=북극의 다리보호대","=q2=북극의 장화"})
process("LeatherworkingLeatherDevilsaurArmor",3,{"","=q3=데빌사우루스 건틀릿","=q3=데빌사우루스 다리보호구"})
process("LeatherworkingLeatherEvisceratorBattlegear",9,{"","=q3=적출자의 면갑","=q3=적출자의 어깨보호구","=q3=적출자의 흉갑","=q3=적출자의 손목띠","=q3=적출자의 건틀릿","=q3=적출자의 허리보호대","=q3=적출자의 다리보호대","=q3=적출자의 장화"})
process("LeatherworkingLeatherFelSkin",4,{"","=q3=지옥 가죽 장갑","=q3=지옥 가죽 다리보호구","=q3=지옥 가죽 장화"})
process("LeatherworkingLeatherIceborneEmbrace",9,{"","=q2=얼음결 투구","=q2=얼음결 어깨보호구","=q2=얼음결 흉갑","=q2=얼음결 손목보호구","=q2=얼음결 장갑","=q2=얼음결 허리띠","=q2=얼음결 다리보호구","=q2=얼음결 장화"})
process("LeatherworkingLeatherIronfeatherArmor",3,{"","=q3=무쇠깃털 어깨보호구","=q3=무쇠깃털 흉갑"})
process("LeatherworkingLeatherOvercasterBattlegear",9,{"","=q3=구름 덮인 머리보호구","=q3=구름 덮인 어깨갑옷","=q3=구름 덮인 흉갑","=q3=구름 덮인 팔보호구","=q3=구름 덮인 장갑","=q3=구름 덮인 허리띠","=q3=구름 덮인 다리보호구","=q3=구름 덮인 장화"})
process("LeatherworkingLeatherPrimalBatskin",4,{"","=q3=원시 박쥐가죽 웃옷","=q3=원시 박쥐가죽 팔보호구","=q3=원시 박쥐가죽 장갑"})
process("LeatherworkingLeatherPrimalIntent",4,{"","=q4=원소쐐기 조끼","=q4=원소쐐기 팔보호구","=q4=원소쐐기 허리띠"})
process("LeatherworkingLeatherSClefthoof",4,{"","=q3=질긴 갈래발굽 조끼","=q3=질긴 갈래발굽 다리보호구","=q3=질긴 갈래발굽 장화"})
process("LeatherworkingLeatherStormshroudArmor",5,{"","=q3=폭풍안개 어깨보호구","=q3=폭풍안개 갑옷","=q3=폭풍안개 장갑","=q3=폭풍안개 바지"})
process("LeatherworkingLeatherThickDraenicA",5,{"","=q2=두꺼운 드레나이 조끼","=q2=두꺼운 드레나이 장갑","=q2=두꺼운 드레나이 바지","=q2=두꺼운 드레나이 장화"})
process("LeatherworkingLeatherVolcanicArmor",4,{"","=q2=화산 어깨보호구","=q2=화산 흉갑","=q2=화산 다리보호구"})
process("LeatherworkingLeatherWildDraenishA",5,{"","=q2=야생의 드레나이 조끼","=q2=야생의 드레나이 장갑","=q2=야생의 드레나이 다리보호구","=q2=야생의 드레나이 장화"})
process("LeatherworkingLeatherWindhawkArmor",4,{"","=q4=바람매 갑옷","=q4=바람매 팔보호구","=q4=바람매 허리띠"})
process("LeatherworkingMailBlackDragonM",5,{"","=q3=검은용비늘 어깨보호구","=q3=검은용비늘 흉갑","=q3=검은용비늘 다리보호구","=q4=검은용비늘 장화"})
process("LeatherworkingMailBlueDragonM",4,{"","=q3=푸른용비늘 어깨보호구","=q3=푸른용비늘 흉갑","=q3=푸른용비늘 다리보호구"})
process("LeatherworkingMailFelscaleArmor",5,{"","=q2=지옥껍질 흉갑","=q2=지옥껍질 장갑","=q2=지옥껍질 바지","=q2=지옥껍질 장화"})
process("LeatherworkingMailFelstalkerArmor",4,{"","=q3=지옥추적자 흉갑","=q3=지옥추적자 팔보호구","=q3=지옥추적자 허리띠"})
process("LeatherworkingMailFrostscaleBinding",9,{"","=q2=서리미늘 투구","=q2=서리미늘 어깨보호구","=q2=서리미늘 흉갑","=q2=서리미늘 팔보호구","=q2=서리미늘 장갑","=q2=서리미늘 허리띠","=q2=서리미늘 다리보호대","=q2=서리미늘 장화"})
process("LeatherworkingMailGreenDragonM",4,{"","=q3=녹색용비늘 흉갑","=q3=녹색용비늘 건틀릿","=q3=녹색용비늘 다리보호구"})
process("LeatherworkingMailNerubianHive",9,{"","=q2=네루비안 투구","=q2=네루비안 어깨보호구","=q2=네루비안 흉갑","=q2=네루비안 팔보호구","=q2=네루비안 장갑","=q2=네루비안 허리띠","=q2=네루비안 다리보호대","=q2=네루비안 장화"})
process("LeatherworkingMailNetherFury",4,{"","=q3=황천의 격노 허리띠","=q3=황천의 격노 다리보호구","=q3=황천의 격노 장화"})
process("LeatherworkingMailNetherscaleArmor",4,{"","=q4=칠흑의 황천비늘 흉갑","=q4=칠흑의 황천비늘 팔보호구","=q4=칠흑의 황천비늘 허리띠"})
process("LeatherworkingMailNetherstrikeArmor",4,{"","=q4=황천쐐기 흉갑","=q4=황천쐐기 팔보호구","=q4=황천쐐기 허리띠"})
process("LeatherworkingMailScaledDraenicA",5,{"","=q2=드레나이 미늘 조끼","=q2=드레나이 미늘 장갑","=q2=드레나이 미늘 바지","=q2=드레나이 미늘 장화"})
process("LeatherworkingMailStormhideBattlegear",9,{"","=q3=폭풍도마뱀 관","=q3=폭풍도마뱀 어깨보호구","=q3=폭풍도마뱀 갑옷","=q3=폭풍도마뱀 손목보호구","=q3=폭풍도마뱀 장갑","=q3=폭풍도마뱀 허리띠","=q3=폭풍도마뱀 다리보호대","=q3=폭풍도마뱀 장화"})
process("LeatherworkingMailSwiftarrowBattlefear",9,{"","=q3=바람화살 투구","=q3=바람화살 어깨갑옷","=q3=바람화살 갑옷","=q3=바람화살 팔보호구","=q3=바람화살 건틀릿","=q3=바람화살 허리띠","=q3=바람화살 다리보호구","=q3=바람화살 장화"})
process("TailoringArcanoVest",4,{"","=q3=비전매듭 로브","=q3=비전매듭 팔보호구","=q3=비전매듭 장화"})
process("TailoringBattlecastG",3,{"","=q4=전투시전술 두건","=q4=전투시전술 바지"})
process("TailoringBloodvineG",4,{"","=q3=붉은덩굴 조끼","=q3=붉은덩굴 다리보호구","=q3=붉은덩굴 장화"})
process("TailoringDuskweaver",9,{"","=q2=그늘매듭 두건","=q2=그늘매듭 어깨보호구","=q2=그늘매듭 로브","=q2=그늘매듭 손목보호구","=q2=그늘매듭 장갑","=q2=그늘매듭 허리띠","=q2=그늘매듭 다리보호구","=q2=그늘매듭 장화"})
process("TailoringFrostsavageBattlegear",9,{"","=q3=야만의 서리 두건","=q3=야만의 서리 어깨보호구","=q3=야만의 서리 로브","=q3=야만의 서리 팔보호구","=q3=야만의 서리 장갑","=q3=야만의 서리 허리띠","=q3=야만의 서리 다리보호구","=q3=야만의 서리 장화"})
process("TailoringFrostwovenPower",9,{"","=q2=서리장식 두건","=q2=서리장식 어깨보호구","=q2=서리장식 로브","=q2=서리장식 손목보호구","=q2=서리장식 장갑","=q2=서리장식 허리띠","=q2=서리장식 다리보호구","=q2=서리장식 장화"})
process("TailoringImbuedNeather",5,{"","=q3=마력 깃든 황천매듭 튜닉","=q3=마력 깃든 황천매듭 로브","=q3=마력 깃든 황천매듭 바지","=q3=마력 깃든 황천매듭 장화"})
process("TailoringNeatherVest",8,{"","=q2=황천매듭 튜닉","=q2=황천매듭 로브","=q2=황천매듭 팔보호구","=q2=황천매듭 장갑","=q2=황천매듭 허리띠","=q2=황천매듭 바지","=q2=황천매듭 장화"})
process("TailoringPrimalMoon",4,{"","=q4=태초의 달빛매듭 어깨보호대","=q4=태초의 달빛매듭 로브","=q4=태초의 달빛매듭 허리띠"})
process("TailoringShadowEmbrace",4,{"","=q4=얼어붙은 그림자매듭 어깨보호구","=q4=얼어붙은 그림자매듭 로브","=q4=얼어붙은 그림자매듭 장화"})
process("TailoringSoulclothEm",4,{"","=q4=영혼매듭 어깨보호구","=q4=영혼매듭 조끼","=q4=영혼매듭 장갑"})
process("TailoringSpellfireWrath",4,{"","=q4=마법불꽃 로브","=q4=마법불꽃 장갑","=q4=마법불꽃 허리띠"})
process("TailoringSpellstrikeInfu",3,{"","=q4=마법 강타의 두건","=q4=마법 강타의 바지"})
process("TailoringTheUnyielding",3,{"","=q3=불굴의 팔보호구","=q4=불굴의 벨트"})
process("TailoringWhitemendWis",3,{"","=q4=백마법 두건","=q4=백마법 바지"})
elseif locale == "ruRU" then
process("BlacksmithingMailBloodsoulEmbrace",4,{"","=q3=Наплечники кровавого духа","=q3=Кираса кровавого духа","=q3=Рукавицы кровавого духа"})
process("BlacksmithingMailFelIronChain",5,{"","=q2=Плетеный капюшон из оскверненного железа","=q2=Плетеный мундир из оскверненного железа","=q2=Плетеные наручи из оскверненного железа","=q2=Плетеные перчатки из оскверненного железа"})
process("BlacksmithingPlateAdamantiteB",4,{"","=q3=Адамантитовая кираса","=q3=Адамантитовые латные наручи","=q3=Адамантитовые латные перчатки"})
process("BlacksmithingPlateBurningRage",5,{"","=q3=Шлем из яростной стали","=q3=Наплечники из яростной стали","=q3=Кираса из яростной стали","=q3=Перчатки из яростной стали"})
process("BlacksmithingPlateEnchantedAdaman",5,{"","=q3=Зачарованная адамантитовая кираса","=q3=Зачарованный адамантитовый пояс","=q3=Зачарованные адамантитовые поножи","=q3=Зачарованные адамантитовые сапоги"})
process("BlacksmithingPlateFaithFelsteel",4,{"","=q3=Шлем из оскверненной стали","=q3=Перчатки из оскверненной стали","=q3=Поножи из оскверненной стали"})
process("BlacksmithingPlateFelIronPlate",6,{"","=q2=Кираса из оскверненного железа","=q2=Латные перчатки из оскверненного железа","=q2=Латный пояс из оскверненного железа","=q2=Латные набедренники из оскверненного железа","=q2=Латные сапоги из оскверненного железа"})
process("BlacksmithingPlateFlameG",5,{"","=q3=Шлем огненной гибели","=q3=Кираса огненной гибели","=q3=Наручи огненной гибели","=q3=Перчатки огненной гибели"})
process("BlacksmithingPlateImperialPlate",8,{"","=q2=Императорский латный шлем","=q2=Императорские латные наплечники","=q2=Имперское зерцало","=q2=Императорские латные наручи","=q2=Императорский латный пояс","=q2=Императорские латные поножи","=q2=Императорские латные сапоги"})
process("BlacksmithingPlateKhoriumWard",4,{"","=q3=Кориевый пояс","=q3=Кориевые штаны","=q3=Кориевые сапоги"})
process("BlacksmithingPlateOrnateSaroniteBattlegear",9,{"","=q3=Изысканный саронитовый шлем","=q3=Изысканное саронитовое наплечье","=q3=Изысканный саронитовый хауберк","=q3=Изысканные саронитовые наручи","=q3=Изысканные саронитовые рукавицы","=q3=Изысканный саронитовый воинский пояс","=q3=Изысканные саронитовые ножные латы","=q3=Изысканные саронитовые сапоги"})
process("BlacksmithingPlateSavageSaroniteBattlegear",9,{"","=q3=Саронитовый шлем свирепости","=q3=Саронитовое наплечье свирепости","=q3=Саронитовый хауберк свирепости","=q3=Саронитовые наручи свирепости","=q3=Саронитовые рукавицы свирепости","=q3=Саронитовый воинский пояс свирепости","=q3=Саронитовые ножные латы свирепости","=q3=Саронитовые сапоги свирепости"})
process("BlacksmithingPlateTheDarksoul",4,{"","=q3=Наплечники темного духа","=q3=Кираса темного духа","=q3=Поножи темного духа"})
process("CookingDaily1",6,{"=q3=Рецепт: вкусный шоколадный торт","=q3=Рецепт: буреветчина","=q2=Рецепт: жареный афиохаракс","=q2=Рецепт: \"Кит и кот\"","=q2=Рецепт: суп из рыбы-черепа","=q2=Рецепт: острый стейк из талбука"})
process("CookingDaily2",27,{"=q2=Рецепт: копченая рыба-ангел","=q2=Рецепт: подкопченный стейк из ворга","=q2=Рецепт: корм для зверька","=q2=Рецепт: жареная каракатица","=q2=Рецепт: филе дракоперой рыбы-ангела","=q2=Рецепт: лосось с дымком","=q2=Рецепт: сочное мясо люторога","=q2=Рецепт: стейк из королевского ската","=q2=Рецепт: сытное кушанье из мамонта","=q2=Рецепт: сочные сосиски из люторога","=q2=Рецепт: печеный северный подкаменщик","=q2=Рецепт: люторожий змеестейк","=q2=Рецепт: луциан особого приготовления","=q2=Рецепт: пряное лакомство из мамонта","=q2=Рецепт: котлета из змея с пряностями","=q2=Рецепт: синяя медуза с пряностями","=q2=Рецепт: острая жареная сельдь","=q2=Рецепт: нежный стейк из черпорога","=q2=Рецепт: завтрак следопыта","=q2=Рецепт: пережаренное мясо ворга","=q3=Поварской колпак","=q1=Северные пряности","","=q3=Рецепт: вкусный шоколадный торт","=q3=Рецепт: буреветчина","=q1=Детская приправа","=q1=Выдержанные специи"})
process("CraftedWeapons1",24,{"=q4=Грань Тьмы","","=q4=Чародейский клинок из титановой стали","=q4=Пронзатель из титановой стали","=q4=Костекрушитель из титановой стали","=q4=Булава стража из титановой стали","=q4=Разрушитель из титановой стали","=q4=Осадный щит из титановой стали","","=q4=Бронированный боевой дробовик","=q4=Эрнестуэй 4000","","=q4=Этерниевый рунический клинок","=q4=Погребальный Плач","=q4=Длинный меч из оскверненной стали","=q4=Кориевый защитник","=q4=Боевой топор с кромкой Скверны","=q4=Жнец из оскверненной стали","=q4=Рука Вечности","=q4=Рунический молот","=q4=Закаленная Скверной кувалда","=q4=Молот праведной мощи","","=q4=Гиро-балансированный кориевый Разрушитель"})
process("CraftedWeapons2",13,{"","=q4=Черное прощение","=q4=Клинок мудреца","=q4=Черный Страж","=q4=Сумерки","=q4=Эбеновая рука","=q4=Увещеватель","=q4=Сульфуронский молот","=q4=Черное Неистовство","=q4=Звездчатый обсидиановый щит","","=q4=Снайперская винтовка недр","=q4=Реактивный диск"})
process("CraftedWeapons3",21,{"","=q4=Огненный страж","=q4=Пылкий страж","=q4=Пылкое неистовство","=q4=Клинок Львиного сердца","=q4=Защитник Львиного сердца","=q4=Палач Львиного сердца","","=q4=Плоскостная кромка","=q4=Черная плоскостная кромка","=q4=Гибельный край миров","=q4=Лунный Серп","=q4=Лунный колун","=q4=Кровавая луна","","=q4=Молот Драконьей длани","=q4=Драконья Пасть","=q4=Драконий удар","=q4=Гром","=q4=Глубокий гром","=q4=Штормовестник"})
process("FishingDaily1",17,{"=q4=Другое кольцо","=q3=Видавшая виды рыболовная шапка","=q3=Ведро Проглота","=q3=Ведро со смердыхом","=q3=Ведро Ворчуна","=q3=Ведро с Зубастиком","=q3=Глаз Моря","=q2=Рецепт: светлое пиво капитана Ромси","=q2=Крученая рыболовная леска из истинного серебра","=q1=Монокль аристократа","=q1=Старинные серебряные запонки","=q1=Золотое обручальное кольцо","=q1=Узорчатая пивная кружка","=q1=Острый как бритва разделочный нож","=q1=Истрепанный журнал","=q1=Эликсир хождения по воде","=q1=Заостренный рыболовный крючок"})
process("FishingDaily2",23,{"=q4=Рельефный самоцвет бури","=q4=Сверкающий самоцвет бури","=q4=Изысканный самоцвет бури","=q4=Прочный самоцвет бури","=q4=Рунический самоцвет бури","=q4=Цельный самоцвет бури","=q4=Искрящийся самоцвет бури","=q3=Видавшая виды рыболовная шапка","=q3=Костяная удочка","=q3=Удочка со стразами","=q3=Береговой краб","=q3=Слеза Сирены","=q3=Маленький титановый ящичек","=q2=Рецепт: светлое пиво капитана Ромси","=q2=Сверхпрочная этерниевая леска","=q1=Поношенная тропическая шляпа","=q1=Трость с алмазным набалдашником","=q1=Светлячок","=q1=Необычный компас","=q1=Карломасло","=q1=Эликсир хождения по воде","=q1=Запечатанный фиал с ядом","=q1=Промокший рецепт"})
process("JewelDragonsEye1",19,{"","","","","","","","","","","","","","","","","","","=q3=Око Дракона"})
process("JewelcraftingDaily1",19,{"=q3=Эскиз: рельефный багровый рубин","=q3=Эскиз: яркий багровый рубин","=q3=Эскиз: изысканный багровый рубин","=q3=Эскиз: блистательный багровый рубин","=q3=Эскиз: растрескавшийся багровый рубин","=q3=Эскиз: ясный багровый рубин","=q3=Эскиз: рунический багровый рубин","=q3=Эскиз: изящный багровый рубин","=q3=Эскиз: рельефный алый рубин","=q3=Эскиз: изысканный алый рубин","=q3=Эскиз: блистательный алый рубин","=q3=Эскиз: сверкающий царский янтарь","=q3=Эскиз: мистический царский янтарь","=q3=Эскиз: мягкий царский янтарь","=q3=Эскиз: прочный царский янтарь","=q3=Эскиз: гладкий царский янтарь","=q3=Эскиз: матовый царский янтарь","=q3=Эскиз: мимолетное сияние осени","=q3=Эскиз: яркое сияние осени"})
process("JewelcraftingDaily2",28,{"=q3=Эскиз: идеально ограненный аметрин","=q3=Эскиз: аметрин защитника","=q3=Эскиз: смертоносный аметрин","=q3=Эскиз: аметрин проворства","=q3=Эскиз: надежный аметрин","=q3=Эскиз: наделенный силой аметрин","=q3=Эскиз: гравированный аметрин","=q3=Эскиз: броский аметрин","=q3=Эскиз: мерцающий аметрин","=q3=Эскиз: блистающий аметрин","=q3=Эскиз: покрытый письменами аметрин","=q3=Эскиз: прозрачный аметрин","=q3=Эскиз: светоносный аметрин","=q3=Эскиз: могущественный аметрин","=q3=Эскиз: нетронутый аметрин","=q3=Эскиз: тревожный аметрин","=q3=Эскиз: затвердевший аметрин","=q3=Эскиз: глянцевый аметрин","=q3=Эскиз: стойкий аметрин","=q3=Эскиз: застывший аметрин","=q3=Эскиз: сокрытый аметрин","=q3=Эскиз: гибельный аметрин","=q3=Эскиз: блистающий королевский топаз","=q3=Эскиз: светоносный королевский топаз","=q3=Эскиз: могущественный королевский топаз","=q3=Эскиз: тревожный королевский топаз","=q3=Эскиз: застывший королевский топаз","=q3=Эскиз: сокрытый королевский топаз"})
process("JewelcraftingDaily3",26,{"=q3=Эскиз: ослепительное око Зула","=q3=Эскиз: отверделое око Зула","=q3=Эскиз: усиленное око Зула","=q3=Эскиз: мощное око Зула","=q3=Эскиз: замысловатое око Зула","=q3=Эскиз: зазубренное око Зула","=q3=Эскиз: лучистое око Зула","=q3=Эскиз: смутное око Зула","=q3=Эскиз: непрозрачное око Зула","=q3=Эскиз: светозарное око Зула","=q3=Эскиз: око Зула провидца","=q3=Эскиз: раздробленное око Зула","=q3=Эскиз: сияющее око Зула","=q3=Эскиз: неизменное око Зула","=q3=Эскиз: расколотое око Зула","=q3=Эскиз: плотное око Зула","=q3=Эскиз: вневременное око Зула","=q3=Эскиз: померкшее око Зула","=q3=Эскиз: насыщенное око Зула","=q3=Эскиз: отверделый лесной изумруд","=q3=Эскиз: заряженный лесной изумруд","=q3=Эскиз: мощный лесной изумруд","=q3=Эскиз: замысловатый лесной изумруд","=q3=Эскиз: лучистый лесной изумруд","=q3=Эскиз: лесной изумруд провидца","=q3=Эскиз: насыщенный лесной изумруд"})
process("JewelcraftingDaily4",16,{"=q3=Эскиз: сбалансированный страхолит","=q3=Эскиз: страхолит защитника","=q3=Эскиз: светящийся страхолит","=q3=Эскиз: страхолит стража","=q3=Эскиз: заряженный страхолит","=q3=Эскиз: таинственный страхолит","=q3=Эскиз: всевластный страхолит","=q3=Эскиз: очищенный страхолит","=q3=Эскиз: монарший страхолит","=q3=Эскиз: королевский страхолит","=q3=Эскиз: изменчивый страхолит","=q3=Эскиз: царственный страхолит","=q3=Эскиз: непрочный страхолит","=q3=Эскиз: всевластный сумеречный опал","=q3=Эскиз: монарший сумеречный опал","=q3=Эскиз: королевский сумеречный опал"})
process("JewelcraftingDaily5",14,{"=q3=Эскиз: блестящий величественный циркон","=q3=Эскиз: цельный величественный циркон","=q3=Эскиз: искрящийся величественный циркон","=q3=Эскиз: грозовой величественный циркон","=q3=Эскиз: блестящий небесный сапфир","=q3=Эскиз: твердый небесный сапфир","=q3=Эскиз: хаотический алмаз небесного сияния","=q3=Эскиз: лучезарный алмаз небесного сияния","=q3=Эскиз: тлеющий алмаз небесного сияния","=q3=Эскиз: провидческий алмаз землеправителя","=q3=Эскиз: живительный алмаз землеправителя","=q3=Эскиз: алмаз жестокого землеправителя","=q3=Эскиз: оживляющий алмаз небесного сияния","=q3=Эскиз: заостренный алмаз землеправителя"})
process("JewelcraftingDaily6",24,{"=q3=Эскиз: рельефное око дракона","=q3=Эскиз: яркое око дракона","=q3=Эскиз: сверкающее око дракона","=q3=Эскиз: изысканное око дракона","=q3=Эскиз: блистательное око дракона","=q3=Эскиз: растрескавшееся око дракона","=q3=Эскиз: блестящее око дракона","=q3=Эскиз: мистическое око дракона","=q3=Эскиз: ясное око дракона","=q3=Эскиз: быстрое око дракона","=q3=Эскиз: твердое око дракона","=q3=Эскиз: руническое око дракона","=q3=Эскиз: гладкое око дракона","=q3=Эскиз: твердое око дракона","=q3=Эскиз: искрящееся око дракона","=q3=Эскиз: грозовое око дракона","=q3=Эскиз: изящное око дракона","=q3=Эскиз: матовое око дракона","=q4=Эскиз: титановая цепь стража земли","=q4=Эскиз: титановое кольцо стража земли","=q4=Эскиз: титановое кольцо сотрясения","=q4=Эскиз: титановое колье сотрясения","=q4=Эскиз: титановое ожерелье чародейского удара","=q4=Эскиз: титановое кольцо чародейского удара"})
process("LeatherworkingLeatherBloodTigerH",3,{"","=q3=Наплечники кровавого тигра","=q3=Кираса кровавого тигра"})
process("LeatherworkingLeatherBoreanEmbrace",9,{"","=q2=Арктический шлем","=q2=Арктические наплечные пластины","=q2=Арктический нагрудник","=q2=Арктические накулачники","=q2=Арктические перчатки","=q2=Арктический пояс","=q2=Арктические поножи","=q2=Арктические сапоги"})
process("LeatherworkingLeatherDevilsaurArmor",3,{"","=q3=Рукавицы девизавра","=q3=Поножи девизавра"})
process("LeatherworkingLeatherEvisceratorBattlegear",9,{"","=q3=Маска потрошителя","=q3=Наплечные пластины потрошителя","=q3=Нагрудный доспех потрошителя","=q3=Наручники потрошителя","=q3=Рукавицы потрошителя","=q3=Воинский пояс потрошителя","=q3=Набедренники потрошителя","=q3=Ботфорты потрошителя"})
process("LeatherworkingLeatherFelSkin",4,{"","=q3=Перчатки из сквернокожи","=q3=Поножи из сквернокожи","=q3=Сапоги из сквернокожи"})
process("LeatherworkingLeatherIceborneEmbrace",9,{"","=q2=Шлем жителя льдов","=q2=Наплечные пластины жителя льдов","=q2=Нагрудный доспех жителя льдов","=q2=Накулачники жителя льдов","=q2=Перчатки жителя льдов","=q2=Пояс жителя льдов","=q2=Поножи жителя льдов","=q2=Сапоги жителя льдов"})
process("LeatherworkingLeatherIronfeatherArmor",3,{"","=q3=Железноперые наплечники","=q3=Железноперая кираса"})
process("LeatherworkingLeatherOvercasterBattlegear",9,{"","=q3=Наголовник угрюмости","=q3=Наплеч угрюмости","=q3=Нагрудный доспех угрюмости","=q3=Наручи угрюмости","=q3=Повязки угрюмости","=q3=Пояс угрюмости","=q3=Поножи угрюмости","=q3=Сапоги угрюмости"})
process("LeatherworkingLeatherPrimalBatskin",4,{"","=q3=Жакет из кожи древней летучей мыши","=q3=Наручи из кожи древней летучей мыши","=q3=Перчатки из кожи древней летучей мыши"})
process("LeatherworkingLeatherPrimalIntent",4,{"","=q4=Жилет упреждающего удара","=q4=Наручи упреждающего удара","=q4=Пояс упреждающего удара"})
process("LeatherworkingLeatherSClefthoof",4,{"","=q3=Тяжелый панцирь из шкуры копытня","=q3=Тяжелые поножи из шкуры копытня","=q3=Тяжелые сапоги из шкуры копытня"})
process("LeatherworkingLeatherStormshroudArmor",5,{"","=q3=Наплечники Грозового Покрова","=q3=Доспех Грозового Покрова","=q3=Перчатки Грозового Покрова","=q3=Штаны Грозового Покрова"})
process("LeatherworkingLeatherThickDraenicA",5,{"","=q2=Утолщенная дренейская безрукавка","=q2=Утолщенные дренейские перчатки","=q2=Утолщенные дренейские штаны","=q2=Утолщенные дренейские сапоги"})
process("LeatherworkingLeatherVolcanicArmor",4,{"","=q2=Вулканические наплечники","=q2=Вулканическая кираса","=q2=Вулканические поножи"})
process("LeatherworkingLeatherWildDraenishA",5,{"","=q2=Жилет дренейского дикаря","=q2=Перчатки дренейского дикаря","=q2=Поножи дренейского дикаря","=q2=Сапоги дренейского дикаря"})
process("LeatherworkingLeatherWindhawkArmor",4,{"","=q4=Хауберк легкокрылого ястреба","=q4=Наручи легкокрылого ястреба","=q4=Пояс легкокрылого ястреба"})
process("LeatherworkingMailBlackDragonM",5,{"","=q3=Наплечники из чешуи черного дракона","=q3=Кираса из чешуи черного дракона","=q3=Поножи из чешуи черного дракона","=q4=Сапоги из чешуи черного дракона"})
process("LeatherworkingMailBlueDragonM",4,{"","=q3=Наплечники из чешуи синего дракона","=q3=Кираса из чешуи синего дракона","=q3=Поножи из чешуи синего дракона"})
process("LeatherworkingMailFelscaleArmor",5,{"","=q2=Скверночешуйчатая кираса","=q2=Скверночешуйчатые перчатки","=q2=Скверночешуйчатые штаны","=q2=Скверночешуйчатые сапоги"})
process("LeatherworkingMailFelstalkerArmor",4,{"","=q3=Кираса ловца Скверны","=q3=Наручи ловца Скверны","=q3=Пояс ловца Скверны"})
process("LeatherworkingMailFrostscaleBinding",9,{"","=q2=Шлем из обмерзшей чешуи","=q2=Наплечники из обмерзшей чешуи","=q2=Нагрудный доспех из обмерзшей чешуи","=q2=Наручи из обмерзшей чешуи","=q2=Перчатки из обмерзшей чешуи","=q2=Пояс из обмерзшей чешуи","=q2=Поножи из обмерзшей чешуи","=q2=Сапоги из обмерзшей чешуи"})
process("LeatherworkingMailGreenDragonM",4,{"","=q3=Кираса из чешуи зеленого дракона","=q3=Рукавицы из чешуи зеленого дракона","=q3=Поножи из чешуи зеленого дракона"})
process("LeatherworkingMailNerubianHive",9,{"","=q2=Нерубский шлем","=q2=Нерубские наплечники","=q2=Нерубский нагрудный доспех","=q2=Нерубские наручи","=q2=Нерубские перчатки","=q2=Нерубский пояс","=q2=Нерубские поножи","=q2=Нерубские сапоги"})
process("LeatherworkingMailNetherFury",4,{"","=q3=Пояс неистовства пустоты","=q3=Поножи неистовства пустоты","=q3=Сапоги неистовства пустоты"})
process("LeatherworkingMailNetherscaleArmor",4,{"","=q4=Черная кираса из чешуи дракона Пустоты","=q4=Черные наручи из чешуи дракона Пустоты","=q4=Черный пояс из чешуи дракона Пустоты"})
process("LeatherworkingMailNetherstrikeArmor",4,{"","=q4=Кираса удара Пустоты","=q4=Наручи удара Пустоты","=q4=Пояс удара Пустоты"})
process("LeatherworkingMailScaledDraenicA",5,{"","=q2=Чешуйчатая дренейская безрукавка","=q2=Чешуйчатые дренейские перчатки","=q2=Чешуйчатые дренейские штаны","=q2=Чешуйчатые дренейские сапоги"})
process("LeatherworkingMailStormhideBattlegear",9,{"","=q3=Корона штормового укрытия","=q3=Наплечники штормового укрытия","=q3=Хауберк штормового укрытия","=q3=Накулачники штормового укрытия","=q3=Захваты штормового укрытия","=q3=Пояс штормового укрытия","=q3=Набедренники штормового укрытия","=q3=Высокие ботинки штормового укрытия"})
process("LeatherworkingMailSwiftarrowBattlefear",9,{"","=q3=Шлем быстрой стрелы","=q3=Наплечные щитки быстрой стрелы","=q3=Хауберк быстрой стрелы","=q3=Наручи быстрой стрелы","=q3=Рукавицы быстрой стрелы","=q3=Пояс быстрой стрелы","=q3=Поножи быстрой стрелы","=q3=Сапоги быстрой стрелы"})
process("TailoringArcanoVest",4,{"","=q3=Одеяние из тайной ткани","=q3=Наручи из тайной ткани","=q3=Сапоги из тайной ткани"})
process("TailoringBattlecastG",3,{"","=q4=Капюшон боевого заклятья","=q4=Штаны боевого заклятья"})
process("TailoringBloodvineG",4,{"","=q3=Жилет кровавой лозы","=q3=Поножи кровавой лозы","=q3=Сапоги кровавой лозы"})
process("TailoringDuskweaver",9,{"","=q2=Клобук из сумеречной ткани","=q2=Наплечники из сумеречной ткани","=q2=Одеяние из сумеречной ткани","=q2=Напульсники из сумеречной ткани","=q2=Перчатки из сумеречной ткани","=q2=Пояс из сумеречной ткани","=q2=Поножи из сумеречной ткани","=q2=Сапоги из сумеречной ткани"})
process("TailoringFrostsavageBattlegear",9,{"","=q3=Клобук ледяной ярости","=q3=Наплечники ледяной ярости","=q3=Одеяние ледяной ярости","=q3=Наручи ледяной ярости","=q3=Перчатки ледяной ярости","=q3=Пояс ледяной ярости","=q3=Поножи ледяной ярости","=q3=Сапоги ледяной ярости"})
process("TailoringFrostwovenPower",9,{"","=q2=Ледотканый шлем","=q2=Ледотканые наплечники","=q2=Ледотканое одеяние","=q2=Ледотканые напульсники","=q2=Ледотканые перчатки","=q2=Ледотканый пояс","=q2=Ледотканые поножи","=q2=Ледотканые сапоги"})
process("TailoringImbuedNeather",5,{"","=q3=Мундир из прочной ткани Пустоты","=q3=Одеяние из прочной ткани Пустоты","=q3=Штаны из прочной ткани Пустоты","=q3=Сапоги из прочной ткани Пустоты"})
process("TailoringNeatherVest",8,{"","=q2=Мундир из ткани Пустоты","=q2=Одеяние из ткани Пустоты","=q2=Наручи из ткани Пустоты","=q2=Перчатки из ткани Пустоты","=q2=Пояс из ткани Пустоты","=q2=Штаны из ткани Пустоты","=q2=Сапоги из ткани Пустоты"})
process("TailoringPrimalMoon",4,{"","=q4=Наплечники из изначальной луноткани","=q4=Одеяние из изначальной луноткани","=q4=Пояс из изначальной луноткани"})
process("TailoringShadowEmbrace",4,{"","=q4=Застывшие тенетканые наплечники","=q4=Застывшее тенетканое одеяние","=q4=Застывшие тенетканые сапоги"})
process("TailoringSoulclothEm",4,{"","=q4=Наплечники из ткани Душ","=q4=Жилет из ткани Душ","=q4=Перчатки из ткани Душ"})
process("TailoringSpellfireWrath",4,{"","=q4=Одеяние из огненной чароткани","=q4=Перчатки из огненной чароткани","=q4=Пояс из огненной чароткани"})
process("TailoringSpellstrikeInfu",3,{"","=q4=Капюшон сокрушительной магии","=q4=Штаны сокрушительной магии"})
process("TailoringTheUnyielding",3,{"","=q3=Наручи непреклонности","=q4=Ремень Непреклонности"})
process("TailoringWhitemendWis",3,{"","=q4=Капюшон белого целителя","=q4=Штаны Белого целителя"})
end
@@ -0,0 +1,24 @@
## Interface: 30300
## Title: AtlasLoot_OriginalWoW
## Title-deDE: AtlasLoot |cFF0099FF[Alte Instanzen]|r
## Title-zhCN: AtlasLoot |cFF0099FF[经典旧世]|r
## Title-zhTW: |r|cFF0099FF[地圖]|rAL 艾澤拉斯世界
## Notes: AtlasLoot loot tables from pre-Burning Crusade
## Notes-deDE: AtlasLoot Loot-Tabellen für Instanzen vor Burning Crusade
## Notes-zhCN: AtlasLoot Enhanced 的《燃烧的远征》发售之前的副本掉落信息
## Notes-zhTW: AtlasLoot 艾澤拉斯副本掉落物品資料庫
## Author: Hegarol
## Version: v5.11.04
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2
## X-Website: http://www.atlasloot.net
## Dependencies: AtlasLoot
## LoadOnDemand: 1
## X-Curse-Packaged-Version: v5.11.04
## X-Curse-Project-Name: Atlasloot Enhanced
## X-Curse-Project-ID: atlasloot-enhanced
## X-Curse-Repository-ID: wow/atlasloot-enhanced/mainline
originalwow.lua
localization.lua
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,23 @@
## Interface: 30300
## Title: AtlasLoot_WorldEvents
## Title-deDE: AtlasLoot |cFF0099FF[Welt-Loot]|r
## Title-zhCN: AtlasLoot |cFF0099FF[户外首领]|r
## Title-zhTW: |r|cFF0099FF[地圖]|rAL 世界事件
## Notes: AtlasLoot loot tables from world events
## Notes-zhCN: AtlasLoot Enhanced 的户外首领掉落信息
## Notes-zhTW: AtlasLoot 世界事件物品掉落資料庫
## Author: Hegarol
## Version: v5.11.04
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2
## X-Website: http://www.atlasloot.net
## Dependencies: AtlasLoot
## LoadOnDemand: 1
## X-Curse-Packaged-Version: v5.11.04
## X-Curse-Project-Name: Atlasloot Enhanced
## X-Curse-Project-ID: atlasloot-enhanced
## X-Curse-Repository-ID: wow/atlasloot-enhanced/mainline
worldevents.lua
localization.lua
+441
View File
@@ -0,0 +1,441 @@
-- AtlasLoot loot tables localization file
-- NOTE: THIS FILE IS AUTO-GENERATED BY A TOOL, ANY MANUALLY CHANGE MIGHT BE OVERWRITTEN.
-- $Id: localization.lua 2725 2010-07-18 16:25:23Z arith $
local process = function(category,check,data) if not AtlasLoot_Data[category] or #AtlasLoot_Data[category] ~= check then return end for i = 1, #data do if data[i] and data[i] ~= "" then AtlasLoot_Data[category][i][4] = data[i] end end data = nil end
local locale = GetLocale()
if locale == "frFR" then
process("ArgentTournament1",13,{"","=q2=Insigne de mérite de Darnassus","=q2=Insigne de mérite de l'Exodar","=q2=Insigne de mérite de Gnomeregan","=q2=Insigne de mérite de Forgefer","=q2=Insigne de mérite de Hurlevent","=q1=Commission de champion","","=q2=Insigne de mérite d'Orgrimmar","=q2=Insigne de mérite de Fossoyeuse","=q2=Insigne de mérite des Pitons du Tonnerre","=q2=Insigne de mérite de Sen'jin","=q2=Insigne de mérite de Lune-d'argent"})
process("ArgentTournament2",28,{"","=q1=Bannière de Darnassus","=q1=Bannière de l'Exodar","=q1=Bannière de Gnomeregan","=q1=Bannière de Forgefer","=q1=Bannière de Hurlevent","=q1=Tabard de Darnassus","=q1=Tabard de l'Exodar","=q1=Tabard de Gnomeregan","=q1=Tabard de Forgefer","=q1=Tabard de Hurlevent","=q1=Tabard du Concordat argenté","=q1=Sceau de champion","","=q1=Bannière d'Orgrimmar","=q1=Bannière de Fossoyeuse","=q1=Bannière des Pitons du Tonnerre","=q1=Bannière de Sen'jin","=q1=Bannière de Lune-d'argent","=q1=Tabard d'Orgrimmar","=q1=Tabard de Fossoyeuse","=q1=Tabard des Pitons du Tonnerre","=q1=Tabard de Sen'jin","=q1=Tabard de Lune-d'argent","=q1=Tabard saccage-soleil","","=q1=Bannière de croisé d'argent","=q3=Tabard de croisé d'argent"})
process("ArgentTournament3",29,{"","=q3=Echarpe des coeurs brisés","=q3=Foulard de l'arbre immortel","=q3=Bottines de l'évasion agile","=q3=Cordelière de servitude contrainte","=q3=Bottines de l'esprit glorieux","=q3=Gantelets de la fierté blessée","=q3=Ceinturon de la défaite valeureuse","=q3=Etançons de la fureur insiatiable","=q3=Collier du coquillage susurrant","=q3=Sautoir de la focalisation spirale","=q3=Collier du sang vaillant","=q3=Pendentif des rêves azur","=q3=Fureur de jouteur","=q1=Sceau de champion","","=q3=Echarpe de la fierté proclamée","=q3=Sangle de la fureur équine","=q3=Bottines de l'écuyer fervent","=q3=Liens de sauvagerie inextinguible","=q3=Bottines des rêves murmurants","=q3=Gantelets du toucher guérisseur","=q3=Ceinture de la furie sauvage","=q3=Croquenots couverts de sang","=q3=Sautoir de la fureur farouche","=q3=Collier des crânes volés","=q3=Pendentif du croisé d'émeraude","=q3=Pendentif du tranchant-rasoir","=q3=Fureur de jouteur"})
process("ArgentTournament4",19,{"","=q4=Dague de la pureté lunaire","=q4=Dague de la lune montante","=q4=Coupe-os de Gnomeregan","=q4=Claymore du prophète","=q4=Protecteur de Teldrassil","=q4=Pilonneur de Forgefer","=q4=Bâton sylvestre d'argent","=q4=Tromblon de Khaz Modan","=q1=Sceau de champion","","=q4=Scalpel d'apothicaire royal","=q4=Destructeur spinal","=q4=Lame de la banshee funèbre","=q4=Estramaçon des Sin'dorei","=q4=Hache du protecteur de Sen'jin","=q4=Ecraseur corne-sinistre","=q4=Bâton de la fureur farouche","=q4=Carabine longue lame-crochue de Sen'jiin"})
process("ArgentTournament5",19,{"","=q3=Ecuyer d'Argent","=q3=Flagellin du val d'Ammen","=q3=Jeune pousse de Teldrassil","=q3=Ourson de Dun Morogh","=q3=Agneau d'Elwynn","=q3=Mécacuicui","=q3=Wyrmelin chatoyant","","=q3=Bride de poney d'argent","=q1=Sceau de champion","","=q3=Gruntinet d'Argent","=q3=Trottineur de Mulgore","=q3=Fétiche de Sen'jin","=q3=Chauve-souricette de Tirisfal","=q3=Scorpion de Durotar","=q3=Balai enchanté","=q3=Wyrmelin chatoyant"})
process("ArgentTournament6",23,{"","=q4=Sabre-de-brume darnassien rapide","=q4=Grand elekk de Brume-azur","=q4=Turbotrotteur","=q4=Bélier de Forgefer rapide","=q4=Palefroi d'Elwynn rapide","=q4=Grand elekk rouge","=q4=Palefroi gris rapide","=q4=Sabre-de-lune rapide","=q4=Bélier violet rapide","=q4=Turbotrotteur","=q1=Sceau de champion","","=q4=Raptor sombrelance rapide","=q4=Cheval de guerre des Réprouvés rapide","=q4=Loup d'Orgrimmar rapide","=q4=Faucon-pérégrin de Lune-d'argent rapide","=q4=Grand kodo de Mulgore","=q4=Grand kodo doré","=q4=Loup bordeaux rapide","=q4=Raptor violet rapide","=q4=Faucon-pérégrin rouge rapide","=q4=Cheval de guerre squelette blanc"})
process("ArgentTournament7",11,{"","=q4=Palefroi quel'dorai","=q4=Hippogriffe du Concordat argenté","","=q4=Destrier d'argent","=q4=Cheval de guerre d'argent","=q4=Hippogriffe d'Argent","=q1=Sceau de champion","","=q4=Faucon-pérégrin saccage-soleil","=q4=Faucon-dragon saccage-soleil"})
process("ArgentTournament8",23,{"=q7=Mantelet de Brume-funeste rapiécé","=q7=Epaulières en plumacier lissées","=q7=Spallières sombreruse tachées","=q7=Epaulières du champion Hérode","=q7=Espauliers des éléments mystiques","=q7=Spallières de vaillance polies","=q7=Oeil de la Bête perspicace","=q7=Main de justice rapide","=q1=Sceau de champion","=q7=Robe de Brume-funeste rapiécée","=q7=Cuirasse en plumacier lissé","=q7=Tunique sombreruse tachée","=q7=Cuirasse de dispensateur de mort de champion","=q7=Gilet des éléments mystique","=q7=Cuirasse de vaillance polie","=q7=Crève-cœur équilibré","=q7=Charge sacrée de Dal'Rend vénérable","=q7=Faucheuse en arcanite ensanglantée","=q7=Marteau en pierre d'aura de dévot","=q7=Masse de McGowan vénérable","=q7=Drague-lave reconverti","=q7=Charge du maître de dignité","=q7=Arc ancien en os charmé"})
process("ArmbreakerHuffaz",12,{"=q3=Bague de l'Ethereum","=q3=Cape sombre","=q3=Cape énigmatique","=q3=Cape embrasée","=q3=Cape algide","=q3=Cape vivante","=q2=Plaque d'identité de prisonnier de l'Ethereum","=q3=Bague sombre","=q3=Bague énigmatique","=q3=Bague embrasée","=q3=Bague algide","=q3=Bague vivante"})
process("BashirLanding",24,{"","=q1=Flacon instable de l'ancien","=q1=Flacon instable du médecin","=q1=Flacon instable du bandit","=q1=Flacon instable du soldat","","=q3=Améthyste instable","=q3=Citrine instable","=q3=Olivine instable","=q3=Saphir instable","=q3=Talasite instable","=q3=Topaze instable","","=q3=Diamant instable imprégné","=q3=Diamant instable tout-puissant","=q1=Module d'accélération","=q1=Petite géode de métamorphose en or","=q1=Petite géode de métamorphose en argent","=q1=Petite géode de métamorphose en cuivre","=q1=Petite géode de métamorphose en fer","=q1=Grande géode de métamorphose en or","=q1=Grande géode de métamorphose en argent","=q1=Grande géode de métamorphose en cuivre","=q1=Grande géode de métamorphose en fer"})
process("BashirStasisChambers",15,{"","=q3=Rempart démoniaque","=q2=Marque du roi-nexus","","=q3=Epaulières en ardoises d'acier","=q2=Marque du roi-nexus","","=q3=Epaulières de Voilebrume","=q2=Marque du roi-nexus","","=q3=Mantelet de canaliste du vent","=q2=Marque du roi-nexus","","=q3=Epaulières de traqueur du ciel","=q2=Marque du roi-nexus"})
process("Brewfest1",19,{"=q1=Binocles Incroyables d'Empathie Romantique Etendue de Belbi","=q1=Binocles Incroyables d'Empathie Romantique Etendue de Blix","=q1=Chapeau bleu de la fête des Brasseurs","=q1=Chapeau brun de la fête des Brasseurs","=q1=Chapeau vert de la fête des Brasseurs","=q1=Chapeau violet de la fête des Brasseurs","=q1=Robe de la fête des Brasseurs","=q1=Tenue de parade de la fête des Brasseurs","=q1=Bottes de la fête des Brasseurs","=q1=Mules de la fête des Brasseurs","=q3=Tonnelet de la fête des Brasseurs","=q3=Elekk rose au format pinte","=q3=Pinte de wolpertinger","=q1=Bulletin d'adhésion au club de la \"Bière du mois\"","=q2=Houblon préservé de la fête des Brasseurs","=q1=Houblon frais de la fête des Brasseurs","=q1=Houblon nain frais de la fête des Brasseurs","=q1=Houblon gobelin frais de la fête des Brasseurs","=q2=Jeton de la fête des Brasseurs"})
process("Brewfest2",15,{"=q3=Bock de la fête des Brasseurs vert","=q3=Bock de la fête des Brasseurs bleu","=q3=Bock de la fête des Brasseurs jaune","=q3=Pinte sombrefer","=q3=Bélier de la fête des Brasseurs","=q1=Bière de la fête des Brasseurs","=q1=Saucisse sèche","=q1=Boudin blanc","=q1=Bretzel au sel gemme","=q1=Saucisse savoureuse","=q1=Fromage épicé aux oignons","=q1=Saucisse fumée piquante","=q1=Saucisse succulente","=q1=Le Bretzel ultime de la fête des Brasseurs","=q1=L'Andouille d'or"})
process("Brewfest3",20,{"","=q1=Brasselorge blonde","=q1=Brasselorge légère","=q1=Brasselorge brune","","=q1=Tonnerre 45","=q1=Tonnebière blonde","=q1=Tonnebière brune","","=q1=Grog gordok","=q1=Gueuze des gueux","=q1=Hydromel ogre","","=q1=Bière Petit-pied","=q1=Bière Grand-pas","=q1=Route-de-la-bière","","=q1=Flott' de jungle","=q1=Brass'vaudou magique","=q1=Tête-réduite brune"})
process("BrewoftheMonthClub",12,{"=q1=Pilsner de l'hiver sauvage","=q1=Saveur suprême d'Izzard","=q1=Bière aromatisée au miel","=q1=Bock pétillant de Metok","=q1=Brune de printemps","=q1=Brune rochenoire","=q1=Bière de Strangleronce","=q1=Bière pâle draenique","=q1=Bière binaire","=q1=Bière de gland d'automne","=q1=Bière amère de Bartlett","=q1=Cuvée spéciale du seigneur du Givre"})
process("ChildrensWeek",12,{"","=q1=Collier de porcelet","=q1=Cage à rat","=q1=Boîte à tortue","=q1=Récompense du bougon","","=q3=Oeuf d'Egbert","=q3=Collier de dressage d'elekk","=q3=Willy l'Endormi","","=q3=Tétard oracle curieux","=q3=Louveteau varleu curieux"})
process("CorenDirebrew",12,{"=q4=Ancien oeuf mariné","=q4=Charme brillebière pétillant","=q4=Charme torvebière amer","=q4=Souvenir du bagarreur","=q4=Sous-bock de Coren en chrome","=q4=Montre de gousset en mithril","=q4=Tesson de Navrebière 2,0","=q4=Pinte de terreur","=q4=Grand kodo de la fête des Brasseurs","=q4=Bélier de la fête des Brasseurs rapide","=q3=Télécommande navrebière","=q1=Navre-bière de Navrebière"})
process("Darkmoon1",16,{"=q4=Amulette de la Sombrelune","=q4=Orbe de Sombrelune","=q2=Lot de Sombrelune (supérieur)","=q2=Lot de Sombrelune (inférieur)","=q2=Lot de Sombrelune (mineur)","=q1=Boîte de rangement de Sombrelune","=q1=Mouton de l'an dernier","=q1=Schéma : Commande de chariotte à vapeur","=q1=Mouton du mois dernier","=q1=Fleur de Sombrelune","=q1=Bon de la foire de Sombrelune","=q3=Anneau de Sombrelune","=q2=Collier de Sombrelune","=q1=Boîte à grenouille arboricole","=q1=Boîte à grenouille forestière","=q1=Mini-maison de jubelin"})
process("Darkmoon2",15,{"=q2=Suite de Voleurs","=q2=Robe de Sombrelune","=q2=Gilet de Sombrelune","=q2=Cotte d'anneaux de Sombrelune","=q3=Suite d'Epées","=q3=Epaulières en étoffe sombre","=q3=Protège-épaules enveloppant","=q3=Garde-épaule azur","=q3=Suite de Mages","=q3=Collier de Sombrelune","=q3=Pendentif de Sombrelune","=q3=Suite de Démons","=q3=Miséricorde de Sombrelune","=q3=Exécuteur de Sombrelune","=q3=Bâton de mage de Sombrelune"})
process("Darkmoon3",16,{"=q4=Suite de Fauves","=q4=Carte de Sombrelune : Dragon bleu","=q4=Suite d'Élémentaires","=q4=Carte de Sombrelune : Maelström","=q4=Suite de Portails","=q4=Carte de Sombrelune : Néant distordu","=q4=Suite de Seigneurs de guerre","=q4=Carte de Sombrelune : Héroïsme","=q4=Suite de Bénédictions","=q4=Carte de Sombrelune : Croisade","=q4=Suite de Furies","=q4=Carte de Sombrelune : Vengeance","=q4=Suite de Déraison","=q4=Carte de Sombrelune : Folie","=q4=Suite d'Orages","=q4=Carte de Sombrelune : Courroux"})
process("Darkmoon4",11,{"=q4=Suite du Chaos","=q4=Carte de Sombrelune : Berserker !","=q4=Suite de Prismes","=q4=Carte de Sombrelune : Illusion","=q4=Suite de Non-mort","=q4=Carte de Sombrelune : Mort","=q4=Suite de Nobles","=q4=Carte de Sombrelune : Grandeur","=q4=Carte de Sombrelune : Grandeur","=q4=Carte de Sombrelune : Grandeur","=q4=Carte de Sombrelune : Grandeur"})
process("DarkscreecherAkkarai",11,{"=q3=Gantelets de l'hérétique","=q2=Serres d'Akkarai","=q3=Manchettes de canaliste du vent","=q3=Cordon de canaliste du vent","=q3=Brassards de traqueur du ciel","=q3=Corde de traqueur du ciel","=q3=Brassards de Voilebrume","=q3=Ceinture de Voilebrume","=q3=Brassards en ardoises d'acier","=q3=Ceinturon en ardoises d'acier","=q3=Bague de Skettis"})
process("DayoftheDead",8,{"=q1=Marionnette macabre","=q1=Masque de crâne fantaisiste","=q1=Bouquet de chrysanthèmes orange","=q1=Crâne en sucre","=q1=Bougie spirituelle","=q1=Chrysanthème orange","=q1=Recette : Pain des morts","=q1=Pain des morts"})
process("Dukes",21,{"","=q3=Jambières abyssales en cuir","=q3=Marteau de guerre en acier durci","=q3=Chevalière abyssale","=q2=Echarpe abyssale en tissu","=q1=Cendres de Cendres","","=q3=Garde-jambes abyssaux en mailles","=q3=Claymore de Sombrepierre","=q3=Chevalière abyssale","=q2=Ceinture abyssale en cuir","","=q3=Pantalon abyssal en tissu","=q3=Etripeur d'âme","=q3=Chevalière abyssale","=q2=Ceinturon abyssal en plaques","","=q3=Cuissards abyssaux en plaques","=q3=Baguette de cristal étincelant","=q3=Chevalière abyssale","=q2=Etreinte abyssale en mailles"})
process("ElementalInvasion",18,{"","=q3=Sceptre du baron Charr","=q3=As d'Elémentaires","=q2=Braise d'élémentaire","","=q3=Collier gelé de Tempestria","=q3=As d'Elémentaires","=q3=Patron : Gants tempétueux","=q2=Anneau algide","","=q3=Peau pierreuse d'Avalanchion","=q3=As d'Elémentaires","=q2=Bague de pierre durcie","","=q3=Echarpe du Déchirevent","=q3=As d'Elémentaires","=q3=Patron : Gants tempétueux","=q2=Cape du zéphyr"})
process("FelTinkererZortan",12,{"=q3=Bottes de Voilebrume","=q3=Cape sombre","=q3=Cape énigmatique","=q3=Cape embrasée","=q3=Cape algide","=q3=Cape vivante","=q2=Plaque d'identité de prisonnier de l'Ethereum","=q3=Bague sombre","=q3=Bague énigmatique","=q3=Bague embrasée","=q3=Bague algide","=q3=Bague vivante"})
process("FishingExtravaganza",12,{"","=q3=Canne à pêche en arcanite","=q3=Hameçon du maître pêcheur","","=q2=Scalaire de Keefer","=q2=Tassergal à dos rayé","=q2=Talang dezien","=q2=Morwong rocailleux","","=q2=Chapeau du pêcheur chanceux","=q2=Bottes de pêche extrême de Nat Pagle","=q2=Ligne de pêche à toute épreuve en éternium"})
process("Forgosh",12,{"=q3=Bottes de traqueur du ciel","=q3=Cape sombre","=q3=Cape énigmatique","=q3=Cape embrasée","=q3=Cape algide","=q3=Cape vivante","=q2=Plaque d'identité de prisonnier de l'Ethereum","=q3=Bague sombre","=q3=Bague énigmatique","=q3=Bague embrasée","=q3=Bague algide","=q3=Bague vivante"})
process("GezzaraktheHuntress",11,{"=q3=Croc de Gezzarak","=q2=Griffes de Gezzarak","=q3=Manchettes de canaliste du vent","=q3=Cordon de canaliste du vent","=q3=Brassards de traqueur du ciel","=q3=Corde de traqueur du ciel","=q3=Brassards de Voilebrume","=q3=Ceinture de Voilebrume","=q3=Brassards en ardoises d'acier","=q3=Ceinturon en ardoises d'acier","=q3=Bague de Skettis"})
process("Gulbor",12,{"=q3=Torque de l'Ethereum","=q3=Cape sombre","=q3=Cape énigmatique","=q3=Cape embrasée","=q3=Cape algide","=q3=Cape vivante","=q2=Plaque d'identité de prisonnier de l'Ethereum","=q3=Bague sombre","=q3=Bague énigmatique","=q3=Bague embrasée","=q3=Bague algide","=q3=Bague vivante"})
process("GurubashiArena",6,{"=q3=Garde-poignets de l'arène","=q3=Brassards de l'arène","=q3=Poignets de l'arène","=q3=Protège-bras de l'arène","=q2=Maître de l'arène","=q3=Grand maître de l'arène"})
process("Halloween1",26,{"=q3=Citrouille de la Sanssaint","=q2=Sac citrouille","=q2=Balai magique bringuebalant","=q1=Sucette amère de Styleen","=q1=Caramel de Ruisselune","=q1=Barre aux noisettes de Bellara","=q1=Bonbon à la citrouille de la Sanssaint","","=q1=Gangrecaramel mou","=q1=B.I.G.B.A.N.G.","=q1=Bonbon à la cannelle pyrotechnique","=q1=Bonbon à la menthe verte apaisant","","=q3=Casque de la Sanssaint","=q3=Sprotchelin sinistre","=q1=Chauve-souris","=q1=Fantôme","=q1=Gnome lépreux","=q1=Ninja","=q1=Pirate","=q1=Aléatoire","=q1=Squelette","=q1=Feu follet","=q1=Bonbons","=q1=Sucette","=q1=Barre de chocolat"})
process("Halloween2",21,{"","=q1=Masque de draeneï fragile (M)","=q1=Masque de nain fragile","=q1=Masque de gnome fragile (H)","=q1=Masque d'humain fragile","=q1=Masque d'elfe de la nuit fragile (H)","=q1=Masque d'elfe de sang fragile (M)","=q1=Masque d'orc fragile","=q1=Masque de tauren fragile","=q1=Masque de troll fragile","=q1=Masque de mort-vivant fragile","=q1=Masque de draeneï fragile (F)","=q1=Masque de naine fragile","=q1=Masque de gnome fragile (F)","=q1=Masque d'humaine fragile","=q1=Masque d'elfe de la nuit fragile (F)","=q1=Masque d'elfe de sang fragile (F)","=q1=Masque d'orque fragile","=q1=Masque de taurène fragile","=q1=Masque de trollesse fragile","=q1=Masque de morte-vivante fragile"})
process("HarvestFestival",7,{"=q1=Don de la moisson","=q1=Pour la Lumière !","=q1=Le Cri de la Horde","=q1=Sanglier de la moisson","=q1=Poisson de la moisson","=q1=Fruit de la moisson","=q1=Nectar de la moisson"})
process("HeadlessHorseman",11,{"=q4=Le heaume horrible du Cavalier","=q4=Anneau de jubilation macabre","=q4=Le sceau du Cavalier","=q4=Anneau de la méchante sorcière","=q4=La lame torve du Cavalier","=q1=Citrouille de la Sanssaint lestée","=q1=Bonbon farceur","=q4=Les rênes du Cavalier","=q3=Balai magique","=q3=Casque de la Sanssaint","=q3=Sprotchelin sinistre"})
process("HighCouncil",20,{"","=q4=Bague de focalisation élémentaire","=q4=Sceptre abyssal","=q3=Brassards abyssaux en cuir","=q3=Espauliers abyssaux en mailles","","=q4=Collier du front de mer","=q4=Sceptre abyssal","=q3=Garde-bras abyssaux en mailles","=q3=Epaulettes abyssales en plaques","","=q4=Cape des Cisailles","=q4=Sceptre abyssal","=q3=Protège-poignets abyssaux en tissu","=q3=Epaulières abyssales en cuir","","=q4=Garde terrestre","=q4=Sceptre abyssal","=q3=Amict abyssal en tissu","=q3=Protège-bras abyssaux en plaques"})
process("Karrog",11,{"=q3=Eclat de Karrog","=q2=Echine de Karrog","=q3=Manchettes de canaliste du vent","=q3=Cordon de canaliste du vent","=q3=Brassards de traqueur du ciel","=q3=Corde de traqueur du ciel","=q3=Brassards de Voilebrume","=q3=Ceinture de Voilebrume","=q3=Brassards en ardoises d'acier","=q3=Ceinturon en ardoises d'acier","=q3=Bague de Skettis"})
process("LordAhune",12,{"=q4=Cape des vents algides","=q4=Cape cerclée de glace","=q4=Voile du froid hivernal","=q4=Le voile de combat du seigneur du Givre","=q4=La cape de guerre du seigneur du Givre","=q3=Formule : Enchantement d'arme (Givre mortel)","=q1=Eclats d'Ahune","=q3=Tabard des cieux estivaux","=q3=Tabard des flammes estivales","=q3=Sacoche de marchandises glacées","=q4=Faux de givre du seigneur Ahune","=q3=Glaçon"})
process("LunarFestival1",24,{"=q2=Lanterne d'Elune","=q1=Robe de fête verte","=q1=Robe de fête rose","=q1=Robe de fête violette","=q1=Habit de fête noir","=q1=Habit de fête bleu","=q1=Habit de fête turquoise","=q1=Raviolis de fête","=q1=Chandelle d'Elune","=q1=Pièce des ancêtres","","=q1=Petite fusée bleue","=q1=Petite fusée verte","=q1=Petite fusée rouge","=q1=Petite fusée blanche","=q1=Petite fusée jaune","=q1=Grande fusée bleue","=q1=Grande fusée verte","=q1=Grande fusée rouge","=q1=Grande fusée blanche","=q1=Grande fusée jaune","","=q1=Chapelet de fusées porte-bonheur","=q1=Pierre de lune des anciens"})
process("LunarFestival2",20,{"=q2=Schéma : Lanceur de feux d'artifice","","=q2=Schéma : Petite fusée bleue","=q2=Schéma : Petite fusée verte","=q2=Schéma : Petite fusée rouge","","=q2=Schéma : Grande fusée bleue","=q2=Schéma : Grande fusée verte","=q2=Schéma : Grande fusée rouge","=q2=Patron : Robe de fête","=q2=Schéma : Lanceur de chapelets","","=q2=Schéma : Chapelet de fusées bleues","=q2=Schéma : Chapelet de fusées vertes","=q2=Schéma : Chapelet de fusées rouges","","=q2=Schéma : Chapelet de grandes fusées bleues","=q2=Schéma : Chapelet de grandes fusées vertes","=q2=Schéma : Chapelet de grandes fusées rouges","=q2=Patron : Habit de fête"})
process("MalevustheMad",12,{"=q3=Bottes en ardoises d'acier","=q3=Cape sombre","=q3=Cape énigmatique","=q3=Cape embrasée","=q3=Cape algide","=q3=Cape vivante","=q2=Plaque d'identité de prisonnier de l'Ethereum","=q3=Bague sombre","=q3=Bague énigmatique","=q3=Bague embrasée","=q3=Bague algide","=q3=Bague vivante"})
process("MidsummerFestival",16,{"=q3=Brasero des flammes dansantes","=q3=Flamme captive","=q2=Brassards cendrés","=q1=Bière de fête flamboyante","=q1=Tarte au sureau","=q1=Petit pain grillé","=q1=Saucisse du solstice d'été","=q1=S'morc grillé","=q1=Poignée de pétales d'été","=q1=Sac d'ingrédients de s'morc","=q1=Torche de jonglage","=q1=Fleur ardente","=q1=Couronne de la fête du Feu","=q1=Mantelet de la fête du Feu","=q1=Habits d'été","=q1=Sandales de l'été"})
process("Noblegarden",12,{"=q3=Tome de Métamorphose : lapin","=q3=Patte de lapin du printemps","=q1=Diadème du printemps","=q1=Robe de soirée","=q1=Robe de printemps","=q1=Fleurs printanières","=q1=Chemise blanche de smoking","=q1=Pantalon de smoking noir","=q1=Branche en fleurs","=q1=Oeuf du Jardin des nobles","=q1=Panier à oeufs","=q1=Chocolat du Jardin des nobles"})
process("PilgrimsBounty_A",20,{"=q2=Livre de cuisine des Bienfaits","=q1=Recette : Farce au pain épicé","=q1=Recette : Tarte à la citrouille","=q1=Recette : Sauce aux canneberges","=q1=Recette : Patate douce confite","=q1=Recette : Dinde rôtie","=q1=Panier des Bienfaits","=q1=Patate douce de Teldrassil","=q1=Canneberges piquantes des Paluns","=q1=Citrouille mûre d'Elwynn","=q1=Herbes automnales","=q1=Miel","=q3=Cage à dinde","=q1=Chapeau de pèlerin","=q1=Costume de pèlerin","=q1=Tenue de pèlerine","=q1=Robe de pèlerine","=q1=Bottes de pèlerin","=q1=Appeau à dinde","=q1=Dindoflingue"})
process("PilgrimsBounty_H",20,{"=q2=Livre de cuisine des Bienfaits","=q1=Recette : Farce au pain épicé","=q1=Recette : Tarte à la citrouille","=q1=Recette : Sauce aux canneberges","=q1=Recette : Patate douce confite","=q1=Recette : Dinde rôtie","=q1=Panier des Bienfaits","=q1=Patate douce de Mulgore","=q1=Canneberges piquantes de la Furie-du-Sud","=q1=Citrouille mûre de Tirisfal","=q1=Herbes automnales","=q1=Miel","=q3=Cage à dinde","=q1=Chapeau de pèlerin","=q1=Costume de pèlerin","=q1=Tenue de pèlerine","=q1=Robe de pèlerine","=q1=Bottes de pèlerin","=q1=Appeau à dinde","=q1=Dindoflingue"})
process("PorfustheGemGorger",12,{"=q3=Bottes de canaliste du vent","=q3=Cape sombre","=q3=Cape énigmatique","=q3=Cape embrasée","=q3=Cape algide","=q3=Cape vivante","=q2=Plaque d'identité de prisonnier de l'Ethereum","=q3=Bague sombre","=q3=Bague énigmatique","=q3=Bague embrasée","=q3=Bague algide","=q3=Bague vivante"})
process("ScourgeInvasionEvent1",14,{"=q3=Bannière de l'Aube d'argent","=q3=Tome d'argent","=q3=Cor de guerre de l'Aube d'argent","=q2=Huile de sorcier bénie","=q2=Pierre à aiguiser consacrée","=q1=Tabard de l'Aube d'argent","=q1=Potion de soins de l'Aube d'argent","=q1=Potion de mana de l'Aube d'argent","=q2=Rune nécrotique","=q1=Souvenir hanté","","=q4=Insigne de justice","=q4=Eventreur en arcanite","=q3=Chauve-souricette vampirique"})
process("ScourgeInvasionEvent2",20,{"","=q4=Mantelet béni de purificateur de mort-vivant","=q4=Robe bénie de purificateur de mort-vivant","=q4=Gants bénis de purificateur de mort-vivant","=q4=Chausses bénies de purificateur de mort-vivant","","=q4=Protège-épaules bénis de tueur de mort-vivant","=q4=Tunique bénie de tueur de mort-vivant","=q4=Poignes bénies de tueur de mort-vivant","=q4=Jambières bénies de tueur de mort-vivant","","=q4=Espauliers bénis de tueur de mort-vivant","=q4=Haubert béni de tueur de mort-vivant","=q4=Garde-mains bénis de tueur de mort-vivant","=q4=Grèves bénies de tueur de mort-vivant","","=q4=Spallières bénies de tueur de mort-vivant","=q4=Cuirasse bénie de tueur de mort-vivant","=q4=Gantelets bénis de tueur de mort-vivant","=q4=Cuissards bénis de tueur de mort-vivant"})
process("ScourgeInvasionEvent3",22,{"","=q3=Baudrier de Balzaphon","=q3=Chaînes de la liche","=q3=Bâton de Balzaphon","","=q3=Fémur de Noirbois","=q3=Lame du seigneur Noirbois","=q3=Targe du seigneur Noirbois","","=q3=Cape de Revanchion","=q3=Brassards de guérison","=q3=L'Emprise de l'ombre","","=q3=L'Etreinte glaciale","=q3=Sautoir glacé de Dédain","=q3=Dague focale de Dédain","","=q3=Jambières en peau d'abomination","=q3=Hache sectionneuse","","=q3=Mantelet de dame Falther'ess","=q3=Doigt de dame Falther'ess"})
process("Shartuul",22,{"=q4=Chevalière du corrupteur","=q4=Brassards en tissu amoindris","=q4=Gantelets en mailles amoindris","=q3=Cape amoindrie","=q3=Anneau amoindri","=q3=Insigne amoindri","=q3=Dague amoindrie","=q3=Epée amoindrie","=q3=Hache à deux mains amoindrie","=q3=Masse amoindrie","=q3=Bâton amoindri","=q4=Anneau du surveillant","=q4=Brassards en tisse-cristal","=q4=Protège-mains en peau de cristal","=q3=Cape en tisse-cristal","=q3=Bague en cristal onirique","=q3=Insigne de ténacité","=q3=Coutelas imprégné de cristaux","=q3=Epée cristalforgée","=q3=Fendoir en apogide","=q3=Masse en cristal apogide","=q3=Bâton en quartz enflammé"})
process("SkettisHazziksPackage",1,{"=q1=Paquet d'Hazzik"})
process("SkettisTalonpriestIshaal",1,{"=q1=Almanach d'Ishaal"})
process("Templars",20,{"","=q3=Stylet à pointe de cristal","=q2=Protège-mains abyssaux en tissu","=q2=Solerets abyssaux en mailles","=q2=Blason abyssal","","=q3=Bâton de guerre d'améthyste","=q2=Mules abyssales en tissu","=q2=Gantelets abyssaux en plaques","=q2=Blason abyssal","","=q3=Couteau de brèche tranche-pierre","=q2=Bottes abyssales en cuir","=q2=Garde-mains abyssaux en mailles","=q2=Blason abyssal","","=q3=Arc de frappe pénétrante","=q2=Gants abyssaux en cuir","=q2=Grèves abyssales en plaques","=q2=Blason abyssal"})
process("Terokk",11,{"=q4=Puissance de Terokk","=q4=Sagesse de Terokk","=q3=Jambières de canaliste du vent","=q3=Jambières de traqueur du ciel","=q3=Pantalon de Voilebrume","=q3=Jambières en ardoises d'acier","=q3=Don des prêtres de la serre","=q3=Broche du roi immortel","=q3=Figurine perdue dans le temps","=q3=Martelet de Terokk","=q3=Martelet de Terokk"})
process("VakkiztheWindrager",11,{"=q3=Anneaux de Ragevent","=q2=Ecaille de Vakkiz","=q3=Manchettes de canaliste du vent","=q3=Cordon de canaliste du vent","=q3=Brassards de traqueur du ciel","=q3=Corde de traqueur du ciel","=q3=Brassards de Voilebrume","=q3=Ceinture de Voilebrume","=q3=Brassards en ardoises d'acier","=q3=Ceinturon en ardoises d'acier","=q3=Bague de Skettis"})
process("Valentineday",20,{"=q3=Panier à pique-nique romantique","=q1=Gage d'amour","=q1=Rose ravissante","=q1=Poignée de pétales de rose","=q1=Flèche en argent","=q1=Flèche en vrai-argent","=q1=Sachet de bonbons","=q1=Boîte de chocolats","=q1=Boîte de robe ravissante","=q1=Boîte d'habit de soirée","=q1=Fusée d'amour","=q1=Tourtereau","=q1=Eau de Cologne « Bravade »","=q1=Eau de Cologne « VIGUEUR »","=q1=Eau de Cologne « Sorcellerie »","=q1=Parfum « VICTOIRE »","=q1=Parfum « Eternel »","=q1=Parfum « Enchanteresse »","=q1=Gage d'amour","=q1=Bracelet de breloques ravissantes"})
process("Valentineday2",23,{"","=q1=Superbe robe noire","=q1=Superbe robe rouge","=q1=Superbe robe bleue","=q1=Superbe robe violette","","=q1=Habit de soirée rouge","=q1=Habit de soirée bleu","=q1=Habit de soirée violet","","=q1=Désir noir","=q1=Fondant aux myrtilles","=q1=Délice au lait","=q1=Douce surprise","","=q1=Cœur en sucre","=q1=Cœur en sucre","=q1=Cœur en sucre","=q1=Cœur en sucre","=q1=Cœur en sucre","=q1=Cœur en sucre","=q1=Cœur en sucre","=q1=Cœur en sucre"})
process("Valentineday3",10,{"=q4=Clin d'oeil d'amour","=q4=Charme brise-cœur","=q4=Eclat du bonheur virevoltant","=q4=Broche au doux parfum","=q4=Sautoir du coeur pur","=q3=Rose à jamais ravissante","=q3=Masque de vil fumigateur","=q3=Gaspi toxique","=q3=Le Bourreau des cœurs","=q4=Grande fusée d'amour"})
process("Winterviel1",29,{"=q2=Chapeau d'hiver vert","=q2=Chapeau d'hiver rouge","=q1=Déguisement pour le Voile d'hiver","=q1=Boule de neige","=q1=Poignée de flocons de neige","=q1=Houx frais","=q1=Gui","","=q2=Patron : Bottes d'hiver","=q2=Patron : Vêtements d'hiver rouges","=q2=Patron : Vêtements d'hiver verts","=q1=Recette : Cidre chaud","=q1=Recette : Lait de poule","=q1=Recette : Biscuit en pain d'épice","=q1=Sucre d'orge","=q1=Roue de fromage de fête","=q1=Tourte à la viande maison de Graccu","=q1=Brochette de Boeuf épicé","=q1=Jambon au miel de fête","=q1=Bière mélangée","=q1=Thé du jardin vert","=q1=Cidre pétillant","=q1=Eau-de-vie spéciale","=q1=Mousseux de Gentepression","=q1=Bière du Grandpère Hiver","=q1=Epices spéciales","=q1=Papier d'emballage à ruban bleu","=q1=Papier d'emballage à ruban vert","=q1=Papier d'emballage à ruban violet"})
process("Winterviel2",25,{"","=q1=Boîte à assistant vert","=q1=Clochette tintinnabulante","=q1=Boîte à assistante rouge","=q1=Boîte de bonhomme de neige","","=q1=Baguette de liesse festive","","=q3=Rob-fusée mécanique","","=q1=Rôti du Voile d'hiver","=q1=Lait de poule du Voile d'hiver","","=q2=Grinche mécanique","=q2=Houx préservé","=q2=Plans : Tranchante de l'hiver","=q2=Formule : Enchantement d'arme (Puissance de l'hiver)","=q2=Schéma : Maître-neige 9000","=q2=Patron : Gants du Grandpère","=q1=Recette : Elixir de puissance du Givre","=q1=Patron : Chemise verte de fête","","=q1=Biscuit du Voile d'hiver","","=q1=Gâteau aux fruits secs de Graccu"})
process("WrathbringerLaztarash",12,{"=q3=Sphère de la manaforge","=q3=Cape sombre","=q3=Cape énigmatique","=q3=Cape embrasée","=q3=Cape algide","=q3=Cape vivante","=q2=Plaque d'identité de prisonnier de l'Ethereum","=q3=Bague sombre","=q3=Bague énigmatique","=q3=Bague embrasée","=q3=Bague algide","=q3=Bague vivante"})
elseif locale == "deDE" then
process("ArgentTournament1",13,{"","=q2=Belobigungsabzeichen von Darnassus","=q2=Belobigungsabzeichen der Exodar","=q2=Belobigungsabzeichen von Gnomeregan","=q2=Belobigungsabzeichen von Eisenschmiede","=q2=Belobigungsabzeichen von Sturmwind","=q1=Verfügung des Champions","","=q2=Belobigungsabzeichen von Orgrimmar","=q2=Belobigungsabzeichen von Unterstadt","=q2=Belobigungsabzeichen von Donnerfels","=q2=Belobigungsabzeichen von Sen'jin","=q2=Belobigungsabzeichen von Silbermond"})
process("ArgentTournament2",28,{"","=q1=Banner von Darnassus","=q1=Banner der Exodar","=q1=Banner von Gnomeregan","=q1=Banner von Eisenschmiede","=q1=Banner von Sturmwind","=q1=Wappenrock von Darnassus","=q1=Wappenrock der Exodar","=q1=Wappenrock von Gnomeregan","=q1=Wappenrock von Eisenschmiede","=q1=Wappenrock von Sturmwind","=q1=Wappenrock des Silberbunds","=q1=Siegel des Champions","","=q1=Banner von Orgrimmar","=q1=Banner von Unterstadt","=q1=Banner von Donnerfels","=q1=Banner von Sen'jin","=q1=Banner von Silbermond","=q1=Wappenrock von Orgrimmar","=q1=Wappenrock von Unterstadt","=q1=Wappenrock von Donnerfels","=q1=Wappenrock von Sen'jin","=q1=Wappenrock von Silbermond","=q1=Wappenrock der Sonnenhäscher","","=q1=Banner des Argentumkreuzzugs","=q3=Wappenrock des Argentumkreuzfahrers"})
process("ArgentTournament3",29,{"","=q3=Schärpe der brechenden Herzen","=q3=Umwicklung des immerwährenden Baumes","=q3=Treter des geschickten Ausweichens","=q3=Sattelgurt des verbundenen Dienens","=q3=Treter des glorreichen Geistes","=q3=Stulpen des gebrochenen Stolzes","=q3=Gurt der tapferen Niederlage","=q3=Stützen des unstillbaren Furors","=q3=Flüsternde Muschelhalskette","=q3=Halsreif des Spiralfokus","=q3=Halskette des tapferen Blutes","=q3=Anhänger der Azurträume","=q3=Tjosterfuror","=q1=Siegel des Champions","","=q3=Schärpe des übertrumpften Stolzes","=q3=Taillenschutz des Pferdefurors","=q3=Treter des aufrichtigen Knappen","=q3=Verbund der ungestillten Wildheit","=q3=Treter der flüsternden Träume","=q3=Stulpen der heilenden Berührung","=q3=Sattelgurt des ungezähmten Furors","=q3=Blutverkrustete Stampfer","=q3=Halsreif des wilden Furors","=q3=Halskette der gestohlenen Schädel","=q3=Anhänger des Smaragdkreuzfahrers","=q3=Rasierklingenanhänger","=q3=Tjosterfuror"})
process("ArgentTournament4",19,{"","=q4=Dolch der lunaren Reinheit","=q4=Dolch des aufgehenden Mondes","=q4=Knochenhacker von Gnomeregan","=q4=Claymore des Propheten","=q4=Teldrassilbeschützer","=q4=Zerkracher von Eisenschmiede","=q4=Silbriger Sylvanstab","=q4=Donnerbüchse von Khaz Modan","=q1=Siegel des Champions","","=q4=Skalpell des Königlichen Apothekariums","=q4=Rückgratzerstörer","=q4=Klinge der wehklagenden Banshee","=q4=Großschwert der Sin'dorei","=q4=Axt des Beschützers von Sen'jin","=q4=Grimmhornzermalmer","=q4=Stab der Wilden Furien","=q4=Hornklingenlangflinte aus Sen'jin"})
process("ArgentTournament5",19,{"","=q3=Argentumknappe","=q3=Peitschling aus dem Am'mental","=q3=Schössling von Teldrassis","=q3=Welpe aus Dun Morogh","=q3=Lamm aus Elwynn","=q3=Robopieps","=q3=Schimmernder Wyrmling","","=q3=Zügel des Argentumponys","=q1=Siegel des Champions","","=q3=Argentumgrunzling","=q3=Küken aus Mulgore","=q3=Fetisch aus Sen'jin","=q3=Fledermäuschen aus Tirisfal","=q3=Skorpion aus Durotar","=q3=Verzauberter Besen","=q3=Schimmernder Wyrmling"})
process("ArgentTournament6",23,{"","=q4=Schneller darnassischer Nebelsäbler","=q4=Großer Azurmythoselekk","=q4=Turboschreiter","=q4=Schneller Widder aus Eisenschmiede","=q4=Schnelles Elwynnstreitross","=q4=Großer roter Elekk","=q4=Schnelles graues Ross","=q4=Schneller Mondsäbler","=q4=Schneller violetter Widder","=q4=Turboschreiter","=q1=Siegel des Champions","","=q4=Schneller Raptor der Dunkelspeere","=q4=Schnelles Schlachtross der Verlassenen","=q4=Schneller Wolf aus Orgrimmar","=q4=Schneller Falkenschreiter von Silbermond","=q4=Großer Mulgorekodo","=q4=Großer goldener Kodo","=q4=Schneller burgundfarbener Wolf","=q4=Schneller lila Raptor","=q4=Schneller roter Falkenschreiter","=q4=Weißes Skelettschlachtross"})
process("ArgentTournament7",11,{"","=q4=Ross der Quel'dorei","=q4=Hippogryph des Silberbunds","","=q4=Argentumstürmer","=q4=Argentumschlachtross","=q4=Argentumhippogryph","=q1=Siegel des Champions","","=q4=Falkenschreiter der Sonnenhäscher","=q4=Drachenfalke der Sonnenhäscher"})
process("ArgentTournament8",23,{"=q7=Zerlumpter Mantel der Furcht","=q7=Geputzte Eisenfederschultern","=q7=Befleckte Schiftung der Schattenkunst","=q7=Champion Herods Schulter","=q7=Mystische Schulterstücke der Elemente","=q7=Polierte Schiftung der Ehre","=q7=Scharfes Auge der Bestie","=q7=Schnelle Hand der Gerechtigkeit","=q1=Siegel des Champions","=q7=Zerlumpte Robe der Furcht","=q7=Geputzte Eisenfederbrustplatte","=q7=Befleckte Tunika der Schattenkunst","=q7=Todesbotenbrustplatte des Champions","=q7=Mystische Weste der Elemente","=q7=Polierte Brustplatte der Ehre","=q7=Ausbalancierter Herzsucher","=q7=Des ehrwürdigen Dal'Rends hochheilige Attacke","=q7=Blutbefleckter Arkanitschnitter","=q7=Frommer Aurasteinhammer","=q7=Ehrwürdige Masse von McGowan","=q7=Wiederverwendeter Lavagreifer","=q7=Attacke des würdevollen Direktors","=q7=Verzauberter antiker Knochenbogen"})
process("ArmbreakerHuffaz",12,{"=q3=Astraleumsband","=q3=Dunkler Umhang","=q3=Rätselhafter Umhang","=q3=Feuriger Umhang","=q3=Frostiger Umhang","=q3=Lebendiger Umhang","=q2=Identifikationsmarke eines Gefangenen des Astraleums","=q3=Dunkles Band","=q3=Rätselhaftes Band","=q3=Feuriges Band","=q3=Frostiges Band","=q3=Lebendiges Band"})
process("BashirLanding",24,{"","=q1=Instabiles Fläschchen des Ältesten","=q1=Instabiles Fläschchen des Heilers","=q1=Instabiles Fläschchen des Banditen","=q1=Instabiles Fläschchen des Soldaten","","=q3=Instabiler Amethyst","=q3=Instabiler Citrin","=q3=Instabiler Peridot","=q3=Instabiler Saphir","=q3=Instabiler Talasit","=q3=Instabiler Topas","","=q3=Magieerfüllter instabiler Diamant","=q3=Mächtiger instabiler Diamant","=q1=Beschleunigermodul","=q1=Kleine goldene Verwandlungsgeode","=q1=Kleine silberne Verwandlungsgeode","=q1=Kleine kupferne Verwandlungsgeode","=q1=Kleine eiserne Verwandlungsgeode","=q1=Große goldene Verwandlungsgeode","=q1=Große silberne Verwandlungsgeode","=q1=Große kupferne Verwandlungsgeode","=q1=Große eiserne Verwandlungsgeode"})
process("BashirStasisChambers",15,{"","=q3=Dämonisches Bollwerk","=q2=Abzeichen des Nexuskönigs","","=q3=Schieferstahlschultern","=q2=Abzeichen des Nexuskönigs","","=q3=Nebelschleierschultern","=q2=Abzeichen des Nexuskönigs","","=q3=Windkanalisierungsmantelung","=q2=Abzeichen des Nexuskönigs","","=q3=Himmelspirscherschultern","=q2=Abzeichen des Nexuskönigs"})
process("Brewfest1",19,{"=q1=Belbis sichtverbessernde Romantikbrille","=q1=Blix' sichtverbessernde Romantikbrille","=q1=Blauer Braufesthut","=q1=Brauner Braufesthut","=q1=Grüner Braufesthut","=q1=Lila Braufesthut","=q1=Braufestdirndl","=q1=Braufesttracht","=q1=Braufeststiefel","=q1=Braufestschuhe","=q3=Braufestfässchen","=q3=Rosa Elekkbaby","=q3=Wolpertingerhumpen","=q1=Mitgliedschaftsantrag für den \"Bier des Monats e.V.\"","=q2=Konservierter Braufesthopfen","=q1=Frischer Braufesthopfen","=q1=Frischer Braufesthopfen aus Zwergenanbau","=q1=Frischer Braufesthopfen aus Goblinanbau","=q2=Braufestmarke"})
process("Brewfest2",15,{"=q3=Grüner Braufestkrug","=q3=Blauer Braufestkrug","=q3=Gelber Braufestkrug","=q3=Krug der Dunkeleisenzwerge","=q3=Braufestwidder","=q1=Braufestbräu","=q1=Brachländer Dörrwurst","=q1=Weißwurst","=q1=Brezel mit Steinsalz","=q1=Pikante Wurst","=q1=Obazda","=q1=Würzige geräucherte Wurst","=q1=Saftige Wurst","=q1=Die einzig wahre Braufestbrezel","=q1=Das güldene Zipferl"})
process("Brewfest3",20,{"","=q1=Kristallklares Gerstenbräu","=q1=Helles Gerstenbräu","=q1=Dunkles Gerstenbräu","","=q1=Donner 45","=q1=Donnerbräu Lager","=q1=Donnerbräu Starkbier","","=q1=Gordokgrog","=q1=Schlammermilch","=q1=Ogermet","","=q1=Kleiner Schwips","=q1=Katertropfen","=q1=Torkelbräu","","=q1=Dschungeltropfen","=q1=Zombie Spezial","=q1=Schrumpfkopf Stark"})
process("BrewoftheMonthClub",12,{"=q1=Wildwinterpils","=q1=Izzards Wahnsinnsaroma","=q1=Aromatisches Honigbräu","=q1=Metoks Blubberbock","=q1=Frühlingsstarkbier","=q1=Schwarzfelslagerbier","=q1=Schlingendornbräu","=q1=Draenisches Silberbräu","=q1=Binärbräu","=q1=Herbstliches Eckerndunkel","=q1=Bartletts Bitterbräu","=q1=Hausmarke des Frostfürsten"})
process("ChildrensWeek",12,{"","=q1=Schweinehalsband","=q1=Rattenkäfig","=q1=Schildkrötenkiste","=q1=Griesgrams Bestechungsgeld","","=q3=Ei des Kolumbus","=q3=Elekkhalsband","=q3=Schläfriger Willy","","=q3=Neugieriges Gorlocjungtier","=q3=Neugieriger Wolvarwelpe"})
process("CorenDirebrew",12,{"=q4=Uraltes Solei","=q4=Perlender Hellbräuglücksbringer","=q4=Bitterer Plörrbräuglücksbringer","=q4=Raufboldsouvenir","=q4=Corens verchromter Untersetzer","=q4=Mithriltaschenuhr","=q4=Düsterbräus Pulle 2.0","=q4=Horrorhumpen","=q4=Großer Braufestkodo","=q4=Schneller Braufestwidder","=q3=Düsterbräus Fernbedienung","=q1=Düsterbräus Düsterbräu"})
process("Darkmoon1",16,{"=q4=Amulett des Dunkelmonds","=q4=Kugel des Dunkelmonds","=q2=Großer Dunkelmond-Preis","=q2=Geringer Dunkelmond-Preis","=q2=Kleiner Dunkelmond-Preis","=q1=Dunkelmond-Lagerbehälter","=q1=Hammel des letzten Jahres","=q1=Bauplan: Dampfpanzersteuerung","=q1=Hammel des letzten Monats","=q1=Dunkelmond-Blume","=q1=Gewinnlos des Dunkelmond-Jahrmarkts","=q3=Dunkelmond-Ring","=q2=Dunkelmond-Halskette","=q1=Baumfroschkasten","=q1=Waldfroschkasten","=q1=Das kleine Zuhause eines Jublings"})
process("Darkmoon2",15,{"=q2=Schurkenkartenset","=q2=Dunkelmondroben","=q2=Dunkelmondweste","=q2=Dunkelmondkettenhemd","=q3=Schwertkartenset","=q3=Dunkle Stoffschultern","=q3=Gedeckte Lederschulterpolster","=q3=Azurfarbener Schulterschutz","=q3=Magierkartenset","=q3=Halskette des Dunkelmondmarkts","=q3=Anhänger des Dunkelmondmarkts","=q3=Dämonenkartenset","=q3=Messer des Dunkelmondmarkts","=q3=Richtklinge des Dunkelmondmarkts","=q3=Magierstab des Dunkelmondmarkts"})
process("Darkmoon3",16,{"=q4=Bestienkartenset","=q4=Dunkelmond-Karte: Blauer Drache","=q4=Elementarkartenset","=q4=Dunkelmond-Karte: Mahlstrom","=q4=Portalkartenset","=q4=Dunkelmond-Karte: Wirbelnder Nether","=q4=Kriegsfürstenkartenset","=q4=Dunkelmond-Karte: Heldentum","=q4=Segenskartenset","=q4=Dunkelmond-Karte: Kreuzzug","=q4=Furienkartenset","=q4=Dunkelmond-Karte: Vergeltung","=q4=Deliriumkartenset","=q4=Dunkelmond-Karte: Wahnsinn","=q4=Sturmkartenset","=q4=Dunkelmond-Karte: Zorn"})
process("Darkmoon4",11,{"=q4=Chaoskartenset","=q4=Dunkelmond-Karte: Beserker!","=q4=Prismenkartenset","=q4=Dunkelmond-Karte: Illusion","=q4=Untodeskartenset","=q4=Dunkelmond-Karte: Tod","=q4=Adligenkartenset","=q4=Dunkelmond-Karte: Grandeur","=q4=Dunkelmond-Karte: Grandeur","=q4=Dunkelmond-Karte: Grandeur","=q4=Dunkelmond-Karte: Grandeur"})
process("DarkscreecherAkkarai",11,{"=q3=Ketzerstulpen","=q2=Akkarais Krallen","=q3=Windkanalisierungsbindungen","=q3=Windkanalisierungsleibriemen","=q3=Himmelspirscherarmschienen","=q3=Himmelspirscherkordel","=q3=Nebelschleierarmschienen","=q3=Nebelschleiergürtel","=q3=Schieferstahlarmschienen","=q3=Schieferstahlgurt","=q3=Skettisband"})
process("DayoftheDead",8,{"=q1=Makabre Marionette","=q1=Skurrile Totenkopfmaske","=q1=Orangefarbenes Ringelblumenbouquet","=q1=Zuckerschädel","=q1=Seelenkerze","=q1=Orangefarbene Ringelblumen","=q1=Rezept: Totenspeise","=q1=Totenspeise"})
process("Dukes",21,{"","=q3=Abyssische Ledergamaschen","=q3=Gehärteter Stahlkriegshammer","=q3=Abyssisches Siegel","=q2=Abyssische Stoffschärpe","=q1=Asche des Fürsten","","=q3=Abyssische Panzerbeinschützer","=q3=Dunkelsteinclaymore","=q3=Abyssisches Siegel","=q2=Abyssischer Ledergürtel","","=q3=Abyssische Stoffhose","=q3=Seelensammler","=q3=Abyssisches Siegel","=q2=Abyssischer Plattengurt","","=q3=Abyssische Plattenbeinschienen","=q3=Sprühender Kristallzauberstab","=q3=Abyssisches Siegel","=q2=Abyssische Panzerklammer"})
process("ElementalInvasion",18,{"","=q3=Baron Glutarrs Szepter","=q3=Elementar Ass","=q2=Elementare Glut","","=q3=Tempestrias gefrorene Halskette","=q3=Elementar Ass","=q3=Muster: Sturmschleierhandschuhe","=q2=Kühler Ring","","=q3=Lavinius' steiniger Balg","=q3=Elementar Ass","=q2=Verhärtetes Steinband","","=q3=Schärpe des Windhäschers","=q3=Elementar Ass","=q3=Muster: Sturmschleierhandschuhe","=q2=Zephyrumhang"})
process("FelTinkererZortan",12,{"=q3=Nebelschleierstiefel","=q3=Dunkler Umhang","=q3=Rätselhafter Umhang","=q3=Feuriger Umhang","=q3=Frostiger Umhang","=q3=Lebendiger Umhang","=q2=Identifikationsmarke eines Gefangenen des Astraleums","=q3=Dunkles Band","=q3=Rätselhaftes Band","=q3=Feuriges Band","=q3=Frostiges Band","=q3=Lebendiges Band"})
process("FishingExtravaganza",12,{"","=q3=Arkanitangelrute","=q3=Angelhaken des Anglermeisters","","=q2=Kiefers Engelfisch","=q2=Braunells blaugestreifter Flitzerfisch","=q2=Dezianischer Königinnenfisch","=q2=Felsnischenstarkfisch","","=q2=Glücksangelhut","=q2=Nat Pagles Extremanglerstiefel","=q2=Extremgetestete Eterniumangelschnur"})
process("Forgosh",12,{"=q3=Himmelspirscherstiefel","=q3=Dunkler Umhang","=q3=Rätselhafter Umhang","=q3=Feuriger Umhang","=q3=Frostiger Umhang","=q3=Lebendiger Umhang","=q2=Identifikationsmarke eines Gefangenen des Astraleums","=q3=Dunkles Band","=q3=Rätselhaftes Band","=q3=Feuriges Band","=q3=Frostiges Band","=q3=Lebendiges Band"})
process("GezzaraktheHuntress",11,{"=q3=Gezzaraks Fangzahn","=q2=Gezzaraks Klauen","=q3=Windkanalisierungsbindungen","=q3=Windkanalisierungsleibriemen","=q3=Himmelspirscherarmschienen","=q3=Himmelspirscherkordel","=q3=Nebelschleierarmschienen","=q3=Nebelschleiergürtel","=q3=Schieferstahlarmschienen","=q3=Schieferstahlgurt","=q3=Skettisband"})
process("Gulbor",12,{"=q3=Astraleumshalsreif","=q3=Dunkler Umhang","=q3=Rätselhafter Umhang","=q3=Feuriger Umhang","=q3=Frostiger Umhang","=q3=Lebendiger Umhang","=q2=Identifikationsmarke eines Gefangenen des Astraleums","=q3=Dunkles Band","=q3=Rätselhaftes Band","=q3=Feuriges Band","=q3=Frostiges Band","=q3=Lebendiges Band"})
process("GurubashiArena",6,{"=q3=Arenahandgelenksschutz","=q3=Arenaarmschienen","=q3=Arenaarmbänder","=q3=Arenaunterarmschienen","=q2=Meister der Arena","=q3=Großmeister der Arena"})
process("Halloween1",26,{"=q3=Kürbislaterne","=q2=Kürbistasche","=q2=Maroder Zauberbesen","=q1=Styleens Sauerlolly","=q1=Tumulttoffee aus Mondbruch","=q1=Bellaras Nussriegel","=q1=Kürbisdrops der Schlotternächte","","=q1=Weiches Teufelstoffee","=q1=G.N.E.R.D.S.","=q1=Pyrozimtbällchen","=q1=Leichte grüne Minze","","=q3=Gruselhelm","=q3=Gruselkürbis","=q1=Stab der Verwandlung - Fledermaus","=q1=Stab der Verwandlung - Geist","=q1=Stab der Verwandlung - Lepragnom","=q1=Stab der Verwandlung - Ninja","=q1=Stab der Verwandlung - Pirat","=q1=Stab der Verwandlung - zufällig","=q1=Stab der Verwandlung - Skelett","=q1=Stab der Verwandlung - Irrwisch","=q1=Zuckerpops","=q1=Lutscher","=q1=Schokoriegel"})
process("Halloween2",21,{"","=q1=Leichte männliche Draeneimaske","=q1=Leichte männliche Zwergenmaske","=q1=Leichte männliche Gnomenmaske","=q1=Leichte männliche Menschenmaske","=q1=Leichte männliche Nachtelfenmaske","=q1=Leichte männliche Blutelfenmaske","=q1=Leichte männliche Orcmaske","=q1=Leichte männliche Taurenmaske","=q1=Leichte männliche Trollmaske","=q1=Leichte männliche Untotenmaske","=q1=Leichte weibliche Draeneimaske","=q1=Leichte weibliche Zwergenmaske","=q1=Leichte weibliche Gnomenmaske","=q1=Leichte weibliche Menschenmaske","=q1=Leichte weibliche Nachtelfenmaske","=q1=Leichte weibliche Blutelfenmaske","=q1=Leichte weibliche Orcmaske","=q1=Leichte weibliche Taurenmaske","=q1=Leichte weibliche Trollmaske","=q1=Leichte weibliche Untotenmaske"})
process("HarvestFestival",7,{"=q1=Erntegabe","=q1=Für das Licht!","=q1=Höllschrei, Held der Horde","=q1=Erntedankeber","=q1=Erntedankfisch","=q1=Erntedankobst","=q1=Erntedanknektar"})
process("HeadlessHorseman",11,{"=q4=Der erschreckende Helm des Reiters","=q4=Ring der ghulischen Fröhlichkeit","=q4=Das Siegel des Reiters","=q4=Band der bösen Hexe","=q4=Die elende Klinge des Reiters","=q1=Gewichtige Kürbislaterne","=q1=Süßes Saures","=q4=Die Zügel des Reiters","=q3=Zauberbesen","=q3=Gruselhelm","=q3=Gruselkürbis"})
process("HighCouncil",20,{"","=q4=Elementares Fokusband","=q4=Abyssisches Szepter","=q3=Abyssische Lederarmschienen","=q3=Abyssische Panzerschulterstücke","","=q4=Wellenfronthalskette","=q4=Abyssisches Szepter","=q3=Abyssische Panzerarmschützer","=q3=Abyssische Plattenschulterklappen","","=q4=Scherwindcape","=q4=Abyssisches Szepter","=q3=Abyssische Stoffgelenkbänder","=q3=Abyssische Lederschultern","","=q4=Irdene Wache","=q4=Abyssisches Szepter","=q3=Abyssische Stoffamicia","=q3=Abyssische Plattenunterarmschienen"})
process("Karrog",11,{"=q3=Splitter von Karrog","=q2=Karokks Rückgrat","=q3=Windkanalisierungsbindungen","=q3=Windkanalisierungsleibriemen","=q3=Himmelspirscherarmschienen","=q3=Himmelspirscherkordel","=q3=Nebelschleierarmschienen","=q3=Nebelschleiergürtel","=q3=Schieferstahlarmschienen","=q3=Schieferstahlgurt","=q3=Skettisband"})
process("LordAhune",12,{"=q4=Umhang der eisigen Winde","=q4=Eingefrorener Umhang","=q4=Tuch der Winterkälte","=q4=Das Kriegstuch des Frostfürsten","=q4=Der Kriegsumhang des Frostfürsten","=q3=Formel: Waffe - Todeskälte","=q1=Splitter von Ahune","=q3=Sommerlicher Himmelswappenrock","=q3=Sommerlicher Flammenwappenrock","=q3=Beutel mit gekühlten Waren","=q4=Fürst Ahunes Frostsicherl","=q3=Eissplitter"})
process("LunarFestival1",24,{"=q2=Elunes Laterne","=q1=Grünes Festtagskleid","=q1=Rosa Festtagskleid","=q1=Lila Festtagskleid","=q1=Festlicher schwarzer Hosenanzug","=q1=Festlicher blauer Hosenanzug","=q1=Festlicher mintgrüner Hosenanzug","=q1=Festtagsklöße","=q1=Elunes Kerze","=q1=Münze der Urahnen","","=q1=Kleine blaue Rakete","=q1=Kleine grüne Rakete","=q1=Kleine rote Rakete","=q1=Kleine weiße Rakete","=q1=Kleine gelbe Rakete","=q1=Große blaue Rakete","=q1=Große grüne Rakete","=q1=Große rote Rakete","=q1=Große weiße Rakete","=q1=Große gelbe Rakete","","=q1=Glücksraketenbündel","=q1=Mondstein der Urahnen"})
process("LunarFestival2",20,{"=q2=Bauplan: Zünder für Feuerwerk","","=q2=Bauplan: Kleine blaue Rakete","=q2=Bauplan: Kleine grüne Rakete","=q2=Bauplan: Kleine rote Rakete","","=q2=Bauplan: Große blaue Rakete","=q2=Bauplan: Große grüne Rakete","=q2=Bauplan: Große rote Rakete","=q2=Muster: Festtagskleid","=q2=Bauplan: Zünder für Raketenbündel","","=q2=Bauplan: Blaues Raketenbündel","=q2=Bauplan: Grünes Raketenbündel","=q2=Bauplan: Rotes Raketenbündel","","=q2=Bauplan: Großes blaues Raketenbündel","=q2=Bauplan: Großes grünes Raketenbündel","=q2=Bauplan: Großes rotes Raketenbündel","=q2=Muster: Festtagsanzug"})
process("MalevustheMad",12,{"=q3=Schieferstahlstiefel","=q3=Dunkler Umhang","=q3=Rätselhafter Umhang","=q3=Feuriger Umhang","=q3=Frostiger Umhang","=q3=Lebendiger Umhang","=q2=Identifikationsmarke eines Gefangenen des Astraleums","=q3=Dunkles Band","=q3=Rätselhaftes Band","=q3=Feuriges Band","=q3=Frostiges Band","=q3=Lebendiges Band"})
process("MidsummerFestival",16,{"=q3=Kohlenpfanne der tanzenden Flammen","=q3=Eingefangene Flamme","=q2=Aschenarmschienen","=q1=Feuriges Festgebräu","=q1=Holunderbeerenkuchen","=q1=Feuergeröstetes Brötchen","=q1=Sonnenwendwürstchen","=q1=Getoastetes Smorc","=q1=Handvoll Sommerblüten","=q1=Tasche mit Smorczutaten","=q1=Jonglierfackel","=q1=Brandblüte","=q1=Krone des Sonnenwendfests","=q1=Mantelung des Sonnenwendfests","=q1=Sommerliche Tracht","=q1=Sommerliche Sandalen"})
process("Noblegarden",12,{"=q3=Foliant der Verwandlung: Hase","=q3=Frühlingshasenpfote","=q1=Frühlingsreif","=q1=Elegantes Kleid","=q1=Frühlingsrobe","=q1=Frühlingsblumen","=q1=Weißes Smokinghemd","=q1=Schwarze Smokinghose","=q1=Blühender Zweig","=q1=Nobelgartenei","=q1=Eierkorb","=q1=Nobelgartenschokolade"})
process("PilgrimsBounty_A",20,{"=q2=Das Beste zum Pilgerfreudenfest - DAS Kochbuch","=q1=Rezept: Gewürzbrotfüllung","=q1=Rezept: Kürbiskuchen","=q1=Rezept: Moosbeerenchutney","=q1=Rezept: Kandierte Süßkartoffel","=q1=Rezept: Langsam gerösteter Truthahn","=q1=Reichhaltiger Korb","=q1=Süßkartoffel von Teldrassil","=q1=Säuerliche Sumpfmoosbeeren","=q1=Reifer Elwynnkürbis","=q1=Herbstliche Gewürze","=q1=Honig","=q3=Truthahnkäfig","=q1=Pilgerhut","=q1=Pilgergewand","=q1=Pilgerkleid","=q1=Pilgerrobe","=q1=Pilgerstiefel","=q1=Truthahnrufer","=q1=Truthahnbüchse"})
process("PilgrimsBounty_H",20,{"=q2=Das Beste zum Pilgerfreudenfest - DAS Kochbuch","=q1=Rezept: Gewürzbrotfüllung","=q1=Rezept: Kürbiskuchen","=q1=Rezept: Moosbeerenchutney","=q1=Rezept: Kandierte Süßkartoffel","=q1=Rezept: Langsam gerösteter Truthahn","=q1=Reichhaltiger Korb","=q1=Süßkartoffel aus Mulgore","=q1=Säuerliche Moosbeeren vom Südstrom","=q1=Reifer Tirisfalkürbis","=q1=Herbstliche Gewürze","=q1=Honig","=q3=Truthahnkäfig","=q1=Pilgerhut","=q1=Pilgergewand","=q1=Pilgerkleid","=q1=Pilgerrobe","=q1=Pilgerstiefel","=q1=Truthahnrufer","=q1=Truthahnbüchse"})
process("PorfustheGemGorger",12,{"=q3=Windkanalisiererstiefel","=q3=Dunkler Umhang","=q3=Rätselhafter Umhang","=q3=Feuriger Umhang","=q3=Frostiger Umhang","=q3=Lebendiger Umhang","=q2=Identifikationsmarke eines Gefangenen des Astraleums","=q3=Dunkles Band","=q3=Rätselhaftes Band","=q3=Feuriges Band","=q3=Frostiges Band","=q3=Lebendiges Band"})
process("ScourgeInvasionEvent1",14,{"=q3=Banner der Argentumdämmerung","=q3=Argentumfoliant","=q3=Argentumkriegshorn","=q2=Gesegnetes Zauberöl","=q2=Geweihter Wetzstein","=q1=Wappenrock der Argentumdämmerung","=q1=Argentumheiltrank","=q1=Argentummanatrank","=q2=Nekrotische Rune","=q1=Verfluchtes Andenken","","=q4=Abzeichen der Gerechtigkeit","=q4=Arkanitreißer","=q3=Vampirfledermäuschen"})
process("ScourgeInvasionEvent2",20,{"","=q4=Gesegnete Mantelung der Untotenbekämpfung","=q4=Gesegnete Robe der Untotenbekämpfung","=q4=Gesegnete Handschuhe der Untotenbekämpfung","=q4=Gesegnete Hosen der Untotenbekämpfung","","=q4=Gesegnete Schulterpolster des Untotenschlachtens","=q4=Gesegnete Tunika des Untotenschlachtens","=q4=Gesegneter Handschutz des Untotenschlachtens","=q4=Gesegnete Gamaschen des Untotenschlachtens","","=q4=Gesegnete Schulterstücke des Untotenschlachtens","=q4=Gesegnete Halsberge des Untotenschlachtens","=q4=Gesegnete Handschützer des Untotenschlachtens","=q4=Gesegnete Schienbeinschützer des Untotenschlachtens","","=q4=Gesegnete Schiftung des Untotenschlachtens","=q4=Gesegnete Brustplatte des Untotenschlachtens","=q4=Gesegnete Stulpen des Untotenschlachtens","=q4=Gesegnete Beinplatten des Untotenschlachtens"})
process("ScourgeInvasionEvent3",22,{"","=q3=Gürtelbund von Balzaphon","=q3=Fesseln des Lichs","=q3=Stab von Balzaphon","","=q3=Schwarzstahls Oberschenkelknochen","=q3=Fürst Schwarzstahls Klinge","=q3=Fürst Schwarzstahls Rundschild","","=q3=Revanchions Umhang","=q3=Heilungsarmschienen","=q3=Griff des Schattens","","=q3=Der eisige Griff","=q3=Eisiger Halsreif des Verächters","=q3=Fokusdolch des Verächters","","=q3=Gamaschen aus Monstrositätenhaut","=q3=Die Axt des Zerspaltens","","=q3=Mantel von Lady Falther'ess","=q3=Finger von Lady Falther'ess"})
process("Shartuul",22,{"=q4=Siegel des Verderbers","=q4=Ausgelaugte Stoffarmschienen","=q4=Ausgelaugte Kettenstulpen","=q3=Ausgelaugter Umhang","=q3=Ausgelaugter Ring","=q3=Ausgelaugtes Abzeichen","=q3=Ausgelaugter Dolch","=q3=Ausgelaugtes Schwert","=q3=Ausgelaugte Zweihandaxt","=q3=Ausgelaugter Streitkolben","=q3=Ausgelaugter Stab","=q4=Ring des Aufpassers","=q4=Kristallgewebte Armschienen","=q4=Kristallhandlappen","=q3=Kristallgewebter Umhang","=q3=Traumkristallband","=q3=Abzeichen der Hartnäckigkeit","=q3=Kristallerfülltes Messer","=q3=Kristallgeschmiedetes Schwert","=q3=Apexisspalter","=q3=Apexiskristallstreitkolben","=q3=Flammender Quarzstab"})
process("SkettisHazziksPackage",1,{"=q1=Hazziks Päckchen"})
process("SkettisTalonpriestIshaal",1,{"=q1=Ishaals Almanach"})
process("Templars",20,{"","=q3=Kristallstilett","=q2=Abyssische Stoffhandlappen","=q2=Abyssische Panzersabatons","=q2=Abyssisches Wappen","","=q3=Amethystkriegsstab","=q2=Abyssische Stoffschuhe","=q2=Abyssische Plattenstulpen","=q2=Abyssisches Wappen","","=q3=Steinschneidende Gleve","=q2=Abyssische Lederstiefel","=q2=Abyssische Panzerhandschützer","=q2=Abyssisches Wappen","","=q3=Durchschlagskräftiger Bogen","=q2=Abyssische Lederhandschuhe","=q2=Abyssische Plattenschienbeinschützer","=q2=Abyssisches Wappen"})
process("Terokk",11,{"=q4=Terokks Macht","=q4=Terokks Weisheit","=q3=Windkanalisierergamaschen","=q3=Himmelspirschergamaschen","=q3=Nebelschleierhose","=q3=Schieferstahlgamaschen","=q3=Gabe der Krallenpriester","=q3=Brosche des unsterblichen Königs","=q3=Zeitverlorene Statuette","=q3=Terokks Hammer","=q3=Terokks Hammer"})
process("VakkiztheWindrager",11,{"=q3=Armreif des Windzürners","=q2=Vakkiz' Schuppe","=q3=Windkanalisierungsbindungen","=q3=Windkanalisierungsleibriemen","=q3=Himmelspirscherarmschienen","=q3=Himmelspirscherkordel","=q3=Nebelschleierarmschienen","=q3=Nebelschleiergürtel","=q3=Schieferstahlarmschienen","=q3=Schieferstahlgurt","=q3=Skettisband"})
process("Valentineday",20,{"=q3=Picknickkorb für Verliebte","=q1=Zeichen der Liebe","=q1=Wunderschöne Rose","=q1=Handvoll Rosenblüten","=q1=Silberschaftpfeil","=q1=Echtsilberschaftpfeil","=q1=Bonbontüte","=q1=Schokoladenschachtel","=q1=Karton 'Reizendes Kleid'","=q1=Karton 'Abendanzug'","=q1=Liebesrakete","=q1=Liebesschwindler","=q1=Duftwasser \"Courage\"","=q1=Duftwasser \"MASKULIN\"","=q1=Duftwasser \"Djinn\"","=q1=Parfüm \"TRIUMPH\"","=q1=Parfüm \"Nirwana\"","=q1=Parfüm \"Magica\"","=q1=Zeichen der Liebe","=q1=Hübscher Glücksbringerarmreif"})
process("Valentineday2",23,{"","=q1=Reizendes schwarzes Kleid","=q1=Reizendes rotes Kleid","=q1=Reizendes blaues Kleid","=q1=Reizendes lila Kleid","","=q1=Roter Abendanzug","=q1=Blauer Abendanzug","=q1=Lila Abendanzug","","=q1=Dunkle Versuchung","=q1=Beerens Echte","=q1=Buttermilchküsschen","=q1=Süße Träume","","=q1=Zuckerherz","=q1=Zuckerherz","=q1=Zuckerherz","=q1=Zuckerherz","=q1=Zuckerherz","=q1=Zuckerherz","=q1=Zuckerherz","=q1=Zuckerherz"})
process("Valentineday3",10,{"=q4=Zwinkerndes Auge der Liebe","=q4=Herzeleidglücksbringer","=q4=Splitter des pirouettendrehenden Glücks","=q4=Süße Parfümbrosche","=q4=Halsreif des reinen Herzens","=q3=Ewig wunderschöne Rose","=q3=Maske des schändlichen Ausräucherers","=q3=Giftmüllschleimling","=q3=Der Herzbrecher","=q4=Große Liebesrakete"})
process("Winterviel1",29,{"=q2=Grüne Wintermütze","=q2=Rote Wintermütze","=q1=Winterhauchverkleidungsset","=q1=Schneeball","=q1=Hand voll Schneeflocken","=q1=Frischer Tannenzweig","=q1=Mistelzweig","","=q2=Muster: Winterstiefel","=q2=Muster: Rote Winterkleidung","=q2=Muster: Grüne Winterkleidung","=q1=Rezept: Heißer Apfelwein","=q1=Rezept: Eierflip","=q1=Rezept: Lebkuchen","=q1=Bonbonstange","=q1=Festtagskäserad","=q1=Graccus hausgemachte Fleischpastete","=q1=Brachländer Würstchen","=q1=Honigveredelter Festtagsschinken","=q1=Bohnengebräu","=q1=Grüner Gartentee","=q1=Prickelnder Apfelwein","=q1=Festtagsgeister","=q1=Dampfdruckprickelschnaps","=q1=Altvater Winters Bier","=q1=Festtagsgewürze","=q1=Geschenkpapier mit blauem Band","=q1=Geschenkpapier mit grünem Band","=q1=Geschenkpapier mit lila Band"})
process("Winterviel2",25,{"","=q1=Grüne Helferbox","=q1=Bimmelglöckchen","=q1=Rote Helferbox","=q1=Schneemannset","","=q1=Zauberstab der Festtagsfreude","","=q3=Aufziehraketenbot","","=q1=Winterhauchbraten","=q1=Winterhaucheierflip","","=q2=Mechanischer Griesgram","=q2=Konservierter Tannenzweig","=q2=Pläne: Schneide des Winters","=q2=Formel: Waffe - Wintermacht","=q2=Bauplan: Schneemeister 9000","=q2=Muster: Handschuhe des Altvaters","=q1=Rezept: Elixier der Frostmacht","=q1=Muster: Grünes Festtagshemd","","=q1=Winterhauchplätzchen","","=q1=Graccus hausgemachte Früchtepastete"})
process("WrathbringerLaztarash",12,{"=q3=Manageschmiedete Sphäre","=q3=Dunkler Umhang","=q3=Rätselhafter Umhang","=q3=Feuriger Umhang","=q3=Frostiger Umhang","=q3=Lebendiger Umhang","=q2=Identifikationsmarke eines Gefangenen des Astraleums","=q3=Dunkles Band","=q3=Rätselhaftes Band","=q3=Feuriges Band","=q3=Frostiges Band","=q3=Lebendiges Band"})
elseif locale == "esES" then
process("ArgentTournament1",13,{"","=q2=Distintivo de mención de Darnassus","=q2=Distintivo de mención de El Exodar","=q2=Distintivo de mención de Gnomeregan","=q2=Distintivo de mención de Forjaz","=q2=Distintivo de mención de Ventormenta","=q1=Libranza del Campeón","","=q2=Distintivo de mención de Orgrimmar","=q2=Distintivo de mención de Entrañas","=q2=Distintivo de mención de Cima del Trueno","=q2=Distintivo de mención de Sen'jin","=q2=Distintivo de mención de Lunargenta"})
process("ArgentTournament2",28,{"","=q1=Estandarte de Darnassus","=q1=Estandarte de El Exodar","=q1=Estandarte de Gnomeregan","=q1=Estandarte de Forjaz","=q1=Estandarte de Ventormenta","=q1=Tabardo de Darnassus","=q1=Tabardo de El Exodar","=q1=Tabardo de Gnomeregan","=q1=Tabardo de Forjaz","=q1=Tabardo de Ventormenta","=q1=Tabardo de El Pacto de Plata","=q1=Sello de Campeón","","=q1=Estandarte de Orgrimmar","=q1=Estandarte de Entrañas","=q1=Estandarte de Cima del Trueno","=q1=Estandarte de Sen'jin","=q1=Estandarte de la Ciudad de Lunargenta","=q1=Tabardo de Orgrimmar","=q1=Tabardo de Entrañas","=q1=Tabardo de Cima del Trueno","=q1=Tabardo de Sen'jin","=q1=Tabardo de Ciudad de Lunargenta","=q1=Tabardo de Los Atracasol","","=q1=Estandarte de la Cruzada Argenta","=q3=Tabardo de cruzado Argenta"})
process("ArgentTournament3",29,{"","=q3=Fajín de corazones destrozadores","=q3=Cinturón del árbol siemprevivo","=q3=Botines de evasión ágil","=q3=Cincho de servidumbre adherida","=q3=Botines del espíritu glorioso","=q3=Guanteletes de orgullo destrozado","=q3=Faja de derrota valerosa","=q3=Puntales de furor desasido","=q3=Collar de conchas susurrantes","=q3=Gargantilla de enfoque espiral","=q3=Collar de sangre valerosa","=q3=Congante de sueños azures","=q3=Furia de ajustador","=q1=Sello de Campeón","","=q3=Fajín del orgullo pregonado","=q3=Guardarrenes de furia equina","=q3=Botines del escudero vehemente","=q3=Eslabones de salvajismo insaciable","=q3=Botines de sueños susurrantes","=q3=Guanteletes de toque de alivio","=q3=Abrazo de furia salvaje","=q3=Apisonadoras cubiertas de sangre","=q3=Gargantilla de furia feral","=q3=Collar de calaveras robadas","=q3=Colgantes del cruzado esmeralda","=q3=Colgante de filo de navaja","=q3=Furia de ajustador"})
process("ArgentTournament4",19,{"","=q4=Daga de pureza lunar","=q4=Daga de la luna naciente","=q4=Machacahuesos de Gnomeregan","=q4=Mandoble del profeta","=q4=Protector de Teldrassil","=q4=Machacador de Forjaz","=q4=Báculo nemoroso de plata","=q4=Trabuco de Khaz Modan","=q1=Sello de Campeón","","=q4=Escalpelo de la Sociedad Real de Boticarios","=q4=Destructora espinal","=q4=Hoja del alma en pena lastimera","=q4=Espada magna de los Sin'dorei","=q4=Hacha del protector de Sen'jin","=q4=Triturador de cuernos macabros","=q4=Bastón de furias ferales","=q4=Rifle largo zapapico de Sen'jin"})
process("ArgentTournament5",19,{"","=q3=Escudero Argenta","=q3=Retoño de azotador del Valle Ammen","=q3=Cogollito de Teldrassil","=q3=Cachorro de Dun Morogh","=q3=Cordero de Elwynn","=q3=Mecanopío","=q3=Vermizo fulgurante","","=q3=Brida de poni Argenta","=q1=Sello de Campeón","","=q3=Brutito Argenta","=q3=Prole de Mulgore","=q3=Fetiche de Sen'jin","=q3=Murciabadejo de Tirisfal","=q3=Escorpión de Durotar","=q3=Escoba encantada","=q3=Vermizo fulgurante"})
process("ArgentTournament6",23,{"","=q4=Sable de la Niebla darnassiano presto","=q4=Gran elekk de Bruma Azur","=q4=Turbozancudo","=q4=Carnero de Forjaz presto","=q4=Corcel de Elwynn presto","=q4=Gran elekk rojo","=q4=Corcel gris presto","=q4=Sable de la Luna presto","=q4=Carnero violeta presto","=q4=Turbozancudo","=q1=Sello de Campeón","","=q4=Raptor Lanza Negra presto","=q4=Caballo de guerra Renegado presto","=q4=Lobo de Orgrimmar presto","=q4=Halcón zancudo de Lunargenta presto","=q4=Gran kodo de Mulgore","=q4=Gran kodo dorado","=q4=Lobo burdeos presto","=q4=Raptor morado presto","=q4=Halcón zancudo rojo presto","=q4=Caballo de guerra esquelético blanco"})
process("ArgentTournament7",11,{"","=q4=Corcel Quel'dorei","=q4=Hipogrifo de El Pacto de Plata","","=q4=Destrero Argenta","=q4=Caballo de guerra Argenta","=q4=Hipogrifo Argenta","=q1=Sello de Campeón","","=q4=Halcón zancudo Atracasol","=q4=Dracohalcón Atracasol"})
process("ArgentTournament8",23,{"=q7=Manto calígine andrajoso","=q7=Sobrehombros plumahierro atusados","=q7=Bufas de arte sombrío manchado","=q7=Hombro del Campeón Herod","=q7=Espaldares místicos de elementos","=q7=Bufas pulidas de valor","=q7=Ojo de la bestia exigente","=q7=Mano presto de justicia","=q1=Sello de Campeón","=q7=Toga calígine andrajosa","=q7=Coraza plumahierro atusada","=q7=Guerrera de arte sombrío manchada","=q7=Coraza de mortífero de Campeón","=q7=Jubón místico de elementos","=q7=Coraza pulida de valor","=q7=Buscacorazones equilibrada","=q7=Carga sacra de Dal'Rend venerable","=q7=Segadora de arcanita ensangrentada","=q7=Martillo de piedra de aura de devoto","=q7=Masa venerable de McGowan","=q7=Draga de lava de nueva funcionalidad","=q7=Carga de rector dignificado","=q7=Arco de hueso antiguo encantado"})
process("ArmbreakerHuffaz",12,{"=q3=Sortija de El Etereum","=q3=Capa oscura","=q3=Capa enigmática","=q3=Capa ígnea","=q3=Capa gélida","=q3=Capa viviente","=q2=Etiqueta de identificación de prisionero de El Etereum","=q3=Banda oscura","=q3=Banda enigmática","=q3=Banda ígnea","=q3=Banda frígida","=q3=Banda viviente"})
process("BashirLanding",24,{"","=q1=Frasco inestable del anciano","=q1=Frasco inestable del médico","=q1=Frasco inestable del bandido","=q1=Frasco inestable del soldado","","=q3=Amatista inestable","=q3=Citrino inestable","=q3=Peridoto inestable","=q3=Zafiro inestable","=q3=Talasita inestable","=q3=Topacio inestable","","=q3=Diamante imbuido inestable","=q3=Diamante potente inestable","=q1=Módulo acelerador","=q1=Geoda de metamorfosis de oro pequeña","=q1=Geoda de metamorfosis de plata pequeña","=q1=Geoda de metamorfosis de cobre pequeña","=q1=Geoda de metamorfosis de hierro pequeña","=q1=Geoda de metamorfosis de oro grande","=q1=Geoda de metamorfosis de plata grande","=q1=Geoda de metamorfosis de cobre grande","=q1=Geoda de metamorfosis de hierro grande"})
process("BashirStasisChambers",15,{"","=q3=Baluarte demoníaco","=q2=Marca del rey-nexo","","=q3=Sobrehombros de aceropizarra","=q2=Marca del rey-nexo","","=q3=Sobrehombros sayobruma","=q2=Marca del rey-nexo","","=q3=Manto del Canalizador de viento","=q2=Marca del rey-nexo","","=q3=Sobrehombros de acechador celeste","=q2=Marca del rey-nexo"})
process("Brewfest1",19,{"=q1=Gafas romance de mejora de aspecto de Belbi","=q1=Gafas romance de mejora de aspecto de Blix","=q1=Sombrero de la Fiesta de la cerveza azul","=q1=Sombrero de la Fiesta de la cerveza marrón","=q1=Sombrero de la Fiesta de la cerveza verde","=q1=Sombrero de la Fiesta de la cerveza morado","=q1=Traje de la Fiesta de la cerveza","=q1=Atavío de la Fiesta de la cerveza","=q1=Botas de la Fiesta de la cerveza","=q1=Zapatillas de la Fiesta de la cerveza","=q3=Cuñete de la Fiesta de la cerveza","=q3=Elekk rosa tamaño pinta","=q3=Pichel de wolpertinger","=q1=Formulario de socio del Club de la \"Cerveza del Mes\"","=q2=Lúpulo de la Fiesta de la cerveza conservado","=q1=Lúpulo de la Fiesta de la cerveza fresco","=q1=Lúpulo enano de la Fiesta de la cerveza fresco","=q1=Lúpulo goblin de la Fiesta de la cerveza fresco","=q2=Ficha para la Fiesta de la cerveza"})
process("Brewfest2",15,{"=q3=Jarra de la Fiesta de la cerveza verde","=q3=Jarra de la Fiesta de la cerveza azul","=q3=Jarra de la Fiesta de cerveza amarilla","=q3=Pichel Hierro Negro","=q3=Carnero de la Fiesta de la cerveza","=q1=Cerveza de la Fiesta de la cerveza","=q1=Salchichón","=q1=Salchicha en conserva","=q1=Pretzel con sal gorda","=q1=Salchicha sabrosa","=q1=Queso con cebolla","=q1=Salchicha ahumada picante","=q1=Salchica suculenta","=q1=El pretzel, esencial en la Fiesta de la cerveza","=q1=El Vínculo Dorado"})
process("Brewfest3",20,{"","=q1=Cebadiz clara","=q1=Cebadiz ligera","=q1=Cebadiz oscura","","=q1=Trueno 45","=q1=Cebatruenos rubia","=q1=Cebratruenos negra","","=q1=Grog de Gordok","=q1=Batido proteico","=q1=Hidromiel ogro","","=q1=Cerveza del Pasito","=q1=Cerveza del Largo Paseo","=q1=Senda de la Cerveza","","=q1=Agua de río de la selva","=q1=Magia cervecera","=q1=Cabeza reducida fuerte"})
process("BrewoftheMonthClub",12,{"=q1=Cerveza rubia Invierno Salvaje","=q1=Sabor de amor de Izzard","=q1=Cerveza aromática de miel","=q1=Cerveza negra espumosa de Metok","=q1=Cerveza de primavera","=q1=Cerveza rubia de Roca Negra","=q1=Cerveza de Tuercespina","=q1=Cerveza rubia draénica","=q1=Cerveza binaria","=q1=Cerveza de bellota otoñal","=q1=Cerveza amarga de Bartlett","=q1=Etiqueta privada del Señor de la Escarcha"})
process("ChildrensWeek",12,{"","=q1=Collera de cochinillo","=q1=Jaula de ratas","=q1=Carcasa de tortuga","=q1=Pago de cascarrabias","","=q3=Huevo de Egbert","=q3=Collera de entrenamiento de elekk","=q3=Willy el Dormilón","","=q3=Prole de Oráculo curiosa","=q3=Cachorro wolvar curioso"})
process("CorenDirebrew",12,{"=q4=Huevo escabechado pasado","=q4=Talismán Brillobirra en ebullición","=q4=Talismán Fardobirra amarga","=q4=Recuerdo de camorrista","=q4=Posavasos de cromo de Coren","=q4=Reloj de bolsillo de mitril","=q4=Faca de cerveza temible 2.0","=q4=Pichel del terror","=q4=Gran kodo de la Fiesta de la cerveza","=q4=Carnero de la Fiesta de la cerveza presto","=q3=Control remoto de Cerveza Temible","=q1=Cerveza temible de Cerveza Temible"})
process("Darkmoon1",16,{"=q4=Amuleto de la Luna Negra","=q4=Orbe de la Luna Negra","=q2=Lote superior de la Luna Negra","=q2=Lote inferior de la Luna Negra","=q2=Lote menor de la Luna Negra","=q1=Caja de almacenamiento de la Luna Negra","=q1=Añojo del año pasado","=q1=Esquema: mando de tonque de vapor","=q1=Añojo del mes pasado","=q1=Flor de la Luna Negra","=q1=Vale para la Feria de la Luna Negra","=q3=Anillo de la Luna Negra","=q2=Collar de la Luna Negra","=q1=Carcasa de rana de árbol","=q1=Caja de rana de bosque","=q1=Una casita de Jubling"})
process("Darkmoon2",15,{"=q2=Baraja de Pícaros","=q2=Toga de la Luna Negra","=q2=Jubón de la Luna Negra","=q2=Camisa de anillas de la Luna Negra","=q3=Baraja de Espadas","=q3=Sobrehombros de paño oscuro","=q3=Hombreras invisibles","=q3=Guardahombros azur","=q3=Baraja de Magos","=q3=Collar de la Luna Negra","=q3=Colgante de la Luna Negra","=q3=Baraja de Demonios","=q3=Daga de la Luna Negra","=q3=Verdugo de la Luna Negra","=q3=Cetro de mago de la Luna Negra"})
process("Darkmoon3",16,{"=q4=Baraja de Bestias","=q4=Naipe de la Luna Negra: Dragón azul","=q4=Baraja de Elementales","=q4=Naipe de la Luna Negra: La Vorágine","=q4=Baraja de Portales","=q4=Naipe de la Luna Negra: El Vacío Abisal","=q4=Baraja de Señores de la Guerra","=q4=Naipe de la Luna Negra: Heroísmo","=q4=Baraja de Bendiciones","=q4=Naipe de la Luna Negra: Cruzada","=q4=Baraja de Furias","=q4=Naipe de la Luna Negra: Venganza","=q4=Baraja de Locuras","=q4=Naipe de la Luna Negra: Locura","=q4=Baraja de Tormentas","=q4=Naipe de la Luna Negra: Cólera"})
process("Darkmoon4",11,{"=q4=Baraja de Caos","=q4=Naipe de la Luna Negra: Rabioso","=q4=Baraja de Prismas","=q4=Naipe de la Luna Negra: Ilusión","=q4=Baraja de No-muertos","=q4=Naipe de la Luna Negra: Muerte","=q4=Baraja de Nobles","=q4=Naipe de la Luna Negra: Grandeza","=q4=Naipe de la Luna Negra: Grandeza","=q4=Naipe de la Luna Negra: Grandeza","=q4=Naipe de la Luna Negra: Grandeza"})
process("DarkscreecherAkkarai",11,{"=q3=Guanteletes de hereje","=q2=Garfas de Akkarai","=q3=Ataduras del Canalizador de viento","=q3=Ceñidor del Canalizador de viento","=q3=Brazales de acechador celeste","=q3=Cordón de acechador celeste","=q3=Brazales sayobruma","=q3=Cinturón sayobruma","=q3=Brazales de aceropizarra","=q3=Faja de aceropizarra","=q3=Sortija de Skettis"})
process("DayoftheDead",8,{"=q1=Marioneta macabra","=q1=Máscara de calavera caprichosa","=q1=Ramo de flores de muerto naranjas","=q1=Calavera de dulce","=q1=Vela de espíritu","=q1=Flor de muerto naranja","=q1=Receta: pan de muerto","=q1=Pan de muerto"})
process("Dukes",21,{"","=q3=Leotardos de cuero abisal","=q3=Martillo de guerra de acero endurecido","=q3=Sello abisal","=q2=Fajín de paño abisal","=q1=Rescoldo de las brasas","","=q3=Musleras de malla abisal","=q3=Mandoble Rocanegra","=q3=Sello abisal","=q2=Cinturón de cuero abisal","","=q3=Pantalones de paño abisal","=q3=Creador de almas","=q3=Sello abisal","=q2=Faja de placas abisales","","=q3=Quijotes de placas abisales","=q3=Varita de cristal chispeante","=q3=Sello abisal","=q2=Garra de malla abisal"})
process("ElementalInvasion",18,{"","=q3=Cetro del barón Charr","=q3=As de Elementales","=q2=Elemental de ascuas","","=q3=Collar helado de Tempestria","=q3=As de Elementales","=q3=Patrón: guantes de embozo de tormenta","=q2=Anillo gélido","","=q3=Pellejo pedregoso de Avalanchion","=q3=As de Elementales","=q2=Sortija de piedra endurecida","","=q3=Fajín del Atracavientos","=q3=As de Elementales","=q3=Patrón: guantes de embozo de tormenta","=q2=Capa Céfiro"})
process("FelTinkererZortan",12,{"=q3=Botas sayobruma","=q3=Capa oscura","=q3=Capa enigmática","=q3=Capa ígnea","=q3=Capa gélida","=q3=Capa viviente","=q2=Etiqueta de identificación de prisionero de El Etereum","=q3=Banda oscura","=q3=Banda enigmática","=q3=Banda ígnea","=q3=Banda frígida","=q3=Banda viviente"})
process("FishingExtravaganza",12,{"","=q3=Caña de pescar de arcanita","=q3=Anzuelo de Maestro pescador","","=q2=Pez ángel de Keefer","=q2=Corredor a rayas azules de Brownell","=q2=Pez reina de Dezian","=q2=Potenpez Pielroca","","=q2=Sombrero de pesca de la suerte","=q2=Botas de pescador extremo de Nat Pagle","=q2=Gran línea de pesca de prueba de eternio"})
process("Forgosh",12,{"=q3=Botas de acechador celeste","=q3=Capa oscura","=q3=Capa enigmática","=q3=Capa ígnea","=q3=Capa gélida","=q3=Capa viviente","=q2=Etiqueta de identificación de prisionero de El Etereum","=q3=Banda oscura","=q3=Banda enigmática","=q3=Banda ígnea","=q3=Banda frígida","=q3=Banda viviente"})
process("GezzaraktheHuntress",11,{"=q3=Colmillo de Gezzarak","=q2=Garras de Gezzarak","=q3=Ataduras del Canalizador de viento","=q3=Ceñidor del Canalizador de viento","=q3=Brazales de acechador celeste","=q3=Cordón de acechador celeste","=q3=Brazales sayobruma","=q3=Cinturón sayobruma","=q3=Brazales de aceropizarra","=q3=Faja de aceropizarra","=q3=Sortija de Skettis"})
process("Gulbor",12,{"=q3=Torques de El Etereum","=q3=Capa oscura","=q3=Capa enigmática","=q3=Capa ígnea","=q3=Capa gélida","=q3=Capa viviente","=q2=Etiqueta de identificación de prisionero de El Etereum","=q3=Banda oscura","=q3=Banda enigmática","=q3=Banda ígnea","=q3=Banda frígida","=q3=Banda viviente"})
process("GurubashiArena",6,{"=q3=Guardamuñecas de arena","=q3=Brazales de arena","=q3=Braciles de arena","=q3=Protegebrazos de arena","=q2=Maestro de arena","=q3=Gran maestro de arena"})
process("Halloween1",26,{"=q3=Calabaza iluminada","=q2=Bolsa de calabazas","=q2=Escoba mágica destartalada","=q1=Piruleta de Styleen","=q1=Caramelo de los disturbios de Arroyo de la Luna","=q1=Barrita de nueces de Bellara","=q1=Golosinas de calabaza de Halloween","","=q1=Caramelo masticable vil","=q1=C.H.U.C.H.E.G.","=q1=Bola de canela de piroexplosión","=q1=Caramelo de menta refrescante","","=q3=Yelmo sacralizado","=q3=Calabacino siniestro","=q1=Varita sacralizada: Murciélago","=q1=Varita sacralizada: Fantasma","=q1=Varita sacralizada: Gnomo paria","=q1=Varita sacralizada: Ninja","=q1=Varita sacralizada: Pirata","=q1=Varita sacralizada: Aleatorio","=q1=Varita sacralizada: Esqueleto","=q1=Varita sacralizada: Fuego fatuo","=q1=Trigo de caramelo","=q1=Chupachús","=q1=Chocolatina"})
process("Halloween2",21,{"","=q1=Máscara de draenei macho endeble","=q1=Máscara de enano endeble","=q1=Máscara de gnomo endeble","=q1=Máscara de hombre endeble","=q1=Máscara de elfo de la noche endeble","=q1=Máscara de elfo de sangre endeble","=q1=Máscara de orco endeble","=q1=Máscara de tauren endeble","=q1=Máscara de trol endeble","=q1=Máscara de no-muerto endeble","=q1=Máscara de draenei hembra endeble","=q1=Máscara de enana endeble","=q1=Máscara de gnoma endeble","=q1=Máscara de mujer endeble","=q1=Máscara de elfa de la noche endeble","=q1=Máscara de elfa de sangre endeble","=q1=Máscara de orco hembra endeble","=q1=Máscara de tauren hembra endeble","=q1=Máscara de trol hembra endeble","=q1=Máscara de no-muerta endeble"})
process("HarvestFestival",7,{"=q1=Recompensa de la cosecha","=q1=¡Por la Luz!","=q1=El grito del infierno de la Horda","=q1=Jabalí de la cosecha","=q1=Pez de la cosecha","=q1=Fruta de la cosecha","=q1=Néctar de la cosecha"})
process("HeadlessHorseman",11,{"=q4=Yelmo espantoso de El Jinete","=q4=Anillo de regocijo macabro","=q4=Sello de El Jinete","=q4=Sortija de bruja mala","=q4=Hoja aciaga de El Jinete","=q1=Calabaza iluminada pesada","=q1=Dulce de Halloween","=q4=Riendas de Jinete decapitado","=q3=Escoba mágica","=q3=Yelmo sacralizado","=q3=Calabacino siniestro"})
process("HighCouncil",20,{"","=q4=Sortija de enfoque elemental","=q4=Cetro abisal","=q3=Brazales de cuero abisal","=q3=Espaldares de malla abisal","","=q4=Collar rompeolas","=q4=Cetro abisal","=q3=Guardabrazos de cuero abisal","=q3=Cubrehombros de placas abisales","","=q4=Manteo Cortaviento","=q4=Cetro abisal","=q3=Braciles de paño abisal","=q3=Sobrehombros de cuero abisal","","=q4=Integumento terráneo","=q4=Cetro abisal","=q3=Amito de paño abisal","=q3=Protegebrazos de placas abisales"})
process("Karrog",11,{"=q3=Fragmento de Karrog","=q2=Espina de Karrog","=q3=Ataduras del Canalizador de viento","=q3=Ceñidor del Canalizador de viento","=q3=Brazales de acechador celeste","=q3=Cordón de acechador celeste","=q3=Brazales sayobruma","=q3=Cinturón sayobruma","=q3=Brazales de aceropizarra","=q3=Faja de aceropizarra","=q3=Sortija de Skettis"})
process("LordAhune",12,{"=q4=Capa de los gélidos vientos","=q4=Capa forrada de hielo","=q4=Embozo del frío invierno","=q4=Esbozo de batalla del Señor de la Escarcha","=q4=Capa de guerra del Señor de la Escarcha","=q3=Fórmula: encantar arma: escarcha letal","=q1=Fragmentos de Ahune","=q3=Tabardo de cielos estivales","=q3=Tabardo de llamas estivales","=q3=Cartera de bienes fríos","=q4=Guadaña de Escarcha de Lord Ahune","=q3=Trozo de hielo"})
process("LunarFestival1",24,{"=q2=Farol de Elune","=q1=Vestido de fiesta verde","=q1=Vestido de fiesta rosa","=q1=Vestido de fiesta morado","=q1=Traje de pantalón de fiesta negro","=q1=Traje de pantalón de fiesta azul","=q1=Traje de pantalón de fiesta con cerceta","=q1=Albóndigas festivas","=q1=Vela de Elune","=q1=Moneda de linaje","","=q1=Cohete azul pequeño","=q1=Cohete verde pequeño","=q1=Cohete rojo pequeño","=q1=Cohete blanco pequeño","=q1=Cohete amarillo pequeño","=q1=Cohete azul grande","=q1=Cohete verde grande","=q1=Cohete rojo grande","=q1=Cohete blanco grande","=q1=Cohete amarillo grande","","=q1=Traca de cohetes de la suerte","=q1=Piedra lunar de anciano"})
process("LunarFestival2",20,{"=q2=Esquema: lanzafuegos de artificio","","=q2=Esquema: cohete azul pequeño","=q2=Esquema: cohete verde pequeño","=q2=Esquema: cohete rojo pequeño","","=q2=Esquema: cohete azul grande","=q2=Esquema: cohete verde grande","=q2=Esquema: cohete rojo grande","=q2=Patrón: vestido de fiesta","=q2=Esquema: lanzatracas","","=q2=Esquema: traca de cohetes azules","=q2=Esquema: traca de cohetes verdes","=q2=Esquema: traca de cohetes rojos","","=q2=Esquema: traca de cohetes azules grandes","=q2=Esquema: traca de cohetes verdes grandes","=q2=Esquema: traca de cohetes rojos grandes","=q2=Patrón: traje de fiesta"})
process("MalevustheMad",12,{"=q3=Botas de aceropizarra","=q3=Capa oscura","=q3=Capa enigmática","=q3=Capa ígnea","=q3=Capa gélida","=q3=Capa viviente","=q2=Etiqueta de identificación de prisionero de El Etereum","=q3=Banda oscura","=q3=Banda enigmática","=q3=Banda ígnea","=q3=Banda frígida","=q3=Banda viviente"})
process("MidsummerFestival",16,{"=q3=Blandón de llamas bailarinas","=q3=Llama presa","=q2=Brazales de ceniza","=q1=Brebaje festivo ígneo","=q1=Tarta de bayas de saúco","=q1=Pan tostado","=q1=Salchicha de solsticio de verano","=q1=Esmorc tostado","=q1=Puñado de pétalos estivales","=q1=Bolsa de ingredientes esmorc","=q1=Antorcha de malabarismos","=q1=Flores ardientes","=q1=Corona del Festival del Fuego","=q1=Manto del Festival del Fuego","=q1=Vestimentas estivales","=q1=Sandalias estivales"})
process("Noblegarden",12,{"=q3=Escrito sobre Polimorfia: conejo","=q3=Pata de conejo primaveral","=q1=Diadema primaveral","=q1=Vestido elegante","=q1=Toga primaveral","=q1=Flores primaverales","=q1=Camisa de esmoquin blanca","=q1=Pantalones de esmoquin negro","=q1=Rama en flor","=q1=Huevo del Jardín Noble","=q1=Cesta de huevos","=q1=Chocolate del Jardín Noble"})
process("PilgrimsBounty_A",20,{"=q2=Libro de cocina generoso","=q1=Receta: relleno de pan de especias","=q1=Receta: tarta de calabaza","=q1=Receta: chatni de arándanos","=q1=Receta: batata confitada","=q1=Receta: pavo a fuego lento","=q1=Cesta generosa","=q1=Batata de Teldrassil","=q1=Arándanos ácidos de Los Humedales","=q1=Calabaza de Elwynn madura","=q1=Hierbas otoñales","=q1=Miel","=q3=Jaula de pavo","=q1=Sombrero de peregrino","=q1=Atuendo de peregrino","=q1=Vestido de peregrino","=q1=Toga de peregrino","=q1=Botas de peregrino","=q1=Llamapavos","=q1=Pavopistola"})
process("PilgrimsBounty_H",20,{"=q2=Libro de cocina generoso","=q1=Receta: relleno de pan de especias","=q1=Receta: tarta de calabaza","=q1=Receta: chatni de arándanos","=q1=Receta: batata confitada","=q1=Receta: pavo a fuego lento","=q1=Cesta generosa","=q1=Batata de Mulgore","=q1=Arándanos ácidos de Furia del Sur","=q1=Calabaza de Tirisfal madura","=q1=Hierbas otoñales","=q1=Miel","=q3=Jaula de pavo","=q1=Sombrero de peregrino","=q1=Atuendo de peregrino","=q1=Vestido de peregrino","=q1=Toga de peregrino","=q1=Botas de peregrino","=q1=Llamapavos","=q1=Pavopistola"})
process("PorfustheGemGorger",12,{"=q3=Botas del Canalizador de viento","=q3=Capa oscura","=q3=Capa enigmática","=q3=Capa ígnea","=q3=Capa gélida","=q3=Capa viviente","=q2=Etiqueta de identificación de prisionero de El Etereum","=q3=Banda oscura","=q3=Banda enigmática","=q3=Banda ígnea","=q3=Banda frígida","=q3=Banda viviente"})
process("ScourgeInvasionEvent1",14,{"=q3=Estandarte de El Alba Argenta","=q3=Tomo argento","=q3=Cuerno de guerra Argenta","=q2=Aceite de zahorí bendito","=q2=Piedra de afilar consagrada","=q1=Tabardo de El Alba Argenta","=q1=Poción de sanación Argenta","=q1=Poción de maná Argenta","=q2=Runa necrótica","=q1=Recuerdo embrujado","","=q4=Distintivo de justicia","=q4=Destripadora de arcanita","=q3=Murciabadejo vampírico"})
process("ScourgeInvasionEvent2",20,{"","=q4=Manto de limpieza de no-muertos bendito","=q4=Toga de limpieza de no-muertos bendita","=q4=Guantes de limpieza de no-muertos benditos","=q4=Calzas de limpieza de no-muertos benditas","","=q4=Hombreras de matanza de no-muertos benditas","=q4=Túnica de matanza de no-muertos bendita","=q4=Mandiletes de matanza de no-muertos benditos","=q4=Leotardos de matanza de no-muertos benditos","","=q4=Espaldares de matanza de no-muertos benditos","=q4=Camisote de matanza de no-muertos bendito","=q4=Manoplas de matanza de no-muertos benditas","=q4=Grebas de matanza de no-muertos benditas","","=q4=Bufas de matanza de no-muertos benditas","=q4=Coraza de matanza de no-muertos bendita","=q4=Guanteletes de matanza de no-muertos benditos","=q4=Quijotes de matanza de no-muertos benditos"})
process("ScourgeInvasionEvent3",22,{"","=q3=Pretina de Balzaphon","=q3=Cadenas del Exánime","=q3=Bastón de Balzaphon","","=q3=Muslo de Bosque Negro","=q3=Hoja de Lord Bosque Negro","=q3=Rodela de Lord Bosque Negro","","=q3=Capa de Revanchion","=q3=Brazales de alivio","=q3=La garra de las Sombras","","=q3=La garra helada","=q3=Gargantilla helada de Desdén","=q3=Daga focal de Desdén","","=q3=Leotardos de piel de abominación","=q3=El hacha de extirpación","","=q3=Manto de Lady Falther'ess","=q3=Dedo de Lady Falther'ess"})
process("Shartuul",22,{"=q4=Sello de corruptor","=q4=Brazales de paño mermados","=q4=Guanteletes de malla mermados","=q3=Capa mermada","=q3=Anillo mermado","=q3=Insignia mermada","=q3=Daga mermada","=q3=Espada mermada","=q3=Hacha de dos manos mermada","=q3=Maza mermada","=q3=Bastón mermado","=q4=Anillo del sobrestante","=q4=Brazales de tejido de cristal","=q4=Manoplas de pellejo de cristal","=q3=Manteo de tejido de cristal","=q3=Sortija de onirocristal","=q3=Insignia de Tenacidad","=q3=Chafarote imbuido de cristal","=q3=Espada de cristal forjado","=q3=Cuchilla de ápices","=q3=Maza de cristal de ápices","=q3=Bastón de cuarzo llameante"})
process("SkettisHazziksPackage",1,{"=q1=Paquete de Hazzik"})
process("SkettisTalonpriestIshaal",1,{"=q1=Anuario de Ishaal"})
process("Templars",20,{"","=q3=Estilete con punta de cristal","=q2=Manijas de paño abisal","=q2=Escarpes de malla abisal","=q2=Blasón abisal","","=q3=Bastón de guerra amatista","=q2=Zapatillas de paño abisal","=q2=Guanteletes de placas abisales","=q2=Blasón abisal","","=q3=Guja Cortapiedras","=q2=Botas de cuero abisal","=q2=Manoplas de malla abisal","=q2=Blasón abisal","","=q3=Arco tiro profundo","=q2=Guantes de cuero abisal","=q2=Grebas de placas abisales","=q2=Blasón abisal"})
process("Terokk",11,{"=q4=Poderío de Terokk","=q4=Sabiduría de Terokk","=q3=Leotardos del Canalizador de viento","=q3=Leotardos de acechador celeste","=q3=Pantalones sayobruma","=q3=Leotardos de aceropizarra","=q3=Don de los sacerdotes de la garra","=q3=Broche del Rey inmortal","=q3=Figurilla tiempo perdido","=q3=Mazo de Terokk","=q3=Mazo de Terokk"})
process("VakkiztheWindrager",11,{"=q3=Espirales del Furibundo del Viento","=q2=Escama de Vakkiz","=q3=Ataduras del Canalizador de viento","=q3=Ceñidor del Canalizador de viento","=q3=Brazales de acechador celeste","=q3=Cordón de acechador celeste","=q3=Brazales sayobruma","=q3=Cinturón sayobruma","=q3=Brazales de aceropizarra","=q3=Faja de aceropizarra","=q3=Sortija de Skettis"})
process("Valentineday",20,{"=q3=Cesta de merienda romántica","=q1=Prueba de amor","=q1=Rosa preciosa","=q1=Puñado de pétalos de rosa","=q1=Flecha con astil de plata","=q1=Flecha con astil de veraplata","=q1=Bolsa de caramelos","=q1=Caja de bombones","=q1=Caja de vestido precioso","=q1=Caja de traje de noche","=q1=Cohete del amor","=q1=Loco de amor","=q1=Colonia \"Bravura\"","=q1=Colonia \"INCONDICIONAL\"","=q1=Colonia \"Hechicería\"","=q1=Perfume \"VICTORIA\"","=q1=Perfume \"Para siempre\"","=q1=Perfume \"Encantadora\"","=q1=Prueba de amor","=q1=Pulsera de talismanes preciosos"})
process("Valentineday2",23,{"","=q1=Vestido negro precioso","=q1=Vestido rojo precioso","=q1=Vestido azul precioso","=q1=Vestido morado precioso","","=q1=Traje de cena rojo","=q1=Traje de cena azul","=q1=Traje de cena morado","","=q1=Deseo oscuro","=q1=Crema de frutos cremosa","=q1=Delicia de leche","=q1=Dulce sorpresa","","=q1=Corazón de caramelo","=q1=Corazón de caramelo","=q1=Corazón de caramelo","=q1=Corazón de caramelo","=q1=Corazón de caramelo","=q1=Corazón de caramelo","=q1=Corazón de caramelo","=q1=Corazón de caramelo"})
process("Valentineday3",10,{"=q4=Guiño de amor","=q4=Talismán de corazón roto","=q4=Fragmento de felicidad saltarina","=q4=Broche de perfume dulce","=q4=Gargantilla de corazón puro","=q3=Rosa eternamente preciosa","=q3=Máscara de fumigador vil","=q3=Desperdicio tóxico","=q3=El Rompecorazones","=q4=Gran cohete de amor"})
process("Winterviel1",29,{"=q2=Sombrero de invierno verde","=q2=Sombrero de invierno rojo","=q1=Disfraz completo del Festival de Invierno","=q1=Bola de nieve","=q1=Puñado de copos de nieve","=q1=Acebo fresco","=q1=Muérdago","","=q2=Patrón: botas de invierno","=q2=Patrón: ropa de invierno roja","=q2=Patrón: ropa de invierno verde","=q1=Receta: sidra de manzana caliente","=q1=Receta: ponche de huevo","=q1=Receta: galleta de jengibre","=q1=Caña de caramelo","=q1=Rueda de queso de vacaciones","=q1=Pastel de carne casero de Graccu","=q1=Ternera picante","=q1=Jamón festivo cubierto de miel","=q1=Cuenco de chocolate caliente","=q1=Té de jardín verde","=q1=Sidra de manzana con gas","=q1=Licor de fiestas","=q1=Licor burbujeante de Bonvapor","=q1=Cerveza del Padre Invierno","=q1=Especias de vacaciones","=q1=Papel para envolver con lazo azul","=q1=Papel para envolver con lazos verdes","=q1=Papel de envolver con lazos morados"})
process("Winterviel2",25,{"","=q1=Caja de ayudante verde","=q1=Campanita alegre","=q1=Caja de ayudante roja","=q1=Equipo de muñeco de nieve","","=q1=Varita de felicidad del recreo","","=q3=Robot cohete de cuerda","","=q1=Asado del Festival de Invierno","=q1=Ponche de huevo del Festival de Invierno","","=q2=Grinch mecánico","=q2=Acebo en conserva","=q2=Diseño: Filo del invierno","=q2=Fórmula: encantar arma: poderío del invierno","=q2=Esquema: Señor de las nieves 9000","=q2=Patrón: guantes del Padre Invierno","=q1=Receta: elixir de poder de Escarcha","=q1=Patrón: camisa de vacaciones verde","","=q1=Galleta de Festival de Invierno","","=q1=Pastel de macedonia y carne de Graccu"})
process("WrathbringerLaztarash",12,{"=q3=Esfera forjada con maná","=q3=Capa oscura","=q3=Capa enigmática","=q3=Capa ígnea","=q3=Capa gélida","=q3=Capa viviente","=q2=Etiqueta de identificación de prisionero de El Etereum","=q3=Banda oscura","=q3=Banda enigmática","=q3=Banda ígnea","=q3=Banda frígida","=q3=Banda viviente"})
elseif locale == "zhCN" then
process("ArgentTournament1",13,{"","=q2=Darnassus Commendation Badge","=q2=Exodar Commendation Badge","=q2=Gnomeregan Commendation Badge","=q2=Ironforge Commendation Badge","=q2=Stormwind Commendation Badge","=q1=Champion's Writ","","=q2=Orgrimmar Commendation Badge","=q2=Undercity Commendation Badge","=q2=Thunder Bluff Commendation Badge","=q2=Sen'jin Commendation Badge","=q2=Silvermoon Commendation Badge"})
process("ArgentTournament2",28,{"","=q1=Darnassus Banner","=q1=Exodar Banner","=q1=Gnomeregan Banner","=q1=Ironforge Banner","=q1=Stormwind Banner","=q1=Darnassus Tabard","=q1=Exodar Tabard","=q1=Gnomeregan Tabard","=q1=Ironforge Tabard","=q1=Stormwind Tabard","=q1=Silver Covenant Tabard","=q1=Champion's Seal","","=q1=Orgrimmar Banner","=q1=Undercity Banner","=q1=Thunder Bluff Banner","=q1=Sen'jin Banner","=q1=Silvermoon City Banner","=q1=Orgrimmar Tabard","=q1=Undercity Tabard","=q1=Thunder Bluff Tabard","=q1=Sen'jin Tabard","=q1=Silvermoon City Tabard","=q1=Sunreaver Tabard","","=q1=Argent Crusader's Banner","=q3=Argent Crusader's Tabard"})
process("ArgentTournament3",29,{"","=q3=Sash of Shattering Hearts","=q3=Wrap of the Everliving Tree","=q3=Treads of Nimble Evasion","=q3=Cinch of Bonded Servitude","=q3=Treads of the Glorious Spirit","=q3=Gauntlets of Shattered Pride","=q3=Girdle of Valorous Defeat","=q3=Stanchions of Unseatable Furor","=q3=Susurrating Shell Necklace","=q3=Choker of Spiral Focus","=q3=Necklace of Valiant Blood","=q3=Pendant of Azure Dreams","=q3=Jouster's Fury","=q1=Champion's Seal","","=q3=Sash of Trumpted Pride","=q3=Waistguard of Equine Fury","=q3=Treads of the Earnest Squire","=q3=Links of Unquenched Savagery","=q3=Treads of Whispering Dreams","=q3=Gauntlets of Mending Touch","=q3=Clinch of Savage Fury","=q3=Blood-Caked Stompers","=q3=Choker of Feral Fury","=q3=Necklace of Stolen Skulls","=q3=Pendant of Emerald Crusader","=q3=Razor's Edge Pendant","=q3=Jouster's Fury"})
process("ArgentTournament4",19,{"","=q4=Dagger of Lunar Purity","=q4=Dagger of the Rising Moon","=q4=Gnomeregan Bonechopper","=q4=Claymore of the Prophet","=q4=Teldrassil Protector","=q4=Ironforge Smasher","=q4=Silvery Sylvan Stave","=q4=Blunderbuss of Khaz Modan","=q1=Champion's Seal","","=q4=Scalpel of the Royal Apothecary","=q4=Spinal Destroyer","=q4=Blade of the Keening Banshee","=q4=Greatsword of the Sin'dorei","=q4=Axe of the Sen'jin Protector","=q4=Grimhorn Crusher","=q4=Staff of Feral Furies","=q4=Sen'jin Beakblade Longrifle"})
process("ArgentTournament5",19,{"","=q3=Argent Squire","=q3=Ammen Vale Lashling","=q3=Teldrassil Sproutling","=q3=Dun Morogh Cub","=q3=Elwynn Lamb","=q3=Mechanopeep","=q3=Shimmering Wyrmling","","=q3=Argent Pony Bridle","=q1=Champion's Seal","","=q3=Argent Gruntling","=q3=Mulgore Hatchling","=q3=Sen'jin Fetish","=q3=Tirisfal Batling","=q3=Durotar Scorpion","=q3=Enchanted Broom","=q3=Shimmering Wyrmling"})
process("ArgentTournament6",23,{"","=q4=Swift Darnassian Mistsaber","=q4=Great Azuremyst Elekk","=q4=Turbostrider","=q4=Swift Ironforge Ram","=q4=Swift Elwynn Steed","=q4=Great Red Elekk","=q4=Swift Gray Steed","=q4=Swift Moonsaber","=q4=Swift Violet Ram","=q4=Turbostrider","=q1=Champion's Seal","","=q4=Swift Darkspear Raptor","=q4=Swift Forsaken Warhorse","=q4=Swift Orgrimmar Wolf","=q4=Swift Silvermoon Hawkstrider","=q4=Great Mulgore Kodo","=q4=Great Golden Kodo","=q4=Swift Burgundy Wolf","=q4=Swift Purple Raptor","=q4=Swift Red Hawkstrider","=q4=White Skeletal Warhorse"})
process("ArgentTournament7",11,{"","=q4=Quel'dorei Steed","=q4=Silver Covenant Hippogryph","","=q4=Argent Charger","=q4=Argent Warhorse","=q4=Argent Hippogryph","=q1=Champion's Seal","","=q4=Sunreaver Hawkstrider","=q4=Sunreaver Dragonhawk"})
process("ArgentTournament8",23,{"=q7=褴褛的鬼雾衬肩","=q7=漂亮的铁羽护肩","=q7=褪色的迅影肩甲","=q7=勇士的赫洛德护肩","=q7=神秘的元素护肩","=q7=擦亮的勇气肩甲","=q7=敏锐的比斯巨兽之眼","=q7=迅捷的正义之手","=q1=Champion's Seal","=q7=Tattered Dreadmist Robe","=q7=Preened Ironfeather Breastplate","=q7=Stained Shadowcraft Tunic","=q7=Champion's Deathdealer Breastplate","=q7=Mystical Vest of Elements","=q7=Polished Breastplate of Valor","=q7=平衡的觅心者","=q7=破旧的雷德神圣控诉者","=q7=染血的奥金斧","=q7=虔诚的光环石锤","=q7=Venerable Mass of McGowan","=q7=Repurposed Lava Dredger","=q7=高贵的院长之杖","=q7=精致的上古骨弓"})
process("ArmbreakerHuffaz",12,{"=q3=复仇军指环","=q3=暗色披风","=q3=神秘披风","=q3=炽热披风","=q3=寒冷披风","=q3=生机披风","=q2=复仇军囚犯标识牌","=q3=黑暗指环","=q3=神秘指环","=q3=炽热指环","=q3=寒冷指环","=q3=生机指环"})
process("BashirLanding",24,{"","=q1=不稳定的长者合剂","=q1=不稳定的医师合剂","=q1=不稳定的强盗合剂","=q1=不稳定的士兵合剂","","=q3=不稳定的紫水晶","=q3=不稳定的黄水晶","=q3=不稳定的翠榄石","=q3=不稳定的蓝宝石","=q3=不稳定的水玉","=q3=不稳定的黄晶玉","","=q3=魔能波动钻石","=q3=高能波动钻石","=q1=加速模组","=q1=小型黄金变形晶球","=q1=小型白银变形晶球","=q1=小型青铜变形晶球","=q1=小型铁质变形晶球","=q1=大型黄金变形晶球","=q1=大型白银变形晶球","=q1=大型青铜变形晶球","=q1=大型铁质变形晶球"})
process("BashirStasisChambers",15,{"","=q3=恶魔壁垒","=q2=节点之王的印记","","=q3=岩钢护肩","=q2=节点之王的印记","","=q3=尘雾护肩","=q2=节点之王的印记","","=q3=导风者衬肩","=q2=节点之王的印记","","=q3=天行者护肩","=q2=节点之王的印记"})
process("Brewfest1",19,{"=q1=贝尔比的电眼浪漫护目镜","=q1=Blix's Eyesight Enhancing Romance Goggles","=q1=蓝色美酒帽","=q1=棕色美酒帽","=q1=绿色美酒帽","=q1=紫色美酒帽","=q1=美酒节长裙","=q1=美酒节徽记","=q1=美酒节长靴","=q1=美酒节便鞋","=q3=美酒节小酒桶","=q3=Pint-Sized Pink Elekk","=q3=鹿角小飞兔的酒杯","=q1=“本月美酒”俱乐部会员申请表","=q2=储藏起来的美酒节蛇麻草","=q1=新鲜的美酒节蛇麻草","=q1=新鲜的矮人美酒节蛇麻草","=q1=新鲜的地精美酒节蛇麻草","=q2=美酒节奖币"})
process("Brewfest2",15,{"=q3=Green Brewfest Stein","=q3=[PH] Brewfest Empty Festive Stein 2008","=q3=黄色美酒节酒杯","=q3=黑铁大酒杯","=q3=美酒节赛羊","=q1=美酒节佳酿","=q1=晒干的香肠","=q1=咸香肠","=q1=石盐椒饼","=q1=薄荷腊肠","=q1=Spiced Onion Cheese","=q1=烟熏辣肠","=q1=多汁香肠","=q1=美酒节饼干","=q1=金链"})
process("Brewfest3",20,{"","=q1=清醇麦酒","=q1=光明麦酒","=q1=黑暗麦酒","","=q1=雷酒45年陈酿","=q1=麦芽雷酒","=q1=烈性雷酒","","=q1=戈多克烈酒","=q1=赛马酒","=q1=食人魔蜜酒","","=q1=碎步酒","=q1=长路酒","=q1=美酒之路","","=q1=丛林之河","=q1=魔酒","=q1=昏头烈酒"})
process("BrewoftheMonthClub",12,{"=q1=Wild Winter Pilsner","=q1=Izzard's Ever Flavor","=q1=Aromatic Honey Brew","=q1=Metok's Bubble Bock","=q1=Springtime Stout","=q1=Blackrock Lager","=q1=Stranglethorn Brew","=q1=Draenic Pale Ale","=q1=Binary Brew","=q1=Autumnal Acorn Ale","=q1=Bartlett's Bitter Brew","=q1=Lord of Frost's Private Label"})
process("ChildrensWeek",12,{"","=q1=小猪项圈","=q1=老鼠笼","=q1=乌龟盒","=q1=坏老头的贿赂","","=q3=蛋蛋的蛋","=q3=小象项圈","=q3=贪睡的威利","","=q3=Curious Oracle Hatchling","=q3=Curious Wolvar Pup"})
process("CorenDirebrew",12,{"=q4=Ancient Pickled Egg","=q4=Bubbling Brightbrew Charm","=q4=Bitter Balebrew Charm","=q4=Brawler's Souvenir","=q4=Coren's Chromium Coaster","=q4=Mithril Pocketwatch","=q4=Direbrew's Shanker 2.0","=q4=Tankard O' Terror","=q4=大型美酒节科多兽","=q4=迅捷美酒节赛羊","=q3=烈酒的遥控器","=q1=科林的烈酒"})
process("Darkmoon1",16,{"=q4=暗月护符","=q4=暗月宝珠","=q2=高级暗月奖品","=q2=中级暗月奖品","=q2=初级暗月奖品","=q1=暗月储物箱","=q1=去年的羊肉","=q1=结构图:蒸汽车控制器","=q1=上个月的羊肉","=q1=暗月花束","=q1=暗月马戏团奖券","=q3=暗月戒指","=q2=暗月项链","=q1=树蛙盒","=q1=林蛙盒","=q1=加布林的小窝"})
process("Darkmoon2",15,{"=q2=盗贼套牌","=q2=暗月长袍","=q2=暗月外衣","=q2=暗月锁甲","=q3=长剑套牌","=q3=暗布护肩","=q3=遮蔽肩垫","=q3=碧蓝肩甲","=q3=法师套牌","=q3=暗月项链","=q3=暗月坠饰","=q3=恶魔套牌","=q3=暗月匕首","=q3=暗月利斧","=q3=暗月法杖"})
process("Darkmoon3",16,{"=q4=野兽套牌","=q4=暗月卡片:蓝龙","=q4=元素套牌","=q4=暗月卡片:漩涡","=q4=入口套牌","=q4=暗月卡片:虚空","=q4=督军套牌","=q4=暗月卡片:英雄","=q4=祝福套牌","=q4=暗月卡片:远征","=q4=报复套牌","=q4=暗月卡片:复仇","=q4=愚人套牌","=q4=暗月卡片:疯狂","=q4=风暴套牌","=q4=暗月卡片:怒火"})
process("Darkmoon4",11,{"=q4=混乱套牌","=q4=暗月卡片:狂暴!","=q4=棱镜套牌","=q4=Darkmoon Card: Illusion","=q4=死灵套牌","=q4=暗月卡片:死亡","=q4=高尚套牌","=q4=暗月卡片:伟大","=q4=暗月卡片:伟大","=q4=暗月卡片:伟大","=q4=暗月卡片:伟大"})
process("DarkscreecherAkkarai",11,{"=q3=异端护手","=q2=阿克卡莱之爪","=q3=导风者护腕","=q3=导风者腰带","=q3=天行者护腕","=q3=天行者束带","=q3=尘雾护腕","=q3=尘雾腰带","=q3=岩钢护腕","=q3=岩钢束带","=q3=斯克提斯指环"})
process("DayoftheDead",8,{"=q1=Macabre Marionette","=q1=Whimsical Skull Mask","=q1=Bouquet of Orange Marigolds","=q1=Candy Skull","=q1=Spirit Candle","=q1=Orange Marigold","=q1=Recipe: Bread of the Dead","=q1=Bread of the Dead"})
process("Dukes",21,{"","=q3=深渊皮甲护腿","=q3=硬化钢质战锤","=q3=深渊徽记","=q2=深渊布质腰带","=q1=灰烬公爵的残渣","","=q3=深渊锁甲护腿","=q3=黑石双刃刀","=q3=深渊徽记","=q2=深渊皮甲腰带","","=q3=深渊布质短裤","=q3=灵魂补偿者","=q3=深渊徽记","=q2=深渊板甲束带","","=q3=深渊板甲护腿","=q3=闪耀水晶魔杖","=q3=深渊徽记","=q2=深渊锁甲腰带"})
process("ElementalInvasion",18,{"","=q3=火焰男爵查尔的节杖","=q3=元素之一","=q2=元素灰烬","","=q3=泰比斯蒂亚的寒冰项链","=q3=元素之一","=q3=图样:雷暴手套","=q2=寒冷戒指","","=q3=阿瓦兰奇奥的石皮","=q3=元素之一","=q2=硬石指环","","=q3=烈风掠夺者腰带","=q3=元素之一","=q3=图样:雷暴手套","=q2=微风斗篷"})
process("FelTinkererZortan",12,{"=q3=尘雾长靴","=q3=暗色披风","=q3=神秘披风","=q3=炽热披风","=q3=寒冷披风","=q3=生机披风","=q2=复仇军囚犯标识牌","=q3=黑暗指环","=q3=神秘指环","=q3=炽热指环","=q3=寒冷指环","=q3=生机指环"})
process("FishingExtravaganza",12,{"","=q3=奥金钓鱼竿","=q3=钓鱼大师鱼钩","","=q2=基佛天使鱼","=q2=布隆奈尔蓝斑鱼","=q2=迪森皇后鱼","=q2=石皮大鱼","","=q2=幸运渔帽","=q2=纳特·帕格的超级钓鱼靴","=q2=高强度恒金渔线"})
process("Forgosh",12,{"=q3=天行者长靴","=q3=暗色披风","=q3=神秘披风","=q3=炽热披风","=q3=寒冷披风","=q3=生机披风","=q2=复仇军囚犯标识牌","=q3=黑暗指环","=q3=神秘指环","=q3=炽热指环","=q3=寒冷指环","=q3=生机指环"})
process("GezzaraktheHuntress",11,{"=q3=吉萨拉克之牙","=q2=吉萨拉克之爪","=q3=导风者护腕","=q3=导风者腰带","=q3=天行者护腕","=q3=天行者束带","=q3=尘雾护腕","=q3=尘雾腰带","=q3=岩钢护腕","=q3=岩钢束带","=q3=斯克提斯指环"})
process("Gulbor",12,{"=q3=复仇军饰环","=q3=暗色披风","=q3=神秘披风","=q3=炽热披风","=q3=寒冷披风","=q3=生机披风","=q2=复仇军囚犯标识牌","=q3=黑暗指环","=q3=神秘指环","=q3=炽热指环","=q3=寒冷指环","=q3=生机指环"})
process("GurubashiArena",6,{"=q3=竞技场护臂","=q3=竞技场护腕","=q3=竞技场腕轮","=q3=竞技场臂甲","=q2=竞技场高手饰物","=q3=竞技场大师饰物"})
process("Halloween1",26,{"=q3=南瓜灯","=q2=南瓜袋","=q2=摇摇晃晃的魔法扫帚","=q1=斯泰林的乳酸棒棒糖","=q1=月溪节日糖","=q1=蓓拉的夹心巧克力","=q1=万圣节南瓜糖","","=q1=Chewy Fel Taffy","=q1=G.N.E.R.D.S.","=q1=Pyroblast Cinnamon Ball","=q1=Soothing Spearmint Candy","","=q3=万圣节头盔","=q3=邪恶的南瓜娃娃","=q1=万圣节魔棒 - 蝙蝠","=q1=万圣节魔棒 - 幽灵","=q1=万圣节魔棒 - 麻风侏儒","=q1=万圣节魔棒 - 忍者","=q1=万圣节魔棒 - 海盗","=q1=万圣节魔棒 - 随机","=q1=万圣节魔棒 - 骷髅","=q1=万圣节魔棒 - 小精灵","=q1=糖球","=q1=棒棒糖","=q1=糖块"})
process("Halloween2",21,{"","=q1=劣质男性德莱尼面具","=q1=劣质男性矮人面具","=q1=劣质男性侏儒面具","=q1=劣质男性人类面具","=q1=劣质男性暗夜精灵面具","=q1=劣质男性血精灵面具","=q1=劣质男性兽人面具","=q1=劣质男性牛头人面具","=q1=劣质男性巨魔面具","=q1=劣质男性亡灵面具","=q1=劣质女性德莱尼面具","=q1=劣质女性矮人面具","=q1=劣质女性侏儒面具","=q1=劣质女性人类面具","=q1=劣质女性暗夜精灵面具","=q1=劣质女性血精灵面具","=q1=劣质女性兽人面具","=q1=劣质女性牛头人面具","=q1=劣质女性巨魔面具","=q1=劣质女性亡灵面具"})
process("HarvestFestival",7,{"=q1=收获节的奖励","=q1=为圣光而战!","=q1=部落的地狱咆哮","=q1=收获节猪肉","=q1=收获节鱼肉","=q1=收获节水果","=q1=收获节蜜酒"})
process("HeadlessHorseman",11,{"=q4=The Horseman's Horrific Helm","=q4=Ring of Ghoulish Glee","=q4=The Horseman's Seal","=q4=Wicked Witch's Band","=q4=The Horseman's Baleful Blade","=q1=沉重的南瓜灯","=q1=奶糖","=q4=无头骑士的缰绳","=q3=魔法扫帚","=q3=万圣节头盔","=q3=邪恶的南瓜娃娃"})
process("HighCouncil",20,{"","=q4=元素聚焦指环","=q4=深渊节杖","=q3=深渊皮甲护腕","=q3=深渊锁甲护肩","","=q4=波峰项链","=q4=深渊节杖","=q3=深渊锁甲护臂","=q3=深渊板甲护肩","","=q4=风矛斗篷","=q4=深渊节杖","=q3=深渊布质护腕","=q3=深渊皮甲护肩","","=q4=土灵护卫者","=q4=深渊节杖","=q3=深渊布质肩饰","=q3=深渊板甲护臂"})
process("Karrog",11,{"=q3=卡尔洛格的碎片","=q2=卡尔洛格之脊","=q3=导风者护腕","=q3=导风者腰带","=q3=天行者护腕","=q3=天行者束带","=q3=尘雾护腕","=q3=尘雾腰带","=q3=岩钢护腕","=q3=岩钢束带","=q3=斯克提斯指环"})
process("LordAhune",12,{"=q4=Cloak of the Frigid Winds","=q4=Icebound Cloak","=q4=Shroud of Winter's Chill","=q4=The Frost Lord's Battle Shroud","=q4=The Frost Lord's War Cloak","=q3=公式:附魔武器 - 死亡霜冻","=q1=埃霍恩的碎片","=q3=夏日天空战袍","=q3=夏日烈焰战袍","=q3=Satchel of Chilled Goods","=q4=Frostscythe of Lord Ahune","=q3=Ice Chip"})
process("LunarFestival1",24,{"=q2=艾露恩的灯笼","=q1=绿色节庆长裙","=q1=粉色节庆长裙","=q1=紫色节庆长裙","=q1=黑色节庆裤装","=q1=蓝色节庆裤装","=q1=青色节庆裤装","=q1=春节饺子","=q1=艾露恩的蜡烛","=q1=先祖硬币","","=q1=小型蓝色烟花","=q1=小型绿色烟花","=q1=小型红色烟花","=q1=小型白色烟花","=q1=小型黄色烟花","=q1=大型蓝色烟花","=q1=大型绿色烟花","=q1=大型红色烟花","=q1=大型白色烟花","=q1=大型黄色烟花","","=q1=幸运烟花束","=q1=长者的月亮石"})
process("LunarFestival2",20,{"=q2=结构图:烟花发射器","","=q2=结构图:小型蓝色烟花","=q2=结构图:小型绿色烟花","=q2=结构图:小型红色烟花","","=q2=结构图:大型蓝色烟花","=q2=结构图:大型绿色烟花","=q2=结构图:大型红色烟花","=q2=图样:节庆长裙","=q2=结构图:烟花束发射器","","=q2=结构图:蓝色烟花束","=q2=结构图:绿色烟花束","=q2=结构图:红色烟花束","","=q2=结构图:大型蓝色烟花束","=q2=结构图:大型绿色烟花束","=q2=结构图:大型红色烟花束","=q2=图样:节庆裤装"})
process("MalevustheMad",12,{"=q3=岩钢战靴","=q3=暗色披风","=q3=神秘披风","=q3=炽热披风","=q3=寒冷披风","=q3=生机披风","=q2=复仇军囚犯标识牌","=q3=黑暗指环","=q3=神秘指环","=q3=炽热指环","=q3=寒冷指环","=q3=生机指环"})
process("MidsummerFestival",16,{"=q3=火焰舞娘","=q3=被捕获的火焰","=q2=灰烬护腕","=q1=节日火酒","=q1=蜜饯馅饼","=q1=火烤甜面包","=q1=仲夏腊肠","=q1=牛皮糖","=q1=夏日花瓣","=q1=Bag of Smorc Ingredients","=q1=Juggling Torch","=q1=燃烧之花","=q1=火焰节之冠","=q1=火焰节衬肩","=q1=夏日外衣","=q1=夏日拖鞋"})
process("Noblegarden",12,{"=q3=Tome of Polymorph: Rabbit","=q3=Spring Rabbit's Foot","=q1=Spring Circlet","=q1=端庄的裙子","=q1=Spring Robes","=q1=Spring Flowers","=q1=白色礼服衬衣","=q1=黑色礼服短裤","=q1=Blossoming Branch","=q1=Noblegarden Egg","=q1=Egg Basket","=q1=Noblegarden Chocolate"})
process("PilgrimsBounty_A",20,{"=q2=Bountiful Cookbook","=q1=Recipe: Spice Bread Stuffing","=q1=Recipe: Pumpkin Pie","=q1=Recipe: Cranberry Chutney","=q1=Recipe: Candied Sweet Potato","=q1=Recipe: Slow-Roasted Turkey","=q1=Bountiful Basket","=q1=Teldrassil Sweet Potato","=q1=Tangy Wetland Cranberries","=q1=Ripe Elwynn Pumpkin","=q1=Autumnal Herbs","=q1=Honey","=q3=Turkey Cage","=q1=Pilgrim's Hat","=q1=Pilgrim's Attire","=q1=Pilgrim's Dress","=q1=Pilgrim's Robe","=q1=Pilgrim's Boots","=q1=Turkey Caller","=q1=Turkey Shooter"})
process("PilgrimsBounty_H",20,{"=q2=Bountiful Cookbook","=q1=Recipe: Spice Bread Stuffing","=q1=Recipe: Pumpkin Pie","=q1=Recipe: Cranberry Chutney","=q1=Recipe: Candied Sweet Potato","=q1=Recipe: Slow-Roasted Turkey","=q1=Bountiful Basket","=q1=Mulgore Sweet Potato","=q1=Tangy Southfury Cranberries","=q1=Ripe Tirisfal Pumpkin","=q1=Autumnal Herbs","=q1=Honey","=q3=Turkey Cage","=q1=Pilgrim's Hat","=q1=Pilgrim's Attire","=q1=Pilgrim's Dress","=q1=Pilgrim's Robe","=q1=Pilgrim's Boots","=q1=Turkey Caller","=q1=Turkey Shooter"})
process("PorfustheGemGorger",12,{"=q3=导风者长靴","=q3=暗色披风","=q3=神秘披风","=q3=炽热披风","=q3=寒冷披风","=q3=生机披风","=q2=复仇军囚犯标识牌","=q3=黑暗指环","=q3=神秘指环","=q3=炽热指环","=q3=寒冷指环","=q3=生机指环"})
process("ScourgeInvasionEvent1",14,{"=q3=银色黎明战旗","=q3=银色宝典","=q3=银色战斗号角","=q2=神圣巫师之油","=q2=神圣磨刀石","=q1=银色黎明战袍","=q1=银色治疗药水","=q1=银色法力药水","=q2=死灵符文","=q1=闹鬼的纪念品","","=q4=公正徽章","=q4=奥金利斧","=q3=吸血蝙蝠宝宝"})
process("ScourgeInvasionEvent2",20,{"","=q4=神圣的亡灵毁灭衬肩","=q4=神圣的亡灵毁灭长袍","=q4=神圣的亡灵毁灭裹手","=q4=神圣的亡灵毁灭长裤","","=q4=神圣的亡灵毁灭肩垫","=q4=神圣的亡灵毁灭外套","=q4=神圣的亡灵毁灭手套","=q4=神圣的亡灵毁灭护腿","","=q4=神圣的亡灵毁灭肩甲","=q4=神圣的亡灵毁灭锁甲","=q4=神圣的亡灵毁灭手甲","=q4=神圣的亡灵毁灭胫甲","","=q4=神圣的亡灵毁灭肩铠","=q4=神圣的亡灵毁灭胸铠","=q4=神圣的亡灵毁灭护手","=q4=神圣的亡灵毁灭腿铠"})
process("ScourgeInvasionEvent3",22,{"","=q3=巴尔萨冯的腰带","=q3=巫妖之链","=q3=巴尔萨冯的法杖","","=q3=布莱克伍德的腿骨","=q3=布莱克伍德公爵之刃","=q3=布莱克伍德公爵之盾","","=q3=报复披风","=q3=治愈护腕","=q3=暗影之握","","=q3=冰霜之握","=q3=瑟克恩的寒冰项圈","=q3=瑟克恩的聚焦匕首","","=q3=憎恶皮护腿","=q3=斩首利斧","","=q3=法瑟蕾丝夫人的衬肩","=q3=法瑟蕾丝夫人的手指"})
process("Shartuul",22,{"=q4=腐蚀者的徽记","=q4=能量枯竭的布质护腕","=q4=能量枯竭的锁甲手套","=q3=能量枯竭的披风","=q3=能量枯竭的戒指","=q3=能量枯竭的徽章","=q3=能量枯竭的匕首","=q3=能量枯竭的剑","=q3=能量枯竭的双手斧","=q3=能量枯竭的钉锤","=q3=能量枯竭的法杖","=q4=监工之戒","=q4=晶纹护腕","=q4=晶壳护手","=q3=晶纹披风","=q3=梦境水晶指环","=q3=坚韧徽章","=q3=水晶能量匕首","=q3=晶铸之剑","=q3=埃匹希斯切割者","=q3=埃匹希斯水晶锤","=q3=烈焰石英法杖"})
process("SkettisHazziksPackage",1,{"=q1=哈吉克的包裹"})
process("SkettisTalonpriestIshaal",1,{"=q1=伊沙尔的历书"})
process("Templars",20,{"","=q3=水晶镶饰短剑","=q2=深渊布质裹手","=q2=深渊锁甲马靴","=q2=深渊纹章","","=q3=紫水晶作战法杖","=q2=深渊布质便鞋","=q2=深渊板甲护手","=q2=深渊纹章","","=q3=削石之刃","=q2=深渊皮甲长靴","=q2=深渊锁甲护手","=q2=深渊纹章","","=q3=深击之弓","=q2=深渊皮甲手套","=q2=深渊板甲护胫","=q2=深渊纹章"})
process("Terokk",11,{"=q4=泰罗克的力量","=q4=泰罗克的智慧","=q3=导风者护腿","=q3=天行者护腿","=q3=尘雾短裤","=q3=岩钢护腿","=q3=利爪祭司的礼物","=q3=不朽之王的胸针","=q3=迷失雕像","=q3=泰罗克之锤","=q3=泰罗克之锤"})
process("VakkiztheWindrager",11,{"=q3=风怒者的护腕","=q2=Vakkiz's Scale","=q3=导风者护腕","=q3=导风者腰带","=q3=天行者护腕","=q3=天行者束带","=q3=尘雾护腕","=q3=尘雾腰带","=q3=岩钢护腕","=q3=岩钢束带","=q3=斯克提斯指环"})
process("Valentineday",20,{"=q3=浪漫午餐篮","=q1=Love Token","=q1=Lovely Rose","=q1=一堆玫瑰花瓣","=q1=银色箭头","=q1=真银箭头","=q1=一袋糖果","=q1=Box of Chocolates","=q1=Lovely Dress Box","=q1=Dinner Suit Box","=q1=爱心火箭","=q1=爱情娃娃","=q1=\"Bravado\" Cologne","=q1=\"STALWART\" Cologne","=q1=\"Wizardry\" Cologne","=q1=\"VICTORY\" Perfume","=q1=\"Forever\" Perfume","=q1=\"Enchantress\" Perfume","=q1=Love Token","=q1=Lovely Charm Bracelet"})
process("Valentineday2",23,{"","=q1=可爱的黑裙子","=q1=可爱的红裙子","=q1=可爱的蓝裙子","=q1=可爱的紫裙子","","=q1=红色宴会服","=q1=蓝色宴会服","=q1=紫色宴会服","","=q1=黑色欲望","=q1=水果芬芳","=q1=快乐奶油","=q1=甜蜜惊喜","","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy"})
process("Valentineday3",10,{"=q4=Winking Eye of Love","=q4=Heartbreak Charm","=q4=Shard of Pirouetting Happiness","=q4=Sweet Perfume Broach","=q4=Choker of the Pure Heart","=q3=Forever-Lovely Rose","=q3=Vile Fumigator's Mask","=q3=Toxic Wasteling","=q3=The Heartbreaker","=q4=Big Love Rocket"})
process("Winterviel1",29,{"=q2=绿色冬帽","=q2=红色冬帽","=q1=冬幕伪装包","=q1=雪球","=q1=一捧雪花","=q1=新鲜的冬青树","=q1=槲寄生","","=q2=图样:寒冬长靴","=q2=图样:红色冬衣","=q2=图样:绿色冬衣","=q1=食谱:热苹果酒","=q1=食谱:蛋奶酒","=q1=食谱:小姜饼","=q1=糖棒","=q1=节日奶酪圈","=q1=格拉库的自制肉饼","=q1=香辣牛肉干","=q1=蜜烤节日火腿","=q1=混制豆酒","=q1=绿花茶","=q1=气泡苹果酒","=q1=节日美酒","=q1=热砂泡沫啤酒","=q1=冬天爷爷的麦酒","=q1=节日香料","=q1=蓝色条纹包装纸","=q1=绿色条纹包装纸","=q1=紫色条纹包装纸"})
process("Winterviel2",25,{"","=q1=绿色助手盒","=q1=圣诞铃铛","=q1=红色助手盒","=q1=雪孩子工具包","","=q1=节日魔杖","","=q3=发条战士","","=q1=冬幕节烤肉","=q1=冬幕节蛋奶酒","","=q2=机械格林奇","=q2=砍下来的圣诞树","=q2=设计图:寒冬之刃","=q2=公式:附魔武器 - 寒冬之力","=q2=结构图:雪王9000型","=q2=图样:冬天爷爷的手套","=q1=配方:冰霜之力药剂","=q1=图样:绿色节日衬衣","","=q1=冬幕节点心","","=q1=格拉库的肉松蛋糕"})
process("WrathbringerLaztarash",12,{"=q3=法力熔铸之球","=q3=暗色披风","=q3=神秘披风","=q3=炽热披风","=q3=寒冷披风","=q3=生机披风","=q2=复仇军囚犯标识牌","=q3=黑暗指环","=q3=神秘指环","=q3=炽热指环","=q3=寒冷指环","=q3=生机指环"})
elseif locale == "zhTW" then
process("ArgentTournament1",13,{"","=q2=Darnassus Commendation Badge","=q2=Exodar Commendation Badge","=q2=Gnomeregan Commendation Badge","=q2=Ironforge Commendation Badge","=q2=Stormwind Commendation Badge","=q1=Champion's Writ","","=q2=Orgrimmar Commendation Badge","=q2=Undercity Commendation Badge","=q2=Thunder Bluff Commendation Badge","=q2=Sen'jin Commendation Badge","=q2=Silvermoon Commendation Badge"})
process("ArgentTournament2",28,{"","=q1=Darnassus Banner","=q1=Exodar Banner","=q1=Gnomeregan Banner","=q1=Ironforge Banner","=q1=Stormwind Banner","=q1=Darnassus Tabard","=q1=Exodar Tabard","=q1=Gnomeregan Tabard","=q1=Ironforge Tabard","=q1=Stormwind Tabard","=q1=Silver Covenant Tabard","=q1=Champion's Seal","","=q1=Orgrimmar Banner","=q1=Undercity Banner","=q1=Thunder Bluff Banner","=q1=Sen'jin Banner","=q1=Silvermoon City Banner","=q1=Orgrimmar Tabard","=q1=Undercity Tabard","=q1=Thunder Bluff Tabard","=q1=Sen'jin Tabard","=q1=Silvermoon City Tabard","=q1=Sunreaver Tabard","","=q1=Argent Crusader's Banner","=q3=Argent Crusader's Tabard"})
process("ArgentTournament3",29,{"","=q3=Sash of Shattering Hearts","=q3=Wrap of the Everliving Tree","=q3=Treads of Nimble Evasion","=q3=Cinch of Bonded Servitude","=q3=Treads of the Glorious Spirit","=q3=Gauntlets of Shattered Pride","=q3=Girdle of Valorous Defeat","=q3=Stanchions of Unseatable Furor","=q3=Susurrating Shell Necklace","=q3=Choker of Spiral Focus","=q3=Necklace of Valiant Blood","=q3=Pendant of Azure Dreams","=q3=Jouster's Fury","=q1=Champion's Seal","","=q3=Sash of Trumpted Pride","=q3=Waistguard of Equine Fury","=q3=Treads of the Earnest Squire","=q3=Links of Unquenched Savagery","=q3=Treads of Whispering Dreams","=q3=Gauntlets of Mending Touch","=q3=Clinch of Savage Fury","=q3=Blood-Caked Stompers","=q3=Choker of Feral Fury","=q3=Necklace of Stolen Skulls","=q3=Pendant of Emerald Crusader","=q3=Razor's Edge Pendant","=q3=Jouster's Fury"})
process("ArgentTournament4",19,{"","=q4=Dagger of Lunar Purity","=q4=Dagger of the Rising Moon","=q4=Gnomeregan Bonechopper","=q4=Claymore of the Prophet","=q4=Teldrassil Protector","=q4=Ironforge Smasher","=q4=Silvery Sylvan Stave","=q4=Blunderbuss of Khaz Modan","=q1=Champion's Seal","","=q4=Scalpel of the Royal Apothecary","=q4=Spinal Destroyer","=q4=Blade of the Keening Banshee","=q4=Greatsword of the Sin'dorei","=q4=Axe of the Sen'jin Protector","=q4=Grimhorn Crusher","=q4=Staff of Feral Furies","=q4=Sen'jin Beakblade Longrifle"})
process("ArgentTournament5",19,{"","=q3=Argent Squire","=q3=Ammen Vale Lashling","=q3=Teldrassil Sproutling","=q3=Dun Morogh Cub","=q3=Elwynn Lamb","=q3=Mechanopeep","=q3=Shimmering Wyrmling","","=q3=Argent Pony Bridle","=q1=Champion's Seal","","=q3=Argent Gruntling","=q3=Mulgore Hatchling","=q3=Sen'jin Fetish","=q3=Tirisfal Batling","=q3=Durotar Scorpion","=q3=Enchanted Broom","=q3=Shimmering Wyrmling"})
process("ArgentTournament6",23,{"","=q4=Swift Darnassian Mistsaber","=q4=Great Azuremyst Elekk","=q4=Turbostrider","=q4=Swift Ironforge Ram","=q4=Swift Elwynn Steed","=q4=Great Red Elekk","=q4=Swift Gray Steed","=q4=Swift Moonsaber","=q4=Swift Violet Ram","=q4=Turbostrider","=q1=Champion's Seal","","=q4=Swift Darkspear Raptor","=q4=Swift Forsaken Warhorse","=q4=Swift Orgrimmar Wolf","=q4=Swift Silvermoon Hawkstrider","=q4=Great Mulgore Kodo","=q4=Great Golden Kodo","=q4=Swift Burgundy Wolf","=q4=Swift Purple Raptor","=q4=Swift Red Hawkstrider","=q4=White Skeletal Warhorse"})
process("ArgentTournament7",11,{"","=q4=Quel'dorei Steed","=q4=Silver Covenant Hippogryph","","=q4=Argent Charger","=q4=Argent Warhorse","=q4=Argent Hippogryph","=q1=Champion's Seal","","=q4=Sunreaver Hawkstrider","=q4=Sunreaver Dragonhawk"})
process("ArgentTournament8",23,{"=q7=破爛的鬼霧披肩","=q7=精心打理的鐵羽護肩","=q7=染污的迅影肩甲","=q7=勇士赫洛德的護肩","=q7=奧秘的元素肩鎧","=q7=拋光的勇氣肩甲","=q7=敏銳的比斯巨獸之眼","=q7=迅捷的正義之手","=q1=Champion's Seal","=q7=Tattered Dreadmist Robe","=q7=Preened Ironfeather Breastplate","=q7=Stained Shadowcraft Tunic","=q7=Champion's Deathdealer Breastplate","=q7=Mystical Vest of Elements","=q7=Polished Breastplate of Valor","=q7=平衡的尋心者","=q7=尊崇的雷德神聖控訴者","=q7=染血奧金撕裂者","=q7=虔誠的光環石槌","=q7=Venerable Mass of McGowan","=q7=Repurposed Lava Dredger","=q7=威嚴的院長之杖","=q7=魅惑的上古骨弓"})
process("ArmbreakerHuffaz",12,{"=q3=伊斯利恩指環","=q3=暗色披風","=q3=謎團披風","=q3=熾熱披風","=q3=嚴寒披風","=q3=活躍披風","=q2=伊斯利恩囚犯I.D.標籤","=q3=黑暗指環","=q3=謎團指環","=q3=燃燒指環","=q3=嚴寒指環","=q3=活躍指環"})
process("BashirLanding",24,{"","=q1=長者的不穩定精煉藥劑","=q1=治療師的不穩定精煉藥劑","=q1=強盜的不穩定精煉藥劑","=q1=鬥士的不穩定精煉藥劑","","=q3=不穩定的紫水晶","=q3=不穩定的黃水晶","=q3=不穩定的翠綠橄欖石","=q3=不穩定的藍寶石","=q3=不穩定的泰拉寶石","=q3=不穩定的黃寶石","","=q3=灌魔的不穩定鑽石","=q3=高效的不穩定鑽石","=q1=催化裝置模組","=q1=小型金質變形手套","=q1=小型銀質變形手套","=q1=小型銅質變形手套","=q1=小型鐵質變形手套","=q1=大型金質變形頭盔","=q1=大型銀質變形頭盔","=q1=大型銅質變形頭盔","=q1=大型鐵質變形頭盔"})
process("BashirStasisChambers",15,{"","=q3=惡魔防護壁壘","=q2=奈薩斯王的印記","","=q3=岩鋼護肩","=q2=奈薩斯王的印記","","=q3=霧幕護肩","=q2=奈薩斯王的印記","","=q3=導風者披肩","=q2=奈薩斯王的印記","","=q3=天行者護肩","=q2=奈薩斯王的印記"})
process("Brewfest1",19,{"=q1=貝爾碧的視力強化浪漫眼鏡","=q1=Blix's Eyesight Enhancing Romance Goggles","=q1=藍色啤酒節紀念帽","=q1=棕色啤酒節紀念帽","=q1=綠色啤酒節紀念帽","=q1=紫色啤酒節紀念帽","=q1=啤酒節裙裝","=q1=啤酒節華服","=q1=啤酒節靴子","=q1=啤酒節軟靴","=q3=啤酒節小酒桶","=q3=Pint-Sized Pink Elekk","=q3=鹿角兔的大酒杯","=q1=「每月啤酒」俱樂部會員表格","=q2=保存的啤酒節蛇麻草","=q1=新鮮的啤酒節蛇麻草","=q1=新鮮的矮人啤酒節蛇麻草","=q1=新鮮的哥布林啤酒節蛇麻草","=q2=啤酒節獎品章"})
process("Brewfest2",15,{"=q3=Green Brewfest Stein","=q3=藍色啤酒節酒杯","=q3=黃色啤酒節酒杯","=q3=黑鐵酒杯","=q3=啤酒節山羊","=q1=啤酒節啤酒","=q1=曬乾的香腸","=q1=醃香腸","=q1=岩鹽鹹脆餅","=q1=香辣香腸","=q1=Spiced Onion Cheese","=q1=辣味煙燻香腸","=q1=多汁的香腸","=q1=啤酒節必備的鹹脆餅","=q1=金環"})
process("Brewfest3",20,{"","=q1=超淡麥酒","=q1=淡麥酒","=q1=濃麥酒","","=q1=雷電 45","=q1=雷酒牌麥芽酒","=q1=雷酒牌烈酒","","=q1=戈多克烈酒","=q1=穆德的牛奶","=q1=巨魔蜜酒","","=q1=小步啤酒","=q1=邁步啤酒","=q1=啤酒之途","","=q1=叢林河水","=q1=巫啤魔法","=q1=皺縮頭顱烈酒"})
process("BrewoftheMonthClub",12,{"=q1=Wild Winter Pilsner","=q1=Izzard's Ever Flavor","=q1=Aromatic Honey Brew","=q1=Metok's Bubble Bock","=q1=Springtime Stout","=q1=Blackrock Lager","=q1=Stranglethorn Brew","=q1=Draenic Pale Ale","=q1=Binary Brew","=q1=Autumnal Acorn Ale","=q1=Bartlett's Bitter Brew","=q1=Lord of Frost's Private Label"})
process("ChildrensWeek",12,{"","=q1=小豬項圈","=q1=老鼠籠","=q1=烏龜盒","=q1=庫瑪真的回饋","","=q3=艾格伯特的蛋","=q3=伊萊克訓練項圈","=q3=瞌睡蟲韋利","","=q3=Curious Oracle Hatchling","=q3=Curious Wolvar Pup"})
process("CorenDirebrew",12,{"=q4=Ancient Pickled Egg","=q4=Bubbling Brightbrew Charm","=q4=Bitter Balebrew Charm","=q4=Brawler's Souvenir","=q4=Coren's Chromium Coaster","=q4=Mithril Pocketwatch","=q4=Direbrew's Shanker 2.0","=q4=Tankard O' Terror","=q4=大型啤酒節科多獸","=q4=迅捷啤酒節山羊","=q3=恐酒遙控器","=q1=恐酒的恐懼啤酒"})
process("Darkmoon1",16,{"=q4=暗月護符","=q4=暗月寶珠","=q2=一等暗月獎","=q2=二等暗月獎","=q2=三等暗月獎","=q1=暗月收藏箱","=q1=去年的羊肉","=q1=結構圖:蒸汽坦克遙控器","=q1=上個月的羊肉","=q1=暗月之花","=q1=暗月馬戲團獎品券","=q3=暗月戒指","=q2=暗月項鍊","=q1=樹蛙盒","=q1=林蛙盒","=q1=小啾啾的小窩"})
process("Darkmoon2",15,{"=q2=群盜套卡","=q2=暗月長袍","=q2=暗月外衣","=q2=暗月鍊甲衫","=q3=眾劍套卡","=q3=暗布護肩","=q3=掩飾肩墊","=q3=蒼藍肩衛","=q3=法師套卡","=q3=暗月項鍊","=q3=暗月墜飾","=q3=群魔套卡","=q3=暗月短匕","=q3=暗月處決者","=q3=暗月法師杖"})
process("Darkmoon3",16,{"=q4=野獸套卡","=q4=暗月卡:藍龍","=q4=元素套卡","=q4=暗月卡:漩渦","=q4=傳送門套卡","=q4=暗月卡:虛空","=q4=督軍套卡","=q4=暗月卡:英雄","=q4=祝福套卡","=q4=暗月卡:聖戰","=q4=狂怒套卡","=q4=暗月卡:復仇","=q4=失心套卡","=q4=暗月卡:瘋狂","=q4=風暴套卡","=q4=暗月卡:狂怒"})
process("Darkmoon4",11,{"=q4=混沌套卡","=q4=暗月卡:狂戰士!","=q4=稜光套卡","=q4=Darkmoon Card: Illusion","=q4=不死套卡","=q4=暗月卡:死亡","=q4=貴族套卡","=q4=暗月卡:崇高","=q4=暗月卡:崇高","=q4=暗月卡:崇高","=q4=暗月卡:崇高"})
process("DarkscreecherAkkarai",11,{"=q3=異教徒護手","=q2=阿卡萊之爪","=q3=導風者束腕","=q3=導風者腰帶","=q3=天行者護腕","=q3=天行者之索","=q3=霧幕護腕","=q3=霧幕腰帶","=q3=岩鋼護腕","=q3=岩鋼束腰","=q3=司凱堤斯指環"})
process("DayoftheDead",8,{"=q1=Macabre Marionette","=q1=Whimsical Skull Mask","=q1=Bouquet of Orange Marigolds","=q1=Candy Skull","=q1=Spirit Candle","=q1=Orange Marigold","=q1=Recipe: Bread of the Dead","=q1=Bread of the Dead"})
process("Dukes",21,{"","=q3=深淵皮甲護腿","=q3=硬化鋼質戰錘","=q3=深淵徽記","=q2=深淵布質束帶","=q1=辛德爾的煤渣","","=q3=深淵鎖甲腿甲","=q3=黑石巨刃劍","=q3=深淵徽記","=q2=深淵皮甲腰帶","","=q3=深淵布質束褲","=q3=靈魂補償者","=q3=深淵徽記","=q2=深淵鎧甲束腰","","=q3=深淵鎧甲腿鎧","=q3=閃亮水晶魔杖","=q3=深淵徽記","=q2=深淵鎖甲之攫"})
process("ElementalInvasion",18,{"","=q3=火焰男爵查爾的節杖","=q3=元素之一","=q2=元素灰燼","","=q3=泰比斯蒂亞的寒冰項鍊","=q3=元素之一","=q3=圖樣:雷暴手套","=q2=嚴寒戒指","","=q3=阿瓦蘭奇奧的石皮","=q3=元素之一","=q2=硬石指環","","=q3=烈風劫奪者束帶","=q3=元素之一","=q3=圖樣:雷暴手套","=q2=微風披風"})
process("FelTinkererZortan",12,{"=q3=霧幕之靴","=q3=暗色披風","=q3=謎團披風","=q3=熾熱披風","=q3=嚴寒披風","=q3=活躍披風","=q2=伊斯利恩囚犯I.D.標籤","=q3=黑暗指環","=q3=謎團指環","=q3=燃燒指環","=q3=嚴寒指環","=q3=活躍指環"})
process("FishingExtravaganza",12,{"","=q3=奧金釣魚竿","=q3=釣魚大師魚鉤","","=q2=基佛天使魚","=q2=布隆奈爾藍斑魚","=q2=迪森皇后魚","=q2=石皮大魚","","=q2=幸運漁帽","=q2=納特·帕格的極限釣魚靴","=q2=高強度恆金漁線"})
process("Forgosh",12,{"=q3=天行者的靴子","=q3=暗色披風","=q3=謎團披風","=q3=熾熱披風","=q3=嚴寒披風","=q3=活躍披風","=q2=伊斯利恩囚犯I.D.標籤","=q3=黑暗指環","=q3=謎團指環","=q3=燃燒指環","=q3=嚴寒指環","=q3=活躍指環"})
process("GezzaraktheHuntress",11,{"=q3=吉札拉毒牙項鍊","=q2=吉札拉之爪","=q3=導風者束腕","=q3=導風者腰帶","=q3=天行者護腕","=q3=天行者之索","=q3=霧幕護腕","=q3=霧幕腰帶","=q3=岩鋼護腕","=q3=岩鋼束腰","=q3=司凱堤斯指環"})
process("Gulbor",12,{"=q3=伊斯利恩頸環","=q3=暗色披風","=q3=謎團披風","=q3=熾熱披風","=q3=嚴寒披風","=q3=活躍披風","=q2=伊斯利恩囚犯I.D.標籤","=q3=黑暗指環","=q3=謎團指環","=q3=燃燒指環","=q3=嚴寒指環","=q3=活躍指環"})
process("GurubashiArena",6,{"=q3=競技場腕甲","=q3=競技場護腕","=q3=競技場手環","=q3=競技場臂鎧","=q2=競技場大師飾物","=q3=競技場宗師飾物"})
process("Halloween1",26,{"=q3=南瓜燈籠","=q2=南瓜袋","=q2=不牢固的魔法掃帚","=q1=斯泰林的乳酸棒棒糖","=q1=月溪節日糖","=q1=蓓拉的夾心巧克力","=q1=萬鬼節南瓜糖","","=q1=Chewy Fel Taffy","=q1=G.N.E.R.D.S.","=q1=Pyroblast Cinnamon Ball","=q1=Soothing Spearmint Candy","","=q3=巨型南瓜燈籠","=q3=邪惡小南瓜","=q1=萬鬼節魔杖 - 蝙蝠","=q1=萬鬼節魔杖 - 鬼魂","=q1=萬鬼節魔杖 - 麻瘋地精","=q1=萬鬼節魔杖 - 忍者","=q1=萬鬼節魔杖 - 海賊","=q1=萬鬼節魔杖 - 隨機","=q1=萬鬼節魔杖 - 骷髏","=q1=萬鬼節魔杖 - 幽光","=q1=糖球","=q1=棒棒糖","=q1=糖果棒"})
process("Halloween2",21,{"","=q1=劣質男性德萊尼面具","=q1=劣質男性矮人面具","=q1=劣質男性地精面具","=q1=劣質男性人類面具","=q1=劣質男性夜精靈面具","=q1=劣質男性血精靈面具","=q1=劣質男性獸人面具","=q1=劣質男性牛頭人面具","=q1=劣質男性食人妖面具","=q1=劣質男性不死族面具","=q1=劣質女性德萊尼面具","=q1=劣質女性矮人面具","=q1=劣質女性地精面具","=q1=劣質女性人類面具","=q1=劣質女性夜精靈面具","=q1=劣質女性血精靈面具","=q1=劣質女性獸人面具","=q1=劣質女性牛頭人面具","=q1=劣質女性食人妖面具","=q1=劣質女性不死族面具"})
process("HarvestFestival",7,{"=q1=收穫節的獎勵","=q1=為聖光而戰!","=q1=部落的地獄吼","=q1=收穫節豬肉","=q1=收穫節魚肉","=q1=收穫節水果","=q1=收穫節蜜酒"})
process("HeadlessHorseman",11,{"=q4=The Horseman's Horrific Helm","=q4=Ring of Ghoulish Glee","=q4=The Horseman's Seal","=q4=Wicked Witch's Band","=q4=The Horseman's Baleful Blade","=q1=增重的南瓜燈籠","=q1=搗蛋糖果","=q4=無頭騎士韁繩","=q3=魔法掃帚","=q3=巨型南瓜燈籠","=q3=邪惡小南瓜"})
process("HighCouncil",20,{"","=q4=元素聚焦指環","=q4=深淵權杖","=q3=深淵皮甲護腕","=q3=深淵鎖甲肩鎧","","=q4=浪峰項鍊","=q4=深淵權杖","=q3=深淵鎖甲護臂","=q3=深淵鎧甲肩冑","","=q4=風剪斗篷","=q4=深淵權杖","=q3=深淵布質腕環","=q3=深淵皮甲護肩","","=q4=土靈護衛者","=q4=深淵權杖","=q3=深淵布質襯肩","=q3=深淵鎧甲護臂"})
process("Karrog",11,{"=q3=凱羅格的裂片","=q2=凱羅格之刺","=q3=導風者束腕","=q3=導風者腰帶","=q3=天行者護腕","=q3=天行者之索","=q3=霧幕護腕","=q3=霧幕腰帶","=q3=岩鋼護腕","=q3=岩鋼束腰","=q3=司凱堤斯指環"})
process("LordAhune",12,{"=q4=Cloak of the Frigid Winds","=q4=Icebound Cloak","=q4=Shroud of Winter's Chill","=q4=The Frost Lord's Battle Shroud","=q4=The Frost Lord's War Cloak","=q3=公式:附魔武器 - 死亡冰霜","=q1=艾胡恩裂片","=q3=夏日晴空外袍","=q3=夏日烈焰外袍","=q3=Satchel of Chilled Goods","=q4=Frostscythe of Lord Ahune","=q3=Ice Chip"})
process("LunarFestival1",24,{"=q2=伊露恩的燈籠","=q1=綠色節慶長裙","=q1=粉紅節慶裙裝","=q1=紫色節慶裙裝","=q1=黑色節慶褲裝","=q1=藍色節慶褲裝","=q1=青色節慶褲裝","=q1=新年節慶點心","=q1=伊露恩的蠟燭","=q1=先祖硬幣","","=q1=小型藍色煙花","=q1=小型綠色煙花","=q1=小型紅色煙花","=q1=小型白色煙花","=q1=小型黃色煙花","=q1=大型藍色煙花","=q1=大型綠色煙花","=q1=大型紅色煙花","=q1=大型白色煙花","=q1=大型黃色煙花","","=q1=幸運煙花束","=q1=長者的月亮石"})
process("LunarFestival2",20,{"=q2=結構圖:煙火發射器","","=q2=結構圖:小型藍色煙花","=q2=結構圖:小型綠色煙花","=q2=結構圖:小型紅色煙花","","=q2=結構圖:大型藍色煙花","=q2=結構圖:大型綠色煙花","=q2=結構圖:大型紅色煙花","=q2=圖樣:節慶長裙","=q2=結構圖:煙花束發射器","","=q2=結構圖:藍色煙花束","=q2=結構圖:綠色煙花束","=q2=結構圖:紅色煙花束","","=q2=結構圖:大型藍色煙花束","=q2=結構圖:大型綠色煙花束","=q2=結構圖:大型紅色煙花束","=q2=圖樣:節慶衣服"})
process("MalevustheMad",12,{"=q3=岩鋼長靴","=q3=暗色披風","=q3=謎團披風","=q3=熾熱披風","=q3=嚴寒披風","=q3=活躍披風","=q2=伊斯利恩囚犯I.D.標籤","=q3=黑暗指環","=q3=謎團指環","=q3=燃燒指環","=q3=嚴寒指環","=q3=活躍指環"})
process("MidsummerFestival",16,{"=q3=火焰舞孃火盆","=q3=捕捉到的烈焰","=q2=煤渣護腕","=q1=節慶烈酒","=q1=紫梅派","=q1=火烤麵包","=q1=仲夏香腸","=q1=燒烤史馬克","=q1=一捧夏日花瓣","=q1=Bag of Smorc Ingredients","=q1=Juggling Torch","=q1=燃燒之花","=q1=火焰節慶之冠","=q1=火焰節慶披肩","=q1=夏日法衣","=q1=夏日便鞋"})
process("Noblegarden",12,{"=q3=Tome of Polymorph: Rabbit","=q3=Spring Rabbit's Foot","=q1=Spring Circlet","=q1=端莊的晚禮服","=q1=Spring Robes","=q1=Spring Flowers","=q1=白色禮服襯衣","=q1=黑色禮服束褲","=q1=Blossoming Branch","=q1=Noblegarden Egg","=q1=Egg Basket","=q1=Noblegarden Chocolate"})
process("PilgrimsBounty_A",20,{"=q2=Bountiful Cookbook","=q1=Recipe: Spice Bread Stuffing","=q1=Recipe: Pumpkin Pie","=q1=Recipe: Cranberry Chutney","=q1=Recipe: Candied Sweet Potato","=q1=Recipe: Slow-Roasted Turkey","=q1=Bountiful Basket","=q1=Teldrassil Sweet Potato","=q1=Tangy Wetland Cranberries","=q1=Ripe Elwynn Pumpkin","=q1=Autumnal Herbs","=q1=Honey","=q3=Turkey Cage","=q1=Pilgrim's Hat","=q1=Pilgrim's Attire","=q1=Pilgrim's Dress","=q1=Pilgrim's Robe","=q1=Pilgrim's Boots","=q1=Turkey Caller","=q1=Turkey Shooter"})
process("PilgrimsBounty_H",20,{"=q2=Bountiful Cookbook","=q1=Recipe: Spice Bread Stuffing","=q1=Recipe: Pumpkin Pie","=q1=Recipe: Cranberry Chutney","=q1=Recipe: Candied Sweet Potato","=q1=Recipe: Slow-Roasted Turkey","=q1=Bountiful Basket","=q1=Mulgore Sweet Potato","=q1=Tangy Southfury Cranberries","=q1=Ripe Tirisfal Pumpkin","=q1=Autumnal Herbs","=q1=Honey","=q3=Turkey Cage","=q1=Pilgrim's Hat","=q1=Pilgrim's Attire","=q1=Pilgrim's Dress","=q1=Pilgrim's Robe","=q1=Pilgrim's Boots","=q1=Turkey Caller","=q1=Turkey Shooter"})
process("PorfustheGemGorger",12,{"=q3=導風者的靴子","=q3=暗色披風","=q3=謎團披風","=q3=熾熱披風","=q3=嚴寒披風","=q3=活躍披風","=q2=伊斯利恩囚犯I.D.標籤","=q3=黑暗指環","=q3=謎團指環","=q3=燃燒指環","=q3=嚴寒指環","=q3=活躍指環"})
process("ScourgeInvasionEvent1",14,{"=q3=銀色黎明旗幟","=q3=銀白書卷","=q3=銀白戰爭號角","=q2=受祝福的巫師之油","=q2=聖化磨刀石","=q1=銀色黎明外袍","=q1=銀白治療藥水","=q1=銀白法力藥水","=q2=亡域符文","=q1=作祟的紀念物","","=q4=正義徽章","=q4=奧金撕裂者","=q3=小吸血蝙蝠"})
process("ScourgeInvasionEvent2",20,{"","=q4=淨亡祝福披肩","=q4=淨亡祝福長袍","=q4=淨亡祝福手套","=q4=淨亡祝福長褲","","=q4=弒亡祝福肩墊","=q4=弒亡祝福外套","=q4=弒亡祝福之握","=q4=弒亡祝福護腿","","=q4=弒亡祝福肩鎧","=q4=弒亡祝福鍊衫","=q4=弒亡祝福手甲","=q4=弒亡祝福護脛","","=q4=弒亡祝福肩甲","=q4=弒亡祝福胸甲","=q4=弒亡祝福護手","=q4=弒亡祝福腿鎧"})
process("ScourgeInvasionEvent3",22,{"","=q3=巴爾薩馮腰環","=q3=巫妖之鍊","=q3=巴爾薩馮之杖","","=q3=黑木之腿","=q3=黑木領主之刃","=q3=黑木領主之盾","","=q3=雷瓦克安披風","=q3=修補護腕","=q3=暗影之握","","=q3=冰凍之攫","=q3=瑟克恩的覆冰頸飾","=q3=瑟克恩的聚焦匕首","","=q3=憎惡皮護腿","=q3=侍奉之斧","","=q3=法瑟蕾絲女士的披肩","=q3=法瑟蕾絲女士之指"})
process("Shartuul",22,{"=q4=墮落者璽戒","=q4=枯竭布質護腕","=q4=枯竭鎖甲護手","=q3=枯竭披風","=q3=枯竭指環","=q3=枯竭徽章","=q3=枯竭匕首","=q3=枯竭長劍","=q3=枯竭雙手斧","=q3=枯竭大錘","=q3=枯竭法杖","=q4=監督者指環","=q4=晶紋護腕","=q4=晶鱗裹手","=q3=晶紋斗篷","=q3=夢境水晶指環","=q3=堅毅徽章","=q3=水晶灌注剃刃","=q3=晶鑄長劍","=q3=頂尖斬斧","=q3=頂尖水晶錘","=q3=火焰石英法杖"})
process("SkettisHazziksPackage",1,{"=q1=海茲克的包裹"})
process("SkettisTalonpriestIshaal",1,{"=q1=艾夏歐的年鑑"})
process("Templars",20,{"","=q3=水晶鑲飾窄匕","=q2=深淵布質裹手","=q2=深淵鎖甲脛甲","=q2=深淵紋章","","=q3=紫水晶戰爭法杖","=q2=深淵布質軟靴","=q2=深淵鎧甲護手","=q2=深淵紋章","","=q3=削石長勾刀","=q2=深淵皮甲長靴","=q2=深淵鎖甲手甲","=q2=深淵紋章","","=q3=深擊之弓","=q2=深淵皮甲手套","=q2=深淵鎧甲護脛","=q2=深淵紋章"})
process("Terokk",11,{"=q4=泰洛克力量披風","=q4=泰洛克智慧披風","=q3=導風者護腿","=q3=天行者護腿","=q3=霧幕束褲","=q3=岩鋼護腿","=q3=魔爪祭司的禮物","=q3=不朽之王胸針","=q3=時光流逝刻像","=q3=泰洛克裁決槌","=q3=泰洛克裁決槌"})
process("VakkiztheWindrager",11,{"=q3=風怒者纏繞護腕","=q2=Vakkiz's Scale","=q3=導風者束腕","=q3=導風者腰帶","=q3=天行者護腕","=q3=天行者之索","=q3=霧幕護腕","=q3=霧幕腰帶","=q3=岩鋼護腕","=q3=岩鋼束腰","=q3=司凱堤斯指環"})
process("Valentineday",20,{"=q3=浪漫野餐籃","=q1=Love Token","=q1=Lovely Rose","=q1=一把玫瑰花瓣","=q1=銀質箭桿","=q1=真銀箭桿","=q1=糖果袋","=q1=Box of Chocolates","=q1=Lovely Dress Box","=q1=Dinner Suit Box","=q1=愛心煙火","=q1=愛的傻瓜","=q1=\"Bravado\" Cologne","=q1=\"STALWART\" Cologne","=q1=\"Wizardry\" Cologne","=q1=\"VICTORY\" Perfume","=q1=\"Forever\" Perfume","=q1=\"Enchantress\" Perfume","=q1=Love Token","=q1=Lovely Charm Bracelet"})
process("Valentineday2",23,{"","=q1=漂亮的黑色裙裝","=q1=漂亮的紅色裙裝","=q1=漂亮的藍色裙裝","=q1=漂亮的紫色裙裝","","=q1=紅色晚宴套裝","=q1=藍色晚宴套裝","=q1=紫色晚宴套裝","","=q1=黑暗慾望","=q1=濃郁苺酪","=q1=歡恬牛奶","=q1=甜蜜驚喜","","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy","=q1=Heart Candy"})
process("Valentineday3",10,{"=q4=Winking Eye of Love","=q4=Heartbreak Charm","=q4=Shard of Pirouetting Happiness","=q4=Sweet Perfume Broach","=q4=Choker of the Pure Heart","=q3=Forever-Lovely Rose","=q3=Vile Fumigator's Mask","=q3=Toxic Wasteling","=q3=The Heartbreaker","=q4=Big Love Rocket"})
process("Winterviel1",29,{"=q2=綠色冬帽","=q2=紅色冬帽","=q1=冬幕偽裝包","=q1=雪球","=q1=一捧雪花","=q1=新鮮的冬青","=q1=槲寄生","","=q2=圖樣:冬靴","=q2=圖樣:紅色冬裝","=q2=圖樣:綠色冬裝","=q1=食譜:熱蘋果酒","=q1=食譜:蛋奶酒","=q1=食譜:薑餅","=q1=拐杖糖","=q1=節日乳酪圈","=q1=格拉庫的自製肉餅","=q1=香辣牛肉乾","=q1=節日蜂蜜火腿","=q1=混製豆酒","=q1=綠花茶","=q1=氣泡蘋果酒","=q1=節日美酒","=q1=熱砂泡沫啤酒","=q1=冬天爺爺的麥芽酒","=q1=節日香料","=q1=藍色條紋包裝紙","=q1=綠色條紋包裝紙","=q1=紫色條紋包裝紙"})
process("Winterviel2",25,{"","=q1=綠色助手箱","=q1=聖誕鈴鐺","=q1=紅色助手箱","=q1=雪人工具","","=q1=節日狂歡魔杖","","=q3=發條火箭機器人","","=q1=冬幕節烤肉","=q1=冬幕節蛋酒","","=q2=機器格林奇","=q2=保存的冬青","=q2=設計圖:寒冬之鋒","=q2=公式:附魔武器 - 寒冬之力","=q2=結構圖:雪王9000型","=q2=圖樣:冬天爺爺的手套","=q1=配方:冰霜之力藥劑","=q1=圖樣:綠色節日襯衣","","=q1=冬幕節點心","","=q1=格拉庫的肉糜水果蛋糕"})
process("WrathbringerLaztarash",12,{"=q3=法力冶煉晶球","=q3=暗色披風","=q3=謎團披風","=q3=熾熱披風","=q3=嚴寒披風","=q3=活躍披風","=q2=伊斯利恩囚犯I.D.標籤","=q3=黑暗指環","=q3=謎團指環","=q3=燃燒指環","=q3=嚴寒指環","=q3=活躍指環"})
elseif locale == "koKR" then
process("ArgentTournament1",13,{"","=q2=다르나서스 훈장","=q2=엑소다르 훈장","=q2=놈리건 훈장","=q2=아이언포지 훈장","=q2=스톰윈드 훈장","=q1=용사의 계약서","","=q2=오그리마 훈장","=q2=언더시티 훈장","=q2=썬더 블러프 훈장","=q2=센진 훈장","=q2=실버문 훈장"})
process("ArgentTournament2",28,{"","=q1=다르나서스 깃발","=q1=엑소다르 깃발","=q1=놈리건 깃발","=q1=아이언포지 깃발","=q1=스톰윈드 깃발","=q1=다르나서스 휘장","=q1=엑소다르 휘장","=q1=놈리건 휘장","=q1=아이언포지 휘장","=q1=스톰윈드 휘장","=q1=은빛 서약단 휘장","=q1=용사의 인장","","=q1=오그리마 깃발","=q1=언더시티 깃발","=q1=썬더 블러프 깃발","=q1=센진 깃발","=q1=실버문 깃발","=q1=오그리마 휘장","=q1=언더시티 휘장","=q1=썬더 블러프 휘장","=q1=센진 휘장","=q1=실버문 휘장","=q1=선리버 휘장","","=q1=은빛십자군 성전사의 깃발","=q3=은빛십자군 성전사의 휘장"})
process("ArgentTournament3",29,{"","=q3=산산이 부서지는 마음의 장식띠","=q3=영생수의 두름띠","=q3=재빠른 회피의 발보호대","=q3=결합한 예속의 허리띠","=q3=명예로운 영혼의 발보호대","=q3=산산조각난 자존심의 건틀릿","=q3=용기있는 타도의 벨트","=q3=낙마를 부르는 광란의 버팀장화","=q3=속삭이는 조개껍질 목걸이","=q3=나선 초점의 목걸이","=q3=용맹전사의 피 목걸이","=q3=하늘빛 꿈의 펜던트","=q3=창기사의 분노","=q1=용사의 인장","","=q3=치켜세운 자존심의 장식띠","=q3=말의 분노 허리보호대","=q3=성실한 수습기사의 발보호대","=q3=끝없는 만행의 허리띠","=q3=속삭이는 꿈의 발보호대","=q3=치유의 손길 건틀릿","=q3=맹렬한 격노의 이음띠","=q3=피투성이 판금장화","=q3=야수 분노의 목걸이","=q3=훔친 해골 목걸이","=q3=에메랄드 성전사의 펜던트","=q3=서슬푸른 칼날 펜던트","=q3=창기사의 분노"})
process("ArgentTournament4",19,{"","=q4=달빛 정화의 단검","=q4=떠오르는 달의 단검","=q4=놈리건 뼈톱","=q4=예언자의 클레이모어","=q4=텔드랏실 수호도끼","=q4=아이언포지 분쇄기","=q4=은빛 숲의 지팡이","=q4=카즈 모단 나팔총","=q1=용사의 인장","","=q4=왕립 연금술 비수","=q4=척수 파괴자","=q4=통곡하는 밴시의 검","=q4=신도레이의 대검","=q4=센진 수호자의 도끼","=q4=험악한 뿔 분쇄기","=q4=야수 분노의 지팡이","=q4=센진 부리칼날 장총"})
process("ArgentTournament5",19,{"","=q3=은빛 수습기사","=q3=암멘 골짜기 꼬마 덩굴손","=q3=텔드랏실 꼬마 나무","=q3=던 모로 새끼 곰","=q3=엘윈 새끼 양","=q3=기계삐삐","=q3=아롱 지룡","","=q3=은빛십자군 조랑말 고삐","=q1=용사의 인장","","=q3=은빛 꼬마 그런트","=q3=멀고어 새끼 타조","=q3=센진 우상","=q3=티리스팔 새끼 박쥐","=q3=듀로타 전갈","=q3=마력 깃든 빗자루","=q3=아롱 지룡"})
process("ArgentTournament6",23,{"","=q4=날쌘 다르나서스 안개호랑이","=q4=거대한 하늘안개 엘레크","=q4=터보타조","=q4=날쌘 아이언포지 산양","=q4=날쌘 엘윈 군마","=q4=거대한 빨간색 엘레크","=q4=날쌘 회색 전투군마","=q4=날쌘 달호랑이","=q4=날쌘 보라색 산양","=q4=터보타조","=q1=용사의 인장","","=q4=날쌘 검은창부족 랩터","=q4=날쌘 포세이큰 전투마","=q4=날쌘 오그리마 늑대","=q4=날쌘 실버문 매타조","=q4=거대한 멀고어 코도","=q4=거대한 황금색 코도","=q4=날쌘 자주색 늑대","=q4=날쌘 보라색 랩터","=q4=날쌘 빨간색 매타조","=q4=흰색 전투해골마"})
process("ArgentTournament7",11,{"","=q4=쿠엘도레이 군마 마구","=q4=은빛 서약단 히포그리프","","=q4=은빛십자군 군마 마구","=q4=은빛십자군 전투마 마구","=q4=은빛십자군 히포그리프","=q1=용사의 인장","","=q4=선리버 매타조","=q4=선리버 용매"})
process("ArgentTournament8",23,{"=q7=남루한 공포의안개 어깨보호대","=q7=가지런한 무쇠깃털 어깨보호구","=q7=얼룩진 어둠추적자 어깨갑옷","=q7=용사 헤로드의 어깨보호구","=q7=신비한 정령의 어깨갑옷","=q7=광택나는 용맹의 어깨갑옷","=q7=번뜩이는 괴수의 눈","=q7=신속한 심판의 손길","=q1=용사의 인장","=q7=남루한 공포의안개 로브","=q7=가지런한 무쇠깃털 흉갑","=q7=얼룩진 어둠추적자 튜닉","=q7=용사의 죽음의 선고자 흉갑","=q7=정령의 신비한 조끼","=q7=용맹의 광택나는 가슴보호갑","=q7=균형 잡힌 심장추적자","=q7=신성한 달렌드의 성검","=q7=피의 아케이나이트 도끼","=q7=기원의 기력석 망치","=q7=신성한 맥고완의 무쇠망치","=q7=용도 변경된 용암 굴착기","=q7=위엄 깃든 교장의 해골지팡이","=q7=마법 깃든 고대의 해골 장궁"})
process("ArmbreakerHuffaz",12,{"=q3=에테리움 고리","=q3=암흑의 망토","=q3=불가사의의 망토","=q3=이글거리는 망토","=q3=얼어붙은 망토","=q3=생기의 망토","=q2=에테리움 죄수 인식표","=q3=암흑의 고리","=q3=불가사의의 고리","=q3=이글거리는 고리","=q3=얼어붙은 고리","=q3=생기의 고리"})
process("BashirLanding",24,{"","=q1=불안정한 장로의 영약","=q1=불안정한 의술사의 영약","=q1=불안정한 약탈자의 영약","=q1=불안정한 병사의 영약","","=q3=불안정한 자수정","=q3=불안정한 황수정","=q3=불안정한 감람석","=q3=불안정한 사파이어","=q3=불안정한 탈라사이트","=q3=불안정한 토파즈","","=q3=마력이 깃든 불안정한 다이아몬드","=q3=마력이 담긴 불안정한 다이아몬드","=q1=가속장치 모듈","=q1=마력이 담긴 작은 금 정동석","=q1=마력이 담긴 작은 은 정동석","=q1=마력이 담긴 작은 구리 정동석","=q1=마력이 담긴 작은 철 정동석","=q1=마력이 담긴 큰 금 정동석","=q1=마력이 담긴 큰 은 정동석","=q1=마력이 담긴 큰 구리 정동석","=q1=마력이 담긴 큰 철 정동석"})
process("BashirStasisChambers",15,{"","=q3=악마의 보루 방패","=q2=연합왕의 징표","","=q3=회암강철 어깨보호구","=q2=연합왕의 징표","","=q3=안개장막 어깨보호구","=q2=연합왕의 징표","","=q3=바람술사 어깨보호대","=q2=연합왕의 징표","","=q3=하늘추적자 어깨보호구","=q2=연합왕의 징표"})
process("Brewfest1",19,{"=q1=벨비의 시력 향상 연애 고글","=q1=블릭스의 시력 향상 연애 고글","=q1=파란색 가을 축제 모자","=q1=갈색 가을 축제 모자","=q1=녹색 가을 축제 모자","=q1=보라색 가을 축제 모자","=q1=가을 축제 드레스","=q1=가을 축제 의복","=q1=가을 축제 장화","=q1=가을 축제 덧신","=q3=가을 축제 소형 맥주통","=q3=분홍색 꼬마 엘레크","=q3=노루토끼 술잔","=q1=\"맥주 사랑 동호회\" 가입 신청서","=q2=묵은 가을 축제 홉 열매","=q1=신선한 가을 축제 홉 열매","=q1=신선한 드워프 축제 홉 열매","=q1=신선한 고블린 축제 홉 열매","=q2=가을 축제 상품 교환 동전"})
process("Brewfest2",15,{"=q3=녹색 가을 축제 맥주잔","=q3=파란색 가을 축제 잔","=q3=노란색 가을 축제 잔","=q3=검은무쇠단 맥주잔","=q3=가을 축제 산양","=q1=가을 축제 맥주","=q1=마른 소시지","=q1=절인 소시지","=q1=바위소금 프렛첼","=q1=짭짤한 소시지","=q1=양념한 양파 치즈","=q1=매콤한 훈제 소시지","=q1=육즙이 많은 소시지","=q1=가을 축제 전통 프렛첼","=q1=황금색 토막 소시지"})
process("Brewfest3",20,{"","=q1=발리브루 청맥주","=q1=발리브루 순한 맥주","=q1=발리브루 흑맥주","","=q1=썬더 45","=q1=썬더브루 에일 맥주","=q1=썬더브루 스타우트","","=q1=고르독 그로그주","=q1=무더 우유","=q1=오우거 벌꿀술","","=q1=종종걸음 맥주","=q1=성큼걸음 맥주","=q1=비틀걸음 맥주","","=q1=정글 강물","=q1=부두 맥주","=q1=쭈그러든 해골 스타우트"})
process("BrewoftheMonthClub",12,{"=q1=한겨울 필슨 맥주","=q1=이자드의 향맥주","=q1=향기나는 꿀맥주","=q1=메토크의 거품 흑맥주","=q1=봄 스타우트 맥주","=q1=검은바위 맥주","=q1=가시덤불 맥주","=q1=부드러운 드레나이 에일 맥주","=q1=이중 발효 맥주","=q1=가을 도토리 에일 맥주","=q1=바틀릿의 쓴 맥주","=q1=서리 군주의 얼음주"})
process("ChildrensWeek",12,{"","=q1=돼지 목줄","=q1=쥐 집","=q1=거북이 상자","=q1=보육 수당","","=q3=용용이 알","=q3=엘레크 조련용 목줄","=q3=잠꾸러기 왕눈이","","=q3=호기심 많은 새끼 점쟁이","=q3=호기심 많은 새끼 울바르"})
process("CorenDirebrew",12,{"=q4=고대의 초란","=q4=풍부한 거품의 감미로운 투명 맥주","=q4=쓰면서도 감미로운 고통의 맥주","=q4=싸움꾼의 기념품","=q4=코렌의 크롬 받침","=q4=미스릴 회중시계","=q4=다이어브루 술병 2.0","=q4=공포의 술잔","=q4=거대한 가을 축제 코도","=q4=날쌘 가을 축제 산양","=q3=다이어브루의 원격 조종기","=q1=다이어브루의 독한 맥주"})
process("Darkmoon1",16,{"=q4=다크문의 아뮬렛","=q4=다크문의 보주","=q2=다크문 축제 금상","=q2=다크문 축제 은상","=q2=다크문 축제 동상","=q1=다크문 보관함","=q1=일년 묵은 양고기","=q1=설계도: 통통 전차 조종기","=q1=한 달 묵은 양고기","=q1=다크문 꽃","=q1=다크문 축제 상품권","=q3=다크문 반지","=q2=다크문 목걸이","=q1=청개구리 상자","=q1=뿔개구리 상자","=q1=쥬블링의 보금자리"})
process("Darkmoon2",15,{"=q2=도적 카드 한 벌","=q2=다크문 로브","=q2=다크문 조끼","=q2=다크문 사슬 조끼","=q3=검 카드 한 벌","=q3=어둠헝겊 어깨보호대","=q3=매듭 어깨보호구","=q3=하늘빛 어깨갑옷","=q3=마법사 카드 한 벌","=q3=다크문 목걸이","=q3=다크문 펜던트","=q3=악마 카드 한 벌","=q3=다크문 단검","=q3=다크문 집행자","=q3=다크문 마법지팡이"})
process("Darkmoon3",16,{"=q4=야수 카드 한 벌","=q4=다크문 카드: 푸른용","=q4=정령 카드 한 벌","=q4=다크문 카드: 혼돈의 소용돌이","=q4=차원문 카드 한 벌","=q4=다크문 카드: 뒤틀린 황천","=q4=대장군 카드 한 벌","=q4=다크문 카드: 영웅심","=q4=축복 카드 한 벌","=q4=다크문 카드: 성전","=q4=원한 카드 한 벌","=q4=다크문 카드: 앙갚음","=q4=열광 카드 한 벌","=q4=다크문 카드: 광기","=q4=폭풍 카드 한 벌","=q4=다크문 카드: 진노"})
process("Darkmoon4",11,{"=q4=혼돈 카드 한 벌","=q4=다크문 카드: 광전사","=q4=프리즘 카드 한 벌","=q4=다크문 카드: 환영","=q4=불사 카드 한 벌","=q4=다크문 카드: 죽음","=q4=귀족 카드 한 벌","=q4=다크문 카드: 위대함","=q4=다크문 카드: 위대함","=q4=다크문 카드: 위대함","=q4=다크문 카드: 위대함"})
process("DarkscreecherAkkarai",11,{"=q3=이교도 건틀릿","=q2=아카라이의 갈퀴발톱","=q3=바람술사 손목띠","=q3=바람술사 허리띠","=q3=하늘추적자 팔보호구","=q3=하늘추적자 장식끈","=q3=안개장막 팔보호구","=q3=안개장막 허리띠","=q3=회암강철 팔보호구","=q3=회암강철 벨트","=q3=스케티스 고리"})
process("DayoftheDead",8,{"=q1=죽음의 무도 해골","=q1=기묘한 해골 가면","=q1=주황색 금잔화 다발","=q1=해골 사탕","=q1=영혼 양초","=q1=주황색 금잔화","=q1=조리법: 망자의 빵","=q1=망자의 빵"})
process("Dukes",21,{"","=q3=심연 가죽 다리보호구","=q3=경화 강철 전투망치","=q3=심연의 인장","=q2=심연 헝겊 장식띠","=q1=불꽃 군주의 불꽃","","=q3=심연 쇠사슬 다리보호대","=q3=암흑석 클레이모어","=q3=심연의 인장","=q2=심연 가죽 허리띠","","=q3=심연 헝겊 바지","=q3=영혼 분쇄기","=q3=심연의 인장","=q2=심연 판금 벨트","","=q3=심연 판금 다리갑옷","=q3=반짝이는 수정 마법봉","=q3=심연의 인장","=q2=심연 쇠사슬 허리띠"})
process("ElementalInvasion",18,{"","=q3=남작 차르의 홀","=q3=정령 A","=q2=정령의 불씨","","=q3=템페스트리아의 얼음 목걸이","=q3=정령 A","=q3=도안: 폭풍안개 장갑","=q2=극한의 반지","","=q3=아발란치온의 돌가죽 방패","=q3=정령 A","=q2=단단한 돌고리","","=q3=칼날바람의 장식띠","=q3=정령 A","=q3=도안: 폭풍안개 장갑","=q2=서풍 망토"})
process("FelTinkererZortan",12,{"=q3=안개장막 장화","=q3=암흑의 망토","=q3=불가사의의 망토","=q3=이글거리는 망토","=q3=얼어붙은 망토","=q3=생기의 망토","=q2=에테리움 죄수 인식표","=q3=암흑의 고리","=q3=불가사의의 고리","=q3=이글거리는 고리","=q3=얼어붙은 고리","=q3=생기의 고리"})
process("FishingExtravaganza",12,{"","=q3=아케이나이트 낚싯대","=q3=낚시대가의 낚싯바늘","","=q2=키퍼의 천사돔","=q2=브로넬의 푸른줄무늬날치","=q2=데지안 여왕물고기","=q2=바위비늘 장사물고기","","=q2=행운의 낚시 모자","=q2=내트 페이글의 최고급 낚시 장화","=q2=고탄성 이터늄 낚싯줄"})
process("Forgosh",12,{"=q3=하늘추적자 장화","=q3=암흑의 망토","=q3=불가사의의 망토","=q3=이글거리는 망토","=q3=얼어붙은 망토","=q3=생기의 망토","=q2=에테리움 죄수 인식표","=q3=암흑의 고리","=q3=불가사의의 고리","=q3=이글거리는 고리","=q3=얼어붙은 고리","=q3=생기의 고리"})
process("GezzaraktheHuntress",11,{"=q3=게자라크의 송곳니","=q2=게자라크의 발톱","=q3=바람술사 손목띠","=q3=바람술사 허리띠","=q3=하늘추적자 팔보호구","=q3=하늘추적자 장식끈","=q3=안개장막 팔보호구","=q3=안개장막 허리띠","=q3=회암강철 팔보호구","=q3=회암강철 벨트","=q3=스케티스 고리"})
process("Gulbor",12,{"=q3=에테리움 목걸이","=q3=암흑의 망토","=q3=불가사의의 망토","=q3=이글거리는 망토","=q3=얼어붙은 망토","=q3=생기의 망토","=q2=에테리움 죄수 인식표","=q3=암흑의 고리","=q3=불가사의의 고리","=q3=이글거리는 고리","=q3=얼어붙은 고리","=q3=생기의 고리"})
process("GurubashiArena",6,{"=q3=투기장 손목보호구","=q3=투기장 팔보호구","=q3=투기장 손목띠","=q3=투기장 완갑","=q2=전문 검투사의 징표","=q3=최고검투사의 징표"})
process("Halloween1",26,{"=q3=호박등","=q2=호박 주머니","=q2=낡은 마법의 빗자루","=q1=스틸린의 막대 사탕","=q1=문브룩 무지개사탕","=q1=벨라라의 땅콩초코바","=q1=할로윈 호박 사탕","","=q1=쫄깃한 악마 사탕","=q1=노움 왕사탕","=q1=불덩이 계피빵","=q1=향긋한 박하 사탕","","=q3=성스러운 투구","=q3=사악한 작은 호박","=q1=할로윈 마법봉 - 박쥐","=q1=할로윈 마법봉 - 유령","=q1=할로윈 마법봉 - 오염된 노움","=q1=할로윈 마법봉 - 자객","=q1=할로윈 마법봉 - 해적","=q1=할로윈 마법봉 - 무작위","=q1=할로윈 마법봉 - 해골","=q1=할로윈 마법봉 - 위습","=q1=콩사탕","=q1=막대 사탕","=q1=초콜릿 바"})
process("Halloween2",21,{"","=q1=얇은 남자 드레나이 가면","=q1=얇은 남자 드워프 가면","=q1=얇은 남자 노움 가면","=q1=얇은 남자 인간 가면","=q1=얇은 남자 나이트 엘프 가면","=q1=얇은 남자 블러드 엘프 가면","=q1=얇은 남자 오크 가면","=q1=얇은 남자 타우렌 가면","=q1=얇은 남자 트롤 가면","=q1=얇은 남자 언데드 가면","=q1=얇은 여자 드레나이 가면","=q1=얇은 여자 드워프 가면","=q1=얇은 여자 노움 가면","=q1=얇은 여자 인간 가면","=q1=얇은 여자 나이트 엘프 가면","=q1=얇은 여자 블러드 엘프 가면","=q1=얇은 여자 오크 가면","=q1=얇은 여자 타우렌 가면","=q1=얇은 여자 트롤 가면","=q1=얇은 여자 언데드 가면"})
process("HarvestFestival",7,{"=q1=추수절 선물","=q1=빛의 이름으로!","=q1=호드의 영웅 헬스크림","=q1=추수절 고기","=q1=추수절 생선","=q1=추수절 과일","=q1=추수절 수정과"})
process("HeadlessHorseman",11,{"=q4=저주받은 기사의 끔찍한 투구","=q4=광적인 환희의 반지","=q4=저주받은 기사의 인장","=q4=사악한 마녀 고리","=q4=저주받은 기사의 불길한 칼날","=q1=무거운 호박등","=q1=축제 사탕","=q4=저주받은 기사의 고삐","=q3=마법의 빗자루","=q3=성스러운 투구","=q3=사악한 작은 호박"})
process("HighCouncil",20,{"","=q4=원소 집중의 고리","=q4=심연의 홀","=q3=심연 가죽 팔보호구","=q3=심연 쇠사슬 어깨갑옷","","=q4=파면의 목걸이","=q4=심연의 홀","=q3=심연 쇠사슬 손목보호대","=q3=심연 판금 견장","","=q4=돌풍의 단망토","=q4=심연의 홀","=q3=심연 헝겊 손목띠","=q3=심연 가죽 어깨보호구","","=q4=대지의 수호 방패","=q4=심연의 홀","=q3=심연 헝겊 아미스","=q3=심연 판금 완갑"})
process("Karrog",11,{"=q3=카로그의 결정","=q2=카로그의 돌기","=q3=바람술사 손목띠","=q3=바람술사 허리띠","=q3=하늘추적자 팔보호구","=q3=하늘추적자 장식끈","=q3=안개장막 팔보호구","=q3=안개장막 허리띠","=q3=회암강철 팔보호구","=q3=회암강철 벨트","=q3=스케티스 고리"})
process("LordAhune",12,{"=q4=얼어붙은 바람의 망토","=q4=얼음 덮인 망토","=q4=혹한의 추위 수의","=q4=서리 군주의 전투 쓰개","=q4=서리 군주의 전쟁 망토","=q3=주문식: 무기 마법부여 - 혹한","=q1=아훈의 파편","=q3=여름 하늘 휘장","=q3=여름 불꽃 휘장","=q3=한기서린 물품 주머니","=q4=군주 아훈의 서리낫","=q3=얼음 조각"})
process("LunarFestival1",24,{"=q2=엘룬의 등불","=q1=녹색 축제 드레스","=q1=분홍색 축제 드레스","=q1=보라색 축제 드레스","=q1=검은색 축제 의상","=q1=파란색 축제 의상","=q1=암녹색 축제 의상","=q1=달의 축제 만두","=q1=엘룬의 양초","=q1=선조의 주화","","=q1=작은 파란색 폭죽","=q1=작은 녹색 폭죽","=q1=작은 빨간색 폭죽","=q1=작은 흰색 폭죽","=q1=작은 노란색 폭죽","=q1=큰 파란색 폭죽","=q1=큰 녹색 폭죽","=q1=큰 빨간색 폭죽","=q1=큰 흰색 폭죽","=q1=큰 노란색 폭죽","","=q1=행운의 연발탄 폭죽","=q1=장로의 월장석"})
process("LunarFestival2",20,{"=q2=설계도: 폭죽 발사대","","=q2=설계도: 작은 파란색 폭죽","=q2=설계도: 작은 녹색 폭죽","=q2=설계도: 작은 빨간색 폭죽","","=q2=설계도: 큰 파란색 폭죽","=q2=설계도: 큰 녹색 폭죽","=q2=설계도: 큰 빨간색 폭죽","=q2=도안: 축제 드레스","=q2=설계도: 연발탄 발사대","","=q2=설계도: 파란색 연발탄","=q2=설계도: 녹색 연발탄","=q2=설계도: 빨간색 연발탄","","=q2=설계도: 큰 파란색 연발탄","=q2=설계도: 큰 녹색 연발탄","=q2=설계도: 큰 빨간색 연발탄","=q2=도안: 축제 의상"})
process("MalevustheMad",12,{"=q3=회암강철 장화","=q3=암흑의 망토","=q3=불가사의의 망토","=q3=이글거리는 망토","=q3=얼어붙은 망토","=q3=생기의 망토","=q2=에테리움 죄수 인식표","=q3=암흑의 고리","=q3=불가사의의 고리","=q3=이글거리는 고리","=q3=얼어붙은 고리","=q3=생기의 고리"})
process("MidsummerFestival",16,{"=q3=춤추는 불길의 화로","=q3=갈무리한 불꽃","=q2=불꽃의 팔찌","=q1=불타는 축제주","=q1=엘더베리 파이","=q1=불에 구운 빵","=q1=한여름 소시지","=q1=불에 구운 스모크","=q1=여름꽃 꽃잎 한 줌","=q1=스모크 재료 주머니","=q1=곡예 횃불","=q1=불타는 꽃","=q1=불꽃축제 관","=q1=불꽃축제 어깨보호대","=q1=여름 예복","=q1=여름 덧신"})
process("Noblegarden",12,{"=q3=마법서: 변이 - 토끼","=q3=행운의 토끼 발","=q1=새봄맞이 머리장식","=q1=우아한 드레스","=q1=새봄맞이 로브","=q1=새봄맞이 꽃","=q1=흰색 턱시도 셔츠","=q1=검은색 턱시도 바지","=q1=꽃 핀 나뭇가지","=q1=귀족의 정원 알","=q1=알 바구니","=q1=귀족의 정원 초콜릿"})
process("PilgrimsBounty_A",20,{"=q2=푸짐한 요리책","=q1=조리법: 매콤한 빵 범벅","=q1=조리법: 호박 파이","=q1=조리법: 새콤달콤 덩굴월귤 소스","=q1=조리법: 고구마 맛탕","=q1=조리법: 서서히 구운 칠면조","=q1=푸짐한 바구니","=q1=텔드랏실 고구마","=q1=톡 쏘는 저습지 덩굴월귤","=q1=잘 여문 엘윈 호박","=q1=가을 약초","=q1=꿀","=q3=칠면조 우리","=q1=순례자 모자","=q1=순례자 의복","=q1=순례자 드레스","=q1=순례자 로브","=q1=순례자 장화","=q1=칠면조 몰이꾼","=q1=칠면조 사냥총"})
process("PilgrimsBounty_H",20,{"=q2=푸짐한 요리책","=q1=조리법: 매콤한 빵 범벅","=q1=조리법: 호박 파이","=q1=조리법: 새콤달콤 덩굴월귤 소스","=q1=조리법: 고구마 맛탕","=q1=조리법: 서서히 구운 칠면조","=q1=푸짐한 바구니","=q1=멀고어 고구마","=q1=톡 쏘는 분노의 강 덩굴월귤","=q1=잘 익은 티리스팔 호박","=q1=가을 약초","=q1=꿀","=q3=칠면조 우리","=q1=순례자 모자","=q1=순례자 의복","=q1=순례자 드레스","=q1=순례자 로브","=q1=순례자 장화","=q1=칠면조 몰이꾼","=q1=칠면조 사냥총"})
process("PorfustheGemGorger",12,{"=q3=바람술사 장화","=q3=암흑의 망토","=q3=불가사의의 망토","=q3=이글거리는 망토","=q3=얼어붙은 망토","=q3=생기의 망토","=q2=에테리움 죄수 인식표","=q3=암흑의 고리","=q3=불가사의의 고리","=q3=이글거리는 고리","=q3=얼어붙은 고리","=q3=생기의 고리"})
process("ScourgeInvasionEvent1",14,{"=q3=은빛 여명회 깃발","=q3=은빛 고서","=q3=은빛 전쟁 뿔피리","=q2=축복받은 마술사 오일","=q2=신성한 숫돌","=q1=은빛 여명회 휘장","=q1=은빛 치유 물약","=q1=은빛 마나 물약","=q2=죽음의 룬","=q1=유령 기념품","","=q4=정의의 휘장","=q4=아케이나이트 절단도끼","=q3=새끼 흡혈박쥐"})
process("ScourgeInvasionEvent2",20,{"","=q4=언데드 정화의 축복받은 어깨보호대","=q4=언데드 정화의 축복받은 로브","=q4=언데드 정화의 축복받은 장갑","=q4=언데드 정화의 축복받은 바지","","=q4=언데드 퇴치의 축복받은 어깨보호구","=q4=언데드 퇴치의 축복받은 튜닉","=q4=언데드 퇴치의 축복받은 장갑","=q4=언데드 퇴치의 축복받은 다리보호구","","=q4=언데드 퇴치의 축복받은 어깨갑옷","=q4=언데드 퇴치의 축복받은 갑옷","=q4=언데드 퇴치의 축복받은 손보호대","=q4=언데드 퇴치의 축복받은 경갑","","=q4=언데드 퇴치의 축복받은 판금 어깨갑옷","=q4=언데드 퇴치의 축복받은 흉갑","=q4=언데드 퇴치의 축복받은 건틀릿","=q4=언데드 퇴치의 축복받은 다리갑옷"})
process("ScourgeInvasionEvent3",22,{"","=q3=발자폰의 허리띠","=q3=리치의 사슬","=q3=발자폰의 지팡이","","=q3=블랙우드의 해골","=q3=군주 블랙우드의 검","=q3=군주 블랙우드의 버클러","","=q3=보복의 망토","=q3=치유의 팔보호구","=q3=어둠의 손아귀","","=q3=얼어붙은 손아귀","=q3=스콘의 얼음 목걸이","=q3=스콘의 뾰족 단검","","=q3=누더기골렘 껍질 다리보호구","=q3=맹렬의 도끼","","=q3=귀부인 팔데리스의 망토","=q3=귀부인 팔데리스의 손가락"})
process("Shartuul",22,{"=q4=타락자의 인장","=q4=마력이 고갈된 천 팔보호구","=q4=마력이 고갈된 사슬 건틀릿","=q3=마력이 고갈된 망토","=q3=마력이 고갈된 반지","=q3=마력이 고갈된 배지","=q3=마력이 고갈된 단검","=q3=마력이 고갈된 검","=q3=마력이 고갈된 양손 도끼","=q3=마력이 고갈된 둔기","=q3=마력이 고갈된 지팡이","=q4=감독관의 반지","=q4=수정매듭 팔보호구","=q4=수정껍질 장갑","=q3=수정매듭 단망토","=q3=꿈수정 고리","=q3=불굴의 배지","=q3=수정이 주입된 비수","=q3=수정으로 벼려낸 검","=q3=에펙시스 도끼","=q3=에펙시스 수정 철퇴","=q3=이글거리는 석영 지팡이"})
process("SkettisHazziksPackage",1,{"=q1=하지크의 가방"})
process("SkettisTalonpriestIshaal",1,{"=q1=이샤알의 연감"})
process("Templars",20,{"","=q3=수정 스틸레토","=q2=심연 헝겊 장갑","=q2=심연 쇠사슬 발덮개","=q2=심연의 문장","","=q3=자수정 전투 지팡이","=q2=심연 헝겊 덧신","=q2=심연 판금 건틀릿","=q2=심연의 문장","","=q3=쐐기돌 장창","=q2=심연 가죽 장화","=q2=심연 쇠사슬 장갑","=q2=심연의 문장","","=q3=일격의 활","=q2=심연 가죽 장갑","=q2=심연 판금 경갑","=q2=심연의 문장"})
process("Terokk",11,{"=q4=테로크의 힘","=q4=테로크의 지혜","=q3=바람술사 다리보호구","=q3=하늘추적자 다리보호구","=q3=안개장막 바지","=q3=회암강철 다리보호구","=q3=갈퀴사제의 선물","=q3=영원한 왕의 브로치","=q3=잃어버린 시간의 조각상","=q3=테로크의 망치","=q3=테로크의 망치"})
process("VakkiztheWindrager",11,{"=q3=바람몰이 손목띠","=q2=바키즈의 비늘","=q3=바람술사 손목띠","=q3=바람술사 허리띠","=q3=하늘추적자 팔보호구","=q3=하늘추적자 장식끈","=q3=안개장막 팔보호구","=q3=안개장막 허리띠","=q3=회암강철 팔보호구","=q3=회암강철 벨트","=q3=스케티스 고리"})
process("Valentineday",20,{"=q3=낭만적인 소풍 바구니","=q1=사랑의 징표","=q1=아름다운 장미","=q1=붉은 꽃잎 한 줌","=q1=은 화살","=q1=진은 화살","=q1=사탕 주머니","=q1=초콜릿 상자","=q1=아름다운 드레스 상자","=q1=정찬복 상자","=q1=사랑의 로켓","=q1=사랑에 빠진 바보","=q1=은은한 향수 - \"허세\"","=q1=은은한 향수 - \"굳은 신념\"","=q1=은은한 향수 - \"기묘한 마법\"","=q1=매혹적인 향수 - \"승리\"","=q1=매혹적인 향수 - \"영원\"","=q1=매혹적인 향수 - \"마녀\"","=q1=사랑의 징표","=q1=아름다운 장식 팔찌"})
process("Valentineday2",23,{"","=q1=아름다운 검은색 드레스","=q1=아름다운 붉은색 드레스","=q1=아름다운 푸른색 드레스","=q1=아름다운 보라색 드레스","","=q1=붉은색 정찬복","=q1=푸른색 정찬복","=q1=보라색 정찬복","","=q1=광란의 욕망","=q1=진한 산딸기 크림","=q1=천사의 유혹","=q1=달콤한 속삭임","","=q1=사랑의 사탕","=q1=사랑의 사탕","=q1=사랑의 사탕","=q1=사랑의 사탕","=q1=사랑의 사탕","=q1=사랑의 사탕","=q1=사랑의 사탕","=q1=사랑의 사탕"})
process("Valentineday3",10,{"=q4=반짝이는 사랑의 눈","=q4=실연제조 장식","=q4=행복에 젖은 춤의 조각","=q4=향긋한 향수 브로치","=q4=순수한 마음의 목걸이","=q3=영원히 아름다운 장미","=q3=비열한 살포자의 복면","=q3=맹독 말랑이","=q3=실연제조기","=q4=커다란 사랑의 로켓"})
process("Winterviel1",29,{"=q2=녹색 겨울 모자","=q2=빨간색 겨울 모자","=q1=겨울맞이 변장도구","=q1=눈뭉치","=q1=눈송이 한 줌","=q1=싱싱한 호랑가시나무","=q1=겨우살이","","=q2=도안: 겨울 장화","=q2=도안: 붉은색 겨울 의복","=q2=도안: 초록색 겨울 의복","=q1=조리법: 따뜻한 사과맛 탄산수","=q1=조리법: 에그노그","=q1=조리법: 생강 과자빵","=q1=막대 사탕","=q1=축제일 치즈케이크","=q1=그라추의 엄마손 고기 파이","=q1=매콤한 산적","=q1=달콤한 축제용 햄","=q1=갈아만든 두유","=q1=정원 녹차","=q1=사과맛 탄산수","=q1=축제일 기념주","=q1=스팀휘들 탄산주","=q1=겨울 할아버지 꽁꽁주","=q1=축제일 향료","=q1=파란 리본달린 포장지","=q1=녹색 리본달린 포장지","=q1=보라색 리본달린 포장지"})
process("Winterviel2",25,{"","=q1=녹색 도우미 상자","=q1=딸랑 방울","=q1=빨간색 도우미 상자","=q1=눈사람 세트","","=q1=즐거운 축제 마법봉","","=q3=로켓 태엽돌이","","=q1=겨울맞이 숯불구이","=q1=겨울맞이 에그노그","","=q2=기계 그린치","=q2=보존된 호랑가시나무","=q2=도안: 겨울날 도끼","=q2=주문식: 무기 마법부여 - 한겨울 추위","=q2=설계도: 눈뭉치제조기 9000","=q2=도안: 겨울 할아버지 장갑","=q1=조제법: 냉기 강화의 비약","=q1=도안: 녹색 축제일 셔츠","","=q1=겨울맞이 과자","","=q1=그라추의 말린 과일 듬뿍 케이크"})
process("WrathbringerLaztarash",12,{"=q3=마나로 벼려낸 구슬","=q3=암흑의 망토","=q3=불가사의의 망토","=q3=이글거리는 망토","=q3=얼어붙은 망토","=q3=생기의 망토","=q2=에테리움 죄수 인식표","=q3=암흑의 고리","=q3=불가사의의 고리","=q3=이글거리는 고리","=q3=얼어붙은 고리","=q3=생기의 고리"})
elseif locale == "ruRU" then
process("ArgentTournament1",13,{"","=q2=Рекомендательный значок Дарнаса","=q2=Рекомендательный значок Экзодара","=q2=Рекомендательный значок Гномрегана","=q2=Рекомендательный значок Стальгорна","=q2=Рекомендательный значок Штормграда","=q1=Удостоверение чемпиона","","=q2=Рекомендательный значок Оргриммара","=q2=Рекомендательный значок Подгорода","=q2=Рекомендательный значок Громового Утеса","=q2=Рекомендательный значок Сен'джин","=q2=Рекомендательный значок Луносвета"})
process("ArgentTournament2",28,{"","=q1=Знамя Дарнаса","=q1=Знамя Экзодара","=q1=Знамя Гномрегана","=q1=Знамя Стальгорна","=q1=Знамя Штормграда","=q1=Дарнасская гербовая накидка","=q1=Экзодарская гербовая накидка","=q1=Гномреганская гербовая накидка","=q1=Стальгорнская гербовая накидка","=q1=Штормградская гербовая накидка","=q1=Гербовая накидка Серебряного Союза","=q1=Печать чемпиона","","=q1=Знамя Оргриммара","=q1=Знамя Подгорода","=q1=Знамя Громового Утеса","=q1=Знамя Сен'джин","=q1=Знамя Луносвета","=q1=Оргриммарская гербовая накидка","=q1=Гербовая накидка Подгорода","=q1=Гербовая накидка Громового Утеса","=q1=Сен'джинская гербовая накидка","=q1=Гербовая накидка Луносвета","=q1=Гербовая накидка Похитителей Солнца","","=q1=Знамя рыцаря Серебряного Авангарда","=q3=Гербовая накидка рыцаря Серебряного Авангарда"})
process("ArgentTournament3",29,{"","=q3=Кушак страждущих сердец","=q3=Опояска вечного древа","=q3=Сапоги проворного уклонения","=q3=Кушак покорного служения","=q3=Сапоги сияющего духа","=q3=Рукавицы попранной гордости","=q3=Ремень славного поражения","=q3=Подпорки неукротимого гнева","=q3=Ожерелье из шелестящих чешуек","=q3=Колье напряженного внимания","=q3=Ожерелье бесстрашия","=q3=Подвеска лазурных снов","=q3=Ярость бретера","=q1=Печать чемпиона","","=q3=Кушак невиданной гордыни","=q3=Воинский пояс лошадиной ярости","=q3=Сапоги честного оруженосца","=q3=Цепь неутоленной ненависти","=q3=Сапоги шепчущей мечты","=q3=Рукавицы исправляющего касания","=q3=Скоба необузданной ярости","=q3=Закаленные в крови высокие ботинки","=q3=Колье звериного неистовства","=q3=Ожерелье из черепов","=q3=Подвеска изумрудного рыцаря","=q3=Кулон из лезвия бритвы","=q3=Ярость бретера"})
process("ArgentTournament4",19,{"","=q4=Кинжал лунной белизны","=q4=Кинжал восходящей луны","=q4=Гномреганский костегрыз","=q4=Клеймор пророка","=q4=Защитник Тельдрассила","=q4=Стальгорнский сокрушитель","=q4=Серебристый сильванский посох","=q4=Каз-моданский мушкетон","=q1=Печать чемпиона","","=q4=Скальпель королевского фармацевта","=q4=Нерворез","=q4=Клинок причитающей банши","=q4=Большой син'дорайский меч","=q4=Топор защитника Сен'джин","=q4=Немилосердный крушитель","=q4=Посох звериного неистовства","=q4=Сен'джинская удлиненная винтовка со штыком"})
process("ArgentTournament5",19,{"","=q3=Оруженосец Серебряного Авангарда","=q3=Плеточник долины Аммен","=q3=Росток Тельдрассила","=q3=Дун-морогский медвежонок","=q3=Элвиннский барашек","=q3=Механобип","=q3=Мерцающий змейчик","","=q3=Уздечка серебряного пони","=q1=Печать чемпиона","","=q3=Орчонок из Серебряного Авангарда","=q3=Мулгорский долгоног","=q3=Сен'джинский фетиш","=q3=Тирисфальский нетопырь","=q3=Дуротарский скорпион","=q3=Чудесная метла","=q3=Мерцающий змейчик"})
process("ArgentTournament6",23,{"","=q4=Стремительный дарнасский туманный саблезуб","=q4=Большой элекк Лазурной Дымки","=q4=Турбодолгоног","=q4=Стремительный стальгорнский баран","=q4=Стремительный элвиннский скакун","=q4=Большой красный элекк","=q4=Стремительный мышастый конь","=q4=Стремительный лунопард","=q4=Стремительный лиловый баран","=q4=Турбодолгоног","=q1=Печать чемпиона","","=q4=Стремительный ящер Черного Копья","=q4=Стремительный боевой конь Отрекшихся","=q4=Стремительный оргриммарский волк","=q4=Стремительный крылобег Луносвета","=q4=Большой мулгорский кодо","=q4=Большой золотичтый кодо","=q4=Стремительный пурпурный волк","=q4=Стремительный лиловый ящер","=q4=Стремительный красный крылобег","=q4=Белый боевой конь-скелет"})
process("ArgentTournament7",11,{"","=q4=Кель'дорайский скакун","=q4=Гиппогриф Серебряного Союза","","=q4=Скакун Серебряного Авангарда","=q4=Боевой конь Серебряного Авангарда","=q4=Серебряный гиппогриф","=q1=Печать чемпиона","","=q4=Крылобег Похитителей Солнца","=q4=Дракондор Похитителей Солнца"})
process("ArgentTournament8",23,{"=q7=Изорванное оплечье Багрового тумана","=q7=Ухоженные железноперые наплечники","=q7=Испачканный наплеч незаметности","=q7=Наплечник защитника Ирода","=q7=Таинственное наплечье Стихий","=q7=Полированный наплеч доблести","=q7=Прозорливый Глаз Зверя","=q7=Стремительная рука правосудия","=q1=Печать чемпиона","=q7=Изорванное одеяние Багрового тумана","=q7=Ухоженная железноперая кираса","=q7=Испачканный мундир незаметности","=q7=Кираса несущего смерть чемпиона","=q7=Мистический жилет стихий","=q7=Полированная кираса доблести","=q7=Сбалансированный пронзатель сердец","=q7=Древний священный заряд Дал'Ренда","=q7=Окровавленный арканитовый жнец","=q7=Аура-каменный боевой молот Преданности","=q7=Древний молот Макхоуэна","=q7=Переналаженный лавовый отвал","=q7=Величавая трость ректора","=q7=Зачарованный древний костяной лук"})
process("ArmbreakerHuffaz",12,{"=q3=Астральное кольцо","=q3=Темный плащ","=q3=Загадочный плащ","=q3=Огненный плащ","=q3=Плащ Безразличия","=q3=Плащ Жизни","=q2=Идентификационная табличка пленника Эфириума","=q3=Темное кольцо","=q3=Загадочное кольцо","=q3=Огненное кольцо","=q3=Простое кольцо Безразличия","=q3=Кольцо жизни"})
process("BashirLanding",24,{"","=q1=Нестабильный настой Древних","=q1=Нестабильный настой Целителя","=q1=Нестабильный настой Бандита","=q1=Нестабильный настой Солдата","","=q3=Неуравновешенный аметист","=q3=Неуравновешенный цитрин","=q3=Неуравновешенный хризолит","=q3=Неуравновешенный сапфир","=q3=Неуравновешенный талассит","=q3=Неуравновешенный топаз","","=q3=Прочный неуравновешенный алмаз","=q3=Могущественный неуравновешенный алмаз","=q1=Модуль ускорителя","=q1=Малая золотая метаморфозная жеода","=q1=Малая серебряная метаморфозная жеода","=q1=Малая медная метаморфозная жеода","=q1=Малая железная метафорфозная жеода","=q1=Большая золотая метаморфозная жеода","=q1=Большая серебряная метаморфозная жеода","=q1=Большая медная метаморфозная жеода","=q1=Большая железная метаморфозная жеода"})
process("BashirStasisChambers",15,{"","=q3=Демонический оплот","=q2=Знак Соправителей","","=q3=Серостальные наплечники","=q2=Знак Соправителей","","=q3=Наплечники Туманного покрова","=q2=Знак Соправителей","","=q3=Мантия Ветропроходчика","=q2=Знак Соправителей","","=q3=Наплечники Небесного следопыта","=q2=Знак Соправителей"})
process("Brewfest1",19,{"=q1=Улучшающие зрение романтические очки Белби","=q1=Улучшающие зрение романтические очки Бликса","=q1=Синяя шляпа Хмельного фестиваля","=q1=Коричневая шляпа Хмельного фестиваля","=q1=Зеленая шляпа Хмельного фестиваля","=q1=Лиловая шляпа Хмельного фестиваля","=q1=Платье Хмельного фестиваля","=q1=Регалии Хмельного фестиваля","=q1=Сапоги Хмельного фестиваля","=q1=Туфли Хмельного фестиваля","=q3=Небольшой бочонок","=q3=Розовый элекк размером с пинту","=q3=Кружка летучего зайцелопа","=q1=Анкета для вступающих в клуб \"Пиво месяца\"","=q2=Сушеные пивные дрожжи с Хмельного фестиваля","=q1=Свежие пивные дрожжи с Хмельного фестиваля","=q1=Свежие дворфские пивные дрожжи с Хмельного фестиваля","=q1=Свежие гоблинские пивные дрожжи с Хмельного фестиваля","=q2=Призовой жетон Хмельного фестиваля"})
process("Brewfest2",15,{"=q3=Зеленая кружка Хмельного фестиваля","=q3=Синяя кружка Хмельного фестиваля","=q3=Желтая кружка Хмельного фестиваля","=q3=Кружка Черного Железа","=q3=Баран Хмельного фестиваля","=q1=Отменное пивко","=q1=Вяленая колбаска","=q1=Соленая колбаска","=q1=Перченый крендель","=q1=Острая колбаска","=q1=Острый луковый соус","=q1=Пикантная копченая колбаска","=q1=Сочная колбаска","=q1=Крендель к пиву","=q1=Золотая цепь"})
process("Brewfest3",20,{"","=q1=Ячменоварское прозрачное","=q1=Ячменоварское светлое","=q1=Ячменоварское темное","","=q1=Гром 45","=q1=Громоварский эль","=q1=Громоварский портер","","=q1=Грог Гордока","=q1=Лошадиное молоко","=q1=Огрский мед","","=q1=Пиво \"Не спеша\"","=q1=Пиво \"Дальний путь\"","=q1=\"Путь Пивовара\"","","=q1=Речная вода из джунглей","=q1=\"Магия пива\"","=q1=Забористый портер"})
process("BrewoftheMonthClub",12,{"=q1=Зимний пилзнер","=q1=Пряное пиво Иззарда","=q1=Ароматная медовуха","=q1=Пенная брага Метока","=q1=Весенний портер","=q1=Светлое пиво Черной горы","=q1=Пойло Тернистой долины","=q1=Дренейский жидкий эль","=q1=Двоичное пойло","=q1=Осенний желудевый эль","=q1=Горькое пойло Бартлетта","=q1=Личная печать Повелителя льда"})
process("ChildrensWeek",12,{"","=q1=Ошейник поросенка","=q1=Крысиная клетка","=q1=Черепаха в коробочке","=q1=Откупные для скряги","","=q3=Яйцо Эгберта","=q3=Дрессировочный ошейник элекка","=q3=Вилли-соня","","=q3=Любопытный маленький оракул","=q3=Любопытный маленький волчер"})
process("CorenDirebrew",12,{"=q4=Древнее маринованное яйцо","=q4=Амулет пузырящегося светлого пива","=q4=Амулет горького темного пива","=q4=Сувенир буяна","=q4=Хромированная подставка Корена","=q4=Мифриловые карманные часы","=q4=Розочка Худовара 2.0","=q4=Пинта Ужаса","=q4=Большой кодо Хмельного фестиваля","=q4=Резвый баран Хмельного фестиваля","=q3=Пульт управления Худовара","=q1=Худое варево Худовара"})
process("Darkmoon1",16,{"=q4=Амулет Новолуния","=q4=Сфера Новолуния","=q2=Большой приз Новолуния","=q2=Малый приз Новолуния","=q2=Поощрительный приз Новолуния","=q1=Ящик Новолуния","=q1=Прошлогодний окорок","=q1=Схема: пульт управления паровым танком","=q1=Прошлогодний окорок","=q1=Цветок Новолуния","=q1=Подарочный купон ярмарки Новолуния","=q3=Кольцо Новолуния","=q2=Ожерелье Новолуния","=q1=Коробка с древесной лягушкой","=q1=Коробка с лесной лягушкой","=q1=Домик Жаблинга"})
process("Darkmoon2",15,{"=q2=Колода Разбойников","=q2=Одеяние Новолуния","=q2=Жилет Новолуния","=q2=Плетеная рубашка Новолуния","=q3=Колода Мечей","=q3=Наплечники из темноткани","=q3=Наплечные пластины","=q3=Лазурные наплечные щитки","=q3=Колода Магов","=q3=Ожерелье Новолуния","=q3=Подвеска Новолуния","=q3=Колода Демонов","=q3=Кортик Новолуния","=q3=Топор палача Новолуния","=q3=Посох мага Новолуния"})
process("Darkmoon3",16,{"=q4=Колода Зверей","=q4=Карта Новолуния: Синий Дракон","=q4=Колода Элементалей","=q4=Карта Новолуния: Водоворот","=q4=Колода Порталов","=q4=Карта Новолуния: Круговерть Пустоты","=q4=Колода Полководцев","=q4=Карта Новолуния: Героизм","=q4=Колода Благословений","=q4=Карта Новолуния: Молитва","=q4=Колода Ярости","=q4=Карта Новолуния: Отмщение","=q4=Колода Безумия","=q4=Карта Новолуния: Безумец","=q4=Колода Ураганов","=q4=Карта Новолуния: Гнев"})
process("Darkmoon4",11,{"=q4=Колода Хаоса","=q4=Карта Новолуния: Берсерк!","=q4=Колода Призм","=q4=Карта Новолуния: Иллюзия","=q4=Колода Нежити","=q4=Карта Новолуния: Смерть","=q4=Колода Аристократов","=q4=Карта Новолуния: Величие","=q4=Карта Новолуния: Величие","=q4=Карта Новолуния: Величие","=q4=Карта Новолуния: Величие"})
process("DarkscreecherAkkarai",11,{"=q3=Рукавицы еретика","=q2=Когти Аккарая","=q3=Наручники Ветропроходчика","=q3=Пояс Ветропроходчика","=q3=Наручи Небесного следопыта","=q3=Шнурованный ремень Небесного следопыта","=q3=Наручи Туманного покрова","=q3=Пояс Туманного покрова","=q3=Серостальные наручи","=q3=Серостальной ремень","=q3=Кольцо Скеттиса"})
process("DayoftheDead",8,{"=q1=Мрачная марионетка","=q1=Причудливая маска черепа","=q1=Букет оранжевых бархатцев","=q1=Череп с конфетами","=q1=Свеча духов","=q1=Оранжевые бархатцы","=q1=Рецепт: поминальный хлеб","=q1=Поминальный хлеб"})
process("Dukes",21,{"","=q3=Кожаные поножи Бездны","=q3=Закаленный стальной боевой молот","=q3=Перстень Бездны","=q2=Матерчатый кушак Бездны","=q1=Уголек Огарра","","=q3=Кольчужные набедренники Бездны","=q3=Темнокаменный клеймор","=q3=Перстень Бездны","=q2=Кожаный пояс Бездны","","=q3=Матерчатые штаны Бездны","=q3=Воздаятель душ","=q3=Перстень Бездны","=q2=Латный ремень Бездны","","=q3=Ножные латы Бездны","=q3=Искрящийся хрустальный жезл","=q3=Перстень Бездны","=q2=Кольчужный поясок Бездны"})
process("ElementalInvasion",18,{"","=q3=Скипетр барона Огнерра","=q3=Туз из колоды Элементалей","=q2=Элементарный уголь","","=q3=Замерзшее ожерелье Темпестрии","=q3=Туз из колоды Элементалей","=q3=Выкройка: перчатки Грозового Покрова","=q2=Кольцо безразличия","","=q3=Каменная шкура Лавиниона","=q3=Туз из колоды Элементалей","=q2=Закаленное каменное кольцо","","=q3=Кушак Ветробоя","=q3=Туз из колоды Элементалей","=q3=Выкройка: перчатки Грозового Покрова","=q2=Зефирский плащ"})
process("FelTinkererZortan",12,{"=q3=Сапоги туманного покрова","=q3=Темный плащ","=q3=Загадочный плащ","=q3=Огненный плащ","=q3=Плащ Безразличия","=q3=Плащ Жизни","=q2=Идентификационная табличка пленника Эфириума","=q3=Темное кольцо","=q3=Загадочное кольцо","=q3=Огненное кольцо","=q3=Простое кольцо Безразличия","=q3=Кольцо жизни"})
process("FishingExtravaganza",12,{"","=q3=Арканитовая удочка","=q3=Крючок лучшего удильщика","","=q2=Рыба-ангел Кифэра","=q2=Синий полосатик Браунелла","=q2=Дезийская ставрида","=q2=Камнешкурый кашалот","","=q2=Счастливая шляпа рыболова","=q2=Небывалые рыбацкие сапоги Ната Пэгла","=q2=Сверхпрочная этерниевая леска"})
process("Forgosh",12,{"=q3=Сапоги небесного следопыта","=q3=Темный плащ","=q3=Загадочный плащ","=q3=Огненный плащ","=q3=Плащ Безразличия","=q3=Плащ Жизни","=q2=Идентификационная табличка пленника Эфириума","=q3=Темное кольцо","=q3=Загадочное кольцо","=q3=Огненное кольцо","=q3=Простое кольцо Безразличия","=q3=Кольцо жизни"})
process("GezzaraktheHuntress",11,{"=q3=Клык Геззарак","=q2=Когти Геззарак","=q3=Наручники Ветропроходчика","=q3=Пояс Ветропроходчика","=q3=Наручи Небесного следопыта","=q3=Шнурованный ремень Небесного следопыта","=q3=Наручи Туманного покрова","=q3=Пояс Туманного покрова","=q3=Серостальные наручи","=q3=Серостальной ремень","=q3=Кольцо Скеттиса"})
process("Gulbor",12,{"=q3=Астральное ожерелье","=q3=Темный плащ","=q3=Загадочный плащ","=q3=Огненный плащ","=q3=Плащ Безразличия","=q3=Плащ Жизни","=q2=Идентификационная табличка пленника Эфириума","=q3=Темное кольцо","=q3=Загадочное кольцо","=q3=Огненное кольцо","=q3=Простое кольцо Безразличия","=q3=Кольцо жизни"})
process("GurubashiArena",6,{"=q3=Накулачники Арены","=q3=Наручи Арены","=q3=Поручи Арены","=q3=Тяжелые наручи Арены","=q2=Повелитель Арены","=q3=Знак великого мастера Арены"})
process("Halloween1",26,{"=q3=Фонарь-тыква","=q2=Сумка из тыквы","=q2=Хлипкая волшебная метла","=q1=Леденцы Стилины","=q1=Изумительный соус из Луноречья","=q1=Ореховая паста Беллары","=q1=Тыквовинская конфета","","=q1=Жевательная сквернучка","=q1=Г.Л.А.Д.О.С.Т.И.","=q1=Коричная огненная глыба","=q1=Успокоительная мятная конфетка","","=q3=Священный шлем","=q3=Зловещая тыковка","=q1=Волшебная палочка – костюм летучей мыши","=q1=Волшебная палочка – костюм призрака","=q1=Волшебная палочка – костюм лепрогнома","=q1=Волшебная палочка – костюм ниндзя","=q1=Волшебная палочка – костюм пирата","=q1=Волшебная палочка – случайный костюм","=q1=Волшебная палочка – костюм скелета","=q1=Волшебная палочка – костюм огонька","=q1=Сладкое зернышко","=q1=Леденец","=q1=Сладкий батончик"})
process("Halloween2",21,{"","=q1=Тонкая мужская маска дренея","=q1=Тонкая мужская маска дворфа","=q1=Тонкая мужская маска гнома","=q1=Тонкая мужская маска","=q1=Тонкая мужская маска ночного эльфа","=q1=Тонкая мужская маска эльфа крови","=q1=Тонкая мужская маска орка","=q1=Тонкая мужская маска таурена","=q1=Тонкая мужская маска тролля","=q1=Тонкая мужская маска нежити","=q1=Тонкая женская маска дренея","=q1=Тонкая женская маска дворфа","=q1=Тонкая женская маска гнома","=q1=Тонкая женская маска","=q1=Тонкая маска ночной эльфийки","=q1=Тонкая маска эльфийки крови","=q1=Тонкая женская маска орка","=q1=Тонкая женская маска таурена","=q1=Тонкая женская маска тролля","=q1=Тонкая женская маска нежити"})
process("HarvestFestival",7,{"=q1=Дар урожая","=q1=Во имя Света!","=q1=Зычный глас Орды","=q1=Мясо вепря с праздника урожая","=q1=Рыба с праздника урожая","=q1=Фрукты с праздника урожая","=q1=Нектар с праздника урожая"})
process("HeadlessHorseman",11,{"=q4=Ужасающий шлем Всадника","=q4=Кольцо ликования вурдалака","=q4=Печать Всадника","=q4=Кольцо злобной ведьмы","=q4=Губительный клинок Всадника","=q1=Утяжеленный фонарь из тыквы","=q1=Тыквовинские сладости","=q4=Поводья Всадника без головы","=q3=Волшебная метла","=q3=Священный шлем","=q3=Зловещая тыковка"})
process("HighCouncil",20,{"","=q4=Кольцо центра стихий","=q4=Скипетр Бездны","=q3=Кожаные наручи Бездны","=q3=Кольчужное наплечье Бездны","","=q4=Ожерелье Волны","=q4=Скипетр Бездны","=q3=Кольчужные боевые наручи Бездны","=q3=Латные эполеты Бездны","","=q4=Накидка Ветрорезов","=q4=Скипетр Бездны","=q3=Матерчатое нарукавье Бездны","=q3=Кожаные наплечники Бездны","","=q4=Защита Земли","=q4=Скипетр Бездны","=q3=Матерчатый нарамник Бездны","=q3=Латные тяжелые наручи Бездны"})
process("Karrog",11,{"=q3=Осколок Каррога","=q2=Хребет Каррога","=q3=Наручники Ветропроходчика","=q3=Пояс Ветропроходчика","=q3=Наручи Небесного следопыта","=q3=Шнурованный ремень Небесного следопыта","=q3=Наручи Туманного покрова","=q3=Пояс Туманного покрова","=q3=Серостальные наручи","=q3=Серостальной ремень","=q3=Кольцо Скеттиса"})
process("LordAhune",12,{"=q4=Плащ леденящих ветров","=q4=Плащ оков льда","=q4=Накидка зимней стужи","=q4=Боевая накидка Повелителя Холода","=q4=Боевой плащ Повелителя Холода","=q3=Формула чар для оружия - смертельный мороз","=q1=Осколки Ахуна","=q3=Гербовая накидка летних небес","=q3=Гербовая накидка летнего пламени","=q3=Сумка с замороженными товарами","=q4=Ледяная коса повелителя Ахуна","=q3=Осколочек льда"})
process("LunarFestival1",24,{"=q2=Лампада Элуны","=q1=Праздничное зеленое платье","=q1=Праздничное розовое платье","=q1=Праздничное лиловое платье","=q1=Праздничный черный костюм","=q1=Праздничный синий костюм","=q1=Праздничный бирюзовый костюм","=q1=Праздничные клецки","=q1=Свеча Элуны","=q1=Монета Наследия","","=q1=Маленькая синяя ракета","=q1=Маленькая зеленая ракета","=q1=Маленькая красная ракета","=q1=Маленькая белая ракета","=q1=Маленькая желтая ракета","=q1=Большая синяя ракета","=q1=Большая зеленая ракета","=q1=Большая красная ракета","=q1=Большая белая ракета","=q1=Большая желтая ракета","","=q1=Подарочная связка фейерверков","=q1=Лунный камень предков"})
process("LunarFestival2",20,{"=q2=Схема: пусковая установка для фейерверков","","=q2=Схема: маленькая синяя ракета","=q2=Схема: маленькая зеленая ракета","=q2=Схема: маленькая красная ракета","","=q2=Схема: большая синяя ракета","=q2=Схема: большая зеленая ракета","=q2=Схема: большая красная ракета","=q2=Выкройка: праздничное платье","=q2=Схема: пусковая установка для связок фейерверков","","=q2=Схема: связка синих фейерверков","=q2=Схема: связка зеленых фейерверков","=q2=Схема: связка красных фейерверков","","=q2=Схема: большая связка синих фейерверков","=q2=Схема: большая связка зеленых фейерверков","=q2=Схема: большая связка красных фейерверков","=q2=Выкройка: праздничный костюм"})
process("MalevustheMad",12,{"=q3=Серостальные сапоги","=q3=Темный плащ","=q3=Загадочный плащ","=q3=Огненный плащ","=q3=Плащ Безразличия","=q3=Плащ Жизни","=q2=Идентификационная табличка пленника Эфириума","=q3=Темное кольцо","=q3=Загадочное кольцо","=q3=Огненное кольцо","=q3=Простое кольцо Безразличия","=q3=Кольцо жизни"})
process("MidsummerFestival",16,{"=q3=Жаровня танцующего пламени","=q3=Зачарованное пламя","=q2=Наручи испепеления","=q1=Праздничный грог","=q1=Бузинный пирог","=q1=Поджаренная булочка","=q1=Летняя колбаска","=q1=Печеный чокопай","=q1=Горсть летних лепестков","=q1=Мешок с ингредиентами для чоко-пая","=q1=Факел жонглера","=q1=Пылающий цвет","=q1=Корона Огненного празднества","=q1=Оплечье Праздника Огня","=q1=Одеяния лета","=q1=Сандалии лета"})
process("Noblegarden",12,{"=q3=Фолиант Превращения: кролик","=q3=Лапка весеннего кролика","=q1=Весенний венец","=q1=Элегантное платье","=q1=Весеннее убранство","=q1=Весенние цветы","=q1=Белая рубашка под смокинг","=q1=Черные брюки под смокинг","=q1=Цветущая ветвь","=q1=Праздничное яйцо","=q1=Корзина для яиц","=q1=Праздничное шоколадное яйцо"})
process("PilgrimsBounty_A",20,{"=q2=Пиршественная поваренная книга","=q1=Рецепт: пряная хлебная запеканка","=q1=Рецепт: тыквенный пирог","=q1=Рецепт: клюквенный соус","=q1=Рецепт: засахаренный батат","=q1=Рецепт: запеченная индейка","=q1=Пиршественная корзина","=q1=Тельдрассильский батат","=q1=Кислая клюква из Болотины","=q1=Спелая элвиннская тыква","=q1=Осенние травы","=q1=Мед","=q3=Клетка с индейкой","=q1=Шляпа странника","=q1=Наряд странника","=q1=Платье странника","=q1=Одеяние странника","=q1=Сапоги странника","=q1=Призыватель индейки","=q1=Индейкомет"})
process("PilgrimsBounty_H",20,{"=q2=Пиршественная поваренная книга","=q1=Рецепт: пряная хлебная запеканка","=q1=Рецепт: тыквенный пирог","=q1=Рецепт: клюквенный соус","=q1=Рецепт: засахаренный батат","=q1=Рецепт: запеченная индейка","=q1=Пиршественная корзина","=q1=Мулгорский батат","=q1=Кислая клюква с берегов реки Строптивой","=q1=Спелая тирисфальская тыква","=q1=Осенние травы","=q1=Мед","=q3=Клетка с индейкой","=q1=Шляпа странника","=q1=Наряд странника","=q1=Платье странника","=q1=Одеяние странника","=q1=Сапоги странника","=q1=Призыватель индейки","=q1=Индейкомет"})
process("PorfustheGemGorger",12,{"=q3=Сапоги Ветропроходчика","=q3=Темный плащ","=q3=Загадочный плащ","=q3=Огненный плащ","=q3=Плащ Безразличия","=q3=Плащ Жизни","=q2=Идентификационная табличка пленника Эфириума","=q3=Темное кольцо","=q3=Загадочное кольцо","=q3=Огненное кольцо","=q3=Простое кольцо Безразличия","=q3=Кольцо жизни"})
process("ScourgeInvasionEvent1",14,{"=q3=Знамя Серебряного Рассвета","=q3=Серебряный том","=q3=Серебряный боевой рог","=q2=Благословенное волшебное масло","=q2=Освященное точило","=q1=Гербовая накидка Серебряного Рассвета","=q1=Флакон с лечебным зельем Серебряного Рассвета","=q1=Флакон с зельем маны Серебряного Рассвета","=q2=Некротическая руна","=q1=Мучительные воспоминания","","=q4=Знак справедливости","=q4=Арканитовый потрошитель","=q3=Детеныш нетопыря"})
process("ScourgeInvasionEvent2",20,{"","=q4=Благословенное оплечье искоренения нежити","=q4=Благословенное одеяние искоренения нежити","=q4=Благословенные перчатки искоренения нежити","=q4=Благословенные брюки искоренения нежити","","=q4=Благословенные наплечные пластины истребления нежити","=q4=Благословенный мундир истребления нежити","=q4=Благословенные захваты истребления нежити","=q4=Благословенные поножи истребления нежити","","=q4=Благословенное наплечье истребления нежити","=q4=Благословенный хауберк истребления нежити","=q4=Благословенные боевые рукавицы истребления нежити","=q4=Благословенные наголенники истребления нежити","","=q4=Благословенный наплеч истребления нежити","=q4=Благословенная кираса истребления нежити","=q4=Благословенные рукавицы истребления нежити","=q4=Благословенные ножные латы истребления нежити"})
process("ScourgeInvasionEvent3",22,{"","=q3=Боевой пояс Балзафона","=q3=Цепи лича","=q3=Посох Балзафона","","=q3=Берцовая кость лорда Блэквуда","=q3=Клинок лорда Блэквуда","=q3=Кулачный щит лорда Блэквуда","","=q3=Плащ Реваншиона","=q3=Наручи лечения","=q3=Хватка Тьмы","","=q3=Промерзшие рукавицы","=q3=Ледяное колье Насмешника","=q3=Фокусирующий кинжал Насмешника","","=q3=Поножи из кожи поганища","=q3=Калечащий топор","","=q3=Мантия леди Фалтер'есс","=q3=Палец леди Фалтер'есс"})
process("Shartuul",22,{"=q4=Перстень Осквернителя","=q4=Истощенные матерчатые наручи","=q4=Истощенные кольчужные рукавицы","=q3=Истощенный плащ","=q3=Истощенное кольцо","=q3=Истощенный жетон","=q3=Истощенный кинжал","=q3=Истощенный меч","=q3=Выщербленная двуручная секира","=q3=Истощенная палица","=q3=Истощенный посох","=q4=Кольцо инспектора","=q4=Украшенные кристаллами наручи","=q4=Повязки хрусталиска","=q3=Украшенная кристаллами накидка","=q3=Кольцо с Кристаллом Сна","=q3=Жетон упорства","=q3=Инкрустированный кристаллами нож","=q3=Меч Хрустальной Кузницы","=q3=Апекситовый колун","=q3=Апекситовая хрустальная палица","=q3=Пламенеющий кварцевый посох"})
process("SkettisHazziksPackage",1,{"=q1=Сверток Хаззика"})
process("SkettisTalonpriestIshaal",1,{"=q1=Альманах Ишааля"})
process("Templars",20,{"","=q3=Хрустальный остроконечный стилет","=q2=Матерчатые повязки Бездны","=q2=Кольчужные башмаки Бездны","=q2=Талисман Бездны","","=q3=Аметистовый воинский посох","=q2=Матерчатые туфли Бездны","=q2=Латные рукавицы Бездны","=q2=Талисман Бездны","","=q3=Разрубающая камни глефа","=q2=Кожаные сапоги Бездны","=q2=Кольчужные боевые рукавицы Бездны","=q2=Талисман Бездны","","=q3=Прошивающий насквозь лук","=q2=Кожаные перчатки Бездны","=q2=Латные наголенники Бездны","=q2=Талисман Бездны"})
process("Terokk",11,{"=q4=Мощь Терокка","=q4=Мудрость Терокка","=q3=Поножи Направителя ветров","=q3=Поножи Небесного следопыта","=q3=Штаны Туманного покрова","=q3=Серостальные поножи","=q3=Дар жрецов Когтя","=q3=Брошь бессмертного короля","=q3=Статуэтка Потерянного времени","=q3=Молоток Терокка","=q3=Молоток Терокка"})
process("VakkiztheWindrager",11,{"=q3=Кольца Ветроярости","=q2=Чешуя Ваккиза","=q3=Наручники Ветропроходчика","=q3=Пояс Ветропроходчика","=q3=Наручи Небесного следопыта","=q3=Шнурованный ремень Небесного следопыта","=q3=Наручи Туманного покрова","=q3=Пояс Туманного покрова","=q3=Серостальные наручи","=q3=Серостальной ремень","=q3=Кольцо Скеттиса"})
process("Valentineday",20,{"=q3=Корзинка для романтического пикника","=q1=Знак любви","=q1=Прекрасная роза","=q1=Горсть розовых лепестков","=q1=Стрела с серебряным древком","=q1=Стрела с древком из истинного серебра","=q1=Пакетик с леденцами","=q1=Коробка шоколадных конфет","=q1=Коробка с красивым платьем","=q1=Коробка с вечерним костюмом","=q1=Романтический фейерверк","=q1=Манекен влюбленного","=q1=Одеколон \"Бравада\"","=q1=Одеколон \"ДОБЛЕСТЬ\"","=q1=Одеколон \"Волшебство\"","=q1=Духи \"Победа\"","=q1=Духи \"Вместе навсегда\"","=q1=Духи \"Чаровница\"","=q1=Знак любви","=q1=Чудесный браслет-оберег"})
process("Valentineday2",23,{"","=q1=Красивое черное платье","=q1=Красивое красное платье","=q1=Красивое синее платье","=q1=Красивое лиловое платье","","=q1=Красный вечерний костюм","=q1=Синий вечерний костюм","=q1=Лиловый вечерний костюм","","=q1=Темное желание","=q1=Ягодный-преягодный крем","=q1=Сливочное блаженство","=q1=Сладкий десерт","","=q1=Леденец-сердечко","=q1=Леденец-сердечко","=q1=Леденец-сердечко","=q1=Леденец-сердечко","=q1=Леденец-сердечко","=q1=Леденец-сердечко","=q1=Леденец-сердечко","=q1=Леденец-сердечко"})
process("Valentineday3",10,{"=q4=Взгляд казановы","=q4=Оберег разбитого сердца","=q4=Осколок пируэтов счастья","=q4=Кулон со сладким ароматом","=q4=Колье чистого сердца","=q3=Вечно прекрасная роза","=q3=Маска злобного фумигатора","=q3=Токсичный выбросец","=q3=Сердцеед","=q4=Большая ракета любви"})
process("Winterviel1",29,{"=q2=Зеленый новогодний колпак","=q2=Красный новогодний колпак","=q1=Набор для переодевания Зимнего Покрова","=q1=Снежок","=q1=Горсть снежинок","=q1=Свежий остролист","=q1=Омела","","=q2=Выкройка: зимние сапоги","=q2=Выкройка: красные зимние одежды","=q2=Выкройка: зеленые зимние одежды","=q1=Рецепт: горячий яблочный сидр","=q1=Рецепт: гоголь-моголь","=q1=Рецепт: имбирное печенье","=q1=Леденцовая палочка","=q1=Праздничный сыр","=q1=Домашний пирожок Гракку","=q1=Острый бифштекс","=q1=Праздничная ветчина в меду","=q1=Сборная солянка с фасолью","=q1=Чай \"Зеленый сад\"","=q1=Газированный яблочный сидр","=q1=Праздничная выпивка","=q1=Шипучка Хитрой Шестеренки","=q1=Зимний эль Предков","=q1=Праздничные пряности","=q1=Оберточная бумага с голубыми лентами","=q1=Оберточная бумага с зелеными лентами","=q1=Оберточная бумага с лиловыми лентами"})
process("Winterviel2",25,{"","=q1=Коробочка с зеленым помощником","=q1=Звенящий колокольчик","=q1=Коробочка с красным помощником","=q1=Набор снеговика","","=q1=Жезл праздничного веселья","","=q3=Заводной ракетобот","","=q1=Поджарка Зимнего Покрова","=q1=Гоголь-моголь Зимнего Покрова","","=q2=Механический Гринч","=q2=Сушеный остролист","=q2=Чертеж: Кромка Зимы","=q2=Формула чар для оружия - могущество зимы","=q2=Схема: создатель снега 9000","=q2=Выкройка: перчатки Великого Отца","=q1=Рецепт: эликсир силы льда","=q1=Выкройка: зеленая выходная рубашка","","=q1=Печенье Зимнего Покрова","","=q1=Кекс Гракку с мясом и фруктами"})
process("WrathbringerLaztarash",12,{"=q3=Кованая сфера маны","=q3=Темный плащ","=q3=Загадочный плащ","=q3=Огненный плащ","=q3=Плащ Безразличия","=q3=Плащ Жизни","=q2=Идентификационная табличка пленника Эфириума","=q3=Темное кольцо","=q3=Загадочное кольцо","=q3=Огненное кольцо","=q3=Простое кольцо Безразличия","=q3=Кольцо жизни"})
end
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,22 @@
## Interface: 30300
## Title: AtlasLoot_WrathoftheLichKing
## Title-zhCN: AtlasLoot |cFF0099FF[巫妖王之怒]|r
## Title-zhTW: |r|cFF0099FF[地圖]|rAL 巫妖王之怒
## Notes: AtlasLoot loot tables from the Wrath of the Lich King
## Notes-zhCN: AtlasLoot Enhanced 的《巫妖王之怒》副本掉落信息
## Notes-zhTW: AtlasLoot 巫妖王之怒副本掉落物品資料庫
## Author: Hegarol
## Version: v5.11.04
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2
## X-Website: http://www.atlasloot.net
## Dependencies: AtlasLoot
## LoadOnDemand: 1
## X-Curse-Packaged-Version: v5.11.04
## X-Curse-Project-Name: Atlasloot Enhanced
## X-Curse-Project-ID: atlasloot-enhanced
## X-Curse-Repository-ID: wow/atlasloot-enhanced/mainline
wrathofthelichking.lua
localization.lua
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff