vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:

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