Jump to content

  • Curse Sites
Help

Frion

Member Since 13 Nov 2012
Offline Last Active Oct 24 2014 09:22 PM
-----

#4160887 The show goes on

Posted Sulre on 02 July 2014 - 09:33 PM

Posted Image
Posted Imagelegit playing on the rise


#4153454 weed

Posted Snackumz on 24 June 2014 - 04:23 AM

i smoke it

edit: +rep if helped


#4108692 New RBG glitch last thing paladins need.

Posted Noblock on 26 April 2014 - 09:44 AM

View PostSevre, on 25 April 2014 - 11:35 PM, said:

i've seen 1 team using lag glitches to cap and teleport around the map in incredible ways. but it's very rare tbh on eu. However the amount of russian teams on EU wintrading has always been huge so people who just wanted the rating just did that instead. I can't tell you how many times if you were above 2.4 mmr on eu you'd meet one guy on like 3.5mmr  buy himself with no team mates on eu in season 12. I havent played much above 2.2 since then but people i know who are playing super high rated say it still happens

Lies


#4069073 Frost Mage Guide 5.4.7

Posted dominera on 01 March 2014 - 05:19 PM

Introduction

I have noticed there arent really that many guides for frost mages, or mages in general, thats directed to PvP that are updated at the moment. With the break between S14-15 I was pretty bored since you couldnt do any rated PvP, and therefore I thought I could spend some time doing a guide directed to the community. Im not the best mage thats WoW have seen but being gladiator and 2.4k+ I feel like I have atleast some understanding of the class and therefore I think I can help atleast new mages with some directives on how to spec, gem, glyph etc. This guide is mostly aimed towards people thats new to the mage class but my hope is that everyone might learn something new. Without further delay:

1. Talents
2. Glyphs
3. Stats, gems and enchants
4. Macros
5. General gameplay and tips

1. Talents

Posted Image

Level 15: Against most comps you will be running with PoM. PoM + Alter combo is really powerful and a well timed poly on the healer - alter back - RoF on the dps can put up alot of pressure on the enemy team. PoM have a big range of usage, you can use it to get a clutch PoM poly on the healer or you could use it to tripple RoF the whole enemy team.Sometimes I play Blazing Speed against heavy melee comps that will train you all game or certain melee/caster setups. Normally I go with PoM against melee teams as well cause of the simple reason that it can give your team alot of momentum. Its abit harder to use PoM correctly so if you are feeling you just getting roflstomped I would suggest to try using Blazing cause of the good opportunity to create distance.

Posted Image

Level 30: Temporal Shield is an obvious choice in 3s. Its not only a damage reduction but it will also heal back a certain amount when it expires. Its able to use it while you are stunned, slept, feared, frozen and incapacitated and this combined with the fact that its NOT on GCD makes it a really powerful tool. However, cause of its short duration and how it works its alot harder to use it than Ice Barrier. It requires some practice to get really good with it, a perfectly timed Temporal Shield could save your team from a block, link, guardian or w/e - so its definitely a talent worth using! The only time I go with Ice Barrier is when I duel, doing bgs or queing 2s (in other words where I dont have a healer).

Posted Image

Level 45: Ring of Frost is the best choice here and its what I use as my standard spec against most comps. Its a very powerful spell especially combined with PoM and I would recommend it in most situations. Ice Ward is also a good talent and even if I go with RoF most of the times there are some situations where Ice Ward comes to use. If you are facing a melee team that will cleave you down for example it could be wise to use Ice Ward if you feel it will create some distance. Normally I just use it in duels or 2s.

Posted Image

Level 60: Cold Snap is the obvious winner. Heals you for 30% of your HP and resets the CD of your block. It can be used in any CC as well as in your current block. It will also reset the lockout on frost for Ice Block. Now, if you happen to get into this situation you have done something terrible wrong, getting kicked on frost on low HP and die before you can block is really !@#$ing bad. However, if you do for some reason get into this situation you should know that Cold Snap will "reset" the lockout. So if you have block but get kicked on frost while your healer is in some CC or whatnot and you judge you are going to die before the lockout expires you could, as a final solution, use Cold Snap to reset block and use it. But as I said, this is a situation you shouldnt get into, if you play correctly, keeping track of enemy CDs and atleast have some small knowledge about your enemy you could easily anticipate things like this. But if you get into a worst case scenario you should know there is a way out.

Posted Image

Level 75: Best choice for arena is Living Bomb. It doesnt brake CC as easy as NT and it will deal good damage. Remember to use frost nova before you apply Living Bomb since LB will benefit from it even when nova expires/breaks. And when you are going ham you should always use nova, icy veins + on use (ideally with procs), THEN Living Bomb. The only time I go Nether Tempest is when Im doing rbgs.

Posted Image

Level 90: Incanter's Ward is the best. It gives you not only passive damage increase but after the shield is broken it gives you up to 15% damage increase. This is obviously one of your biggest offensive CDs you have. I see alot of mages that uses this quite randomly and/or mages that will alter before they have Incanter's Ward up. I used to do this myself but when I learned how to use it correctly I gained alot, so simply by learning how to use Incanter's Ward properly you can increase your gameplay alot. Since the CD is only 25 sec its really good to use it when you are doing swaps combined with Deep/Silence combo. So make sure you are utilizing it to the fullest!

2. Glyphs

Posted Image

Glyph of Armors, Glyph of Polymorph and Glyph of Deep Freeze are normally what most mages use as the standard spec in 3s. Glyph of Armors is a must in all matchups as well as Glyph of Polymorph (most of the time atleast). The only glyph spot that you really can choose from and experiment with is the Glyph of Deep Freeze. Running with this glyph gives you the most damage compared to if you would not have the glyph, its not that huge of a difference but it gives you a slightly higher burst. Its also really good to get quick deeps off, especially against druids since they will have time to shift the novas if you have a GCD on it.

