Quantcast

updated scripts from simulationcraft (except mage scripts)

Sidoine De Wispelaere [03-05-11 - 16:31]
updated scripts from simulationcraft (except mage scripts)
added charges option to ItemCount condition
added warlock T11


git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@360 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Filename
Condition.lua
Ovale.toc
OvaleCompile.lua
OvaleEquipement.lua
defaut/Chasseur.lua
defaut/Chevalier.lua
defaut/Demoniste.lua
defaut/Druide.lua
defaut/Guerrier.lua
defaut/Mage.lua
defaut/Paladin.lua
diff --git a/Condition.lua b/Condition.lua
index 85bbe09..b0c7235 100644
--- a/Condition.lua
+++ b/Condition.lua
@@ -608,7 +608,11 @@ Ovale.conditions=
 		return testbool(IsSpellInRange(spellName,getTarget(condition.target))==1,condition[2])
 	end,
 	ItemCount = function(condition)
-		return compare(GetItemCount(condition[1]), condition[2], condition[3])
+		if condition.charges == 1 then
+			return compare(GetItemCount(condition[1], false, true), condition[2], condition[3])
+		else
+			return compare(GetItemCount(condition[1]), condition[2], condition[3])
+		end
 	end,
 	IsCasting = function(condition)
 		local casting
@@ -910,7 +914,7 @@ Ovale.conditions=
 		return 0, getTargetDead(getTarget(condition.target)), -1
 	end,
 	timeWithHaste = function(condition)
-		return avecHate(condition[1], "spell")
+		return avecHate(condition[1], "spell"),0,0
 	end,
 	TotemExpires = function(condition)
 		local haveTotem, totemName, startTime, duration = GetTotemInfo(totemType[condition[1]])
diff --git a/Ovale.toc b/Ovale.toc
index 8bc7d64..0e2f8ff 100644
--- a/Ovale.toc
+++ b/Ovale.toc
@@ -3,7 +3,7 @@
 ## Notes: Show the icon of the next spell to cast
 ## Notes-frFR: Affiche l'icône du prochain sort à lancer
 ## Author: Sidoine
-## Version: 4.0.24
+## Version: 4.0.25
 ## OptionalDeps: Ace3, ButtonFacade, Recount, Skada, LibBabble-CreatureType-3.0, LibRangeCheck-2.0
 ## SavedVariables: OvaleDB
 ## SavedVariablesPerCharacter: OvaleDBPC
diff --git a/OvaleCompile.lua b/OvaleCompile.lua
index fa09152..5054dc0 100644
--- a/OvaleCompile.lua
+++ b/OvaleCompile.lua
@@ -295,6 +295,7 @@ local function ParseAddIcon(params, text)
 		text = string.gsub(text, "node(%d+)%s+before%s+node(%d+)", ParseBefore)
 		text = string.gsub(text, "node(%d+)%s+after%s+node(%d+)", ParseAfter)
 		text = string.gsub(text, "([^%w])(%d+%.?%d*)", ParseNumber)
+		text = string.gsub(text, "node(%d+)%s*([%*%+%-%/%>%<])%s*node(%d+)", ParseOp)
 		if (was == text) then
 			break
 		end
diff --git a/OvaleEquipement.lua b/OvaleEquipement.lua
index d4fd196..171d3c1 100644
--- a/OvaleEquipement.lua
+++ b/OvaleEquipement.lua
@@ -43,6 +43,17 @@ local itemTier =
 	[65266] = "T11",
 	[65267] = "T11",
 	[65268] = "T11",
+	--Warlock
+	[65263] = "T11",
+	[65262] = "T11",
+	[65261] = "T11",
+	[65260] = "T11",
+	[65259] = "T11",
+	[65252] = "T11",
+	[65251] = "T11",
+	[65250] = "T11",
+	[65249] = "T11",
+	[65248] = "T11",
 }

 local itemSlots = {"HeadSlot", "ShoulderSlot", "ChestSlot", "HandsSlot", "LegsSlot"}
diff --git a/defaut/Chasseur.lua b/defaut/Chasseur.lua
index 2a0b77f..6b1b868 100644
--- a/defaut/Chasseur.lua
+++ b/defaut/Chasseur.lua
@@ -52,6 +52,9 @@ Define(MARKEDFORDEATH 88691)
 Define(FIRE 82926)
 Define(BEASTWITHIN 34692)

+#Glyphs
+Define(GLYPHOFARCANESHOT 56841)
+
 AddCheckBox(multi SpellName(MULTISHOT))
 ScoreSpells(FOCUSFIRE KILLCOMMAND ARCANESHOT KILLSHOT STEADYSHOT SERPENTSTING
 			CHIMERASHOT AIMEDSHOT
@@ -84,6 +87,7 @@ AddIcon help=main mastery=1

 AddIcon help=offgcd mastery=1
 {
+	Spell(CALLOFTHEWILD usable=1)
 	#/focus_fire,five_stacks=1,if=!buff.beast_within.up
 	if pet.BuffPresent(FRENZYEFFECT stacks=5) and BuffExpires(BEASTWITHIN 0) Spell(FOCUSFIRE)
 }
@@ -91,6 +95,7 @@ AddIcon help=offgcd mastery=1
 AddIcon help=cd mastery=1
 {
 	unless BuffPresent(ASPECTOFTHEHAWK) or BuffPresent(ASPECTOFTHEFOX) Spell(ASPECTOFTHEHAWK)
+	if TargetDebuffExpires(HUNTERSMARK 2) and TargetDebuffExpires(MARKEDFORDEATH 0) and TargetDeadIn(more 20) Spell(HUNTERSMARK nored=1)
 	#/bestial_wrath,if=focus>60
 	if Mana(more 60) Spell(BESTIALWRATH usable=1)
 	#/rapid_fire,if=!buff.bloodlust.up&!buff.beast_within.up
@@ -110,37 +115,67 @@ AddIcon help=main mastery=2
 	}

 	#/serpent_sting,if=!ticking&target.health_pct<=80
-    if Mana(more 24) and TargetDebuffExpires(SERPENTSTING 0 mine=1) and TargetDeadIn(more 8) and TargetLifePercent(less 90) Spell(SERPENTSTING)
-	if TargetDebuffPresent(SERPENTSTING) and Mana(more 49) Spell(CHIMERASHOT)
-    if TargetLifePercent(less 20) Spell(KILLSHOT)
+    if Mana(more 24) and TargetDebuffExpires(SERPENTSTING 0 mine=1) and TargetDeadIn(more 8) and TargetLifePercent(less 80) Spell(SERPENTSTING)
+	#/chimera_shot,if=target.health_pct<=80
+	if Mana(more 49) and TargetLifePercent(less 80) Spell(CHIMERASHOT)
+	#/steady_shot,if=buff.pre_improved_steady_shot.up&buff.improved_steady_shot.remains<3
+	if Mana(less 40) or Counter(ss equal 1) Spell(STEADYSHOT)
+	#/kill_shot
+	if TargetLifePercent(less 20) Spell(KILLSHOT)
+	#/aimed_shot,if=buff.master_marksman_fire.react
 	if BuffPresent(FIRE) Spell(AIMEDSHOT)
-    if Mana(less 40) or Counter(ss equal 1) Spell(STEADYSHOT)
-    if CheckBoxOn(multi) Spell(MULTISHOT)
-    unless 1.6s before Spell(CHIMERASHOT) Spell(ARCANESHOT)
-    if Mana(more 66) Spell(ARCANESHOT)
-    unless 0.25s before Spell(CHIMERASHOT) Spell(STEADYSHOT)
+	if Glyph(GLYPHOFARCANESHOT)
+	{
+		#/aimed_shot,if=target.health_pct>80|buff.rapid_fire.up|buff.bloodlust.up
+		if TargetLifePercent(more 80) or BuffPresent(RAPIDFIRE) or BuffPresent(heroism) if Mana(more 49) Spell(AIMEDSHOT)
+        #/arcane_shot,if=(focus>=66|cooldown.chimera_shot.remains>=5)&(target.health_pct<80&!buff.rapid_fire.up&!buff.bloodlust.up)
+		if {Mana(more 65) or spell(CHIMERASHOT)>5} and {TargetLifePercent(less 80) and BuffExpires(RAPIDFIRE) and BuffExpires(heroism)}
+			if Mana(more 24) Spell(ARCANESHOT)
+	}
+	else
+	{
+		#/aimed_shot,if=cooldown.chimera_shot.remains>5|focus>=80|buff.rapid_fire.up|buff.bloodlust.up|target.health_pct>80
+		if spell(CHIMERASHOT)>5 or Mana(more 79) or BuffPresent(RAPIDFIRE) or BuffPresent(heroism) or TargetLifePercent(more 80)
+			if Mana(more 49) Spell(AIMEDSHOT)
+	}
+	#/steady_shot
+	Spell(STEADYSHOT)
 }

