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.

118 lines
3.4 KiB

local GlobalAddonName, ExRT = ...
local VMRT = nil
local module = ExRT:New("WhoPulled",ExRT.L.WhoPulled)
local ELib,L = ExRT.lib,ExRT.L
local UnitAffectingCombat, string_find = UnitAffectingCombat, string.find
module.db.lastPull = nil
module.db.lastBossName = nil
module.db.whoPulled = nil
module.db.isPet = nil
function module.options:Load()
self:CreateTilte()
local function UpdatePage()
local pull = "-"
if module.db.lastPull then
pull = date("%d/%m/%Y %H:%M:%S",module.db.lastPull).." "..(module.db.lastBossName or "")
end
self.lastPull:SetText(L.WhoPulledlastPull..": "..pull)
if module.db.isPet then
self.Name:SetText((module.db.whoPulled or "").." ("..PET.." "..module.db.isPet..")")
else
self.Name:SetText(module.db.whoPulled or "")
end
end
self.lastPull = ELib:Text(self,"",12):Point("TOP",0,-50):Top():Color()
self.Name = ELib:Text(self,"",18):Point("TOP",0,-65):Top():Color()
self.chatCheck = ELib:Check(self,L.WhoPulledChatOption,not VMRT.WhoPulled.DisableChat):Point("BOTTOMLEFT",10,40):OnClick(function(self)
VMRT.WhoPulled.DisableChat = not self:GetChecked()
end)
function self:OnShow()
UpdatePage()
end
end
function module.main:ADDON_LOADED()
VMRT = _G.VMRT
VMRT.WhoPulled = VMRT.WhoPulled or {}
module:RegisterEvents('ENCOUNTER_START')
module:RegisterEvents('ZONE_CHANGED_NEW_AREA')
module.main:ZONE_CHANGED_NEW_AREA()
end
local affectedCombat,affectedCombatPetOwner = nil
local function WhoPulledFetch()
if affectedCombat then
module.db.whoPulled = affectedCombat
if affectedCombatPetOwner then
module.db.isPet = affectedCombatPetOwner
end
if not VMRT.WhoPulled.DisableChat then
local _,class = UnitClass(affectedCombatPetOwner or affectedCombat)
local color = ExRT.F.classColor(class)
4 years ago
print("|cffffff00MRT|r "..L.WhoPulled..": |c"..color..affectedCombat..(affectedCombatPetOwner and " ["..affectedCombatPetOwner.."]" or ""))
end
return true
end
end
function module.main:ENCOUNTER_START(encounterID, encounterName, difficultyID, groupSize)
module.db.whoPulled = nil
module.db.isPet = nil
module.db.lastPull = time()
module.db.lastBossName = encounterName
if not WhoPulledFetch() then
C_Timer.After(1,WhoPulledFetch)
end
end
local function ZoneNewFunction()
local _, zoneType, difficulty, _, _, _, _, mapID = GetInstanceInfo()
if zoneType == "raid" or zoneType == "party" then
module:RegisterEvents('UNIT_FLAGS','PLAYER_REGEN_DISABLED','PLAYER_REGEN_ENABLED')
else
module:UnregisterEvents('UNIT_FLAGS','PLAYER_REGEN_DISABLED','PLAYER_REGEN_ENABLED')
end
end
function module.main:ZONE_CHANGED_NEW_AREA()
ExRT.F.ScheduleTimer(ZoneNewFunction, 2)
end
local function ClearAffectedCombat()
affectedCombat = nil
affectedCombatPetOwner = nil
end
function module.main:UNIT_FLAGS(unit)
if not affectedCombat and UnitAffectingCombat(unit) and (string_find(unit,"^raid") or unit == "player" or string_find(unit,"^party")) then
affectedCombat = UnitName(unit)
if string_find(unit,"pet") then
local ownerUnitID = unit:gsub("pet","")
affectedCombatPetOwner = UnitName(ownerUnitID)
end
--print('Combat',affectedCombat)
C_Timer.After(3,ClearAffectedCombat)
end
end
function module.main:PLAYER_REGEN_DISABLED(unit)
module:UnregisterEvents('UNIT_FLAGS')
end
function module.main:PLAYER_REGEN_ENABLED(unit)
ZoneNewFunction()
5 years ago
end