Glyph of Deep Freeze: Even if its the best overall to go with Glyph of Deep Freeze there are situations and comps where it could be more beneficial to go with some other glyph. If you play a comp that relies on the mages damage to land kills or a comp where you just wanna pump out as much damage as possibly, then you should play with Glyph of Deep Freeze since with the GCD removed you will be able to do slightly more damage. If you play a comp that requires you to coordinate damage with your teammate in order to score kills then it could be wise to go with another glyph, cause even if you will do slightly worse damage the 5 sec Deep Freeze stun will buy your teammate 1 more sec to do damage, which obviously is really good - especially if you swap to the healer. A good example of this would be Godcomp, the comp still works if you play with the glyph but I find that you will have more success in scoring kills without the glyph since 1 additional sec will be very beneficial to your shadowpriest.

Its also a very good idea to not have the Glyph of Deep Freeze if you play a comp where you will use deep mostly as a CC. If you play RMP or RMD you mostly kill someone in a kidney/cheap shot anyway, and since Prey on the Weak will be beneficial to you as well its very common to use Deep as a CC on the healer, which of course will be best without the glyph since the longer the stun is the better it will be as a CC. Its also based alot on personal preference, I have played with and without the glyph alot and there are pros and cons with both ways, if you play a comp where you can choose its mostly what you like playing with.

Glyph of Ice Block: Except for the above mentioned glyphs you could also choose between Glyph of Evocation and Glyph of Ice Block. The rest of the glyphs doesnt really have any place in the arenas, maybe Glyph of Ice Lance could be used in rbgs but I would 99% of the time use any of the 5 mentioned glyphs above. Glyph of Ice Block is obviously really good if you face a spellcleave sicne the 3 sec immunity will allow you to freecast whatever you want, set up some damage or just buy your healer some time to top you up without you having to worry about getting killed or interrupted. You can use this glyph in many ways, the immunity will also be more forgiving to offensive blocks. If you have all your procs up while you are in the block you could alter with the immunity buff up while you are unleashing your damage, and then altering back with all the procs again + immunity buff. Doing this will practically make you an unstoppable killing machine for 6 sec. You could also alter with the immunity buff up if your healer is in a CC without trinket and you judge you will die before he gets out. Obviously its best to use alter when you are going ham with all procs up but it could be used defensively as well, and this is one way of doing it.

Glyph of Evocation: I normally just use Glyph of Evocation in duels and 2s but it has its place in 3s as well, provided you dont run with the Glyph of Deep Freeze or Glyph of Ice Block. There isnt really much to say about it, its nice to have as an extra backup if you feel you need it. But I think Glyph of Ice Block is best in most cases if you want a defensive glyph, going up against melee/caster it will do some good and even against double melee sometimes cause of the free frost nova. If its a ret or DK it could also save you from some small amount of damage. I guess this choice is also based on personal preference to some point.

3. Stats, gems and enchants

Stat priority goes 6% hit > Int > haste > mastery > crit.Mastery used to be really good but after the change its not really that great anymore. Icicles is decent but faster polys, rings etc is more valuable which is the reason to why you wanna go with haste. Also, the more haste you have the faster frostbolts which will make it able to stack icicles faster which will give more damage. A little farfetched but you get the point.

For gems you wanna use:

Yellow: +80 Int and + 160 Haste
Red: + 160 Int
Blue: +80 Int and +80 PvP Power
Meta: +216 Int and +3% Crit

As far as enchants go you want:

Shoulder: +200 Int and +100 Crit
Cloak: +180 Int
Chest: +80 All stats
Bracer: +180 Int
Gloves: + 170 Haste
Legs: +285 Int and +165 Crit
Boots: +140 mastery and speed boost
Wep: Jade Spirit
OH: +165 Int

4. Macros

Posted Image

Arena target and focus macros:

Target and Focus arena 1-2-3 is essential for a mage. Its really important for all classes but its especially vital for a mage because you will be swapping target and focus alot in arenas when you are double CC and spellstealing stuff etc.

/target arena1
/target arena2
/target arena3

/focus arena1
/focus arena2
/focus arena3

Polymorph + Counterspell Arena 1-2-3:

This is something extremely important. Its really good not only for the simple reason to poly someone without having them as target/focus, but also because it allows you to peel effectively. Macros like these allows you to spam poly on the whole enemy team, and playing a mage you will abuse poly alot. Its also vital to have CS bound to arena 1-2-3 so you could instantly interrupt a mages opener for example.When the game starts you wont be able to have time to focus him first and then cast CS, its easier to just spam CS 2 or CS 3 (depending on which spot he is on) and when he comes out of invis trying to poly your healer or something you could just instantly interrupt his cast.

This is good for all kinds of fast reactions, if a priest spectral guise in order to fear you could spam CS 1 and as soon as he comes out he will be silenced. The same goes for every thing that requires fast interrupts, if you are having a hunter as target and the healer on focus and you see the third player is about to CC your healer you could just press CS 3 instead of first focusing him and then CS him. This macro is not only good for being fast but also for the reason that you sometimes dont wanna change focus cause you are keeping track of debuffs/buffs so by having Arena 1-2-3 macros you could increase your awareness since you wont have to change focus all the time for a CC.

#showtooltip
/cast [@arena1] polymorph

#showtooltip
/cast [@arena2] polymorph

#showtooltip
/cast [@arena3] polymorph

#showtooltip
/stopcasting
/cast [@arena1] counterspell

#showtooltip
/stopcasting
/cast [@arena2] counterspell

#showtooltip
/stopcasting
/cast [@arena3] counterspell

CS and Focus CS, just as the above:

#showtooltip
/stopcasting
/cast counterspell

#showtooltip
/stopcasting
/cast [@focus] counterspell

Focus deep and focus poly:

#showtooltip
/cast [@focus] deep freeze

#showtooltip
/cast [@focus] polymorph

Spellsteal macro:

Spellsteal macro with cancelaura. If you are facing a fire mage and spellsteals pyro proc you wanna dispel it so he doesnt steal it back from you, and you also want cancelaura for sac since even if you take it away from your target it will still have the same effect on you, so if you steal it from a hunter and they deal damage to you the pala will come out of poly even though the hunter doesnt have sac:

#showtooltip
/cast Spellsteal
/cancelaura Hand of Sacrifice
/cancelaura Pyroblast!

#showtooltip
/cast [@focus] Spellsteal
/cancelaura Hand of Sacrifice
/cancelaura Pyroblast!