-AddIcon help=cd mastery=1
+AddIcon help=cd mastery=2
 {
 	unless BuffPresent(ASPECTOFTHEHAWK) or BuffPresent(ASPECTOFTHEFOX) Spell(ASPECTOFTHEHAWK)
-	#/rapid_fire
-	Spell(RAPIDFIRE)
+	if TargetDebuffExpires(HUNTERSMARK 2) and TargetDebuffExpires(MARKEDFORDEATH 0) and TargetDeadIn(more 20) Spell(HUNTERSMARK nored=1)
+	#/rapid_fire,if=!buff.bloodlust.up|target.time_to_die<=30
+	unless BuffPresent(heroism) or BuffPresent(RAPIDFIRE) Spell(RAPIDFIRE)
+	#/readiness,wait_for_rapid_fire=1
+	if BuffPresent(RAPIDFIRE) Spell(READINESS)
+	Spell(CALLOFTHEWILD usable=1)
 	Item(Trinket0Slot usable=1)
 	Item(Trinket1Slot usable=1)
 }

 AddIcon help=main mastery=3
 {
-    if Mana(more 24) and TargetDebuffExpires(SERPENTSTING 0 mine=1) and TargetDeadIn(more 8) Spell(SERPENTSTING)
+ 	if CheckBoxOn(multi)
+	{
+		#/multi_shot,if=target.adds>5
+		if Mana(more 56) Spell(MULTISHOT)
+		#/cobra_shot,if=target.adds>5
+		Spell(STEADYSHOT)
+	}
+
+	#/serpent_sting,if=!ticking
+	if Mana(more 24) and TargetDebuffExpires(SERPENTSTING 0 mine=1) and TargetDeadIn(more 8) Spell(SERPENTSTING)
+	#/explosive_shot,if=!ticking&!in_flight
     if TargetDebuffExpires(EXPLOSIVESHOT 0 mine=1) Spell(EXPLOSIVESHOT)
+	#/black_arrow,if=!ticking
     if Mana(more 35) and TargetDebuffExpires(BLACKARROW 0 mine=1) Spell(BLACKARROW)
+	#/kill_shot
     if TargetLifePercent(less 20) Spell(KILLSHOT)
-    if Mana(more 70) and BuffExpires(LOCKANDLOAD)
-	{
-		if CheckBoxOn(multi) Spell(MULTISHOT)
-		Spell(ARCANESHOT)
-	}
+	#/arcane_shot,if=focus>=70&buff.lock_and_load.down
+    if Mana(more 69) and BuffExpires(LOCKANDLOAD) Spell(ARCANESHOT)
+	#/cobra_shot
     Spell(COBRASHOT)
 	Spell(STEADYSHOT)
 }
@@ -150,10 +185,9 @@ AddIcon help=cd mastery=3
 {
 	unless BuffPresent(ASPECTOFTHEHAWK) or BuffPresent(ASPECTOFTHEFOX) Spell(ASPECTOFTHEHAWK)
 	if TargetDebuffExpires(HUNTERSMARK 2) and TargetDebuffExpires(MARKEDFORDEATH 0) and TargetDeadIn(more 20) Spell(HUNTERSMARK nored=1)
-	Item(Trinket0Slot usable=1)
-	Item(Trinket1Slot usable=1)
 	Spell(CALLOFTHEWILD usable=1)
 	unless BuffPresent(heroism) Spell(RAPIDFIRE)
-	Spell(READINESS)
+	Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
 }
 ]]
diff --git a/defaut/Chevalier.lua b/defaut/Chevalier.lua
index b5054bf..43e73d0 100644
--- a/defaut/Chevalier.lua
+++ b/defaut/Chevalier.lua
@@ -12,7 +12,7 @@ Define(BONESHIELD 49222) #blood
 	SpellAddBuff(BONESHIELD BONESHIELD=300)
 Define(DANCINGRUNEWEAPON 49028) #blood
 Define(DARKTRANSFORMATION 63560) #unholy
-Define(DEATHANDECAY 43265)
+Define(DEATHANDDECAY 43265)
 Define(DEATHCOIL 47541)
 Define(DEATHPACT 48743)
 Define(DEATHSTRIKE 49998)
@@ -85,6 +85,7 @@ Define(RUNICCORRUPTION 51459)

 AddCheckBox(horn SpellName(HORNOFWINTER))
 AddCheckBox(scarlet SpellName(SCARLETFEVER) mastery=1 default)
+AddCheckBox(dnd SpellName(DEATHANDDECAY) mastery=3 default)

 ScoreSpells(HOWLINGBLAST HEARTSTRIKE BLOODSTRIKE DEATHSTRIKE SCOURGESTRIKE OBLITERATE HEARTSTRIKE
 				PESTILENCE ICYTOUCH PLAGUESTRIKE FROSTSTRIKE DEATHCOIL)
@@ -111,7 +112,7 @@ AddIcon help=aoe mastery=1
 {
 	if BuffExpires(strengthagility 2) and CheckBoxOn(horn) Spell(HORNOFWINTER)

-	if Runes(unholy 1) Spell(DEATHANDECAY usable=1)
+	if Runes(unholy 1) Spell(DEATHANDDECAY usable=1)

 	if TargetDebuffExpires(BLOODPLAGUE 0 mine=1) and TargetDebuffExpires(FROSTFEVER 0 mine=1) Spell(OUTBREAK)
 	if TargetDebuffExpires(FROSTFEVER 0 mine=1) and Runes(frost 1) Spell(ICYTOUCH)
@@ -132,40 +133,64 @@ AddIcon help=aoe mastery=1
 	if Mana(more 39) Spell(DEATHCOIL usable=1)
 }

+AddIcon help=cd mastery=1
+{
+	unless BuffPresent(BONESHIELD) Spell(BONESHIELD)
+	unless TotemPresent(ghoul) Spell(RAISEDEAD)
+	if TotemPresent(ghoul) and LifePercent(less 61) and Mana(more 39) Spell(DEATHPACT)
+	Spell(VAMPIRICBLOOD)
+	Spell(RUNETAP)
+	Spell(UNBREAKABLEARMOR)
+	Spell(ICEBOUNDFORTITUDE)
+}
+
 AddIcon help=main mastery=2
 {
 	if BuffExpires(strengthagility 2) and CheckBoxOn(horn) Spell(HORNOFWINTER)

-	Spell(PILLAROFFROST)
-	if BuffPresent(FREEZINGFOG) Spell(HOWLINGBLAST)
-
+	#/pillar_of_frost
+	if Runes(frost 1) Spell(PILLAROFFROST)
+	#/outbreak,if=dot.frost_fever.remains<=2|dot.blood_plague.remains<=2
 	if TargetDebuffExpires(BLOODPLAGUE 2 mine=1) and TargetDebuffExpires(FROSTFEVER 2 mine=1) Spell(OUTBREAK)
+	#/howling_blast,if=dot.frost_fever.remains<=2
 	if TargetDebuffExpires(FROSTFEVER 2 mine=1) and Runes(frost 1)
 	{
+		#/howling_blast,if=dot.frost_fever.remains<=2
 		if Glyph(GLYPHHOWLINGBLAST) Spell(HOWLINGBLAST)
 		unless Glyph(GLYPHHOWLINGBLAST) Spell(ICYTOUCH)
 	}

-	if PetPresent(no) Spell(RAISEDEAD priority=2)
-
+	#/plague_strike,if=dot.blood_plague.remains<=2
 	if TargetDebuffExpires(BLOODPLAGUE 2 mine=1) and Runes(unholy 1) Spell(PLAGUESTRIKE)
-
+	#/obliterate,if=frost=2&unholy=2
+	#/obliterate,if=death=2
 	if Runes(unholy 2 frost 2 nodeath=1) or Runes(death 2) Spell(OBLITERATE)
+	#/obliterate,if=buff.killing_machine.react
 	if BuffPresent(KILLINGMACHINE) and Runes(unholy 1 frost 1) Spell(OBLITERATE)
-	Spell(FROSTSTRIKE usable=1)
+	#/blood_tap
+	unless Runes(frost 1 unholy 1) Spell(BLOODTAP priority=2)
+	#/blood_strike,if=blood=2
 	if Runes(blood 2) Spell(BLOODSTRIKE)
+	#/frost_strike,if=runic_power>=90
+	if Mana(more 89) Spell(FROSTSTRIKE)
+	#/howling_blast,if=buff.rime.react
+	if BuffPresent(FREEZINGFOG) Spell(HOWLINGBLAST)
+	#/obliterate
 	if Runes(unholy 1 frost 1) Spell(OBLITERATE)
+	#/blood_strike
 	if Runes(blood 1) Spell(BLOODSTRIKE)
-
-	unless Runes(frost 1 unholy 1) Spell(BLOODTAP priority=2)
+	#/frost_strike
+	Spell(FROSTSTRIKE usable=1)
+	#/empower_rune_weapon
 	Spell(EMPOWERRUNEWEAPON priority=2)
+	#/horn_of_winter
 	if CheckBoxOn(horn) Spell(HORNOFWINTER priority=2)
 }

 AddIcon help=aoe mastery=2
 {
 	if Runes(unholy 1 frost 1) Spell(HOWLINGBLAST)
-	if Runes(unholy 1) Spell(DEATHANDECAY usable=1)
+	if Runes(unholy 1) Spell(DEATHANDDECAY usable=1)
 	if Runes(blood 1)
 	{
 		if TargetDebuffPresent(BLOODPLAGUE) and TargetDebuffPresent(FROSTFEVER)
@@ -177,34 +202,60 @@ AddIcon help=aoe mastery=2
 	}
 }

