Quantcast

- imported last simulationcraft scripts (overwrote feral druid changes :( )

Sidoine De Wispelaere [03-02-13 - 13:07]
- imported last simulationcraft scripts (overwrote feral druid changes :( )
- added Charges(), CritDamage(), and PTR() functions
- added raid_movement buff

git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@703 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Filename
OvaleCondition.lua
OvaleData.lua
defaut/Chaman.lua
defaut/Chasseur.lua
defaut/Demoniste.lua
defaut/Druide.lua
defaut/Guerrier.lua
defaut/Mage.lua
defaut/Moine.lua
defaut/Paladin.lua
defaut/Pretre.lua
defaut/Voleur.lua
diff --git a/OvaleCondition.lua b/OvaleCondition.lua
index 8ad6e00..8357130 100644
--- a/OvaleCondition.lua
+++ b/OvaleCondition.lua
@@ -804,6 +804,20 @@ OvaleCondition.conditions.casttime = function(condition)
 	return compare(castTime/1000, condition[2], condition[3])
 end

+--- Get the number of charges on a spell with multiple charges.
+-- @name Charges
+-- @paramsig number or boolean
+-- @param id The spell ID.
+-- @param operator Optional. Comparison operator: equal, less, more.
+-- @param number Optional. The number to compare against.
+-- @return The number of charges
+-- @return A boolean value for the result of the comparison.
+
+OvaleCondition.conditions.charges = function(condition)
+	local currentCharges, maxCharges, timeLastCast, cooldownDuration = GetSpellCharges(condition[1])
+	return compare(currentCharges, condition[2], condition[3])
+end
+
 --- Test if all of the listed checkboxes are off.
 -- @name CheckBoxOff
 -- @paramsig boolean
@@ -992,6 +1006,20 @@ OvaleCondition.conditions.creaturetype = function(condition)
 	return nil
 end

+--- Get the current estimated damage of a spell if it is a critical damage.
+-- @name CritDamage
+-- @name Damage
+-- @paramsig number
+-- @param id The spell ID.
+-- @return The estimated damage of the given spell.
+-- @see CritDamage
+
+OvaleCondition.conditions.critdamage = function(condition)
+	local spellId = condition[1]
+	local ret = OvaleData:GetDamage(spellId, OvalePaperDoll.attackPower, OvalePaperDoll.spellBonusDamage, OvaleState.state.combo)
+	return 0, nil, 2 * ret * OvaleAura:GetDamageMultiplier(spellId), 0, 0
+end
+
 --- Get the current estimated damage of a spell.
 -- The calculated damage takes into account the current attack power, spellpower and combo points (if used).
 -- The damage is computed from information for the spell set via SpellInfo(...):
@@ -1001,7 +1029,7 @@ end
 -- @paramsig number
 -- @param id The spell ID.
 -- @return The estimated damage of the given spell.
--- @see LastSpellDamage, LastSpellEstimatedDamage
+-- @see CritDamage, LastSpellDamage, LastSpellEstimatedDamage
 -- @usage
 -- if {Damage(rake) / LastSpellEstimateDamage(rake)} >1.1
 --     Spell(rake)
@@ -2032,6 +2060,16 @@ OvaleCondition.conditions.petpresent = function(condition)
 	return testbool(present, condition[1])
 end

+--- Test if the game is on a PTR server
+-- @paramsig boolean
+-- @param yesno Optional. If yes, then returns true if it is a PTR realm. If no, return true if it is a live realm.
+--     Default is yes.
+--     Valid values: yes, no.
+-- @return A boolean value
+OvaleCondition.conditions.ptr = function(condition)
+	return testbool(GetBuildInfo() == "5.2.0", condition[1])
+end
+
 --- Get the current amount of rage for guardian druids and warriors.
 -- @name Rage
 -- @paramsig number or boolean
diff --git a/OvaleData.lua b/OvaleData.lua
index b13fa6b..f55bbe0 100644
--- a/OvaleData.lua
+++ b/OvaleData.lua
@@ -261,6 +261,10 @@ OvaleData.buffSpellList =
 		80354, -- Temporal Displacement (Time Warp)
 		95809, -- Insanity (Ancient Hysteria)
 	},
+	raid_movement =
+	{
+		106898, -- Stampeding Roar
+	}
 }
 OvaleData.buffSpellList.bloodlust_aura = OvaleData.buffSpellList.burst_haste
 OvaleData.buffSpellList.bloodlust = OvaleData.buffSpellList.burst_haste
diff --git a/defaut/Chaman.lua b/defaut/Chaman.lua
index 5ffa7d4..1b68fe8 100644
--- a/defaut/Chaman.lua
+++ b/defaut/Chaman.lua
@@ -44,6 +44,10 @@ Define(lava_burst 51505)
   SpellInfo(lava_burst cd=8 )
 Define(lava_lash 60103)
   SpellInfo(lava_lash cd=10 )
+Define(lava_surge 77756)
+Define(lifeblood 55503)
+  SpellInfo(lifeblood cd=120 )
+  SpellAddBuff(lifeblood lifeblood=1)
 Define(lightning_bolt 403)
 Define(lightning_shield 324)
   SpellInfo(lightning_shield duration=3600 )
@@ -91,10 +95,11 @@ AddIcon mastery=1 help=main

 	if TalentPoints(unleashed_fury_talent) and not BuffPresent(ascendance) Spell(unleash_elements)
 	if target.DebuffRemains(flame_shock) >CastTime(lava_burst) and {BuffPresent(ascendance) or SpellCooldown(lava_burst) } Spell(lava_burst)
-	if target.TicksRemain(flame_shock) <3 and {target.TicksRemain(flame_shock) <2 or BuffPresent(bloodlust any=1) or BuffPresent(elemental_mastery) } Spell(flame_shock)
+	if target.TicksRemain(flame_shock) <2 Spell(flame_shock)
 	if TalentPoints(elemental_blast_talent) Spell(elemental_blast)
 	if BuffStacks(lightning_shield) ==7 Spell(earth_shock)
 	if BuffStacks(lightning_shield) >3 and target.DebuffRemains(flame_shock) >SpellCooldown(earth_shock) and target.DebuffRemains(flame_shock) <SpellCooldown(earth_shock) +TickTime(flame_shock) Spell(earth_shock)
+	if TimeInCombat() >60 and target.DebuffRemains(flame_shock) <=BuffDuration(ascendance) and SpellCooldown(ascendance) +BuffDuration(ascendance) <BuffDuration(flame_shock) Spell(flame_shock)
 	if SpellCooldown(fire_elemental_totem) >15 and not TotemPresent(fire) Spell(searing_totem)
 	Spell(lightning_bolt)

@@ -106,7 +111,7 @@ AddIcon mastery=1 help=offgcd
 AddIcon mastery=1 help=moving
 {

-	Spell(unleash_elements)
+	if not Glyph(101052) Spell(unleash_elements)

 }
 AddIcon mastery=1 help=aoe
