vanilla-wow-addons – Rev 1
?pathlinks?
assert( oRA, "oRA not found!")
------------------------------
-- Are you local? --
------------------------------
local L = AceLibrary("AceLocale-2.2"):new("oRAPItem")
-- DO NOT translate these, use the locale tables below
local reagents = {
["PRIEST"] = "SacredCandle",
["MAGE"] = "ArcanePowder",
["DRUID"] = "WildThornroot",
["WARLOCK"] = "SoulShard",
["SHAMAN"] = "Ankh",
["PALADIN"] = "SymbolofDivinity",
["ROGUE"] = "FlashPowder",
}
----------------------------
-- Localization --
----------------------------
L:RegisterTranslations("enUS", function() return {
["itemparticipant"] = true,
["item"] = true,
["Item"] = true,
["Options for item checks."] = true,
["SacredCandle"] = "Sacred Candle",
["ArcanePowder"] = "Arcane Powder",
["WildThornroot"] = "Wild Thornroot",
["Ankh"] = "Ankh",
["SoulShard"] = "Soul Shard",
["SymbolofDivinity"] = "Symbol of Divinity",
["FlashPowder"] = "Flash Powder",
["Participant/Item"] = true,
["Disable Checks"] = true,
["Disable"] = true,
["Disable Responding to Item Checks."] = true,
} end )
L:RegisterTranslations("koKR", function() return {
["Item"] = "아이템",
["Options for item checks."] = "아이템 확인 설정",
["SacredCandle"] = "성스러운 양초",
["ArcanePowder"] = "불가사의한 가루",
["WildThornroot"] = "야생 가시",
["Ankh"] = "십자가",
["SoulShard"] = "영혼의 조각",
["SymbolofDivinity"] = "신앙의 징표",
["FlashPowder"] = "섬광 화약",
["Participant/Item"] = "부분/아이템",
["Disable Checks"] = "확인 응답 안함",
["Disable"] = "사용안함",
["Disable Responding to Item Checks."] = "아이템 확인에 대한 응답을 하지 않습니다.",
} end )
L:RegisterTranslations("zhCN", function() return {
["itemparticipant"] = "itemparticipant",
["item"] = "物品",
["Options for item checks."] = "物品检查选项",
["SacredCandle"] = "神圣蜡烛",
["ArcanePowder"] = "魔粉",
["WildThornroot"] = "野生棘根草",
["Ankh"] = "十字章",
["SoulShard"] = "灵魂碎片",
["SymbolofDivinity"] = "神圣符印",
["FlashPowder"] = "闪光粉",
["Participant/Item"] = "Participant/Item",
["Disable Checks"] = "禁止检查",
["Disable"] = "禁止",
["Disable Responding to Item Checks."] = "禁止回复物品检查",
} end )
L:RegisterTranslations("zhTW", function() return {
["itemparticipant"] = "itemparticipant",
["item"] = "物品",
["Options for item checks."] = "物品檢查選項",
["SacredCandle"] = "神聖蠟燭",
["ArcanePowder"] = "魔粉",
["WildThornroot"] = "野生棘根草",
["Ankh"] = "十字章",
["SoulShard"] = "靈魂碎片",
["SymbolofDivinity"] = "神聖符印",
["FlashPowder"] = "閃光粉",
["Participant/Item"] = "隊員/物品",
["Disable Checks"] = "停用檢查",
["Disable"] = "停用",
["Disable Responding to Item Checks."] = "停止回應物品檢查。",
} end )
L:RegisterTranslations("deDE", function() return {
["SacredCandle"] = "Hochheilige Kerze",
["ArcanePowder"] = "Arkanes Pulver",
["WildThornroot"] = "Wilder Dornwurz",
["Ankh"] = "Ankh",
["SymbolofDivinity"] = "Symbol der Offenbarung",
["FlashPowder"] = "Blitzstrahlpulver",
["SoulShard"] = "Seelensplitter",
} end )
L:RegisterTranslations("frFR", function() return {
--["itemparticipant"] = true,
--["item"] = true,
["Item"] = "Objet",
["Options for item checks."] = "Options concernant les v\195\169rifications des objets.",
["SacredCandle"] = "Bougie sacr\195\169e",
["ArcanePowder"] = "Poudre des arcanes",
["WildThornroot"] = "Ronceterre sauvage",
["Ankh"] = "Ankh",
["SoulShard"] = "Fragment d'\195\162me",
["SymbolofDivinity"] = "Symbole de divinit\195\169",
["FlashPowder"] = "Poudre aveuglante",
["Participant/Item"] = "Participant/Objet",
["Disable Checks"] = "D\195\169sactiver les v\195\169rifications",
["Disable"] = "D\195\169sactiver",
["Disable Responding to Item Checks."] = "D\195\169sactive l'envoi d'une r\195\169ponse lors des v\195\169rifications des objets.",
} end )
----------------------------------
-- Module Declaration --
----------------------------------
oRAPItem = oRA:NewModule(L["itemparticipant"])
oRAPItem.defaults = {
disable = false,
}
oRAPItem.participant = true
oRAPItem.name = L["Participant/Item"]
oRAPItem.consoleCmd = L["item"]
oRAPItem.consoleOptions = {
type = "group",
desc = L["Options for item checks."],
name = L["Item"],
args = {
[L["Disable"]] = {
type = "toggle",
name = L["Disable Checks"],
desc = L["Disable Responding to Item Checks."],
get = function() return oRAPItem.db.profile.disable end,
set = function(v) oRAPItem.db.profile.disable = v end,
},
}
}
------------------------------
-- Initialization --
------------------------------
function oRAPItem:OnEnable()
self:RegisterCheck("ITMC", "oRA_ItemCheck")
self:RegisterCheck("REAC", "oRA_ReagentCheck")
end
function oRAPItem:OnDisable()
self:UnregisterAllEvents()
self:UnregisterCheck("ITMC")
self:UnregisterCheck("REAC")
end
-------------------------
-- Event Handlers --
-------------------------
function oRAPItem:oRA_ItemCheck( msg, author)
if not self:IsValidRequest(author) then return end
msg = self:CleanMessage(msg)
local _, _, itemname = string.find(msg, "^ITMC (.+)$")
if itemname then
if self.db.profile.disable then
self:SendMessage("ITM -1 "..itemname.." "..author)
else
local numitems = self:GetItems(itemname)
if numitems and numitems > 0 then
self:SendMessage("ITM "..numitems.." "..itemname.." "..author)
end
end
end
end
function oRAPItem:oRA_ReagentCheck(msg, author)
if not self:IsValidRequest(author) then return end
msg = self:CleanMessage(msg)
if self.db.profile.disable then
self:SendMessage("REA -1 "..author )
else
local numitems = self:GetReagents()
if numitems and numitems > 0 then
self:SendMessage("REA " .. numitems .. " " .. author )
end
end
end
-------------------------
-- Utility Functions --
-------------------------
function oRAPItem:GetItems( itemname )
local numitems = 0
for bag = 4, 0, -1 do
local size = GetContainerNumSlots(bag)
if size > 0 then
for slot=1, size, 1 do
local ilink = GetContainerItemLink(bag,slot)
if ilink then
local _, _, name = string.find(ilink, "%[(.+)%]")
if string.find(name, itemname) then
local _, itemcount, _, _, _ = GetContainerItemInfo(bag,slot)
numitems = numitems + itemcount
end
end
end
end
end
return numitems
end
function oRAPItem:GetReagents()
local numitems = -1
if UnitClass("player") then
local _,class = UnitClass("player")
if reagents[class] then
numitems = self:GetItems( L[reagents[class]] )
end
end
return numitems
end