+AddIcon help=cd mastery=2
+{
+	#/raise_dead,time>=5
+	unless TotemPresent(ghoul) if TimeInCombat(more 5) Spell(RAISEDEAD priority=2)
+	Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
+}
+
 #Contributed by vitos
 AddIcon help=main mastery=3
 {
 	if BuffExpires(strengthagility 2) and CheckBoxOn(horn) Spell(HORNOFWINTER)
-	#if TargetDebuffExpires(BLOODPLAGUE 0 mine=1) and TargetDebuffExpires(FROSTFEVER 0 mine=1) Spell(OUTBREAK)
-	if TargetDebuffExpires(BLOODPLAGUE 3 mine=1) and Runes(unholy 1) Spell(PLAGUESTRIKE)
+	#/outbreak,if=dot.frost_fever.remains<=2|dot.blood_plague.remains<=2
+	if TargetDebuffExpires(BLOODPLAGUE  mine=1) and TargetDebuffExpires(FROSTFEVER 2 mine=1) Spell(OUTBREAK)
+	#/icy_touch,if=dot.frost_fever.remains<3
 	if TargetDebuffExpires(FROSTFEVER 3 mine=1) and Runes(frost 1) Spell(ICYTOUCH)
+	#/plague_strike,if=dot.blood_plague.remains<3
+	if TargetDebuffExpires(BLOODPLAGUE 3 mine=1) and Runes(unholy 1) Spell(PLAGUESTRIKE)
+	#/dark_transformation
 	if Runes(unholy 1) and pet.BuffPresent(SHADOWINFUSION stacks=5) Spell(DARKTRANSFORMATION)
+	#/death_and_decay,if=death=4
+	#/death_and_decay,if=unholy=2
+	if Runes(death 4) or Runes(unholy 2) if CheckBoxOn(dnd) Spell(DEATHANDDECAY)
+	#/scourge_strike,if=death=4
+    #/scourge_strike,if=unholy=2
 	if Runes(death 4) or Runes(unholy 2) Spell(SCOURGESTRIKE)
+	#/festering_strike,if=blood=2&frost=2
 	if Runes(blood 2 frost 2 nodeath=1) Spell(FESTERINGSTRIKE)
-#	if Runes(death 4) or Runes(unholy 2) Spell(DEATHANDECAY)
 	unless BuffPresent(RUNICCORRUPTION mine=1)
 	{
-		if BuffPresent(SUDDENDOOM mine=1) Spell(DEATHCOIL usable=1)
+		#/death_coil,if=runic_power>90
 		if Mana(more 90) Spell(DEATHCOIL usable=1)
+		#/death_coil,if=buff.sudden_doom.react
+		if BuffPresent(SUDDENDOOM) Spell(DEATHCOIL usable=1)
 	}
+	#/death_and_decay
+	if Runes(unholy 1) and CheckBoxOn(dnd) Spell(DEATHANDDECAY)
+	#/scourge_strike
 	if Runes(unholy 1) Spell(SCOURGESTRIKE)
+	#/festering_strike
 	if Runes(blood 1 frost 1 nodeath=1) Spell(FESTERINGSTRIKE)
-#	if Runes(unholy 1) Spell(DEATHANDECAY)
+	#/death_coil
 	if Mana(more 54) Spell(DEATHCOIL usable=1)
+	#/blood_tap,if=unholy=0&inactive_death=1
 	unless Runes(unholy 1) Spell(BLOODTAP priority=2)
+	#/empower_rune_weapon,if=unholy=0
 	unless Runes(unholy 1) Spell(EMPOWERRUNEWEAPON priority=2)
+	#/horn_of_winter
 	Spell(HORNOFWINTER)
 }

 AddIcon help=aoe mastery=3
 {
-	if Runes(unholy 1) Spell(DEATHANDECAY usable=1)
+	if Runes(unholy 1) Spell(DEATHANDDECAY usable=1)
 	if Runes(blood 1)
 	{
 		if TargetDebuffPresent(BLOODPLAGUE) and TargetDebuffPresent(FROSTFEVER)
@@ -216,17 +267,8 @@ AddIcon help=aoe mastery=3
 	}
 }

-AddIcon help=cd
+AddIcon help=cd mastery=3
 {
-	unless BuffPresent(BONESHIELD) Spell(BONESHIELD)
-	if BuffPresent(BLOODPRESENCE)
-	{
-		if TotemPresent(ghoul) and LifePercent(less 61) and Mana(more 39) Spell(DEATHPACT)
-		Spell(VAMPIRICBLOOD)
-		Spell(RUNETAP)
-		Spell(UNBREAKABLEARMOR)
-		Spell(ICEBOUNDFORTITUDE)
-	}
 	if PetPresent(no) Spell(RAISEDEAD)
 	Spell(SUMMONGARGOYLE)
 	Item(Trinket0Slot usable=1)
diff --git a/defaut/Demoniste.lua b/defaut/Demoniste.lua
index 37d7e38..db7c305 100644
--- a/defaut/Demoniste.lua
+++ b/defaut/Demoniste.lua
@@ -21,6 +21,7 @@ Define(DEMONARMOR 687)
 Define(DEMONICEMPOWERMENT 47193)
 Define(DEMONSOUL 77801)
 Define(DRAINLIFE 689)
+	SpellInfo(DRAINLIFE canStopChannelling=3)
 Define(DRAINSOUL 1120)
 	SpellInfo(DRAINSOUL canStopChannelling=5)
 Define(FELARMOR 28176)
@@ -34,6 +35,8 @@ Define(IMMOLATE 348)
 	SpellInfo(IMMOLATE duration=15)
 	SpellAddTargetDebuff(IMMOLATE IMMOLATE=15)
 	SpellAddBuff(IMMOLATE MOLTENCORE=-1)
+Define(IMMOLATIONAURA 50589)
+	SpellInfo(IMMOLATIONAURA cd=30)
 Define(INCINERATE 29722)
 	SpellAddBuff(INCINERATE MOLTENCORE=-1)
 Define(LIFETAP 1454)
@@ -44,6 +47,7 @@ Define(SHADOWBOLT 686)
 	SpellAddTargetDebuff(SHADOWBOLT SHADOWEMBRACE=12)
 	SpellAddTargetDebuff(SHADOWBOLT SHADOWANDFLAMEDEBUFF=30)
 Define(SHADOWBURN 17877)
+Define(SHADOWFLAME 47897)
 Define(SOULFIRE 6353)
 	SpellAddBuff(SOULFIRE IMPROVEDSOULFIREBUFF=15)
 Define(SOULBURN 74434)
@@ -70,6 +74,12 @@ Define(SHADOWANDFLAMEDEBUFF 17800)
 #Talent
 Define(IMPROVEDSOULFIRE 11197)
 Define(SHADOWANDFLAMETALENT 10936)
+Define(BANETALENT 10938)
+Define(EMBERSTORMTALENT 11181)
+
+#Glyph
+Define(GLYPHOFLASHOFPAIN 70947)
+Define(GLYPHOFIMP 56248)

 AddListItem(curse elements SpellName(CURSEELEMENTS))
 AddListItem(curse tongues SpellName(CURSETONGUES))
@@ -78,8 +88,7 @@ AddListItem(curse none L(None) default)
 AddListItem(bane agony SpellName(BANEOFAGONY))
 AddListItem(bane doom SpellName(BANEOFDOOM) default)
 AddListItem(bane havoc SpellName(BANEOFHAVOC) mastery=3)
-AddListItem(afflic shadow SpellName(SHADOWBOLT) default mastery=1)
-AddListItem(afflic drain SpellName(DRAINLIFE) mastery=1)
+AddCheckBox(shadowflame SpellName(SHADOWFLAME) default)

 ScoreSpells(CURSEELEMENTS SHADOWBOLT HAUNT UNSTABLEAFFLICTION IMMOLATE CONFLAGRATE CURSEWEAKNESS
 	BANEOFAGONY CORRUPTION SOULFIRE DRAINSOUL INCINERATE SHADOWBOLT CHAOSBOLT)
@@ -91,23 +100,72 @@ AddIcon help=main mastery=1
 	if List(curse elements) and TargetDebuffExpires(magicaldamagetaken 0) 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)
+	#unless Glyph(GLYPHOFLASHOFPAIN) Spell(DEMONSOUL)
+	#/corruption,if=(!ticking|remains<tick_time)&miss_reac
+	if TargetDebuffExpires(CORRUPTION 3 haste=spell mine=1) and TargetDebuffExpires(SEEDOFCORRUPTION 0 mine=1) Spell(CORRUPTION)
+	#/unstable_affliction,if=(!ticking|remains<(cast_time+tick_time))&target.time_to_die>=5&miss_react
+	if TargetDebuffExpires(UNSTABLEAFFLICTION 4.5 mine=1 haste=spell) and TargetDeadIn(more 5) Spell(UNSTABLEAFFLICTION)
+	#/bane_of_doom,if=target.time_to_die>15&!ticking&miss_react
 	if TargetDebuffExpires(BANEOFDOOM 0 mine=1) and TargetDebuffExpires(BANEOFAGONY 0 mine=1)
 	{
-		if List(bane doom) and TargetDeadIn(more 20) Spell(BANEOFDOOM)
+		if List(bane doom) and TargetDeadIn(more 15) Spell(BANEOFDOOM)
 		if TargetDeadIn(more 10) Spell(BANEOFAGONY)
 	}
