Skip to content

Commit

Permalink
Core/BossPrototype: Adapt UnitTokenFromGUID for some classic-only u…
Browse files Browse the repository at this point in the history
…se cases
  • Loading branch information
funkydude committed Oct 23, 2024
1 parent 9d9cd50 commit d503121
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 2 deletions.
24 changes: 23 additions & 1 deletion Core/BossPrototype.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1109,11 +1109,33 @@ do
"raid31target", "raid32target", "raid33target", "raid34target", "raid35target",
"raid36target", "raid37target", "raid38target", "raid39target", "raid40target",
}
local friendlyUnitTable = {
"player", "party1", "party2", "party3", "party4",
"raid1", "raid2", "raid3", "raid4", "raid5",
"raid6", "raid7", "raid8", "raid9", "raid10",
"raid11", "raid12", "raid13", "raid14", "raid15",
"raid16", "raid17", "raid18", "raid19", "raid20",
"raid21", "raid22", "raid23", "raid24", "raid25",
"raid26", "raid27", "raid28", "raid29", "raid30",
"raid31", "raid32", "raid33", "raid34", "raid35",
"raid36", "raid37", "raid38", "raid39", "raid40",
}
local unitTableCount = #targetOnlyUnitTable
--- Fetches a unit id by scanning available targets.
-- @string guid The GUID of the unit to find
-- @return unit id if found, nil otherwise
function boss:UnitTokenFromGUID(guid)
function boss:UnitTokenFromGUID(guid, isFriendly)
if isFriendly and not UnitTokenFromGUID then -- Hack for classic content where UnitTokenFromGUID doesn't exist
for i = 1, #friendlyUnitTable do
local targetUnit = friendlyUnitTable[i]
local targetGUID = UnitGUID(targetUnit)
if targetGUID == guid then
return targetUnit
end
end
return -- End hack
end

local unit = UnitTokenFromGUID(guid) -- Check Blizz API first
if unit then
return unit
Expand Down
24 changes: 23 additions & 1 deletion Core/BossPrototype_Classic.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1182,11 +1182,33 @@ do
"raid31target", "raid32target", "raid33target", "raid34target", "raid35target",
"raid36target", "raid37target", "raid38target", "raid39target", "raid40target",
}
local friendlyUnitTable = {
"player", "party1", "party2", "party3", "party4",
"raid1", "raid2", "raid3", "raid4", "raid5",
"raid6", "raid7", "raid8", "raid9", "raid10",
"raid11", "raid12", "raid13", "raid14", "raid15",
"raid16", "raid17", "raid18", "raid19", "raid20",
"raid21", "raid22", "raid23", "raid24", "raid25",
"raid26", "raid27", "raid28", "raid29", "raid30",
"raid31", "raid32", "raid33", "raid34", "raid35",
"raid36", "raid37", "raid38", "raid39", "raid40",
}
local unitTableCount = #targetOnlyUnitTable
--- Fetches a unit id by scanning available targets.
-- @string guid The GUID of the unit to find
-- @return unit id if found, nil otherwise
function boss:UnitTokenFromGUID(guid)
function boss:UnitTokenFromGUID(guid, isFriendly)
if isFriendly and not UnitTokenFromGUID then -- Hack for classic content where UnitTokenFromGUID doesn't exist
for i = 1, #friendlyUnitTable do
local targetUnit = friendlyUnitTable[i]
local targetGUID = UnitGUID(targetUnit)
if targetGUID == guid then
return targetUnit
end
end
return -- End hack
end

local unit = UnitTokenFromGUID(guid) -- Check Blizz API first
if unit then
return unit
Expand Down

0 comments on commit d503121

Please sign in to comment.