vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 ----------------------
2 -- Loading Function --
3 ----------------------
4  
5 local XPerl_TargetHistory = {}
6  
7 -- XPerl_TargetTarget_OnLoad
8 function XPerl_TargetTarget_OnLoad()
9 this.unitid = "targettarget"
10 if (this:GetName() == "XPerl_TargetTargetTarget") then
11 this.unitid = "targettargettarget"
12 else
13 XPerl_TargetTarget_Frame = XPerl_TargetTarget
14 end
15  
16 -- Events
17 this:RegisterEvent("PLAYER_ENTERING_WORLD")
18 this:RegisterEvent("PLAYER_LEAVING_WORLD")
19  
20 this.time = 0
21 this.targetname = ""
22 this.targethp = 0
23 this.targetmana = 0
24 this.lastUpdate = 0
25  
26 this.SubFrame = function(this, a)
27 return getglobal(this:GetName().."_"..a)
28 end
29  
30 XPerl_InitFadeFrame(this)
31 XPerl_RegisterHighlight(getglobal(this:GetName().."_CastClickOverlay"), 2)
32 XPerl_RegisterPerlFrames(this, {"NameFrame", "StatsFrame", "LevelFrame"})
33 end
34  
35 -- XPerl_TargetTarget_RegisterSome
36 local function XPerl_TargetTarget_RegisterSome()
37 this:RegisterEvent("RAID_TARGET_UPDATE")
38  
39 if (this == XPerl_TargetTarget) then
40 this:RegisterEvent("PLAYER_TARGET_CHANGED")
41 this:RegisterEvent("UNIT_HEALTH"); -- So health updates are more regular
42 this:RegisterEvent("UNIT_MAXHEALTH")
43 this:RegisterEvent("UNIT_AURA")
44 this:RegisterEvent("UNIT_FACTION")
45 end
46 end
47  
48 -- XPerl_TargetTarget_UnregisterSome
49 local function XPerl_TargetTarget_UnregisterSome()
50 this:UnregisterEvent("RAID_TARGET_UPDATE")
51  
52 if (this == XPerl_TargetTarget) then
53 this:UnregisterEvent("PLAYER_TARGET_CHANGED")
54 this:UnregisterEvent("UNIT_HEALTH")
55 this:UnregisterEvent("UNIT_MAXHEALTH")
56 this:UnregisterEvent("UNIT_AURA")
57 this:UnregisterEvent("UNIT_FACTION")
58 end
59 end
60  
61 -------------------------
62 -- The Update Function --
63 -------------------------
64 function XPerl_TargetTarget_UpdatePVP(ttFrame)
65 local targetrankname, targetrank=GetPVPRankInfo(UnitPVPRank(ttFrame.unitid), ttFrame.unitid)
66 if (targetrank and XPerlConfig.ShowTargetPVPRank==1 and UnitIsPlayer(ttFrame.unitid)) then
67 ttFrame:SubFrame("NameFrame_PVPRankIcon"):Show()
68 if (targetrank==0) then
69 ttFrame:SubFrame("NameFrame_PVPRankIcon"):Hide()
70 else
71 ttFrame:SubFrame("NameFrame_PVPRankIcon"):SetTexture(string.format("Interface\\PVPRankBadges\\PVPRank%02d", targetrank))
72 end
73 else
74 ttFrame:SubFrame("NameFrame_PVPRankIcon"):Hide()
75 end
76 if (XPerlConfig.ShowTargetPVP == 1 and UnitIsPVP("targettarget")) then
77 ttFrame:SubFrame("NameFrame_PVPStatus"):SetTexture("Interface\\TargetingFrame\\UI-PVP-"..(UnitFactionGroup("targettarget") or "FFA"))
78 ttFrame:SubFrame("NameFrame_PVPStatus"):Show()
79 else
80 ttFrame:SubFrame("NameFrame_PVPStatus"):Hide()
81 end
82 end
83  
84 -- XPerl_TargetTarget_Buff_UpdateAll
85 local function XPerl_TargetTarget_Buff_UpdateAll(ttFrame)
86 local show
87 if (ttFrame == XPerl_TargetTarget) then
88 show = XPerlConfig.TargetTargetBuffs
89 else
90 show = XPerlConfig.TargetTargetTargetBuffs
91 end
92  
93 if (show == 1) then
94 ttFrame:SubFrame("BuffFrame"):Show()
95 XPerl_Targets_BuffUpdate(ttFrame.unitid, ttFrame:GetName().."_", ttFrame)
96 else
97 ttFrame:SubFrame("BuffFrame"):Hide()
98 end
99 end
100  
101 -- XPerl_TargetTarget_RaidIconUpdate
102 local function XPerl_TargetTarget_RaidIconUpdate(unitid, frameRaidIcon, frameNameFrame)
103 XPerl_Update_RaidIcon(unitid, frameRaidIcon)
104  
105 frameRaidIcon:ClearAllPoints()
106 if (XPerlConfig.AlternateRaidIcon == 1) then
107 frameRaidIcon:SetHeight(16)
108 frameRaidIcon:SetWidth(16)
109 frameRaidIcon:SetPoint("CENTER", frameNameFrame, "TOPRIGHT", -5, -4)
110 else
111 frameRaidIcon:SetHeight(32)
112 frameRaidIcon:SetWidth(32)
113 frameRaidIcon:SetPoint("CENTER", frameNameFrame, "CENTER", 0, 0)
114 end
115 end
116  
117 -- XPerl_TargetTarget_UpdateDisplay
118 function XPerl_TargetTarget_UpdateDisplay(ttFrame,force)
119  
120 local show
121 if (ttFrame == XPerl_TargetTarget) then
122 show = XPerlConfig.ShowTargetTarget
123 else
124 show = XPerlConfig.ShowTargetTargetTarget
125 if (show == 1 and XPerlConfig.ShowTargetTarget == 0) then
126 show = 0
127 end
128 end
129  
130 if (UnitExists("target") and show == 1 and UnitIsConnected(ttFrame.unitid)) then -- (UnitName("target")~=nil) and (show==1) and (UnitIsConnected(ttFrame.unitid))) then
131 ttFrame.targetname = UnitName(ttFrame.unitid)
132 if (ttFrame.targetname ~= nil) then
133 local t = GetTime()
134 if (not force and t < ttFrame.lastUpdate + 0.3) then
135 return
136 end
137 ttFrame.lastUpdate = t
138  
139 XPerl_CancelFade(ttFrame)
140 ttFrame:Show()
141  
142 XPerl_TargetTarget_UpdatePVP(ttFrame)
143  
144 -- Save these 2, so we know whether to update the frame later
145 ttFrame.targethp = UnitHealth(ttFrame.unitid)
146 ttFrame.targetmana = UnitMana(ttFrame.unitid)
147  
148 XPerl_SetUnitNameColor(ttFrame.unitid, ttFrame:SubFrame("NameFrame_NameBarText"))
149  
150 if (XPerlConfig.ShowTargetTargetLevel == 1) then
151 local TargetTargetlevel = UnitLevel(ttFrame.unitid)
152 local color = GetDifficultyColor(TargetTargetlevel)
153  
154 if (TargetTargetLevel == -1) then
155 if (UnitClassification(ttFrame.unitid) == "worldboss") then
156 TargetTargetLevel = "Boss"
157 end
158 elseif (UnitIsPlusMob(ttFrame.unitid) or UnitClassification(ttFrame.unitid) == "elite") then
159 TargetTargetlevel = TargetTargetlevel.."+"
160 ttFrame:SubFrame("LevelFrame"):SetWidth(33)
161 else
162 ttFrame:SubFrame("LevelFrame"):SetWidth(27)
163 end
164  
165 ttFrame:SubFrame("LevelFrameText"):SetText(TargetTargetlevel)
166  
167 if (TargetTargetLevel == "Boss") then
168 ttFrame:SubFrame("LevelFrame"):SetWidth(ttFrame:SubFrame("LevelFrameText"):GetStringWidth() + 6)
169 color = {r = 1, g = 0, b = 0}
170 end
171  
172 if (XPerlConfig.ShowTargetTargetPercent == 1) then
173 ttFrame:SubFrame("NameFrame"):SetWidth(163 - ttFrame:SubFrame("LevelFrame"):GetWidth())
174 else
175 ttFrame:SubFrame("NameFrame"):SetWidth(131 - ttFrame:SubFrame("LevelFrame"):GetWidth())
176 end
177  
178 ttFrame:SubFrame("LevelFrameText"):SetTextColor(color.r, color.g, color.b)
179 end
180  
181 -- Set name - Must do after level as the NameFrame can change size just above here.
182 local TargetTargetname = ttFrame.targetname
183 ttFrame:SubFrame("NameFrame_NameBarText"):SetText(TargetTargetname)
184  
185 local remCount = 1
186 while ((ttFrame:SubFrame("NameFrame_NameBarText"):GetStringWidth() >= (ttFrame:SubFrame("NameFrame"):GetWidth() - 8)) and (string.len(TargetTargetname) > remCount)) do
187 TargetTargetname = string.sub(TargetTargetname, 1, string.len(TargetTargetname) - remCount)..".."
188 remCount = 3
189 ttFrame:SubFrame("NameFrame_NameBarText"):SetText(TargetTargetname)
190 end
191  
192 -- Set health
193 XPerl_Target_SetHealth(ttFrame.unitid, ttFrame:SubFrame("StatsFrame_HealthBar"), ttFrame:SubFrame("StatsFrame_HealthBarBG"), ttFrame:SubFrame("StatsFrame_HealthBarPercent"), ttFrame:SubFrame("StatsFrame_HealthBarText"), ttFrame:SubFrame("StatsFrame_ManaBarPercent"), XPerlConfig.ShowTargetTargetPercent)
194  
195 -- Set mana
196 XPerl_Target_SetManaType(ttFrame.unitid, ttFrame:SubFrame("StatsFrame_ManaBar"), ttFrame:SubFrame("StatsFrame_ManaBarText"), ttFrame:SubFrame("StatsFrame_ManaBarBG"), ttFrame:SubFrame("StatsFrame"), ttFrame)
197 XPerl_Target_SetMana(ttFrame.unitid, ttFrame:SubFrame("StatsFrame_ManaBar"), ttFrame:SubFrame("StatsFrame_HealthBarPercent"), ttFrame:SubFrame("StatsFrame_ManaBarPercent"), ttFrame:SubFrame("StatsFrame_ManaBarText"))
198  
199 if (XPerlConfig.ShowTargetTargetValues == 1) then
200 ttFrame:SubFrame("StatsFrame_HealthBarText"):Show()
201 ttFrame:SubFrame("StatsFrame_ManaBarText"):Show()
202 else
203 ttFrame:SubFrame("StatsFrame_HealthBarText"):Hide()
204 ttFrame:SubFrame("StatsFrame_ManaBarText"):Hide()
205 end
206  
207 XPerl_TargetTarget_RaidIconUpdate(ttFrame.unitid, ttFrame:SubFrame("NameFrame_RaidIcon"), ttFrame:SubFrame("NameFrame"))
208  
209 XPerl_Targets_BuffPositions(ttFrame.unitid, ttFrame:GetName().."_", ttFrame)
210 XPerl_TargetTarget_Buff_UpdateAll(ttFrame)
211  
212 return
213 else
214 ttFrame.targetname = ""
215 end
216 else
217 ttFrame.targetname = ""
218 end
219  
220 XPerl_StartFade(ttFrame)
221 end
222  
223 -- XPerl_TargetTarget_Update_Control
224 local function XPerl_TargetTarget_Update_Control(ttFrame)
225 if (UnitIsVisible(ttFrame.unitid) and UnitIsCharmed(ttFrame.unitid)) then
226 ttFrame:SubFrame("NameFrame_Warning"):Show()
227 else
228 ttFrame:SubFrame("NameFrame_Warning"):Hide()
229 end
230 end
231  
232 -- XPerl_TargetTarget_Update_Combat
233 local function XPerl_TargetTarget_Update_Combat(ttFrame)
234 if (UnitAffectingCombat(ttFrame.unitid)) then
235 ttFrame:SubFrame("NameFrame_ActivityStatus"):Show()
236 else
237 ttFrame:SubFrame("NameFrame_ActivityStatus"):Hide()
238 end
239 end
240  
241 -- XPerl_TargetTarget_AddHistory
242 local function XPerl_TargetTarget_AddHistory(newName, r, g, b)
243 if (getn(XPerl_TargetHistory) == 0 or newName ~= XPerl_TargetHistory[1].name) then
244 tinsert(XPerl_TargetHistory, 1, {["name"] = newName, ["r"] = r, ["g"] = g, ["b"] = b, ["time"] = GetTime()})
245  
246 while (getn(XPerl_TargetHistory) > 10) do
247 tremove(XPerl_TargetHistory, 11)
248 end
249 XPerl_TargetTarget.FlashChangeStart = GetTime()
250 end
251 end
252  
253 -- Process_HistoryFlash
254 local function Process_HistoryFlash()
255 if (not this.FlashChangeStart) then
256 return
257 end
258  
259 local timer = (GetTime() - this.FlashChangeStart)
260 local r, g, b
261 if (timer > 1) then
262 this.FlashChangeStart = nil
263 r = XPerlConfig.BorderColour.r
264 g = XPerlConfig.BorderColour.g
265 b = XPerlConfig.BorderColour.b
266 else
267 r = XPerlConfig.BorderColour.r + 0.5 - (timer / 2)
268 g = XPerlConfig.BorderColour.g + 0.5 - (timer / 2)
269 b = XPerlConfig.BorderColour.b + 0.5 - (timer / 2)
270  
271 if (r < 0) then r = 0; elseif (r > 1) then r = 1; end
272 if (g < 0) then g = 0; elseif (g > 1) then g = 1; end
273 if (b < 0) then b = 0; elseif (b > 1) then b = 1; end
274 end
275  
276 this:SubFrame("NameFrame"):SetBackdropBorderColor(r, g, b, XPerlConfig.Transparency)
277 this:SubFrame("StatsFrame"):SetBackdropBorderColor(r, g, b, XPerlConfig.Transparency)
278 this:SubFrame("LevelFrame"):SetBackdropBorderColor(r, g, b, XPerlConfig.Transparency)
279  
280 if (this == XPerl_TargetTarget) then
281 if (XPerl_TargetTarget_History1) then
282 XPerl_TargetTarget_History1:SetBackdropBorderColor(r, g, b, XPerlConfig.Transparency)
283 end
284 end
285 end
286  
287 -- XPerl_TargetTarget_OnUpdate
288 function XPerl_TargetTarget_OnUpdate(elapsed, ttFrame)
289 --if (not ttFrame.unitid) then
290 -- return
291 --end
292  
293 local newName = UnitName(ttFrame.unitid)
294 local newHP = UnitHealth(ttFrame.unitid)
295 local newMana = UnitMana(ttFrame.unitid)
296  
297 if (not newName) then
298 newName = ""
299 newHP = 0
300 newMana = 0
301 end
302  
303 if (newName ~= ttFrame.targetname) then
304 if (ttFrame == XPerl_TargetTarget) then
305 if (not UnitIsUnit("player", "target")) then
306 if (ttFrame.targetname ~= "") then
307 if (newName ~= "") then
308 local r, g, b = ttFrame:SubFrame("NameFrame_NameBarText"):GetTextColor()
309 XPerl_TargetTarget_AddHistory(XPerl_TargetTarget.targetname, r, g, b)
310 end
311 end
312 end
313 end
314  
315 XPerl_TargetTarget_UpdateDisplay(ttFrame,true)
316  
317 elseif ((newHP ~= ttFrame.targethp) or (newMana ~= ttFrame.targetmana)) then
318 XPerl_TargetTarget_UpdateDisplay(ttFrame)
319 end
320  
321 if (XPerlConfig.TargetTargetHistory == 1) then
322 if (ttFrame == XPerl_TargetTarget) then
323 XPerl_TargetTarget_Update()
324 end
325 else
326 Process_HistoryFlash()
327  
328 if (ttFrame == XPerl_TargetTarget) then
329 XPerl_TargetTarget_HideHistory()
330 end
331 end
332  
333 ttFrame.time = elapsed + ttFrame.time
334 if (ttFrame.time >= 0.3 and ttFrame.Fading == 0) then
335 if (newName ~= "") then
336 if (ttFrame:IsShown()) then
337 XPerl_TargetTarget_Update_Combat(ttFrame)
338 XPerl_TargetTarget_Update_Control(ttFrame)
339 XPerl_TargetTarget_UpdatePVP(ttFrame)
340 XPerl_TargetTarget_Buff_UpdateAll(ttFrame)
341 XPerl_SetUnitNameColor(ttFrame.unitid, ttFrame:SubFrame("NameFrame_NameBarText"))
342 end
343 end
344  
345 ttFrame.time = 0
346 end
347  
348 XPerl_ProcessFade(ttFrame)
349 end
350  
351 -------------------
352 -- Event Handler --
353 -------------------
354 function XPerl_TargetTarget_OnEvent()
355  
356 if (event == "PLAYER_ENTERING_WORLD") then
357 XPerl_TargetTarget_RegisterSome()
358 XPerl_TargetTarget_ClearHistory()
359  
360 elseif (event == "PLAYER_LEAVING_WORLD") then
361 XPerl_TargetTarget_UnregisterSome()
362 XPerl_TargetTarget:Hide()
363 if (XPerl_TargetTargetTarget) then
364 XPerl_TargetTargetTarget:Hide()
365 end
366 return
367  
368 elseif (event == "RAID_TARGET_UPDATE") then
369 XPerl_TargetTarget_RaidIconUpdate(XPerl_TargetTarget.unitid, XPerl_TargetTarget_NameFrame_RaidIcon, XPerl_TargetTarget_NameFrame)
370 if (XPerl_TargetTargetTarget) then
371 XPerl_TargetTarget_RaidIconUpdate(XPerl_TargetTargetTarget.unitid, XPerl_TargetTarget_NameFrame_RaidIcon, XPerl_TargetTarget_NameFrame)
372 end
373  
374 elseif (event == "PLAYER_TARGET_CHANGED") then
375 XPerl_TargetTarget_ClearHistory()
376 end
377  
378 if (unit) then
379 if (strfind(event, "UNIT_HEALTH UNIT_MAXHEALTH UNIT_AURA UNIT_FACTION")) then
380 if (UnitIsUnit(unit, "targettarget")) then
381 XPerl_TargetTarget_UpdateDisplay(XPerl_TargetTarget,true)
382 elseif (XPerl_TargetTargetTarget and UnitIsUnit(unit, "targettargettarget")) then
383 XPerl_TargetTarget_UpdateDisplay(XPerl_TargetTargetTarget,true)
384 end
385 end
386 end
387 end
388  
389 --------------------
390 -- Target history --
391 --------------------
392  
393 function XPerl_TargetTarget_ClearHistory()
394 XPerl_TargetHistory = {}
395 XPerl_TargetTarget_Update()
396 end
397  
398 -- XPerl_TargetTarget_Update
399 function XPerl_TargetTarget_Update()
400  
401 local alpha = XPerlConfig.Transparency
402 local time = GetTime()
403  
404 Process_HistoryFlash()
405  
406 local offset = -3
407 if (XPerlConfig.TargetTargetBuffs == 1) then
408 if (UnitExists("targettarget")) then
409 if (XPerl_UnitBuff("targettarget", 1)) then
410 if (offset == -3) then
411 offset = 0
412 end
413 offset = offset + 20
414 if (UnitBuff("targettarget", 9)) then
415 offset = offset + 20
416 end
417 end
418 if (XPerl_UnitDebuff("targettarget", 1)) then
419 if (offset == -3) then
420 offset = 0
421 end
422 offset = offset + 24
423 end
424 end
425 end
426  
427 if (XPerl_TargetTarget_History1) then
428 XPerl_TargetTarget_History1:ClearAllPoints()
429 XPerl_TargetTarget_History1:SetPoint("TOPLEFT", XPerl_TargetTarget_StatsFrame, "BOTTOMLEFT", 0, -offset)
430 end
431  
432 for i = 1,10 do
433 local frame = getglobal("XPerl_TargetTarget_History"..i)
434 local value = XPerl_TargetHistory[i]
435  
436 if (value) then
437 if (not frame) then
438 frame = CreateFrame("Frame", "XPerl_TargetTarget_History"..i, UIParent, "XPerl_History_Template")
439 frame:SetID(i)
440 --XPerl_SetupFrame(frame)
441 XPerl_RegisterPerlFrames(frame)
442 frame:SetScale(XPerlConfig.Scale_TargetTargetFrame)
443 end
444 if (XPerlConfig.ShowTargetTargetPercent == 0) then
445 frame:SetWidth(128)
446 else
447 frame:SetWidth(160)
448 end
449  
450 local frameText = getglobal("XPerl_TargetTarget_History"..i.."_NameBarText")
451  
452 frameText:SetText(XPerl_TargetHistory[i].name)
453 frameText:SetTextColor(XPerl_TargetHistory[i].r, XPerl_TargetHistory[i].g, XPerl_TargetHistory[i].b)
454 frame:Show()
455  
456 local minAlpha = 0.2
457 local fadeSeconds = 9
458 if (XPerl_TargetHistory[i].time < time - (fadeSeconds + 1)) then
459 frame:SetAlpha(minAlpha)
460 elseif (XPerl_TargetHistory[i].time < time - fadeSeconds) then
461 local fullRange = XPerlConfig.Transparency - minAlpha
462 local fade = (time - XPerl_TargetHistory[i].time) - fadeSeconds
463 local alphaItem = XPerlConfig.Transparency - (fullRange * fade)
464  
465 frame:SetAlpha(alphaItem)
466 else
467 frame:SetAlpha(XPerlConfig.Transparency)
468 end
469  
470 elseif (frame) then
471 frame:Hide()
472 end
473 end
474 end
475  
476 -- XPerl_TargetTarget_ResetFade
477 function XPerl_TargetTarget_ResetFade()
478 local time = GetTime()
479 for i = 1,getn(XPerl_TargetHistory) do
480 XPerl_TargetHistory[i].time = time
481 end
482 end
483  
484 -- XPerl_TargetTarget_History_OnEnter
485 function XPerl_TargetTarget_History_OnEnter()
486 local id = this:GetID()
487 if (id) then
488 XPerl_TargetHistory[id].time = GetTime()
489 end
490 end
491  
492 -- XPerl_TargetTarget_History_OnMouseUp
493 function XPerl_TargetTarget_History_OnMouseUp()
494 local id = this:GetID()
495  
496 if (id) then
497 if (XPerl_TargetHistory[id].name) then
498 TargetByName(XPerl_TargetHistory[id].name)
499 end
500 end
501 end
502  
503 -- XPerl_TargetTarget_HideHistory
504 function XPerl_TargetTarget_HideHistory()
505 for i = 1,10 do
506 local f = getglobal("XPerl_TargetTarget_History"..i)
507 if (f) then
508 f:Hide()
509 end
510 end
511 end
512  
513 -- XPerl_TargetTarget_Set_Bits
514 function XPerl_TargetTarget_Set_Bits()
515 if (not XPerl_TargetTarget) then
516 return
517 end
518  
519 local function Set(frame)
520 local statsFrame = getglobal(frame:GetName().."_StatsFrame")
521 local statsFrameHealthBarPercent = getglobal(statsFrame:GetName().."_HealthBarPercent")
522 local statsFrameManaBarPercent = getglobal(statsFrame:GetName().."_ManaBarPercent")
523 local nameFrame = getglobal(frame:GetName().."_NameFrame")
524 local levelFrame = getglobal(frame:GetName().."_LevelFrame")
525  
526 if (XPerlConfig.ShowTargetTargetLevel==0) then
527 --nameFrame:SetWidth(160)
528 levelFrame:Hide()
529 levelFrame:SetWidth(3)
530 else
531 --nameFrame:SetWidth(136)
532 levelFrame:Show()
533 levelFrame:SetWidth(27)
534 end
535  
536 if (XPerlConfig.ShowTargetTargetPercent == 0) then
537 statsFrame:SetWidth(128)
538 statsFrameHealthBarPercent:Hide()
539 statsFrameManaBarPercent:Hide()
540  
541 if (XPerlConfig.ShowTargetTargetLevel == 1) then
542 nameFrame:SetWidth(104)
543 else
544 nameFrame:SetWidth(128)
545 end
546 else
547 statsFrame:SetWidth(160)
548 statsFrameHealthBarPercent:Show()
549 statsFrameManaBarPercent:Show()
550  
551 if (XPerlConfig.ShowTargetTargetLevel == 1) then
552 nameFrame:SetWidth(136)
553 else
554 nameFrame:SetWidth(160)
555 end
556 end
557  
558 XPerlConfig.TargetBuffSize = tonumber(XPerlConfig.TargetBuffSize) or 20
559 XPerl_SetBuffSize(frame:GetName().."_", XPerlConfig.TargetBuffSize, XPerlConfig.TargetBuffSize * 1.2)
560 end
561  
562 if (XPerlConfig.ShowTargetTargetTarget == 1) then
563 if (not XPerl_TargetTargetTarget) then
564 CreateFrame("Frame", "XPerl_TargetTargetTarget", UIParent, "XPerl_TargetTarget_Template")
565  
566 XPerl_TargetTargetTarget:SetPoint("BOTTOMLEFT", XPerl_TargetTarget_StatsFrame, "BOTTOMRIGHT", 5, 0)
567 XPerl_RestorePosition(XPerl_TargetTargetTarget)
568 end
569 end
570  
571 Set(XPerl_TargetTarget)
572 if (XPerl_TargetTargetTarget) then
573 Set(XPerl_TargetTargetTarget)
574 end
575 end
576  
577 -- XPerl_ScaleTargetTarget
578 function XPerl_ScaleTargetTarget(num)
579 if (XPerl_TargetTarget) then
580 XPerl_TargetTarget:SetScale(num)
581 if (XPerl_TargetTargetTarget) then
582 XPerl_TargetTargetTarget:SetScale(num)
583 end
584 for i = 1,10 do
585 local f = getglobal("XPerl_TargetTarget_History"..i)
586 if (f) then
587 f:SetScale(num)
588 end
589 end
590 end
591 end