-	if TargetDebuffExpires(CORRUPTION 2 mine=1) and TargetDebuffExpires(SEEDOFCORRUPTION 0 mine=1) and TargetDeadIn(more 9) Spell(CORRUPTION)
-	if TargetDebuffExpires(UNSTABLEAFFLICTION 1.5 mine=1 haste=spell) and TargetDeadIn(more 8) Spell(UNSTABLEAFFLICTION)
+	#/haunt
+	if TargetDebuffExpires(HAUNT 1.5 mine=1 haste=spell) Spell(HAUNT)
+	#/fel_flame,if=buff.tier11_4pc_caster.react&dot.unstable_affliction.remains<8
+	if ArmorSetParts(T11 more 3) and TargetDebuffExpires(UNSTABLEAFFLICTION 8) Spell(FELFLAME)
+	#/shadowflame
+	if CheckBoxOn(shadowflame) Spell(SHADOWFLAME)
+	#/drain_soul,interrupt=1,if=target.health_pct<=25
 	if TargetLifePercent(less 25) Spell(DRAINSOUL)
-	if List(afflic drain) and BuffPresent(SHADOWTRANCE) Spell(SHADOWBOLT)
-    if List(afflic shadow) Spell(SHADOWBOLT)
-    if List(afflic drain) Spell(DRAINLIFE)
+
+	if TalentPoints(BANETALENT more 2)
+	{
+		#/life_tap,mana_percentage<=35
+		if ManaPercent(less 35) and LifePercent(more 75) Spell(LIFETAP)
+		#/soulburn
+		if SoulShards(more 0) Spell(SOULBURN)
+		if TalentPoints(EMBERSTORMTALENT more 0) and TalentPoints(IMPROVEDSOULFIRE more 0)
+		{
+			#/soul_fire,if=buff.improved_soul_fire.cooldown_remains<(cast_time+travel_time)&buff.bloodlust.down&!in_flight
+			if BuffExpires(IMPROVEDSOULFIREBUFF 4) and BuffExpires(heroism) Spell(SOULFIRE)
+		}
+		if TalentPoints(EMBERSTORMTALENT less 1) or TalentPoints(IMPROVEDSOULFIRE less 1)
+		{
+			#/soul_fire,if=buff.soulburn.up
+			if BuffPresent(SOULBURN) Spell(SOULFIRE)
+		}
+		#if Glyph(GLYPHOFLASHOFPAIN) Spell(DEMONSOUL)
+		Spell(SHADOWBOLT)
+	}
+	if TalentPoints(BANETALENT less 3)
+	{
+		if SoulShards(more 0) Spell(SOULBURN)
+		#/soul_fire,if=buff.soulburn.up
+		if BuffPresent(SOULBURN) Spell(SOULFIRE)
+		#/demon_soul,if=buff.shadow_trance.react
+		#if BuffPresent(SHADOWTRANCE) Spell(DEMONSOUL)
+		#/shadow_bolt,if=buff.shadow_trance.react
+		if BuffPresent(SHADOWTRANCE) Spell(SHADOWBOLT)
+		#/life_tap,mana_percentage<=5
+		if ManaPercent(less 5) and LifePercent(more 75) Spell(LIFETAP)
+		if TalentPoints(IMPROVEDSOULFIRE more 0)
+		{
+			#/soul_fire,if=buff.improved_soul_fire.cooldown_remains<(cast_time+travel_time)&buff.bloodlust.down&!in_flight
+			if TalentPoints(EMBERSTORMTALENT more 0) if BuffExpires(IMPROVEDSOULFIREBUFF 4) and BuffExpires(heroism) Spell(SOULFIRE)
+			#/soul_fire,if=buff.soulburn.up
+			if TalentPoints(EMBERSTORMTALENT less 1) if BuffPresent(SOULBURN) Spell(SOULFIRE)
+		}
+		#/drain_life,interrupt=1
+		Spell(DRAINLIFE)
+	}
 }

 AddIcon help=cd mastery=1
 {
-	if BuffPresent(heroism) Spell(SUMMONFELGUARD)
+	#/summon_infernal
+	Spell(SUMMONINFERNAL)
 	Spell(DEMONSOUL)
 	Item(Trinket0Slot usable=1)
 	Item(Trinket1Slot usable=1)
@@ -120,21 +178,43 @@ AddIcon help=main mastery=2
 	if List(curse elements) and TargetDebuffExpires(magicaldamagetaken 2) and TargetDeadIn(more 8) Spell(CURSEELEMENTS)
 	if List(curse weakness) and TargetDebuffExpires(CURSEWEAKNESS 2) and TargetDeadIn(more 8) Spell(CURSEWEAKNESS)

-	if TargetDebuffPresent(IMMOLATE) Spell(HANDOFGULDAN)
-	if BuffPresent(METAMORPHOSIS) Spell(SOULBURN usable=1)
-	if BuffPresent(SOULBURN) Spell(SOULFIRE)
-	if TargetDebuffExpires(IMMOLATE 2 mine=1 haste=spell) and TargetDeadIn(more 4) Spell(IMMOLATE)
-	if TargetDebuffExpires(BANEOFDOOM 5 mine=1) and TargetDebuffExpires(BANEOFAGONY 0 mine=1)
+	#unless Glyph(GLYPHOFLASHOFPAIN) or Glyph(GLYPHOFIMP) Spell(DEMONSOUL)
+	#/immolation,if=buff.metamorphosis.remains>10
+	if BuffPresent(METAMORPHOSIS 10) Spell(IMMOLATIONAURA)
+	#/bane_of_doom,if=!ticking&target.time_to_die>=15&miss_react
+	if TargetDebuffExpires(BANEOFDOOM 0 mine=1) and TargetDebuffExpires(BANEOFAGONY 0 mine=1)
 	{
 		if List(bane doom) and TargetDeadIn(more 15) Spell(BANEOFDOOM)
 		if TargetDeadIn(more 10) Spell(BANEOFAGONY)
 	}
-	Spell(HANDOFGULDAN)
-	if BuffPresent(METAMORPHOSIS 10) and BuffExpires(METAMORPHOSIS 16) Spell(IMMOLATE)
-	if TargetDebuffExpires(CORRUPTION 2 mine=1) and TargetDebuffExpires(SEEDOFCORRUPTION 0 mine=1) and TargetDeadIn(more 9) Spell(CORRUPTION)
+	#/immolate,if=!ticking&target.time_to_die>=4&miss_react
+	if TargetDebuffExpires(IMMOLATE 2 mine=1 haste=spell) and TargetDeadIn(more 4) Spell(IMMOLATE)
+	#/corruption,if=(remains<tick_time|!ticking)&target.time_to_die>=6&miss_react
+	if TargetDebuffExpires(CORRUPTION 2 mine=1 haste=spell) and TargetDebuffExpires(SEEDOFCORRUPTION 0 mine=1) and TargetDeadIn(more 6) Spell(CORRUPTION)
+	#/fel_flame,if=buff.tier11_4pc_caster.react
+	if ArmorSetParts(T11 more 3) Spell(FELFLAME)
+	#/shadowflame
+	if CheckBoxOn(shadowflame) Spell(SHADOWFLAME)
+	#/demon_soul
+	#if Glyph(GLYPHOFIMP) Spell(DEMONSOUL)
+	#/hand_of_guldan
+	if TargetDebuffPresent(IMMOLATE) Spell(HANDOFGULDAN)
+	#/incinerate,if=buff.molten_core.react
 	if BuffPresent(MOLTENCORE) Spell(INCINERATE)
-	if BuffPresent(DECIMATION) Spell(SOULFIRE)
-
+	#/soulburn
+	if SoulShards(more 0) Spell(SOULBURN)
+	if TalentPoints(IMPROVEDSOULFIRE more 0)
+	{
+		#/soul_fire,if=buff.improved_soul_fire.cooldown_remains<(cast_time+travel_time)&buff.bloodlust.down&!in_flight&miss_react
+		if BuffExpires(IMPROVEDSOULFIREBUFF 4) and BuffExpires(heroism) Spell(SOULFIRE)
+	}
+	if TalentPoints(IMPROVEDSOULFIRE less 1)
+	{
+		#/soul_fire,if=buff.decimation.react|buff.soulburn.up
+		if BuffPresent(DECIMATION) or BuffPresent(SOULBURN) Spell(SOULFIRE)
+	}
+	#/life_tap,if=mana_pct<=50&buff.bloodlust.down&buff.metamorphosis.down
+	if ManaPercent(less 50) and BuffExpires(heroism) and BuffExpires(METAMORPHOSIS) Spell(LIFETAP)
 	Spell(SHADOWBOLT)
 }

@@ -154,19 +234,38 @@ AddIcon help=main mastery=3
 	if List(curse elements) and TargetDebuffExpires(magicaldamagetaken 2) and TargetDeadIn(more 8) Spell(CURSEELEMENTS)
 	if List(curse weakness) and TargetDebuffExpires(CURSEWEAKNESS 2) and TargetDeadIn(more 8) Spell(CURSEWEAKNESS)

