Here's my frost mage profile. Thoroughly tested, but input is welcome.
Features:
De-curse
Ice Block
Brain Freeze and Fingers of Frost procs
Frostbolt unless interrupted, then Frostfire Bolt
Frost Nova and Cone of Cold if target is in range
Mirror Image and Icy Veins if target has 3x Player's HP or if target is a Hostile Player
If Counterspell is on CD, use Mage Ward
Ice Lance if moving
Ice Armor, Arcane Brilliance if not on Player.
Mana Shield and Ice Barrier if not resting.
Summon Elemental if no pet.
Abilities:
Code:
<?xml version="1.0" encoding="utf-8" ?><MAGE><Ability><Name>All: Mana Gem</Name><Default>false</Default><SpellID>0</SpellID><Actions>/use Mana Gem</Actions><Lua>local manapercent = 100 * UnitPower("player") / UnitPowerMax("player")
local ManaGemStart, ManaGemDuration = GetItemCooldown(36799)
local ManaGemCooldown = (ManaGemStart + ManaGemDuration - GetTime())
local gemcount = GetItemCount("Mana Gem")
if gemcount > 0 then
if ManaGemCooldown < 3 then
if manapercent < 90 then
return true
end
end
end</Lua><RecastDelay>0</RecastDelay><Target>Player</Target></Ability><Ability><Name>All: Mirror Image</Name><Default>false</Default><SpellID>55342</SpellID><Actions></Actions><Lua>local PH = UnitHealthMax("player")
local EH = UnitHealthMax("target")
local EP = UnitIsPlayer("target")
local EF = UnitIsEnemy("player","target")
local PC = UnitAffectingCombat("player")
local EC = UnitAffectingCombat("target")
if ((PH*3) <= EH or (EP and EF)) and (PC and EC) then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target></Ability><Ability><Name>Fr: Brain Freeze</Name><Default>false</Default><SpellID>44614</SpellID><Actions></Actions><Lua>local BF = UnitAura("player", "Brain Freeze")
if BF then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Target</Target></Ability><Ability><Name>Fr: Fingers of Frost</Name><Default>false</Default><SpellID>30455</SpellID><Actions></Actions><Lua>local FF = UnitAura("player", "Fingers of Frost")
if FF then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Target</Target></Ability><Ability><Name>Fr: Frostbolt</Name><Default>false</Default><SpellID>116</SpellID><Actions></Actions><Lua>return true</Lua><RecastDelay>100</RecastDelay><Target>Target</Target></Ability><Ability><Name>Fr: Ice Barrier</Name><Default>false</Default><SpellID>11426</SpellID><Actions></Actions><Lua>local IB = UnitAura("player", "Ice Barrier")
local IR = IsResting()
if not(IB) and not(IR) then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Target</Target></Ability><Ability><Name>All: Mana Shield</Name><Default>false</Default><SpellID>1463</SpellID><Actions></Actions><Lua>local MS = UnitAura("player", "Mana Shield")
local IR = IsResting()
if not(MS) and not(IR) then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Target</Target></Ability><Ability><Name>Fr: Ice Lance</Name><Default>false</Default><SpellID>30455</SpellID><Actions></Actions><Lua>local IC = UnitAffectingCombat("player")
if PQR_IsMoving(1) and IC then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Target</Target></Ability><Ability><Name>All: Mage Ward</Name><Default>false</Default><SpellID>543</SpellID><Actions></Actions><Lua>local CS, _, _ = GetSpellCooldown(2139)
local CG = UnitCastingInfo("target")
if CG and CS then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Target</Target></Ability><Ability><Name>All: Counterspell</Name><Default>false</Default><SpellID>2139</SpellID><Actions></Actions><Lua>local CG = UnitCastingInfo("target")
if CG then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target></Ability><Ability><Name>Fr: Icy Veins</Name><Default>false</Default><SpellID>12472</SpellID><Actions></Actions><Lua>local PH = UnitHealthMax("player")
local EH = UnitHealthMax("target")
local EP = UnitIsPlayer("target")
local EF = UnitIsEnemy("player","target")
local PC = UnitAffectingCombat("player")
local EC = UnitAffectingCombat("target")
if ((PH*3) <= EH or (EP and EF)) and (PC and EC) then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target></Ability><Ability><Name>All: Cone of Cold</Name><Default>false</Default><SpellID>120</SpellID><Actions></Actions><Lua>local SC = CheckInteractDistance("target", 3)
local EF = UnitIsEnemy("player","target")
local EH = UnitHealth("target")
if SC and EF and EH > 0 then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target></Ability><Ability><Name>All: Frost Nova</Name><Default>false</Default><SpellID>122</SpellID><Actions></Actions><Lua>local SC = CheckInteractDistance("target", 3)
local EF = UnitIsEnemy("player","target")
local EH = UnitHealth("target")
if SC and EF and EH > 0 then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target></Ability><Ability><Name>All: Frost Armor</Name><Default>false</Default><SpellID>7302</SpellID><Actions></Actions><Lua>local FA = UnitAura("player", "Frost Armor")
if not(FA) then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Player</Target></Ability><Ability><Name>All: Arcane Brilliance</Name><Default>false</Default><SpellID>1459</SpellID><Actions></Actions><Lua>local AB = UnitAura("player", "Arcane Brilliance")
if not(AB) then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Player</Target></Ability><Ability><Name>Fr: Elemental</Name><Default>false</Default><SpellID>31687</SpellID><Actions></Actions><Lua>local HP = UnitExists("pet")
if not(HP) then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target></Ability><Ability><Name>Pause</Name><Default>false</Default><SpellID>0</SpellID><Actions></Actions><Lua>if IsShiftKeyDown() then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target></Ability><Ability><Name>Fr: Frostfire Bolt</Name><Default>false</Default><SpellID>44614</SpellID><Actions></Actions><Lua>local _, CD, _ = GetSpellCooldown("Frostbolt")
if CD > 1.5 then
return true
end</Lua><RecastDelay>100</RecastDelay><Target>Target</Target></Ability><Ability><Name>All: Ice Block</Name><Default>false</Default><SpellID>45438</SpellID><Actions></Actions><Lua>local PH = UnitHealth("player")
local PM = UnitHealthMax("player")
if (PH * 100 / PM) <15 then
return true
end</Lua><RecastDelay>0</RecastDelay><Target>Target</Target></Ability><Ability><Name>All: Remove Curse</Name><Default>false</Default><SpellID>475</SpellID><Actions></Actions><Lua>for i=1,40 do
local _, _, _, _, DB= UnitDebuff("player",i)
if DB=="Curse" then
return true
end
end</Lua><RecastDelay>500</RecastDelay><Target>Player</Target></Ability></MAGE>
Rotations:
Code:
<?xml version="1.0" encoding="utf-8" ?><MAGE><Rotation><RotationName>Frost</RotationName><RotationDefault>false</RotationDefault><RotationList>Pause|All: Ice Block|All: Counterspell|Fr: Ice Barrier|All: Mana Shield|All: Mage Ward|All: Arcane Brilliance|All: Frost Armor|Fr: Elemental|All: Remove Curse|Fr: Icy Veins|All: Mirror Image|All: Mana Gem|Fr: Brain Freeze|Fr: Fingers of Frost|All: Decurse|All: Frost Nova|All: Cone of Cold|Fr: Ice Lance|Fr: Frostbolt|Fr: Frostfire Bolt</RotationList></Rotation></MAGE>
Will add Deep Freeze and other abilities as I get them. =)