Movement.CreateMoveBehindTargetBehavior(),
/*Bases on Mew!*/
/*Tiger's Fury!*/
// #1
Spell.BuffSelf("Tiger's Fury", ret => StyxWoW.Me.CurrentEnergy <= 26 &&
!SpellManager.GlobalCooldown &&
StyxWoW.Me.CurrentTarget.Level < 85),
// #2
Spell.BuffSelf("Tiger's Fury", ret => StyxWoW.Me.CurrentEnergy <= 35 &&
!StyxWoW.Me.ActiveAuras.ContainsKey("Clearcasting") &&
!SpellManager.GlobalCooldown &&
StyxWoW.Me.CurrentTarget.Level >= 85),
// #3
Spell.BuffSelf("Tiger's Fury", ret => StyxWoW.Me.CurrentEnergy <= 45 &&
HasTeir13Bonus2 && !StyxWoW.Me.ActiveAuras.ContainsKey("Clearcasting") &&
!SpellManager.GlobalCooldown),
/*Berserk!*/
//#4
Spell.BuffSelf("Berserk", ret => StyxWoW.Me.ActiveAuras.ContainsKey("Tiger's Fury") && !SpellManager.GlobalCooldown),
//#5 (Depends on DPS!)
Spell.BuffSelf("Berserk", ret => !SpellManager.GlobalCooldown && StyxWoW.Me.CurrentTarget.CurrentHealth/FINISHER_HEALTH < 25 && Spell.GetSpellCooldown("Tiger's Fury").Seconds > 6),
//AoE
Spell.Cast("Swipe", ret => Clusters.GetClusterCount(StyxWoW.Me, Unit.NearbyUnfriendlyUnits, ClusterType.Cone, 7f) >=
SingularSettings.Instance.Druid.SwipeCount),
/*Debuffs!*/
//#6
Spell.Cast("Faerie Fire (Feral)", ret => StyxWoW.Me.CurrentTarget.IsBoss() && (!StyxWoW.Me.CurrentTarget.HasSunders() || StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Faerie Fire", true).Seconds <= 1)),
//#7
Spell.Cast("Mangle (Cat)", ret => !StyxWoW.Me.CurrentTarget.HasBleedDebuff() || StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Mangle",true).Seconds <= 2),
/*Ravage!*/
//#8
Spell.Cast("Ravage!", ret => StyxWoW.Me.ActiveAuras.ContainsKey("Stampede") && StyxWoW.Me.GetAuraTimeLeft("Stampede",true).Seconds <= 2.0),
/*Blood in the Water!*/
//#9
Spell.Cast("Ferocious Bite",
ret => StyxWoW.Me.ComboPoints > 0 &&
StyxWoW.Me.CurrentTarget.HealthPercent <= (HasTeir13Bonus ? 60 : 25) &&
StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Rip", true).Seconds <= 2.1 &&
StyxWoW.Me.CurrentTarget.HasMyAura("Rip")),
//#10
Spell.Cast("Ferocious Bite",
ret => StyxWoW.Me.ComboPoints == 5 &&
StyxWoW.Me.CurrentTarget.HealthPercent <= (HasTeir13Bonus ? 60 : 25) &&
StyxWoW.Me.CurrentTarget.HasMyAura("Rip")),
/*Regular Rotation*/
//Missing Glyph of Bloodletting
//#11
Spell.Cast("Rip",
ret => StyxWoW.Me.ComboPoints == 5 &&
StyxWoW.Me.CurrentTarget.CurrentHealth / FINISHER_HEALTH >=6 &&
(!StyxWoW.Me.CurrentTarget.HasMyAura("Rip")||
(StyxWoW.Me.CurrentTarget.HasMyAura("Rip") && StyxWoW.Me.GetAuraTimeLeft("Rip",true).Seconds < 2.0))
&&(StyxWoW.Me.ActiveAuras.ContainsKey("Berserk") ||
StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Rip",true).Seconds + 2 <= Spell.GetSpellCooldown("Tiger's Fury").Seconds)),
//#12
Spell.Cast("Ferocious Bite",
ret => StyxWoW.Me.ActiveAuras.ContainsKey("Berserk") &&
StyxWoW.Me.ComboPoints == 5 &&
StyxWoW.Me.CurrentEnergy >= 60 &&
StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Rip", true).Seconds > 5 &&
StyxWoW.Me.GetAuraTimeLeft("Savage Roar", true).Seconds >= 3),
//#13
Spell.Cast("Rake",
ret => StyxWoW.Me.CurrentTarget.CurrentHealth / FINISHER_HEALTH >= 8.5 &&
StyxWoW.Me.ActiveAuras.ContainsKey("Tiger's Fury") &&
StyxWoW.Me.CurrentTarget.HasMyAura("Rake") &&
StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Rake",true).Seconds < 9.0),
//#14
Spell.Cast("Rake",
ret => StyxWoW.Me.CurrentTarget.CurrentHealth / FINISHER_HEALTH >= 8.5 &&
(!StyxWoW.Me.CurrentTarget.HasMyAura("Rake") ||
(StyxWoW.Me.CurrentTarget.HasMyAura("Rake") &&
StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Rake",true).Seconds < 3.0)) &&
(StyxWoW.Me.ActiveAuras.ContainsKey("Berserk") || (StyxWoW.Me.CurrentTarget.HasMyAura("Rake") &&
StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Rake", true).Seconds - 0.8 <= Spell.GetSpellCooldown("Tiger's Fury").Seconds) ||
StyxWoW.Me.CurrentEnergy >= 71)),
//#15
Spell.Cast("Shred", ret => StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
StyxWoW.Me.ActiveAuras.ContainsKey("Clearcasting")),
Spell.Cast("Mangle (Cat)", ret => !StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
StyxWoW.Me.ActiveAuras.ContainsKey("Clearcasting")),
//#16
Spell.BuffSelf("Savage Roar",
ret => StyxWoW.Me.ComboPoints > 0 &&
(!StyxWoW.Me.ActiveAuras.ContainsKey("Savage Roar") ||
StyxWoW.Me.GetAuraTimeLeft("Savage Roar",true).Seconds <= 1)),
//#17
Spell.Cast("Ravage!", ret => StyxWoW.Me.ActiveAuras.ContainsKey("Stampede") &&
Spell.GetSpellCooldown("Tiger's Fury").Seconds == 0.0 &&
HasTeir13Bonus2),
//#18
Spell.Cast("Ferocious Bite",
ret => StyxWoW.Me.ComboPoints == 5 &&
StyxWoW.Me.CurrentTarget.CurrentHealth / FINISHER_HEALTH <= 7),
//#19
Spell.Cast("Ferocious Bite",
ret => (!StyxWoW.Me.ActiveAuras.ContainsKey("Berserk") ||
StyxWoW.Me.CurrentEnergy < 25) &&
StyxWoW.Me.ComboPoints == 5 &&
StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Rip", true).Seconds >= 8 &&
StyxWoW.Me.GetAuraTimeLeft("Savage Roar", true).Seconds >= 4 &&
StyxWoW.Me.CurrentTarget.Level < 85),
Spell.Cast("Ferocious Bite",
ret => (!StyxWoW.Me.ActiveAuras.ContainsKey("Berserk") ||
StyxWoW.Me.CurrentEnergy < 25) &&
StyxWoW.Me.ComboPoints == 5 &&
StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Rip",true).Seconds >= 14 &&
StyxWoW.Me.GetAuraTimeLeft("Savage Roar", true).Seconds >= 10 &&
StyxWoW.Me.CurrentTarget.Level >= 85),
//#20
Spell.Cast("Ravage!", ret => StyxWoW.Me.ActiveAuras.ContainsKey("Stampede") &&
HasTeir13Bonus2 &&
!StyxWoW.Me.ActiveAuras.ContainsKey("Clearcasting") &&
StyxWoW.Me.CurrentEnergy <= (100 - 20)), //20 == energyPerSec ! Has to be fixed
//#21
Spell.Cast("Ravage!", ret => StyxWoW.Me.ActiveAuras.ContainsKey("Stampede") &&
!StyxWoW.Me.ActiveAuras.ContainsKey("Clearcasting") &&
StyxWoW.Me.ActiveAuras.ContainsKey("Tiger's Fury") &&
StyxWoW.Me.CurrentEnergy <= (100 - 20)), //20 == energyPerSec ! Has to be fixed
//Ignore 4x T11 Bonus
//#22
Spell.Cast("Shred", ret => StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
(StyxWoW.Me.ActiveAuras.ContainsKey("Tiger's Fury") ||
StyxWoW.Me.ActiveAuras.ContainsKey("Berserk"))),
Spell.Cast("Mangle (Cat)", ret => !StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
(StyxWoW.Me.ActiveAuras.ContainsKey("Tiger's Fury") ||
StyxWoW.Me.ActiveAuras.ContainsKey("Berserk"))),
//#23
Spell.Cast("Shred", ret => StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
(StyxWoW.Me.ComboPoints < 5 && StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Rip",true).Seconds <=3)
|| (StyxWoW.Me.ComboPoints == 0 && StyxWoW.Me.GetAuraTimeLeft("Savage Roar",true).Seconds <=2)),
Spell.Cast("Mangle (Cat)", ret => !StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
(StyxWoW.Me.ComboPoints < 5 && StyxWoW.Me.CurrentTarget.GetAuraTimeLeft("Rip", true).Seconds <= 3)
|| (StyxWoW.Me.ComboPoints == 0 && StyxWoW.Me.GetAuraTimeLeft("Savage Roar", true).Seconds <= 2)),
//#24
Spell.Cast("Shred", ret => StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
Spell.GetSpellCooldown("Tiger's Fury").Seconds <= 3),
Spell.Cast("Mangle (Cat)", ret => !StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
Spell.GetSpellCooldown("Tiger's Fury").Seconds <= 3),
//#25
Spell.Cast("Shred", ret => StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
StyxWoW.Me.CurrentTarget.CurrentHealth / FINISHER_HEALTH <= 8.5),
Spell.Cast("Mangle (Cat)", ret => !StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
StyxWoW.Me.CurrentTarget.CurrentHealth / FINISHER_HEALTH <= 8.5),
//#26
Spell.Cast("Shred", ret => StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
StyxWoW.Me.CurrentEnergy >= (100 - 20)), //20 == energyPerSec ! Has to be fixed
Spell.Cast("Mangle (Cat)", ret => !StyxWoW.Me.IsBehind(StyxWoW.Me.CurrentTarget) &&
StyxWoW.Me.CurrentEnergy >= (100 - 20)), //20 == energyPerSec ! Has to be fixed
Movement.CreateMoveToMeleeBehavior(true)