-	if TalentPoints(IMPROVEDSOULFIRE more 0) and TargetLifePercent(more 80) and
-			BuffExpires(IMPROVEDSOULFIREBUFF) Spell(SOULFIRE)
+	#/soul_fire,if=buff.soulburn.up
+	if BuffPresent(SOULBURN) Spell(SOULFIRE)
+	#/fel_flame,if=buff.tier11_4pc_caster.react&dot.immolate.remains<8
+	if ArmorSetParts(T11 more 3) and TargetDebuffExpires(IMMOLATE 8 mine=1) Spell(FELFLAME)
+	#/immolate,if=(remains<cast_time+gcd|!ticking)&target.time_to_die>=4&miss_react
+	if TargetDebuffExpires(IMMOLATE 2 mine=1 haste=spell) and TargetDeadIn(more 4) Spell(IMMOLATE)
+	#/conflagrate
+	if 1s after TargetDebuffPresent(IMMOLATE mine=1) Spell(CONFLAGRATE)
+	#/bane_of_doom,if=!ticking&target.time_to_die>=15&miss_react
 	if TargetDebuffExpires(BANEOFDOOM 0 mine=1) and TargetDebuffExpires(BANEOFAGONY 0 mine=1)
 	{
-		if List(bane doom) and TargetDeadIn(more 20) Spell(BANEOFDOOM)
+		if List(bane doom) and TargetDeadIn(more 15) Spell(BANEOFDOOM)
 		if TargetDeadIn(more 10) unless List(bane havoc) Spell(BANEOFAGONY)
 	}
-	if TargetDebuffExpires(IMMOLATE 2 mine=1 haste=spell) and TargetDeadIn(more 3) Spell(IMMOLATE)
-	if 1s after TargetDebuffPresent(IMMOLATE mine=1) Spell(CONFLAGRATE)
-	if TargetDebuffExpires(CORRUPTION 2 mine=1) and TargetDebuffExpires(SEEDOFCORRUPTION 0 mine=1) and TargetDeadIn(more 9) Spell(CORRUPTION)
-	if BuffPresent(EMPOWEREDIMP) or BuffPresent(SOULBURN) Spell(SOULFIRE)
-    if TalentPoints(SHADOWANDFLAMETALENT more 0) and TargetDebuffExpires(magicalcrittaken) Spell(SHADOWBOLT)
+	#/corruption,if=(!ticking|dot.corruption.remains<tick_time)&miss_react
+	if TargetDebuffExpires(CORRUPTION 2 mine=1 haste=spell) and TargetDebuffExpires(SEEDOFCORRUPTION 0 mine=1) and TargetDeadIn(more 9) Spell(CORRUPTION)
+	#/shadowflame
+	if CheckBoxOn(shadowflame) Spell(SHADOWFLAME)
+	#/soul_fire,if=buff.empowered_imp.react&buff.empowered_imp.remains<(buff.improved_soul_fire.remains+action.soul_fire.travel_time)
+	if TalentPoints(IMPROVEDSOULFIRE more 0) and BuffExpires(IMPROVEDSOULFIREBUFF) and BuffExpires(EMPOWEREDIMP 0) Spell(SOULFIRE)
+	#/chaos_bolt
 	Spell(CHAOSBOLT)
+	#/soulburn,if=buff.bloodlust.down
+	if SoulShards(more 0) and BuffExpires(heroism) Spell(SOULBURN)
+	#/soul_fire,if=buff.improved_soul_fire.remains<(cast_time+travel_time+action.incinerate.cast_time+gcd)&!in_flight
+	if TalentPoints(IMPROVEDSOULFIRE more 0)
+	{
+		if buffExpires(IMPROVEDSOULFIREBUFF)< {castTime(SOULFIRE)+castTime(INCINERATE)+timeWithHaste(1.5)+1} Spell(SOULFIRE)
+	}
+	#/shadowburn
+	Spell(SHADOWBURN usable=1)
+    if TalentPoints(SHADOWANDFLAMETALENT more 0) and TargetDebuffExpires(magicalcrittaken) Spell(SHADOWBOLT)
 	Spell(INCINERATE)
 }

@@ -180,7 +279,7 @@ AddIcon help=cd mastery=3

 AddIcon size=small
 {
-	Spell(SOULBURN usable=1)
+	if SoulShards(more 0) Spell(SOULBURN usable=1)
 }

 AddIcon size=small mastery=1
diff --git a/defaut/Druide.lua b/defaut/Druide.lua
index 848dbbc..ba259c5 100644
--- a/defaut/Druide.lua
+++ b/defaut/Druide.lua
@@ -152,29 +152,23 @@ AddIcon help=main mastery=2
 {
 	if Stance(1) # bear
 	{
-		unless TargetDebuffExpires(LACERATE 4) and TargetDebuffPresent(bleed)
-			Spell(MANGLEBEAR)
-
-		if Mana(more 10) and TargetDebuffExpires(LACERATE 4 stacks=3)
-			Spell(LACERATE)
-
-		if TargetDebuffPresent(LACERATE stacks=3)
-			Spell(PULVERIZE)
-
-		if CheckBoxOn(lucioles) and TargetDebuffExpires(lowerarmor 2 mine=0) and TargetDebuffExpires(FAERIEFIREDEBUFF 3 stacks=3)
-			Spell(FAERIEFERAL)
-
+		#/mangle_bear
+		Spell(MANGLEBEAR)
+		#/demoralizing_roar,if=!debuff.demoralizing_roar.up
 		if CheckBoxOn(demo) and TargetDebuffExpires(lowerphysicaldamage 2)
 			Spell(DEMOROAR)
-
-		if Mana(more 50) Spell(MAUL)
-		if CheckBoxOn(multi)
-		{
-			Spell(THRASH)
-			Spell(SWIPEBEAR)
-		}
-		Spell(MANGLEBEAR)
-		Spell(LACERATE)
+		#/lacerate,if=!ticking
+		if TargetDebuffExpires(LACERATE 0) Spell(LACERATE)
+		#/thrash
+		Spell(THRASH)
+		if CheckBoxOn(multi) Spell(SWIPEBEAR)
+		#/pulverize,if=buff.lacerate.stack=3&buff.pulverize.remains<=2
+		if TargetDebuffPresent(LACERATE stacks=3) and BuffExpires(PULVERIZE 2) Spell(PULVERIZE)
+		#/lacerate,if=buff.lacerate.stack<3
+		if TargetDebuffExpires(LACERATE 4 stacks=3)	Spell(LACERATE)
+		#/faerie_fire_feral
+		if CheckBoxOn(lucioles) and TargetDebuffExpires(lowerarmor 2 mine=0) and TargetDebuffExpires(FAERIEFIREDEBUFF 3 stacks=3)
+			Spell(FAERIEFERAL)
 	}

 	if Stance(3) # cat
@@ -234,30 +228,23 @@ AddIcon help=main mastery=2

 		#ferocious_bite,if=(target.time_to_die<=4&buff.combo_points.stack>=5)|target.time_to_die<=1
 		if {TargetDeadIn(less 4) and ComboPoints(more 4)} or {TargetDeadIn(less 1) and ComboPoints(more 0)} Spell(FEROCIOUSBITE)
-		#ferocious_bite,if=level>80&buff.combo_points.stack>=5&dot.rip.remains>=14.0&buff.savage_roar.remains>=10.0
+		#/ferocious_bite,if=buff.combo_points.stack>=5&dot.rip.remains>=14.0&buff.savage_roar.remains>=10.0
 		if ComboPoints(more 4) and TargetDebuffPresent(RIP 14 mine=1) and BuffPresent(SAVAGEROAR 10) Spell(FEROCIOUSBITE)
 		#shred,extend_rip=1,if=dot.rip.ticking&dot.rip.remains<=4&target.health_pct>25
 		if Glyph(GLYPHOFSHRED) and Counter(ripshreds less 3) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and TargetLifePercent(more 25) Spell(SHRED)

 		#ravage,if=buff.stampede_cat.up&!buff.omen_of_clarity.react&buff.tigers_fury.up
 		if BuffPresent(STAMPEDE) and BuffExpires(CLEARCASTING) and BuffPresent(TIGERSFURY) Spell(RAVAGE)
-		#mangle_cat,if=set_bonus.tier11_4pc_melee&buff.t11_4pc_melee.stack<3
-		if ArmorSetParts(T11 more 3) and BuffExpires(STRENGTHOFTHEPANTHER 0 stacks=3) Spell(MANGLECAT)
-
-		#shred,if=buff.combo_points.stack<=4&dot.rake.remains>3.0&dot.rip.remains>3.0&(time_to_max_energy<=2.0|(buff.berserk.up&energy>=20))
-		if ComboPoints(less 5) and TargetDebuffPresent(RAKE 3 mine=1) and TargetDebuffPresent(RIP 3 mine=1) and {2s before Mana(more 99) or {BuffPresent(BERSERK) and Mana(more 20)}}
-			{Spell(SHRED) Spell(MANGLECAT)}
-		#shred,if=cooldown.tigers_fury.remains<=3.0
-		if 3s before Spell(TIGERSFURY) Spell(SHRED)
-		#shred,if=target.time_to_die<=dot.rake.duration
-		if target.timeToDie()<target.debuffExpires(RAKE mine=1) Spell(SHRED)
-		#shred,if=buff.combo_points.stack=0&(buff.savage_roar.remains<=2.0|dot.rake.remains>=5.0)
-		if ComboPoints(less 1) and {BuffExpires(SAVAGEROAR 2) or TargetDebuffPresent(RAKE 5 mine=1)} Spell(SHRED)
-		#shred,if=!dot.rip.ticking|time_to_max_energy<=1.0
-		if TargetDebuffExpires(RIP 0 mine=1) or 1s before Mana(more 99) Spell(SHRED)
+		Spell(SHRED)
 	}
 }

