Spells.CastSpell("Tricks of the Trade", u => Unit.BestTricksTarget, ret => Me.CurrentEnergy >= 60 && Me.ComboPoints < 5 && (!Buff.PlayerHasActiveBuff("Vanish") && !Spell.SpellOnCooldown("Premeditation") && !Spell.SpellOnCooldown("Shadow Dance") || !Buff.PlayerHasActiveBuff("Stealth") && !Spell.SpellOnCooldown("Premeditation") && !Spell.SpellOnCooldown("Shadow Dance")), "Tricks of the Trade"),
//Spells.CastSpell("Tricks of the Trade", u => Unit.BestTricksTarget, ret => Buff.PlayerHasActiveBuff("Shadow Dance"), "Tricks of the Trade"),
Spells.CastSpell("Shadow Dance", ret => Me.CurrentEnergy >= 60 && Me.ComboPoints < 5 && (!Buff.PlayerHasActiveBuff("Vanish") && !Spell.SpellOnCooldown("Premeditation") || !Buff.PlayerHasActiveBuff("Stealth") && !Spell.SpellOnCooldown("Premeditation")), "Shadow Dance"),
Spells.CastSpell("Vanish", ret => Me.CurrentEnergy >= 60 && Me.ComboPoints <= 1 && !Buff.PlayerHasActiveBuff("Shadow Dance") && !Buff.PlayerHasActiveBuff("Master of Subtlety") && !Buff.TargetHasDebuff("Find Weakness") && !Buff.PlayerHasActiveBuff("Vanish") && !Spell.SpellOnCooldown("Premeditation"), "Vanish"),
Spells.CastSpell("Shadowstep", ret => ((Buff.PlayerHasActiveBuff("Shadow Dance") && Buff.TargetHasDebuff("Find Weakness")) || (Buff.PlayerHasActiveBuff("Vanish") || Buff.PlayerHasActiveBuff("Stealth"))) && !BossList.IgnoreShadowStep.Contains(Unit.CurrentTargetEntry), "Shadowstep"),
Spells.CastSpell("Premeditation", ret => Me.ComboPoints <= 2 || Buff.PlayerHasActiveBuff("Vanish"), "Premeditation"),
Spells.CastSpell("Ambush", ret => Me.CurrentTarget != null && (this.IsBehind(Me.CurrentTarget) || BossList.BackstabIds.Contains(Unit.CurrentTargetEntry)) && Buff.PlayerHasActiveBuff("Vanish"), "Ambush"),
Spells.CastSpell("Ambush", ret => Me.CurrentTarget != null && (this.IsBehind(Me.CurrentTarget) || BossList.BackstabIds.Contains(Unit.CurrentTargetEntry)) && Me.ComboPoints <= 4, "Ambush"),
Spells.CastSpell("Preparation", ret => Spell.SpellCooldown("Vanish").TotalSeconds > 60 && !Buff.PlayerHasActiveBuff("Vanish") && !Buff.PlayerHasActiveBuff("Shadow Dance"), "Preparation"),
Spells.CastSpell("Eviscerate", ret => Me.ComboPoints == 5 && Buff.PlayerHasActiveBuff("Shadow Dance"), "Rupture"),
Spells.CastSpell("Rupture", ret => Me.ComboPoints == 5 && !Buff.TargetHasDebuff("Rupture") && Buff.PlayerHasActiveBuff("Master of Subtlety"), "Rupture"),
Spells.CastSelfSpell("Slice and Dice", ret => Buff.PlayerBuffTimeLeft("Slice and Dice") < 3 && Me.ComboPoints == 5 && !Buff.PlayerHasActiveBuff("Shadow Dance"), "Slice and Dice"),
Spells.CastSpell("Rupture", ret => Me.ComboPoints == 5 && !Buff.TargetHasDebuff("Rupture"), "Rupture"),
Spells.CastSpell("Eviscerate", ret => Me.ComboPoints == 5 && Buff.TargetDebuffTimeLeft("Rupture").TotalSeconds < 3, "Eviscerate"),
Spells.CastSelfSpell("Recuperate", ret => Me.ComboPoints == 5 && Buff.PlayerBuffTimeLeft("Recuperate") < 3 && !Buff.PlayerHasActiveBuff("Shadow Dance"), "Recuperate"),
Spells.CastSpell("Eviscerate", ret => Me.ComboPoints == 5 && Buff.TargetDebuffTimeLeft("Rupture").TotalSeconds > 1, "Eviscerate"),
Spells.CastSpell("Hemorrhage", ret => Me.ComboPoints < 4 && !Buff.PlayerHasActiveBuff("Shadow Dance") && !Buff.PlayerHasActiveBuff("Vanish") && UseHemorrhage, "Hemorrhage"),
Spells.CastSpell("Backstab", ret => Me.CurrentTarget != null && (this.IsBehind(Me.CurrentTarget) || BossList.BackstabIds.Contains(Unit.CurrentTargetEntry)) && !Buff.PlayerHasActiveBuff("Shadow Dance") && Me.ComboPoints < 4 && Spell.SpellOnCooldown("Shadow Dance") && !Spell.SpellOnCooldown("Vanish") && Spell.SpellOnCooldown("Premeditation"), "Backstab"),
Spells.CastSpell("Backstab", ret => Me.CurrentTarget != null && (this.IsBehind(Me.CurrentTarget) || BossList.BackstabIds.Contains(Unit.CurrentTargetEntry)) && !Buff.PlayerHasActiveBuff("Shadow Dance") && Me.ComboPoints < 4 && !Spell.SpellOnCooldown("Shadow Dance") && Spell.SpellOnCooldown("Vanish") && Spell.SpellOnCooldown("Premeditation"), "Backstab"),
Spells.CastSpell("Backstab", ret => Me.CurrentTarget != null && (this.IsBehind(Me.CurrentTarget) || BossList.BackstabIds.Contains(Unit.CurrentTargetEntry)) && !Buff.PlayerHasActiveBuff("Shadow Dance") && Me.ComboPoints < 4 && !Spell.SpellOnCooldown("Shadow Dance") && !Spell.SpellOnCooldown("Vanish") && Spell.SpellOnCooldown("Premeditation"), "Backstab"),
Spells.CastSpell("Backstab", ret => Me.CurrentTarget != null && (this.IsBehind(Me.CurrentTarget) || BossList.BackstabIds.Contains(Unit.CurrentTargetEntry)) && !Buff.PlayerHasActiveBuff("Shadow Dance") && Me.ComboPoints >= 2 && Spell.SpellOnCooldown("Shadow Dance") && !Spell.SpellOnCooldown("Vanish") && !Spell.SpellOnCooldown("Premeditation"), "Backstab"),
Spells.CastSpell("Backstab", ret => Me.CurrentTarget != null && (this.IsBehind(Me.CurrentTarget) || BossList.BackstabIds.Contains(Unit.CurrentTargetEntry)) && !Buff.PlayerHasActiveBuff("Shadow Dance") && Me.ComboPoints < 4 && Spell.SpellOnCooldown("Shadow Dance") && Spell.SpellOnCooldown("Vanish"), "Backstab"),
Spells.CastSpell("Backstab", ret => Me.CurrentTarget != null && (this.IsBehind(Me.CurrentTarget) || BossList.BackstabIds.Contains(Unit.CurrentTargetEntry)) && !Buff.PlayerHasActiveBuff("Shadow Dance") && Me.ComboPoints == 4 && Spell.SpellOnCooldown("Shadow Dance"), "Backstab"),
Spells.CastSpell("Hemorrhage", ret => !Buff.PlayerHasActiveBuff("Shadow Dance") && Me.ComboPoints == 4 && !Spell.SpellOnCooldown("Shadow Dance") && Spell.SpellOnCooldown("Premeditation") && UseHemorrhage, "Hemorrhage"),
Spells.CastSpell("Backstab", ret => Me.CurrentTarget != null && (this.IsBehind(Me.CurrentTarget) || BossList.BackstabIds.Contains(Unit.CurrentTargetEntry)) && !Buff.PlayerHasActiveBuff("Shadow Dance") && Me.ComboPoints == 4 && !Spell.SpellOnCooldown("Shadow Dance") && Spell.SpellOnCooldown("Premeditation"), "Backstab"),
Spells.CastSpell("Backstab", ret => Me.CurrentTarget != null && (this.IsBehind(Me.CurrentTarget) || BossList.BackstabIds.Contains(Unit.CurrentTargetEntry)) && !Buff.PlayerHasActiveBuff("Shadow Dance") && Me.ComboPoints == 4 && Me.CurrentEnergy > 70 && !Spell.SpellOnCooldown("Shadow Dance") && !Spell.SpellOnCooldown("Premeditation"), "Backstab"),
Spells.CastSpell("Hemorrhage", ret => Me.CurrentTarget != null && (!this.IsBehind(Me.CurrentTarget)) && Me.ComboPoints < 4, "Hemorrhage"),
Spells.CastSpell("Hemorrhage", ret => Me.CurrentTarget != null && (!this.IsBehind(Me.CurrentTarget)) && Me.ComboPoints < 5 && Me.CurrentEnergy > 70, "Hemorrhage")