vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 local XPerl_Player_Pet_Events = {}
2  
3 ----------------------
4 -- Loading Function --
5 ----------------------
6 function XPerl_Player_Pet_OnLoad()
7  
8 -- Events
9 this:RegisterEvent("PLAYER_ENTERING_WORLD")
10 this:RegisterEvent("PLAYER_LEAVING_WORLD")
11  
12 this.time = 0
13 XPerl_InitFadeFrame(this)
14  
15 -- Set here to reduce amount of function calls made
16 this:SetScript("OnEvent", XPerl_Player_Pet_OnEvent)
17 this:SetScript("OnUpdate", XPerl_Player_Pet_OnUpdate)
18 this:SetScript("OnShow", XPerl_Player_Pet_UpdatePortrait)
19  
20 XPerl_RegisterHighlight(XPerl_Player_Pet_CastClickOverlay, 2)
21 XPerl_RegisterPerlFrames(this, {"NameFrame", "StatsFrame", "PortraitFrame", "LevelFrame", "HappyFrame"})
22  
23 this.FlashFrames = {XPerl_Player_Pet_NameFrame, XPerl_Player_Pet_LevelFrame,
24 XPerl_Player_Pet_StatsFrame, XPerl_Player_Pet_PortraitFrame}
25 end
26  
27 -------------------
28 -- Event Handler --
29 -------------------
30 local function XPerl_Player_Pet_RegisterSome()
31 this:RegisterEvent("UNIT_PET")
32 this:RegisterEvent("UNIT_HAPPINESS")
33 this:RegisterEvent("PET_STABLE_UPDATE")
34 this:RegisterEvent("PET_STABLE_SHOW")
35 this:RegisterEvent("PET_STABLE_CLOSED")
36 this:RegisterEvent("PET_STABLE_UPDATE_PAPERDOLL")
37 end
38 local function XPerl_Player_Pet_RegisterForPet()
39 this:RegisterEvent("UNIT_AURA")
40 this:RegisterEvent("UNIT_FOCUS")
41 this:RegisterEvent("UNIT_MAXFOCUS")
42 this:RegisterEvent("PET_ATTACK_START")
43 this:RegisterEvent("UNIT_FACTION")
44 this:RegisterEvent("UNIT_FLAGS")
45 this:RegisterEvent("UNIT_DYNAMIC_FLAGS")
46 this:RegisterEvent("UNIT_PET_EXPERIENCE")
47 this:RegisterEvent("UNIT_MODEL_CHANGED")
48 XPerl_RegisterBasics()
49 end
50  
51 local function XPerl_Player_Pet_UnregisterSome()
52 this:UnregisterEvent("UNIT_PET")
53 this:UnregisterEvent("UNIT_HAPPINESS")
54 this:UnregisterEvent("PET_STABLE_UPDATE")
55 this:UnregisterEvent("PET_STABLE_SHOW")
56 this:UnregisterEvent("PET_STABLE_CLOSED")
57 this:UnregisterEvent("PET_STABLE_UPDATE_PAPERDOLL")
58 end
59 local function XPerl_Player_Pet_UnregisterForPet()
60 this:UnregisterEvent("UNIT_AURA")
61 this:UnregisterEvent("UNIT_FOCUS")
62 this:UnregisterEvent("UNIT_MAXFOCUS")
63 this:UnregisterEvent("PET_ATTACK_START")
64 this:UnregisterEvent("UNIT_FACTION")
65 this:UnregisterEvent("UNIT_FLAGS")
66 this:UnregisterEvent("UNIT_DYNAMIC_FLAGS")
67 this:UnregisterEvent("UNIT_PET_EXPERIENCE")
68 this:UnregisterEvent("UNIT_MODEL_CHANGED")
69 XPerl_UnregisterBasics()
70 end
71  
72 -------------------------
73 -- The Update Function --
74 -------------------------
75 local function XPerl_Player_Pet_CheckPet()
76 if (UnitExists("pet")) then
77 if (UnitIsVisible("pet")) then
78 XPerl_CancelFade(XPerl_Player_Pet)
79  
80 XPerl_Player_Pet:Show()
81 XPerl_Player_Pet_RegisterForPet()
82 return true
83 end
84 end
85  
86 XPerl_Player_Pet_UnregisterForPet()
87  
88 XPerl_StartFade(XPerl_Player_Pet)
89 return false
90 end
91  
92 -- XPerl_Player_Pet_UpdateName
93 local function XPerl_Player_Pet_UpdateName()
94 local petname = UnitName("pet")
95  
96 if (petname == UNKNOWNOBJECT) then
97 XPerl_Player_Pet_NameFrame_NameBarText:SetText("")
98 else
99 XPerl_Player_Pet_NameFrame_NameBarText:SetText(petname)
100 end
101  
102 if (UnitIsPVP("player")) then
103 XPerl_Player_Pet_NameFrame_NameBarText:SetTextColor(0, 1, 0, XPerlConfig.TextTransparency)
104 else
105 XPerl_Player_Pet_NameFrame_NameBarText:SetTextColor(0.5, 0.5, 1, XPerlConfig.TextTransparency)
106 end
107 end
108  
109 -- XPerl_Player_Pet_UpdateLevel
110 local function XPerl_Player_Pet_UpdateLevel()
111 local petlevel = UnitLevel("pet")
112 local petxp, petxpmax = GetPetExperience()
113  
114 XPerl_Player_Pet_StatsFrame_XPBar:SetStatusBarColor(0.3, 0.3, 1, 1)
115 XPerl_Player_Pet_StatsFrame_XPBarBG:SetVertexColor(0.3, 0.3, 1, 0.25)
116  
117 XPerl_Player_Pet_StatsFrame_XPBar:SetMinMaxValues(0, petxpmax)
118 XPerl_Player_Pet_StatsFrame_XPBar:SetValue(petxp)
119  
120 XPerl_Player_Pet_LevelFrameText:SetText(petlevel)
121 end
122  
123 -- XPerl_Player_Pet_UpdateHealth
124 local function XPerl_Player_Pet_UpdateHealth()
125 local pethealth = UnitHealth("pet")
126 local pethealthmax = UnitHealthMax("pet")
127  
128 XPerl_SetHealthBar(XPerl_Player_Pet_StatsFrame_HealthBar, pethealth, pethealthmax)
129  
130 if (UnitIsDead("pet")) then
131 XPerl_Player_Pet_StatsFrame_HealthBarText:SetText(XPERL_LOC_DEAD)
132 XPerl_Player_Pet_StatsFrame_ManaBarText:Hide()
133 end
134 end
135  
136 local function XPerl_Player_Pet_UpdateManaType()
137 XPerl_SetManaBarType("pet", XPerl_Player_Pet_StatsFrame_ManaBar, XPerl_Player_Pet_StatsFrame_ManaBarBG)
138 end
139  
140 -- XPerl_Player_Pet_UpdateMana()
141 local function XPerl_Player_Pet_UpdateMana()
142 local petmana = UnitMana("pet")
143 local petmanamax = UnitManaMax("pet")
144  
145 XPerl_Player_Pet_StatsFrame_ManaBar:SetMinMaxValues(0, petmanamax)
146 XPerl_Player_Pet_StatsFrame_ManaBar:SetValue(petmana)
147  
148 XPerl_Player_Pet_StatsFrame_ManaBarText:SetText(petmana.."/"..petmanamax)
149  
150 if (XPerlConfig.ShowPlayerPetValues == 1) then
151 XPerl_Player_Pet_StatsFrame_ManaBarText:Show()
152 end
153 end
154  
155 -- XPerl_Player_Pet_CombatFlash
156 local function XPerl_Player_Pet_CombatFlash(elapsed, argNew, argGreen)
157 if (XPerl_CombatFlashSet (elapsed, XPerl_Player_Pet, argNew, argGreen)) then
158 XPerl_CombatFlashSetFrames(XPerl_Player_Pet)
159 end
160 end
161  
162 -- XPerl_Player_Pet_UpdatePortrait()
163 function XPerl_Player_Pet_UpdatePortrait()
164 if (XPerlConfig.ShowPlayerPetPortrait == 1) then
165 if (XPerlConfig.ShowPlayerPetPortrait3D == 1) then
166 XPerl_Player_Pet_PortraitFrame_Portrait:Hide()
167 XPerl_Player_Pet_PortraitFrame_Portrait3D:Show()
168 XPerlSetPortrait3D(XPerl_Player_Pet_PortraitFrame_Portrait3D, "pet")
169 else
170 XPerl_Player_Pet_PortraitFrame_Portrait3D.last3DTime = nil
171 XPerl_Player_Pet_PortraitFrame_Portrait:Show()
172 XPerl_Player_Pet_PortraitFrame_Portrait3D:Hide()
173 SetPortraitTexture(XPerl_Player_Pet_PortraitFrame_Portrait, "pet")
174 end
175 end
176 end
177  
178 -- XPerl_Player_Pet_OnUpdate
179 function XPerl_Player_Pet_OnUpdate()
180 if (this.PlayerFlash) then
181 XPerl_Player_Pet_CombatFlash(arg1, false)
182 end
183  
184 XPerl_ProcessFade(XPerl_Player_Pet)
185 end
186  
187 --------------------
188 -- Buff Functions --
189 --------------------
190 local function GetBuffButton(buffnum, debuff, createIfAbsent)
191  
192 local buffType
193 if (debuff == 1) then
194 buffType = "DeBuff"
195 else
196 buffType = "Buff"
197 end
198 local name = "XPerl_Player_Pet_BuffFrame_"..buffType..buffnum
199 local button = getglobal(name)
200  
201 if (not button and createIfAbsent) then
202 button = CreateFrame("Button", name, XPerl_Player_Pet_BuffFrame, "XPerl_"..buffType.."Template")
203 button:SetID(buffnum)
204  
205 local size = XPerlConfig.PlayerPetBuffSize * (1 + (0.3 * debuff))
206 button:SetHeight(size)
207 button:SetWidth(size)
208  
209 if (debuff == 1) then
210 button:SetScript("OnEnter", XPerl_Player_Pet_SetDeBuffTooltip)
211 else
212 button:SetScript("OnEnter", XPerl_Player_Pet_SetBuffTooltip)
213 end
214 button:SetScript("OnLeave", XPerl_PlayerTipHide)
215  
216 button:ClearAllPoints()
217 if (buffnum == 1) then
218 if (debuff == 1) then
219 button:SetPoint("TOPLEFT", 0, -(XPerlConfig.PlayerPetBuffSize + 1))
220 else
221 button:SetPoint("TOPLEFT", 0, 0)
222 end
223 else
224 local prevButton = getglobal("XPerl_Player_Pet_BuffFrame_"..buffType..(buffnum - 1))
225 button:SetPoint("TOPLEFT", prevButton, "TOPRIGHT", 1 + debuff, 0)
226 end
227 end
228  
229 return button
230 end
231  
232 local function XPerl_Player_Pet_Buff_UpdateAll ()
233 if (UnitExists("pet")) then
234 for buffnum=1,10 do
235 local buff, buffApplications = UnitBuff("pet", buffnum)
236 local button = GetBuffButton(buffnum, 0, buff)
237  
238 if (buff) then
239 local icon = getglobal(button:GetName().."Icon")
240 local count = getglobal(button:GetName().."Count")
241 icon:SetTexture(buff)
242  
243 if ( buffApplications > 1 ) then
244 count:SetText(buffApplications)
245 count:Show()
246 else
247 count:Hide()
248 end
249 button:Show()
250  
251 elseif (button) then
252 button:Hide()
253 end
254 end
255  
256 for buffnum=1,8 do
257 local debuff, debuffApplications, debuffType = UnitDebuff("pet", buffnum)
258 local button = GetBuffButton(buffnum, 1, debuff)
259 if (debuff) then
260 local icon = getglobal(button:GetName().."Icon")
261 local count = getglobal(button:GetName().."Count")
262 local border = getglobal(button:GetName().."Border")
263  
264 icon:SetTexture(debuff)
265  
266 if ( debuffApplications > 1 ) then
267 count:SetText(debuffApplications)
268 count:Show()
269 else
270 count:Hide()
271 end
272  
273 local borderColor = DebuffTypeColor[(debuffType or "none")]
274 border:SetVertexColor(borderColor.r, borderColor.g, borderColor.b)
275 button:Show()
276  
277 elseif (button) then
278 button:Hide()
279 end
280 end
281  
282 XPerl_CheckDebuffs("pet", {XPerl_Player_Pet_NameFrame, XPerl_Player_Pet_PortraitFrame, XPerl_Player_Pet_LevelFrame, XPerl_Player_Pet_StatsFrame})
283 end
284 end
285  
286 function XPerl_Player_Pet_SetBuffTooltip ()
287 GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT")
288 GameTooltip:SetUnitBuff("pet", this:GetID())
289 end
290  
291 function XPerl_Player_Pet_SetDeBuffTooltip ()
292 GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT")
293 GameTooltip:SetUnitDebuff("pet", this:GetID())
294 end
295  
296 ---------------
297 -- Happiness --
298 ---------------
299  
300 local function XPerl_Player_Pet_SetHappiness()
301 local happiness, damagePercentage, loyaltyRate = GetPetHappiness()
302  
303 if (not happiness) then
304 happiness = 3
305 end
306  
307 if ( happiness == 1 ) then
308 XPerl_Player_Pet_HappyFrame_PetHappinessTexture:SetTexCoord(0.375, 0.5625, 0, 0.359375)
309 elseif ( happiness == 2 ) then
310 XPerl_Player_Pet_HappyFrame_PetHappinessTexture:SetTexCoord(0.1875, 0.375, 0, 0.359375)
311 elseif ( happiness == 3 ) then
312 XPerl_Player_Pet_HappyFrame_PetHappinessTexture:SetTexCoord(0, 0.1875, 0, 0.359375)
313 end
314 if ( happiness ~= nil ) then
315 XPerl_Player_Pet_HappyFrame_PetHappiness.tooltip = getglobal("PET_HAPPINESS"..happiness)
316 XPerl_Player_Pet_HappyFrame_PetHappiness.tooltipDamage = format(PET_DAMAGE_PERCENTAGE, damagePercentage)
317 if ( loyaltyRate < 0 ) then
318 XPerl_Player_Pet_HappyFrame_PetHappiness.tooltipLoyalty = getglobal("LOSING_LOYALTY")
319 elseif ( loyaltyRate > 0 ) then
320 XPerl_Player_Pet_HappyFrame_PetHappiness.tooltipLoyalty = getglobal("GAINING_LOYALTY")
321 else
322 XPerl_Player_Pet_HappyFrame_PetHappiness.tooltipLoyalty = nil
323 end
324 end
325  
326 if (XPerlConfig.PetHappiness == 1 and (XPerlConfig.PetHappinessSad == 0 or happiness < 3)) then
327 XPerl_Player_Pet_HappyFrame:Show()
328  
329 if (XPerlConfig.PetFlashWhenSad == 1 and happiness < 3) then
330 if (not UIFrameIsFlashing(XPerl_Player_Pet_HappyFrame)) then
331 UIFrameFlash(XPerl_Player_Pet_HappyFrame, 0.5, 0.5, 30, 1, 0, 1)
332 end
333 else
334 if (UIFrameIsFlashing(XPerl_Player_Pet_HappyFrame)) then
335 UIFrameFlashStop(XPerl_Player_Pet_HappyFrame)
336 UIFrameFlashUpdate(1)
337 end
338 end
339 else
340 if (UIFrameIsFlashing(XPerl_Player_Pet_HappyFrame)) then
341 UIFrameFlashStop(XPerl_Player_Pet_HappyFrame)
342 UIFrameFlashUpdate(1)
343 end
344 XPerl_Player_Pet_HappyFrame:Hide()
345 end
346 end
347  
348 --------------------
349 -- Click Handlers --
350 --------------------
351 function XPerl_Player_Pet_OnClick(button)
352  
353 if (XPerl_OnClick_Handler(button, "pet")) then
354 return
355 end
356  
357 if (button == "RightButton") then
358 HideDropDownMenu(1)
359 ToggleDropDownMenu(1, nil, PetFrameDropDown, "XPerl_Player_Pet_StatsFrame", 0, 0)
360 end
361 end
362  
363 -- XPerl_Player_Pet_Update_Control
364 local function XPerl_Player_Pet_Update_Control()
365 if (UnitIsCharmed("pet")) then
366 XPerl_Player_Pet_NameFrame_Warning:Show()
367 else
368 XPerl_Player_Pet_NameFrame_Warning:Hide()
369 end
370 end
371  
372 -- XPerl_Player_Pet_UpdateCombat
373 local function XPerl_Player_Pet_UpdateCombat()
374 if (UnitExists("pet")) then
375 if (UnitAffectingCombat("pet")) then
376 XPerl_Player_Pet_NameFrame_ActivityStatus:Show()
377 else
378 XPerl_Player_Pet_NameFrame_ActivityStatus:Hide()
379 end
380 XPerl_Player_Pet_Update_Control()
381 end
382 end
383  
384 function XPerl_Player_Pet_UpdateDisplay ()
385 if (XPerl_Player_Pet_CheckPet()) then
386 XPerl_CancelFade(XPerl_Player_Pet)
387  
388 XPerl_Player_Pet_UpdatePortrait()
389 XPerl_Player_Pet_UpdateName()
390 XPerl_Player_Pet_UpdateHealth()
391 XPerl_Player_Pet_UpdateManaType()
392 XPerl_Player_Pet_UpdateMana()
393 XPerl_Player_Pet_UpdateLevel()
394 XPerl_Player_Pet_SetHappiness()
395 XPerl_Player_Pet_Buff_UpdateAll()
396  
397 XPerl_Player_Pet_UpdateCombat()
398 end
399 end
400  
401 -------------------
402 -- Event Handler --
403 -------------------
404 function XPerl_Player_Pet_OnEvent()
405 local func = XPerl_Player_Pet_Events[event]
406 if (func) then
407 func()
408 else
409 XPerl_ShowMessage("EXTRA EVENT")
410 end
411 end
412  
413 -- PLAYER_ENTERING_WORLD
414 function XPerl_Player_Pet_Events:PLAYER_ENTERING_WORLD()
415 --XPerl_Player_Pet.PlayerFlash = 0
416 XPerl_Player_Pet_RegisterSome()
417 end
418  
419 -- PLAYER_LEAVING_WORLD
420 function XPerl_Player_Pet_Events:PLAYER_LEAVING_WORLD()
421 XPerl_Player_Pet_UnregisterSome()
422 end
423  
424 -- UNIT_AURA
425 function XPerl_Player_Pet_Events:UNIT_AURA()
426 if (arg1 == "pet") then
427 XPerl_Player_Pet_Buff_UpdateAll()
428 end
429 end
430  
431 -- UNIT_PET
432 function XPerl_Player_Pet_Events:UNIT_PET()
433 XPerl_Player_Pet_UpdateDisplay()
434 end
435  
436 XPerl_Player_Pet_Events.PET_STABLE_SHOW = XPerl_Player_Pet_Events.UNIT_PET
437  
438 -- UNIT_NAME_UPDATE
439 function XPerl_Player_Pet_Events:UNIT_NAME_UPDATE()
440 if (arg1 == "pet") then
441 XPerl_Player_Pet_UpdateName()
442 end
443 end
444  
445 -- UNIT_MODEL_CHANGED
446 function XPerl_Player_Pet_Events:UNIT_MODEL_CHANGED()
447 if (arg1 == "pet") then
448 XPerl_Player_Pet_UpdatePortrait()
449 end
450 end
451 --XPerl_Player_Pet_Events.UNIT_PORTRAIT_UPDATE = XPerl_Player_Pet_Events.UNIT_MODEL_CHANGED
452  
453 -- UNIT_HEALTH, UNIT_MAXHEALTH
454 function XPerl_Player_Pet_Events:UNIT_HEALTH()
455 if (arg1 == "pet") then
456 XPerl_Player_Pet_UpdateHealth()
457 end
458 end
459 XPerl_Player_Pet_Events.UNIT_MAXHEALTH = XPerl_Player_Pet_Events.UNIT_HEALTH
460  
461 -- UNIT_RAGE
462 function XPerl_Player_Pet_Events:UNIT_RAGE()
463 if (arg1 == "pet") then
464 XPerl_Player_Pet_UpdateMana()
465 end
466 end
467  
468 XPerl_Player_Pet_Events.UNIT_MAXRAGE = XPerl_Player_Pet_Events.UNIT_RAGE
469 XPerl_Player_Pet_Events.UNIT_ENERGY = XPerl_Player_Pet_Events.UNIT_RAGE
470 XPerl_Player_Pet_Events.UNIT_MAXENERGY = XPerl_Player_Pet_Events.UNIT_RAGE
471 XPerl_Player_Pet_Events.UNIT_MANA = XPerl_Player_Pet_Events.UNIT_RAGE
472 XPerl_Player_Pet_Events.UNIT_MAXMANA = XPerl_Player_Pet_Events.UNIT_RAGE
473 XPerl_Player_Pet_Events.UNIT_FOCUS = XPerl_Player_Pet_Events.UNIT_RAGE
474 XPerl_Player_Pet_Events.UNIT_MAXFOCUS = XPerl_Player_Pet_Events.UNIT_RAGE
475  
476 -- UNIT_LEVEL
477 function XPerl_Player_Pet_Events:UNIT_LEVEL()
478 if (arg1 == "pet") then
479 XPerl_Player_Pet_UpdateLevel()
480 end
481 end
482  
483 XPerl_Player_Pet_Events.UNIT_PET_EXPERIENCE = XPerl_Player_Pet_Events.UNIT_LEVEL
484  
485 -- UNIT_DISPLAYPOWER
486 function XPerl_Player_Pet_Events:UNIT_DISPLAYPOWER()
487 if (arg1 == "pet") then
488 XPerl_Player_Pet_UpdateManaType()
489 end
490 end
491  
492 -- UNIT_HAPPINESS
493 -- Happiness events come while you have a pet up, each 2 secs
494 function XPerl_Player_Pet_Events:UNIT_HAPPINESS()
495 if (arg1 == "pet") then
496 --XPerl_Player_Pet_UpdateDisplay(); -- Update all, fixes bug with stables in 1.11
497 XPerl_Player_Pet_SetHappiness()
498 XPerl_Player_Pet_UpdateCombat()
499 end
500 end
501  
502 -- PET_ATTACK_START
503 function XPerl_Player_Pet_Events:PET_ATTACK_START()
504 XPerl_Player_Pet_UpdateCombat()
505 end
506  
507 -- UNIT_COMBAT
508 function XPerl_Player_Pet_Events:UNIT_COMBAT()
509 if (arg1 == "pet") then
510 if (arg2 == "HEAL") then
511 XPerl_Player_Pet_CombatFlash(0, true, true)
512 elseif (arg4 and arg4 > 0) then
513 XPerl_Player_Pet_CombatFlash(0, true)
514 end
515 end
516 end
517  
518 -- UNIT_DYNAMIC_FLAGS
519 function XPerl_Player_Pet_Events:UNIT_FACTION()
520 if (arg1 == "pet" or arg1 == "player") then
521 XPerl_Player_Pet_UpdateName()
522 XPerl_Player_Pet_UpdateCombat()
523 end
524 end
525  
526 XPerl_Player_Pet_Events.UNIT_FLAGS = XPerl_Player_Pet_Events.UNIT_FACTION
527 XPerl_Player_Pet_Events.UNIT_DYNAMIC_FLAGS = XPerl_Player_Pet_Events.UNIT_FACTION
528  
529 -- XPerl_Player_Pet_Set_Bits
530 function XPerl_Player_Pet_Set_Bits()
531 if (XPerlConfig.ShowPlayerPetPortrait==0) then
532 XPerl_Player_Pet_PortraitFrame:Hide()
533 XPerl_Player_Pet_PortraitFrame:SetWidth(3)
534 else
535 XPerl_Player_Pet_PortraitFrame:Show()
536 XPerl_Player_Pet_PortraitFrame:SetWidth(50)
537 XPerl_Player_Pet_UpdatePortrait()
538 end
539  
540 if (XPerlConfig.ShowPlayerPetName == 1) then
541 XPerl_Player_Pet_NameFrame:Show()
542 XPerl_Player_Pet_NameFrame:SetHeight(24)
543 else
544 XPerl_Player_Pet_NameFrame:Hide()
545 XPerl_Player_Pet_NameFrame:SetHeight(2)
546 end
547  
548 if (XPerlConfig.ShowPlayerPetName == 1 or XPerlConfig.ShowPlayerPetPortrait == 1) then
549 XPerl_Player_Pet_HappyFrame:SetPoint("BOTTOMRIGHT", XPerl_Player_Pet_PortraitFrame, "BOTTOMLEFT", 2, 0)
550  
551 if (XPerlConfig.ShowPetLevel == 1) then
552 XPerl_Player_Pet_LevelFrame:SetPoint("TOPRIGHT", XPerl_Player_Pet_PortraitFrame, "TOPLEFT", 2, 0)
553 end
554 else
555 XPerl_Player_Pet_HappyFrame:SetPoint("BOTTOMRIGHT", XPerl_Player_Pet_StatsFrame, "BOTTOMLEFT", 2, 0)
556  
557 if (XPerlConfig.ShowPetLevel == 1) then
558 XPerl_Player_Pet_LevelFrame:SetPoint("TOPRIGHT", XPerl_Player_Pet_HappyFrame, "TOPLEFT", 2, 0)
559 end
560 end
561  
562 if (XPerlConfig.ShowPetXP==0) then
563 XPerl_Player_Pet_StatsFrame_XPBar:Hide()
564 XPerl_Player_Pet_StatsFrame:SetHeight(34)
565 else
566 XPerl_Player_Pet_StatsFrame_XPBar:Show()
567 XPerl_Player_Pet_StatsFrame:SetHeight(44)
568 end
569  
570 if (XPerlConfig.ShowPetLevel == 0) then
571 XPerl_Player_Pet_LevelFrame:Hide()
572 else
573 XPerl_Player_Pet_LevelFrame:Show()
574 end
575  
576 if (XPerlConfig.ShowPetXP == 1 or XPerlConfig.ShowPlayerPetPortrait == 0 or XPerlConfig.ShowPlayerPetName == 0) then
577 XPerl_Player_Pet_BuffFrame:SetPoint("TOPLEFT", XPerl_Player_Pet_StatsFrame, "BOTTOMLEFT", 2, 0)
578 else
579 XPerl_Player_Pet_BuffFrame:SetPoint("TOPLEFT", XPerl_Player_Pet_PortraitFrame, "BOTTOMLEFT", 2, 0)
580 end
581  
582 if (XPerlConfig.ShowPlayerPetValues == 1) then
583 XPerl_Player_Pet_StatsFrame_HealthBarText:Show()
584 XPerl_Player_Pet_StatsFrame_ManaBarText:Show()
585 else
586 XPerl_Player_Pet_StatsFrame_HealthBarText:Hide()
587 XPerl_Player_Pet_StatsFrame_ManaBarText:Hide()
588 end
589  
590 XPerl_Player_Pet_CastClickOverlay:ClearAllPoints()
591 if (XPerlConfig.ShowPlayerPetPortrait == 1 or XPerlConfig.ShowPlayerPetName == 1) then
592 XPerl_Player_Pet_CastClickOverlay:SetPoint("BOTTOMLEFT", XPerl_Player_Pet_PortraitFrame)
593 else
594 XPerl_Player_Pet_CastClickOverlay:SetPoint("BOTTOMLEFT", XPerl_Player_Pet_StatsFrame)
595 end
596 XPerl_Player_Pet_CastClickOverlay:SetPoint("TOPRIGHT", XPerl_Player_Pet_NameFrame)
597  
598 XPerlConfig.PlayerPetBuffSize = tonumber(XPerlConfig.PlayerPetBuffSize) or 20
599 XPerl_SetBuffSize("XPerl_Player_Pet_", XPerlConfig.PlayerPetBuffSize, XPerlConfig.PlayerPetBuffSize * 1.3)
600 end