+AddIcon help=offgcd mastery=2
+{
+	#/maul,if=rage>=75
+	if Stance(1) and Mana(more 74) Spell(MAUL)
+}
+
 AddIcon help=cd mastery=2
 {
 	#unless BuffPresent(TIGERSFURY) Spell(BERSERK)
diff --git a/defaut/Guerrier.lua b/defaut/Guerrier.lua
index b776f26..eae3636 100644
--- a/defaut/Guerrier.lua
+++ b/defaut/Guerrier.lua
@@ -32,6 +32,7 @@ Define(HEROICSTRIKE 78)
 	SpellInfo(HEROICSTRIKE cd=3)
 Define(HEROICTHROW 57755)
 Define(HEROICFURY 60970)
+Define(INNERRAGE 1134)
 Define(INTERCEPT 20252)
 Define(INTERVENE 3411)
 Define(LASTSTAND 12975)
@@ -82,6 +83,10 @@ Define(SLAUGHTER 84584)
 #Talents
 Define(SLAMTALENT 2233)
 Define(SUDDENDEATH 52437)
+Define(TITANSGRIPTALENT 9658)
+
+#Glyphs
+Define(GLYPHOFBERSERKERRAGE 58096)

 AddCheckBox(multi L(AOE))
 AddCheckBox(demo SpellName(DEMOSHOUT))
@@ -100,23 +105,67 @@ AddIcon help=main mastery=1
 	if TargetClassification(worldboss) and CheckBoxOn(demo) and TargetDebuffExpires(lowerphysicaldamage 2) Spell(DEMOSHOUT nored=1)
 	if TargetDebuffExpires(SUNDERARMORDEBUFF 3 stacks=3) and CheckBoxOn(sunder) and TargetDebuffExpires(lowerarmor 2 mine=0) Spell(SUNDERARMOR nored=1)

-	if Mana(less 20) Spell(DEADLYCALM)
+	#/stance,choose=battle,if=(cooldown.recklessness.remains>0&rage<=50)
+	if Stance(3) and Mana(less 50) unless Spell(RECKLESSNESS) Spell(BATTLESTANCE)
+	#/berserker_rage,if=!buff.deadly_calm.up&rage<70
+	if Glyph(GLYPHOFBERSERKERRAGE) and BuffExpires(DEADLYCALM) and Mana(less 71) Spell(BERSERKERRAGE)
+	#/deadly_calm,if=rage<30&((target.health_pct>20&target.time_to_die>130)|(target.health_pct<=20&buff.recklessness.up))
+	if Mana(less 30) and {{TargetLifePercent(more 20) and TargetDeadIn(more 130)} or {TargetLifePercent(less 20) and BuffPresent(RECKLESSNESS)}} Spell(DEADLYCALM)
+
 	if CheckBoxOn(multi)
 	{
+		#/sweeping_strikes,if=target.adds>0
 		Spell(SWEEPINGSTRIKES)
+		#/bladestorm,if=target.adds>0&!buff.deadly_calm.up&!buff.sweeping_strikes.up
 		if BuffExpires(SWEEPINGSTRIKES) and BuffExpires(DEADLYCALM) Spell(BLADESTORM)
-		Spell(CLEAVE)
 	}
+	#/inner_rage,if=!buff.deadly_calm.up&rage>80&cooldown.deadly_calm.remains>15
+	if BuffExpires(DEADLYCALM) and Mana(more 80) and {spell(DEADLYCALM)>15} Spell(INNERRAGE)
+	#/overpower,if=buff.taste_for_blood.remains<=1.5
 	if BuffExpires(TASTEFORBLOOD 1.5) and BuffPresent(TASTEFORBLOOD) Spell(OVERPOWER)
+	#/mortal_strike,if=target.health_pct>20|rage>=30
+	if TargetLifePercent(more 20) or Mana(more 29) Spell(MORTALSTRIKE)
+	#/execute,if=buff.battle_trance.up
+	if BuffPresent(BATTLETRANCE) and TargetLifePercent(less 20) Spell(EXECUTE)
+	#/rend,if=!ticking
 	if TargetDebuffExpires(RENDDEBUFF) Spell(REND)
-	Spell(COLOSSUSSMASH)
+	#/colossus_smash,if=buff.colossus_smash.remains<0.5
+	if BuffExpires(COLOSSUSSMASH 0.5) Spell(COLOSSUSSMASH)
+	#/execute,if=(buff.deadly_calm.up|buff.recklessness.up)
+	if BuffPresent(DEADLYCALM) or BuffPresent(RECKLESSNESS) if TargetLifePercent(less 20) Spell(EXECUTE)
+	#/mortal_strike
 	Spell(MORTALSTRIKE)
-	#overpower,if=!buff.lambs_to_the_slaughter.up&rage>35&target.health_pct<20
-	if BuffExpires(SLAUGHTER 0) and Mana(more 35) and TargetLifePercent(less 20)
-		Spell(OVERPOWER usable=1)
-    if TargetLifePercent(less 20) Spell(EXECUTE)
+	#/overpower
 	Spell(OVERPOWER usable=1)
-	unless 1.5s before Spell(MORTALSTRIKE) Spell(SLAM)
+	#/execute
+	if TargetLifePercent(less 20) Spell(EXECUTE)
+	#/slam,if=(cooldown.mortal_strike.remains>=1.5&(rage>=35|swing.mh.remains<1.1|buff.deadly_calm.up|buff.colossus_smash.up))|(cooldown.mortal_strike.remains>=1.2&buff.colossus_smash.remains>0.5&rage>=35)
+	if {{spell(MORTALSTRIKE)>1.5} and {Mana(more 34) or BuffPresent(DEADLYCALM) or BuffPresent(COLOSSUSSMASH)} or {spell(MORTALSTRIKE)>1.2 and BuffPresent(COLOSSUSSMASH 0.5) and Mana(more 34)}
+		Spell(SLAM)
+	#/battle_shout,if=rage<20
+	if Mana(less 20) Spell(BATTLESHOUT priority=2)
+}
+
+AddIcon help=offgcd mastery=1
+{
+	if target.IsInterruptible() Spell(PUMMEL)
+	if CheckBoxOn(multi) Spell(CLEAVE)
+	#/heroic_strike,if=(rage>70|buff.deadly_calm.up|buff.incite.up|buff.battle_trance.up)
+	if Mana(more 70) or BuffPresent(DEADLYCALM) or BuffPresent(INCITE) or BuffPresent(BATTLETRANCE)
+		Spell(HEROICSTRIKE)
+}
+
+AddIcon help=cd mastery=1
+{
+	if {TargetLifePercent(more 20) and TargetDeadIn(more 320)} or TargetLifePercent(less 20)
+	{
+		#/stance,choose=berserker,if=cooldown.recklessness.remains=0&rage<=50&((target.health_pct>20&target.time_to_die>320)|target.health_pct<=20)
+		if Stance(1) and Spell(RECKLESSNESS) and Mana(less 50) Spell(BERSERKERSTANCE)
+		#/recklessness,if=((target.health_pct>20&target.time_to_die>320)|target.health_pct<=20)
+		Spell(RECKLESSNESS)
+	}
+    Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
 }

 AddIcon help=main mastery=2
@@ -126,22 +175,64 @@ AddIcon help=main mastery=2
 	if TargetClassification(worldboss) and CheckBoxOn(demo) and TargetDebuffExpires(lowerphysicaldamage 2) Spell(DEMOSHOUT nored=1)
 	if TargetDebuffExpires(SUNDERARMORDEBUFF 3 stacks=3) and CheckBoxOn(sunder) and TargetDebuffExpires(lowerarmor 2 mine=0) Spell(SUNDERARMOR nored=1)

-	if BuffExpires(EXECUTIONER 1.5 stacks=5) and TargetLifePercent(less 20) Spell(EXECUTE)
-
+	#/whirlwind,if=target.adds>0
 	if CheckBoxOn(multi) Spell(WHIRLWIND)
+	#/execute,if=buff.executioner_talent.remains<1.5
+	if BuffExpires(EXECUTIONER 1.5) and TargetLifePercent(less 20) Spell(EXECUTE)
+	#/colossus_smash
 	Spell(COLOSSUSSMASH)
-	if TargetDebuffPresent(COLOSSUSSMASH mine=1) and TargetLifePercent(less 20) Spell(EXECUTE)
-	if BuffExpires(DEATHWISH 0) and BuffExpires(RECKLESSNESS 0) and BuffExpires(ENRAGE 0) and Mana(less 15) and
-		1s before Spell(RAGINGBLOW) Spell(BERSERKERRAGE)
-	if {BuffPresent(DEATHWISH) or BuffPresent(RECKLESSNESS) or BuffPresent(ENRAGE) or BuffPresent(BERSERKERRAGE)}
-		and TargetLifePercent(more 20) Spell(RAGINGBLOW)
+	#/execute,if=buff.executioner_talent.stack<5
+	if BuffExpires(EXECUTIONER 0 stacks=5) and TargetLifePercent(less 20) Spell(EXECUTE)
+	#/bloodthirst
+	Spell(BLOODTHIRST)
+	if TalentPoints(TITANSGRIPTALENT more 0)
+	{
+		#/berserker_rage,if=!(buff.death_wish.up|buff.enrage.up|buff.unholy_frenzy.up)&rage>15&cooldown.raging_blow.remains<1
+		if BuffExpires(DEATHWISH 0) and BuffExpires(RECKLESSNESS 0) and BuffExpires(ENRAGE 0) and Mana(less 15) and
+			1s before Spell(RAGINGBLOW) Spell(BERSERKERRAGE)
+		#/raging_blow
+		if BuffPresent(DEATHWISH) or BuffPresent(RECKLESSNESS) or BuffPresent(ENRAGE) or BuffPresent(BERSERKERRAGE)
+			Spell(RAGINGBLOW)
+	}
+	#/slam,if=buff.bloodsurge.react
+	if BuffPresent(BLOODSURGE) Spell(SLAM)
+	#/execute,if=rage>=50
+	if Mana(more 49) and TargetLifePercent(less 20) Spell(EXECUTE)
+	if TalentPoints(TITANSGRIPTALENT less 1)
+	{
+		#/berserker_rage,if=!(buff.death_wish.up|buff.enrage.up|buff.unholy_frenzy.up)&rage>15&cooldown.raging_blow.remains<1
+		if BuffExpires(DEATHWISH 0) and BuffExpires(RECKLESSNESS 0) and BuffExpires(ENRAGE 0) and Mana(less 15) and
+			1s before Spell(RAGINGBLOW) Spell(BERSERKERRAGE)
+		#/raging_blow
+		if BuffPresent(DEATHWISH) or BuffPresent(RECKLESSNESS) or BuffPresent(ENRAGE) or BuffPresent(BERSERKERRAGE)
+			Spell(RAGINGBLOW)
+	}

-    Spell(BLOODTHIRST)
-	if TargetLifePercent(less 20) Spell(EXECUTE)
 	Spell(VICTORYRUSH usable=1)
-	if BuffPresent(BLOODSURGE) Spell(SLAM)
+	#/battle_shout,if=rage<70
+	if Mana(less 70) Spell(BATTLESHOUT priority=2)
 }

