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.

120 lines
3.7 KiB

--========================================================--
-- Scorpio Secure Battle Pet Handler --
-- --
-- Author : kurapica125@outlook.com --
-- Create Date : 2021/03/29 --
--========================================================--
if not Scorpio.IsRetail then return end
--========================================================--
Scorpio "Scorpio.Secure.BattlePetHandler" "1.0.0"
--========================================================--
------------------------------------------------------
-- Action Handler
------------------------------------------------------
handler = ActionTypeHandler {
Name = "battlepet",
PickupSnippet = "Custom",
UpdateSnippet = [[
local target = ...
self:SetAttribute("*type*", "macro")
self:SetAttribute("*macrotext*", "/summonpet "..target)
]],
ClearSnippet = [[
self:SetAttribute("*type*", nil)
self:SetAttribute("*macrotext*", nil)
]],
}
------------------------------------------------------
-- Module Event Handler
------------------------------------------------------
SUMMON_RANDOM_FAVORITE_PET_SPELL= 243819
SUMMON_RANDOM_ID = 0
-- Event handler
function OnEnable(self)
OnEnable = nil
C_PetJournal.PickupSummonRandomPet()
local ty, pick = GetCursorInfo()
ClearCursor()
SUMMON_RANDOM_ID = pick
return handler:RefreshActionButtons()
end
------------------------------------------------------
-- System Event Handler
------------------------------------------------------
__SystemEvent__()
function PET_JOURNAL_LIST_UPDATE()
return handler:RefreshActionButtons()
end
------------------------------------------------------
-- Overwrite methods
------------------------------------------------------
function DelayRefreshIcon(self)
if self.ActionType == "battlepet" then
local target, icon = self.ActionTarget
if target == SUMMON_RANDOM_ID then
icon = GetSpellTexture(SUMMON_RANDOM_FAVORITE_PET_SPELL)
else
icon = select(9, C_PetJournal.GetPetInfoByPetID(target))
end
self.Icon = icon
end
end
function handler:PickupAction(target)
if target == SUMMON_RANDOM_ID then
return C_PetJournal.PickupSummonRandomPet()
else
return C_PetJournal.PickupPet(target)
end
end
function handler:GetActionTexture()
local target, icon = self.ActionTarget
if target == SUMMON_RANDOM_ID then
icon = GetSpellTexture(SUMMON_RANDOM_FAVORITE_PET_SPELL)
else
icon = select(9, C_PetJournal.GetPetInfoByPetID(target))
end
if not icon then Delay(1, DelayRefreshIcon, self) end
return icon
end
function handler:SetTooltip(tip)
local target = self.ActionTarget
if target == SUMMON_RANDOM_ID then
return tip:SetSpellByID(SUMMON_RANDOM_FAVORITE_PET_SPELL)
else
local speciesID, _, _, _, _, _, _, name, _, _, _, sourceText, description, _, _, tradable, unique = C_PetJournal.GetPetInfoByPetID(target)
if speciesID then
tip:SetText(name, 1, 1, 1)
if sourceText and sourceText ~= "" then
tip:AddLine(sourceText, 1, 1, 1, true)
end
if description and description ~= "" then
tip:AddLine(" ")
tip:AddLine(description, nil, nil, nil, true)
end
tip:Show()
end
end
end