@@ -127,15 +132,16 @@ AddIcon mastery=1 help=cd
 {
 	if target.HealthPercent() <25 or TimeInCombat() >5 { Spell(bloodlust) Spell(heroism) }
 	if not TotemPresent(air) and not BuffPresent(stormlash) and {BuffPresent(bloodlust any=1) or TimeInCombat() >=60 } Spell(stormlash_totem)
-
-	if {{SpellCooldown(ascendance) >10 or Level() <87 } and SpellCooldown(fire_elemental_totem) >10 } or BuffPresent(ascendance) or BuffPresent(bloodlust any=1) or TotemPresent(fire)  { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
 	if BuffPresent(bloodlust any=1) or BuffPresent(ascendance) or {{SpellCooldown(ascendance) >10 or Level() <87 } and SpellCooldown(fire_elemental_totem) >10 } Spell(blood_fury)
-	if TalentPoints(elemental_mastery_talent) and TimeInCombat() >15 and {{not BuffPresent(bloodlust any=1) and TimeInCombat() <120 } or {not BuffPresent(berserking) and not BuffPresent(bloodlust any=1) and BuffPresent(ascendance) } or {TimeInCombat() >=200 and {SpellCooldown(ascendance) >30 or Level() <87 } } } Spell(elemental_mastery)
+	if TalentPoints(elemental_mastery_talent) and {TimeInCombat() >15 and {{not BuffPresent(bloodlust any=1) and TimeInCombat() <120 } or {not BuffPresent(berserking) and not BuffPresent(bloodlust any=1) and BuffPresent(ascendance) } or {TimeInCombat() >=200 and {SpellCooldown(ascendance) >30 or Level() <87 } } } } Spell(elemental_mastery)
 	if not TotemPresent(fire) Spell(fire_elemental_totem)
-	if target.DebuffRemains(flame_shock) >0 and {target.DeadIn() <20 or BuffPresent(bloodlust any=1) or TimeInCombat() >=180 } and SpellCooldown(lava_burst) >0 Spell(ascendance)
+	if Enemies() >1 or {target.DebuffRemains(flame_shock) >BuffDuration(ascendance) and {target.DeadIn() <20 or BuffPresent(bloodlust any=1) or TimeInCombat() >=60 } and SpellCooldown(lava_burst) >0 } Spell(ascendance)
+
+	if {{SpellCooldown(ascendance) >10 or Level() <87 } and SpellCooldown(fire_elemental_totem) >10 } or BuffPresent(ascendance) or BuffPresent(bloodlust any=1) or TotemPresent(fire)  { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
 	if TalentPoints(ancestral_swiftness_talent) and not BuffPresent(ascendance) Spell(ancestral_swiftness)
+	if ArmorSetParts(T14 more 4) and {not BuffPresent(bloodlust any=1) or target.DeadIn() <25 } Spell(spiritwalkers_grace)
 	if not TotemPresent(earth) and SpellCooldown(fire_elemental_totem) >=50 Spell(earth_elemental_totem)
-	Spell(spiritwalkers_grace)
+	if Glyph(101052) and {{TalentPoints(elemental_blast_talent) and SpellCooldown(elemental_blast) ==0 } or {SpellCooldown(lava_burst) ==0 and not BuffStacks(lava_surge) } } or {BuffDuration(raid_movement) >=SpellCooldown(unleash_elements) +SpellCooldown(earth_shock) } Spell(spiritwalkers_grace)

 }
 AddIcon mastery=2 help=main
@@ -149,16 +155,18 @@ AddIcon mastery=2 help=main

 	if not TotemPresent(fire) Spell(searing_totem)
 	if TalentPoints(unleashed_fury_talent) Spell(unleash_elements)
-	if TalentPoints(elemental_blast_talent) Spell(elemental_blast)
-	if BuffStacks(maelstrom_weapon) ==5 Spell(lightning_bolt)
+	if TalentPoints(elemental_blast_talent) and BuffStacks(maelstrom_weapon) >=1 Spell(elemental_blast)
+	if BuffStacks(maelstrom_weapon) ==5 or {ArmorSetParts(T13 more 4) ==1 and BuffStacks(maelstrom_weapon) >=4 and False() } Spell(lightning_bolt)
 	Spell(stormblast)
 	Spell(stormstrike)
 	if BuffPresent(unleash_flame) and not target.DebuffPresent(flame_shock) Spell(flame_shock)
 	Spell(lava_lash)
-	if BuffPresent(unleash_flame) Spell(flame_shock)
+	if ArmorSetParts(T15 more 2) ==1 and BuffStacks(maelstrom_weapon) >=4 and not BuffPresent(ascendance) Spell(lightning_bolt)
+	if not Glyph(55447) and {BuffPresent(unleash_flame) or {not BuffPresent(unleash_flame) and not target.DebuffPresent(flame_shock) and SpellCooldown(unleash_elements) >5 } } Spell(flame_shock)
 	Spell(unleash_elements)
 	if BuffStacks(maelstrom_weapon) >=3 and not BuffPresent(ascendance) Spell(lightning_bolt)
 	if BuffPresent(ancestral_swiftness) Spell(lightning_bolt)
+	if Glyph(55447) and BuffPresent(unleash_flame) and target.DebuffRemains(flame_shock) <=3 Spell(flame_shock)
 	Spell(earth_shock)
 	if BuffStacks(maelstrom_weapon) >1 and not BuffPresent(ascendance) Spell(lightning_bolt)

@@ -181,7 +189,7 @@ AddIcon mastery=2 help=aoe
 	Spell(stormstrike)
 	if BuffStacks(maelstrom_weapon) ==5 and SpellCooldown(chain_lightning) >=2 Spell(lightning_bolt)
 	if BuffStacks(maelstrom_weapon) >1 Spell(chain_lightning)
-	if BuffStacks(maelstrom_weapon) >1 Spell(lightning_bolt)
+	if BuffStacks(maelstrom_weapon) >1 and not BuffPresent(ascendance) Spell(lightning_bolt)

 }
 AddIcon mastery=2 help=cd
@@ -189,11 +197,13 @@ AddIcon mastery=2 help=cd
 	if target.HealthPercent() <25 or TimeInCombat() >5 { Spell(bloodlust) Spell(heroism) }
 	 { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
 	if not TotemPresent(air) and not BuffPresent(stormlash) and {BuffPresent(bloodlust any=1) or TimeInCombat() >=60 } Spell(stormlash_totem)
-
 	Spell(blood_fury)
-	if TalentPoints(elemental_mastery_talent) Spell(elemental_mastery)
-	if not TotemPresent(fire) and {BuffPresent(bloodlust any=1) or BuffPresent(elemental_mastery) or target.DeadIn() <=0 +10 or {TalentPoints(elemental_mastery_talent) and {SpellCooldown(elemental_mastery) ==0 or SpellCooldown(elemental_mastery) >80 } or TimeInCombat() >=60 } } Spell(fire_elemental_totem)
+	if TalentPoints(elemental_mastery_talent) and {not Glyph(55455) or SpellCooldown(fire_elemental_totem) ==0 or SpellCooldown(fire_elemental_totem) >70 } Spell(elemental_mastery)
+	if not TotemPresent(fire) and {BuffPresent(bloodlust any=1) or BuffPresent(lifeblood) or BuffPresent(elemental_mastery) } or TimeInCombat() >=60 Spell(fire_elemental_totem)
+	if not TotemPresent(fire) and target.DeadIn() <=0 +10 Spell(fire_elemental_totem)
 	if SpellCooldown(strike) >=3 Spell(ascendance)
+
+	if ArmorSetParts(T15 more 4) ==1 Spell(feral_spirit)
 	if TalentPoints(ancestral_swiftness_talent) and BuffStacks(maelstrom_weapon) <2 Spell(ancestral_swiftness)
 	Spell(feral_spirit)
 	if not TotemPresent(earth) and SpellCooldown(fire_elemental_totem) >=50 Spell(earth_elemental_totem)
diff --git a/defaut/Chasseur.lua b/defaut/Chasseur.lua
index d74ba1d..c9a78e2 100644
--- a/defaut/Chasseur.lua
+++ b/defaut/Chasseur.lua
@@ -142,12 +142,11 @@ AddIcon mastery=2 help=main
 	if SpellUsable(blink_strike) Spell(blink_strike)
 	if SpellUsable(fervor) and Focus() <=50 Spell(fervor)
 	if SpellUsable(dire_beast) Spell(dire_beast)
-	if target.HealthPercent() >90
+	if target.HealthPercent() >80
 	{
 		if not target.DebuffPresent(serpent_sting_aura) Spell(serpent_sting)
 		Spell(chimera_shot)
 		if PreviousSpell(steady_shot) and BuffRemains(steady_focus) <6 Spell(steady_shot)
-		if BuffStacks(master_marksman_fire) Spell(aimed_shot)
 		Spell(aimed_shot)
 		Spell(steady_shot)
 	}
@@ -185,7 +184,7 @@ AddIcon mastery=2 help=cd
 {
 	Spell(blood_fury)
 	if not BuffPresent(rapid_fire) Spell(rapid_fire)
-	if target.HealthPercent() >90
+	if target.HealthPercent() >80
 	{
 		Spell(readiness)
 	}
diff --git a/defaut/Demoniste.lua b/defaut/Demoniste.lua
index 4b06c04..83fbfc4 100644
--- a/defaut/Demoniste.lua
+++ b/defaut/Demoniste.lua
@@ -40,9 +40,6 @@ Define(grimoire_of_sacrifice 108503)
   SpellAddBuff(grimoire_of_sacrifice grimoire_of_sacrifice=1)
 Define(hand_of_guldan 105174)
   SpellInfo(hand_of_guldan stance=0)
-Define(harvest_life 108371)
-  SpellInfo(harvest_life duration=6 demonicfury=30 tick=1 )
-  SpellAddTargetDebuff(harvest_life harvest_life=1)
 Define(haunt 48181)
   SpellInfo(haunt duration=8 shards=1 )
   SpellAddBuff(haunt haunt=1)
@@ -50,7 +47,7 @@ Define(havoc 80240)
   SpellInfo(havoc duration=15 cd=25 )
   SpellAddBuff(havoc havoc=1)
 Define(hellfire 1949)
-  SpellInfo(hellfire duration=14 tick=1 )
+  SpellInfo(hellfire duration=14 tick=1 canStopChannelling=1 )
   SpellAddTargetDebuff(hellfire hellfire=1)
 Define(immolate 348)
   SpellInfo(immolate duration=15 tick=3 )
@@ -63,7 +60,7 @@ Define(life_tap 1454)
   SpellInfo(life_tap mana=-15 )
   SpellAddBuff(life_tap life_tap=1)
 Define(malefic_grasp 103103)
-  SpellInfo(malefic_grasp duration=4 tick=1 )
+  SpellInfo(malefic_grasp duration=4 tick=1 canStopChannelling=1 )
   SpellAddTargetDebuff(malefic_grasp malefic_grasp=1)
 Define(melee 103988)
   SpellInfo(melee stance=1)
@@ -90,6 +87,8 @@ Define(shadowburn 17877)
 Define(shadowflame 47960)
   SpellInfo(shadowflame duration=6 tick=1 )
   SpellAddTargetDebuff(shadowflame shadowflame=1)
+Define(skull_banner 114207)
+  SpellInfo(skull_banner duration=10 cd=180 )
 Define(soul_fire 6353)
   SpellAddBuff(soul_fire molten_core=-1)
 Define(soul_swap 86121)
@@ -117,33 +116,44 @@ Define(wrathstorm 115831)
   SpellAddBuff(wrathstorm wrathstorm=1)
 Define(grimoire_of_sacrifice_talent 15)
 Define(grimoire_of_service_talent 14)
-Define(harvest_life_talent 3)
 AddIcon mastery=1 help=main
 {
 	if not InCombat()
 	{
 		if not BuffPresent(spell_power_multiplier any=1) Spell(dark_intent)
-		unless pet.CreatureFamily(Felhunter) Spell(summon_felhunter)
+		if not TalentPoints(grimoire_of_sacrifice_talent) or BuffExpires(grimoire_of_sacrifice) unless pet.CreatureFamily(Felhunter) Spell(summon_felhunter)
+		if TalentPoints(grimoire_of_service_talent) Spell(service_felhunter)
 	}
 	if target.DebuffExpires(magic_vulnerability any=1) Spell(curse_of_the_elements)
 	if TalentPoints(grimoire_of_service_talent) Spell(service_felhunter)
-	if TalentPoints(grimoire_of_sacrifice_talent) and BuffExpires(grimoire_of_sacrifice) unless pet.CreatureFamily(Felhunter) Spell(summon_felhunter)
 	if BuffPresent(soulburn) Spell(soul_swap)
-	if not InFlightToTarget(haunt) and target.DebuffRemains(haunt) <TickTime(haunt) +1 +CastTime(haunt) and SoulShards() Spell(haunt)
-	if not InFlightToTarget(haunt) and target.DebuffRemains(haunt) <TickTime(haunt) +1 +CastTime(haunt) and SoulShards() >1 Spell(haunt)
-	if target.TicksRemain(agony) <Ticks(agony) /2 and target.DeadIn() >=8 Spell(agony)
-	if target.TicksRemain(corruption) <Ticks(corruption) /2 and target.DeadIn() >=6 Spell(corruption)
-	if target.TicksRemain(unstable_affliction) <Ticks(unstable_affliction) /2 +1 and target.DeadIn() >=5 Spell(unstable_affliction)
+	if not InFlightToTarget(haunt) and target.DebuffRemains(haunt) <CastTime(haunt) +1 +TickTime(haunt) and SoulShards() and target.HealthPercent() <=20 Spell(haunt)
+	if BuffExpires(dark_soul) and BuffExpires(bloodlust any=1) and ManaPercent() <10 and target.HealthPercent() <=20 Spell(life_tap)
 	if target.HealthPercent() <=20 Spell(drain_soul)
-	if ManaPercent() <35 Spell(life_tap)
+	if target.HealthPercent() <=20 Spell(life_tap)
+	if target.DebuffRemains(agony) <GCD() and target.DebuffRemains(agony) +2 <SpellCooldown(dark_soul) Spell(agony)
+	if not InFlightToTarget(haunt) and target.DebuffRemains(haunt) <CastTime(haunt) +1 +TickTime(haunt) and {SoulShards() >2 or SpellCooldown(dark_soul) >35 or {SoulShards() >1 and SpellCooldown(dark_soul) <CastTime(haunt) } } and SoulShards() Spell(haunt)
+	if target.DebuffRemains(corruption) <GCD() and target.DebuffRemains(corruption) <SpellCooldown(dark_soul) Spell(corruption)
+	if target.DebuffRemains(unstable_affliction) <GCD() +CastTime(unstable_affliction) and target.DebuffRemains(unstable_affliction) <SpellCooldown(dark_soul) Spell(unstable_affliction)
+	if target.TicksRemain(agony) <=2 and target.DebuffRemains(agony) +2 <SpellCooldown(dark_soul) Spell(agony)
+	if target.TicksRemain(corruption) <=2 and target.DebuffRemains(corruption) <SpellCooldown(dark_soul) Spell(corruption)
+	if {target.DebuffRemains(unstable_affliction) -CastTime(unstable_affliction) } /{BuffDuration(unstable_affliction) /Ticks(unstable_affliction) } <=2 and target.DebuffRemains(unstable_affliction) <SpellCooldown(dark_soul) Spell(unstable_affliction)
+	if SpellPower() >LastSpellSpellPower(agony) and target.TicksRemain(agony) <Ticks(agony) /2 and target.DebuffRemains(agony) +2 <SpellCooldown(dark_soul) Spell(agony)
+	if SpellPower() >LastSpellSpellPower(corruption) and target.TicksRemain(corruption) <Ticks(corruption) /2 and target.DebuffRemains(corruption) <SpellCooldown(dark_soul) Spell(corruption)
+	if SpellPower() >LastSpellSpellPower(unstable_affliction) and target.TicksRemain(unstable_affliction) <Ticks(unstable_affliction) /2 and target.DebuffRemains(unstable_affliction) <SpellCooldown(dark_soul) Spell(unstable_affliction)
+	if BuffExpires(dark_soul) and BuffExpires(bloodlust any=1) and ManaPercent() <50 Spell(life_tap)
 	Spell(malefic_grasp)
 	Spell(life_tap)
 }
 AddIcon mastery=1 help=offgcd
 {
-	if TalentPoints(grimoire_of_sacrifice_talent) Spell(grimoire_of_sacrifice)
-	if BuffPresent(dark_soul) and SoulShards() Spell(soulburn)
-	if {target.TicksRemain(unstable_affliction) <Ticks(unstable_affliction) /2 or target.TicksRemain(corruption) <Ticks(corruption) /2 or target.TicksRemain(agony) <Ticks(agony) /2 } and target.HealthPercent() <=20 and SoulShards() Spell(soulburn)
+	if not InCombat()
+	{
+		if TalentPoints(grimoire_of_sacrifice_talent) Spell(grimoire_of_sacrifice)
+	}
+	if BuffPresent(dark_soul) and {target.TicksRemain(agony) <=Ticks(agony) /2 or target.TicksRemain(corruption) <=Ticks(corruption) /2 or target.TicksRemain(unstable_affliction) <=Ticks(unstable_affliction) /2 } and SoulShards() Spell(soulburn)
+	if {target.TicksRemain(unstable_affliction) <=1 or target.TicksRemain(corruption) <=1 or target.TicksRemain(agony) <=1 } and SoulShards() and target.HealthPercent() <=20 Spell(soulburn)
+	if SpellPower() >LastSpellSpellPower(unstable_affliction) and target.TicksRemain(unstable_affliction) <=Ticks(unstable_affliction) /2 and SoulShards() and target.HealthPercent() <=20 Spell(soulburn)
 }
 AddIcon mastery=1 help=moving
 {
@@ -161,7 +171,6 @@ AddIcon mastery=1 help=aoe
 	if ManaPercent() <70 Spell(life_tap)
 	if not InFlightToTarget(fel_flame) Spell(fel_flame)

-	if TimeInCombat() <10 and Glyph(56226) Spell(soul_swap)
 }
 AddIcon mastery=1 help=cd
 {
@@ -175,29 +184,34 @@ AddIcon mastery=2 help=main
 	if not InCombat()
 	{
 		if not BuffPresent(spell_power_multiplier any=1) Spell(dark_intent)
-		unless pet.CreatureFamily(Felguard) Spell(summon_felguard)
+		if not TalentPoints(grimoire_of_sacrifice_talent) or BuffExpires(grimoire_of_sacrifice) unless pet.CreatureFamily(Felguard) Spell(summon_felguard)
+		if TalentPoints(grimoire_of_service_talent) Spell(service_felguard)
 	}
 	if target.DebuffExpires(magic_vulnerability any=1) Spell(curse_of_the_elements)
 	if TalentPoints(grimoire_of_service_talent) Spell(service_felguard)
-	if TalentPoints(grimoire_of_sacrifice_talent) and BuffExpires(grimoire_of_sacrifice) unless pet.CreatureFamily(Felguard) Spell(summon_felguard)
-	if {not target.DebuffPresent(corruption) or target.DebuffRemains(corruption) <TickTime(corruption) } and target.DeadIn() >=6 Spell(corruption)
-	if {not target.DebuffPresent(doom) or target.DebuffRemains(doom) <TickTime(doom) or {target.TicksRemain(doom) +1 <Ticks(doom) and BuffPresent(dark_soul) } } and target.DeadIn() >=30 Spell(doom)
-	if target.DebuffRemains(corruption) >20 and BuffExpires(dark_soul) and DemonicFury() <=750 and target.DeadIn() >30 if Stance(1) cancel.Texture(Spell_shadow_demonform)
+	if BuffPresent(metamorphosis) and target.DebuffPresent(corruption) and target.DebuffRemains(corruption) <1.5 Spell(touch_of_chaos)
+	if BuffPresent(metamorphosis) and {target.TicksRemain(doom) <=1 or {target.TicksRemain(doom) +1 <Ticks(doom) and BuffPresent(dark_soul) } } and target.DeadIn() >=30 Spell(doom)
+	if BuffPresent(metamorphosis) and target.DebuffPresent(corruption) and target.DebuffRemains(corruption) <20 Spell(touch_of_chaos)
+	if BuffPresent(metamorphosis) and BuffExpires(dark_soul) and DemonicFury() <=650 and target.DeadIn() >30 if Stance(1) cancel.Texture(Spell_shadow_demonform)
+	if BuffPresent(metamorphosis) and BuffStacks(molten_core) and {BuffRemains(dark_soul) <CastTime(shadow_bolt) or BuffRemains(dark_soul) >CastTime(soul_fire) } Spell(soul_fire)
+	if BuffPresent(metamorphosis) Spell(touch_of_chaos)
+	if not target.DebuffPresent(corruption) and target.DeadIn() >=6 Spell(corruption)
 	if not InFlightToTarget(hand_of_guldan) and target.DebuffRemains(shadowflame) <1 +CastTime(shadow_bolt) Spell(hand_of_guldan)
-	if target.DebuffRemains(corruption) <20 Spell(touch_of_chaos)
-	if BuffStacks(molten_core) Spell(soul_fire)
-	Spell(touch_of_chaos)
-	if ManaPercent() <50 Spell(life_tap)
+	if BuffStacks(molten_core) and {BuffRemains(dark_soul) <CastTime(shadow_bolt) or BuffRemains(dark_soul) >CastTime(soul_fire) } Spell(soul_fire)
+	if ManaPercent() <60 Spell(life_tap)
 	Spell(shadow_bolt)
 	Spell(life_tap)
 }
 AddIcon mastery=2 help=offgcd
 {
-	if TalentPoints(grimoire_of_sacrifice_talent) Spell(grimoire_of_sacrifice)
+	if not InCombat()
+	{
+		if TalentPoints(grimoire_of_sacrifice_talent) Spell(grimoire_of_sacrifice)
+	}
 	Spell(melee)
 	Spell(felstorm)
 	Spell(wrathstorm)
-	if BuffPresent(dark_soul) or target.DebuffRemains(corruption) <5 or DemonicFury() >=900 or DemonicFury() >=target.DeadIn() *30 unless Stance(1) Spell(metamorphosis)
+	if {BuffPresent(dark_soul) and DemonicFury() /32 >BuffRemains(dark_soul) } or target.DebuffRemains(corruption) <5 or not target.DebuffPresent(doom) or DemonicFury() >=950 or DemonicFury() /32 >target.DeadIn() unless Stance(1) Spell(metamorphosis)
 }
 AddIcon mastery=2 help=moving
 {
@@ -206,15 +220,15 @@ AddIcon mastery=2 help=moving
 AddIcon mastery=2 help=aoe
 {

-	if {not target.DebuffPresent(corruption) or target.DebuffRemains(corruption) <TickTime(corruption) } and target.DeadIn() >30 Spell(corruption)
+	if BuffPresent(metamorphosis) and target.DebuffRemains(corruption) >10 and DemonicFury() <=650 and BuffExpires(dark_soul) and not target.DebuffPresent(immolation_aura) if Stance(1) cancel.Texture(Spell_shadow_demonform)
+	if BuffPresent(metamorphosis) Spell(immolation_aura)
+	if BuffPresent(metamorphosis) and target.DebuffRemains(corruption) <10 Spell(void_ray)
+	if BuffPresent(metamorphosis) and {not target.DebuffPresent(doom) or target.DebuffRemains(doom) <TickTime(doom) or {target.TicksRemain(doom) +1 <Ticks(doom) and BuffPresent(dark_soul) } } and target.DeadIn() >=30 Spell(doom)
+	if BuffPresent(metamorphosis) Spell(void_ray)
+	if not target.DebuffPresent(corruption) and target.DeadIn() >30 Spell(corruption)
 	Spell(hand_of_guldan)
-	if DemonicFury() >=1000 or DemonicFury() >=31 *target.DeadIn() unless Stance(1) Spell(metamorphosis)
-	Spell(immolation_aura)
-	if target.DebuffRemains(corruption) <10 Spell(void_ray)
-	if {not target.DebuffPresent(doom) or target.DebuffRemains(doom) <40 } and target.DeadIn() >30 Spell(doom)
-	Spell(void_ray)
-	if TalentPoints(harvest_life_talent) Spell(harvest_life)
-	if not TalentPoints(harvest_life_talent) Spell(hellfire)
+	if target.DebuffRemains(corruption) <10 or BuffPresent(dark_soul) or DemonicFury() >=950 or DemonicFury() /32 >target.DeadIn() unless Stance(1) Spell(metamorphosis)
+	Spell(hellfire)
 	Spell(life_tap)

 }
@@ -230,32 +244,39 @@ AddIcon mastery=3 help=main
 	if not InCombat()
 	{
 		if not BuffPresent(spell_power_multiplier any=1) Spell(dark_intent)
-		unless pet.CreatureFamily(Felhunter) Spell(summon_felhunter)
+		if not TalentPoints(grimoire_of_sacrifice_talent) or BuffExpires(grimoire_of_sacrifice) unless pet.CreatureFamily(Felhunter) Spell(summon_felhunter)
+		if TalentPoints(grimoire_of_service_talent) Spell(service_felhunter)
 	}
 	if target.DebuffExpires(magic_vulnerability any=1) Spell(curse_of_the_elements)
 	if TalentPoints(grimoire_of_service_talent) Spell(service_felhunter)
-	if TalentPoints(grimoire_of_sacrifice_talent) and BuffExpires(grimoire_of_sacrifice) unless pet.CreatureFamily(Felhunter) Spell(summon_felhunter)
 	if BurningEmbers() if target.HealthPercent(less 20) Spell(shadowburn)
 	if {target.TicksRemain(immolate) <Ticks(immolate) /2 or target.DebuffExpires(immolate) } and target.DeadIn() >=5 Spell(immolate)
-	if BurningEmbers() and {BuffStacks(backdraft) <3 or Level() <86 } and {BurningEmbers() >3.5 or BuffRemains(dark_soul) >CastTime(chaos_bolt) } and ManaPercent() <=80 Spell(chaos_bolt)
+	if Charges(conflagrate) ==2 Spell(conflagrate)
+	if not target.DebuffPresent(rain_of_fire) and not InFlightToTarget(rain_of_fire) Spell(rain_of_fire)
+	if BurningEmbers() and {BuffStacks(backdraft) <3 or Level() <86 } and {BurningEmbers() >3.5 or BuffRemains(dark_soul) >CastTime(chaos_bolt) or BuffRemains(skull_banner) >CastTime(chaos_bolt) } Spell(chaos_bolt)
 	Spell(conflagrate)
 	Spell(incinerate)
-	if BurningEmbers() >2 and ManaPercent() <10 Spell(chaos_bolt)
 }
 AddIcon mastery=3 help=offgcd
 {
-	if TalentPoints(grimoire_of_sacrifice_talent) Spell(grimoire_of_sacrifice)
+	if not InCombat()
+	{
+		if TalentPoints(grimoire_of_sacrifice_talent) Spell(grimoire_of_sacrifice)
+	}
 }
 AddIcon mastery=3 help=aoe
 {

 	if not target.DebuffPresent(rain_of_fire) and not InFlightToTarget(rain_of_fire) Spell(rain_of_fire)
+	if BurningEmbers() >=3.5 and BurningEmbers() and target.HealthPercent() <=20 focus.Spell(havoc)
+	if BurningEmbers() >=3.5 and BurningEmbers() and BuffStacks(havoc) >=1 if target.HealthPercent(less 20) Spell(shadowburn)
 	if BurningEmbers() and BuffExpires(fire_and_brimstone) Spell(fire_and_brimstone)
 	if BuffPresent(fire_and_brimstone) and not target.DebuffPresent(immolate) Spell(immolate)
-	if BurningEmbers() and BuffPresent(fire_and_brimstone) Spell(conflagrate)
+	if BuffPresent(fire_and_brimstone) Spell(conflagrate)
 	if BuffPresent(fire_and_brimstone) Spell(incinerate)
 	if not target.DebuffPresent(immolate) Spell(immolate)

+	if not target.DebuffPresent(rain_of_fire) and not InFlightToTarget(rain_of_fire) Spell(rain_of_fire)
 	focus.Spell(havoc)
 }
 AddIcon mastery=3 help=cd
diff --git a/defaut/Druide.lua b/defaut/Druide.lua
index 0af0cbd..829c11a 100644
--- a/defaut/Druide.lua
+++ b/defaut/Druide.lua
@@ -20,8 +20,6 @@ Define(faerie_fire 770)
 Define(ferocious_bite 22568)
   SpellInfo(ferocious_bite combo=0 energy=25 )
 Define(healing_touch 5185)
-Define(heart_of_the_wild 108288)
-  SpellInfo(heart_of_the_wild duration=45 cd=360 )
 Define(hurricane 16914)
   SpellInfo(hurricane duration=10 )
   SpellAddBuff(hurricane hurricane=1)
@@ -29,6 +27,8 @@ Define(incarnation 106731)
   SpellInfo(incarnation duration=30 cd=180 )
 Define(lunar_eclipse 48518)
   SpellAddBuff(lunar_eclipse lunar_eclipse=1)
+Define(mangle 33876)
+  SpellInfo(mangle energy=35 )
 Define(mark_of_the_wild 1126)
   SpellInfo(mark_of_the_wild duration=3600 )
   SpellAddBuff(mark_of_the_wild mark_of_the_wild=1)
@@ -52,8 +52,6 @@ Define(predatory_swiftness 16974)
 Define(rake 1822)
   SpellInfo(rake duration=15 energy=35 tick=3 combo=1 )
   SpellAddTargetDebuff(rake rake=1)
-Define(ravage 6785)
-  SpellInfo(ravage energy=45 combo=1 )
 Define(rip 1079)
   SpellInfo(rip duration=16 combo=0 energy=30 tick=2 )
   SpellAddTargetDebuff(rip rip=1)
@@ -97,11 +95,9 @@ Define(wild_mushroom_detonate 78777)
 Define(wrath 5176)
 Define(dream_of_cenarius_talent 17)
 Define(force_of_nature_talent 12)
-Define(heart_of_the_wild_talent 16)
 Define(incarnation_talent 11)
 Define(natures_swiftness_talent 4)
 Define(natures_vigil_talent 18)
-Define(soul_of_the_forest_talent 10)
 AddIcon mastery=1 help=main
 {
 	if not InCombat()
@@ -112,6 +108,7 @@ AddIcon mastery=1 help=main
 	}
 	if TalentPoints(force_of_nature_talent) Spell(treants)
 	if TalentPoints(dream_of_cenarius_talent) and not BuffPresent(dream_of_cenarius_damage) and ManaPercent() >25 Spell(healing_touch)
+	if BuffStacks(shooting_stars) and {True() or not BuffPresent(solar_eclipse) } Spell(starsurge)
 	if BuffPresent(lunar_eclipse) and {target.DebuffRemains(moonfire) <{BuffRemains(natures_grace) -2 +2 *ArmorSetParts(T14 more 4) } } Spell(moonfire)
 	if BuffPresent(solar_eclipse) and {target.DebuffRemains(sunfire) <{BuffRemains(natures_grace) -2 +2 *ArmorSetParts(T14 more 4) } } Spell(sunfire)
 	if {target.DebuffRemains(moonfire) <{BuffRemains(natures_grace) -2 +2 *ArmorSetParts(T14 more 4) } } Spell(moonfire)
@@ -133,7 +130,7 @@ AddIcon mastery=1 help=moving
 {
 	if target.TicksRemain(moonfire) <2 Spell(moonfire)
 	if target.TicksRemain(sunfire) <2 Spell(sunfire)
-	if BuffStacks(wild_mushroom) <5 Spell(wild_mushroom)
+	if BuffStacks(wild_mushroom) <0 Spell(wild_mushroom)
 	if BuffStacks(shooting_stars) Spell(starsurge)
 	if BuffPresent(lunar_eclipse) Spell(moonfire)
 	Spell(sunfire)
@@ -148,9 +145,11 @@ AddIcon mastery=1 help=cd
 {
 	if not BuffPresent(starfall) Spell(starfall)
 	if BuffPresent(celestial_alignment) Spell(berserking)
+	if BuffPresent(celestial_alignment) or SpellCooldown(celestial_alignment) >30  { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
 	if TalentPoints(incarnation_talent) and {BuffPresent(lunar_eclipse) or BuffPresent(solar_eclipse) } Spell(incarnation)
 	if {not BuffPresent(lunar_eclipse) and not BuffPresent(solar_eclipse) } and {BuffPresent(chosen_of_elune) or not TalentPoints(incarnation_talent) or SpellCooldown(incarnation) >10 } Spell(celestial_alignment)
-	if TalentPoints(natures_vigil_talent) and {{TalentPoints(incarnation_talent) and BuffPresent(chosen_of_elune) } or {not TalentPoints(incarnation_talent) and BuffPresent(celestial_alignment) } } Spell(natures_vigil)
+	if PTR() ==1 and TalentPoints(natures_vigil_talent) Spell(natures_vigil)
+	if not PTR() ==1 and TalentPoints(natures_vigil_talent) and {{TalentPoints(incarnation_talent) and BuffPresent(chosen_of_elune) } or {not TalentPoints(incarnation_talent) and BuffPresent(celestial_alignment) } } Spell(natures_vigil)
 }
 AddIcon mastery=2 help=main
 {
@@ -160,69 +159,115 @@ AddIcon mastery=2 help=main
 		if not BuffPresent(dream_of_cenarius_damage) and TalentPoints(dream_of_cenarius_talent) Spell(healing_touch)
 		unless Stance(3) Spell(cat_form)
 		Spell(savage_roar)
-		if TalentPoints(force_of_nature_talent) Spell(treants)
 	}
-
-	if target.DebuffStacks(weakened_armor any=1) <3 if CheckBoxOn(faerie_fire_check) Spell(faerie_fire)
-	if BuffExpires(savage_roar) Spell(savage_roar)
 	if target.IsInterruptible() Spell(skull_bash_cat)
-	if TalentPoints(dream_of_cenarius_talent) and BuffPresent(predatory_swiftness) and ComboPoints() >=4 and BuffStacks(dream_of_cenarius_damage) <2 Spell(healing_touch)
-	if TalentPoints(dream_of_cenarius_talent) and BuffPresent(predatory_swiftness) and BuffRemains(predatory_swiftness) <=1 and BuffExpires(dream_of_cenarius_damage) Spell(healing_touch)
-	if TalentPoints(dream_of_cenarius_talent) and PreviousSpell(natures_swiftness) Spell(healing_touch)
-	if ComboPoints() >=1 and target.DebuffPresent(rip) and target.DebuffRemains(rip) <=2 and target.HealthPercent() <=25 Spell(ferocious_bite)
-	if BuffRemains(savage_roar) <=1 or {BuffRemains(savage_roar) <=3 and ComboPoints() >0 } and target.HealthPercent() <25 Spell(savage_roar)
-	if ComboPoints() >=5 and BuffPresent(virmens_bite) and BuffPresent(dream_of_cenarius_damage) and LastSpellDamageMultiplier(rip) <DamageMultiplier(rip) and target.HealthPercent() <=25 and target.DeadIn() >30 Spell(rip)
+	if BuffPresent(predatory_swiftness) and BuffRemains(predatory_swiftness) <=1.5 and BuffExpires(dream_of_cenarius_damage) Spell(healing_touch)
+	if BuffExpires(savage_roar) Spell(savage_roar)
+	if target.DebuffStacks(weakened_armor any=1) <3 if CheckBoxOn(faerie_fire_check) Spell(faerie_fire)
+	if BuffPresent(predatory_swiftness) and ComboPoints() >=4 and BuffStacks(dream_of_cenarius_damage) <2 Spell(healing_touch)
+	if BuffPresent(natures_swiftness) Spell(healing_touch)
+	if ComboPoints() >=1 and target.DebuffPresent(rip) and target.DebuffRemains(rip) <=3 and target.HealthPercent() <=25 Spell(ferocious_bite)
+	if {target.DeadIn() <=4 and ComboPoints() >=5 } or {target.DeadIn() <=1 and ComboPoints() >=3 } Spell(ferocious_bite)
+	if BuffRemains(savage_roar) <=3 and ComboPoints() >0 and target.HealthPercent() <25 Spell(savage_roar)
+	if ComboPoints() >=5 and BuffPresent(virmens_bite) and BuffPresent(dream_of_cenarius_damage) and target.HealthPercent() <=25 and target.DeadIn() >30 Spell(rip)
 	if ComboPoints() >=5 and target.DebuffPresent(rip) and target.HealthPercent() <=25 Spell(ferocious_bite)
-	if ComboPoints() >=5 and target.DeadIn() >=6 and target.DebuffRemains(rip) <2.0 and BuffPresent(dream_of_cenarius_damage) Spell(rip)
-	if ComboPoints() >=5 and target.DeadIn() >=6 and target.DebuffRemains(rip) <6.0 and BuffPresent(dream_of_cenarius_damage) and LastSpellDamageMultiplier(rip) <=DamageMultiplier(rip) and target.HealthPercent() >25 Spell(rip)
-	if BuffRemains(savage_roar) <=1 or {BuffRemains(savage_roar) <=3 and ComboPoints() >0 } Spell(savage_roar)
-	if ComboPoints() >=5 and target.DeadIn() >=6 and target.DebuffRemains(rip) <2.0 and {BuffPresent(berserk) or target.DebuffRemains(rip) <=SpellCooldown(tigers_fury) } Spell(rip)
-	if target.DebuffPresent(rip) and target.DebuffRemains(rip) <=4 Spell(ravage usable=1)
-	if target.DebuffPresent(rip) and target.DebuffRemains(rip) <=4 Spell(shred)
-	if {target.DeadIn() <=4 and ComboPoints() >=5 } or target.DeadIn() <=1 Spell(ferocious_bite)
-	if BuffRemains(savage_roar) <=6 and ComboPoints() >=5 and {{{target.DebuffRemains(rip) +{8 -{target.TicksAdded(rip) *2 } } } >6 and {TalentPoints(soul_of_the_forest_talent) or BuffPresent(berserk) } } or {target.DebuffRemains(rip) +{8 -{target.TicksAdded(rip) *2 } } } >10 } and target.DebuffPresent(rip) Spell(savage_roar)
-	if ComboPoints() >=5 and {target.DebuffRemains(rip) +{8 -{target.TicksAdded(rip) *2 } } } >6 and target.DebuffPresent(rip) and {TalentPoints(soul_of_the_forest_talent) or BuffPresent(berserk) } Spell(ferocious_bite)
-	if ComboPoints() >=5 and {target.DebuffRemains(rip) +{8 -{target.TicksAdded(rip) *2 } } } >10 and target.DebuffPresent(rip) Spell(ferocious_bite)
-	if target.DeadIn() >=8.5 and BuffPresent(dream_of_cenarius_damage) and {LastSpellDamageMultiplier(rake) <DamageMultiplier(rake) } Spell(rake)
-	if target.DeadIn() >=8.5 and target.DebuffRemains(rake) <3.0 and {BuffPresent(berserk) or {SpellCooldown(tigers_fury) +0.8 } >=target.DebuffRemains(rake) } Spell(rake)
-	if BuffStacks(omen_of_clarity) Spell(ravage usable=1)
-	if BuffStacks(omen_of_clarity) Spell(shred)
-	if BuffRemains(predatory_swiftness) >1 and not {Energy() +{EnergyRegen() *{BuffRemains(predatory_swiftness) -1 } } <{4 -ComboPoints() } *20 } Spell(ravage usable=1)
-	if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(ravage usable=1)
-	if target.DeadIn() <=8.5 Spell(ravage usable=1)
-	if BuffRemains(predatory_swiftness) >1 and not {Energy() +{EnergyRegen() *{BuffRemains(predatory_swiftness) -1 } } <{4 -ComboPoints() } *20 } Spell(shred)
-	if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(shred)
-	if target.DeadIn() <=8.5 Spell(shred)
-	if {BuffPresent(tigers_fury) or BuffPresent(berserk) } Spell(ravage usable=1)
-	if SpellCooldown(tigers_fury) <=3.0 Spell(ravage usable=1)
-	if TimeToMaxEnergy() <=1.0 Spell(ravage usable=1)
-	if {BuffPresent(tigers_fury) or BuffPresent(berserk) } Spell(shred)
-	if SpellCooldown(tigers_fury) <=3.0 Spell(shred)
-	if TimeToMaxEnergy() <=1.0 Spell(shred)
-	if TalentPoints(force_of_nature_talent) Spell(treants)
-
+	if ComboPoints() >=5 and target.DeadIn() >=6 and target.DebuffRemains(rip) <2 and BuffPresent(dream_of_cenarius_damage) Spell(rip)
+	if ComboPoints() >=5 and target.DeadIn() >=6 and target.DebuffRemains(rip) <2 and {BuffPresent(berserk) or target.DebuffRemains(rip) +1.9 <=SpellCooldown(tigers_fury) } Spell(rip)
+	if BuffRemains(savage_roar) <=3 and ComboPoints() >0 and BuffRemains(savage_roar) +2 >target.DebuffRemains(rip) Spell(savage_roar)
+	if BuffRemains(savage_roar) <=6 and ComboPoints() >=5 and BuffRemains(savage_roar) +2 <=target.DebuffRemains(rip) Spell(savage_roar)
+	if ComboPoints() >=5 and target.DebuffRemains(rip) >6 Spell(ferocious_bite)
+	if target.DebuffRemains(rake) <9 and BuffPresent(dream_of_cenarius_damage) Spell(rake)
+	if target.DebuffRemains(rake) <3 Spell(rake)
+	if BuffStacks(omen_of_clarity)
+	{
+		if BuffStacks(omen_of_clarity) Spell(shred)
+		if BuffPresent(berserk) Spell(shred)
+		if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle)
+		Spell(shred)
+	}
+	if {ComboPoints() <5 and target.DebuffRemains(rip) <3 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 }
+	{
+		if BuffStacks(omen_of_clarity) Spell(shred)
+		if BuffPresent(berserk) Spell(shred)
+		if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle)
+		Spell(shred)
+	}
+	if BuffRemains(predatory_swiftness) >1
+	{
+		if BuffStacks(omen_of_clarity) Spell(shred)
+		if BuffPresent(berserk) Spell(shred)
+		if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle)
+		Spell(shred)
+	}
+	if target.DeadIn() <=8.5
+	{
+		if BuffStacks(omen_of_clarity) Spell(shred)
+		if BuffPresent(berserk) Spell(shred)
+		if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle)
+		Spell(shred)
+	}
+	if BuffPresent(tigers_fury) or BuffPresent(berserk)
+	{
+		if BuffStacks(omen_of_clarity) Spell(shred)
+		if BuffPresent(berserk) Spell(shred)
+		if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle)
+		Spell(shred)
+	}
+	if SpellCooldown(tigers_fury) <=3
+	{
+		if BuffStacks(omen_of_clarity) Spell(shred)
+		if BuffPresent(berserk) Spell(shred)
+		if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle)
+		Spell(shred)
+	}
+	if TimeToMaxEnergy() <=1
+	{
+		if BuffStacks(omen_of_clarity) Spell(shred)
+		if BuffPresent(berserk) Spell(shred)
+		if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle)
+		Spell(shred)
+	}
 }
 AddIcon mastery=2 help=offgcd
 {
-
-	if Energy() <=35 and not BuffStacks(omen_of_clarity) Spell(tigers_fury)
-	if BuffStacks(omen_of_clarity) and target.DebuffRemains(thrash) <3 and BuffExpires(dream_of_cenarius_damage) Spell(thrash)
-	if TalentPoints(natures_swiftness_talent) and TalentPoints(dream_of_cenarius_talent) and BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5 and target.HealthPercent() <=25 Spell(natures_swiftness)
-	if TalentPoints(natures_swiftness_talent) and TalentPoints(dream_of_cenarius_talent) and BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5 and target.DebuffRemains(rip) <3 and {BuffPresent(berserk) or target.DebuffRemains(rip) <=SpellCooldown(tigers_fury) } and target.HealthPercent() >25 Spell(natures_swiftness)
-	if BuffStacks(omen_of_clarity) and target.DebuffRemains(thrash) <3 Spell(thrash)
-	if ComboPoints() >=5 and target.DebuffRemains(thrash) <6 and {BuffPresent(tigers_fury) or BuffPresent(berserk) } Spell(thrash)
-	if ComboPoints() >=5 and target.DebuffRemains(thrash) <6 and SpellCooldown(tigers_fury) <=3.0 Spell(thrash)
-	if ComboPoints() >=5 and target.DebuffRemains(thrash) <6 and TimeToMaxEnergy() <=1.0 Spell(thrash)
-
+	if {Energy() <=35 and not BuffStacks(omen_of_clarity) } Spell(tigers_fury)
+	if target.DeadIn() >=6 and BuffStacks(omen_of_clarity) and target.DebuffRemains(thrash) <3 Spell(thrash)
+	if BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5 and target.HealthPercent() <=25 Spell(natures_swiftness)
+	if BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5 and target.DebuffRemains(rip) <3 and {BuffPresent(berserk) or target.DebuffRemains(rip) +1.9 <=SpellCooldown(tigers_fury) } Spell(natures_swiftness)
+	if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and {target.DebuffRemains(rip) >=4 or BuffPresent(berserk) } Spell(thrash)
+	if BuffStacks(omen_of_clarity)
+	{
+		if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash)
+	}
+	if {ComboPoints() <5 and target.DebuffRemains(rip) <3 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 }
+	{
+		if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash)
+	}
+	if BuffRemains(predatory_swiftness) >1
+	{
+		if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash)
+	}
+	if target.DeadIn() <=8.5
+	{
+		if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash)
+	}
+	if BuffPresent(tigers_fury) or BuffPresent(berserk)
+	{
+		if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash)
+	}
+	if SpellCooldown(tigers_fury) <=3
+	{
+		if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash)
+	}
+	if TimeToMaxEnergy() <=1
+	{
+		if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash)
+	}
 }
 AddIcon mastery=2 help=cd
 {
-
-	 { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
-	if BuffPresent(tigers_fury) or {target.DeadIn() <15 and SpellCooldown(tigers_fury) >6 } Spell(berserk)
-	if BuffPresent(berserk) and TalentPoints(natures_vigil_talent) Spell(natures_vigil)
-	if BuffPresent(berserk) and TalentPoints(incarnation_talent) Spell(incarnation)
 	Spell(berserking)
-
+	 { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
+	if BuffPresent(tigers_fury) or {target.DeadIn() <18 and SpellCooldown(tigers_fury) >6 } Spell(berserk)
 }
 ]]