+AddIcon help=offgcd mastery=2
+{
+	if target.IsInterruptible() Spell(PUMMEL)
+	#/cleave,if=target.adds>0
+	if CheckBoxOn(multi) Spell(CLEAVE)
+	#/heroic_strike,if=((rage>85&target.health_pct>=20)|buff.battle_trance.up|((buff.incite.up|buff.colossus_smash.up)&((rage>=50&target.health_pct>=20)|(rage>=75&target.health_pct<20))))
+	if {Mana(more 85) and TargetLifePercent(more 20)} or BuffPresent(BATTLETRANCE) or
+			{{BuffPresent(INCITE) or BuffPresent(COLOSSUSSMASH)} and {{Mana(more 49) and TargetLifePercent(more 20)} or {Mana(more 74) and TargetLifePercent(less 20)}}}
+		Spell(HEROICSTRIKE)
+}
+
+AddIcon help=cd mastery=2
+{
+	#/recklessness
+	Spell(RECKLESSNESS)
+	#/death_wish
+	Spell(DEATHWISH)
+    Item(Trinket0Slot usable=1)
+	Item(Trinket1Slot usable=1)
+}

 AddIcon help=main mastery=3
 {
@@ -156,48 +247,19 @@ AddIcon help=main mastery=3
 		Spell(THUNDERCLAP)
 		Spell(SHOCKWAVE)
 	}
-	Spell(SHIELDSLAM)
 	Spell(REVENGE usable=1)
+	#Spell(SHOCKWAVE)
+	Spell(SHIELDSLAM)
 	if TargetDebuffExpires(meleeslow) Spell(THUNDERCLAP)
 	Spell(VICTORYRUSH usable=1)
 	Spell(DEVASTATE)
 }

-AddIcon help=offgcd mastery=1
-{
-	if target.IsInterruptible() Spell(PUMMEL)
-	if CheckBoxOn(multi) Spell(CLEAVE)
-	if Mana(more 65) or BuffPresent(DEADLYCALM) or BuffPresent(INCITE) or BuffPresent(BATTLETRANCE)
-		Spell(HEROICSTRIKE)
-}
-
-AddIcon help=offgcd mastery=2
-{
-	if target.IsInterruptible() Spell(PUMMEL)
-	if CheckBoxOn(multi) Spell(CLEAVE)
-	if {Mana(more 60) or BuffPresent(BATTLETRANCE) or BuffPresent(INCITE)} and TargetLifePercent(more 20)
-		Spell(HEROICSTRIKE)
-}
-
 AddIcon help=offgcd mastery=3
 {
 	if target.IsInterruptible() Spell(SHIELDBASH)
 	if CheckBoxOn(multi) Spell(CLEAVE)
-	if Mana(more 60) Spell(HEROICSTRIKE)
-}
-
-AddIcon help=cd mastery=1
-{
-    Item(Trinket0Slot usable=1)
-	Item(Trinket1Slot usable=1)
-}
-
-AddIcon help=cd mastery=2
-{
-	Spell(DEATHWISH)
-	Spell(RECKLESSNESS)
-    Item(Trinket0Slot usable=1)
-	Item(Trinket1Slot usable=1)
+	if Mana(more 35) Spell(HEROICSTRIKE)
 }

 AddIcon help=cd mastery=3
diff --git a/defaut/Mage.lua b/defaut/Mage.lua
index a54229f..a06cfce 100644
--- a/defaut/Mage.lua
+++ b/defaut/Mage.lua
@@ -14,6 +14,7 @@ Define(COLDSNAP 11958) #frost reset cd
     SpellInfo(COLDSNAP cd=384)
 Define(COMBUSTION 11129) #fire cd consume dot
     SpellInfo(COMBUSTION cd=180)
+Define(CONJUREMANAGEM 759)
 Define(COUNTERSPELL 2139)
     SpellInfo(COUNTERSPELL cd=24)
 Define(DEEPFREEZE 44572) #frost instant
@@ -85,23 +86,57 @@ AddIcon help=main mastery=1
 {
     unless InCombat() if BuffExpires(MAGEARMOR 400) and BuffExpires(MOLTENARMOR 400) and BuffExpires(ICEARMOR 400) Spell(MAGEARMOR)

-    if BuffPresent(PRESENCEOFMIND) Spell(ARCANEBLAST)
-    if TargetDeadIn(less 34) and ManaPercent(more 5) Spell(ARCANEBLAST)
-    if BuffPresent(CLEARCASTING) and DebuffPresent(ARCANEBLASTDEBUFF stacks=2) Spell(ARCANEBLAST)
-
-    if 26s before Spell(EVOCATION) and ManaPercent(more 26) Spell(ARCANEBLAST)
-    if ManaPercent(more 94) Spell(ARCANEBLAST)
-    if DebuffPresent(ARCANEBLASTDEBUFF) unless DebuffPresent(ARCANEBLASTDEBUFF stacks=4) or BuffPresent(heroism)
+	#/arcane_blast,if=target.time_to_die<40&mana_pct>5
+	if TargetDeadIn(less 40) and ManaPercent(more 5) Spell(ARCANEBLAST)
+	#/arcane_blast,if=cooldown.evocation.remains<30&mana_pct>26
+	if {spell(EVOCATION)<30} and ManaPercent(more 26) Spell(ARCANEBLAST)
+	#/evocation,if=target.time_to_die>=31
+	if TargetDeadIn(more 31) Spell(EVOCATION)
+	#/sequence,name=conserve:arcane_blast:arcane_blast:arcane_blast:arcane_blast,if=!buff.bloodlust.up
+	unless DebuffPresent(ARCANEBLASTDEBUFF stacks=4) or BuffPresent(heroism)
 		Spell(ARCANEBLAST)
+	if BuffPresent(ARCANEMISSILEBUFF) Spell(ARCANEMISSILES)
+    #action_list_str += "/arcane_barrage,if=buff.arcane_blast.stack>0"; // when AM hasn't procced
+	Spell(ARCANEBARRAGE)
+    if Speed(more 0)
+	{
+		Spell(ARCANEBARRAGE)
+		Spell(FIREBLAST)
+		Spell(ICELANCE)
+	}
+}
+
+AddIcon help=cd mastery=1
+{
+    if TargetBuffStealable(yes) Spell(SPELLSTEAL)
+    if TargetIsInterruptible(yes) Spell(COUNTERSPELL)
+
+	#/conjure_mana_gem,if=cooldown.evocation.remains<44&target.time_to_die<44&mana_gem_charges=0
+	if ItemCount(MANAGEMITEM less 1 charges=1) and {spell(EVOCATION)<44} and TargetDieIn(less 44)}
+		Spell(CONJUREMANAGEM)
+	#if=(cooldown.evocation.remains<30&buff.arcane_blast.stack=4)|cooldown.evocation.remains>90|target.time_to_die<40
+	if {{spell(EVOCATION)<30} and DebuffPresent(ARCANEBLAST stacks=4)} or {spell(EVOCATION)>90} or TargetDieIn(less 40)
+	{
+		Item(Trinket0Slot usable=1)
+		Item(Trinket1Slot usable=1)
+		#if ItemCount(VOLCANICPOTION more 0) Item(VOLCANICPOTION)
+	}
+
+	if {{spell(EVOCATION)<30} and DebuffPresent(ARCANEBLAST stacks=4)} or TargetDieIn(less 40)
+	{
+		#action_list_str += "/arcane_power,if=(cooldown.evocation.remains<30&buff.arcane_blast.stack=4)|target.time_to_die<40";
+		Spell(ARCANEPOWER)
+		#action_list_str += "/mana_gem,if=(cooldown.evocation.remains<30&buff.arcane_blast.stack=4)|target.time_to_die<40";
+		Spell(MANAGEM)
+	}
+
+    #action_list_str += "/mirror_image,if=buff.arcane_power.up|(cooldown.arcane_power.remains>20&target.time_to_die>15)";
+    if BuffPresent(ARCANEPOWER) or {{spell(ARCANEPOWER)>0} and TargetDieIn(more 15)} Spell(MIRRORIMAGE)
+	#/flame_orb,if=target.time_to_die>=10
+    if TargetDeadIn(more 10) Spell(FLAMEORB)
+	#/presence_of_mind,arcane_blast
+    Spell(PRESENCEOFMIND)

