-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathroster.lua
144 lines (136 loc) · 3.91 KB
/
roster.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
local Recount = _G.Recount
local revision = tonumber(string.sub("$Revision: 1309 $", 12, -3))
if Recount.Version < revision then
Recount.Version = revision
end
local type = type
local strsplit = strsplit
local GetNumPartyMembers = GetNumPartyMembers or GetNumSubgroupMembers
local GetNumRaidMembers = GetNumRaidMembers or GetNumGroupMembers
local IsInRaid = IsInRaid
local UnitAffectingCombat = UnitAffectingCombat
local UnitExists = UnitExists
local UnitGUID = UnitGUID
local UnitName = UnitName
function Recount:CheckPartyCombatWithPets()
if IsInRaid() and GetNumRaidMembers() > 0 then
for i = 1, GetNumRaidMembers() do
if UnitAffectingCombat("raid"..i) then
return true
end
if UnitAffectingCombat("raidpet"..i) then
return true
end
end
end
if not IsInRaid() and GetNumPartyMembers() > 0 then
for i = 1, GetNumPartyMembers() do
if UnitAffectingCombat("party"..i) then
return true
end
if UnitAffectingCombat("partypet"..i) then
return true
end
end
end
if UnitAffectingCombat("player") then
return true
end
return false
end
function Recount:GetUnitIDFromName(nameRealm)
if type(nameRealm) ~= "string" then
return nil
end -- Bandaid for raid frame issues
--local realm = strmatch(name, "\\-(.-)")
local name, realm = strsplit("-", nameRealm, 2)
--[[if realm then
name = name:match("(.-)-") -- Strip the realm part for this function
end]] -- Resike: This is bad for some pet type detection
--[[if UnitExists(name) then -- Elsia: Speed boost, yay
return name
else
local lname = name:lower()
if lname:sub(1, 3) == "pet" or lname:sub(1, 4) == "raid" or lname:sub(1, 5) == "party" or lname:sub(1, 6) == "player" or lname:sub(1, 6) == "target" then
return Recount:GetPetPrefixUnit(name, realm)
end
return nil
end--]]
return Recount:GetPetPrefixUnit(name, realm)
end
function Recount:GetPetPrefixUnit(name, realm)
if Recount.PlayerName == name and not realm then
return "player"
end
if IsInRaid() and GetNumRaidMembers() > 0 then
for i = 1, GetNumRaidMembers() do
local unitname, unitrealm = UnitName("raid"..i)
if unitname == name and unitrealm == realm then
return "raid"..i
end
end
elseif GetNumPartyMembers() > 0 then
for i = 1, GetNumPartyMembers() do
local unitname, unitrealm = UnitName("party"..i)
if unitname == name and unitrealm == realm then
return "party"..i
end
end
end
return nil
end
function Recount:FindTargetedUnit(name)
if UnitExists(name) then
return name
end
for i = 1, GetNumRaidMembers() do
if UnitName("raid"..i) and name == UnitName("raid"..i.."target") then
return "raid"..i.."target"
elseif UnitName("raidpet"..i.."target") and name == UnitName("raidpet"..i.."target") then
return "raidpet"..i.."target"
end
end
for i = 1, GetNumPartyMembers() do
if UnitName("party"..i) and name == UnitName("party"..i.."target") then
return "party"..i.."target"
elseif UnitName("partypet"..i) and name == UnitName("partypet"..i.."target") then
return "partypet"..i.."target"
end
end
if name == UnitName("playertarget") then
return "playertarget"
elseif name == UnitName("focus") then
return "focus"
end
end
function Recount:FindOwnerPetFromGUID(petName, petGUID)
local ownerName
local ownerGUID
local ownerRealm
for i = 1, GetNumRaidMembers() do
if petGUID == UnitGUID("raidpet"..i) then
ownerName, ownerRealm = UnitName("raid"..i)
if ownerRealm then
ownerName = ownerName.."-"..ownerRealm
end
ownerGUID = UnitGUID("raid"..i)
return ownerName, ownerGUID
end
end
for i = 1, GetNumPartyMembers() do
if petGUID == UnitGUID("partypet"..i) then
ownerName, ownerRealm = UnitName("party"..i)
if ownerRealm then
ownerName = ownerName.."-"..ownerRealm
end
ownerGUID = UnitGUID("party"..i)
return ownerName, ownerGUID
end
end
if petGUID == UnitGUID("pet") then
ownerName = UnitName("player")
ownerGUID = UnitGUID("player")
return ownerName, ownerGUID
end
return nil, nil
end