\ No newline at end of file
diff --git a/defaut/Guerrier.lua b/defaut/Guerrier.lua
index 223428f..c8f0f2d 100644
--- a/defaut/Guerrier.lua
+++ b/defaut/Guerrier.lua
@@ -12,11 +12,10 @@ Define(berserker_rage 18499)
 Define(bladestorm 46924)
   SpellInfo(bladestorm duration=6 cd=90 )
   SpellAddBuff(bladestorm bladestorm=1)
-Define(bloodbath 12292)
-  SpellInfo(bloodbath duration=12)
-  SpellAddBuff(bloodbath bloodbath=1)
-Define(bloodsurge 46916)
-  SpellInfo(bloodsurge duration=10)
+Define(bloodbath 113344)
+  SpellInfo(bloodbath duration=6 tick=1 )
+  SpellAddTargetDebuff(bloodbath bloodbath=1)
+Define(bloodsurge 46915)
 Define(bloodthirst 23881)
   SpellInfo(bloodthirst rage=-10 cd=4.5 )
 Define(cleave 845)
@@ -90,6 +89,8 @@ Define(shield_wall 871)
 Define(shockwave 46968)
   SpellInfo(shockwave cd=20 )
   SpellAddBuff(shockwave shockwave=1)
+Define(skull_banner 114207)
+  SpellInfo(skull_banner duration=10 cd=180 )
 Define(slam 1464)
   SpellInfo(slam rage=30 )
 Define(storm_bolt 107570)