Living bomb macro:

LB macro for target and focus, good for taking down groundings etc:

#showtooltip
/cast [modifier:alt, @focus] living bomb; living bomb

PoM ring:

#showtooltip
/cast presence of mind
/cast ring of frost

Orb with on use macroed into it:

#showtooltip frozen orb
/use 13
/cast frozen orb

Pet Freeze + Summon Water Elemental:

This macro will allow you to cast pet nova if its alive, but if your pet is dead it will cast Summon Water Elemental:

#showtooltip freeze
/cast [nopet][@pet,dead]Summon Water Elemental;Freeze

Ice Block macro + cancelaura:

Allows you to spam block without being able to cancel it:

#showtooltip
/stopcasting
/cast !ice block

Since you have a spammable block you need to put cancelaura for it in some other spell, myself I use it on ice lance:

#showtooltip
/cast ice lance
/cancelaura ice block
/dismount

Mark macro:

I recommend macro marking in your buffs. When you use mirror image you will lose your mark, therefore its good to be able to reapply it:

#showtooltip
/cast dalaran brilliance
/script SetRaidTarget("Foxztar",6)
/script SetRaidTarget("HEALER",5)
/script SetRaidTarget("DPS",7)

Decurse:

Decurse macro for healer + DPS. Definitely a must:

#showtooltip
/cast [@DPS] remove curse
#showtooltip
/cast [@HEALER] remove curse

Alter Time macro + cancelaura:

Allows you to spam Alter Time without cancel its effect. You could set "reset" to 10 if you want which makes it completely spammable, but then you need another bind for activating it. My macro will allow you to spam it but also using it for activating Alter. You wanna put /use 1 in order to stop flamestrike AoE circle:

#showtooltip
/castsequence reset=1 alter time, flamestrike
/use 1

Cancelaura for Alter Time. If you get topped off or if you will get into a really bad spot it might be a good idea to cancel it:

#showtooltip
/cancelaura alter time

Pet dismiss + control macros:

You can use this to unsummon your pet. Its nothing you really have to use, but I think its nice to have. Long ago you could resummon your pet to reset the CD of freeze. You are obviously not able to do that now but its a handy macro in case your pet gets stuck in a bad spot:

/script PetDismiss();

Last but not least, the pet control macros. This is something very useful to have. I see alot of mages that macros /petattack into frostbolt etc, and while this might be a convenient solution its best to have separate binds for that. You will have better DPS by controlling your pet alongside with your own spells, also pet move to is crucial to have as a mage. If you are low on HP and are kiting around a pillar you could control your pet to the other side and nova your follower and evo/getting topped off. You could also use it the other way around, if your enemy with low HP is kiting you just send pet the other way around and nova him so you can come around and finnish him off:

"Pet move to"
/click PetActionButton3LeftButton

"Petattack"
/petattack"

Petpassive"
/petpassive
/petfollow

5. General gameplay and tips

Mirror Image is more of an utility spell rather than a burst CD. While it does increase your damage its not by that much for you to start playing around it, especially with the long CD. Its better to use it as an utility spell to get snares on the enemy team, keep people in combat, drop target and focus or just to dodge CC.

As I mentioned above you always wanna apply your Living Bomb while your target is frozen. You could achieve this through pet nova, frost nova or RoF. Even after the frost nova breaks your LB will benefit from the damage increase.

Playing as a mage you have a really high burst, but you are very dependent on your CDs to achieve anything. As most already know you wont do that much damage if you dont have any CDs or procs, but having orb, deep and full procs you will deal a !@#$ ton of damage. Thats why its very important not only to use your CDs wisely, but learn how to play around them.

I guess you could say that you have two big phases or conditions as a mage in arena. The first one is the damage phase where you will pump out as much damage as you can using orb, deep, blanket, and procs etc. Most of your damage will come every 1 minute when you have orb + deep up but you could also deal good damage every 30 sec with deep/pet nova/incanter's.

The second phase is when you dont have any damage going, when you dont have any procs and your pet nova, deep etc is on CD. This is where alot of mages dont do that much of use. Its really easy to deal damage as a mage with all your CDs, but playing good and keeping pressure and momentum without any procs/CDs is abit harder. You could probably say that the second phase is more of an controlling phase where you wanna aim to control your enemy team with CC and setting up for your next burst. One way to do this is spellstealing, using this spell is really important as a mage. Inbetween your burst windows its really good utilizing this spell in order to make it easier to score a kill next time you have your burst. Its also vital to spellsteal things like fear ward, sac and big buffs. When you are going ham you obviosuly dont want to spend your precious time spellstealing stuff, but you need to learn how and when to use it. You must judge if the globals and time spent on spellstealing is worth it.

Using polymorph is really important, not only as a CC on the healer. As a mage you should literally spam poly on the whole enemy team, especially when you are inbetween your bursts. You should always try to have one target in sheep at all times, and if you play with a druid you could cycle your poly/clones on the healer and DPS so that you try to cross CC the enemy team as much as possible, 1 target in clone and the other in sheep, and when dr strikes you just shift it etc... Spamming poly is also good when you wanna peel for your team since dispel is on a CD, and in some cases you could force trinkets when abusing poly. You could also use poly solely for the reason to force a dispel.

While fakecasting is important you shouldnt get obsessed by it. As a mage you have plenty of tools to deal instant CC/damage but since our change to mastery we need to stack icicles, which comes from FFB and casting FB. Its good to fakecast, but due to it being like 2k interrupts in the game along with all the instant CC its not worth spending a huge amount of time trying to fake cast something thats always gonna have a back up interrupt. Fakecast maybe once or twice and if he doesnt kick you just go for it, dont try and juke for an eternity - it just takes time and you lose momentum. And if you do get kicked you can always cast from the other school. If you juke poly and he doesnt kick you and you decide to go for it and get kicked you can just cast frostbolt or a ring, provided you have juked atleast 1 of his interrupts. Getting kicked on frost will allow you to cast poly or spellsteal.

While Frost Armor will give you most damage you rarely use it in arenas. Sometimes you could switch to it but overall you will go with the following armors:

Double melee: Molten Armor
Melee/Caster: Molten Armor
Double Caster: Mage Armor

Streams:

http://www.twitch.tv/jahmillionaire
http://www.twitch.tv/watchmeblink1
http://www.twitch.tv/xaryulol
http://www.twitch.tv/venruki

Those are probably the best mages atm that streams pretty often, if you wanna improve you could learn alot from them.

I think this sums up the guide, I might add more later but I think this cover the basics pretty well. If you have any questions or so feel free to ask.


#3824595 Default UI Scripts

Posted evillspawn on 20 December 2012 - 01:57 PM

I found this ui screenshot, anyone got any idea what script makes hp bars look like that?

http://i.imgur.com/2B0jt.jpg


#3823530 Default UI Scripts

Posted Thaya on 18 December 2012 - 12:52 PM

Make sure you have LoadAddOn("Blizzard_ArenaUI") before doing anything with the ArenaEnemyFrames - they simply don't exist until loaded.


#3686808 Default UI Scripts

Posted Thaya on 17 April 2012 - 08:57 AM

Table of contents
  • How to use scripts
  • General/uncategorized scripts
    • Disable damage/healing spam in floating text
    • Add more "power auras"
    • Darken all the graphics Ibo/Lorti UI style
    • Hide the error frame (red text in top middle)
  • Unit frame scripts
    • Class icons instead of portraits
    • Class colors in hp bars
    • Class colors behind names
    • Disable healing/damage spam over player/pet frame
    • Flashy spellsteal border for non-mages and/or enrage effects
    • Change the format of hp/mana text to absolute values ("140k")
    • Hide the faction/PvP icon
    • Disable the group number frame
    • Scaling/moving unitframes
  • Arena frame scripts
    • Show frames outside of arena (macro)
    • Scaling/moving arenaframes and castbars
    • Arena trinkets tracker
  • Action bar scripts
    • Hide graphics
    • Hide macro labels
    • Hide hotkeys
  • Cast bar scripts
    • Text cast timer ("0.8 / 1.5")
    • Scaling/moving castbars
  • Quality of life scripts
    • Autosell grey trash and repair
    • Minimap tweaks
    • Extra slash commands
            

1. How to use scripts

