Add files via upload
This commit is contained in:
@@ -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
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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>
|
||||
@@ -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
@@ -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
|
||||
@@ -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
Reference in New Issue
Block a user