@@ -139,16 +140,13 @@ AddIcon mastery=1 help=main
 	Spell(mortal_strike)
 	if target.DebuffRemains(colossus_smash) <=1.5 Spell(colossus_smash)
 	if target.HealthPercent(less 20) Spell(execute)
+	Spell(overpower usable=1)
 	if TalentPoints(storm_bolt_talent) Spell(storm_bolt)
-	if SpellUsable(overpower) Spell(overpower usable=1)
 	if TalentPoints(shockwave_talent) Spell(shockwave)
 	if TalentPoints(dragon_roar_talent) Spell(dragon_roar)
-	if {Rage() >=70 or target.DebuffPresent(colossus_smash) } and target.HealthPercent() >=20 Spell(slam)
-	Spell(heroic_throw)
-	if Rage() <70 and not target.DebuffPresent(colossus_smash) Spell(battle_shout)
-	if target.HealthPercent() >=20 Spell(slam)
 	if TalentPoints(impending_victory_talent) and target.HealthPercent() >=20 Spell(impending_victory)
-	if Rage() <70 Spell(battle_shout)
+	if Rage() >=40 and target.HealthPercent() >=20 Spell(slam)
+	if Rage() <90 Spell(battle_shout)
 }
 AddIcon mastery=1 help=offgcd
 {
@@ -157,7 +155,8 @@ AddIcon mastery=1 help=offgcd
 	if not BuffPresent(enrage) Spell(berserker_rage)
 	if target.DebuffPresent(colossus_smash) if CheckBoxOn(heroic_leap_check) Spell(heroic_leap)
 	if Rage() >=40 Spell(deadly_calm)
-	if {{BuffPresent(taste_for_blood) and BuffRemains(taste_for_blood) <=2 } or {BuffStacks(taste_for_blood) ==5 and SpellUsable(overpower) } or {BuffPresent(taste_for_blood) and target.DebuffRemains(colossus_smash) <=2 and not SpellCooldown(colossus_smash) ==0 } or BuffPresent(deadly_calm) or Rage() >110 } and target.HealthPercent() >=20 and target.DebuffPresent(colossus_smash) Spell(heroic_strike)
+	if not PTR() and {{BuffPresent(taste_for_blood) and BuffRemains(taste_for_blood) <=2 } or {BuffStacks(taste_for_blood) ==5 and SpellUsable(overpower) } or {BuffPresent(taste_for_blood) and target.DebuffRemains(colossus_smash) <=2 and not SpellCooldown(colossus_smash) ==0 } or BuffPresent(deadly_calm) or Rage() >110 } and target.HealthPercent() >=20 and target.DebuffPresent(colossus_smash) Spell(heroic_strike)
+	if PTR() and {{{target.DebuffPresent(colossus_smash) and Rage() >=70 } } and target.HealthPercent() >=20 } or Rage() >=110 Spell(heroic_strike)
 }
 AddIcon mastery=1 help=aoe
 {
@@ -174,8 +173,8 @@ AddIcon mastery=1 help=cd
 {
 	if {{target.DebuffRemains(colossus_smash) >=5 or SpellCooldown(colossus_smash) <=4 } and {{not TalentPoints(avatar_talent) or not ArmorSetParts(T14 more 4) } and {{target.HealthPercent() <20 or target.DeadIn() >315 or {target.DeadIn() >165 and ArmorSetParts(T14 more 4) } } } or {TalentPoints(avatar_talent) and ArmorSetParts(T14 more 4) and BuffPresent(avatar) } } } or target.DeadIn() <=18 Spell(recklessness)
 	if TalentPoints(avatar_talent) and {{{SpellCooldown(recklessness) >=180 or BuffPresent(recklessness) } or {target.HealthPercent() >=20 and target.DeadIn() >195 } or {target.HealthPercent() <20 and ArmorSetParts(T14 more 4) } } or target.DeadIn() <=20 } Spell(avatar)
+	if {BuffPresent(recklessness) and not ArmorSetParts(T15 more 4) } or {not BuffPresent(recklessness) and ArmorSetParts(T15 more 4) } Spell(skull_banner)
 	if not TalentPoints(bloodbath_talent) or {TalentPoints(bloodbath_talent) and BuffPresent(bloodbath) }  { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
-	if TalentPoints(bladestorm_talent) and SpellCooldown(colossus_smash) >=5 and not target.DebuffPresent(colossus_smash) and SpellCooldown(bloodthirst) >=2 and target.HealthPercent() >=20 Spell(bladestorm)
 }
 AddIcon mastery=2 help=main
 {
@@ -187,11 +186,11 @@ AddIcon mastery=2 help=main
 	if not {target.HealthPercent() <20 and target.DebuffPresent(colossus_smash) and Rage() >=30 } Spell(bloodthirst)
 	if BuffStacks(bloodsurge) and target.HealthPercent() >=20 and SpellCooldown(bloodthirst) <=1 Spell(wild_strike)
 	if not {target.HealthPercent() <20 and target.DebuffPresent(colossus_smash) and Rage() >=30 } and SpellCooldown(bloodthirst) <=1 and SpellCooldown(bloodthirst) if CheckBoxOn(showwait) Texture(Spell_nature_timestop)
+	if TalentPoints(dragon_roar_talent) and {not target.DebuffPresent(colossus_smash) and {BuffPresent(bloodbath) or not TalentPoints(bloodbath_talent) } } Spell(dragon_roar)
 	Spell(colossus_smash)
-	if TalentPoints(dragon_roar_talent) and {not target.DebuffPresent(colossus_smash) and BuffPresent(bloodbath) } Spell(dragon_roar)
 	if target.HealthPercent(less 20) Spell(execute)
 	if TalentPoints(storm_bolt_talent) Spell(storm_bolt)
-	if BuffStacks(raging_blow_aura) ==2 or {BuffStacks(raging_blow_aura) and {target.HealthPercent() <=20 or target.DebuffPresent(colossus_smash) or BuffPresent(bloodbath) or BuffPresent(recklessness) or SpellCooldown(colossus_smash) >=6 or {SpellCooldown(bloodthirst) >=1 and BuffRemains(raging_blow_aura) <=6 } } } Spell(raging_blow)
+	if BuffStacks(raging_blow_aura) ==2 or {BuffStacks(raging_blow_aura) and {target.DebuffPresent(colossus_smash) or SpellCooldown(colossus_smash) >=3 or {SpellCooldown(bloodthirst) >=1 and BuffRemains(raging_blow_aura) <=3 } } } Spell(raging_blow)
 	if BuffStacks(bloodsurge) and target.HealthPercent() >=20 Spell(wild_strike)
 	if TalentPoints(shockwave_talent) Spell(shockwave)
 	Spell(heroic_throw)
@@ -206,9 +205,10 @@ AddIcon mastery=2 help=offgcd
 	if target.IsInterruptible() Spell(pummel)
 	if TalentPoints(bloodbath_talent) and {target.DebuffRemains(colossus_smash) >=5 and {target.DeadIn() >79 or {target.DeadIn() <79 and target.HealthPercent() <20 and {BuffPresent(recklessness) or SpellCooldown(recklessness) >={target.DeadIn() -25 } } } } } Spell(bloodbath)
 	if not {BuffStacks(enrage) or {BuffStacks(raging_blow_aura) ==2 and target.HealthPercent() >=20 } } or {BuffRemains(recklessness) >=10 and not BuffStacks(raging_blow_aura) } Spell(berserker_rage)
-	if {not TalentPoints(bloodbath_talent) and Rage() >=40 } or {TalentPoints(bloodbath_talent) and BuffPresent(bloodbath) and Rage() >=40 } Spell(deadly_calm)
 	if target.DebuffPresent(colossus_smash) if CheckBoxOn(heroic_leap_check) Spell(heroic_leap)
+	if {not TalentPoints(bloodbath_talent) and Rage() >=40 } or {TalentPoints(bloodbath_talent) and BuffPresent(bloodbath) and Rage() >=40 } Spell(deadly_calm)
 	if {{{target.DebuffPresent(colossus_smash) and Rage() >=40 } or {BuffPresent(deadly_calm) and Rage() >=30 } } and target.HealthPercent() >=20 } or Rage() >=110 Spell(heroic_strike)
+	if {{target.DebuffPresent(colossus_smash) and Rage() >=40 } and target.HealthPercent() >=20 } or Rage() >=110 Spell(heroic_strike)
 }
 AddIcon mastery=2 help=aoe
 {
@@ -225,6 +225,7 @@ AddIcon mastery=2 help=cd
 {
 	if {{target.DebuffRemains(colossus_smash) >=5 or SpellCooldown(colossus_smash) <=4 } and {{not TalentPoints(avatar_talent) or not ArmorSetParts(T14 more 4) } and {{target.HealthPercent() <20 or target.DeadIn() >315 or {target.DeadIn() >165 and ArmorSetParts(T14 more 4) } } } or {TalentPoints(avatar_talent) and ArmorSetParts(T14 more 4) and BuffPresent(avatar) } } } and {not TalentPoints(bloodbath_talent) or SpellCooldown(bloodbath) <=3 or {{target.DeadIn() >315 and target.DeadIn() <{315 +SpellCooldown(bloodbath) } } or {ArmorSetParts(T14 more 4) and target.DeadIn() >165 and target.DeadIn() <{165 +SpellCooldown(bloodbath) } } } } or target.DeadIn() <=18 Spell(recklessness)
 	if TalentPoints(avatar_talent) and {{{SpellCooldown(recklessness) >=180 or BuffPresent(recklessness) } or {target.HealthPercent() >=20 and target.DeadIn() >195 } or {target.HealthPercent() <20 and ArmorSetParts(T14 more 4) } } or target.DeadIn() <=20 } Spell(avatar)
+	if {BuffPresent(recklessness) and not ArmorSetParts(T15 more 4) } or {not BuffPresent(recklessness) and ArmorSetParts(T15 more 4) } Spell(skull_banner)
 	if not TalentPoints(bloodbath_talent) or {TalentPoints(bloodbath_talent) and BuffPresent(bloodbath) }  { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
 	if TalentPoints(bladestorm_talent) and SpellCooldown(colossus_smash) >=5 and not target.DebuffPresent(colossus_smash) and SpellCooldown(bloodthirst) >=2 and target.HealthPercent() >=20 Spell(bladestorm)
 }
@@ -244,7 +245,8 @@ AddIcon mastery=3 help=main
 AddIcon mastery=3 help=offgcd
 {
 	if target.IsInterruptible() Spell(pummel)
-	if BuffPresent(ultimatum) Spell(heroic_strike)
+	Spell(deadly_calm)
+	if {{BuffPresent(ultimatum) or {BuffPresent(deadly_calm) and Rage() >=30 } } and target.HealthPercent() >=20 } Spell(heroic_strike)
 	if Rage() <90 Spell(berserker_rage)
 	if BuffExpires(shield_block_aura) Spell(shield_block)
 	if BuffExpires(shield_barrier) and Rage() >80 Spell(shield_barrier)
@@ -267,5 +269,6 @@ AddIcon mastery=3 help=cd
 	if TalentPoints(avatar_talent) Spell(avatar)
 	Spell(recklessness)
 	if BuffExpires(shield_block_aura) Spell(shield_wall)
+	 { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
 }
 ]]
\ No newline at end of file
diff --git a/defaut/Mage.lua b/defaut/Mage.lua
index 62dfb16..52dcc43 100644
--- a/defaut/Mage.lua
+++ b/defaut/Mage.lua
@@ -23,12 +23,7 @@ Define(arcane_power 12042)
 Define(berserking 26297)
   SpellInfo(berserking duration=10 cd=180 )
   SpellAddBuff(berserking berserking=1)
-Define(blood_fury 20572)
-  SpellInfo(blood_fury duration=15 cd=120 )
-  SpellAddBuff(blood_fury blood_fury=1)
 Define(brain_freeze 44549)
-Define(cold_snap 11958)
-  SpellInfo(cold_snap cd=180 )
 Define(combustion 11129)
   SpellInfo(combustion cd=45 )
 Define(conjure_mana_gem 759)
@@ -68,7 +63,9 @@ Define(ignite 12654)
   SpellAddTargetDebuff(ignite ignite=1)
 Define(inferno_blast 108853)
   SpellInfo(inferno_blast cd=8 )
-Define(invocation 114003)
+Define(invokers_energy 116257)
+  SpellInfo(invokers_energy duration=40 )
+  SpellAddBuff(invokers_energy invokers_energy=1)
 Define(living_bomb 44457)
   SpellInfo(living_bomb duration=12 tick=3 )
   SpellAddTargetDebuff(living_bomb living_bomb=1)
@@ -91,6 +88,7 @@ Define(pyroblast_aura 48108)
   SpellAddBuff(pyroblast_aura pyroblast_aura=1)
 Define(rune_of_power 116011)
   SpellInfo(rune_of_power duration=60 )
+Define(scorch 2948)
 Define(time_warp 35346)
   SpellInfo(time_warp duration=6 cd=15 )
   SpellAddBuff(time_warp time_warp=1)
@@ -107,15 +105,14 @@ AddIcon mastery=1 help=main
 		Spell(rune_of_power)
 	}
 	if ItemCharges(36799) <3 and False() Spell(conjure_mana_gem)
-	if BuffPresent(alter_time) and BuffPresent(presence_of_mind) Spell(arcane_blast)
+	if BuffPresent(alter_time) and BuffRemains(alter_time) <2 Spell(arcane_barrage)
 	if BuffPresent(alter_time) or BuffStacks(arcane_missiles_aura) ==2 Spell(arcane_missiles)
-	if BuffExpires(rune_of_power) and BuffExpires(alter_time) Spell(rune_of_power)
+	if BuffRemains(rune_of_power) <=2 and BuffExpires(alter_time) Spell(rune_of_power)
 	if {not target.DebuffPresent(living_bomb) or target.DebuffRemains(living_bomb) <TickTime(living_bomb) } and target.DeadIn() >TickTime(living_bomb) *3 Spell(living_bomb)
-	if ManaPercent() >92 Spell(arcane_blast)
+	if ManaPercent() >92 or BuffPresent(alter_time) or BuffRemains(arcane_charge) <3 Spell(arcane_blast)
 	if BuffStacks(arcane_missiles_aura) and {SpellCooldown(alter_time_activate) >4 or target.DeadIn() <10 } Spell(arcane_missiles)
-	if BuffPresent(arcane_charge) and BuffExpires(arcane_power) and BuffExpires(alter_time) and target.DeadIn() >25 and {SpellCooldown(mana_gem) >10 or ItemCharges(36799) ==0 } Spell(arcane_barrage)
-	if BuffStacks(arcane_charge) >=4 and BuffExpires(arcane_missiles_aura) and target.DeadIn() >25 Spell(arcane_barrage)
-	Spell(arcane_blast)
+	if {SpellCooldown(mana_gem) <=9 and not ManaPercent() <=80 } or target.DeadIn() <30 Spell(arcane_blast)
+	if BuffExpires(alter_time) Spell(scorch)
 }
 AddIcon mastery=1 help=offgcd
 {
@@ -123,22 +120,28 @@ AddIcon mastery=1 help=offgcd
 	cancel.Spell(alter_time)
 	if target.HealthPercent() <25 or TimeInCombat() >5 Spell(time_warp)
 	if BuffExpires(alter_time) and BuffPresent(arcane_power) and BuffStacks(arcane_missiles_aura) ==2 and BuffStacks(arcane_charge) >3 and BuffRemains(rune_of_power) >6 Spell(alter_time)
-	if ManaPercent() <84 and BuffExpires(alter_time) Spell(mana_gem)
+	if ManaPercent() <80 and BuffExpires(alter_time) Spell(mana_gem)
 }
 AddIcon mastery=1 help=moving
 {
-	Spell(arcane_barrage)
+	if BuffPresent(arcane_charge) and BuffRemains(arcane_charge) <=2 Spell(arcane_barrage)
+	Spell(scorch)
 	Spell(fire_blast)
 	Spell(ice_lance)
 }
 AddIcon mastery=1 help=cd
 {
+	if not InCombat()
+	{
+		Spell(mirror_image)
+	}
 	if target.DeadIn() <18 Spell(arcane_power)
 	if target.DeadIn() <18 Spell(berserking)
+	if BuffExpires(alter_time)  { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
+	if SpellCooldown(alter_time_activate) >45 or target.DeadIn() <25 and BuffRemains(rune_of_power) >20  { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
 	Spell(mirror_image)
 	if BuffRemains(rune_of_power) >15 and BuffExpires(alter_time) and BuffStacks(arcane_charge) >1 Spell(arcane_power)
 	if BuffRemains(rune_of_power) >10 and BuffExpires(alter_time) and BuffStacks(arcane_charge) >2 Spell(berserking)
-	if BuffExpires(alter_time) Spell(presence_of_mind)
 }
 AddIcon mastery=2 help=main
 {
@@ -152,6 +155,7 @@ AddIcon mastery=2 help=main
 	if BuffPresent(presence_of_mind) and SpellCooldown(alter_time_activate) >4 Spell(pyroblast)
 	if BuffStacks(heating_up) and BuffExpires(pyroblast_aura) Spell(inferno_blast)
 	if {not target.DebuffPresent(living_bomb) or target.DebuffRemains(living_bomb) <TickTime(living_bomb) } and target.DeadIn() >TickTime(living_bomb) *3 Spell(living_bomb)
+	if not target.DebuffPresent(pyroblast_aura) Spell(pyroblast)
 	Spell(fireball)
 }
 AddIcon mastery=2 help=offgcd
@@ -159,11 +163,10 @@ AddIcon mastery=2 help=offgcd
 	if target.IsInterruptible() if target.IsInterruptible() Spell(counterspell)
 	cancel.Spell(alter_time)
 	if target.HealthPercent() <25 or TimeInCombat() >5 Spell(time_warp)
-	if target.DeadIn() <12 Spell(combustion)
-	if ArmorSetParts(T14 more 4) and target.DebuffPresent(ignite) and target.DebuffPresent(pyroblast_aura) Spell(combustion)
-	if not ArmorSetParts(T14 more 4) and LastSpellDamage(ignite) >=12000 and target.DebuffPresent(pyroblast_aura) Spell(combustion)
+	if target.DeadIn() <22 Spell(combustion)
+	if LastSpellDamage(ignite) >={{CritDamage(fireball) +CritDamage(inferno_blast) +Damage(pyroblast) } *{Mastery() /100} *0.5 } and target.DebuffPresent(pyroblast_aura) Spell(combustion)
 	if ManaPercent() <84 and BuffExpires(alter_time) Spell(mana_gem)
-	if BuffExpires(alter_time) and BuffStacks(pyroblast_aura) and BuffRemains(invocation) >6 Spell(alter_time)
+	if BuffExpires(alter_time) and BuffStacks(pyroblast_aura) and BuffRemains(invokers_energy) >6 Spell(alter_time)
 }
 AddIcon mastery=2 help=moving
 {
@@ -175,10 +178,13 @@ AddIcon mastery=2 help=cd
 	if not InCombat()
 	{
 		Spell(evocation)
+		Spell(mirror_image)
 	}
-	if BuffRemains(invocation) >10 and BuffExpires(alter_time) and ManaPercent() >28 Spell(berserking)
-	if BuffExpires(invocation) and BuffExpires(alter_time) Spell(evocation)
+	if BuffRemains(invokers_energy) >10 and BuffExpires(alter_time) and ManaPercent() >28 Spell(berserking)
+	if BuffExpires(invokers_energy) and BuffExpires(alter_time) Spell(evocation)
 	if target.DeadIn() <18 Spell(berserking)
+	if BuffExpires(alter_time)  { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
+	if SpellCooldown(alter_time_activate) >45 or target.DeadIn() <25 and BuffRemains(invokers_energy) >20  { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
 	if ManaPercent() <10 and target.DeadIn() >=30 Spell(evocation)
 	Spell(mirror_image)
 	if BuffExpires(alter_time) Spell(presence_of_mind)
@@ -194,7 +200,7 @@ AddIcon mastery=3 help=main
 	if BuffPresent(alter_time) and BuffPresent(brain_freeze) Spell(frostfire_bolt)
 	if BuffPresent(alter_time) and BuffStacks(fingers_of_frost_aura) Spell(ice_lance)
 	if BuffPresent(alter_time) and BuffPresent(presence_of_mind) Spell(frostbolt)
-	if target.DeadIn() >=4 and BuffStacks(fingers_of_frost_aura) <2 and SpellCooldown(icy_veins) <GCD() and BuffRemains(invocation) >20 and BuffExpires(alter_time) Spell(frozen_orb)
+	if target.DeadIn() >=4 and BuffStacks(fingers_of_frost_aura) <2 and SpellCooldown(icy_veins) <GCD() and BuffRemains(invokers_energy) >20 and BuffExpires(alter_time) Spell(frozen_orb)
 	if BuffPresent(brain_freeze) and {{target.DebuffPresent(frost_bomb) and target.DebuffRemains(frost_bomb) <2 } or BuffRemains(brain_freeze) <2 } Spell(frostfire_bolt)
 	if BuffStacks(fingers_of_frost_aura) and BuffRemains(fingers_of_frost_aura) <2 Spell(ice_lance)
 	if target.DebuffStacks(frostbolt) <3 Spell(frostbolt)
@@ -214,7 +220,7 @@ AddIcon mastery=3 help=offgcd
 	if target.HealthPercent() <25 or TimeInCombat() >5 Spell(time_warp)
 	if BuffExpires(alter_time) and BuffStacks(fingers_of_frost_aura) <2 Spell(water_elemental_freeze)
 	if not target.DebuffPresent(frost_bomb) and target.DeadIn() >CastTime(frost_bomb) +TickTime(frost_bomb) Spell(frost_bomb)
-	if BuffExpires(alter_time) and BuffPresent(brain_freeze) and BuffStacks(fingers_of_frost_aura) and BuffRemains(invocation) >6 Spell(alter_time)
+	if BuffExpires(alter_time) and BuffPresent(brain_freeze) and BuffStacks(fingers_of_frost_aura) and BuffRemains(invokers_energy) >6 Spell(alter_time)
 	if BuffExpires(alter_time) and BuffPresent(brain_freeze) and BuffStacks(fingers_of_frost_aura) Spell(alter_time)
 	if ManaPercent() <84 and BuffExpires(alter_time) Spell(mana_gem)
 }
@@ -228,16 +234,16 @@ AddIcon mastery=3 help=cd
 	if not InCombat()
 	{
 		Spell(evocation)
+		Spell(mirror_image)
 	}
-	if Health() <30 Spell(cold_snap)
 	if BuffExpires(alter_time) Spell(presence_of_mind)
 	if target.DeadIn() <22 Spell(icy_veins)
-	if target.DeadIn() <12 Spell(blood_fury)
-	if ArmorSetParts(T14 more 4) and BuffRemains(invocation) >20 and BuffExpires(alter_time) Spell(icy_veins)
+	if target.DeadIn() <18 Spell(berserking)
+	if ArmorSetParts(T14 more 4) and BuffRemains(invokers_energy) >20 and BuffExpires(alter_time) Spell(icy_veins)
 	if not ArmorSetParts(T14 more 4) and target.DebuffPresent(frozen_orb) Spell(icy_veins)
 	if target.DebuffPresent(frozen_orb) and BuffExpires(alter_time) Spell(icy_veins)
 	Spell(mirror_image)
-	if BuffExpires(invocation) and BuffExpires(alter_time) Spell(evocation)
-	if BuffRemains(invocation) >15 and BuffExpires(alter_time) and ManaPercent() >28 Spell(blood_fury)
+	if BuffExpires(invokers_energy) and BuffExpires(alter_time) Spell(evocation)
+	if BuffRemains(invokers_energy) >10 and BuffExpires(alter_time) and ManaPercent() >28 Spell(berserking)
 }
 ]]
\ No newline at end of file
diff --git a/defaut/Moine.lua b/defaut/Moine.lua
index cda9ed9..25a2ce4 100644
--- a/defaut/Moine.lua
+++ b/defaut/Moine.lua
@@ -23,8 +23,6 @@ Define(invoke_xuen 123904)
   SpellInfo(invoke_xuen duration=45 cd=180 )
 Define(jab 100780)
   SpellInfo(jab energy=40 chi=-1 )
-Define(power_strikes 129914)
-  SpellAddBuff(power_strikes power_strikes=1)
 Define(rising_sun_kick 107428)
   SpellInfo(rising_sun_kick chi=2 cd=8 )
 Define(rushing_jade_wind 116847)
@@ -59,21 +57,22 @@ AddIcon mastery=3 help=main
 	if BuffRemains(tiger_power) <=3 Spell(tiger_palm)
 	if TalentPoints(rushing_jade_wind_talent) Spell(rushing_jade_wind)

+	if BuffStacks(combo_breaker_bok) and TimeToMaxEnergy() <2 Spell(blackout_kick)
 	Spell(rising_sun_kick)
-	if not BuffPresent(energizing_brew) and TimeToMaxEnergy() >{CastTime(fists_of_fury) } and BuffRemains(tiger_power) >{CastTime(fists_of_fury) } Spell(fists_of_fury)
-	if BuffStacks(combo_breaker_bok) Spell(blackout_kick)
 	if {Chi() >=3 and TimeToMaxEnergy() <=2 and not TalentPoints(ascension_talent) } or {Chi() >=4 and TimeToMaxEnergy() <=2 and TalentPoints(ascension_talent) } Spell(blackout_kick)
-	if {BuffStacks(combo_breaker_tp) and TimeToMaxEnergy() >=2 } or {BuffRemains(combo_breaker_tp) ==0 and BuffStacks(combo_breaker_tp) } Spell(tiger_palm)
+	if not BuffPresent(energizing_brew) and TimeToMaxEnergy() >{4 } and BuffRemains(tiger_power) >{4 } Spell(fists_of_fury)
+	if BuffStacks(combo_breaker_bok) Spell(blackout_kick)
+	if BuffStacks(combo_breaker_tp) Spell(tiger_palm)
 	if TalentPoints(ascension_talent) and Chi() <=3 Spell(jab)
-	if TalentPoints(chi_brew_talent) and Chi() <=2 Spell(jab)
-	if TalentPoints(power_strikes_talent) and {{Chi() <=1 and not SpellCooldown(power_strikes) } or {Chi() <=2 and SpellCooldown(power_strikes) } } Spell(jab)
+	if not TalentPoints(ascension_talent) and Chi() <=2 Spell(jab)
 	if {{Energy() +{EnergyRegen() *{SpellCooldown(rising_sun_kick) } } } >=40 } or {Chi() ==4 and not TalentPoints(ascension_talent) } or {Chi() ==5 and TalentPoints(ascension_talent) } Spell(blackout_kick)

 }
 AddIcon mastery=3 help=offgcd
 {
 	if TalentPoints(power_strikes_talent) and BuffStacks(chi_sphere) and Chi() <4 Spell(chi_sphere)
-	if not BuffPresent(tigereye_brew_use) and BuffStacks(tigereye_brew) ==10 Spell(tigereye_brew)
+	if PTR() ==0 and not BuffPresent(tigereye_brew_use) and BuffStacks(tigereye_brew) ==10 Spell(tigereye_brew)
+	if PTR() ==1 and not BuffPresent(tigereye_brew_use) Spell(tigereye_brew)
 	if TimeToMaxEnergy() >5 Spell(energizing_brew)
 }
 AddIcon mastery=3 help=aoe
