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
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
|