vanilla-wow-addons – Rev 1
?pathlinks?
local XPerl_Player_Pet_Events = {}
----------------------
-- Loading Function --
----------------------
function XPerl_Player_Pet_OnLoad()
-- Events
this:RegisterEvent("PLAYER_ENTERING_WORLD")
this:RegisterEvent("PLAYER_LEAVING_WORLD")
this.time = 0
XPerl_InitFadeFrame(this)
-- Set here to reduce amount of function calls made
this:SetScript("OnEvent", XPerl_Player_Pet_OnEvent)
this:SetScript("OnUpdate", XPerl_Player_Pet_OnUpdate)
this:SetScript("OnShow", XPerl_Player_Pet_UpdatePortrait)
XPerl_RegisterHighlight(XPerl_Player_Pet_CastClickOverlay, 2)
XPerl_RegisterPerlFrames(this, {"NameFrame", "StatsFrame", "PortraitFrame", "LevelFrame", "HappyFrame"})
this.FlashFrames = {XPerl_Player_Pet_NameFrame, XPerl_Player_Pet_LevelFrame,
XPerl_Player_Pet_StatsFrame, XPerl_Player_Pet_PortraitFrame}
end
-------------------
-- Event Handler --
-------------------
local function XPerl_Player_Pet_RegisterSome()
this:RegisterEvent("UNIT_PET")
this:RegisterEvent("UNIT_HAPPINESS")
this:RegisterEvent("PET_STABLE_UPDATE")
this:RegisterEvent("PET_STABLE_SHOW")
this:RegisterEvent("PET_STABLE_CLOSED")
this:RegisterEvent("PET_STABLE_UPDATE_PAPERDOLL")
end
local function XPerl_Player_Pet_RegisterForPet()
this:RegisterEvent("UNIT_AURA")
this:RegisterEvent("UNIT_FOCUS")
this:RegisterEvent("UNIT_MAXFOCUS")
this:RegisterEvent("PET_ATTACK_START")
this:RegisterEvent("UNIT_FACTION")
this:RegisterEvent("UNIT_FLAGS")
this:RegisterEvent("UNIT_DYNAMIC_FLAGS")
this:RegisterEvent("UNIT_PET_EXPERIENCE")
this:RegisterEvent("UNIT_MODEL_CHANGED")
XPerl_RegisterBasics()
end
local function XPerl_Player_Pet_UnregisterSome()
this:UnregisterEvent("UNIT_PET")
this:UnregisterEvent("UNIT_HAPPINESS")
this:UnregisterEvent("PET_STABLE_UPDATE")
this:UnregisterEvent("PET_STABLE_SHOW")
this:UnregisterEvent("PET_STABLE_CLOSED")
this:UnregisterEvent("PET_STABLE_UPDATE_PAPERDOLL")
end
local function XPerl_Player_Pet_UnregisterForPet()
this:UnregisterEvent("UNIT_AURA")
this:UnregisterEvent("UNIT_FOCUS")
this:UnregisterEvent("UNIT_MAXFOCUS")
this:UnregisterEvent("PET_ATTACK_START")
this:UnregisterEvent("UNIT_FACTION")
this:UnregisterEvent("UNIT_FLAGS")
this:UnregisterEvent("UNIT_DYNAMIC_FLAGS")
this:UnregisterEvent("UNIT_PET_EXPERIENCE")
this:UnregisterEvent("UNIT_MODEL_CHANGED")
XPerl_UnregisterBasics()
end
-------------------------
-- The Update Function --
-------------------------
local function XPerl_Player_Pet_CheckPet()
if (UnitExists("pet")) then
if (UnitIsVisible("pet")) then
XPerl_CancelFade(XPerl_Player_Pet)
XPerl_Player_Pet:Show()
XPerl_Player_Pet_RegisterForPet()
return true
end
end
XPerl_Player_Pet_UnregisterForPet()
XPerl_StartFade(XPerl_Player_Pet)
return false
end
-- XPerl_Player_Pet_UpdateName
local function XPerl_Player_Pet_UpdateName()
local petname = UnitName("pet")
if (petname == UNKNOWNOBJECT) then
XPerl_Player_Pet_NameFrame_NameBarText:SetText("")
else
XPerl_Player_Pet_NameFrame_NameBarText:SetText(petname)
end
if (UnitIsPVP("player")) then
XPerl_Player_Pet_NameFrame_NameBarText:SetTextColor(0, 1, 0, XPerlConfig.TextTransparency)
else
XPerl_Player_Pet_NameFrame_NameBarText:SetTextColor(0.5, 0.5, 1, XPerlConfig.TextTransparency)
end
end
-- XPerl_Player_Pet_UpdateLevel
local function XPerl_Player_Pet_UpdateLevel()
local petlevel = UnitLevel("pet")
local petxp, petxpmax = GetPetExperience()
XPerl_Player_Pet_StatsFrame_XPBar:SetStatusBarColor(0.3, 0.3, 1, 1)
XPerl_Player_Pet_StatsFrame_XPBarBG:SetVertexColor(0.3, 0.3, 1, 0.25)
XPerl_Player_Pet_StatsFrame_XPBar:SetMinMaxValues(0, petxpmax)
XPerl_Player_Pet_StatsFrame_XPBar:SetValue(petxp)
XPerl_Player_Pet_LevelFrameText:SetText(petlevel)
end
-- XPerl_Player_Pet_UpdateHealth
local function XPerl_Player_Pet_UpdateHealth()
local pethealth = UnitHealth("pet")
local pethealthmax = UnitHealthMax("pet")
XPerl_SetHealthBar(XPerl_Player_Pet_StatsFrame_HealthBar, pethealth, pethealthmax)
if (UnitIsDead("pet")) then
XPerl_Player_Pet_StatsFrame_HealthBarText:SetText(XPERL_LOC_DEAD)
XPerl_Player_Pet_StatsFrame_ManaBarText:Hide()
end
end
local function XPerl_Player_Pet_UpdateManaType()
XPerl_SetManaBarType("pet", XPerl_Player_Pet_StatsFrame_ManaBar, XPerl_Player_Pet_StatsFrame_ManaBarBG)
end
-- XPerl_Player_Pet_UpdateMana()
local function XPerl_Player_Pet_UpdateMana()
local petmana = UnitMana("pet")
local petmanamax = UnitManaMax("pet")
XPerl_Player_Pet_StatsFrame_ManaBar:SetMinMaxValues(0, petmanamax)
XPerl_Player_Pet_StatsFrame_ManaBar:SetValue(petmana)
XPerl_Player_Pet_StatsFrame_ManaBarText:SetText(petmana.."/"..petmanamax)
if (XPerlConfig.ShowPlayerPetValues == 1) then
XPerl_Player_Pet_StatsFrame_ManaBarText:Show()
end
end
-- XPerl_Player_Pet_CombatFlash
local function XPerl_Player_Pet_CombatFlash(elapsed, argNew, argGreen)
if (XPerl_CombatFlashSet (elapsed, XPerl_Player_Pet, argNew, argGreen)) then
XPerl_CombatFlashSetFrames(XPerl_Player_Pet)
end
end
-- XPerl_Player_Pet_UpdatePortrait()
function XPerl_Player_Pet_UpdatePortrait()
if (XPerlConfig.ShowPlayerPetPortrait == 1) then
if (XPerlConfig.ShowPlayerPetPortrait3D == 1) then
XPerl_Player_Pet_PortraitFrame_Portrait:Hide()
XPerl_Player_Pet_PortraitFrame_Portrait3D:Show()
XPerlSetPortrait3D(XPerl_Player_Pet_PortraitFrame_Portrait3D, "pet")
else
XPerl_Player_Pet_PortraitFrame_Portrait3D.last3DTime = nil
XPerl_Player_Pet_PortraitFrame_Portrait:Show()
XPerl_Player_Pet_PortraitFrame_Portrait3D:Hide()
SetPortraitTexture(XPerl_Player_Pet_PortraitFrame_Portrait, "pet")
end
end
end
-- XPerl_Player_Pet_OnUpdate
function XPerl_Player_Pet_OnUpdate()
if (this.PlayerFlash) then
XPerl_Player_Pet_CombatFlash(arg1, false)
end
XPerl_ProcessFade(XPerl_Player_Pet)
end
--------------------
-- Buff Functions --
--------------------
local function GetBuffButton(buffnum, debuff, createIfAbsent)
local buffType
if (debuff == 1) then
buffType = "DeBuff"
else
buffType = "Buff"
end
local name = "XPerl_Player_Pet_BuffFrame_"..buffType..buffnum
local button = getglobal(name)
if (not button and createIfAbsent) then
button = CreateFrame("Button", name, XPerl_Player_Pet_BuffFrame, "XPerl_"..buffType.."Template")
button:SetID(buffnum)
local size = XPerlConfig.PlayerPetBuffSize * (1 + (0.3 * debuff))
button:SetHeight(size)
button:SetWidth(size)
if (debuff == 1) then
button:SetScript("OnEnter", XPerl_Player_Pet_SetDeBuffTooltip)
else
button:SetScript("OnEnter", XPerl_Player_Pet_SetBuffTooltip)
end
button:SetScript("OnLeave", XPerl_PlayerTipHide)
button:ClearAllPoints()
if (buffnum == 1) then
if (debuff == 1) then
button:SetPoint("TOPLEFT", 0, -(XPerlConfig.PlayerPetBuffSize + 1))
else
button:SetPoint("TOPLEFT", 0, 0)
end
else
local prevButton = getglobal("XPerl_Player_Pet_BuffFrame_"..buffType..(buffnum - 1))
button:SetPoint("TOPLEFT", prevButton, "TOPRIGHT", 1 + debuff, 0)
end
end
return button
end
local function XPerl_Player_Pet_Buff_UpdateAll ()
if (UnitExists("pet")) then
for buffnum=1,10 do
local buff, buffApplications = UnitBuff("pet", buffnum)
local button = GetBuffButton(buffnum, 0, buff)
if (buff) then
local icon = getglobal(button:GetName().."Icon")
local count = getglobal(button:GetName().."Count")
icon:SetTexture(buff)
if ( buffApplications > 1 ) then
count:SetText(buffApplications)
count:Show()
else
count:Hide()
end
button:Show()
elseif (button) then
button:Hide()
end
end
for buffnum=1,8 do
local debuff, debuffApplications, debuffType = UnitDebuff("pet", buffnum)
local button = GetBuffButton(buffnum, 1, debuff)
if (debuff) then
local icon = getglobal(button:GetName().."Icon")
local count = getglobal(button:GetName().."Count")
local border = getglobal(button:GetName().."Border")
icon:SetTexture(debuff)
if ( debuffApplications > 1 ) then
count:SetText(debuffApplications)
count:Show()
else
count:Hide()
end
local borderColor = DebuffTypeColor[(debuffType or "none")]
border:SetVertexColor(borderColor.r, borderColor.g, borderColor.b)
button:Show()
elseif (button) then
button:Hide()
end
end
XPerl_CheckDebuffs("pet", {XPerl_Player_Pet_NameFrame, XPerl_Player_Pet_PortraitFrame, XPerl_Player_Pet_LevelFrame, XPerl_Player_Pet_StatsFrame})
end
end
function XPerl_Player_Pet_SetBuffTooltip ()
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT")
GameTooltip:SetUnitBuff("pet", this:GetID())
end
function XPerl_Player_Pet_SetDeBuffTooltip ()
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT")
GameTooltip:SetUnitDebuff("pet", this:GetID())
end
---------------
-- Happiness --
---------------
local function XPerl_Player_Pet_SetHappiness()
local happiness, damagePercentage, loyaltyRate = GetPetHappiness()
if (not happiness) then
happiness = 3
end
if ( happiness == 1 ) then
XPerl_Player_Pet_HappyFrame_PetHappinessTexture:SetTexCoord(0.375, 0.5625, 0, 0.359375)
elseif ( happiness == 2 ) then
XPerl_Player_Pet_HappyFrame_PetHappinessTexture:SetTexCoord(0.1875, 0.375, 0, 0.359375)
elseif ( happiness == 3 ) then
XPerl_Player_Pet_HappyFrame_PetHappinessTexture:SetTexCoord(0, 0.1875, 0, 0.359375)
end
if ( happiness ~= nil ) then
XPerl_Player_Pet_HappyFrame_PetHappiness.tooltip = getglobal("PET_HAPPINESS"..happiness)
XPerl_Player_Pet_HappyFrame_PetHappiness.tooltipDamage = format(PET_DAMAGE_PERCENTAGE, damagePercentage)
if ( loyaltyRate < 0 ) then
XPerl_Player_Pet_HappyFrame_PetHappiness.tooltipLoyalty = getglobal("LOSING_LOYALTY")
elseif ( loyaltyRate > 0 ) then
XPerl_Player_Pet_HappyFrame_PetHappiness.tooltipLoyalty = getglobal("GAINING_LOYALTY")
else
XPerl_Player_Pet_HappyFrame_PetHappiness.tooltipLoyalty = nil
end
end
if (XPerlConfig.PetHappiness == 1 and (XPerlConfig.PetHappinessSad == 0 or happiness < 3)) then
XPerl_Player_Pet_HappyFrame:Show()
if (XPerlConfig.PetFlashWhenSad == 1 and happiness < 3) then
if (not UIFrameIsFlashing(XPerl_Player_Pet_HappyFrame)) then
UIFrameFlash(XPerl_Player_Pet_HappyFrame, 0.5, 0.5, 30, 1, 0, 1)
end
else
if (UIFrameIsFlashing(XPerl_Player_Pet_HappyFrame)) then
UIFrameFlashStop(XPerl_Player_Pet_HappyFrame)
UIFrameFlashUpdate(1)
end
end
else
if (UIFrameIsFlashing(XPerl_Player_Pet_HappyFrame)) then
UIFrameFlashStop(XPerl_Player_Pet_HappyFrame)
UIFrameFlashUpdate(1)
end
XPerl_Player_Pet_HappyFrame:Hide()
end
end
--------------------
-- Click Handlers --
--------------------
function XPerl_Player_Pet_OnClick(button)
if (XPerl_OnClick_Handler(button, "pet")) then
return
end
if (button == "RightButton") then
HideDropDownMenu(1)
ToggleDropDownMenu(1, nil, PetFrameDropDown, "XPerl_Player_Pet_StatsFrame", 0, 0)
end
end
-- XPerl_Player_Pet_Update_Control
local function XPerl_Player_Pet_Update_Control()
if (UnitIsCharmed("pet")) then
XPerl_Player_Pet_NameFrame_Warning:Show()
else
XPerl_Player_Pet_NameFrame_Warning:Hide()
end
end
-- XPerl_Player_Pet_UpdateCombat
local function XPerl_Player_Pet_UpdateCombat()
if (UnitExists("pet")) then
if (UnitAffectingCombat("pet")) then
XPerl_Player_Pet_NameFrame_ActivityStatus:Show()
else
XPerl_Player_Pet_NameFrame_ActivityStatus:Hide()
end
XPerl_Player_Pet_Update_Control()
end
end
function XPerl_Player_Pet_UpdateDisplay ()
if (XPerl_Player_Pet_CheckPet()) then
XPerl_CancelFade(XPerl_Player_Pet)
XPerl_Player_Pet_UpdatePortrait()
XPerl_Player_Pet_UpdateName()
XPerl_Player_Pet_UpdateHealth()
XPerl_Player_Pet_UpdateManaType()
XPerl_Player_Pet_UpdateMana()
XPerl_Player_Pet_UpdateLevel()
XPerl_Player_Pet_SetHappiness()
XPerl_Player_Pet_Buff_UpdateAll()
XPerl_Player_Pet_UpdateCombat()
end
end
-------------------
-- Event Handler --
-------------------
function XPerl_Player_Pet_OnEvent()
local func = XPerl_Player_Pet_Events[event]
if (func) then
func()
else
XPerl_ShowMessage("EXTRA EVENT")
end
end
-- PLAYER_ENTERING_WORLD
function XPerl_Player_Pet_Events:PLAYER_ENTERING_WORLD()
--XPerl_Player_Pet.PlayerFlash = 0
XPerl_Player_Pet_RegisterSome()
end
-- PLAYER_LEAVING_WORLD
function XPerl_Player_Pet_Events:PLAYER_LEAVING_WORLD()
XPerl_Player_Pet_UnregisterSome()
end
-- UNIT_AURA
function XPerl_Player_Pet_Events:UNIT_AURA()
if (arg1 == "pet") then
XPerl_Player_Pet_Buff_UpdateAll()
end
end
-- UNIT_PET
function XPerl_Player_Pet_Events:UNIT_PET()
XPerl_Player_Pet_UpdateDisplay()
end
XPerl_Player_Pet_Events.PET_STABLE_SHOW = XPerl_Player_Pet_Events.UNIT_PET
-- UNIT_NAME_UPDATE
function XPerl_Player_Pet_Events:UNIT_NAME_UPDATE()
if (arg1 == "pet") then
XPerl_Player_Pet_UpdateName()
end
end
-- UNIT_MODEL_CHANGED
function XPerl_Player_Pet_Events:UNIT_MODEL_CHANGED()
if (arg1 == "pet") then
XPerl_Player_Pet_UpdatePortrait()
end
end
--XPerl_Player_Pet_Events.UNIT_PORTRAIT_UPDATE = XPerl_Player_Pet_Events.UNIT_MODEL_CHANGED
-- UNIT_HEALTH, UNIT_MAXHEALTH
function XPerl_Player_Pet_Events:UNIT_HEALTH()
if (arg1 == "pet") then
XPerl_Player_Pet_UpdateHealth()
end
end
XPerl_Player_Pet_Events.UNIT_MAXHEALTH = XPerl_Player_Pet_Events.UNIT_HEALTH
-- UNIT_RAGE
function XPerl_Player_Pet_Events:UNIT_RAGE()
if (arg1 == "pet") then
XPerl_Player_Pet_UpdateMana()
end
end
XPerl_Player_Pet_Events.UNIT_MAXRAGE = XPerl_Player_Pet_Events.UNIT_RAGE
XPerl_Player_Pet_Events.UNIT_ENERGY = XPerl_Player_Pet_Events.UNIT_RAGE
XPerl_Player_Pet_Events.UNIT_MAXENERGY = XPerl_Player_Pet_Events.UNIT_RAGE
XPerl_Player_Pet_Events.UNIT_MANA = XPerl_Player_Pet_Events.UNIT_RAGE
XPerl_Player_Pet_Events.UNIT_MAXMANA = XPerl_Player_Pet_Events.UNIT_RAGE
XPerl_Player_Pet_Events.UNIT_FOCUS = XPerl_Player_Pet_Events.UNIT_RAGE
XPerl_Player_Pet_Events.UNIT_MAXFOCUS = XPerl_Player_Pet_Events.UNIT_RAGE
-- UNIT_LEVEL
function XPerl_Player_Pet_Events:UNIT_LEVEL()
if (arg1 == "pet") then
XPerl_Player_Pet_UpdateLevel()
end
end
XPerl_Player_Pet_Events.UNIT_PET_EXPERIENCE = XPerl_Player_Pet_Events.UNIT_LEVEL
-- UNIT_DISPLAYPOWER
function XPerl_Player_Pet_Events:UNIT_DISPLAYPOWER()
if (arg1 == "pet") then
XPerl_Player_Pet_UpdateManaType()
end
end
-- UNIT_HAPPINESS
-- Happiness events come while you have a pet up, each 2 secs
function XPerl_Player_Pet_Events:UNIT_HAPPINESS()
if (arg1 == "pet") then
--XPerl_Player_Pet_UpdateDisplay(); -- Update all, fixes bug with stables in 1.11
XPerl_Player_Pet_SetHappiness()
XPerl_Player_Pet_UpdateCombat()
end
end
-- PET_ATTACK_START
function XPerl_Player_Pet_Events:PET_ATTACK_START()
XPerl_Player_Pet_UpdateCombat()
end
-- UNIT_COMBAT
function XPerl_Player_Pet_Events:UNIT_COMBAT()
if (arg1 == "pet") then
if (arg2 == "HEAL") then
XPerl_Player_Pet_CombatFlash(0, true, true)
elseif (arg4 and arg4 > 0) then
XPerl_Player_Pet_CombatFlash(0, true)
end
end
end
-- UNIT_DYNAMIC_FLAGS
function XPerl_Player_Pet_Events:UNIT_FACTION()
if (arg1 == "pet" or arg1 == "player") then
XPerl_Player_Pet_UpdateName()
XPerl_Player_Pet_UpdateCombat()
end
end
XPerl_Player_Pet_Events.UNIT_FLAGS = XPerl_Player_Pet_Events.UNIT_FACTION
XPerl_Player_Pet_Events.UNIT_DYNAMIC_FLAGS = XPerl_Player_Pet_Events.UNIT_FACTION
-- XPerl_Player_Pet_Set_Bits
function XPerl_Player_Pet_Set_Bits()
if (XPerlConfig.ShowPlayerPetPortrait==0) then
XPerl_Player_Pet_PortraitFrame:Hide()
XPerl_Player_Pet_PortraitFrame:SetWidth(3)
else
XPerl_Player_Pet_PortraitFrame:Show()
XPerl_Player_Pet_PortraitFrame:SetWidth(50)
XPerl_Player_Pet_UpdatePortrait()
end
if (XPerlConfig.ShowPlayerPetName == 1) then
XPerl_Player_Pet_NameFrame:Show()
XPerl_Player_Pet_NameFrame:SetHeight(24)
else
XPerl_Player_Pet_NameFrame:Hide()
XPerl_Player_Pet_NameFrame:SetHeight(2)
end
if (XPerlConfig.ShowPlayerPetName == 1 or XPerlConfig.ShowPlayerPetPortrait == 1) then
XPerl_Player_Pet_HappyFrame:SetPoint("BOTTOMRIGHT", XPerl_Player_Pet_PortraitFrame, "BOTTOMLEFT", 2, 0)
if (XPerlConfig.ShowPetLevel == 1) then
XPerl_Player_Pet_LevelFrame:SetPoint("TOPRIGHT", XPerl_Player_Pet_PortraitFrame, "TOPLEFT", 2, 0)
end
else
XPerl_Player_Pet_HappyFrame:SetPoint("BOTTOMRIGHT", XPerl_Player_Pet_StatsFrame, "BOTTOMLEFT", 2, 0)
if (XPerlConfig.ShowPetLevel == 1) then
XPerl_Player_Pet_LevelFrame:SetPoint("TOPRIGHT", XPerl_Player_Pet_HappyFrame, "TOPLEFT", 2, 0)
end
end
if (XPerlConfig.ShowPetXP==0) then
XPerl_Player_Pet_StatsFrame_XPBar:Hide()
XPerl_Player_Pet_StatsFrame:SetHeight(34)
else
XPerl_Player_Pet_StatsFrame_XPBar:Show()
XPerl_Player_Pet_StatsFrame:SetHeight(44)
end
if (XPerlConfig.ShowPetLevel == 0) then
XPerl_Player_Pet_LevelFrame:Hide()
else
XPerl_Player_Pet_LevelFrame:Show()
end
if (XPerlConfig.ShowPetXP == 1 or XPerlConfig.ShowPlayerPetPortrait == 0 or XPerlConfig.ShowPlayerPetName == 0) then
XPerl_Player_Pet_BuffFrame:SetPoint("TOPLEFT", XPerl_Player_Pet_StatsFrame, "BOTTOMLEFT", 2, 0)
else
XPerl_Player_Pet_BuffFrame:SetPoint("TOPLEFT", XPerl_Player_Pet_PortraitFrame, "BOTTOMLEFT", 2, 0)
end
if (XPerlConfig.ShowPlayerPetValues == 1) then
XPerl_Player_Pet_StatsFrame_HealthBarText:Show()
XPerl_Player_Pet_StatsFrame_ManaBarText:Show()
else
XPerl_Player_Pet_StatsFrame_HealthBarText:Hide()
XPerl_Player_Pet_StatsFrame_ManaBarText:Hide()
end
XPerl_Player_Pet_CastClickOverlay:ClearAllPoints()
if (XPerlConfig.ShowPlayerPetPortrait == 1 or XPerlConfig.ShowPlayerPetName == 1) then
XPerl_Player_Pet_CastClickOverlay:SetPoint("BOTTOMLEFT", XPerl_Player_Pet_PortraitFrame)
else
XPerl_Player_Pet_CastClickOverlay:SetPoint("BOTTOMLEFT", XPerl_Player_Pet_StatsFrame)
end
XPerl_Player_Pet_CastClickOverlay:SetPoint("TOPRIGHT", XPerl_Player_Pet_NameFrame)
XPerlConfig.PlayerPetBuffSize = tonumber(XPerlConfig.PlayerPetBuffSize) or 20
XPerl_SetBuffSize("XPerl_Player_Pet_", XPerlConfig.PlayerPetBuffSize, XPerlConfig.PlayerPetBuffSize * 1.3)
end