diff --git a/defaut/Paladin.lua b/defaut/Paladin.lua
index 4f5e562..df706b7 100644
--- a/defaut/Paladin.lua
+++ b/defaut/Paladin.lua
@@ -14,8 +14,6 @@ Define(execution_sentence 114916)
   SpellAddTargetDebuff(execution_sentence execution_sentence=1)
 Define(exorcism 879)
   SpellInfo(exorcism holy=-1 cd=15 )
-Define(exorcism_glyphed 122032)
-  SpellInfo(exorcism_glyphed holy=-1 cd=15)
 Define(guardian_of_ancient_kings 86659)
   SpellInfo(guardian_of_ancient_kings duration=12 cd=180 )
   SpellAddBuff(guardian_of_ancient_kings guardian_of_ancient_kings=1)
@@ -34,7 +32,6 @@ Define(seal_of_truth 31801)
   SpellAddBuff(seal_of_truth seal_of_truth=1)
 Define(templars_verdict 85256)
   SpellInfo(templars_verdict holy=3 )
-Define(glyph_of_mass_exorcism 122028)
 AddCheckBox(showwait L(showwait) default)
 AddIcon mastery=3 help=main
 {
@@ -50,8 +47,7 @@ AddIcon mastery=3 help=main
 	if HolyPower() ==5 Spell(templars_verdict)
 	Spell(hammer_of_wrath usable=1)
 	if SpellCooldown(hammer_of_wrath) >0 and SpellCooldown(hammer_of_wrath) <=0.2 if CheckBoxOn(showwait) Texture(Spell_nature_timestop)
-	if Glyph(glyph_of_mass_exorcism no) Spell(exorcism)
-	if Glyph(glyph_of_mass_exorcism) Spell(exorcism_glyphed)
+	Spell(exorcism)
 	if target.HealthPercent() <=20 or BuffPresent(avenging_wrath) Spell(judgment)
 	Spell(crusader_strike)
 	Spell(judgment)
diff --git a/defaut/Pretre.lua b/defaut/Pretre.lua
index f9e5faf..728ef5a 100644
--- a/defaut/Pretre.lua
+++ b/defaut/Pretre.lua
@@ -24,6 +24,7 @@ Define(mind_blast 8092)
 Define(mind_flay 15407)
   SpellInfo(mind_flay duration=3 canStopChannelling=1 )
   SpellAddTargetDebuff(mind_flay mind_flay=1)
+Define(mind_flay_insanity 129197)
 Define(mind_sear 48045)
   SpellInfo(mind_sear duration=5 canStopChannelling=1 )
   SpellAddBuff(mind_sear mind_sear=1)
@@ -61,6 +62,8 @@ Define(halo_talent 18)
 Define(mindbender_talent 8)
 Define(power_infusion_talent 14)
 Define(power_word_solace_talent 9)
+Define(solace_and_insanity_talent 13)
+AddCheckBox(showwait L(showwait) default)
 AddIcon mastery=3 help=main
 {
 	if not InCombat()
@@ -70,17 +73,23 @@ AddIcon mastery=3 help=main
 		if BuffExpires(shadowform) Spell(shadowform)
 	}
 	if BuffExpires(shadowform) Spell(shadowform)
-	if ShadowOrbs() ==3 and {SpellCooldown(mind_blast) <2 or target.HealthPercent() <20 } Spell(devouring_plague)
-	if TalentPoints(power_word_solace_talent) Spell(shadow_word_insanity)
-	if SpellCooldown(mind_blast) Spell(mind_blast)
-	if {not target.DebuffPresent(shadow_word_pain) or target.DebuffRemains(shadow_word_pain) <TickTime(shadow_word_pain) } Spell(shadow_word_pain)
+	if TalentPoints(mindbender_talent) Spell(mindbender)
+	if ShadowOrbs() ==3 and {SpellCooldown(mind_blast) <1.5 or target.HealthPercent() <20 and SpellCooldown(shadow_word_death) <1.5 } Spell(devouring_plague)
+	if PTR() and TalentPoints(solace_and_insanity_talent) Spell(mind_flay_insanity)
 	if target.HealthPercent(less 20) Spell(shadow_word_death)
-	if {not target.DebuffPresent(vampiric_touch) or target.DebuffRemains(vampiric_touch) <CastTime(vampiric_touch) +TickTime(vampiric_touch) } Spell(vampiric_touch)
-	if ShadowOrbs() ==3 Spell(devouring_plague)
+	if SpellCooldown(mind_blast) Spell(mind_blast)
+	if not target.DebuffPresent(shadow_word_pain) Spell(shadow_word_pain)
+	if target.DebuffRemains(vampiric_touch) <CastTime(vampiric_touch) Spell(vampiric_touch)
+	if not PTR() and TalentPoints(power_word_solace_talent) Spell(shadow_word_insanity)
+	if BuffStacks(surge_of_darkness) ==2 Spell(mind_spike)
+	if target.TicksRemain(shadow_word_pain) <=1 Spell(shadow_word_pain)
+	if target.DebuffRemains(vampiric_touch) <CastTime(vampiric_touch) +TickTime(vampiric_touch) Spell(vampiric_touch)
+	if ShadowOrbs() ==3 and target.TicksRemain(devouring_plague) <=1 Spell(devouring_plague)
 	if TalentPoints(halo_talent) Spell(halo)
-	if BuffStacks(surge_of_darkness) Spell(mind_spike)
 	if TalentPoints(cascade_talent) Spell(cascade)
-	if TalentPoints(mindbender_talent) Spell(mindbender)
+	if target.HealthPercent() <20 and SpellCooldown(shadow_word_death) <0.5 if CheckBoxOn(showwait) Texture(Spell_nature_timestop)
+	if SpellCooldown(mind_blast) <0.5 if CheckBoxOn(showwait) Texture(Spell_nature_timestop)
+	if BuffStacks(surge_of_darkness) Spell(mind_spike)
 	Spell(mind_flay)
 }
 AddIcon mastery=3 help=offgcd
