Advertisement
Guest User

oUF_Aftermathh

a guest
Oct 9th, 2010
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 30.14 KB | None | 0 0
  1. --[[
  2.  
  3.     Supported Units:
  4.         Player
  5.         Pet
  6.         Target
  7.         Target Of Target
  8.         Focus
  9.         Party/Raid
  10.  
  11.     Supported Plugins:
  12.         oUF_CombatFeedback
  13.         oUF_DebuffHighlight
  14.         oUF_Experience
  15.         oUF_MoveableFrames     
  16.         oUF_Smooth
  17.         oUF_SpellRange
  18.         oUF_Swing
  19.         oUF_Smooth
  20.         oUF_TotemBar
  21.         oUF_ReadyCheck
  22.         oUF_RuneBar
  23.        
  24.     Features:
  25.         Aggro Highlighting on Raid Frames
  26.         Castbar For Player, Target, Focus And Pet.
  27.         Leader, MasterLooter, Raid PvP Combat Resting Icons.
  28.         Options To Remove Portraits, Debuffs, Buffs, PvPIcon Castbars etc.
  29. ]]
  30.  
  31. local _, class = UnitClass('player')
  32. local texture = 'Interface\\AddOns\\oUF_Aftermathh\\media\\Cabaret.tga'
  33. local border = 'Interface\\AddOns\\oUF_Aftermathh\\media\\border.tga'
  34. local font = 'Interface\\AddOns\\oUF_Aftermathh\\media\\font.ttf'
  35. local fontsize = 15
  36. local height, width = 27, 270
  37. local buffsize = 26
  38.  
  39. -- Buffs/Debuffs
  40. local Debuffs = true
  41. local Buffs = true
  42. local PlayerOnlyDebuffs = true
  43. local DebuffType = true
  44. local CooldownCount = true
  45.  
  46. -- General Stuff
  47. local PvPIcon = true
  48. local Portraits = true
  49. local SpellRange = false
  50.  
  51. -- SwingBar
  52. local SwingMeele = true
  53. local SwingRange = false
  54. local SwingClassColors = true
  55.  
  56. -- Castbar
  57. local CastBars = true
  58. local Safezone = true
  59. local Latency = true
  60. local ClassColor = false
  61.  
  62. RuneFrame:Hide()
  63.  
  64. local backdrop = {
  65.     bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=],
  66.     insets = {top = -1, left = -1, bottom = -1, right = -1},
  67. }
  68.  
  69. local colors = setmetatable({
  70.     power = setmetatable({
  71.         ['MANA'] = {.31,.45,.63},
  72.         ['RAGE'] = {.69,.31,.31},
  73.         ['FOCUS'] = {.71,.43,.27},
  74.         ['ENERGY'] = {.65,.63,.35},
  75.     }, {__index = oUF.colors.power}),
  76. }, {__index = oUF.colors})
  77.  
  78. local menu = function(self)
  79.     local unit = self.unit:sub(1, -2)
  80.     local cunit = self.unit:gsub('(.)', string.upper, 1)
  81.  
  82.     if(unit == 'party' or unit == 'partypet') then
  83.         ToggleDropDownMenu(1, nil, _G['PartyMemberFrame'..self.id..'DropDown'], 'cursor', 0, 0)
  84.     elseif(_G[cunit..'FrameDropDown']) then
  85.         ToggleDropDownMenu(1, nil, _G[cunit..'FrameDropDown'], 'cursor', 0, 0)
  86.     end
  87. end
  88.  
  89. local function UpdateChannelStart(self, event, unit, name, rank, text)
  90.     if (self.Latency) then
  91.         self.Latency:ClearAllPoints()
  92.         self.Latency:SetPoint('LEFT', self, 'BOTTOMLEFT', 1, -1)
  93.  
  94.         local _, _, ms = GetNetStats()
  95.         self.Latency:SetFormattedText('%dms', ms)
  96.     end
  97.  
  98.     if (self.SafeZone) then
  99.         self.SafeZone:SetDrawLayer('ARTWORK')
  100.         self.SafeZone:SetPoint('TOPLEFT', self)
  101.         self.SafeZone:SetPoint('BOTTOMLEFT', self)
  102.     end
  103. end
  104.  
  105. local function UpdateCastStart(self, event, unit, name, rank, text, castid)
  106.     if (self.Latency) then
  107.         self.Latency:ClearAllPoints()
  108.         self.Latency:SetPoint('RIGHT', self, 'BOTTOMRIGHT', -1, 1)
  109.  
  110.         local _, _, ms = GetNetStats()
  111.         self.Latency:SetFormattedText('%dms', ms)
  112.     end
  113.  
  114.     if (self.SafeZone) then
  115.         self.SafeZone:SetDrawLayer('BORDER')
  116.         self.SafeZone:SetPoint('TOPRIGHT', self)
  117.         self.SafeZone:SetPoint('BOTTOMRIGHT', self)
  118.     end
  119. end
  120.  
  121. local updateRIcon = function(self, event)
  122.     local index = GetRaidTargetIndex(self.unit)
  123.     if(index) then
  124.         self.RIcon:SetText(ICON_LIST[index]..'22|t')
  125.     else
  126.         self.RIcon:SetText()
  127.     end
  128. end
  129.  
  130. oUF.TagEvents['AfterRaidName'] = 'UNIT_NAME_UPDATE'
  131. oUF.Tags['AfterRaidName'] = function(unit)
  132.     local Name = string.sub(UnitName(unit), 1, 4)
  133.     return Name
  134. end
  135.  
  136. local function ShortenValue(value)
  137.     if(value >= 1e6) then
  138.         return ('%.2fm'):format(value / 1e6):gsub('%.?0+([km])$', '%1')
  139.     elseif(value >= 1e4) then
  140.         return ('%.1fk'):format(value / 1e3):gsub('%.?0+([km])$', '%1')
  141.     else
  142.         return value
  143.     end
  144. end
  145.  
  146. oUF.Tags['Afterhealth'] = function(unit)
  147.     local min, max = UnitHealth(unit), UnitHealthMax(unit)
  148.     local status = not UnitIsConnected(unit) and 'Offline' or UnitIsGhost(unit) and 'Ghost' or UnitIsDead(unit) and 'Dead'
  149.  
  150.     if(status) then
  151.         return status
  152.     elseif(unit == 'target' and UnitCanAttack('player', unit)) then
  153.         return ('%s | %d %%'):format(ShortenValue(min), min / max * 100)
  154.     elseif(unit == 'player' and min ~= max) then
  155.         return ('%d | %d%%'):format(min - max, min / max * 100)
  156.     elseif(min ~= max) then
  157.         return ('%s | %s'):format(ShortenValue(min), ShortenValue(max))
  158.     else
  159.         return max
  160.     end
  161. end
  162. oUF.TagEvents['Afterhealth'] = 'UNIT_HEALTH UNIT_MAXHEALTH'
  163.  
  164. oUF.Tags['Afterpower'] = function(unit)
  165.     local power = UnitPower(unit)
  166.     if(power > 0 and not UnitIsDeadOrGhost(unit)) then
  167.         return power
  168.     end
  169. end
  170. oUF.TagEvents['Afterpower'] = oUF.TagEvents.missingpp
  171.  
  172. local function UpdateDruidPower(self)
  173.     local bar = self.DruidPower
  174.     local num, str = UnitPowerType('player')
  175.     local min = UnitPower('player', (num ~= 0) and 0 or 3)
  176.     local max = UnitPowerMax('player', (num ~= 0) and 0 or 3)
  177.  
  178.     bar:SetMinMaxValues(0, max)
  179.  
  180.     if(min ~= max) then
  181.         bar:SetValue(min)
  182.         bar:SetAlpha(1)
  183.  
  184.         if(num ~= 0) then
  185.             bar:SetStatusBarColor(unpack(colors.power['MANA']))
  186.             bar.Text:SetFormattedText('%d | %d%%', min, math.floor(min / max * 100))
  187.         else
  188.             bar:SetStatusBarColor(unpack(colors.power['ENERGY']))
  189.             bar.Text:SetText()
  190.         end
  191.     else
  192.         bar:SetAlpha(0)
  193.         bar.Text:SetText()
  194.     end
  195. end
  196.  
  197. local auraIcon = function(icons, button)
  198.    
  199.     if(DebuffType) then
  200.       icons.showDebuffType = true
  201.     end
  202.    
  203.     if(CooldownCount) then
  204.       button.cd.noCooldownCount = true
  205.     end  
  206.  
  207.     button.icon:SetTexCoord(0.03, 0.97, 0.03, 0.97)
  208.    
  209.     button.overlay:SetTexture(border)
  210.     button.overlay:SetTexCoord(0, 1, 0, 1)
  211.     button.overlay:ClearAllPoints()
  212.     button.overlay:SetPoint('TOPRIGHT', button, 1.35, 1.35)
  213.     button.overlay:SetPoint('BOTTOMLEFT', button, -1.35, -1.35)
  214.     button.overlay.Hide = function(self) self:SetVertexColor(0.35, 0.35, 0.35, 1) end
  215.  
  216.     button.cd:SetReverse()
  217.     button.cd:ClearAllPoints()
  218.     button.cd:SetPoint('TOPRIGHT', button.icon, 'TOPRIGHT', -1, -1)
  219.     button.cd:SetPoint('BOTTOMLEFT', button.icon, 'BOTTOMLEFT', 1, 1)
  220.  
  221.     button.count:SetFont('Interface\\Add0ns\\oUF_Aftermathh\\media\\font.tff', 14, 'OUTLINE')
  222.     button.count:ClearAllPoints()
  223.     button.count:SetPoint('BOTTOMRIGHT', 1, 1)
  224.  
  225.     if (not button.background) then
  226.         button.background = button:CreateTexture(nil, 'BACKGROUND')
  227.         button.background:SetPoint('TOPLEFT', button.icon, 'TOPLEFT', -4, 4)
  228.         button.background:SetPoint('BOTTOMRIGHT', button.icon, 'BOTTOMRIGHT', 4, -4)
  229.         button.background:SetTexture('Interface\\AddOns\\oUF_Aftermathh\\media\\borderBackground')
  230.         button.background:SetVertexColor(0, 0, 0, 1)
  231.     end
  232. end
  233.  
  234. local func = function(self, unit)
  235.     self.colors = colors
  236.     self.menu = menu
  237.     self.ignoreHealComm = true
  238.     self.DebuffHighlightBackdrop = false
  239.     self.DebuffHighlightFilter = true
  240.    
  241.     self:EnableMouse(true)
  242.     self:SetScript('OnEnter', UnitFrame_OnEnter)
  243.     self:SetScript('OnLeave', UnitFrame_OnLeave)
  244.     self:RegisterForClicks'anyup'
  245.     self:SetAttribute('*type2', 'menu')
  246.    
  247.     CreateBorder(self, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4)
  248.  
  249.     local hp = CreateFrame'StatusBar'
  250.     if(unit == 'targettarget')then
  251.         hp:SetHeight(height*.85)
  252.     else
  253.         hp:SetHeight(height*.85)
  254.     end
  255.     hp:SetStatusBarTexture(texture)
  256.     hp.Smooth = true
  257.     hp:SetStatusBarColor(.25, .25, .25)
  258.     hp.frequentUpdates = true
  259.     hp:SetParent(self)
  260.     hp:SetPoint'TOP'
  261.     hp:SetPoint'LEFT'
  262.     hp:SetPoint'RIGHT'
  263.  
  264.     local hpbg = hp:CreateTexture(nil, 'BORDER')
  265.     hpbg:SetAllPoints(hp)
  266.     hpbg:SetTexture(0, 0, 0, 0.9)
  267.  
  268.     self:SetBackdrop(backdrop)
  269.     self:SetBackdropColor(0, 0, 0, 0.9)
  270.  
  271.     local hpp = hp:CreateFontString(nil, 'OVERLAY')
  272.     hpp:SetFont(font, fontsize, 'OUTLINE')
  273.     hpp:SetPoint('RIGHT',hp, -2, 0)
  274.     self:Tag(hpp, '[raidcolor][Afterhealth]')
  275.  
  276.     if unit == 'player' then
  277.         hpp:SetPoint('RIGHT',hp, -2, 0)
  278.     elseif unit == 'target' then
  279.         hpp:SetPoint('RIGHT',hp, -2, 0)
  280.     elseif unit == 'focus' or unit == 'pet' or unit == 'targettarget' or unit == 'focustarget' or unit == 'party' then
  281.         hpp:SetPoint('BOTTOMLEFT', self, 'BOTTOMRIGHT', 500000000, -500000000)
  282.     end
  283.  
  284.     hp.bg = hpbg
  285.     hp.value = hpp
  286.     self.Health = hp
  287.     self.OverrideUpdateHealth = updateHealth
  288.  
  289.     if not(unit == 'targettarget') then
  290.         local pp = CreateFrame'StatusBar'
  291.         pp:SetHeight(height*.11)
  292.         pp:SetStatusBarTexture(texture)
  293.         pp.frequentUpdates = true
  294.         pp.colorTapping = true
  295.         pp.colorHappiness = true
  296.         pp.colorClass = true
  297.         pp.colorReaction = true
  298.         pp.Smooth = true
  299.         pp:SetParent(self)
  300.         pp:SetPoint('BOTTOM')
  301.         pp:SetPoint('LEFT', .2, 0)
  302.         pp:SetPoint('RIGHT', -.2, 0)
  303.  
  304.         local ppbg = pp:CreateTexture(nil, 'BORDER')
  305.         ppbg:SetAllPoints(pp)
  306.         ppbg:SetTexture(texture)
  307.         ppbg.multiplier = .3
  308.  
  309.         local ppp = pp:CreateFontString(nil, 'OVERLAY')
  310.         ppp:SetFont(font, fontsize, 'OUTLINE')
  311.         ppp:SetPoint('LEFT',hpp,'RIGHT', -265, 0)
  312.         self:Tag(ppp, '[raidcolor][Afterpower]')
  313.  
  314.         pp.value = ppp
  315.         pp.bg = ppbg
  316.         self.Power = pp
  317.         self.PostUpdatePower = updatePower
  318.  
  319.     else
  320.  
  321.         local pp = CreateFrame'StatusBar'
  322.         pp:SetHeight(height*.11)
  323.         pp:SetStatusBarTexture(texture)
  324.         pp.frequentUpdates = true
  325.         pp.colorTapping = true
  326.         pp.colorHappiness = true
  327.         pp.colorClass = true
  328.         pp.colorReaction = true
  329.         pp.Smooth = true
  330.         pp:SetParent(self)
  331.         pp:SetPoint('BOTTOM')
  332.         pp:SetPoint('LEFT', .2, 0)
  333.         pp:SetPoint('RIGHT', -.2, 0)
  334.  
  335.         local ppbg = pp:CreateTexture(nil, 'BORDER')
  336.         ppbg:SetAllPoints(pp)
  337.         ppbg:SetTexture(texture)
  338.  
  339.         local ppp = pp:CreateFontString(nil, 'OVERLAY')
  340.         ppp:SetFont(font, fontsize)
  341.         ppp:SetPoint('RIGHT',hpp,'LEFT', 50000, 0)
  342.         self:Tag(ppp, '[raidcolor][Afterpower]')
  343.  
  344.         pp.value = ppp
  345.         pp.bg = ppbg
  346.         self.Power = pp
  347.         self.PostUpdatePower = updatePower
  348.     end
  349.  
  350.     if(CastBars)then
  351.         if(unit == 'player' or unit == 'focus' or unit == 'target' or unit == 'pet') then
  352.             self.Castbar = CreateFrame('StatusBar', nil, self)
  353.             self.Castbar:SetStatusBarTexture(texture)
  354.             self.Castbar:SetScale(1.139)
  355.             self.Castbar:SetStatusBarColor(.25, .25, .25)
  356.            
  357.             CreateBorder(self.Castbar, 11, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3)
  358.  
  359.             self.Castbar.Bg = self.Castbar:CreateTexture(nil, 'BACKGROUND')
  360.             self.Castbar.Bg:SetAllPoints(self.Castbar)
  361.             self.Castbar.Bg:SetTexture(texture)
  362.             self.Castbar.Bg:SetVertexColor(0, 0, 0, 0.6)
  363.  
  364.             if(unit == 'player')then
  365.                 local playerColor = RAID_CLASS_COLORS[select(2, UnitClass('player'))]
  366.                 if(ClassColor)then
  367.                   self.Castbar:SetStatusBarColor(playerColor.r, playerColor.g, playerColor.b)
  368.                 end
  369.                
  370.                 self.Castbar:SetPoint('TOPRIGHT', self, 'BOTTOMRIGHT', 327, -55)
  371.                 self.Castbar:SetHeight(25)
  372.                 self.Castbar:SetWidth(309)
  373.                 self.Castbar:SetParent(UIParent)
  374.  
  375.                 if(Safezone)then
  376.                     self.Castbar.SafeZone = self.Castbar:CreateTexture(nil, 'BORDER')
  377.                     self.Castbar.SafeZone:SetTexture('Interface\\Buttons\\WHITE8x8')
  378.                     self.Castbar.SafeZone:SetVertexColor(1, 0.5, 0, 1)
  379.                 end
  380.  
  381.                 if(Latency)then
  382.                     self.Castbar.Latency = self:CreateFontString(nil, 'ARTWORK')
  383.                     self.Castbar.Latency:SetFont(font, 12, 'OUTLINE')
  384.                     self.Castbar.Latency:SetParent(self.Castbar)
  385.                     self.Castbar.Latency:SetDrawLayer('OVERLAY')
  386.                     self.Castbar.Latency:SetVertexColor(0.6, 0.6, 0.6)
  387.                     self.Castbar.Latency:SetAlpha(1)
  388.                 end
  389.  
  390.                 self.Castbar.PostCastStart = UpdateCastStart
  391.                 self.Castbar.PostChannelStart = UpdateChannelStart
  392.             end
  393.  
  394.             self.Castbar.CustomDelayText = function(self, duration)
  395.                 self.Time:SetFormattedText('(|cffff0000-%.1f|r) %.1f | %.1f', self.delay, duration, self.max)
  396.             end
  397.    
  398.             self.Castbar.CustomTimeText = function(self, duration)
  399.                 self.Time:SetFormattedText('%.1f | %.1f', duration, self.max)
  400.             end
  401.  
  402.             self.Castbar.Time = self:CreateFontString(nil, 'ARTWORK')
  403.             self.Castbar.Time:SetFont(font, 13, 'OUTLINE')
  404.             self.Castbar.Time:SetPoint('RIGHT', self.Castbar, 'RIGHT', -7, 0)
  405.             self.Castbar.Time:SetHeight(10)
  406.             self.Castbar.Time:SetJustifyH('RIGHT')
  407.             self.Castbar.Time:SetParent(self.Castbar)
  408.  
  409.             self.Castbar.Text = self:CreateFontString(nil, 'ARTWORK')
  410.             self.Castbar.Text:SetFont(font, 13, 'OUTLINE')
  411.             self.Castbar.Text:SetPoint('LEFT', self.Castbar, 4, 0)
  412.             self.Castbar.Text:SetPoint('RIGHT', self.Castbar.Time, 'LEFT', -7, 0)
  413.             self.Castbar.Text:SetHeight(10)
  414.             self.Castbar.Text:SetJustifyH('LEFT')
  415.             self.Castbar.Text:SetParent(self.Castbar)
  416.            
  417.             if (unit == 'focus') then
  418.                 self.Castbar:SetPoint('CENTER', UIParent, 'CENTER', -10, -10)
  419.                 self.Castbar:SetWidth(260)
  420.                 self.Castbar:SetHeight(25)
  421.                 self.Castbar:SetStatusBarColor(.25, .25, .25)
  422.                 self.Castbar.Icon = self.Castbar:CreateTexture(nil, "ARTWORK")
  423.                 self.Castbar.Icon:SetHeight(44)
  424.                 self.Castbar.Icon:SetWidth(44)
  425.                 self.Castbar.Icon:SetPoint("LEFT", -52, 7)
  426.                 self.IconOverlay = self.Castbar:CreateTexture(nil, "OVERLAY")
  427.                 self.IconOverlay:SetPoint("TOPLEFT", self.Castbar.Icon, "TOPLEFT")
  428.                 self.IconOverlay:SetPoint("BOTTOMRIGHT", self.Castbar.Icon, "BOTTOMRIGHT")
  429.                 self.IconOverlay:SetTexture(border)
  430.                 self.IconOverlay:SetVertexColor(0.35, 0.35, 0.35, 1)
  431.                 self.Castbar.IconBack = self.Castbar:CreateTexture(nil, "BACKGROUND")
  432.                 self.Castbar.IconBack:SetPoint("TOPLEFT",self.Castbar.Icon,"TOPLEFT",-6,6)
  433.                 self.Castbar.IconBack:SetPoint("BOTTOMRIGHT",self.Castbar.Icon,"BOTTOMRIGHT",6,-6)
  434.                 self.Castbar.IconBack:SetTexture("Interface\\AddOns\\oUF_Aftermathh\\media\\borderBackground")
  435.                 self.Castbar.IconBack:SetVertexColor(0, 0, 0, 1)               
  436.             elseif (unit == 'target') then
  437.                 self.Castbar:SetPoint('TOPRIGHT', self, 'BOTTOMRIGHT', 141, 97)
  438.                 self.Castbar:SetWidth(230)
  439.                 self.Castbar:SetHeight(26)
  440.                 self.Castbar:SetStatusBarColor(.25, .25, .25)
  441.                 self.Castbar:SetParent(self)
  442.             elseif (unit == 'pet') then
  443.                 self.Castbar:SetStatusBarColor(.25, .25, .25)
  444.                 self.Castbar:SetParent(self)
  445.                 self.Castbar:SetHeight(22)
  446.                 self.Castbar:SetWidth(200)
  447.                 self.Castbar:SetPoint('TOPRIGHT', self, 'BOTTOMRIGHT', -12, 56)
  448.             end
  449.         end
  450.     end
  451.  
  452.     for _, bar in pairs({
  453.         'MirrorTimer1',
  454.         'MirrorTimer2',
  455.         'MirrorTimer3',
  456.     }) do
  457.         for i, region in pairs({_G[bar]:GetRegions()}) do
  458.             if (region.GetTexture and region:GetTexture() == 'SolidTexture') then
  459.                 region:Hide()
  460.             end
  461.         end
  462.  
  463.         CreateBorder(_G[bar], 11, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3)
  464.  
  465.         _G[bar..'Border']:Hide()
  466.  
  467.         _G[bar]:SetParent(UIParent)
  468.         _G[bar]:SetScale(1.132)
  469.         _G[bar]:SetHeight(20)
  470.         _G[bar]:SetWidth(280)
  471.  
  472.         _G[bar..'Background'] = _G[bar]:CreateTexture(bar..'Background', 'BACKGROUND', _G[bar])
  473.         _G[bar..'Background']:SetTexture('Interface\\Buttons\\WHITE8x8')
  474.         _G[bar..'Background']:SetAllPoints(bar)
  475.         _G[bar..'Background']:SetVertexColor(0, 0, 0, 0.5)
  476.  
  477.         _G[bar..'Text']:SetFont(CastingBarFrameText:GetFont(), 13)
  478.         _G[bar..'Text']:ClearAllPoints()
  479.         _G[bar..'Text']:SetPoint('CENTER', MirrorTimer1StatusBar, 0, 1)
  480.  
  481.         _G[bar..'StatusBar']:SetAllPoints(_G[bar])
  482.     end
  483.  
  484.     if(unit == 'player' or unit == 'party') then
  485.         local leader = hp:CreateTexture(nil, 'OVERLAY')
  486.         leader:SetHeight(15)
  487.         leader:SetWidth(15)
  488.         leader:SetPoint('BOTTOMLEFT', hp, 'TOPLEFT', -5, -2)
  489.         leader:SetTexture('Interface\\GroupFrame\\UI-Group-LeaderIcon')
  490.         self.Leader = leader
  491.  
  492.         local masterlooter = hp:CreateTexture(nil, 'OVERLAY')
  493.         masterlooter:SetHeight(15)
  494.         masterlooter:SetWidth(15)
  495.         masterlooter:SetPoint('LEFT', leader, 'RIGHT')
  496.         self.MasterLooter = masterlooter
  497.     end
  498.    
  499.     if(Portraits) then
  500.         local portrait = CreateFrame('PlayerModel', nil, self)
  501.           portrait:SetBackdrop(backdrop)
  502.           portrait:SetBackdropColor(0, 0, 0, .9)
  503.           portrait:SetScript('OnShow', function(self) self:SetCamera(0) end)
  504.           portrait:SetWidth(height*3)
  505.           portrait:SetHeight(height*2)
  506.           portrait.type = '3D'
  507.           self.Portrait = portrait
  508.  
  509.           CreateBorder(portrait, 12, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
  510.  
  511.         if(unit == 'player') then
  512.           portrait:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT', -92, -26)
  513.         elseif(unit == 'target') then
  514.           portrait:SetPoint('BOTTOMLEFT', self, 'BOTTOMRIGHT', 11, -26)
  515.         elseif(unit == 'focus' or unit == 'pet' or unit == 'party') then
  516.           portrait:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT', -92, -26)
  517.          
  518.         end  
  519.     end
  520.    
  521.     if(PvPIcon) then
  522.        local pvp = hp:CreateTexture(nil, 'OVERLAY')
  523.        pvp:SetPoint('BOTTOMRIGHT', hp, 'TOPRIGHT', 18, -45)
  524.        pvp:SetHeight(28)
  525.        pvp:SetWidth(28)
  526.        self.PvP = pvp
  527.     end
  528.    
  529.     if(unit == 'player' and UnitLevel('player') ~= MAX_PLAYER_LEVEL) then
  530.         self.Resting = self.Power:CreateTexture(nil, 'OVERLAY')
  531.         self.Resting:SetHeight(18)
  532.         self.Resting:SetWidth(20)
  533.         self.Resting:SetPoint('BOTTOMLEFT', -8.5, -8.5)
  534.         self.Resting:SetTexture('Interface\\CharacterFrame\\UI-StateIcon')
  535.         self.Resting:SetTexCoord(0,0.5,0,0.421875)
  536.     end
  537.    
  538.     if(unit == 'player') then
  539.        local Combat = hp:CreateTexture(nil, 'OVERLAY')
  540.        Combat:SetSize(21, 21)
  541.        Combat:SetPoint('BOTTOMLEFT', hp, -10, -10)
  542.        self.Combat = Combat
  543.     end
  544.  
  545.     local ricon = hp:CreateFontString(nil, 'OVERLAY')
  546.     ricon:SetFontObject(GameFontNormalSmall)
  547.     ricon:SetTextColor(1, 1, 1)
  548.     ricon:SetPoint('CENTER', hp, 0, 12)
  549.     ricon:SetHeight(24)
  550.     ricon:SetWidth(24)
  551.     self.RIcon = ricon
  552.     self:RegisterEvent('RAID_TARGET_UPDATE', updateRIcon)
  553.     table.insert(self.__elements, updateRIcon)
  554.  
  555.     if(unit == 'target') then
  556.         local cpoints = self:CreateFontString(nil, 'OVERLAY')
  557.         cpoints:SetFont(font, 26, 'OUTLINE')
  558.         cpoints:SetPoint('RIGHT', self, 'LEFT', -10, 0)
  559.         cpoints:SetJustifyH('RIGHT')
  560.         self:Tag(cpoints, '[cpoints]')
  561.     end
  562.    
  563.     if(unit == 'player' or unit == 'target' or unit =='focus' or unit == 'pet' or unit == 'targetarget' or unit == 'focustarget' or unit == 'party') then
  564.         local cbft = hp:CreateFontString(nil, 'OVERLAY')
  565.         cbft:SetPoint('CENTER', self)
  566.         cbft:SetFont(font, 21, 'OUTLINE')
  567.         self.CombatFeedbackText = cbft
  568.         self.CombatFeedbackText.maxAlpha = 1
  569.     end
  570.  
  571.     if(unit~='player')then
  572.         local name = hp:CreateFontString(nil, 'OVERLAY')
  573.         if(unit == 'targettarget' or unit == 'focus' or unit == 'pet' or unit =='focustarget' or unit == 'party') then
  574.             name:SetPoint('CENTER')
  575.             name:SetWidth(150)
  576.         else
  577.             name:SetPoint('LEFT', hp, 'LEFT', -2, 27)
  578.             name:SetJustifyH'LEFT'
  579.             name:SetWidth(300)
  580.         end
  581.         name:SetFont(font, fontsize, 'OUTLINE')
  582.         name:SetTextColor(1, 1, 1)
  583.         name:SetHeight(fontsize)
  584.         self.Info = name
  585.         if(unit == 'target')then
  586.             self:Tag(self.Info,'[difficulty][level][shortclassification] [raidcolor][name]')
  587.         else
  588.             self:Tag(self.Info,'[raidcolor][name]')
  589.         end
  590.     end
  591.  
  592.     if(Buffs) then
  593.         local buffs = CreateFrame('Frame', nil, self)
  594.         buffs:SetHeight(width)
  595.         buffs:SetWidth(width)
  596.         buffs.PostCreateIcon = auraIcon
  597.         if(unit == 'pet' or unit == 'focus' or unit == 'target' or unit == 'party') then
  598.             buffs.initialAnchor = 'TOPLEFT'
  599.             buffs['growth-y'] = 'RIGHT'
  600.             buffs['growth-x'] = 'DOWN'
  601.             buffs:SetPoint('TOPLEFT', self, 'BOTTOMLEFT', -3, -8)
  602.             buffs.size = 28
  603.             buffs.spacing = 3
  604.         end
  605.  
  606.         if(unit == 'focus' or unit == 'pet') then
  607.             buffs.num = 6
  608.         elseif(unit=='target') then
  609.             buffs.num = 9
  610.         else
  611.             buffs.num = 6
  612.         end
  613.         self.Buffs = buffs
  614.     end
  615.  
  616.     if(Debuffs) then
  617.         local debuffs = CreateFrame('Frame', nil, self)
  618.         debuffs:SetHeight(width)
  619.         debuffs:SetWidth(width)
  620.         debuffs.PostCreateIcon = auraIcon
  621.         if(unit == 'pet'or unit == 'focus' or unit == 'party') then
  622.             debuffs:SetPoint('LEFT', self, 'RIGHT', 8, 0)
  623.             debuffs['growth-x'] = 'RIGHT'
  624.             debuffs.initialAnchor = 'LEFT'
  625.         elseif(unit == 'player' or unit == 'targettarget') then
  626.             debuffs:SetPoint('LEFT', self, 'RIGHT', 20, 5)
  627.             debuffs['growth-x'] = 'RIGHT'
  628.             debuffs.initialAnchor = 'LEFT'
  629.         else
  630.             debuffs:SetPoint('BOTTOMLEFT', self, 'TOPLEFT', -4, 27)
  631.             debuffs['growth-y'] = 'UP'
  632.             debuffs.initialAnchor = 'BOTTOMLEFT'
  633.             if(PlayerOnlyDebuffs)then
  634.             debuffs.onlyShowPlayer = true
  635.             end
  636.         end
  637.         debuffs.size = 32
  638.         debuffs.spacing = 3
  639.         if(unit == 'targettarget' or unit == 'player') then
  640.             debuffs.num = 0
  641.         elseif(unit=='target') then
  642.             debuffs.num = 7
  643.         else
  644.             debuffs.num = 5
  645.         end
  646.         self.Debuffs = debuffs
  647.     end
  648.  
  649.     if(unit == 'player') then
  650.         if(IsAddOnLoaded('oUF_Swing')) then
  651.             self.Swing = CreateFrame('StatusBar', nil, self)
  652.             self.Swing:SetPoint('TOP', self, 'BOTTOM', 335, -65)
  653.             self.Swing:SetStatusBarTexture(texture)
  654.             self.Swing:SetStatusBarColor(1, 0.7, 0)
  655.             self.Swing:SetHeight(15)
  656.             self.Swing:SetWidth(width)
  657.             self.Swing:SetBackdrop(backdrop)
  658.             self.Swing:SetBackdropColor(0, 0, 0)
  659.            
  660.             local playerColor = RAID_CLASS_COLORS[select(2, UnitClass('player'))]
  661.             if(SwingClassColors)then
  662.             self.Swing:SetStatusBarColor(playerColor.r, playerColor.g, playerColor.b)
  663.             end
  664.            
  665.             CreateBorder(self.Swing, 12, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3)
  666.  
  667.             self.Swing.Text = self.Swing:CreateFontString(nil, 'OVERLAY')
  668.             self.Swing.Text:SetFont(font, 24, 'OUTLINE')
  669.             self.Swing.Text:SetPoint('CENTER', self.Swing)
  670.  
  671.             self.Swing.bg = self.Swing:CreateTexture(nil, 'BORDER')
  672.             self.Swing.bg:SetAllPoints(self.Swing)
  673.             self.Swing.bg:SetTexture(0, 0, 0, 0.1)
  674.            
  675.             if(SwingMeele)then
  676.              self.Swing.disableMelee = false
  677.             end
  678.            
  679.             if(SwingRange)then
  680.              self.Swing.disableRanged = false
  681.             end
  682.         end
  683.    
  684.         if(IsAddOnLoaded('oUF_RuneBar') and class == 'DEATHKNIGHT') then
  685.             self.RuneBar = {}
  686.             for i = 1, 6 do
  687.                 self.RuneBar[i] = CreateFrame('StatusBar', nil, self)
  688.                 if(i == 1) then
  689.                     self.RuneBar[i]:SetPoint('TOPLEFT', self, 'BOTTOMLEFT', 0, -8)
  690.                 else
  691.                     self.RuneBar[i]:SetPoint('TOPLEFT', self.RuneBar[i-1], 'TOPRIGHT', 5, 0)
  692.                 end
  693.                 self.RuneBar[i]:SetStatusBarTexture(texture)
  694.                 self.RuneBar[i]:SetHeight(10)
  695.                 self.RuneBar[i]:SetWidth(250/6 - 0.85)
  696.                 self.RuneBar[i]:SetBackdrop(backdrop)
  697.                 self.RuneBar[i]:SetBackdropColor(0, 0, 0)
  698.                 self.RuneBar[i]:SetMinMaxValues(0, 1)
  699.  
  700.                 CreateBorder(self.RuneBar[i], 12, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3)
  701.  
  702.                 self.RuneBar[i].bg = self.RuneBar[i]:CreateTexture(nil, 'BORDER')
  703.                 self.RuneBar[i].bg:SetAllPoints(self.RuneBar[i])
  704.                 self.RuneBar[i].bg:SetTexture(0.1, 0.1, 0.1)
  705.             end
  706.         end
  707.  
  708.         if IsAddOnLoaded('oUF_TotemBar') and class == 'SHAMAN' then
  709.             self.TotemBar = {}
  710.             self.TotemBar.Destroy = true
  711.             for i = 1, 4 do
  712.                 self.TotemBar[i] = CreateFrame('StatusBar', nil, self)
  713.                 self.TotemBar[i]:SetHeight(12)
  714.                 self.TotemBar[i]:SetWidth(265/4 - 5)
  715.                 if (i == 1) then
  716.                     self.TotemBar[i]:SetPoint('TOPRIGHT', self, 'BOTTOMRIGHT', -1, -9)
  717.                 else
  718.                     self.TotemBar[i]:SetPoint('RIGHT', self.TotemBar[i-1], 'LEFT', -8, 0)
  719.                 end
  720.  
  721.                 CreateBorder(self.TotemBar[i], 12, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3)
  722.  
  723.                 self.TotemBar[i]:SetStatusBarTexture(texture)
  724.                 self.TotemBar[i]:SetBackdrop(backdrop)
  725.                 self.TotemBar[i]:SetBackdropColor(0,0,0,6)
  726.                 self.TotemBar[i]:SetMinMaxValues(0, 1)
  727.  
  728.                 self.TotemBar[i].bg = self.TotemBar[i]:CreateTexture(nil, 'BORDER')
  729.                 self.TotemBar[i].bg:SetAllPoints(self.TotemBar[i])
  730.                 self.TotemBar[i].bg:SetTexture(texture)
  731.                 self.TotemBar[i].bg.multiplier = 0.3
  732.             end
  733.         end
  734.  
  735.         if(IsAddOnLoaded('oUF_Experience')) then
  736.             self.Experience = CreateFrame('StatusBar', nil, self)
  737.             self.Experience:SetPoint('TOPLEFT', self, 'BOTTOMLEFT', 0, -13)
  738.             self.Experience:SetStatusBarTexture(texture)
  739.             self.Experience:SetStatusBarColor(0,.7,1)
  740.             self.Experience:SetHeight(15)
  741.             self.Experience:SetWidth((unit == 'pet') and 150 or width)
  742.             self.Experience:SetBackdrop(backdrop)
  743.             self.Experience:SetBackdropColor(0, 0, 0, .5)
  744.  
  745.             self.Experience.Tooltip = true
  746.  
  747.             CreateBorder(self.Experience, 12, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3)
  748.  
  749.             self.Experience.Text = self.Experience:CreateFontString(nil, 'OVERLAY')
  750.             self.Experience.Text:SetFont(font, fontsize, 'OUTLINE')
  751.             self.Experience.Text:SetPoint('CENTER', self.Experience)
  752.             self.Experience.bg = self.Experience:CreateTexture(nil, 'BORDER')
  753.             self.Experience.bg:SetAllPoints(self.Experience)
  754.             self.Experience.bg:SetTexture(0, 0, 0, .5)
  755.         end
  756.  
  757.         if(class == 'DRUID') then
  758.             self.DruidPower = CreateFrame('StatusBar', nil, self)
  759.             self.DruidPower:SetPoint('BOTTOM', self.Power, 'TOP')
  760.             self.DruidPower:SetStatusBarTexture(texture)
  761.             self.DruidPower:SetHeight(1)
  762.             self.DruidPower:SetWidth(width)
  763.             self.DruidPower:SetAlpha(0)
  764.  
  765.             self.DruidPower.Text = self.DruidPower:CreateFontString(nil, 'OVERLAY')
  766.             self.DruidPower.Text:SetFont(font, fontsize, 'OUTLINE')
  767.             self.DruidPower.Text:SetPoint('CENTER', self.DruidPower)
  768.             self.DruidPower.Text:SetTextColor(unpack(colors.power['MANA']))
  769.  
  770.             self:RegisterEvent('UNIT_MANA', UpdateDruidPower)
  771.             self:RegisterEvent('UNIT_ENERGY', UpdateDruidPower)
  772.             self:RegisterEvent('PLAYER_LOGIN', UpdateDruidPower)
  773.         end
  774.  
  775.     end
  776.  
  777.     if(unit == 'player' or unit == 'target' or unit =='focus' or unit == 'pet' or unit == 'targetarget' or unit == 'focustarget') then
  778.    
  779.         self.Range = {
  780.             insideAlpha = 1,
  781.             outsideAlpha = 0.3,
  782.         }
  783.  
  784.         self.SpellRange = true
  785.  
  786.         self.SpellRange = {
  787.             insideAlpha = 1,
  788.             outsideAlpha = 0.3,
  789.         }
  790.        
  791.     end
  792.  
  793.     if(unit == 'targettarget' or unit == 'focus' or unit == 'pet' or unit == 'focustarget' or unit == 'party') then
  794.         self:SetAttribute('initial-height', height)
  795.         self:SetAttribute('initial-width', 150)
  796.     else
  797.         self:SetAttribute('initial-height', height)
  798.         self:SetAttribute('initial-width', width)
  799.     end
  800.  
  801.     self.disallowVehicleSwap = true
  802.  
  803.     return self
  804.    
  805. end
  806.  
  807. local function menu(self)
  808.     if(self.unit:match('party')) then
  809.         ToggleDropDownMenu(1, nil, _G['PartyMemberFrame'..self.id..'DropDown'], 'cursor')
  810.     else
  811.         FriendsDropDown.unit = self.unit
  812.         FriendsDropDown.id = self.id
  813.         FriendsDropDown.initialize = RaidFrameDropDown_Initialize
  814.         ToggleDropDownMenu(1, nil, FriendsDropDown, 'cursor')
  815.     end
  816. end
  817.  
  818. local function UpdateThreat(self, _, unit)
  819.     if (self.unit ~= unit) then
  820.         return
  821.     end
  822.  
  823.     if (self.Aggro) then
  824.         local threat = UnitThreatSituation(self.unit)
  825.         if (threat == 3) then
  826.             self.Aggro:SetText('|cFFFF0000AGGRO')
  827.             self.Health:SetBackdropColor(0.9, 0, 0)
  828.         else
  829.             self.Aggro:SetText('')
  830.             self.Health:SetBackdropColor(0, 0, 0)
  831.         end
  832.     end
  833. end
  834.  
  835. local function raidlayout(self, unit)
  836.     self.menu = menu
  837.     self:RegisterForClicks('AnyUp')
  838.     self:SetScript('OnEnter', UnitFrame_OnEnter)
  839.     self:SetScript('OnLeave', UnitFrame_OnLeave)
  840.     self:SetAttribute('*type2', 'menu')
  841.     self:SetAttribute('initial-height', 38)
  842.     self:SetAttribute('initial-width', 42)
  843.    
  844.     CreateBorder(self, 11, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4)
  845.  
  846.     self:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = -1.5, left = -1.5, bottom = -1.5, right = -1.5}})
  847.     self:SetBackdropColor(0, 0, 0, 0.8)
  848.  
  849.     self.DebuffHighlightBackdrop = true
  850.     self.DebuffHighlightFilter = true
  851.  
  852.     self.Health = CreateFrame('StatusBar', nil, self)
  853.     self.Health:SetStatusBarTexture(bartexture)
  854.     self.Health:SetParent(self)
  855.     self.Health:SetAllPoints(self)
  856.     self.Health.colorClass = true
  857.     self.Health.Smooth = true
  858.     self.Health:SetOrientation('HORIZONTAL')
  859.     self.Health:SetOrientation('VERTICAL')
  860.    
  861.     self.Health.bg = self.Health:CreateTexture(nil, 'BORDER')
  862.     self.Health.bg:SetAllPoints(self.Health)
  863.     self.Health.bg:SetTexture(bartexture)
  864.     self.Health.bg:SetAlpha(0.4)
  865.  
  866.     self.Name = self.Health:CreateFontString(nil, 'OVERLAY')
  867.     self.Name:SetPoint('TOP', 0, -12)
  868.     self.Name:SetFont(font, 11, 'OUTLINE')
  869.     self:Tag(self.Name, '|cffffffff[AfterRaidName]|r')
  870.    
  871.     self.MasterLooter = self.Health:CreateTexture('$parentMasterLooterIcon', 'OVERLAY', self)
  872.     self.MasterLooter:SetHeight(12)
  873.     self.MasterLooter:SetWidth(12)
  874.     self.MasterLooter:SetPoint('RIGHT', self.Health, 'TOPRIGHT', 2, 2)
  875.  
  876.     self.Leader = self.Health:CreateTexture('$parentLeaderIcon', 'OVERLAY', self)
  877.     self.Leader:SetHeight(14)
  878.     self.Leader:SetWidth(14)
  879.     self.Leader:SetPoint('LEFT', self.Health, 'TOPLEFT', -5, 2)
  880.  
  881.     self.RaidIcon = self.Health:CreateTexture(nil, 'OVERLAY')
  882.     self.RaidIcon:SetHeight(17)
  883.     self.RaidIcon:SetWidth(17)
  884.     self.RaidIcon:SetPoint('CENTER', self, 'TOP')
  885.     self.RaidIcon:SetTexture('Interface\\TargetingFrame\\UI-RaidTargetingIcons')
  886.  
  887.     self.ReadyCheck = self.Health:CreateTexture(nil, 'OVERLAY')
  888.     self.ReadyCheck:SetPoint('TOPRIGHT', self.Health, -7, -7)
  889.     self.ReadyCheck:SetPoint('BOTTOMLEFT', self.Health, 7, 7)
  890.     self.ReadyCheck.delayTime = 4
  891.     self.ReadyCheck.fadeTime = 1
  892.    
  893.     self.Aggro = self.Health:CreateFontString(nil, 'OVERLAY')
  894.     self.Aggro:SetPoint('CENTER', self.Health, 'BOTTOM')
  895.     self.Aggro:SetFont(font, 11, 'OUTLINE')
  896.    
  897.     table.insert(self.__elements, UpdateThreat)
  898.     self:RegisterEvent('PLAYER_TARGET_CHANGED', UpdateThreat)
  899.     self:RegisterEvent('UNIT_THREAT_LIST_UPDATE', UpdateThreat)
  900.     self:RegisterEvent('UNIT_THREAT_SITUATION_UPDATE', UpdateThreat)
  901.  
  902.     self.Range = {
  903.         insideAlpha = 1,
  904.         outsideAlpha = 0.3,
  905.     }
  906.    
  907.     self.SpellRange = {
  908.         insideAlpha = 1,
  909.         outsideAlpha = 0.3,
  910.     }
  911.    
  912.     return self
  913. end
  914.  
  915. oUF:RegisterStyle('AftermathhRaid', raidlayout)
  916. oUF:SetActiveStyle('AftermathhRaid')
  917.  
  918. local raid = oUF:SpawnHeader(nil, nil, 'raid,solo',
  919.     'showPlayer', true,
  920.     'showSolo', false,
  921.     'showRaid', true,
  922.     'xoffset', 12,
  923.     'yOffset', -5,
  924.     'point', 'LEFT',
  925.     'groupFilter', '1,2,3,4,5,6,7,8',
  926.     'groupingOrder', '1,2,3,4,5,6,7,8',
  927.     'groupBy', 'GROUP',
  928.     'maxColumns', 12,
  929.     'unitsPerColumn', 5,
  930.     'columnSpacing', 12,
  931.     'columnAnchorPoint', 'TOP'
  932. )
  933. raid:SetPoint('TOPLEFT', UIParent, 10, -8)
  934.  
  935. oUF:RegisterStyle('Aftermathh', func)
  936. oUF:SetActiveStyle('Aftermathh')
  937.  
  938. local party = oUF:SpawnHeader(nil, nil, 'party',
  939.     'showPlayer', false,
  940.     'showParty', true,
  941.     'xoffset', 12, 
  942.     'yOffset', -52
  943. )
  944. party:SetPoint('TOPLEFT', UIParent, 99, -14)
  945. party:SetScale(0.90)
  946.  
  947. local player = oUF:Spawn('player')
  948. player:SetPoint('BOTTOMLEFT', UIParent, 196, 182)
  949. local target = oUF:Spawn('target')
  950. target:SetPoint('BOTTOMRIGHT', UIParent, -237, 184)
  951. local tot = oUF:Spawn('targettarget')
  952. tot:SetPoint('RIGHT', UIParent, -75, -189)
  953. local pet = oUF:Spawn('pet')
  954. pet:SetPoint('LEFT', UIParent, 105, -156)
  955. pet:SetScale(0.90)
  956. local focus = oUF:Spawn('focus')
  957. focus:SetPoint('LEFT', UIParent, 108, -45)
  958. focus:SetScale(0.90)
  959. local focustarget = oUF:Spawn('focustarget')
  960. focustarget:SetPoint('LEFT', UIParent, 17, -3)
  961. focustarget:SetScale(0.90)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement