You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
1.9 KiB

local GlobalAddonName, ExRT = ...
local UnitGUID, UnitCombatlogname = UnitGUID, ExRT.F.UnitCombatlogname
local module = ExRT:New("Pets",nil,true)
module.db.petsDB = {}
local petsDB = module.db.petsDB
function module.main:ADDON_LOADED()
module:RegisterEvents("COMBAT_LOG_EVENT_UNFILTERED",'UNIT_PET')
local n = GetNumGroupMembers() or 0
local partyType = IsInRaid() and "raid" or "party"
for i=1,n do
module.main:UNIT_PET(partyType..i)
end
module.main:UNIT_PET("player")
end
function module.main.COMBAT_LOG_EVENT_UNFILTERED(_,event,_,sourceGUID,sourceName,_,_,destGUID,destName)
if event == "SPELL_SUMMON" or event == "SPELL_CREATE" then
petsDB[destGUID] = {sourceGUID,sourceName,destName}
end
end
function module.main:UNIT_PET(arg)
local guid = UnitGUID(arg.."pet")
if guid and not petsDB[guid] then
petsDB[guid] = {UnitGUID(arg),UnitCombatlogname(arg),UnitCombatlogname(arg.."pet")}
end
end
ExRT.F.Pets = {}
function ExRT.F.Pets:getOwnerName(petName,thirdDB)
local db = thirdDB or petsDB
for i,val in pairs(db) do
if petName == val[3] then
return val[2]
end
end
end
function ExRT.F.Pets:getOwnerNameByGUID(petGUID,thirdDB)
local db = thirdDB or petsDB
for i,val in pairs(db) do
if petGUID == i then
return val[2]
end
end
end
function ExRT.F.Pets:getOwnerGUID(petGUID,thirdDB)
local db = thirdDB or petsDB
for i,val in pairs(db) do
if petGUID == i then
return val[1]
end
end
end
function ExRT.F.Pets:getOwnerGUIDByName(petName,thirdDB)
local db = thirdDB or petsDB
for i,val in pairs(db) do
if petName == val[3] then
return val[1]
end
end
end
function ExRT.F.Pets:getPetsDB()
return petsDB
end
function ExRT.F.Pets:getPets(ownerGUID,thirdDB)
local db = thirdDB or petsDB
local result = {}
for petGUID,petData in pairs(db) do
if petData[1] == ownerGUID then
result[#result + 1] = petGUID
end
end
return result
end