@@ -100,10 +109,10 @@ AddIcon mastery=3 help=aoe
 AddIcon mastery=3 help=cd
 {
 	 { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
-	Spell(berserking)
+	if not TalentPoints(mindbender_talent) Spell(shadowfiend)
 	if TalentPoints(power_infusion_talent) Spell(power_infusion)
+	Spell(berserking)
 	if ShadowOrbs() ==3 and Health() <=40 Spell(vampiric_embrace)
-	if not TalentPoints(mindbender_talent) Spell(shadowfiend)
 	Spell(dispersion)
 }
 ]]
\ No newline at end of file
diff --git a/defaut/Voleur.lua b/defaut/Voleur.lua
index 1991e77..9a5cc90 100644
--- a/defaut/Voleur.lua
+++ b/defaut/Voleur.lua
@@ -74,7 +74,10 @@ Define(vendetta 79140)
 Define(weakened_armor 113746)
   SpellInfo(weakened_armor duration=30 )
   SpellAddBuff(weakened_armor weakened_armor=1)
+Define(anticipation_talent 18)
 Define(preparation_talent 10)
+Define(shadow_focus_talent 3)
+Define(subterfuge_talent 2)
 AddIcon mastery=1 help=main
 {
 	if not InCombat()
@@ -119,11 +122,21 @@ AddIcon mastery=2 help=main
 	if {target.DebuffStacks(weakened_armor any=1) <3 or target.DebuffRemains(weakened_armor any=1) <3 } and ComboPoints() <5 if CheckBoxOn(expose_armor_check) Spell(expose_armor)
 	Spell(ambush usable=1)
 	if BuffRemains(slice_and_dice) <2 or {BuffRemains(slice_and_dice) <15 and BuffStacks(bandits_guile) ==11 and ComboPoints() >=4 } Spell(slice_and_dice)
-	if target.TicksRemain(rupture) <2 and ComboPoints() ==5 and BuffPresent(deep_insight) and target.DeadIn() >10 Spell(rupture)
-	if {ComboPoints() ==5 and BuffPresent(deep_insight) } or BuffStacks(anticipation) >=4 Spell(eviscerate)
-	if target.TicksRemain(rupture) <2 and ComboPoints() ==5 and target.DeadIn() >10 Spell(rupture)
-	if {{BuffExpires(deep_insight) and BuffStacks(anticipation) <5 } or {BuffPresent(deep_insight) and ComboPoints() <5 } } and target.TicksRemain(revealing_strike) <2 Spell(revealing_strike)
-	if {BuffExpires(deep_insight) and BuffStacks(anticipation) <5 } or {BuffPresent(deep_insight) and ComboPoints() <5 } Spell(sinister_strike)
+	if ComboPoints() <5 or not target.DebuffPresent(revealing_strike)
+	{
+		if target.TicksRemain(revealing_strike) <2 Spell(revealing_strike)
+		Spell(sinister_strike)
+	}
+	if not TalentPoints(anticipation_talent) or BuffPresent(deep_insight) or SpellCooldown(shadow_blades) <=11 or BuffStacks(anticipation) >=4 or {BuffPresent(shadow_blades) and BuffStacks(anticipation) >=3 }
+	{
+		if target.TicksRemain(rupture) <2 and target.DeadIn() >=26 Spell(rupture)
+		Spell(eviscerate)
+	}
+	if Energy() >60 or BuffExpires(deep_insight) or BuffRemains(deep_insight) >5 -ComboPoints()
+	{
+		if target.TicksRemain(revealing_strike) <2 Spell(revealing_strike)
+		Spell(sinister_strike)
+	}
 }
 AddIcon mastery=2 help=offgcd
 {
@@ -132,17 +145,19 @@ AddIcon mastery=2 help=offgcd
 		Spell(stealth)
 	}
 	if target.IsInterruptible() Spell(kick)