You either need to create your own addon, add the code to an existing addon (I don't recommend this), or run it in-game via the /run command. The latter, in most cases, requires a condensed form of the script to fit the 255 character limit of input/macros; macros often need to be executed after every reload or zone. Unless you're going to Blizzcon tomorrow, there's really no reason to use macros - just create an addon. I will, however, add macros where available (i.e. those I already have in macro form).

Download this template: http://www.mediafire...b4cj4r0fcqcwquj

This already has the folder structure and the .toc file, at this point you only need to open the .lua file as a text file (with notepad/wordpad or anything that works with raw text), and simply copy/paste the code you want from below.

You don't need to relog every time you edit a .lua file if the addon is loaded, a /reloadui is enough.

Comments start with "--", multi-line comments look like this:
--[[
This code
won't execute.
]]

-- This is a single-line comment
This way you can enable/disable certain features, or just add comments to organize your code better.

If you're a do it yourself type, here's how you create an addon:
1. Create YourAddon folder in Interface/Addons
2. Create a text file called YourAddon.toc (has to be the same name as the folder), content should be:
## Title: YourAddon
## Interface: 50001

YourAddon.lua
3. Create YourAddon.lua (can be any filename, but it has to be mentioned in the .toc file to load), copy scripts into that file.

Make sure that you see the actual extensions of files - this is disabled by default in Windows. So the files you are looking at might actually be YourAddon.toc.txt and YourAddon.lua.txt, and of course it doesn't work in this case.

2. General/uncategorized scripts

2.1. Disable damage/healing spam in floating text:
LoadAddOn("Blizzard_CombatText")

COMBAT_TEXT_TYPE_INFO["PERIODIC_HEAL"] = {var = nil, show = nil}
COMBAT_TEXT_TYPE_INFO["HEAL_CRIT"] = {var = nil, show = nil}
COMBAT_TEXT_TYPE_INFO["HEAL"] = {var = nil, show = nil}
COMBAT_TEXT_TYPE_INFO["PERIODIC_HEAL_ABSORB"] = {var = nil, show = nil}
COMBAT_TEXT_TYPE_INFO["HEAL_CRIT_ABSORB"] = {var = nil, show = nil}
COMBAT_TEXT_TYPE_INFO["HEAL_ABSORB"] = {var = nil, show = nil}

COMBAT_TEXT_TYPE_INFO["DAMAGE_CRIT"] = {var = nil, show = nil}
COMBAT_TEXT_TYPE_INFO["DAMAGE"] = {var = nil, show = nil}
COMBAT_TEXT_TYPE_INFO["SPELL_DAMAGE_CRIT"] = {var = nil, show = nil}
COMBAT_TEXT_TYPE_INFO["SPELL_DAMAGE"] = {var = nil, show = nil}
Macros:
/run CTTI=COMBAT_TEXT_TYPE_INFO CTTI.PERIODIC_HEAL={var=nil,show=nil} CTTI.HEAL_CRIT={var=nil,show=nil} CTTI.HEAL={var=nil,show=nil} CTTI.PERIODIC_HEAL_ABSORB={var=nil,show=nil} CTTI.HEAL_CRIT_ABSORB={var=nil,show=nil} CTTI.HEAL_ABSORB={var=nil,show=nil}
/run CTTI.DAMAGE_CRIT={var=nil,show=nil} CTTI.DAMAGE={var=nil,show=nil} CTTI.SPELL_DAMAGE_CRIT={var=nil,show=nil} CTTI.SPELL_DAMAGE={var=nil,show=nil}

2.2. Add more "power auras":
local frame = CreateFrame("FRAME")
frame:RegisterEvent("UNIT_AURA")

frame:SetScript("OnEvent", function(self, event, ...)
	local unitid = ... if unitid ~= "player" then return end

	if UnitBuff("player", "Eradication") then
		SpellActivationOverlay_ShowOverlay(SpellActivationOverlayFrame, 64371, "TEXTURES\\SPELLACTIVATIONOVERLAYS\\GENERICTOP_01.BLP", "TOP", 1.2, 139, 65, 239, false, false)
	else
		SpellActivationOverlay_HideOverlays(SpellActivationOverlayFrame, 64371)
	end
end)
First, change "Eradication" to whatever you need. (Use the locale/language you actually play on.)

Next, here's how you configure this whole thing:
SpellActivationOverlay_ShowOverlay(self, spellID, texturePath, location, scale, r, g, b, info.vFlip, info.hFlip)
It's all pretty self-explanatory. Keep the first argument as it is in the script above, everything else you can change/edit as you wish to. The last two arguments are vertical and horizontal flips, "r, g, b" are red/green/blue color codes (0-255).

To get the spellID, find your spell/aura on wowhead and look at the address bar. The number is the spellID. Keep in mind you need the spellID of the buff, not the spell that triggers it - they are sometimes different.

Textures created for the default UI and available in the game files:
Spoiler
Just change the last part of the texture path provided in the example above to any of these.

If that's not enough, you can always steal a file from Power Auras or other addons. To specify an external texture: "Interface\\AddOns\\YourAddon\\yourtexture.tga" - you can use .tga files; in general, you can use any texture/picture available to the game (anything in the game files and anything in addon folders).

2.3. Darken all the graphics Ibo/Lorti UI style:
This particular script is stolen from Ibo UI. You'll also need some textures to make it look right, simply put them into the /Interface/ folder alongside the Addons folder:
http://www.mediafire...mpaxe6jfllwa5q8

local frame=CreateFrame("Frame")
frame:RegisterEvent("ADDON_LOADED")

frame:SetScript("OnEvent", function(self, event, addon)
	if (addon == "Blizzard_TimeManager") then
		for i, v in pairs({PlayerFrameTexture, TargetFrameTextureFrameTexture, PetFrameTexture, PartyMemberFrame1Texture, PartyMemberFrame2Texture, PartyMemberFrame3Texture, PartyMemberFrame4Texture,
			PartyMemberFrame1PetFrameTexture, PartyMemberFrame2PetFrameTexture, PartyMemberFrame3PetFrameTexture, PartyMemberFrame4PetFrameTexture, FocusFrameTextureFrameTexture,
			TargetFrameToTTextureFrameTexture, FocusFrameToTTextureFrameTexture, BonusActionBarFrameTexture0, BonusActionBarFrameTexture1, BonusActionBarFrameTexture2, BonusActionBarFrameTexture3,
			BonusActionBarFrameTexture4, MainMenuBarTexture0, MainMenuBarTexture1, MainMenuBarTexture2, MainMenuBarTexture3, MainMenuMaxLevelBar0, MainMenuMaxLevelBar1, MainMenuMaxLevelBar2,
			MainMenuMaxLevelBar3, MinimapBorder, CastingBarFrameBorder, FocusFrameSpellBarBorder, TargetFrameSpellBarBorder, MiniMapTrackingButtonBorder, MiniMapLFGFrameBorder, MiniMapBattlefieldBorder,
			MiniMapMailBorder, MinimapBorderTop,
			select(1, TimeManagerClockButton:GetRegions())
		}) do
			v:SetVertexColor(.4, .4, .4)
		end

		for i,v in pairs({ select(2, TimeManagerClockButton:GetRegions()) }) do
			v:SetVertexColor(1, 1, 1)
		end

		self:UnregisterEvent("ADDON_LOADED")
		frame:SetScript("OnEvent", nil)
	end
end)

for i, v in pairs({ MainMenuBarLeftEndCap, MainMenuBarRightEndCap }) do
	v:SetVertexColor(.35, .35, .35)
end

2.4. Hide the error frame (red text in top middle):
UIErrorsFrame:SetAlpha(0)

3. Unit frame scripts

3.1. Class icons instead of portraits:
hooksecurefunc("UnitFramePortrait_Update",function(self)
	if self.portrait then
		if UnitIsPlayer(self.unit) then				
			local t = CLASS_ICON_TCOORDS[select(2, UnitClass(self.unit))]
			if t then
				self.portrait:SetTexture("Interface\\TargetingFrame\\UI-Classes-Circles")
				self.portrait:SetTexCoord(unpack(t))
			end
		else
			self.portrait:SetTexCoord(0,1,0,1)
		end
	end
end)
Macros:
/run UFP="UnitFramePortrait_Update" UICC="Interface\\TargetingFrame\\UI-Classes-Circles" CIT=CLASS_ICON_TCOORDS UC=UnitClass
/run hooksecurefunc(UFP,function(self) if self.portrait then t=CIT[select(2,UC(self.unit))] if t and UnitIsPlayer(self.unit) then self.portrait:SetTexture(UICC) self.portrait:SetTexCoord(unpack(t)) else self.portrait:SetTexCoord(0,1,0,1) end end end)

3.2. Class colors in hp bars:
local function colour(statusbar, unit)
	local _, class, c
	if UnitIsPlayer(unit) and UnitIsConnected(unit) and unit == statusbar.unit and UnitClass(unit) then
		_, class = UnitClass(unit)
		c = CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS[class] or RAID_CLASS_COLORS[class]
		statusbar:SetStatusBarColor(c.r, c.g, c.b)
		PlayerFrameHealthBar:SetStatusBarColor(0,1,0)
	end
end

hooksecurefunc("UnitFrameHealthBar_Update", colour)
hooksecurefunc("HealthBar_OnValueChanged", function(self)
	colour(self, self.unit)
end)
Macros:
/run UIP=UnitIsPlayer UIC=UnitIsConnected RCC=RAID_CLASS_COLORS PFHB=PlayerFrameHealthBar UC=UnitClass
/run function colour(sb,unit) if UIP(unit) and UIC(unit) and unit==sb.unit and UC(unit) then _,cl=UC(unit) c=RAID_CLASS_COLORS[cl] sb:SetStatusBarColor(c.r,c.g,c.b) PFHB:SetStatusBarColor(0,1,0) end end
/run hooksecurefunc("UnitFrameHealthBar_Update", colour) hooksecurefunc("HealthBar_OnValueChanged", function(self) colour(self, self.unit) end)

3.3. Class colors behind names:
local frame = CreateFrame("FRAME")
frame:RegisterEvent("GROUP_ROSTER_UPDATE")
frame:RegisterEvent("PLAYER_TARGET_CHANGED")
frame:RegisterEvent("PLAYER_FOCUS_CHANGED")
frame:RegisterEvent("UNIT_FACTION")

local function eventHandler(self, event, ...)
	if UnitIsPlayer("target") then
		c = RAID_CLASS_COLORS[select(2, UnitClass("target"))]
		TargetFrameNameBackground:SetVertexColor(c.r, c.g, c.b)
	end
	if UnitIsPlayer("focus") then
		c = RAID_CLASS_COLORS[select(2, UnitClass("focus"))]
		FocusFrameNameBackground:SetVertexColor(c.r, c.g, c.b)
	end
end

frame:SetScript("OnEvent", eventHandler)

for _, BarTextures in pairs({TargetFrameNameBackground, FocusFrameNameBackground}) do
	BarTextures:SetTexture("Interface\\TargetingFrame\\UI-StatusBar")
end
Macros:
/run UIP=UnitIsPlayer RCC=RAID_CLASS_COLORS UC=UnitClass TFNB=TargetFrameNameBackground FFNB=FocusFrameNameBackground
/run f=CreateFrame("FRAME") f:RegisterEvent("PARTY_MEMBERS_CHANGED") f:RegisterEvent("PLAYER_TARGET_CHANGED") f:RegisterEvent("PLAYER_FOCUS_CHANGED") f:RegisterEvent("UNIT_FACTION")
/run function e(self,event,...) if UIP("target") then c=RCC[select(2,UC("target"))] TFNB:SetVertexColor(c.r,c.g,c.b) end if UIP("focus") then c=RCC[select(2,UC("focus"))] FFNB:SetVertexColor(c.r,c.g,c.b) end end f:SetScript("OnEvent",e)

3.4. Disable healing/damage spam over player/pet frame:
PlayerHitIndicator:SetText(nil)
PlayerHitIndicator.SetText = function() end

PetHitIndicator:SetText(nil)
PetHitIndicator.SetText = function() end

3.5. Flashy spellsteal border for non-mages and/or enrage effects:
hooksecurefunc("TargetFrame_UpdateAuras", function(s)
	for i = 1, MAX_TARGET_BUFFS do
		_, _, ic, _, dT = UnitBuff(s.unit, i)
		if(ic and (not s.maxBuffs or i<=s.maxBuffs)) then
			fS=_G[s:GetName()..'Buff'..i..'Stealable']
			if(UnitIsEnemy(PlayerFrame.unit, s.unit) and dT=='Magic') then
				fS:Show()
			else
				fS:Hide()
			end
		end
	end
end)
Macros:
/run b = 'Buff' st = 'Stealable' mM = 'Magic' mB = maxBuffs TFUA = 'TargetFrame_UpdateAuras' PFu = PlayerFrame.unit MTB = MAX_TARGET_BUFFS UB = UnitBuff UIE = UnitIsEnemy
/run hooksecurefunc(TFUA,function(s) for i=1,MTB do _,_,ic,_,dT=UB(s.unit,i) if(ic and (not s.mB or i<=s.mB)) then fS=_G[s:GetName()..b..i..st] if (UIE(PFu,s.unit) and dT==mM) then fS:Show() else fS:Hide() end end end end)
You can adapt this to enrages by changing the dT=='Magic' line to dT='' (or in the macro, mM='' instead of mM='Magic'). For an unknown reason, enrage effects return an empty string as their debuff type.

3.6. Change the format of hp/mana text to absolute values ("140k"):
hooksecurefunc("TextStatusBar_UpdateTextStringWithValues", function()
	PlayerFrameHealthBar.TextString:SetText(AbbreviateLargeNumbers(UnitHealth("player")))
	PlayerFrameManaBar.TextString:SetText(AbbreviateLargeNumbers(UnitMana("player")))

	TargetFrameHealthBar.TextString:SetText(AbbreviateLargeNumbers(UnitHealth("target")))
	TargetFrameManaBar.TextString:SetText(AbbreviateLargeNumbers(UnitMana("target")))

	FocusFrameHealthBar.TextString:SetText(AbbreviateLargeNumbers(UnitHealth("focus")))
	FocusFrameManaBar.TextString:SetText(AbbreviateLargeNumbers(UnitMana("focus")))
end)

3.7. Hide faction/PvP icon:
PlayerPVPIcon:SetAlpha(0)
TargetFrameTextureFramePVPIcon:SetAlpha(0)
FocusFrameTextureFramePVPIcon:SetAlpha(0)

3.8. Disable the group number frame:
PlayerFrameGroupIndicator.Show = function() return end

3.9. Scaling/moving frames:
framename:SetScale(1.1)
You can find the frame name by using /fstack. Value is in %, i.e. 1.1 is 110%.

Move most frames on the default UI:
/run local f=framename; f:SetMovable(true); f:EnableMouse(true); f:SetUserPlaced(true); f:SetScript("OnMouseDown", f.StartMoving); f:SetScript("OnMouseUp", f.StopMovingOrSizing);
You can find the frame name by using /fstack. Drag the frame where you want it to be, reload. (If it doesn't save, type /console synchronizeSettings 0 and try again.)

I personally recommend to move the TargetFrameToT (target of target) frame at least, because it often overlaps the last debuff. Just move it a little bit to the right. This method works for sure for the ToT frame.

If the above method doesn't work or doesn't save position for the frame you're trying to move (doesn't for pet frame, for example), paste this into your addon:
framename:ClearAllPoints()
framename:SetPoint("CENTER", x, y)
framename.SetPoint = function() end
Also, you can move the player, target and focus frames within the default UI by right clicking on it and unlocking/locking. That's much better than moving it with scripts due to some weird interactions with vehicle UI if you move those frames with scripts.

4. Arena frame scripts

4.1. Show frames outside of arena (macro):
/run LoadAddOn("Blizzard_ArenaUI") ArenaEnemyFrames:Show() ArenaEnemyFrame1:Show() ArenaEnemyFrame2:Show() ArenaEnemyFrame3:Show() ArenaEnemyFrame1CastingBar:Show() ArenaEnemyFrame2CastingBar:Show() ArenaEnemyFrame3CastingBar:Show()
This will display frames 1, 2 and 3 with the cast bars.

4.2. Scaling/moving arenaframes and castbars:
LoadAddOn("Blizzard_ArenaUI") -- You only need to run this once. You can safely delete any copies of this line.

ArenaEnemyFrame1:ClearAllPoints()
ArenaEnemyFrame2:ClearAllPoints()
ArenaEnemyFrame3:ClearAllPoints()
ArenaEnemyFrame4:ClearAllPoints()
ArenaEnemyFrame5:ClearAllPoints()

ArenaEnemyFrame1:SetPoint("CENTER",UIParent,"CENTER",350,50)
ArenaEnemyFrame2:SetPoint("CENTER",UIParent,"CENTER",350,0)
ArenaEnemyFrame3:SetPoint("CENTER",UIParent,"CENTER",350,-50)
ArenaEnemyFrame4:SetPoint("CENTER",UIParent,"CENTER",350,-100)
ArenaEnemyFrame5:SetPoint("CENTER",UIParent,"CENTER",350,-150)

ArenaEnemyFrame1.SetPoint = function() end
ArenaEnemyFrame2.SetPoint = function() end
ArenaEnemyFrame3.SetPoint = function() end
ArenaEnemyFrame4.SetPoint = function() end
ArenaEnemyFrame5.SetPoint = function() end
Frames have to be moved separately now. ClearAllPoints and blanketing the SetPoint method are both mandatory now for it to work properly. The only way to fit this in a macro is to loop it, I'll add this in later.

ArenaEnemyFrames:SetScale(1.3)
This scales up the whole thing, everything in the frames will be scaled up equally. Make sure this is after LoadAddOn("Blizzard_ArenaUI").

for i=1, 5 do
	_G["ArenaEnemyFrame"..i]:SetScale(1.3)
	_G["ArenaEnemyFrame"..i.."CastingBar"]:SetScale(1.3)
	-- _G["ArenaEnemyFrame"..i.."CastingBar"]:SetPoint("RIGHT", 95, 0)
end
This lets you scale things up separately if you want to. First line changes the scale of arena frames themselves. Second line changes the scale of the cast bar. Third line moves the cast bar to the right of the frame - its disabled here, just remove the "--" to enable it (just an example of using comments in code).

4.3. Arena trinkets tracker:

LoadAddOn("Blizzard_ArenaUI") -- You only need to run this once. You can safely delete any copies of this line.

trinkets = {}
local arenaFrame, trinket
for i = 1, 5 do
	arenaFrame = "ArenaEnemyFrame"..i
	trinket = CreateFrame("Cooldown", arenaFrame.."Trinket", ArenaEnemyFrames)
	trinket:SetPoint("TOPRIGHT", arenaFrame, 30, -6)
	trinket:SetSize(24, 24)
	trinket.icon = trinket:CreateTexture(nil, "BACKGROUND")
	trinket.icon:SetAllPoints()
	trinket.icon:SetTexture("Interface\\Icons\\inv_jewelry_trinketpvp_01")
	trinket:Hide()
	trinkets["arena"..i] = trinket
end

local events = CreateFrame("Frame")
function events:UNIT_SPELLCAST_SUCCEEDED(unitID, spell, rank, lineID, spellID)
	if not trinkets[unitID] then
		return
	end
	if spellID == 59752 or spellID == 42292 then
		CooldownFrame_SetTimer(trinkets[unitID], GetTime(), 120, 1)
		SendChatMessage("Trinket used by: "..GetUnitName(unitID, true), "PARTY")
	end
end

function events:PLAYER_ENTERING_WORLD()
	local _, instanceType = IsInInstance()
	if instanceType == "arena" then
		self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
	elseif self:IsEventRegistered("UNIT_SPELLCAST_SUCCEEDED") then
		self:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
		for _, trinket in pairs(trinkets) do
			trinket:SetCooldown(0, 0)
			trinket:Hide()
		end
	end
end
events:SetScript("OnEvent", function(self, event, ...) return self[event](self, ...) end)
events:RegisterEvent("PLAYER_ENTERING_WORLD")
This puts icons to the right of the arena frames. Does not track WotF - it now simply shares 30 seconds CD with trinkets, so it's impossible to track with just 1 icon. Only enables in arenas.

5. Action bar scripts

5.1. Hide graphics:
I will just list all the options in one block, you can choose which you want. You can enter them separately with /run if you want to see each individually.
MainMenuBarLeftEndCap:Hide()
MainMenuBarRightEndCap:Hide() -- hide the gryphons

MainMenuExpBar:Hide()
MainMenuBarMaxLevelBar:SetAlpha(0) -- hide the xp bar

MainMenuBarTexture0:Hide() -- hide all the background textures.
MainMenuBarTexture1:Hide() -- leaving them on looks better,
MainMenuBarTexture2:Hide() -- unless you are going to hide the
MainMenuBarTexture3:Hide() -- micromenu and bag buttons too.

BonusActionBarFrameTexture1:SetAlpha(0)
BonusActionBarFrameTexture2:SetAlpha(0) -- this is for druids/rogues/warriors.
BonusActionBarFrameTexture3:SetAlpha(0) -- their stances cause this to show up
BonusActionBarFrameTexture4:SetAlpha(0) -- over the normal bar.

SlidingActionBarTexture0:SetAlpha(0)
SlidingActionBarTexture1:SetAlpha(0) -- hide pet bar background

-- These hide individual elements of the menu bar. Its easy to figure out what is what.
ActionBarUpButton:Hide()
ActionBarDownButton:Hide()
MainMenuBarPageNumber:SetAlpha(0)

CharacterMicroButton:Hide()
SpellbookMicroButton:Hide()
TalentMicroButton:Hide()
AchievementMicroButton:Hide()
QuestLogMicroButton:Hide()
GuildMicroButton:Hide()
PVPMicroButton:Hide()
LFDMicroButton:Hide()
CompanionsMicroButton:Hide()
EJMicroButton:Hide()
MainMenuMicroButton:Hide()
HelpMicroButton:Hide()

CharacterBag3Slot:Hide()
CharacterBag2Slot:Hide()
CharacterBag1Slot:Hide()
CharacterBag0Slot:Hide()
MainMenuBarBackpackButton:Hide()

5.2. Hide macro labels:
for i=1, 12 do
	_G["ActionButton"..i.."Name"]:SetAlpha(0) -- main bar
	_G["MultiBarBottomRightButton"..i.."Name"]:SetAlpha(0) -- bottom right bar
	_G["MultiBarBottomLeftButton"..i.."Name"]:SetAlpha(0) -- bottom left bar
	_G["MultiBarRightButton"..i.."Name"]:SetAlpha(0) -- right bar
	_G["MultiBarLeftButton"..i.."Name"]:SetAlpha(0) -- left bar
end

5.3. Hide hotkeys:
for i=1, 12 do
	_G["ActionButton"..i.."HotKey"]:SetAlpha(0) -- main bar
	_G["MultiBarBottomRightButton"..i.."HotKey"]:SetAlpha(0) -- bottom right bar
	_G["MultiBarBottomLeftButton"..i.."HotKey"]:SetAlpha(0) -- bottom left bar
	_G["MultiBarRightButton"..i.."HotKey"]:SetAlpha(0) -- right bar
	_G["MultiBarLeftButton"..i.."HotKey"]:SetAlpha(0) -- left bar
end

6. Cast bar scripts

6.1. Text cast timer ("0.8 / 1.5"):
CastingBarFrame.timer = CastingBarFrame:CreateFontString(nil);
CastingBarFrame.timer:SetFont(STANDARD_TEXT_FONT,12,"OUTLINE");
CastingBarFrame.timer:SetPoint("TOP", CastingBarFrame, "BOTTOM", 0, 0);
CastingBarFrame.update = .1;

hooksecurefunc("CastingBarFrame_OnUpdate", function(self, elapsed)
	if not self.timer then return end
	if self.update and self.update < elapsed then
		if self.casting then
			self.timer:SetText(format("%2.1f/%1.1f", max(self.maxValue - self.value, 0), self.maxValue))
		elseif self.channeling then
			self.timer:SetText(format("%.1f", max(self.value, 0)))
		else
			self.timer:SetText("")
		end
		self.update = .1
	else
		self.update = self.update - elapsed
	end
end)

6.2. Scaling/moving castbars
Player cast bar:
CastingBarFrame:ClearAllPoints()
CastingBarFrame:SetPoint("CENTER",UIParent,"CENTER", 0, -235)
CastingBarFrame.SetPoint = function() end
CastingBarFrame:SetScale(1.0)

Target cast bar. This one is attached to the target unit frame by default, this script will unattach it and place it in the center:
TargetFrameSpellBar:ClearAllPoints()
TargetFrameSpellBar:SetPoint("CENTER", UIParent, "CENTER", 0, -140)
TargetFrameSpellBar.SetPoint = function() end
TargetFrameSpellBar:SetScale(1.0)
Focus cast bar functions the exact same way as the target cast bar, just that the frame is called FocusFrameSpellBar.

Set the cast bar above the frame instead of under the auras:
TargetFrameSpellBar:ClearAllPoints()
TargetFrameSpellBar:SetPoint("BOTTOM", TargetFrame, "TOP", -15, 0)
TargetFrameSpellBar.SetPoint = function() end
It will still remain attached to the target frame if you decide to move the target frame. Change "Target" to "Focus" everywhere and you'll get the same script for focus frame.

Spoiler

7. Quality of life scripts

7.1. Autosell grey trash and repair:
local g = CreateFrame("Frame")
g:RegisterEvent("MERCHANT_SHOW")

g:SetScript("OnEvent", function()  
	local bag, slot
	for bag = 0, 4 do
		for slot = 0, GetContainerNumSlots(bag) do
			local link = GetContainerItemLink(bag, slot)
			if link and (select(3, GetItemInfo(link)) == 0) then
				UseContainerItem(bag, slot)
			end
		end
	end

	if(CanMerchantRepair()) then
		local cost = GetRepairAllCost()
		if cost > 0 then
			local money = GetMoney()
			if IsInGuild() then
				local guildMoney = GetGuildBankWithdrawMoney()
				if guildMoney > GetGuildBankMoney() then
					guildMoney = GetGuildBankMoney()
				end
				if guildMoney > cost and CanGuildBankRepair() then
					RepairAllItems(1)
					print(format("|cfff07100Repair cost covered by G-Bank: %.1fg|r", cost * 0.0001))
					return
				end
			end
			if money > cost then
				RepairAllItems()
				print(format("|cffead000Repair cost: %.1fg|r", cost * 0.0001))
			else
				print("Not enough gold to cover the repair cost.")
			end
		end
	end
end)
Will use guild bank if available.

7.1. Minimap tweaks:
MinimapZoomIn:Hide()
MinimapZoomOut:Hide()
Minimap:EnableMouseWheel(true)
Minimap:SetScript('OnMouseWheel', function(self, delta)
	if delta > 0 then
		Minimap_ZoomIn()
	else
		Minimap_ZoomOut()
	end
end)
MiniMapTracking:ClearAllPoints()
MiniMapTracking:SetPoint("TOPRIGHT", -26, 7)
Hides zoom in/out buttons, enables mousewheel zoom, and moves the tracking button to top right near the calendar button.

7.3. Extra slash commands:
SlashCmdList["CLCE"] = function() CombatLogClearEntries() end
SLASH_CLCE1 = "/clc"

SlashCmdList["TICKET"] = function() ToggleHelpFrame() end
SLASH_TICKET1 = "/gm"

SlashCmdList["READYCHECK"] = function() DoReadyCheck() end
SLASH_READYCHECK1 = '/rc'

SlashCmdList["CHECKROLE"] = function() InitiateRolePoll() end
SLASH_CHECKROLE1 = '/cr'
- /clc to clear combat log
- /gm to open a GM ticket
- /rc for readycheck
- /cr for check role


<