diff --git a/Specialization/Destruction.lua b/Specialization/Destruction.lua index a5e1984..4520adc 100644 --- a/Specialization/Destruction.lua +++ b/Specialization/Destruction.lua @@ -148,7 +148,7 @@ function Destruction:aoe() if (MaxDps:CheckSpellUsable(classtable.RainofFire, 'RainofFire')) and (demonic_art()) and cooldown[classtable.RainofFire].ready then if not setSpell then setSpell = classtable.RainofFire end end - if (MaxDps:CheckSpellUsable(classtable.Incinerate, 'Incinerate')) and (( diabolic_ritual() and ( buff[classtable.DiabolicRitualMotherofChaosBuff].remains + buff[classtable.DiabolicRitualOverlordBuff].remains + buff[classtable.DiabolicRitualPitLordBuff].remains ) <= ( classtable and classtable.Incinerate and GetSpellInfo(classtable.Incinerate).castTime / 1000 ) and ( buff[classtable.DiabolicRitualMotherofChaosBuff].remains + buff[classtable.DiabolicRitualOverlordBuff].remains + buff[classtable.DiabolicRitualPitLordBuff].remains ) >gcd * 0.25 )) and cooldown[classtable.Incinerate].ready then + if (MaxDps:CheckSpellUsable(classtable.Incinerate, 'Incinerate')) and (( diabolic_ritual() and ( buff[classtable.DiabolicRitualMotherofChaosBuff].remains + buff[classtable.DiabolicRitualOverlordBuff].remains + buff[classtable.DiabolicRitualPitLordBuff].remains ) <= ( classtable and classtable.Incinerate and GetSpellInfo(classtable.Incinerate).castTime / 1000 or 0) and ( buff[classtable.DiabolicRitualMotherofChaosBuff].remains + buff[classtable.DiabolicRitualOverlordBuff].remains + buff[classtable.DiabolicRitualPitLordBuff].remains ) >gcd * 0.25 )) and cooldown[classtable.Incinerate].ready then if not setSpell then setSpell = classtable.Incinerate end end if (havoc_active and havoc_remains >gcd and targets <5 and ( not cooldown[classtable.SummonInfernal].ready or not talents[classtable.SummonInfernal] )) then @@ -251,10 +251,10 @@ function Destruction:cleave() if (MaxDps:CheckSpellUsable(classtable.SoulFire, 'SoulFire')) and (buff[classtable.DecimationBuff].up and ( SoulShards <= 4 or buff[classtable.DecimationBuff].remains <= gcd * 2 ) and debuff[classtable.ConflagrateDeBuff].remains >= timeShift and cooldown[classtable.Havoc].remains) and cooldown[classtable.SoulFire].ready then if not setSpell then setSpell = classtable.SoulFire end end - if (MaxDps:CheckSpellUsable(classtable.Wither, 'Wither')) and (talents[classtable.InternalCombustion] and ( ( ( debuff[classtable.WitherDeBuff].remains - 5 * (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) ) ( debuff[classtable.WitherDeBuff].remains - 5 ) ) and ttd >8 and not (classtable and classtable.SoulFire and cooldown[classtable.SoulFire].duration - cooldown[classtable.SoulFire].remains <=2 )) and cooldown[classtable.Wither].ready then + if (MaxDps:CheckSpellUsable(classtable.Wither, 'Wither')) and (talents[classtable.InternalCombustion] and ( ( ( debuff[classtable.WitherDeBuff].remains - 5 * (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) ) ( debuff[classtable.WitherDeBuff].remains - 5 ) ) and ttd >8 and not (classtable and classtable.SoulFire and cooldown[classtable.SoulFire].duration - cooldown[classtable.SoulFire].remains <=2 )) and cooldown[classtable.Wither].ready then if not setSpell then setSpell = classtable.Wither end end - if (MaxDps:CheckSpellUsable(classtable.Wither, 'Wither')) and (not talents[classtable.InternalCombustion] and ( ( ( debuff[classtable.WitherDeBuff].remains - 5 * ( (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) and 1 or 0) ) ( debuff[classtable.WitherDeBuff].remains ) ) and ttd >8 and not (classtable and classtable.SoulFire and cooldown[classtable.SoulFire].duration - cooldown[classtable.SoulFire].remains <=2 )) and cooldown[classtable.Wither].ready then + if (MaxDps:CheckSpellUsable(classtable.Wither, 'Wither')) and (not talents[classtable.InternalCombustion] and ( ( ( debuff[classtable.WitherDeBuff].remains - 5 * ( (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) and 1 or 0) ) ( debuff[classtable.WitherDeBuff].remains ) ) and ttd >8 and not (classtable and classtable.SoulFire and cooldown[classtable.SoulFire].duration - cooldown[classtable.SoulFire].remains <=2 )) and cooldown[classtable.Wither].ready then if not setSpell then setSpell = classtable.Wither end end if (MaxDps:CheckSpellUsable(classtable.Conflagrate, 'Conflagrate')) and (( talents[classtable.RoaringBlaze] and cooldown[classtable.Conflagrate].fullRecharge <= gcd * 2 ) or cooldown[classtable.Conflagrate].duration <= 8 and ( diabolic_ritual() and ( buff[classtable.DiabolicRitualMotherofChaosBuff].remains + buff[classtable.DiabolicRitualOverlordBuff].remains + buff[classtable.DiabolicRitualPitLordBuff].remains ) ( classtable and classtable.SoulFire and GetSpellInfo(classtable.SoulFire).castTime /1000 ) + 1 or not talents[classtable.RoaringBlaze] and buff[classtable.BackdraftBuff].up ) and not pool_soul_shards) and cooldown[classtable.SoulFire].ready then if not setSpell then setSpell = classtable.SoulFire end end - if (MaxDps:CheckSpellUsable(classtable.Immolate, 'Immolate')) and (( debuff[classtable.ImmolateDeBuff].refreshable and ( debuff[classtable.ImmolateDeBuff].remains debuff[classtable.ImmolateDeBuff].remains ) and ( not talents[classtable.SoulFire] or cooldown[classtable.SoulFire].remains + ( not (talents[classtable.Mayhem] and talents[classtable.Mayhem] or 0) * ( classtable and classtable.SoulFire and GetSpellInfo(classtable.SoulFire).castTime / 1000 ) ) >debuff[classtable.ImmolateDeBuff].remains ) and ttd >15) and cooldown[classtable.Immolate].ready then + if (MaxDps:CheckSpellUsable(classtable.Immolate, 'Immolate')) and (( debuff[classtable.ImmolateDeBuff].refreshable and ( debuff[classtable.ImmolateDeBuff].remains debuff[classtable.ImmolateDeBuff].remains ) and ( not talents[classtable.SoulFire] or cooldown[classtable.SoulFire].remains + ( not (talents[classtable.Mayhem] and talents[classtable.Mayhem] or 0) * ( classtable and classtable.SoulFire and GetSpellInfo(classtable.SoulFire).castTime / 1000 or 0) ) >debuff[classtable.ImmolateDeBuff].remains ) and ttd >15) and cooldown[classtable.Immolate].ready then if not setSpell then setSpell = classtable.Immolate end end if (MaxDps:CheckSpellUsable(classtable.SummonInfernal, 'SummonInfernal')) and cooldown[classtable.SummonInfernal].ready then MaxDps:GlowCooldown(classtable.SummonInfernal, cooldown[classtable.SummonInfernal].ready) end - if (MaxDps:CheckSpellUsable(classtable.Incinerate, 'Incinerate')) and (talents[classtable.DiabolicRitual] and ( diabolic_ritual() and ( buff[classtable.DiabolicRitualMotherofChaosBuff].remains + buff[classtable.DiabolicRitualOverlordBuff].remains + buff[classtable.DiabolicRitualPitLordBuff].remains - 2 - not disable_cb_2t * ( classtable and classtable.ChaosBolt and GetSpellInfo(classtable.ChaosBolt).castTime / 1000 ) - disable_cb_2t * gcd ) <= 0 )) and cooldown[classtable.Incinerate].ready then + if (MaxDps:CheckSpellUsable(classtable.Incinerate, 'Incinerate')) and (talents[classtable.DiabolicRitual] and ( diabolic_ritual() and ( buff[classtable.DiabolicRitualMotherofChaosBuff].remains + buff[classtable.DiabolicRitualOverlordBuff].remains + buff[classtable.DiabolicRitualPitLordBuff].remains - 2 - not disable_cb_2t * ( classtable and classtable.ChaosBolt and GetSpellInfo(classtable.ChaosBolt).castTime / 1000 or 0) - disable_cb_2t * gcd ) <= 0 )) and cooldown[classtable.Incinerate].ready then if not setSpell then setSpell = classtable.Incinerate end end if (MaxDps:CheckSpellUsable(classtable.RainofFire, 'RainofFire')) and (pooling_condition and not talents[classtable.Wither] and buff[classtable.RainofChaosBuff].up) and cooldown[classtable.RainofFire].ready then @@ -334,7 +334,7 @@ function Destruction:havoc() if (MaxDps:CheckSpellUsable(classtable.SoulFire, 'SoulFire')) and (( classtable and classtable.SoulFire and GetSpellInfo(classtable.SoulFire).castTime /1000 ) 15 or ( talents[classtable.Wither] and debuff[classtable.WitherDeBuff].remains <( classtable and classtable.Wither and GetSpellInfo(classtable.Wither).castTime / 1000 ) * 0.3 )) and cooldown[classtable.Cataclysm].ready then + if (MaxDps:CheckSpellUsable(classtable.Cataclysm, 'Cataclysm')) and (math.huge >15 or ( talents[classtable.Wither] and debuff[classtable.WitherDeBuff].remains <( classtable and classtable.Wither and GetSpellInfo(classtable.Wither).castTime / 1000 or 0) * 0.3 )) and cooldown[classtable.Cataclysm].ready then if not setSpell then setSpell = classtable.Cataclysm end end if (MaxDps:CheckSpellUsable(classtable.Immolate, 'Immolate')) and (( ( ( debuff[classtable.ImmolateDeBuff].refreshable and havoc_immo_time <5.4 ) and ttd >5 ) or ( ( debuff[classtable.ImmolateDeBuff].remains <2 and debuff[classtable.ImmolateDeBuff].remains 11 ) and SoulShards <4.5) and cooldown[classtable.Immolate].ready then @@ -409,7 +409,7 @@ function Destruction:callaction() if (MaxDps:CheckSpellUsable(classtable.SoulFire, 'SoulFire')) and (buff[classtable.DecimationBuff].up and ( SoulShards <= 4 or buff[classtable.DecimationBuff].remains <= gcd * 2 ) and debuff[classtable.ConflagrateDeBuff].remains >= timeShift) and cooldown[classtable.SoulFire].ready then if not setSpell then setSpell = classtable.SoulFire end end - if (MaxDps:CheckSpellUsable(classtable.Wither, 'Wither')) and (talents[classtable.InternalCombustion] and ( ( ( debuff[classtable.WitherDeBuff].remains - 5 * (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) ) ( debuff[classtable.WitherDeBuff].remains - 5 ) ) and ttd >8 and not (classtable and classtable.SoulFire and cooldown[classtable.SoulFire].duration - cooldown[classtable.SoulFire].remains <=2 )) and cooldown[classtable.Wither].ready then + if (MaxDps:CheckSpellUsable(classtable.Wither, 'Wither')) and (talents[classtable.InternalCombustion] and ( ( ( debuff[classtable.WitherDeBuff].remains - 5 * (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) ) ( debuff[classtable.WitherDeBuff].remains - 5 ) ) and ttd >8 and not (classtable and classtable.SoulFire and cooldown[classtable.SoulFire].duration - cooldown[classtable.SoulFire].remains <=2 )) and cooldown[classtable.Wither].ready then if not setSpell then setSpell = classtable.Wither end end if (MaxDps:CheckSpellUsable(classtable.Conflagrate, 'Conflagrate')) and (talents[classtable.RoaringBlaze] and debuff[classtable.ConflagrateDeBuff].remains <1.5 or cooldown[classtable.Conflagrate].fullRecharge <= gcd * 2 or cooldown[classtable.Conflagrate].duration <= 8 and ( diabolic_ritual() and ( buff[classtable.DiabolicRitualMotherofChaosBuff].remains + buff[classtable.DiabolicRitualOverlordBuff].remains + buff[classtable.DiabolicRitualPitLordBuff].remains ) = 1.5) and cooldown[classtable.Conflagrate].ready then @@ -436,16 +436,16 @@ function Destruction:callaction() if (MaxDps:CheckSpellUsable(classtable.ChannelDemonfire, 'ChannelDemonfire')) and (talents[classtable.RagingDemonfire] and ( debuff[classtable.ImmolateDeBuff].remains + debuff[classtable.WitherDeBuff].remains - 5 * ( (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) and talents[classtable.InternalCombustion] and 1 or 0) ) >( classtable and classtable.ChannelDemonfire and GetSpellInfo(classtable.ChannelDemonfire).castTime /1000 )) and cooldown[classtable.ChannelDemonfire].ready then if not setSpell then setSpell = classtable.ChannelDemonfire end end - if (MaxDps:CheckSpellUsable(classtable.Wither, 'Wither')) and (not talents[classtable.InternalCombustion] and ( ( ( debuff[classtable.WitherDeBuff].remains - 5 * ( (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) and 1 or 0) ) debuff[classtable.WitherDeBuff].remains ) and ( not talents[classtable.SoulFire] or cooldown[classtable.SoulFire].remains + ( classtable and classtable.SoulFire and GetSpellInfo(classtable.SoulFire).castTime / 1000 ) >( debuff[classtable.WitherDeBuff].remains ) ) and ttd >8 and not (classtable and classtable.SoulFire and cooldown[classtable.SoulFire].duration - cooldown[classtable.SoulFire].remains <=2 )) and cooldown[classtable.Wither].ready then + if (MaxDps:CheckSpellUsable(classtable.Wither, 'Wither')) and (not talents[classtable.InternalCombustion] and ( ( ( debuff[classtable.WitherDeBuff].remains - 5 * ( (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) and 1 or 0) ) debuff[classtable.WitherDeBuff].remains ) and ( not talents[classtable.SoulFire] or cooldown[classtable.SoulFire].remains + ( classtable and classtable.SoulFire and GetSpellInfo(classtable.SoulFire).castTime / 1000 or 0) >( debuff[classtable.WitherDeBuff].remains ) ) and ttd >8 and not (classtable and classtable.SoulFire and cooldown[classtable.SoulFire].duration - cooldown[classtable.SoulFire].remains <=2 )) and cooldown[classtable.Wither].ready then if not setSpell then setSpell = classtable.Wither end end - if (MaxDps:CheckSpellUsable(classtable.Immolate, 'Immolate')) and (( ( ( debuff[classtable.ImmolateDeBuff].remains - 5 * ( (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) and talents[classtable.InternalCombustion] ) ) debuff[classtable.ImmolateDeBuff].remains ) and ( not talents[classtable.SoulFire] or cooldown[classtable.SoulFire].remains + ( classtable and classtable.SoulFire and GetSpellInfo(classtable.SoulFire).castTime / 1000 ) >( debuff[classtable.ImmolateDeBuff].remains - 5 * (talents[classtable.InternalCombustion] and talents[classtable.InternalCombustion] or 0) ) ) and ttd >8 and not (classtable and classtable.SoulFire and cooldown[classtable.SoulFire].duration - cooldown[classtable.SoulFire].remains <=2 )) and cooldown[classtable.Immolate].ready then + if (MaxDps:CheckSpellUsable(classtable.Immolate, 'Immolate')) and (( ( ( debuff[classtable.ImmolateDeBuff].remains - 5 * ( (classtable and classtable.ChaosBolt and cooldown[classtable.ChaosBolt].duration - cooldown[classtable.ChaosBolt].remains <=2 ) and talents[classtable.InternalCombustion] ) ) debuff[classtable.ImmolateDeBuff].remains ) and ( not talents[classtable.SoulFire] or cooldown[classtable.SoulFire].remains + ( classtable and classtable.SoulFire and GetSpellInfo(classtable.SoulFire).castTime / 1000 or 0) >( debuff[classtable.ImmolateDeBuff].remains - 5 * (talents[classtable.InternalCombustion] and talents[classtable.InternalCombustion] or 0) ) ) and ttd >8 and not (classtable and classtable.SoulFire and cooldown[classtable.SoulFire].duration - cooldown[classtable.SoulFire].remains <=2 )) and cooldown[classtable.Immolate].ready then if not setSpell then setSpell = classtable.Immolate end end if (MaxDps:CheckSpellUsable(classtable.SummonInfernal, 'SummonInfernal')) and cooldown[classtable.SummonInfernal].ready then MaxDps:GlowCooldown(classtable.SummonInfernal, cooldown[classtable.SummonInfernal].ready) end - if (MaxDps:CheckSpellUsable(classtable.Incinerate, 'Incinerate')) and (talents[classtable.DiabolicRitual] and ( diabolic_ritual() and ( buff[classtable.DiabolicRitualMotherofChaosBuff].remains + buff[classtable.DiabolicRitualOverlordBuff].remains + buff[classtable.DiabolicRitualPitLordBuff].remains - 2 - not disable_cb_2t * ( classtable and classtable.ChaosBolt and GetSpellInfo(classtable.ChaosBolt).castTime / 1000 ) - disable_cb_2t * gcd ) <= 0 )) and cooldown[classtable.Incinerate].ready then + if (MaxDps:CheckSpellUsable(classtable.Incinerate, 'Incinerate')) and (talents[classtable.DiabolicRitual] and ( diabolic_ritual() and ( buff[classtable.DiabolicRitualMotherofChaosBuff].remains + buff[classtable.DiabolicRitualOverlordBuff].remains + buff[classtable.DiabolicRitualPitLordBuff].remains - 2 - not disable_cb_2t * ( classtable and classtable.ChaosBolt and GetSpellInfo(classtable.ChaosBolt).castTime / 1000 or 0) - disable_cb_2t * gcd ) <= 0 )) and cooldown[classtable.Incinerate].ready then if not setSpell then setSpell = classtable.Incinerate end end if (MaxDps:CheckSpellUsable(classtable.ChaosBolt, 'ChaosBolt')) and (pooling_condition_cb and ( cooldown[classtable.SummonInfernal].remains >= gcd * 3 or SoulShards >4 or not talents[classtable.RainofChaos] )) and cooldown[classtable.ChaosBolt].ready then