-	Spell(tricks_of_the_trade)
 }
 AddIcon mastery=2 help=cd
 {
 	if TalentPoints(preparation_talent) and not BuffPresent(vanish) and SpellCooldown(vanish) >60 Spell(preparation)
-	 { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
-	Spell(berserking)
-	if TimeInCombat() >10 and not BuffPresent(shadow_blades) and not BuffPresent(adrenaline_rush) and Energy() <20 and {{BuffPresent(deep_insight) and ComboPoints() <4 } or BuffStacks(anticipation) <4 } Spell(vanish)
-	if {BuffStacks(bloodlust any=1) or TimeInCombat() >60 } and BuffRemains(slice_and_dice) >=12000 Spell(shadow_blades)
-	if Energy() <35 and BuffRemains(slice_and_dice) >4 and BuffExpires(adrenaline_rush) Spell(killing_spree)
-	if Energy() <35 or BuffPresent(shadow_blades) Spell(adrenaline_rush)
+	if TimeInCombat() ==0 or BuffPresent(shadow_blades)  { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) }
+	if TimeInCombat() ==0 or BuffPresent(shadow_blades) Spell(berserking)
+	if TimeInCombat() >10 and {ComboPoints() <3 or {TalentPoints(anticipation_talent) and BuffStacks(anticipation) <3 } or {BuffExpires(shadow_blades) and {ComboPoints() <4 or {TalentPoints(anticipation_talent) and BuffStacks(anticipation) <4 } } } } and {{TalentPoints(shadow_focus_talent) and BuffExpires(adrenaline_rush) and Energy() <20 } or {TalentPoints(subterfuge_talent) and Energy() >=90 } or {not TalentPoints(shadow_focus_talent) and not TalentPoints(subterfuge_talent) and Energy() >=60 } } Spell(vanish)
+	if not ArmorSetParts(T14 more 4) and TimeInCombat() >5 Spell(shadow_blades)
+	if not ArmorSetParts(T14 more 4) and Energy() <35 and BuffExpires(adrenaline_rush) Spell(killing_spree)
+	if not ArmorSetParts(T14 more 4) and {Energy() <35 or BuffPresent(shadow_blades) } Spell(adrenaline_rush)
+	if ArmorSetParts(T14 more 4) and {{SpellCooldown(killing_spree) >30.5 and SpellCooldown(adrenaline_rush) <=9 } or {Energy() <35 and {SpellCooldown(killing_spree) ==0 or SpellCooldown(adrenaline_rush) ==0 } } } Spell(shadow_blades)
+	if ArmorSetParts(T14 more 4) and {{BuffPresent(shadow_blades) and BuffExpires(adrenaline_rush) and {Energy() <35 or BuffRemains(shadow_blades) <=3.5 } } or {BuffExpires(shadow_blades) and SpellCooldown(shadow_blades) >30 } } Spell(killing_spree)
+	if ArmorSetParts(T14 more 4) and BuffPresent(shadow_blades) and {Energy() <35 or BuffRemains(shadow_blades) <=15 } Spell(adrenaline_rush)
 }
 AddIcon mastery=3 help=main
 {