Quantcast

- added 4.0.1 support

Sidoine De Wispelaere [10-09-10 - 10:25]
- added 4.0.1 support
- added "equal" keyword in all comparison functions
- added generic buff and debuff keywords (strengthagility, stamina, lowerarmor, magicaldamagetaken, lowerphysicaldamage, meleeslow, bleed)
- added Eclipse and HolyPower functions
- added TargetLifeMissing function
- bug fix for TimeInCombat
- added mastery keyword for AddIcon, AddCheckBox, and  AddListItem

git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@262 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Filename
Condition.lua
Ovale.lua
Ovale.toc
OvaleCompile.lua
defaut/Chaman.lua
defaut/Chasseur.lua
defaut/Chevalier.lua
defaut/Demoniste.lua
defaut/Druide.lua
defaut/Guerrier.lua
defaut/Mage.lua
defaut/Paladin.lua
defaut/Pretre.lua
diff --git a/Condition.lua b/Condition.lua
index 7c8cba1..28832e0 100644
--- a/Condition.lua
+++ b/Condition.lua
@@ -55,6 +55,59 @@ local rootSpellIdList =
 }
 local rootSpellList = nil

+local buffSpellList =
+{
+	strengthagility=
+	{
+		6673, -- Battle Shout
+		8076, -- Strength of Earth
+		79891 -- Horn of Winter
+	},
+	stamina =
+	{
+		21562, -- Fortitude TODO: vérifier
+		469, -- Commanding Shout
+		6307 -- Blood Pact
+	},
+	lowerarmor=
+	{
+		7386, -- Sunder Armor (x3)
+		8647, -- Expose Armor
+		770 -- Faerie Fire (x3)
+	},
+	magicaldamagetaken=
+	{
+		65142, -- Ebon Plague
+		60433, -- Earth and Moon
+		58410, -- Master Poisoner TODO: vérifier
+		1490 -- Curse of the Elements
+	},
+	-- physicaldamagetaken
+	lowerphysicaldamage=
+	{
+		99, -- Demoralizing Roar
+		702, -- Curse of Weakness
+		1160, -- Demoralizing Shout
+		67, -- Vindication
+		81130, -- Scarlet Fever
+	},
+	meleeslow=
+	{
+		45477, --Icy Touch
+		58179, --Infected Wounds
+		68055, --Judgments of the just
+		6343, --Thunderclap
+		8042 --Earth Shock
+	},
+	bleed=
+	{
+		33876, --Mangle cat
+		33878, --Mangle bear
+		46857, -- Trauma
+		16511 --Hemorrhage
+	}
+}
+
 local function buildRootSpellList()
 	if (rootSpellList) then
 		return
@@ -132,6 +185,12 @@ local function compare(a, comparison, b)
 		else
 			return nil
 		end
+	elseif comparison == "equal" then
+		if b == a then
+			return 0
+		else
+			return nil
+		end
 	else
 		if (not a or (b~=nil and a<b)) then
 			return 0
@@ -238,11 +297,25 @@ local function GetTargetAura(condition, filter, target)
 		stacks = 1
 	end
 	local spellId = condition[1]
-	local aura = Ovale:GetAura(target, filter, spellId)
+	local aura
+	if type(spellId) == "number" then
+		aura = Ovale:GetAura(target, filter, spellId)
+	elseif buffSpellList[spellId] then
+		for k,v in pairs(buffSpellList[spellId]) do
+			local newAura = Ovale:GetAura(target, filter, v)
+			if not aura or newAura.stacks>aura.stacks then
+				aura = newAura
+			end
+		end
+	else
+		Ovale:Print("unknown buff "..spellId)
+		Ovale.bug = true
+	end
+
 	if Ovale.trace then
 		Ovale:Print("GetTargetAura = start = ".. nilstring(aura.start) .. " end = "..nilstring(aura.ending).." stacks = " ..nilstring(aura.stacks).."/"..stacks)
 	end
-
+
 	if (not condition.mine or aura.mine) and aura.stacks>=stacks then
 		local ending
 		if condition.forceduration then
@@ -463,6 +536,10 @@ Ovale.conditions=
 		local timeBefore = avecHate(condition[2], condition.haste)
 		return start, addTime(ending, -timeBefore)
 	end,
+	--Compare to eclipse power. <0 lunar, >0 solar
+	Eclipse = function(condition)
+		return compare(Ovale.state.eclipse, condition[1], condition[2])
+	end,
 	EffectiveMana = function(condition)
 		local limit = GetManaTime(condition[2], true)
 		if condition[1]=="more" then
@@ -503,6 +580,9 @@ Ovale.conditions=
 		local _,_,_,_,_,_,_,_,itemLoc = GetItemInfo(id)
 		return testbool(itemLoc=="INVTYPE_SHIELD", condition[1])
 	end,
+	HolyPower = function(condition)
+		return compare(Ovale.state.holy, condition[1], condition[2])
+	end,
 	InCombat = function(condition)
 		return testbool(Ovale.enCombat, condition[1])
 	end,
@@ -761,6 +841,10 @@ Ovale.conditions=
 		local target = getTarget(condition.target)
 		return compare(UnitHealth(target), condition[1], condition[2])
 	end,
+	TargetLifeMissing = function(condition)
+		local target = getTarget(condition.target)
+		return compare(UnitHealthMax(target)-UnitHealth(target), condition[1], condition[2])
+	end,
 	-- Test if the target life is bellow/above a given value in percent
 	-- 1 : "less" or "more"
 	-- 2 : the limit, in percents
@@ -795,7 +879,9 @@ Ovale.conditions=
 		return compare(threatpct, condition[1], condition[2])
 	end,
 	TimeInCombat = function(condition)
-		if condition[1] == "more" then
+		if not Ovale.combatStartTime then
+			return nil
+		elseif condition[1] == "more" then
 			return Ovale.combatStartTime + condition[2]
 		else
 			return 0, Ovale.combatStartTime + condition[2]
diff --git a/Ovale.lua b/Ovale.lua
index 14dc36f..5ebfd87 100644
--- a/Ovale.lua
+++ b/Ovale.lua
@@ -306,6 +306,15 @@ local options =
 					name = "Code",
 					type = "execute",
 					func = function() Ovale:AfficherCode() end
+				},
+				debug =
+				{
+					name = "Debug",
+					type = "execute",
+					func = function()
+						--for i=1,10 do Ovale:Print(i.."="..UnitPower("player", i)) end
+						Ovale:Print(Ovale.state.eclipse)
+					end
 				}
 			}
 		}
@@ -629,6 +638,7 @@ function Ovale:OnEnable()
 		self:FirstInit()
 	end
 	self:UNIT_AURA("","player")
+
 	self:UpdateVisibility()
 end

@@ -866,8 +876,10 @@ function Ovale:RemplirActionIndex(i)
 		local type, id = GetActionInfo(i);
 		if (type=="spell") then
 			if (id~=0) then
-				local spellName, spellRank = GetSpellName(id, BOOKTYPE_SPELL);
-				self.actionSort[spellName] = i
+				local spellName, spellRank = GetSpellInfo(id) -- GetSpellBookItemName(id, BOOKTYPE_SPELL);
+				if spellName then --TODO: bug avec le mécanisme solaire/lunaire du druide
+					self.actionSort[spellName] = i
+				end
 			end
 		elseif (type =="item") then
 			self.actionObjet[id] = i