-	if DebuffPresent(ARCANEBLASTDEBUFF) and BuffPresent(heroism) unless DebuffPresent(ARCANEBLASTDEBUFF stacks=3)
-        Spell(ARCANEBLAST)
-
-	if TargetDeadIn(more 31) Spell(EVOCATION)
-    Spell(ARCANEMISSILES)
-    Spell(ARCANEBARRAGE)
-    if Speed(more 0) Spell(FIREBLAST)
-    if Speed(more 0) Spell(ICELANCE)
 }

 AddIcon help=main mastery=2
@@ -128,6 +163,18 @@ AddIcon help=main mastery=2
     if TalentPoints(IMPROVEDSCORCH more 0) Spell(SCORCH)
 }

+AddIcon help=cd mastery=2
+{
+    if BuffPresent(heroism) or TargetDeadIn(less 40) Item(VOLCANICPOTION)
+    if TargetBuffStealable(yes) Spell(SPELLSTEAL)
+    if TargetIsInterruptible(yes) Spell(COUNTERSPELL)
+    if ManaPercent(less 85) Item(MANAGEMITEM)
+    if TargetDeadIn(more 24) Spell(MIRRORIMAGE)
+    if TargetDeadIn(more 11) Spell(FLAMEORB)
+    Item(Trinket0Slot usable=1)
+    Item(Trinket1Slot usable=1)
+}
+
 AddIcon help=main mastery=3
 {
     unless InCombat() if BuffExpires(MAGEARMOR 400) and BuffExpires(MOLTENARMOR 400) and BuffExpires(ICEARMOR 400) Spell(MOLTENARMOR)
@@ -146,40 +193,6 @@ AddIcon help=main mastery=3
     if Speed(more 0) Spell(FIREBLAST)
 }

-AddIcon help=cd mastery=1
-{
-    if BuffPresent(heroism) or TargetDeadIn(less 40) Item(VOLCANICPOTION)
-    if TargetBuffStealable(yes) Spell(SPELLSTEAL)
-    if TargetIsInterruptible(yes) Spell(COUNTERSPELL)
-    if TargetDeadIn(more 29) Spell(MIRRORIMAGE)
-    if TargetDeadIn(less 34) Spell(ARCANEPOWER)
-    if 26s before Spell(EVOCATION)
-    {
-          if DebuffPresent(ARCANEBLAST stacks=3) or DebuffPresent(ARCANEBLAST stacks=4) Spell(ARCANEPOWER)
-    }
-    if TargetDeadIn(less 35) Item(MANAGEMITEM)
-    if 26s before Spell(EVOCATION)
-    {
-          if DebuffPresent(ARCANEBLASTDEBUFF stacks=3) Item(MANAGEMITEM)
-    }
-    if TargetDeadIn(more 14) Spell(FLAMEORB)
-    Spell(PRESENCEOFMIND)
-    Item(Trinket0Slot usable=1)
-    Item(Trinket1Slot usable=1)
-}
-
-AddIcon help=cd mastery=2
-{
-    if BuffPresent(heroism) or TargetDeadIn(less 40) Item(VOLCANICPOTION)
-    if TargetBuffStealable(yes) Spell(SPELLSTEAL)
-    if TargetIsInterruptible(yes) Spell(COUNTERSPELL)
-    if ManaPercent(less 85) Item(MANAGEMITEM)
-    if TargetDeadIn(more 24) Spell(MIRRORIMAGE)
-    if TargetDeadIn(more 11) Spell(FLAMEORB)
-    Item(Trinket0Slot usable=1)
-    Item(Trinket1Slot usable=1)
-}
-
 AddIcon help=cd mastery=3
 {
     if BuffPresent(heroism) or TargetDeadIn(less 40) Item(VOLCANICPOTION)
diff --git a/defaut/Paladin.lua b/defaut/Paladin.lua
index 71ca493..3fb44f7 100644
--- a/defaut/Paladin.lua
+++ b/defaut/Paladin.lua
@@ -40,7 +40,7 @@ Define(ZEALOTRY 85696)
 #Buff
 Define(THEARTOFWAR 59578)
 Define(JUDGEMENTSOFTHEPURE 53655)
-Define(HANDOFLIGHT 90174)
+Define(DIVINEPURPOSE 90174)

 ScoreSpells(SHIELDOFTHERIGHTEOUS JUDGEMENT AVENGERSSHIELD HAMMEROFTHERIGHTEOUS CONSECRATE HOLYWRATH
 	ZEALOTRY  INQUISITION TEMPLARSVERDICT DIVINESTORM EXORCISM HAMMEROFWRATH JUDGEMENT CRUSADERSTRIKE)
@@ -86,6 +86,7 @@ AddIcon help=main mastery=2
 	Spell(AVENGERSSHIELD)
 	Spell(HOLYWRATH)
 	Spell(CONSECRATE priority=2)
+	Spell(DIVINEPLEA priority=2)
 }

 AddIcon help=cd mastery=2
@@ -107,19 +108,20 @@ AddIcon help=main mastery=3
 	#judgement,if=buff.judgements_of_the_pure.down
 	if BuffExpires(JUDGEMENTSOFTHEPURE 0) Spell(JUDGEMENT)
 	#inquisition,if=(buff.inquisition.down|buff.inquisition.remains<5)&(buff.holy_power.react==3|buff.hand_of_light.react)
-	if BuffExpires(INQUISITION 5) and {HolyPower(equal 3) or BuffPresent(HANDOFLIGHT)} Spell(INQUISITION)
-	#exorcism,if=buff.the_art_of_war.react
-	if BuffPresent(THEARTOFWAR) Spell(EXORCISM)
-	#hammer_of_wrath
-	if TargetLifePercent(less 20) or BuffPresent(AVENGINGWRATH) Spell(HAMMEROFWRATH)
+	if BuffExpires(INQUISITION 5) and {HolyPower(equal 3) or BuffPresent(DIVINEPURPOSE)} Spell(INQUISITION)
 	#templars_verdict,if=buff.holy_power.react==3
-	if HolyPower(more 2) {if CheckBoxOn(aoe) Spell(DIVINESTORM) Spell(TEMPLARSVERDICT)}
+	if HolyPower(more 2) Spell(TEMPLARSVERDICT)
 	#crusader_strike,if=buff.hand_of_light.react&(buff.hand_of_light.remains>2)&(buff.holy_power.react<3)
-	if BuffPresent(HANDOFLIGHT 3) and HolyPower(less 3) Spell(CRUSADERSTRIKE)
+	if BuffPresent(DIVINEPURPOSE 3) and HolyPower(less 3) Spell(CRUSADERSTRIKE)
 	#templars_verdict,if=buff.hand_of_light.react
-	if BuffPresent(HANDOFLIGHT) {if CheckBoxOn(aoe) Spell(DIVINESTORM) Spell(TEMPLARSVERDICT)}
+	if BuffPresent(DIVINEPURPOSE) Spell(TEMPLARSVERDICT)
 	#crusader_strike
+	if CheckBoxOn(aoe) Spell(DIVINESTORM)
 	Spell(CRUSADERSTRIKE)
+	#hammer_of_wrath
+	if TargetLifePercent(less 20) or BuffPresent(AVENGINGWRATH) Spell(HAMMEROFWRATH)
+	#exorcism,if=buff.the_art_of_war.react
+	if BuffPresent(THEARTOFWAR) Spell(EXORCISM)
 	#judgement,if=buff.judgements_of_the_pure.remains<2
 	if BuffExpires(JUDGEMENTSOFTHEPURE 2) Spell(JUDGEMENT)
 	#wait,sec=0.1,if=cooldown.crusader_strike.remains<0.75
@@ -138,9 +140,14 @@ AddIcon help=main mastery=3

 AddIcon help=cd mastery=3
 {
+	#/guardian_of_ancient_kings
 	Spell(GUARDIANOFANCIENTKINGS)
+	#/avenging_wrath,if=buff.zealotry.down
 	if BuffExpires(ZEALOTRY)
 		Spell(AVENGINGWRATH)
+	#/zealotry,if=buff.avenging_wrath.down
+	if BuffExpires(AVENGINGWRATH)
+		Spell(ZEALOTRY)
     Item(Trinket0Slot usable=1)
     Item(Trinket1Slot usable=1)
 }