Files
ShaguTweaks-Extras-ClassicAPI/mods/raid-party.lua
T
2025-04-30 00:52:25 +02:00

63 lines
1.8 KiB
Lua

local _G = ShaguTweaks.GetGlobalEnv()
local T = ShaguTweaks.T
local module = ShaguTweaks:register({
title = T["Use As Party Frames"],
description = T["Use raid frames to display party members in regular groups"],
expansions = { ["vanilla"] = true, ["tbc"] = false },
category = T["Raid Frames"],
maintainer = "@shagu (GitHub)",
enabled = nil,
})
module.enable = function(self)
local raid = ShaguTweaksRaidFrame
if not raid then return end
local RaidOnEvent = raid:GetScript("OnEvent")
raid:RegisterEvent("PARTY_LEADER_CHANGED")
raid:RegisterEvent("PARTY_LOOT_METHOD_CHANGED")
raid:RegisterEvent("PARTY_MEMBERS_CHANGED")
raid:SetScript("OnEvent", function()
-- run default scripts
RaidOnEvent()
-- break here in normal raid scenario
if UnitInRaid("player") then return end
-- check for party mode
if GetNumPartyMembers() > 0 then
-- initialize raid frame
local x, y = 1, 0
for index = 1, 40 do
-- clear current unitstr assignments
this.cluster.frames[index].unitstr = nil
this.cluster.frames[index]:Hide()
if index <= 5 then
-- determine best unitstr
local unitstr = index == 1 and "player" or "party" .. index-1
-- assign party to first raid group of frames
this.cluster.frames[index].unitstr = unitstr
this.cluster.frames[index].groupid = 1
this.cluster.frames[index]:Show()
-- save required raid frame size
if UnitExists(unitstr) then
y = math.max(y, index)
end
end
end
-- set raid frame size
raid.cluster:SetWidth(x * (raid.cluster.config["raid.width"]+2) + 6)
raid.cluster:SetHeight(y * (raid.cluster.config["raid.height"]+1) + 7)
raid:Show()
else
raid:Hide()
end
end)
end