@@ -1043,7 +1055,7 @@ function Ovale:AddSpellToStack(spellName, startCast, endCast, nextCast, nocd)
 	end

 	--Coût du sort (uniquement si dans le futur, dans le passé l'énergie est déjà dépensée)
-	if startCast >= self.maintenant then
+	if endCast >= self.maintenant then
 		--Mana
 		local _, _, _, cost = GetSpellInfo(spellName)
 		if cost then
@@ -1071,6 +1083,22 @@ function Ovale:AddSpellToStack(spellName, startCast, endCast, nextCast, nocd)
 			if newSpellInfo.unholy then
 				self:AddRune(startCast, 2, newSpellInfo.unholy)
 			end
+			if newSpellInfo.eclipse then
+				self.state.eclipse = self.state.eclipse + newSpellInfo.eclipse
+				if self.state.eclipse < -100 then
+					self.state.eclipse = -100
+				elseif self.state.eclipse > 100 then
+					self.state.eclipse = 100
+				end
+			end
+			if newSpellInfo.holy then
+				self.state.holy = self.state.holy + newSpellInfo.holy
+				if self.state.holy < 0 then
+					self.state.holy = 0
+				elseif self.state.holy > 3 then
+					self.state.holy = 3
+				end
+			end
 		end
 	end

@@ -1168,6 +1196,8 @@ function Ovale:InitCalculerMeilleureAction()
 	self.spellStack.length = 0
 	self.state.combo = GetComboPoints("player")
 	self.state.mana = UnitPower("player")
+	self.state.eclipse = UnitPower("player", 8)
+	self.state.holy = UnitPower("player", 9)
 	if self.className == "DEATHKNIGHT" then
 		for i=1,6 do
 			self.state.rune[i].type = GetRuneType(i)
diff --git a/Ovale.toc b/Ovale.toc
index 20749ef..19b317d 100644
--- a/Ovale.toc
+++ b/Ovale.toc
@@ -1,9 +1,9 @@
-## Interface: 30300
+## Interface: 40000
 ## Title: Ovale Spell Priority
 ## Notes: Show the icon of the next spell to cast
 ## Notes-frFR: Affiche l'icône du prochain sort à lancer
 ## Author: Sidoine
-## Version: 3.3.36
+## Version: 4.0.1
 ## OptionalDeps: Ace3, ButtonFacade, Recount, LibBabble-CreatureType-3.0
 ## SavedVariables: OvaleDB
 ## SavedVariablesPerCharacter: OvaleDBPC
diff --git a/OvaleCompile.lua b/OvaleCompile.lua
index 514f787..d5a92da 100644
--- a/OvaleCompile.lua
+++ b/OvaleCompile.lua
@@ -25,7 +25,7 @@ local function ParseParameters(params)
 	end
 	params = string.gsub(params,"%w+=%w+","")
 	local n=0
-	for w in string.gmatch(params, "[%w_\\%.]+") do
+	for w in string.gmatch(params, "[-%w_\\%.]+") do
 		if (string.match(w,"^%-?%d+%.?%d*$")) then
 			w = tonumber(w)
 		end
@@ -208,6 +208,9 @@ local function ParseAddListItem(list,item,text, default)
 		(paramList.glyph and not HasGlyph(paramList.glyph)) then
 		return ""
 	end
+	if paramList.mastery and paramList.mastery~=GetPrimaryTalentTree(GetActiveTalentGroup(false, false)) then
+		return ""
+	end
 	if (not Ovale.listes[list]) then
 		Ovale.listes[list] = {items={},default=nil}
 	end
@@ -224,6 +227,9 @@ local function ParseAddCheckBox(item, text, params)
 		(paramList.glyph and not HasGlyph(paramList.glyph)) then
 		return ""
 	end
+	if paramList.mastery and paramList.mastery~=GetPrimaryTalentTree(GetActiveTalentGroup(false, false)) then
+		return ""
+	end
 	Ovale.casesACocher[item] = {text = text}
 	if  paramList[1] and paramList[1]=="checked" then
 		Ovale.casesACocher[item].checked = true
@@ -291,6 +297,9 @@ local function ParseAddIcon(params, text)
 	if masterNode.params.talent and not HasTalent(masterNode.params.talent) then
 		return nil
 	end
+	if masterNode.params.mastery and masterNode.params.mastery~=GetPrimaryTalentTree() then
+		return nil
+	end
 	return masterNode
 end

diff --git a/defaut/Chaman.lua b/defaut/Chaman.lua
index 05ec5f9..683bd97 100644
--- a/defaut/Chaman.lua
+++ b/defaut/Chaman.lua
@@ -1,122 +1,121 @@
 Ovale.defaut["SHAMAN"] =
 [[
+Define(BLOODLUST 2825)
 Define(CHAINLIGHTNING 421)
-Define(LIGHTNINGBOLT 548)
-Define(LAVABURST 51505)
-Define(WATERSHIELD 52127)
-Define(FLAMESHOCK 8050)
-Define(FLAMETHONG 8024)
-Define(WINDFURYWEAPON 8232)
+	SpellInfo(CHAINLIGHTNING cd=6)
+	SpellAddBuff(CHAINLIGHTNING MAELSTROMWEAPON=0)
+Define(EARTHQUAKE 61882)
 Define(EARTHSHOCK 8042)
-Define(STORMSTRIKE 17364)
+	SpellInfo(EARTHSHOCK cd=6 sharedcd=shock)
+Define(ELEMENTALMASTERY 16166)
+Define(FERALSPIRIT 51533)
+Define(FIRENOVA 1535)
+	SpellInfo(FIRENOVA cd=10)
+Define(FLAMESHOCK 8050)
+	SpellInfo(FLAMESHOCK cd=6 sharedcd=shock)
+	SpellAddTargetDebuff(FLAMESHOCK FLAMESHOCK=18)
+Define(FLAMETHONGWEAPON 8024)
+Define(FROSTSHOCK 8056)
+Define(FROSTBANDWEAPON 8033)
+Define(HEROISM 32182)
+Define(LAVABURST 51505)
+	SpellInfo(LAVABURST cd=8)
 Define(LAVALASH 60103)
+	SpellInfo(LAVALASH cd=6)
+Define(LIGHTNINGBOLT 403)
+	SpellAddBuff(LIGHTNINGBOLT MAELSTROMWEAPON=0)
 Define(LIGHTNINGSHIELD 324)
-Define(MAELSTROMWEAPON 53817)
-Define(ELEMENTALMASTERY 16166)
+	SpellAddBuff(LIGHTNINGSHIELD LIGHTNINGSHIELD=600)
+Define(PRIMALSTRIKE 73899)
+Define(ROCKBITERWEAPON 8017)
 Define(SHAMANISTICRAGE 30823)
+Define(SPIRITWALKERSGRACE 79206)
+Define(STORMSTRIKE 17364)
+	SpellInfo(STORMSTRIKE cd=8)
 Define(THUNDERSTORM 51490)
-Define(FERALSPIRIT 51533)
-Define(HEROISM 32182)
-Define(BLOODLUST 2825)
-Define(TALENTFLURRY 602)
-Define(TALENTCALLOFTHUNDER 562)
-Define(FIRENOVA 1535)
+Define(UNLEASHELEMENTS 73680)
+Define(WATERSHIELD 52127)
+	SpellAddBuff(WATERSHIELD WATERSHIELD=600)
+Define(WINDSHEAR 57994)
+Define(WINDFURYWEAPON 8232)
+
+#Buff
+Define(MAELSTROMWEAPON 53817)

 #Fire
-Define(TOTEMOFWRATH 30706)
 Define(FIREELEMENTALTOTEM 2894)
-Define(FLAMETONGTOTEM 8227)
-Define(FROSTRESISTANCETOTEM 8181)
 Define(MAGMATOTEM 8190)
+	SpellInfo(MAGMATOTEM cd=20)
 Define(SEARINGTOTEM 3599)
+Define(FLAMETHONGTOTEM 8227)
+
+Define(TOTEMOFWRATH 30706)
 #Water
-Define(CLEANSINGTOTEM 8170)
-Define(FIRERESISTANCETOTEM 8184)
 Define(HEALINGSTREAMTOTEM 5394)
 Define(MANASPRINGTOTEM 5675)
+Define(TOTEMOFTRANQUILMIND 87718)
 #Air
 Define(GROUNDINGTOTEM 8177)
-Define(NATURERESISTANCETOTEM 10595)
 Define(WINDFURYTOTEM 8512)
 Define(WRATHOFAIRTOTEM 3738)
 #Earth
+Define(STONECLAWTOTEM 5730)
 Define(STONESKINTOTEM 8071)
 Define(STRENGTHOFEARTHTOTEM 8075)
 Define(TREMORTOTEM 8143)

 AddCheckBox(aoe L(AOE))
-AddCheckBox(chain SpellName(CHAINLIGHTNING) default talent=TALENTCALLOFTHUNDER)
-AddCheckBox(firenova SpellName(MAGMATOTEM))
-
-SpellInfo(LAVABURST cd=8)
-SpellInfo(CHAINLIGHTNING cd=6)
-SpellAddBuff(LIGHTNINGBOLT MAELSTROMWEAPON=0)
-SpellAddBuff(CHAINLIGHTNING MAELSTROMWEAPON=0)
-SpellAddTargetDebuff(FLAMESHOCK FLAMESHOCK=18)
-ScoreSpells(WATERSHIELD FLAMESHOCK LAVABURST CHAINLIGHTNING LIGHTNINGBOLT LAVALASH EARTHSHOCK LIGHTNINGSHIELD
-	STORMSTRIKE)
-SpellInfo(EARTHSHOCK cd=6 sharedcd=shock)
-SpellInfo(FLAMESHOCK cd=6 sharedcd=shock)
-SpellAddBuff(LIGHTNINGSHIELD LIGHTNINGSHIELD=600)
-SpellAddBuff(WATERSHIELD WATERSHIELD=600)
-SpellInfo(LAVALASH cd=6)
-SpellInfo(STORMSTRIKE cd=8)
-SpellInfo(FIRENOVA cd=10)
-SpellInfo(MAGMATOTEM cd=20)
+AddCheckBox(chain SpellName(CHAINLIGHTNING) default mastery=1)

-AddIcon help=main
+AddIcon help=main mastery=1
 {
-	unless TalentPoints(TALENTFLURRY more 0)
+	unless InCombat()
 	{
-		unless InCombat()
-		{
-			if WeaponEnchantExpires(mainhand 400) Spell(FLAMETHONG)
-		}
-		if BuffExpires(WATERSHIELD 2) Spell(WATERSHIELD)
-		if CheckBoxOn(firenova)
-		{
-			if TotemExpires(fire) Spell(MAGMATOTEM)
-			unless TotemExpires(fire) Spell(FIRENOVA)
-			if ManaPercent(less 90) Spell(THUNDERSTORM)
-		}
-		if CheckBoxOn(aoe) Spell(CHAINLIGHTNING)
-		if TargetDebuffExpires(FLAMESHOCK 0 mine=1) Spell(FLAMESHOCK)
-		unless TargetDebuffExpires(FLAMESHOCK 1.6 haste=spell mine=1) Spell(LAVABURST)
-
-		if CheckBoxOn(chain) and CastTime(LIGHTNINGBOLT more 1.5) and at least 0s from Spell(LAVABURST) until EndCastTime(CHAINLIGHTNING)
-				Spell(CHAINLIGHTNING)
-		Spell(LIGHTNINGBOLT)
+		if WeaponEnchantExpires(mainhand 400) Spell(FLAMETHONG)
 	}
-	if TalentPoints(TALENTFLURRY more 0)
+	if BuffExpires(LIGHTNINGSHIELD 2) Spell(LIGHTNINGSHIELD)
+	if CheckBoxOn(aoe)
 	{
-		#Changes by rsriv
-		unless InCombat()
-		{
-			if WeaponEnchantExpires(mainhand 400) Spell(WINDFURYWEAPON)
-			if WeaponEnchantExpires(offhand 400) Spell(FLAMETONGUE)
-		}
+		if TotemExpires(fire) Spell(MAGMATOTEM)
+		unless TotemExpires(fire) Spell(FIRENOVA)
+		if ManaPercent(less 90) Spell(THUNDERSTORM)
+	}
+	if CheckBoxOn(aoe) Spell(CHAINLIGHTNING)
+	if TargetDebuffExpires(FLAMESHOCK 0 mine=1) Spell(FLAMESHOCK)
+	unless TargetDebuffExpires(FLAMESHOCK 1.6 haste=spell mine=1) Spell(LAVABURST)
+
+	if BuffPresent(LIGHTNINGSHIELD stacks=9) Spell(EARTHSHOCK)
+	if CheckBoxOn(chain) and CastTime(LIGHTNINGBOLT more 1.5) and at least 0s from Spell(LAVABURST) until EndCastTime(CHAINLIGHTNING)
+			Spell(CHAINLIGHTNING)

-		if CheckBoxOn(aoe)
-		{
-			if TotemExpires(fire) Spell(MAGMATOTEM)
-			unless TotemExpires(fire) Spell(FIRENOVA)
-			if BuffPresent(MAELSTROMWEAPON stacks=5) Spell(CHAINLIGHTNING)
-		}
+	Spell(LIGHTNINGBOLT)
+}
+
+AddIcon help=main mastery=2
+{
+	unless InCombat()
+	{
+		if WeaponEnchantExpires(mainhand 400) Spell(WINDFURYWEAPON)
+		if WeaponEnchantExpires(offhand 400) Spell(FLAMETHONGWEAPON)
+	}

-		if BuffPresent(MAELSTROMWEAPON stacks=5) Spell(LIGHTNINGBOLT)
-		if TargetDebuffExpires(FLAMESHOCK 2 haste=spell mine=1) Spell(FLAMESHOCK)
-		if TargetDebuffExpires(STORMSTRIKE) Spell(STORMSTRIKE)
-		if BuffExpires(LIGHTNINGSHIELD) Spell(LIGHTNINGSHIELD)
+	if CheckBoxOn(aoe)
+	{
 		if TotemExpires(fire) Spell(MAGMATOTEM)
-		Spell(FERALSPIRIT)
-		Spell(SHAMANISTICRAGE)
-		Spell(EARTHSHOCK)
-		Spell(STORMSTRIKE)
-		Spell(LAVALASH)
-		Spell(FIRENOVA)
-		Spell(MAGMATOTEM priority=2)
-		Spell(LIGHTNINGSHIELD priority=2)
+		unless TotemExpires(fire) Spell(FIRENOVA)
+		if BuffPresent(MAELSTROMWEAPON stacks=5) Spell(CHAINLIGHTNING)
 	}
+
+	if BuffPresent(MAELSTROMWEAPON stacks=5) Spell(LIGHTNINGBOLT)
+	if TargetDebuffExpires(FLAMESHOCK 2 haste=spell mine=1) Spell(FLAMESHOCK)
+	if TargetDebuffExpires(STORMSTRIKE) Spell(STORMSTRIKE)
+	if BuffExpires(LIGHTNINGSHIELD) Spell(LIGHTNINGSHIELD)
+	if TotemExpires(fire) Spell(SEARINGTOTEM)
+	Spell(FERALSPIRIT)
+	Spell(SHAMANISTICRAGE)
+	Spell(EARTHSHOCK)
+	Spell(STORMSTRIKE)
+	Spell(LAVALASH)
 }

 AddIcon help=cd
diff --git a/defaut/Chasseur.lua b/defaut/Chasseur.lua
index 92d94d4..8f433f5 100644
--- a/defaut/Chasseur.lua
+++ b/defaut/Chasseur.lua
@@ -1,28 +1,58 @@
 Ovale.defaut["HUNTER"] =
 [[
-Define(SERPENTSTING 1978)
-Define(ARCANESHOT 3044)
+#Spells
 Define(AIMEDSHOT 19434)
-Define(MULTISHOT 2643)
-Define(STEADYSHOT 56641)
-Define(EXPLOSIVESHOT 53301)
-Define(KILLSHOT 53351)
-Define(RAPIDFIRE 3045)
-Define(KILLCOMMAND 34026)
+	SpellInfo(AIMEDSHOT cd=10 resetcounter=ss)
+Define(ARCANESHOT 3044)
+	SpellInfo(ARCANESHOT cd=6 resetcounter=ss)
+Define(ASPECTOFTHEFOX 82661)
+Define(ASPECTOFTHEHAWK 13165)
 Define(BESTIALWRATH 19574)
-Define(HUNTERSMARK 53338)
+	SpellInfo(BESTIALWRATH cd=120)
 Define(BLACKARROW 3674)
-Define(LOCKANDLOAD 56453)
-Define(TALENTCHIMSHOT 2135)
-Define(TALENTEXPLOSHOT 2145)
+	SpellInfo(BLACKARROW cd=26)
+	SpellAddTargetDebuff(BLACKARROW BLACKARROW=15)
 Define(CALLOFTHEWILD 53434)
 Define(CHIMERASHOT 53209)
+	SpellInfo(CHIMERASHOT cd=10 resetcounter=ss)
+Define(COBRASHOT 77767)
+Define(EXPLOSIVESHOT 53301)
+	SpellInfo(EXPLOSIVESHOT cd=6 buffnocd=LOCKANDLOAD)
+	SpellAddTargetDebuff(EXPLOSIVESHOT EXPLOSIVESHOT=2)
+	SpellAddBuff(EXPLOSIVESHOT LOCKANDLOAD=-1)
+Define(FERVOR 82726)
+Define(FOCUSFIRE 82692)
+Define(KILLCOMMAND 34026)
+	SpellInfo(KILLCOMMAND cd=60 resetcounter=ss)
+Define(KILLSHOT 53351)
+	SpellInfo(KILLSHOT cd=15 resetcounter=ss)
+Define(HUNTERSMARK 1130)
+	SpellAddTargetDebuff(HUNTERSMARK HUNTERSMARK=300)
+Define(MULTISHOT 2643)
+Define(RAPIDFIRE 3045)
+	SpellAddBuff(RAPIDFIRE RAPIDFIRE=10)
+	SpellInfo(RAPIDFIRE cd=300 resetcounter=ss)
 Define(READINESS 23989)
+Define(SERPENTSTING 1978)
+	SpellInfo(SERPENTSTING resetcounter=ss)
+	SpellAddTargetDebuff(SERPENTSTING SERPENTSTING=15)
+Define(STEADYSHOT 56641)
+	SpellInfo(STEADYSHOT inccounter=ss)
 Define(SILENCINGSHOT 34490)
-Define(ASPECTOFTHEVIPER 34074)
-Define(ASPECTOFTHEDRAGONHAWK 61846)
+	SpellInfo(SILENCINGSHOT resetcounter=ss)
+
+#Buffs
+Define(LOCKANDLOAD 56453)
+Define(FRENZYEFFECT 19615)
+Define(IMPROVEDSTEADYSHOT 53224)
+Define(MARKEDFORDEATH 53243)

+#Talents
+Define(TALENTCHIMSHOT 2135)
+Define(TALENTEXPLOSHOT 2145)
 Define(TALENTTRACKING 1623)
+
+#Trackings
 Define(TRACKBEASTS 1494)
 Define(TRACKDEMONS 19878)
 Define(TRACKDRAGONKIN 19879)
@@ -31,50 +61,56 @@ Define(TRACKGIANTS 19882)
 Define(TRACKHUMANOIDS 19883)
 Define(TRACKUNDEAD 19884)

-SpellAddTargetDebuff(EXPLOSIVESHOT EXPLOSIVESHOT=2)
-SpellAddBuff(EXPLOSIVESHOT LOCKANDLOAD=-1)
-SpellInfo(EXPLOSIVESHOT cd=6 buffnocd=LOCKANDLOAD)
-SpellAddTargetDebuff(SERPENTSTING SERPENTSTING=15)
-SpellAddTargetDebuff(BLACKARROW BLACKARROW=15)
-SpellAddBuff(RAPIDFIRE RAPIDFIRE=10)
-SpellInfo(BLACKARROW cd=26)
-SpellInfo(KILLSHOT cd=15)
-SpellInfo(AIMEDSHOT cd=10)
-SpellInfo(CHIMERASHOT cd=10)
-SpellInfo(RAPIDFIRE cd=300)
-SpellInfo(KILLCOMMAND cd=60)
-SpellInfo(BESTIALWRATH cd=120)
-SpellInfo(ARCANESHOT cd=6)
-SpellAddTargetDebuff(HUNTERSMARK HUNTERSMARK=300)
-
 AddCheckBox(multi SpellName(MULTISHOT))
-AddCheckBox(arcane SpellName(ARCANESHOT) talent=TALENTCHIMSHOT default)
 ScoreSpells(HUNTERSMARK BLACKARROW SERPENTSTING CHIMERASHOT AIMEDSHOT MULTISHOT ARCANESHOT KILLSHOT STEADYSHOT)

-AddIcon help=main
+AddIcon help=main mastery=1
 {
-	if ManaPercent(more 95) and BuffPresent(ASPECTOFTHEVIPER) Spell(ASPECTOFTHEDRAGONHAWK)
-	if TalentPoints(TALENTTRACKING more 0) and Tracking(TRACKBEASTS no) and Tracking(TRACKDEMONS no) and Tracking(TRACKDRAGONKIN no)
-			and Tracking(TRACKELEMENTALS no) and Tracking(TRACKGIANTS no) and Tracking(TRACKHUMANOIDS no) and Tracking(TRACKUNDEAD no)
-				Spell(TRACKBEASTS)
-	if TargetDebuffExpires(HUNTERSMARK 0) and TargetDeadIn(more 15) Spell(HUNTERSMARK)
-	if TargetDebuffExpires(BLACKARROW 0 mine=1) Spell(BLACKARROW)
+	if Mana(less 40) {Spell(FERVOR) Spell(STEADYSHOT)}
+	if TargetBuffPresent(FRENZYEFFECT stacks=5 target=pet) Spell(FOCUSFIRE)
 	if TargetDebuffExpires(SERPENTSTING 0 mine=1) and TargetDeadIn(more 8) Spell(SERPENTSTING)
-	if TargetDebuffExpires(EXPLOSIVESHOT 0 mine=1) Spell(EXPLOSIVESHOT)
-	Spell(AIMEDSHOT)
+	Spell(KILLCOMMAND)
+	Spell(ARCANESHOT)
+	if CheckBoxOn(multi) Spell(MULTISHOT)
+	if TargetLifePercent(less 20) Spell(KILLSHOT)
+	Spell(STEADYSHOT)
+}
+
+AddIcon help=main mastery=2
+{
+	if Mana(less 43) or Counter(ss equal 1) Spell(STEADYSHOT)
 	if TargetDebuffPresent(SERPENTSTING) Spell(CHIMERASHOT)
+	if TargetDebuffExpires(SERPENTSTING 0 mine=1) and TargetDeadIn(more 8) Spell(SERPENTSTING)
+	Spell(AIMEDSHOT)
+	Spell(ARCANESHOT)
 	if CheckBoxOn(multi) Spell(MULTISHOT)
-	if TalentPoints(TALENTEXPLOSHOT less 1) and {TalentPoints(TALENTCHIMSHOT less 1) or CheckBoxOn(arcane)} Spell(ARCANESHOT)
 	if TargetLifePercent(less 20) Spell(KILLSHOT)
-	if TargetDebuffExpires(HUNTERSMARK 2) and TargetDeadIn(more 20) Spell(HUNTERSMARK nored=1)
-	unless 1.5s before Spell(EXPLOSIVESHOT) or 0.25s before Spell(CHIMERASHOT) Spell(STEADYSHOT)
+	Spell(KILLCOMMAND)
+	unless 0.25s before Spell(CHIMERASHOT) Spell(STEADYSHOT)
+}
+
+AddIcon help=main mastery=3
+{
+	if Mana(less 44) and BuffExpires(LOCKANDLOAD) Spell(STEADYSHOT)
+	if Mana(more 44) and TargetDebuffExpires(BLACKARROW 0 mine=1) Spell(BLACKARROW)
+	if Mana(more 24) and TargetDebuffExpires(SERPENTSTING 0 mine=1) and TargetDeadIn(more 8) Spell(SERPENTSTING)
+	if TargetDebuffExpires(EXPLOSIVESHOT 0 mine=1) Spell(EXPLOSIVESHOT)
+	if CheckBoxOn(multi) Spell(MULTISHOT)
+	if TargetLifePercent(less 20) Spell(KILLSHOT)
+	Spell(KILLCOMMAND)
+	unless 1.5s before Spell(EXPLOSIVESHOT) Spell(STEADYSHOT)
 }

 AddIcon help=cd
 {
+	unless BuffPresent(ASPECTOFTHEHAWK) Spell(ASPECTOFTHEHAWK)
+	if TalentPoints(TALENTTRACKING more 0) and Tracking(TRACKBEASTS no) and Tracking(TRACKDEMONS no) and Tracking(TRACKDRAGONKIN no)
+			and Tracking(TRACKELEMENTALS no) and Tracking(TRACKGIANTS no) and Tracking(TRACKHUMANOIDS no) and Tracking(TRACKUNDEAD no)
+				Spell(TRACKBEASTS)
+
+	if TargetDebuffExpires(HUNTERSMARK 2) and TargetDebuffExpires(MARKEDFORDEATH 0) and TargetDeadIn(more 20) Spell(HUNTERSMARK nored=1)
 	Spell(BESTIALWRATH usable=1)
-	Spell(KILLCOMMAND usable=1)
-    Item(Trinket0Slot usable=1)
+	Item(Trinket0Slot usable=1)
 	Item(Trinket1Slot usable=1)
 	Spell(CALLOFTHEWILD usable=1)
 	Spell(RAPIDFIRE)
diff --git a/defaut/Chevalier.lua b/defaut/Chevalier.lua
index 123bb29..d0cf4f6 100644
--- a/defaut/Chevalier.lua
+++ b/defaut/Chevalier.lua
@@ -1,129 +1,135 @@
 Ovale.defaut["DEATHKNIGHT"] = [[
-Define(FROSTPRESENCE 48263)
-Define(RUNESTRIKE 56815)
-Define(BONESHIELD 49222)
-Define(ICEBOUNDFORTITUDE 48792)
-Define(UNBREAKABLEARMOR 51271)
-Define(DEATHANDECAY 43265)
-Define(HOWLINGBLAST 49184)
-Define(OBLITERATE 49020)
-Define(BLOODSTRIKE 45902)
+#Abilities
+Define(ARMYOFTHEDEAD 42650)
+	SpellInfo(ARMYOFTHEDEAD cd=600)
 Define(BLOODBOIL 48721)
-Define(BLOODPLAGUE 59879)
-Define(FROSTFEVER 59921)
-Define(PESTILENCE 50842)a
+Define(BLOODPRESENCE 48263)
+Define(BLOODSTRIKE 45902)
+	SpellInfo(BLOODSTRIKE blood=-1)
+Define(BLOODTAP 45529)
+Define(BONESHIELD 49222) #blood
+	SpellAddBuff(BONESHIELD BONESHIELD=300)
+Define(DANCINGRUNEWEAPON 49028) #blood
+Define(DARKTRANSFORMATION 63560) #unholy
+Define(DEATHANDECAY 43265)
+Define(DEATHCOIL 47541)
+Define(DEATHSTRIKE 49998)
+	SpellInfo(DEATHSTRIKE unholy=-1 frost=-1)
+Define(EMPOWERRUNEWEAPON 47568)
+Define(FESTERINGSTRIKE 85948) #1 frost 1 blood
+Define(FROSTPRESENCE 48266)
+Define(FROSTSTRIKE 49143) #frost
+	SpellInfo(FROSTSTRIKE mana=40)
+Define(HEARTSTRIKE 55050) #blood
+	SpellInfo(HEARTSTRIKE blood=-1)
+Define(HORNOFWINTER 57330)
+	SpellInfo(HORNOFWINTER cd=20)
+Define(HOWLINGBLAST 49184) #frost
+	SpellInfo(HOWLINGBLAST frost=-1 cd=8)
+	SpellAddTargetDebuff(HOWLINGBLAST FROSTFEVER=15 glyph=GLYPHHOWLINGBLAST)
+Define(ICEBOUNDFORTITUDE 48792)
+	SpellAddBuff(ICEBOUNDFORTITUDE ICEBOUNDFORTITUDE=18)
 Define(ICYTOUCH 45477)
+	SpellInfo(ICYTOUCH frost=-1)
+	SpellAddTargetDebuff(ICYTOUCH FROSTFEVER=15)
+Define(OBLITERATE 49020)
+	SpellInfo(OBLITERATE unholy=-1 frost=-1)
+Define(OUTBREAK 77575)
+Define(PESTILENCE 50842)
+Define(PILLAROFFROST 51271) #frost
 Define(PLAGUESTRIKE 45462)
-Define(HEARTSTRIKE 55050)
-Define(DEATHSTRIKE 49998)
-Define(TALENTDEATSTRIKE 2259)
-Define(TALENTFROSTSTRIKE 1975)
-Define(TALENTHEARTSTRIKE 1957)
-Define(TALENTBLOODYSTRIKES 2015)
-Define(SCOURGESTRIKE 55090)
-Define(DEATHCOIL 47541)
-Define(ARMYOFTHEDEAD 42650)
-Define(DANCINGRUNEWEAPON 49028)
-Define(FROSTSTRIKE 49143)
-Define(HYSTERIA 49016)
-Define(SUMMONGARGOYLE 49206)
+	SpellInfo(PLAGUESTRIKE unholy=-1)
+	SpellAddTargetDebuff(PLAGUESTRIKE BLOODPLAGUE=15)
+Define(RAISEDEAD 46584)
+Define(RUNESTRIKE 56815)
+	SpellInfo(RUNESTRIKE mana=20)
+Define(RUNETAP 48982) #blood
+	SpellInfo(RUNETAP blood=-1)
+Define(SCOURGESTRIKE 55090) #unholy
+	SpellInfo(SCOURGESTRIKE unholy=-1)
+Define(SUMMONGARGOYLE 49206) #unholy
+	SpellInfo(SUMMONGARGOYLE cd=180)
+Define(UNHOLYBLIGHT 49194)
+Define(UNHOLYFRENZY 49016)
+	SpellInfo(UNHOLYFRENZY cd=300)
+Define(UNHOLYPRESENCE 48265)
+Define(VAMPIRICBLOOD 55233) #blood
+	SpellInfo(VAMPIRICBLOOD blood=-1)
+
+#Talents
+#Define(TALENTDEATSTRIKE 2259)
+#Define(TALENTFROSTSTRIKE 1975)
+#Define(TALENTHEARTSTRIKE 1957)
+#Define(TALENTBLOODYSTRIKES 2015)
+
+#Glyphs
 Define(GLYPHDISEASE 63334)
 Define(GLYPHHOWLINGBLAST 63335)
-Define(ABOMINATIONMIGHT 53136)
-Define(TALENTABOMINATIONMIGHT 2105)
-Define(RAISEDEAD 46584)
-Define(HORNOFWINTER 57330)
-Define(STRENGTHOFEARTHTOTEM 8075)
-Define(GLYPHOFRAISEDEAD 60200)
-Define(BLOODTAP 45529)
-Define(FREEZINGFOG 59052)
+
+
+#Buffs and debuffs
+Define(BLOODPLAGUE 59879)
+Define(FROSTFEVER 59921)
 Define(KILLINGMACHINE 51124)

 AddCheckBox(rolldes SpellName(GLYPHDISEASE) default glyph=GLYPHDISEASE)

-SpellInfo(ICYTOUCH frost=-1) #forcecd=DEATHCOIL
-SpellAddTargetDebuff(ICYTOUCH FROSTFEVER=15)
-SpellInfo(PLAGUESTRIKE unholy=-1)
-SpellAddTargetDebuff(PLAGUESTRIKE BLOODPLAGUE=15)
-SpellInfo(DEATHSTRIKE unholy=-1 frost=-1)
-SpellInfo(HEARTSTRIKE blood=-1)
-SpellInfo(HOWLINGBLAST frost=-1 cd=8)
-SpellAddTargetDebuff(HOWLINGBLAST FROSTFEVER=15 glyph=GLYPHHOWLINGBLAST)
-SpellInfo(BLOODSTRIKE blood=-1)
-SpellInfo(SCOURGESTRIKE unholy=-1 frost=-1)
-SpellInfo(OBLITERATE unholy=-1 frost=-1)
-SpellInfo(RUNESTRIKE toggle=1)
-SpellAddBuff(BONESHIELD BONESHIELD=300)
-SpellAddBuff(UNBREAKABLEARMOR UNBREAKABLEARMOR=20)
-SpellAddBuff(ICEBOUNDFORTITUDE ICEBOUNDFORTITUDE=18)
-SpellInfo(HORNOFWINTER cd=20)
-SpellInfo(HYSTERIA cd=300)
-SpellInfo(SUMMONGARGOYLE cd=180)
-SpellInfo(ARMYOFTHEDEAD cd=600)
 ScoreSpells(HOWLINGBLAST HEARTSTRIKE BLOODSTRIKE DEATHSTRIKE SCOURGESTRIKE OBLITERATE HEARTSTRIKE
 				PESTILENCE ICYTOUCH PLAGUESTRIKE FROSTSTRIKE DEATHCOIL)

-AddIcon help=main
+AddIcon help=main mastery=1
 {
 	Spell(DANCINGRUNEWEAPON usable=1)

-	if BuffExpires(HORNOFWINTER 2) and BuffExpires(STRENGTHOFEARTHTOTEM 0) Spell(HORNOFWINTER)
+	if BuffExpires(strengthagility 2) Spell(HORNOFWINTER)

 	if CheckBoxOn(rolldes) and Glyph(GLYPHDISEASE)
 		and TargetDebuffPresent(FROSTFEVER mine=1) and TargetDebuffPresent(BLOODPLAGUE mine=1) and
 		{TargetDebuffExpires(FROSTFEVER 3 mine=1) or TargetDebuffExpires(BLOODPLAGUE 3 mine=1)}
 			Spell(PESTILENCE)
+
+	if TargetDebuffPresent(FROSTFEVER mine=1) and TargetDebuffPresent(BLOODPLAGUE mine=1)
+	{
+		if Runes(blood 1) and {CheckBoxOff(rolldes) or Runes(blood 2)} Spell(HEARTSTRIKE)
+		if Runes(unholy 1 nodeath=1) and Runes(frost 1 nodeath=1) Spell(DEATHSTRIKE)
+	}
+
+	if TargetDebuffExpires(FROSTFEVER 0 mine=1) and Runes(frost 1) Spell(ICYTOUCH)
+	if TargetDebuffExpires(BLOODPLAGUE 0 mine=1) and Runes(unholy 1) Spell(PLAGUESTRIKE)

-	if BuffPresent(KILLINGMACHINE) Spell(FROSTSTRIKE usable=1)
+	if PetPresent(no) Spell(RAISEDEAD)
+	Spell(RUNESTRIKE usable=1)
+	if Mana(more 39) Spell(DEATHCOIL usable=1)
+	Spell(HORNOFWINTER priority=2)
+}
+
+AddIcon help=main mastery=2
+{
+	if BuffExpires(strengthagility 2) Spell(HORNOFWINTER)

+	if CheckBoxOn(rolldes) and Glyph(GLYPHDISEASE)
+		and TargetDebuffPresent(FROSTFEVER mine=1) and TargetDebuffPresent(BLOODPLAGUE mine=1) and
+		{TargetDebuffExpires(FROSTFEVER 3 mine=1) or TargetDebuffExpires(BLOODPLAGUE 3 mine=1)}
+			Spell(PESTILENCE)
+
+	if BuffPresent(KILLINGMACHINE) Spell(FROSTSTRIKE usable=1)
+
 	if TargetDebuffPresent(FROSTFEVER mine=1) and TargetDebuffPresent(BLOODPLAGUE mine=1)
 	{
-		if TalentPoints(TALENTBLOODYSTRIKES more 0)
-		{
-			if Runes(blood 1) and {CheckBoxOff(rolldes) or Runes(blood 2)}
-			{
-				Spell(HEARTSTRIKE)
-				Spell(BLOODSTRIKE)
-			}
-		}
-		if Runes(unholy 1) and Runes(frost 1)
-			Spell(SCOURGESTRIKE)
-
-		if Runes(unholy 1 nodeath=1) and Runes(frost 1 nodeath=1)
-		{
-			if TalentPoints(TALENTDEATSTRIKE more 0) Spell(DEATHSTRIKE)
-			Spell(OBLITERATE)
-			Spell(DEATHSTRIKE)
-		}
-		if Runes(blood 1) and {CheckBoxOff(rolldes) or Runes(blood 2)}
-		{
-			Spell(HEARTSTRIKE)
-			Spell(BLOODSTRIKE)
-		}
+		if Runes(unholy 1 nodeath=1) and Runes(frost 1 nodeath=1) Spell(OBLITERATE)
+		if Runes(blood 1) and {CheckBoxOff(rolldes) or Runes(blood 2)} Spell(BLOODSTRIKE)
 	}

-	if CheckBoxOn(rolldes) and Glyph(GLYPHDISEASE) and TalentPoints(TALENTABOMINATIONMIGHT more 0) and BuffExpires(ABOMINATIONMIGHT 0)
-		Spell(DEATHSTRIKE)
-
 	if TargetDebuffExpires(FROSTFEVER 0 mine=1) and Runes(frost 1)
 	{
 		if Glyph(GLYPHHOWLINGBLAST) Spell(HOWLINGBLAST)
 		unless Glyph(GLYPHHOWLINGBLAST) Spell(ICYTOUCH)
 	}
-
-	if TargetDebuffExpires(BLOODPLAGUE 0 mine=1) and Runes(unholy 1)
-		Spell(PLAGUESTRIKE)
-
+	if TargetDebuffExpires(BLOODPLAGUE 0 mine=1) and Runes(unholy 1) Spell(PLAGUESTRIKE)
 	Spell(FROSTSTRIKE usable=1)
-	if PetPresent(no) and Glyph(RAISEDEAD) Spell(RAISEDEAD)
-	if Mana(more 39) Spell(DEATHCOIL usable=1)
-
-	if BuffPresent(FREEZINGFOG) Spell(HOWLINGBLAST)
-
+	if PetPresent(no) Spell(RAISEDEAD)
 	Spell(HORNOFWINTER priority=2)
-
 	unless Runes(frost 1) and Runes(unholy 1) Spell(BLOODTAP)
-
 	if Runes(blood 2 nodeath=1)
 	{
 		Spell(HEARTSTRIKE priority=2)
@@ -131,9 +137,35 @@ AddIcon help=main
 	}
 }

-AddIcon help=offgcd
+AddIcon help=main mastery=3
 {
-	Spell(RUNESTRIKE usable=1)
+	if BuffExpires(strengthagility 2) Spell(HORNOFWINTER)
+
+	if CheckBoxOn(rolldes) and Glyph(GLYPHDISEASE)
+		and TargetDebuffPresent(FROSTFEVER mine=1) and TargetDebuffPresent(BLOODPLAGUE mine=1) and
+		{TargetDebuffExpires(FROSTFEVER 3 mine=1) or TargetDebuffExpires(BLOODPLAGUE 3 mine=1)}
+			Spell(PESTILENCE)
+
+			if TargetDebuffPresent(FROSTFEVER mine=1) and TargetDebuffPresent(BLOODPLAGUE mine=1)
+	{
+		if Runes(unholy 1) and Runes(frost 1)
+			Spell(SCOURGESTRIKE)
+		if Runes(unholy 1 nodeath=1) and Runes(frost 1 nodeath=1) Spell(OBLITERATE)
+		if Runes(blood 1) and {CheckBoxOff(rolldes) or Runes(blood 2)} Spell(BLOODSTRIKE)
+	}
+	if TargetDebuffExpires(FROSTFEVER 0 mine=1) and Runes(frost 1) Spell(ICYTOUCH)
+	if TargetDebuffExpires(BLOODPLAGUE 0 mine=1) and Runes(unholy 1) Spell(PLAGUESTRIKE)
+
+	if PetPresent(no) Spell(RAISEDEAD)
+	if Mana(more 39) Spell(DEATHCOIL usable=1)
+
+	Spell(HORNOFWINTER priority=2)
+	unless Runes(frost 1) and Runes(unholy 1) Spell(BLOODTAP)
+	if Runes(blood 2 nodeath=1)
+	{
+		Spell(HEARTSTRIKE priority=2)
+		Spell(BLOODSTRIKE priority=2)
+	}
 }

 AddIcon help=aoe
@@ -148,16 +180,14 @@ AddIcon help=aoe
 AddIcon help=cd
 {
 	unless BuffPresent(BONESHIELD) Spell(BONESHIELD)
-	if BuffPresent(FROSTPRESENCE)
+	if BuffPresent(BLOODPRESENCE)
 	{
+		Spell(VAMPIRICBLOOD)
+		Spell(RUNETAP)
 		Spell(UNBREAKABLEARMOR)
 		Spell(ICEBOUNDFORTITUDE)
 	}
-	unless BuffPresent(FROSTPRESENCE)
-	{
-		Spell(SUMMONGARGOYLE)
-		Spell(HYSTERIA)
-	}
+	Spell(SUMMONGARGOYLE)
 	Item(Trinket0Slot usable=1)
 	Item(Trinket1Slot usable=1)
 	Spell(ARMYOFTHEDEAD)
diff --git a/defaut/Demoniste.lua b/defaut/Demoniste.lua
index 62ed14a..f238327 100644
--- a/defaut/Demoniste.lua
+++ b/defaut/Demoniste.lua
@@ -1,136 +1,156 @@
 Ovale.defaut["WARLOCK"]=
 [[
+Define(BANEOFAGONY 980)
+	SpellAddTargetDebuff(BANEOFAGONY BANEOFAGONY=24)
+Define(BANEOFDOOM 603)
+	SpellAddTargetDebuff(BANEOFDOOM BANEOFDOOM=60)
+Define(BANEOFHAVOC 80240)
+Define(CHAOSBOLT 50796)
+	SpellInfo(CHAOSBOLT cd=12)
+Define(CONFLAGRATE 17962)
+	SpellInfo(CONFLAGRATE cd=10)
+Define(CORRUPTION 172)
+	SpellAddTargetDebuff(CORRUPTION CORRUPTION=18)
 Define(CURSEELEMENTS 1490)
-Define(CURSEAGONY 980)
-Define(CURSEDOOM 603)
+	SpellAddTargetDebuff(CURSEELEMENTS CURSEELEMENTS=300)
 Define(CURSETONGUES 1714)
 Define(CURSEWEAKNESS 702)
-Define(UNSTABLEAFFLICTION 30108)
-Define(CORRUPTION 172)
-Define(TALENTUNSTABLEAFFLICTION 1670)
-Define(TALENTSHADOWBOLT 944)
-Define(IMMOLATE 348)
-Define(TALENTIMMOLATE 961)
-Define(TALENTEMBERSTORM 966)
-Define(SOULFIRE 6353)
-Define(SHADOWBOLT 686)
-Define(HAUNT 48181)
-Define(TALENTBACKDRAFT 1888)
-Define(CONFLAGRATE 17962)
-Define(DRAINSOUL 47855)
-Define(SHADOWEMBRACE 32391)
-Define(TALENTSHADOWEMBRACE 1763)
-Define(METAMORPHOSIS 47241)
-Define(TALENTDECIMATION 2261)
-Define(SOULSHARD 6265)
+Define(DARKINTENT 80398)
+Define(DEATHCOIL 6789)
+Define(DEMONARMOR 687)
 Define(DEMONICEMPOWERMENT 47193)
-Define(INCINERATE 29722)
-Define(DECIMATION 63167)
-Define(CHAOSBOLT 50796)
-Define(MOLTENCORE 47383)
-Define(GLYPHOFCONFLAGRATE 56235)
+Define(DEMONSOUL 77801)
+Define(DRAINLIFE 689)
+Define(DRAINSOUL 1120)
+	SpellInfo(DRAINSOUL canStopChannelling=5)
 Define(FELARMOR 28176)
-Define(FIRESTONE 6366)
-Define(SPELLSTONE 2362)
-Define(GLYPHLIFETAP 63320)
+Define(FELFLAME 77799)
+Define(HANDOFGULDAN 71521)
+	SpellInfo(HANDOFGULDAN cd=12)
+Define(HAUNT 48181)
+	SpellInfo(HAUNT cd=8)
+Define(IMMOLATE 348)
+	SpellAddTargetDebuff(IMMOLATE IMMOLATE=15)
+	SpellAddBuff(IMMOLATE MOLTENCORE=-1)
+Define(INCINERATE 29722)
+	SpellAddBuff(INCINERATE MOLTENCORE=-1)
 Define(LIFETAP 1454)
+Define(METAMORPHOSIS 47241)
+Define(SEARINGPAIN 5676)
 Define(SEEDOFCORRUPTION 27243)
+Define(SHADOWBOLT 686)
+	SpellAddTargetDebuff(SHADOWBOLT SHADOWEMBRACE=12)
+Define(SHADOWBURN 17877)
+Define(SOULFIRE 6353)
+Define(SOULBURN 74434)
+Define(SUMMONFELGUARD 18540)
+Define(UNSTABLEAFFLICTION 30108)
+	SpellAddTargetDebuff(UNSTABLEAFFLICTION UNSTABLEAFFLICTION=15)
+

+#Buff
+Define(SHADOWEMBRACE 32386)
+Define(DECIMATION 63167)
+Define(MOLTENCORE 71165)
+Define(EMPOWEREDIMP 47221)
+
+#Talent
+Define(TALENTSHADOWEMBRACE 1763)
+
 AddListItem(curse elements SpellName(CURSEELEMENTS))
-AddListItem(curse agony SpellName(CURSEAGONY))
-AddListItem(curse doom SpellName(CURSEDOOM) default)
 AddListItem(curse tongues SpellName(CURSETONGUES))
 AddListItem(curse weakness SpellName(CURSEWEAKNESS))
+AddListItem(bane agony SpellName(BANEOFAGONY))
+AddListItem(bane doom SpellName(BANEOFDOOM))
+AddListItem(bane havoc SpellName(BANEOFHAVOC))

-SpellInfo(HAUNT cd=8)
-SpellInfo(CONFLAGRATE cd=10)
-SpellInfo(CHAOSBOLT cd=12)
-SpellInfo(DRAINSOUL canStopChannelling=5)
-SpellAddTargetDebuff(CORRUPTION CORRUPTION=18)
-SpellAddTargetDebuff(CURSEAGONY CURSEAGONY=24)
-SpellAddTargetDebuff(CURSEELEMENTS CURSEELEMENTS=300)
-SpellAddTargetDebuff(CURSEDOOM CURSEDOOM=60)
-SpellAddTargetDebuff(UNSTABLEAFFLICTION UNSTABLEAFFLICTION=15)
-SpellAddTargetDebuff(IMMOLATE IMMOLATE=15)
-SpellAddTargetDebuff(SHADOWBOLT SHADOWEMBRACE=12)
-SpellAddBuff(INCINERATE MOLTENCORE=-1)
-SpellAddBuff(IMMOLATE MOLTENCORE=-1)
-SpellAddTargetDebuff(CONFLAGRATE IMMOLATE=0)
-SpellAddTargetDebuff(CONFLAGRATE glyph=GLYPHOFCONFLAGRATE)
-
-ScoreSpells(CURSEELEMENTS SHADOWBOLT HAUNT UNSTABLEAFFLICTION IMMOLATE CONFLAGRATE CURSEDOOM CURSETONGUES CURSEWEAKNESS
-	CURSEAGONY CORRUPTION SOULFIRE DRAINSOUL INCINERATE SHADOWBOLT CHAOSBOLT)
+ScoreSpells(CURSEELEMENTS SHADOWBOLT HAUNT UNSTABLEAFFLICTION IMMOLATE CONFLAGRATE BANEOFDOOM CURSETONGUES CURSEWEAKNESS
+	BANEOFAGONY CORRUPTION SOULFIRE DRAINSOUL INCINERATE SHADOWBOLT CHAOSBOLT)

-AddIcon help=main
+AddIcon help=main mastery=1
 {
+	if InCombat(no) and BuffExpires(FELARMOR 400) Spell(FELARMOR)

-unless InCombat()
-{
-	if BuffExpires(FELARMOR 400) Spell(FELARMOR)
-	if WeaponEnchantExpires(mainhand 400)
+	if List(curse elements) and TargetDebuffExpires(CURSEELEMENTS 2) and TargetDeadIn(more 8) Spell(CURSEELEMENTS)
+	if List(curse weakness) and TargetDebuffExpires(CURSEWEAKNESS 2) and TargetDeadIn(more 8) Spell(CURSEWEAKNESS)
+
+	if TargetDebuffExpires(HAUNT 1.5 mine=1) Spell(HAUNT)
+	if TalentPoints(TALENTSHADOWEMBRACE more 0) and TargetDebuffExpires(SHADOWEMBRACE 0) Spell(SHADOWBOLT)
+	if TargetDebuffExpires(UNSTABLEAFFLICTION 1.5 mine=1 haste=spell) and TargetDeadIn(more 8) Spell(UNSTABLEAFFLICTION)
+	if TargetDebuffExpires(CORRUPTION 0 mine=1) and TargetDebuffExpires(SEEDOFCORRUPTION 0 mine=1) and TargetDeadIn(more 9) Spell(CORRUPTION)
+	if TargetDebuffExpires(BANEOFDOOM 0 mine=1) and TargetDebuffExpires(BANEOFAGONY 0 mine=1)
 	{
-		if TalentPoints(TALENTEMBERSTORM more 0) Spell(FIRESTONE)
-		Spell(SPELLSTONE)
-		Spell(FIRESTONE)
+		if List(curse doom) and TargetDeadIn(more 20) Spell(BANEOFDOOM)
+		if TargetDeadIn(more 10) Spell(BANEOFAGONY)
 	}
+	if TargetLifePercent(less 25) Spell(DRAINSOUL)
+	Spell(SHADOWBOLT)
 }

-if Glyph(GLYPHLIFETAP) and BuffExpires(LIFETAP 0) Spell(LIFETAP)
-if List(curse elements) and TargetDebuffExpires(CURSEELEMENTS 2) and TargetDeadIn(more 8) Spell(CURSEELEMENTS)
-if TalentPoints(TALENTSHADOWEMBRACE more 0) and TargetDebuffExpires(SHADOWEMBRACE 0) Spell(SHADOWBOLT)
-if TargetDebuffExpires(HAUNT 1.5 mine=1) Spell(HAUNT)
-if TargetDebuffExpires(UNSTABLEAFFLICTION 1.5 mine=1 haste=spell) and TargetDeadIn(more 8) Spell(UNSTABLEAFFLICTION)
-if TalentPoints(TALENTBACKDRAFT more 0) and TargetDebuffPresent(IMMOLATE mine=1)
-{
-	if TargetDebuffExpires(IMMOLATE 3 mine=1) or Glyph(GLYPHOFCONFLAGRATE)
-		Spell(CONFLAGRATE)
-}
-
-if TargetDebuffExpires(IMMOLATE 1.5 mine=1 haste=spell) and TargetDebuffExpires(UNSTABLEAFFLICTION 0 mine=1) and
-		{TargetLifePercent(more 25) or TalentPoints(TALENTDECIMATION more 0)} and TargetDeadIn(more 8)
-			Spell(IMMOLATE)
-
-if TargetDebuffExpires(CORRUPTION 0 mine=1) and TargetDebuffExpires(SEEDOFCORRUPTION 0 mine=1)
-	and TargetDeadIn(more 9) and TalentPoints(TALENTEMBERSTORM less 1) Spell(CORRUPTION)
-
-if TargetDebuffExpires(CURSEDOOM 0) and TargetDebuffExpires(CURSETONGUES 2) and TargetDebuffExpires(CURSEWEAKNESS 2)
-	and TargetDebuffExpires(CURSEAGONY 0 mine=1) and TargetDebuffExpires(CURSEELEMENTS 2)
+AddIcon help=cd mastery=1
 {
-	if List(curse doom) and TargetDeadIn(more 60) Spell(CURSEDOOM)
-	if List(curse tongues) Spell(CURSETONGUES)
-	if List(curse weakness) Spell(CURSEWEAKNESS)
-	if TargetDeadIn(more 10) Spell(CURSEAGONY)
+	Spell(SUMMONFELGUARD)
+	Spell(SOULBURN usable=1)
+	Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
 }

-if BuffPresent(DECIMATION) Spell(SOULFIRE)
+AddIcon help=main mastery=2
+{
+	if InCombat(no) and BuffExpires(FELARMOR 400) Spell(FELARMOR)

-if TargetLifePercent(less 25) and Level(more 76) and {TalentPoints(TALENTDECIMATION less 1) or ItemCount(SOULSHARD less 16)}
-		 and TalentPoints(TALENTEMBERSTORM less 1) Spell(DRAINSOUL)
+	if List(curse elements) and TargetDebuffExpires(CURSEELEMENTS 2) and TargetDeadIn(more 8) Spell(CURSEELEMENTS)
+	if List(curse weakness) and TargetDebuffExpires(CURSEWEAKNESS 2) and TargetDeadIn(more 8) Spell(CURSEWEAKNESS)

-Spell(CHAOSBOLT)
-if Glyph(GLYPHLIFETAP) and BuffExpires(LIFETAP 1) Spell(LIFETAP)
-if TalentPoints(TALENTEMBERSTORM more 0) or BuffPresent(MOLTENCORE) Spell(INCINERATE)
-Spell(SHADOWBOLT)
+	if TargetDebuffExpires(IMMOLATE 2 mine=1 haste=spell) and TargetDeadIn(more 8) Spell(IMMOLATE)
+	if TargetDebuffExpires(CORRUPTION 0 mine=1) and TargetDebuffExpires(SEEDOFCORRUPTION 0 mine=1) and TargetDeadIn(more 9) Spell(CORRUPTION)
+	if TargetDebuffExpires(BANEOFDOOM 0 mine=1) and TargetDebuffExpires(BANEOFAGONY 0 mine=1)
+	{
+		if List(curse doom) and TargetDeadIn(more 60) Spell(BANEOFDOOM)
+		if TargetDeadIn(more 10) Spell(BANEOFAGONY)
+	}
+	Spell(HANDOFGULDAN)
+	if BuffPresent(DECIMATION) Spell(SOULFIRE)
+	if BuffPresent(MOLTENCORE) Spell(INCINERATE)
+	Spell(SHADOWBOLT)
 }

-AddIcon help=cd
+AddIcon help=cd mastery=2
 {
 	Spell(METAMORPHOSIS)
 	Spell(DEMONICEMPOWERMENT)
+	Spell(SUMMONFELGUARD)
+	Spell(SOULBURN usable=1)
 	Item(Trinket0Slot usable=1)
 	Item(Trinket1Slot usable=1)
 }
-
-AddIcon size=small nocd=1
-{
-	if TargetDebuffExpires(CURSEAGONY 0 mine=1) Spell(CURSEAGONY)
-}
-AddIcon size=small nocd=1
+
+AddIcon help=main mastery=3
 {
-	if TargetDebuffExpires(CURSEDOOM 0 mine=1) Spell(CURSEDOOM)
+	if InCombat(no) and BuffExpires(FELARMOR 400) Spell(FELARMOR)
+
+	if List(curse elements) and TargetDebuffExpires(CURSEELEMENTS 2) and TargetDeadIn(more 8) Spell(CURSEELEMENTS)
+	if List(curse weakness) and TargetDebuffExpires(CURSEWEAKNESS 2) and TargetDeadIn(more 8) Spell(CURSEWEAKNESS)
+
+	if TargetDebuffPresent(IMMOLATE mine=1)	Spell(CONFLAGRATE)
+	if TargetDebuffExpires(IMMOLATE 2 mine=1 haste=spell) and TargetDeadIn(more 8) Spell(IMMOLATE)
+	if TargetDebuffExpires(CORRUPTION 0 mine=1) and TargetDebuffExpires(SEEDOFCORRUPTION 0 mine=1) and TargetDeadIn(more 9) Spell(CORRUPTION)
+	if TargetDebuffExpires(BANEOFDOOM 0 mine=1) and TargetDebuffExpires(BANEOFAGONY 0 mine=1)
+	{
+		if List(curse doom) and TargetDeadIn(more 60) Spell(BANEOFDOOM)
+		if TargetDeadIn(more 10) unless List(cure havoc) Spell(BANEOFAGONY)
+	}
+	if BuffPresent(EMPOWEREDIMP) or BuffPresent(SOULBURN) Spell(SOULFIRE)
+	Spell(CHAOSBOLT)
+	Spell(INCINERATE)
 }
-AddIcon size=small nocd=1
+
+AddIcon help=cd mastery=3
 {
-	if TargetDebuffExpires(CORRUPTION 0 mine=1) Spell(CORRUPTION)
+	Spell(SUMMONFELGUARD)
+	Spell(SOULBURN usable=1)
+	Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
 }
+
 ]]
diff --git a/defaut/Druide.lua b/defaut/Druide.lua
index 78bbcdf..d17a850 100644
--- a/defaut/Druide.lua
+++ b/defaut/Druide.lua
@@ -1,77 +1,146 @@
 Ovale.defaut["DRUID"] =
 [[
-Define(FAERIEFIRE 770)
-Define(FAERIEFERAL 16857)
-Define(MANGLEBEAR 33878)
-Define(DEMOROAR 99)
-Define(SWIPE 779)
-Define(LACERATE 33745)
-Define(MAUL 6807)
-Define(RIP 1079)
-Define(MANGLECAT 33876)
-Define(SHRED 5221)
-Define(INSECTSWARM 27013)
-Define(MOONFIRE 8921)
-Define(STARFIRE 2912)
-Define(WRATH 5176)
-Define(ECLIPSESTARFIRE 48518) #Critical strike chance of Starfire increased, fired by Wrath
-Define(ECLIPSEWRATH 48517) #Damage done by Wrath increased, fired by Starfire
-Define(TIGERSFURY 5217)
-Define(FORCEOFNATURE 33831)
-Define(RAKE 59886)
-Define(SAVAGEROAR 52610)
-Define(FEROCIOUSBITE 22568)
-Define(BERSERK 50334)
-Define(CLEARCASTING 16870)
-Define(CLAW 16827)
-Define(STARFALL 48505)
-Define(TRAUMA 46856)
+Define(BARKSKIN 22812)
+Define(BERSERK 50334) #cat+bear cd buff
+	SpellInfo(BERSERK cd=180)
+Define(CLAW 16827) #cat no positionning
+	SpellInfo(CLAW combo=1)
+Define(DEMOROAR 99) #bear
+	SpellAddTargetDebuff(DEMOROAR DEMOROAR=30)
+Define(ENRAGE 5229) #bear
+Define(FAERIEFIRE 770) #moonkin
+	SpellAddTargetDebuff(FAERIEFIRE FAERIEFIRE=300)
+Define(FAERIEFERAL 16857) #bear+cat
+	SpellAddTargetDebuff(FAERIEFERAL FAERIEFERAL=300)
+Define(FEROCIOUSBITE 22568) #cat finish 35-70 mana
+	SpellInfo(FEROCIOUSBITE combo=-5 mana=70)
+Define(FORCEOFNATURE 33831) #moonkin cd
+	SpellInfo(FORCEOFNATURE cd=180)
+Define(FRENZIEDREGENERATION 22842) #bear
+Define(INNERVATE 29166)
+Define(INSECTSWARM 5570) #moonkin
+	SpellAddTargetDebuff(INSECTSWARM INSECTSWARM=12)
+Define(LACERATE 33745) #bear bleed*3
+Define(MANGLECAT 33876) #cat bleed+debuff
+	SpellInfo(MANGLECAT combo=1)
+	SpellAddTargetDebuff(MANGLECAT MANGLECAT=12)
+Define(MANGLEBEAR 33878) #bear bleed+debuff
+Define(MAUL 6807) #bear
+Define(MOONFIRE 8921) #moonkin
+	SpellAddTargetDebuff(MOONFIRE MOONFIRE=12)
+Define(PULVERIZE 80313) #bear after lacerate*3
+Define(RAKE 1822) #cat bleed
+	SpellInfo(RAKE combo=1)
+	SpellAddTargetDebuff(RAKE RAKE=9)
+Define(RAVAGE 6785) #cat behind+(prowling or stampede)
+	SpellInfo(RAVAGE combo=1)
+Define(RIP 1079) #cat bleed
+	SpellInfo(RIP combo=-5 duration=12)
+	SpellInfo(RIP glyph=GLYPHOFSHRED addduration=6)
+	SpellInfo(RIP glyph=GLYPHOFRIP addduration=4)
+	SpellAddTargetDebuff(RIP RIP=12)
+Define(SAVAGEROAR 52610) #cat damage buff
+	SpellInfo(SAVAGEROAR combo=-5)
+	SpellAddBuff(SAVAGEROAR SAVAGEROAR=14)
+Define(SHRED 5221) #cat behind
+	SpellInfo(SHRED combo=1)
+Define(STARFALL 48505) #moonkin cd aoe
+Define(STARFIRE 2912) #moonkin
+	SpellInfo(STARFIRE eclipse=20)
+Define(STARSURGE 78674) #moonkin 10 lunar+solar
+	SpellInfo(STARSURGE cd=15)
+Define(SURVIVALINSTINCTS 61336) #cat+bear surv cd
+Define(SWIPEBEAR 779) #bear aoe
+Define(SWIPECAT 62078) #cat aoe
+Define(TRASH 77758) #bear aoe bleed
+Define(TIGERSFURY 5217) #cat buff
+	SpellInfo(TIGERSFURY cd=30)
+Define(WRATH 5176) #moonkin
+	SpellInfo(WRATH eclipse=-13)
+
+#Glyphs
 Define(GLYPHOFSHRED 54815)
 Define(GLYPHOFRIP 54818)

+#Buff
+Define(CLEARCASTING 16870)
+Define(ECLIPSELUNAR 48518) #Increased by wrath
+Define(ECLIPSESOLAR 48517) #Increased by starfire
+Define(SHOOTINGSTARS 93400)
+
 AddCheckBox(multi L(AOE))
-AddCheckBox(mangle SpellName(MANGLECAT) default)
-AddCheckBox(demo SpellName(DEMOROAR) default)
 AddCheckBox(lucioles SpellName(FAERIEFIRE) default)
-AddCheckBox(wrath SpellName(WRATH))
-AddCheckBox(shred SpellName(SHRED) default)
+AddCheckBox(wrath SpellName(WRATH) mastery=1)
+AddCheckBox(mangle SpellName(MANGLECAT) default mastery=2)
+AddCheckBox(demo SpellName(DEMOROAR) default mastery=2)
+AddCheckBox(shred SpellName(SHRED) default mastery=2)

 ScoreSpells(FAERIEFERAL DEMOROAR MANGLEBEAR LACERATE SAVAGEROAR RIP
 		TIGERSFURY MANGLECAT RAKE SHRED FEROCIOUSBITE INSECTSWARM MOONFIRE
 		WRATH STARFIRE)
+
+AddIcon help=main mastery=1
+{
+	if CheckBoxOn(lucioles) and TargetDebuffExpires(FAERIEFIRE 2) and TargetDeadIn(more 15)
+		Spell(FAERIEFIRE)
+
+	if Speed(more 0)
+	{
+		if BuffPresent(SHOOTINGSTARS) Spell(STARSURGE)
+		Spell(MOONFIRE)
+	}
+
+	if BuffPresent(SHOOTINGSTARS) and BuffExpires(SHOOTINGSTARS 3) Spell(STARSURGE)
+
+	if BuffPresent(ECLIPSELUNAR) or Eclipse(equal -100)
+	{
+		if TargetDebuffExpires(MOONFIRE 0 mine=1) and TargetDeadIn(more 6)
+			Spell(MOONFIRE)
+		Spell(STARFIRE)
+	}
+
+	if BuffPresent(ECLIPSESOLAR) or Eclipse(equal 100)
+	{
+		if TargetDebuffExpires(INSECTSWARM 0 mine=1) and TargetDeadIn(more 6)
+			Spell(INSECTSWARM)
+		Spell(WRATH)
+	}
+
+	if TargetDebuffExpires(INSECTSWARM 0 mine=1) and TargetDeadIn(more 6)
+		Spell(INSECTSWARM)
+
+	if TargetDebuffExpires(MOONFIRE 0 mine=1) and TargetDeadIn(more 6)
+		Spell(MOONFIRE)
+
+	Spell(STARSURGE)

-SpellInfo(MAUL toggle=1)
-SpellAddTargetDebuff(FAERIEFERAL FAERIEFERAL=300)
-SpellAddTargetDebuff(FAERIEFIRE FAERIEFIRE=300)
-SpellAddTargetDebuff(DEMOROAR DEMOROAR=30)
-SpellAddBuff(SAVAGEROAR SAVAGEROAR=14)
-SpellAddTargetDebuff(RIP RIP=12)
-SpellAddTargetDebuff(MANGLECAT MANGLECAT=12)
-SpellAddTargetDebuff(RAKE RAKE=9)
-SpellAddTargetDebuff(INSECTSWARM INSECTSWARM=12)
-SpellAddTargetDebuff(MOONFIRE MOONFIRE=12)
-SpellInfo(TIGERSFURY cd=30)
-SpellInfo(BERSERK cd=180)
-SpellInfo(FORCEOFNATURE cd=180)
-SpellInfo(MANGLECAT combo=1)
-SpellInfo(RAKE combo=1)
-SpellInfo(SHRED combo=1)
-SpellInfo(SAVAGEROAR combo=-5)
-SpellInfo(RIP combo=-5 duration=12)
-SpellInfo(FEROCIOUSBITE combo=-5)
-SpellInfo(RIP glyph=GLYPHOFSHRED addduration=6)
-SpellInfo(RIP glyph=GLYPHOFRIP addduration=4)
-SpellInfo(CLAW combo=1)
-
-AddIcon help=main
+	if {Eclipse(equal 0) and CheckBoxOn(wrath)} or Eclipse(less 0)
+		Spell(WRATH)
+
+	if {Eclipse(equal 0) and CheckBoxOff(wrath)} or Eclipse(more 0)
+		Spell(STARFIRE)
+}
+
+AddIcon help=cd mastery=1
+{
+	Spell(FORCEOFNATURE)
+    Spell(STARFALL)
+	Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
+}
+
+AddIcon help=main mastery=2
 {
 	if Stance(1) # bear
 	{
 		unless TargetDebuffExpires(LACERATE 4) and TargetDebuffPresent(LACERATE)
 			Spell(MANGLEBEAR)

-		if Mana(more 10) and TargetDebuffExpires(LACERATE 4 stacks=5)
+		if Mana(more 10) and TargetDebuffExpires(LACERATE 4 stacks=3)
 			Spell(LACERATE)
+
+		if TargetDebuffPresent(LACERATE stacks=3)
+			Spell(PULVERIZE)

 		if CheckBoxOn(lucioles) and TargetDebuffExpires(FAERIEFERAL 2)
 			Spell(FAERIEFERAL)
@@ -79,8 +148,9 @@ AddIcon help=main
 		if CheckBoxOn(demo) and TargetDebuffExpires(DEMOROAR 2)
 			Spell(DEMOROAR)

+		if Mana(more 50) Spell(MAUL)
 		if CheckBoxOn(multi)
-			Spell(SWIPE)
+			Spell(SWIPEBEAR)
 	}

 	if Stance(3) # cat
@@ -125,47 +195,10 @@ AddIcon help=main
 		}
 		if CheckBoxOff(shred) Spell(CLAW)
 	}
-
-	unless Stance(1) or Stance(3)
-	{
-		if CheckBoxOn(lucioles) and TargetDebuffExpires(FAERIEFIRE 2) and TargetDeadIn(more 15)
-			Spell(FAERIEFIRE)
-
-		if TargetDebuffExpires(INSECTSWARM 0 mine=1) and TargetDeadIn(more 6)
-			Spell(INSECTSWARM)
-		if TargetDebuffExpires(MOONFIRE 0 mine=1) and TargetDeadIn(more 6)
-			Spell(MOONFIRE)
-
-		if BuffPresent(ECLIPSEWRATH)
-			Spell(WRATH)
-		if BuffPresent(ECLIPSESTARFIRE)
-			Spell(STARFIRE)
-
-		if CheckBoxOff(wrath)
-		{
-			if BuffGain(ECLIPSEWRATH 29) Spell(STARFIRE)
-			Spell(WRATH)
-		}
-		if CheckBoxOn(wrath)
-		{
-			if BuffGain(ECLIPSESTARFIRE 29) Spell(WRATH)
-			Spell(STARFIRE)
-		}
-	}
-}
-
-AddIcon help=offgcd
-{
-  if Stance(1)
-  {
-       Spell(MAUL)
-  }
 }

-AddIcon help=cd
+AddIcon help=cd mastery=2
 {
-	unless Stance(1) or Stance(3) Spell(STARFALL)
-	Spell(FORCEOFNATURE)
 	Spell(BERSERK)
 	unless BuffPresent(BERSERK) if Mana(less 40) Spell(TIGERSFURY)
 	Item(Trinket0Slot usable=1)
diff --git a/defaut/Guerrier.lua b/defaut/Guerrier.lua
index e446c43..c46cef9 100644
--- a/defaut/Guerrier.lua
+++ b/defaut/Guerrier.lua
@@ -1,210 +1,175 @@
 Ovale.defaut["WARRIOR"] =
 [[
-Define(THUNDERCLAP 6343)
-Define(SHOCKWAVE 46968)
+#Spells
+Define(BATTLESHOUT 6673)
+	SpellAddBuff(BATTLESHOUT BATTLESHOUT=120)
+Define(BATTLESTANCE 2457)
+Define(BERSERKERRAGE 18499)
+Define(BERSERKERSTANCE 2458)
+Define(BLADESTORM 46924)
+Define(BLOODTHIRST 23881)
+	SpellInfo(BLOODTHIRST cd=3)
+Define(CHARGE 100)
+Define(CLEAVE 845)
+	SpellInfo(CLEAVE cd=3)
+Define(COLOSSSUSSMASH 86346)
+	SpellInfo(COLOSSSUSSMASH cd=20)
+Define(COMMANDINGSHOUT 469)
+	SpellAddBuff(COMMANDINGSHOUT cd=60 COMMANDINGSHOUT=120)
+Define(CONCUSSIONBLOW 12809)
+Define(DEADLYCALM 85730)
+Define(DEATHWISH 12292)
+	SpellInfo(DEATHWISH cd=180)
+Define(DEFENSIVESTANCE 71)
 Define(DEMOSHOUT 1160)
-Define(COMMANDSHOUT 469)
-Define(BATTLESHOUT 2048)
-Define(REVENGE 6572)
-Define(SHIELDSLAM 23922)
+	SpellAddTargetDebuff(DEMOSHOUT DEMOSHOUT=45)
 Define(DEVASTATE 20243)
-Define(VICTORY 34428)
+	SpellAddTargetDebuff(DEVASTATE SUNDERARMOR=30)
 Define(EXECUTE 5308)
-Define(BLOODTHIRST 23881)
-Define(WHIRLWIND 1680)
-Define(SLAMBUFF 46916)
-Define(SLAM 1464)
-Define(MORTALSTRIKE 12294)
-Define(SLAMTALENT 2233)
-Define(CLEAVE 845)
+Define(HEROICLEAP 6544)
 Define(HEROICSTRIKE 78)
-Define(SUNDER 7386)
-Define(CONCUSSIONBLOW 12809)
-Define(REND 772)
-Define(OVERPOWER 7384)
-Define(SHIELDBLOCK 2565)
-Define(SHIELDWALL 871)
+	SpellInfo(HEROICSTRIKE cd=3)
+Define(HEROICTHROW 57755)
+Define(HEROICFURY 60970)
+Define(INTERCEPT 20252)
+Define(INTERVENE 3411)
 Define(LASTSTAND 12975)
-Define(DEATHWISH 12292)
+Define(MORTALSTRIKE 12294)
+	SpellInfo(MORTALSTRIKE cd=4.5)
+Define(OVERPOWER 7384)
+	SpellInfo(OVERPOWER cd=1)
+Define(PUMMEL 6552)
+Define(RAGINGBLOW 85288)
+	SpellInfo(RAGINGBLOW cd=6)
 Define(RECKLESSNESS 1719)
-Define(BLADESTORM 46924)
-Define(SUDDENDEATH 52437)
+Define(REND 772)
+	SpellAddTargetDebuff(REND REND=15)
 Define(RETALIATION 20230)
+Define(REVENGE 6572)
+	SpellInfo(REVENGE cd=5)
+Define(SHATTERINGTHROW 64382)
+Define(SHIELDBASH 72)
+Define(SHIELDBLOCK 2565)
+Define(SHIELDWALL 871)
+Define(SHIELDSLAM 23922)
+	SpellInfo(SHIELDSLAM cd=6)
+Define(SHOCKWAVE 46968)
+Define(SLAM 1464)
+	SpellAddBuff(SLAM BLOODSURGE=-1)
+Define(STRIKE 88161)
+	SpellInfo(STRIKE cd=3)
+Define(SUNDERARMOR 7386)
+	SpellAddTargetDebuff(SUNDERARMOR SUNDERARMOR=30)
+Define(SWEEPINGSTRIKES 12328)
+Define(THUNDERCLAP 6343)
+	SpellAddTargetDebuff(THUNDERCLAP THUNDERCLAP=30)
+Define(VICTORYRUSH 34428)
+Define(WHIRLWIND 1680)
+	SpellInfo(WHIRLWIND cd=8)
+
+#Buffs
+Define(BLOODSURGE 46916)
 Define(TASTEFORBLOOD 56636)
+Define(ENRAGE 14202)

+#Talents
+Define(SLAMTALENT 2233)
+Define(SUDDENDEATH 52437)
+
+#Other classes buffs
 Define(DEMORALIZINGROAR 48560)
 Define(CURSEOFWEAKNESS 50511)

 AddCheckBox(multi L(AOE))
 AddCheckBox(demo SpellName(DEMOSHOUT))
-AddCheckBox(whirlwind SpellName(WHIRLWIND) default)
-AddCheckBox(sunder SpellName(SUNDER) default)
+AddCheckBox(sunder SpellName(SUNDERARMOR) default)
 AddListItem(shout none L(None))
 AddListItem(shout battle SpellName(BATTLESHOUT))
-AddListItem(shout command SpellName(COMMANDSHOUT))
+AddListItem(shout command SpellName(COMMANDINGSHOUT))

-SpellAddTargetDebuff(THUNDERCLAP THUNDERCLAP=30)
-SpellAddTargetDebuff(DEMOSHOUT DEMOSHOUT=45)
-SpellAddTargetDebuff(REND REND=15)
-SpellAddTargetDebuff(DEVASTATE SUNDER=30)
-SpellAddTargetDebuff(SUNDER SUNDER=30)
-SpellAddBuff(BATTLESHOUT BATTLESHOUT=120)
-SpellAddBuff(COMMANDSHOUT COMMANDSHOUT=120)
-SpellAddBuff(SLAM SLAMBUFF=-1)
-SpellInfo(WHIRLWIND cd=8)
-SpellInfo(BLOODTHIRST cd=4)
-SpellInfo(DEATHWISH cd=180)
-SpellInfo(HEROICSTRIKE toggle=1)
-SpellInfo(CLEAVE toggle=1)
 ScoreSpells(WHIRLWIND BLOODTHIRST SLAM REND MORTALSTRIKE EXECUTE SHIELDSLAM REVENGE)

-AddIcon help=main
+AddIcon help=main mastery=1
 {
-     if List(shout command) and
-       BuffExpires(COMMANDSHOUT 3)
-          Spell(COMMANDSHOUT nored=1)
-
-     if List(shout battle) and BuffExpires(BATTLESHOUT 3)
-          Spell(BATTLESHOUT nored=1)
-
-     if TargetClassification(worldboss)
-            and CheckBoxOn(demo)
-            and TargetDebuffExpires(DEMOSHOUT 2)
-            and TargetDebuffExpires(DEMORALIZINGROAR 0)
-            and TargetDebuffExpires(CURSEOFWEAKNESS 0)
-          Spell(DEMOSHOUT nored=1)
-
-	if CheckBoxOn(sunder) and TargetDebuffExpires(SUNDER 2 stacks=5) and TargetDebuffPresent(SUNDER stacks=4)
-	{
-		Spell(DEVASTATE nored=1)
-		Spell(SUNDER nored=1)
-	}
-
-     if Stance(2) #Defense
-     {
-        if TargetClassification(worldboss)
-        {
-            if TargetDebuffExpires(THUNDERCLAP 2)
-				Spell(THUNDERCLAP nored=1)
-			Spell(CONCUSSIONBLOW)
-			Spell(SHOCKWAVE)
-		}
-
-        if CheckBoxOn(multi)
-        {
-               Spell(THUNDERCLAP)
-               Spell(SHOCKWAVE)
-        }
-
-        Spell(REVENGE usable=1)
-        Spell(SHIELDSLAM)
-        Spell(BLOODTHIRST)
-		Spell(MORTALSTRIKE)
-
-        if Mana(more 10) Spell(DEVASTATE)
-     }
+	if List(shout command) and {Mana(less 20) or BuffExpires(stamina 3)} Spell(COMMANDINGSHOUT nored=1)
+    if List(shout battle) and {Mana(less 20) or BuffExpires(strengthagility 3)} Spell(BATTLESHOUT nored=1)
+	if TargetClassification(worldboss) and CheckBoxOn(demo) and TargetDebuffExpires(lowerphysicaldamage 2) Spell(DEMOSHOUT nored=1)
+	if TargetDebuffExpires(SUNDERARMOR 2 stacks=3) and CheckBoxOn(sunder) and TargetDebuffExpires(lowerarmor 2) Spell(SUNDERARMOR nored=1)

-     if Stance(3) #berserker
-     {
-        if HasShield() Spell(SHIELDSLAM)
-        Spell(SHOCKWAVE)
-        Spell(CONCUSSIONBLOW)
-
-        if CheckBoxOn(whirlwind) Spell(WHIRLWIND)
-        Spell(BLOODTHIRST)
-        if TargetLifePercent(less 20) Spell(EXECUTE)
-        Spell(VICTORY usable=1)
-        if BuffPresent(SLAMBUFF)
-        {
-			if BuffExpires(SLAMBUFF 2.5)
-      			Spell(SLAM nored=1)
-			if BuffDuration(SLAMBUFF more 6) and 1s before Spell(BLOODTHIRST) and { 1s before Spell(WHIRLWIND) or CheckBoxOff(whirlwind) }
-				Spell(SLAM nored=1)
-      		Spell(SLAM priority=2 nored=1)
-      	}
-
-        Spell(MORTALSTRIKE)
-
-        if TalentPoints(SLAMTALENT more 1)
-		    Spell(SLAM priority=2)
+	if Mana(less 20) Spell(DEADLYCALM)
+	if TargetDebuffExpires(REND) Spell(REND)
+	if CheckBoxOn(multi) Spell(BLADESTORM)
+	Spell(COLOSSUSSMASH)
+	Spell(MORTALSTRIKE)
+	Spell(OVERPOWER usable=1)
+	if CheckBoxOn(multi) Spell(CLEAVE)
+    if TargetLifePercent(less 20) Spell(EXECUTE)
+	if Mana(more 60) Spell(HEROICSTRIKE)
+	Spell(SLAM)
+}

-        Spell(DEVASTATE)
-    }
+AddIcon help=cd mastery=1
+{
+    Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
+}

-     if Stance(1) #combat
-     {
-		#Suggestions by wikiupd
-		if BuffExpires(TASTEFORBLOOD 1.5) and TargetDebuffExpires(REND 0 mine=1) Spell(OVERPOWER usable=1)
-		if TargetDebuffExpires(REND 0 mine=1) and TargetDeadIn(more 8) Spell(REND)
-		unless BuffPresent(TASTEFORBLOOD) Spell(OVERPOWER usable=1) # Dodge OP
-		if BuffExpires(TASTEFORBLOOD 4.5) Spell(OVERPOWER usable=1) # OP w/ less than 4.5 sec
-        if TargetLifePercent(more 20) Spell(MORTALSTRIKE)
-        if BuffPresent(SUDDENDEATH) or TargetLifePercent(less 20) Spell(EXECUTE)
-        Spell(OVERPOWER usable=1)
-        Spell(VICTORY usable=1)
-
-         if TalentPoints(SLAMTALENT more 1)
-		    Spell(SLAM priority=2)
-
-		#Some other specs stuff, just in case
-		Spell(BLOODTHIRST)
-        if HasShield() Spell(SHIELDSLAM)
-        Spell(SHOCKWAVE)
-        Spell(CONCUSSIONBLOW)
-        Spell(DEVASTATE)
-     }
+AddIcon help=main mastery=2
+{
+	if List(shout command) and {Mana(less 20) or BuffExpires(stamina 3)} Spell(COMMANDINGSHOUT nored=1)
+    if List(shout battle) and {Mana(less 20) or BuffExpires(strengthagility 3)} Spell(BATTLESHOUT nored=1)
+	if TargetClassification(worldboss) and CheckBoxOn(demo) and TargetDebuffExpires(lowerphysicaldamage 2) Spell(DEMOSHOUT nored=1)
+	if TargetDebuffExpires(SUNDERARMOR 2 stacks=3) and CheckBoxOn(sunder) and TargetDebuffExpires(lowerarmor 2) Spell(SUNDERARMOR nored=1)
+
+	if CheckBoxOn(multi) Spell(WHIRLWIND)
+	Spell(COLOSSUSSMASH)
+	Spell(RAGINGBLOW usable=1)
+    Spell(BLOODTHIRST)
+    Spell(VICTORYRUSH usable=1)
+	if BuffPresent(BLOODSURGE) Spell(SLAM)
+    if TargetLifePercent(less 20) Spell(EXECUTE)
+	if CheckBoxOn(multi) Spell(CLEAVE)
+	if Mana(more 60) Spell(HEROICSTRIKE)
+	if BuffExpires(DEATHWISH) and BuffExpires(RECKLESSNESS) and BuffExpires(ENRAGE) Spell(BERSERKERRAGE)
+}

-	if CheckBoxOn(sunder) and TargetDebuffExpires(SUNDER 10 stacks=5)
-	{
-	    Spell(DEVASTATE priority=2 nored=1)
-		Spell(SUNDER priority=2 nored=1)
-    }
+AddIcon help=cd mastery=2
+{
+	Spell(DEATHWISH)
+	Spell(RECKLESSNESS)
+    Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
 }

-AddIcon help=offgcd
+AddIcon help=main mastery=3
 {
-	if CheckBoxOff(multi)
+	if List(shout command) and {Mana(less 20) or BuffExpires(stamina 3)} Spell(COMMANDINGSHOUT nored=1)
+    if List(shout battle) and {Mana(less 20) or BuffExpires(strengthagility 3)} Spell(BATTLESHOUT nored=1)
+	if TargetClassification(worldboss) and CheckBoxOn(demo) and TargetDebuffExpires(lowerphysicaldamage 2) Spell(DEMOSHOUT nored=1)
+
+	if CheckBoxOn(multi)
 	{
-		if Stance(2)
-		{
-			if Mana(more 66)
-				Spell(HEROICSTRIKE)
-		}
-		if Stance(3)
-		{
-			if Mana(more 66)
-				Spell(HEROICSTRIKE)
-		}
-		if Stance(1)
-		{
-			if Mana(more 94)
-				Spell(HEROICSTRIKE)
-		}
-	}
-    if Mana(more 50) and CheckBoxOn(multi)
+		if TargetDebuffExpires(REND mine=1) Spell(REND)
+		Spell(THUNDERCLAP)
+		Spell(SHOCKWAVE)
 		Spell(CLEAVE)
- }
+	}
+	Spell(SHIELDSLAM)
+	if Mana(more 60) and CheckBoxOff(multi) Spell(HEROICSTRIKE)
+	Spell(REVENGE usable=1)
+	if TargetDebuffExpires(meleeslow) Spell(THUNDERCLAP)
+	Spell(VICTORYRUSH usable=1)
+	Spell(DEVASTATE)
+}

-AddIcon help=cd
+AddIcon help=cd mastery=3
 {
-    if Stance(2) #Defense
-    {
-        Spell(SHIELDBLOCK)
-		Spell(LASTSTAND)
-		Spell(SHIELDWALL)
-    }
-    if Stance(3) #berserker
-    {
-		Spell(DEATHWISH)
-		Spell(RECKLESSNESS)
-    }
-    if Stance(1) #combat
-    {
-		Spell(BLADESTORM)
-		Spell(RETALIATION)
-    }
+	Spell(SHIELDBLOCK)
+	Spell(SHIELDWALL)
+	Spell(LASTSTAND)
     Item(Trinket0Slot usable=1)
 	Item(Trinket1Slot usable=1)
 }

+
 ]]
diff --git a/defaut/Mage.lua b/defaut/Mage.lua
index d0a8f8a..e957958 100644
--- a/defaut/Mage.lua
+++ b/defaut/Mage.lua
@@ -1,108 +1,106 @@
 Ovale.defaut["MAGE"]=
 [[
-#Modified by Arconer
-Define(TALENTLIVINGBOMB 1852)
-Define(TALENTPIERCINGICE 61)
-Define(TALENTCHILLEDTOTHEBONES 1856)
-Define(TALENTARCANEBARRAGE 1847)
-Define(TALENTIMPROVEDSCORSH 25)
-Define(TALENTBRAINFREEZE 1854)
-
-Define(HOTSTREAK 48108)
-Define(IMPROVEDSCORCH 22959)
-
-Define(PYROBLAST 11366)
-Define(LIVINGBOMB 44457)
-Define(SCORCH 2948)
-Define(FROSTFIREBOLT 44614)
-Define(FIREBALL 133)
-
-Define(FROSTBOLT 116)
-Define(DEEPFREEZE 44572)
-Define(BRAINFREEZE 57761)
-Define(PUSHLIMIT 70753)
-Define(FINGERFROST 44544)
-
-Define(ARCANEBARRAGE 44425)
-Define(ARCANEMISSILES 5143)
-Define(ARCANEBLAST 30451)
-Define(ARCANEPOWER 12042)
-Define(MISSILEBARRAGE 44401)
-
-Define(COMBUSTION 11129)
-Define(ICYVEINS 12472)
-Define(MIRRORIMAGE 55342)
-Define(SUMMONWATERELEMENTAL 31687)
-Define(PRESENCEOFMIND 12043)
-
+#Spells
+Define(ARCANEBARRAGE 44425) #arcane instant
+Define(ARCANEBLAST 30451) #arcane stacks*4 cost increased
+	SpellAddDebuff(ARCANEBLAST ARCANEBLAST=10)
+Define(ARCANEMISSILES 5143) #arcane channel
+	SpellAddDebuff(ARCANEMISSILES ARCANEBLAST=0)
+Define(ARCANEPOWER 12042) #arcane cd
+	SpellInfo(ARCANEPOWER cd=84)
+Define(COLDSNAP 11958) #frost reset cd
+Define(COMBUSTION 11129) #fire cd consume dot
+	SpellInfo(COMBUSTION cd=180)
+Define(DEEPFREEZE 44572) #frost instant
+Define(FIREBLAST 2136) #fire instant
+Define(FIREBALL 133) #fire 2.5
+Define(FROSTBOLT 116) #frost
+Define(FROSTFIREBOLT 44614) #frost+fire
+Define(ICEARMOR 7302)
+Define(ICELANCE 30455) #frost instant
+Define(ICYVEINS 12472) #frost cd
+	SpellInfo(ICYVEINS cd=144)
+Define(LIVINGBOMB 44457) #fire dot
+	SpellAddTargetDebuff(LIVINGBOMB LIVINGBOMB=12)
 Define(MAGEARMOR 6117)
+Define(MIRRORIMAGE 55342)
+	SpellInfo(MIRRORIMAGE cd=180)
 Define(MOLTENARMOR 30482)
-Define(ICEARMOR 7302)
+Define(PRESENCEOFMIND 12043) #arcane next spell instant
+Define(PYROBLAST 11366) #fire dot
+	SpellAddTargetDebuff(PYROBLAST PYROBLAST=12)
+	SpellAddBuff(PYROBLAST HOTSTREAK=0)
+Define(SCORCH 2948) #fire 1.5 (cast while moving with firestarter talent)
+Define(SUMMONWATERELEMENTAL 31687) #frost pet
+	SpellInfo(SUMMONWATERELEMENTAL cd=180)
+
+#Buff
+Define(BRAINFREEZE 57761) #frost (instant fireball/frostfire bolt)
+Define(FINGERSOFFROST 83074) #frost boost ice lance/deep freeze
+Define(HOTSTREAK 48108) #fire instant pyroblast
+
+#Talent
+Define(FIRESTARTERTALENT 1849)

 AddCheckBox(scorch SpellName(SCORCH) default talent=TALENTIMPROVEDSCORSH)
 AddCheckBox(abarr SpellName(ARCANEBARRAGE) default talent=TALENTARCANEBARRAGE)

-SpellAddDebuff(PYROBLAST HOTSTREAK=0)
-SpellAddDebuff(ARCANEBLAST ARCANEBLAST=10)
-SpellAddDebuff(ARCANEMISSILES ARCANEBLAST=0)
-SpellAddTargetDebuff(SCORCH IMPROVEDSCORCH=30)
-SpellAddTargetDebuff(LIVINGBOMB LIVINGBOMB=12)
-SpellInfo(MIRRORIMAGE cd=180)
-SpellInfo(ARCANEPOWER cd=84)
-SpellInfo(COMBUSTION cd=180)
-SpellInfo(ICYVEINS cd=144)
-SpellInfo(SUMMONWATERELEMENTAL cd=180)
-
 ScoreSpells(SCORCH PYROBLAST LIVINGBOMB FROSTFIREBOLT FIREBALL SUMMONWATERELEMENTAL FROSTBOLT ARCANEBLAST ARCANEMISSILES)

-AddIcon help=main
+AddIcon help=main mastery=1
 {
-	unless InCombat()
-	{
-		if BuffExpires(MAGEARMOR 400) and BuffExpires(MOLTENARMOR 400) and BuffExpires(ICEARMOR 400)
-		Spell(MOLTENARMOR)
-	}
+	unless InCombat() if BuffExpires(MAGEARMOR 400) and BuffExpires(MOLTENARMOR 400) and BuffExpires(ICEARMOR 400) Spell(MOLTENARMOR)
+
+	if Speed(more 0) Spell(ARCANEBARRAGE)
+	if DebuffPresent(ARCANEBLAST stacks=4)
+		Spell(ARCANEMISSILES)
+	Spell(ARCANEBLAST)
+}

-	if TalentPoints(TALENTLIVINGBOMB more 0)
-	{
-		#Fire spec
-		if TargetDebuffExpires(IMPROVEDSCORCH 6) and CheckBoxOn(scorch) and TargetDeadIn(more 15) Spell(SCORCH)
-		if BuffPresent(HOTSTREAK) Spell(PYROBLAST)
-		if TargetDebuffExpires(LIVINGBOMB 0 mine=1) and TargetDeadIn(more 12) Spell(LIVINGBOMB)
-		if TalentPoints(TALENTPIERCINGICE more 0)
-			Spell(FROSTFIREBOLT)
-		if TalentPoints(TALENTPIERCINGICE less 1)
-			Spell(FIREBALL)
-	}
-
-	if TalentPoints(TALENTCHILLEDTOTHEBONES more 0)
-	{
-		#Frost spec
-		if PetPresent(no) Spell(SUMMONWATERELEMENTAL)
-		if BuffPresent(FINGERFROST) Spell(DEEPFREEZE)
-		if BuffPresent(BRAINFREEZE) and BuffExpires(PUSHLIMIT 1) Spell(FIREBALL)
-		Spell(FROSTBOLT)
-	}
-
-	if TalentPoints(TALENTARCANEBARRAGE more 0)
-    {
-            #Arcane spec
-
-            if BuffPresent(MISSILEBARRAGE) and DebuffPresent(ARCANEBLAST stacks=4)
-                Spell(ARCANEMISSILES)
-			Spell(ARCANEBLAST)
-    }
+AddIcon help=main mastery=2
+{
+	unless InCombat() if BuffExpires(MAGEARMOR 400) and BuffExpires(MOLTENARMOR 400) and BuffExpires(ICEARMOR 400) Spell(MOLTENARMOR)
+
+	if Talent(FIRESTARTERTALENT) and Speed(more 0) Spell(SCORCH)
+	if BuffPresent(HOTSTREAK) Spell(PYROBLAST)
+	if TargetDebuffExpires(LIVINGBOMB 0 mine=1) and TargetDeadIn(more 12) Spell(LIVINGBOMB)
+	if TargetDebuffExpires(PYROBLAST 2.5 haste=spell mine=1) Spell(PYROBLAST)
+	Spell(FIREBALL)
 }

-AddIcon help=cd
+AddIcon help=main mastery=3
+{
+	unless InCombat() if BuffExpires(MAGEARMOR 400) and BuffExpires(MOLTENARMOR 400) and BuffExpires(ICEARMOR 400) Spell(MOLTENARMOR)
+
+	if PetPresent(no) Spell(SUMMONWATERELEMENTAL)
+	If BuffPresent(FINGERSOFFROST) or Speed(more 0) {Spell(DEEPFREEZE) Spell(ICELANCE)}
+	if BuffPresent(BRAINFREEZE) Spell(FROSTFIREBOLT)
+	Spell(FROSTBOLT)
+}
+
+AddIcon help=cd mastery=1
 {
-	Spell(MIRRORIMAGE)
 	if DebuffPresent(ARCANEBLAST stacks=3) Spell(ARCANEPOWER)
+	Spell(PRESENCEOFMIND)
+	Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
+	Spell(MIRRORIMAGE)
+}
+
+AddIcon help=cd mastery=2
+{
 	Spell(COMBUSTION)
+	Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
+	Spell(MIRRORIMAGE)
+}
+
+AddIcon help=cd mastery=3
+{
 	Spell(ICYVEINS)
-	Spell(PRESENCEOFMIND)
 	Item(Trinket0Slot usable=1)
 	Item(Trinket1Slot usable=1)
+	Spell(MIRRORIMAGE)
 }

 ]]
\ No newline at end of file
diff --git a/defaut/Paladin.lua b/defaut/Paladin.lua
index 7fd9a49..beb666f 100644
--- a/defaut/Paladin.lua
+++ b/defaut/Paladin.lua
@@ -1,95 +1,89 @@
 Ovale.defaut["PALADIN"] =
 [[
-Define(SEALRIGHTEOUSNESS 21084)
-Define(SEALCOMMAND 20375)
-Define(SEALVENGEANCE 31801)
-Define(SEALCORRUPTION 53736)
-Define(JUDGELIGHT 20271)
-Define(JUDGEWISDOM 53408)
+Define(AVENGERSSHIELD 31935)
+Define(AVENGINGWRATH 31884)
+	SpellInfo(AVENGINGWRATH cd=180)
 Define(CONSECRATE 26573)
-Define(DIVINESTORM 53385)
-Define(HAMMEROFWRATH 24275)
+	SpellInfo(CONSECRATE cd=8)
 Define(CRUSADERSTRIKE 35395)
-Define(HOLYSHOCK 20473)
-Define(THEARTOFWAR 59578)
-Define(FLASHOFLIGHT 19750)
+	SpellInfo(CRUSADERSTRIKE cd=4)
+Define(DIVINEPLEA 54428)
+	SpellInfo(DIVINEPLEA cd=60)
+	SpellAddBuff(DIVINEPLEA DIVINEPLEA=15)
+Define(DIVINEPROTECTION 498)
+Define(DIVINESTORM 53385)
 Define(EXORCISM 879)
-Define(AVENGINGWRATH 31884)
-Define(SHIELDOFRIGHTEOUSNESS 53600)
-Define(HOLYSHIELD 20925)
+	SpellAddBuff(EXORCISM THEARTOFWAR=0)
+Define(HAMMEROFWRATH 24275)
+	SpellInfo(HAMMEROFWRATH cd=6)
 Define(HAMMEROFTHERIGHTEOUS 53595)
+	SpellInfo(HAMMEROFTHERIGHTEOUS cd=6)
+Define(HOLYSHOCK 20473)
+	SpellInfo(HOLYSHOCK cd=6)
 Define(HOLYWRATH 2812)
-Define(TALENTGUARDEDBYTHELIGHT 2194)
-Define(DIVINEPLEA 54428)
+	SpellInfo(HOLYWRATH cd=30)
+Define(INQUISITION 84963)
+Define(JUDGEMENT 20271)
+Define(SEALRIGHTEOUSNESS 20154)
+	SpellAddBuff(SEALRIGHTEOUSNESS SEALRIGHTEOUSNESS=1800)
+Define(SEALOFTRUTH 31801)
+	SpellAddBuff(SEALOFTRUTH SEALOFTRUTH=1800)
+Define(SHIELDOFTHERIGHTEOUS 53600)
+	SpellInfo(SHIELDOFTHERIGHTEOUS cd=6)
+Define(TEMPLARSVERDICT 85256)
+Define(ZEALOTRY 85696)

-AddListItem(sceau none L(None))
-AddListItem(sceau piete SpellName(SEALRIGHTEOUSNESS))
-AddListItem(sceau autorite SpellName(SEALCOMMAND))
-AddListItem(sceau vengeance SpellName(SEALVENGEANCE) default)
-AddListItem(jugement lumiere SpellName(JUDGELIGHT))
-AddListItem(jugement sagesse SpellName(JUDGEWISDOM) default)
-AddCheckBox(consecration SpellName(CONSECRATE) checked)
-AddCheckBox(tempete SpellName(DIVINESTORM) checked)
-AddCheckBox(coleredivine SpellName(HOLYWRATH))
-ScoreSpells(SEALRIGHTEOUSNESS SEALCOMMAND SEALVENGEANCE SEALCORRUPTION HOLYSHIELD HAMMEROFTHERIGHTEOUS CRUSADERSTRIKE
-	HAMMEROFWRATH JUDGELIGHT JUDGEWISDOM DIVINESTORM CONSECRATE EXORCISM HOLYWRATH HOLYSHOCK SHIELDOFRIGHTEOUSNESS)
+#Buff
+Define(THEARTOFWAR 59578)
+
+AddCheckBox(aoe L(AOE))
+
+AddIcon help=main mastery=2
+{
+	unless InCombat() if BuffExpires(SEALRIGHTEOUSNESS 400) and BuffExpires(SEALOFTRUTH 400) Spell(SEALOFTRUTH)

-SpellAddBuff(EXORCISM THEARTOFWAR=0)
-SpellInfo(JUDGELIGHT cd=8 sharedcd=judge)
-SpellInfo(JUDGEWISDOM cd=8 sharedcd=judge)
-SpellInfo(HOLYSHIELD cd=10)
-SpellAddBuff(HOLYSHIELD HOLYSHIELD=10)
-SpellAddBuff(SEALVENGEANCE SEALVENGEANCE=1800)
-SpellAddBuff(SEALRIGHTEOUSNESS SEALRIGHTEOUSNESS=1800)
-SpellAddBuff(SEALCOMMAND SEALCOMMAND=1800)
-SpellAddBuff(SEALCORRUPTION SEALCORRUPTION=1800)
-SpellInfo(HAMMEROFTHERIGHTEOUS cd=6)
-SpellInfo(CRUSADERSTRIKE cd=4)
-SpellInfo(HAMMEROFWRATH cd=6)
-SpellInfo(DIVINESTORM cd=10)
-SpellInfo(SHIELDOFRIGHTEOUSNESS cd=6)
-SpellInfo(DIVINEPLEA cd=60)
-SpellAddBuff(DIVINEPLEA DIVINEPLEA=15)
-SpellInfo(CONSECRATE cd=8)
-SpellInfo(HOLYWRATH cd=30)
-SpellInfo(HOLYSHOCK cd=6)
-SpellInfo(AVENGINGWRATH cd=180)
+	if HolyPower(more 2) Spell(SHIELDOFTHERIGHTEOUS)
+	Spell(JUDGEMENT)
+	Spell(AVENGERSSHIELD)
+	Spell(HAMMEROFTHERIGHTEOUS)
+	if CheckBoxOn(aoe)
+	{
+		Spell(CONSECRATE)
+		Spell(HOLYWRATH)
+	}
+}

-AddIcon help=main
+AddIcon help=cd mastery=2
+{
+	Spell(AVENGINGWRATH)
+	Spell(DIVINEPROTECTION)
+    Item(Trinket0Slot usable=1)
+    Item(Trinket1Slot usable=1)
+}
+
+AddIcon help=main mastery=3
 {
 	unless InCombat()
 	{
-		if List(sceau piete) and BuffExpires(SEALRIGHTEOUSNESS 400) Spell(SEALRIGHTEOUSNESS)
-		if List(sceau autorite) and BuffExpires(SEALCOMMAND 400) Spell(SEALCOMMAND)
-		if List(sceau vengeance)
-		{
-			if BuffExpires(SEALVENGEANCE 400) Spell(SEALVENGEANCE)
-			if BuffExpires(SEALCORRUPTION 400) Spell(SEALCORRUPTION)
-		}
+		if BuffExpires(SEALRIGHTEOUSNESS 400) and BuffExpires(SEALOFTRUTH 400) Spell(SEALOFTRUTH)
 	}
-
-	if TargetTargetIsPlayer(yes) Spell(HOLYSHIELD)
-    Spell(HAMMEROFTHERIGHTEOUS)
-
-	Spell(CRUSADERSTRIKE)
-	Spell(HAMMEROFWRATH usable=1)
-	if List(jugement lumiere) Spell(JUDGELIGHT)
-	if List(jugement sagesse) Spell(JUDGEWISDOM)
-	if CheckBoxOn(tempete) Spell(DIVINESTORM)
-	if HasShield() Spell(SHIELDOFRIGHTEOUSNESS)
-	if TalentPoints(TALENTGUARDEDBYTHELIGHT more 0) and BuffExpires(DIVINEPLEA 0) Spell(DIVINEPLEA)
-	if CheckBoxOn(consecration) Spell(CONSECRATE)
+
+	if HolyPower(more 2) Spell(ZEALOTRY)
+    if HolyPower(more 0) and BuffExpires(INQUISITION) Spell(INQUISITION)
+	if CheckBoxOff(aoe) and HolyPower(more 2) Spell(TEMPLARSVERDICT)
+	if CheckBoxOn(aoe) and HolyPower(more 2) Spell(DIVINESTORM)
 	if BuffPresent(THEARTOFWAR) Spell(EXORCISM)
-	if CheckBoxOn(coleredivine) Spell(HOLYWRATH)
-
-	Spell(HOLYSHOCK)
-	if BuffPresent(THEARTOFWAR) Spell(FLASHOFLIGHT priority=2)
+	if TargetLifePercent(less 20) or BuffPresent(AVENGINGWRATH) Spell(HAMMEROFWRATH)
+	Spell(JUDGEMENT)
+	Spell(CRUSADERSTRIKE)
+	if CheckBoxOn(aoe) Spell(CONSECRATE)
+	if CheckBoxOn(aoe) Spell(HOLYWRATH)
 }

-AddIcon help=cd
+AddIcon help=cd mastery=3
 {
-     Spell(AVENGINGWRATH)
-     Item(Trinket0Slot usable=1)
-     Item(Trinket1Slot usable=1)
+	Spell(AVENGINGWRATH)
+    Item(Trinket0Slot usable=1)
+    Item(Trinket1Slot usable=1)
 }
 ]]
diff --git a/defaut/Pretre.lua b/defaut/Pretre.lua
index c1615b2..28fc05e 100644
--- a/defaut/Pretre.lua
+++ b/defaut/Pretre.lua
@@ -1,92 +1,69 @@
 Ovale.defaut["PRIEST"] =
 [[
-# Define constants for easier addressing of spells
-Define(SWP 589) # Shadow Word: Pain
-Define(VT 34916) # Vampiric Touch
-Define(VE 15286) # Vampiric Embrace
-Define(SF 15473) # Shadowform
-Define(MF 15407) # Mind Flay
-Define(MB 8092) # Mind Blast
-Define(DP 2944) # Devouring Plague
-Define(SW 15257) # Shadow Weaving
-Define(IF 48168) # Inner Fire
-Define(Focus 14751) # Inner Focus
-Define(Dispersion 47585)
-Define(Shadowfiend 34433)
-Define(Bloodlust 2825)
-Define(Heroism 32182)
+#Spells
+Define(DEVOURINGPLAGUE 2944) # Devouring Plague
+	SpellInfo(DEVOURINGPLAGUE duration=24 durationhaste=spell)
+	SpellAddTargetDebuff(DEVOURINGPLAGUE DEVOURINGPLAGUE=24)
+Define(DISPERSION 47585)
+	SpellInfo(DISPERSION cd=120)
+Define(INNERFIRE 48168) # Inner Fire
+	SpellAddBuff(INNERFIRE INNERFIRE=1800)
+Define(MINDBLAST 8092) # Mind Blast
+	SpellInfo(MINDBLAST cd=5.5)
+	SpellAddBuff(MINDBLAST SHADOWORB=0)
+Define(MINDLFAY 15407) # Mind Flay
+	SpellInfo(MINDLFAY canStopChannelling=3)
+Define(SHADOWFIEND 34433)
+	SpellInfo(SHADOWFIEND cd=300)
+Define(SHADOWFORM 15473) # Shadowform
+Define(SHADOWWORDPAIN 589) # Shadow Word: Pain
+	SpellInfo(SHADOWWORDPAIN duration=18)
+	SpellAddTargetDebuff(SHADOWWORDPAIN SHADOWWORDPAIN=18)
+Define(VAMPIRICEMBRACE 15286) # Vampiric Embrace
+Define(VAMPIRICTOUCH 34914) # Vampiric Touch
+	SpellInfo(VAMPIRICTOUCH duration=15 durationhaste=spell)
+	SpellAddTargetDebuff(VAMPIRICTOUCH VAMPIRICTOUCH=15)

+#Buff
+Define(SHADOWORB 77487)
+
 AddCheckBox(multidot L(multidot))

-# Spells with cast time that add buff or debuff
-SpellAddTargetDebuff(SWP SWP=18)
-SpellInfo(SWP duration=18)
-SpellAddBuff(SWP SW=15)
-SpellAddTargetDebuff(VT VT=15)
-SpellInfo(VT duration=15 durationhaste=spell)
-SpellAddBuff(VT SW=15)
-SpellInfo(MF canStopChannelling=3)
-SpellAddBuff(MF SW=15)
-SpellInfo(MB cd=5.5)
-SpellAddBuff(MB SW=15)
-SpellAddBuff(IF IF=1800)
-SpellAddTargetDebuff(DP DP=24)
-SpellInfo(DP duration=24 durationhaste=spell)
-SpellInfo(Focus cd=180)
-SpellInfo(Dispersion cd=120)
-SpellInfo(Shadowfiend cd=300)
-ScoreSpells(MB SWP VT DP MF)
+ScoreSpells(MINDBLAST SHADOWWORDPAIN VAMPIRICTOUCH DEVOURINGPLAGUE MINDLFAY)

 # Add main monitor
-AddIcon help=main
+AddIcon help=main mastery=3
 {
-unless InCombat()
-{
-	#Check shadowform is up
-	unless BuffPresent(SF)
-		Spell(SF)
-
-	# Refresh inner fire
-	if BuffExpires(IF 400)
-		Spell(IF)
-
-	if BuffExpires(VE 400)
-		Spell(VE)
-}
+	unless InCombat()
+	{
+		#Check shadowform is up
+		unless BuffPresent(SHADOWFORM)
+			Spell(SHADOWFORM)
+
+		# Refresh inner fire
+		if BuffExpires(INNERFIRE 400)
+			Spell(INNERFIRE)
+
+		if BuffExpires(VAMPIRICEMBRACE 400)
+			Spell(VAMPIRICEMBRACE)
+	}

-#if inner focus is active, cast mind blast
-if BuffPresent(Focus)
-    Spell(MB)
-
-# Check if Shadow Weave is stacked 5 times
-# before suggesting Shadow Word: Pain
-if BuffPresent(SW stacks=5) and TargetDebuffExpires(SWP 0 mine=1) and TargetDeadIn(more 6)
-{
-   Spell(SWP)
-}
-
-#Refresh VT
-if TargetDebuffExpires(VT 1 mine=1 haste=spell) and TargetDeadIn(more 8)
-	Spell(VT)
-
-#cast MB if up
-unless BuffPresent(Heroism) or BuffPresent(Bloodlust)
-	Spell(MB)
+
+	if TargetDebuffExpires(SHADOWWORDPAIN 2 mine=1) and TargetDeadIn(more 6) Spell(SHADOWWORDPAIN)
+	if TargetDebuffExpires(VAMPIRICTOUCH 3 mine=1 haste=spell) and TargetDeadIn(more 8) Spell(VAMPIRICTOUCH)
+	if BuffPresent(SHADOWORB stacks=3) Spell(MINDBLAST)

-#Refresh devouring plague
-unless CheckBoxOn(multidot) and OtherDebuffPresent(DP)
-{
-	if TargetDebuffExpires(DP 0 mine=1) and TargetDeadIn(more 8)
-		Spell(DP)
-}
-
-if CheckBoxOn(multidot) and OtherDebuffExpires(SWP)
-	Texture(INV_Misc_Coin_01)
+	unless CheckBoxOn(multidot) and OtherDebuffPresent(DEVOURINGPLAGUE)
+	{
+		if TargetDebuffExpires(DEVOURINGPLAGUE 2 mine=1) and TargetDeadIn(more 8)
+			Spell(DEVOURINGPLAGUE)
+	}

-#cast Mind flay if nothing else can be done
-Spell(MF priority=2)
+	if CheckBoxOn(multidot) and OtherDebuffExpires(SHADOWWORDPAIN)
+		Texture(INV_Misc_Coin_01)

-} # End of main monitor
+	Spell(MINDLFAY priority=2)
+}

 AddIcon help=cd
 {
@@ -95,21 +72,18 @@ AddIcon help=cd
 }

 # Add mana monitor
-AddIcon help=mana {
-
-#if up, launch focus (and then MB since it's the first priority)
-Spell(Focus usable=1)
-
-#Regain mana if needed and if shadowfiend is not already out
-if Mana(less 4000) and PetPresent(no)
+AddIcon help=mana mastery=3
 {
-    Spell(Shadowfiend usable=1)
-    unless TargetDebuffExpires(VT 6 mine=1 haste=spell) Spell(Dispersion usable=1)
-}
+	#Regain mana if needed and if shadowfiend is not already out
+	if Mana(less 4000) and PetPresent(no)
+	{
+		Spell(SHADOWFIEND usable=1)
+		unless TargetDebuffExpires(VAMPIRICTOUCH 6 mine=1 haste=spell) Spell(DISPERSION usable=1)
+	}
 }

-# Add icons to monitor debuffs (will show up 5 secs before elapsed)
-AddIcon size=small nocd=1 {if TargetDebuffExpires(VT 1.4 mine=1 haste=spell) Spell(VT) } # Vampiric Touch
-AddIcon size=small nocd=1 {if TargetDebuffExpires(SWP 1 mine=1) Spell(SWP) } # Shadow Word: Pain
-AddIcon size=small nocd=1 {if TargetDebuffExpires(DP 1 mine=1) Spell(DP) }
+# Add icons to monitor debuffs
+AddIcon size=small nocd=1 {if TargetDebuffExpires(VAMPIRICTOUCH 1.4 mine=1 haste=spell) Spell(VAMPIRICTOUCH) } # Vampiric Touch
+AddIcon size=small nocd=1 {if TargetDebuffExpires(SHADOWWORDPAIN 1 mine=1) Spell(SHADOWWORDPAIN) } # Shadow Word: Pain
+AddIcon size=small nocd=1 {if TargetDebuffExpires(DEVOURINGPLAGUE 1 mine=1) Spell(DEVOURINGPLAGUE) }
 ]]