We actually can check current life value/max. I have a few checks for is current target's life > 1/3 of my max life. What would be some logic that you would like to see regarding life? Also ambush gives 2cp now as well
Yup, Built for PvE, havent tested it in PvP I stand corrected, ty I havent played my rogue that much, i have rerolled a monk. I have spent some time on it, playing with Altec routine, but i presume that i never bothered to read Ambush specific tooltip. Damn, that was noobish.
I was playing for a few weeks before I noticed it and only because I was reading through each spell, one by one, after I had made myself sound like a noob in guild chat while talking about feint/survivability
What CC do you suggest for leveling? Standard? This? Another. I'd like an AFK-able one if possible, even if it's slightly slower.
This CC is awesome i'm using it currently to level as combat. I added Evasion & Combat Readiness to the main roation aswell (works only if you have use cooldowns selected). It should help survive those tricky multiple pull fights. Code: #region Combat public Composite MainRotation() { return new PrioritySelector( new Decorator(ret => Me.IsDead || Me.IsGhost || Me.IsCasting || Me.IsChanneling, new ActionAlwaysSucceed()), new Decorator(ret => (Me.GroupInfo.IsInParty || Me.GroupInfo.IsInRaid) && (Me.CurrentMap.IsDungeon || Me.CurrentMap.IsRaid) && Me.CurrentTarget != null && !Me.CurrentTarget.Combat, new ActionAlwaysSucceed()), //Movement new Decorator(ret => ARSettings.Instance.FaceTarget && ValidUnit(Me.CurrentTarget) && !Me.IsSafelyFacing(Me.CurrentTarget, 70f) && Me.CurrentTarget.InLineOfSight && !Me.HasAura("Killing Spree"), new Action(delegate { Me.CurrentTarget.Face(); return RunStatus.Failure; })), new Decorator(ret => ARSettings.Instance.Movement && SpellManager.HasSpell("Shadowstep") && ARSettings.Instance.ShadowStep && ValidUnit(Me.CurrentTarget) && Me.CurrentTarget.Distance > 10 && Me.CurrentTarget.InLineOfSpellSight && !Me.HasAura("Killing Spree"), new Action(delegate { CastSpell("Shadowstep", Me.CurrentTarget); return RunStatus.Failure; })), new Decorator(ret => ARSettings.Instance.Movement && SpellManager.HasSpell("Rocket Jump") && Me.IsSafelyFacing(Me.CurrentTarget, 20f) && ValidUnit(Me.CurrentTarget) && Me.CurrentTarget.Distance > 15 && Me.CurrentTarget.InLineOfSpellSight && !Me.HasAura("Killing Spree"), new Action(delegate { CastSpell("Rocket Jump", Me.CurrentTarget); return RunStatus.Failure; })), new Decorator(ret => ARSettings.Instance.Movement && SpellManager.HasSpell("Sprint") && (SpellManager.HasSpell("Shadow Step") && !SpellManager.CanCast("Shadow Step") || !SpellManager.HasSpell("Shadow Step")) && ValidUnit(Me.CurrentTarget) && !Me.CurrentTarget.IsWithinMeleeRange && Me.CurrentTarget.InLineOfSpellSight && !Me.HasAura("Killing Spree"), new Action(delegate { CastSpell("Sprint", Me.CurrentTarget); return RunStatus.Failure; })), new Decorator(ret => ARSettings.Instance.Movement && Me.CurrentTarget.Distance > 2.5 && !Me.CurrentTarget.IsWithinMeleeRange && !Me.HasAura("Killing Spree"), new Action(delegate { MoveBehind(Me.CurrentTarget); Logging.Write("Moving to the target"); return RunStatus.Failure; })), new Decorator(ret => ARSettings.Instance.Movement && ValidUnit(Me.CurrentTarget) && (Me.CurrentTarget.Distance > 2.5 && Me.CurrentTarget.IsWithinMeleeRange) && !Me.HasAura("Killing Spree"), new Action(delegate { Navigator.PlayerMover.MoveStop(); return RunStatus.Failure; })), //End of Movement //Pick Pocket -- 5m default seems buggy atm new Decorator(ret => Me.HasAura("Stealth") && ValidUnit(Me.CurrentTarget) && Me.CurrentTarget.IsHumanoid && Me.CurrentTarget.Distance <= 5, new Action(delegate { CastSpell("Pick Pocket", Me.CurrentTarget); return RunStatus.Failure; })), //Target is interuptable new Decorator(ret => SpellManager.HasSpell("Kick") && ARSettings.Instance.Kick && !Me.IsStealthed && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && (Me.CurrentTarget.IsCasting || Me.CurrentTarget.IsChanneling) && Me.CurrentTarget.CanInterruptCurrentSpellCast, new Action(delegate { CastSpell("Kick", Me.CurrentTarget); return RunStatus.Failure; })), //Energy Regen Mechanic -- Slice and Dice new Decorator(ret => SpellManager.HasSpell("Slice and Dice") && CP() > 0 && (!Me.HasAura("Slice and Dice") || Me.GetAuraTimeLeft("Slice and Dice", true).TotalSeconds < 3), new Action(delegate { CastSpell("Slice and Dice", Me); return RunStatus.Failure; })), //Energy Regen Mechanic -- Rupture new Decorator(ret => SpellManager.HasSpell("Rupture") && !Me.IsStealthed && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && ((ARSettings.Instance.Spec == "Combat" && ARSettings.Instance.Rupture && !Me.HasAura("Blade Flurry") && CP() > 4) || ARSettings.Instance.Spec != "Combat" && CP() > 0) && (!Me.CurrentTarget.HasMyAura("Rupture") || Me.CurrentTarget.GetAuraTimeLeft("Rupture", true).TotalSeconds < 5), new Action(delegate { CastSpell("Rupture", Me.CurrentTarget); return RunStatus.Failure; })), //Tricks of the Trade -- Target's Target new Decorator(ret => SpellManager.HasSpell("Tricks of the Trade") && (Me.GroupInfo.IsInParty || Me.GroupInfo.IsInRaid) && (Me.IsStealthed || (Me.FocusedUnit != null && !Me.FocusedUnit.IsAlive && Me.FocusedUnit.IsFriendly)) && Me.CurrentTarget.CurrentTarget.IsAlive && Me.CurrentTarget.CurrentTarget.IsFriendly, new Action(delegate { CastSpell("Tricks of the Trade", Me.CurrentTarget.CurrentTarget); return RunStatus.Failure; })), //Tricks of the Trade -- Focus Target new Decorator(ret => SpellManager.HasSpell("Tricks of the Trade") && (Me.GroupInfo.IsInParty || Me.GroupInfo.IsInRaid) && !Me.IsStealthed && Me.FocusedUnit != null && Me.FocusedUnit.IsAlive && Me.FocusedUnit.IsFriendly, new Action(delegate { CastSpell("Tricks of the Trade", Me.FocusedUnit); return RunStatus.Failure; })), //Blade Flurry new Decorator(ret => SpellManager.HasSpell("Blade Flurry") && ARSettings.Instance.BladeFlurry && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.HasAura("Killing Spree") && BFaddCount() >= 2 && !Me.HasAura("Blade Flurry"), new Action(delegate { CastSpell("Blade Flurry", Me); return RunStatus.Failure; })), new Decorator(ret => SpellManager.HasSpell("Blade Flurry") && ARSettings.Instance.BladeFlurry && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.HasAura("Killing Spree") && BFaddCount() < 2 && Me.HasAura("Blade Flurry"), new Action(delegate { Me.CancelAura("Blade Flurry"); return RunStatus.Failure; })), //Self Heals //Recup new Decorator(ret => SpellManager.HasSpell("Recuperate") && ARSettings.Instance.Recuperate && Me.ComboPoints > 0 && Me.HealthPercent < ARSettings.Instance.RHP && !Me.HasAura("Recuperate"), new Action(delegate{CastSpell("Recuperate", Me);return RunStatus.Failure;})), //Shiv new Decorator(ret => SpellManager.HasSpell("Shiv") && ARSettings.Instance.AShiv && !Me.IsStealthed && ARSettings.Instance.OHPoison == "Cripple Poison" && Me.HasAura(ARSettings.Instance.OHPoison) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.CurrentTarget.IsMoving && !Me.CurrentTarget.HasAura("Debilitating poison"), new Action(delegate { CastSpell("Shiv", Me.CurrentTarget); return RunStatus.Failure; })), new Decorator(ret => SpellManager.HasSpell("Shiv") && ARSettings.Instance.AShiv && !Me.IsStealthed && ARSettings.Instance.OHPoison == "Mind-numbing Poison" && Me.HasAura(ARSettings.Instance.OHPoison) && !SpellManager.CanCast("Kick") && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && !Me.CurrentTarget.HasAura("Mind Paralysis"), new Action(delegate { CastSpell("Shiv", Me.CurrentTarget); return RunStatus.Failure; })), new Decorator(ret => SpellManager.HasSpell("Shiv") && ARSettings.Instance.AShiv && !Me.IsStealthed && ARSettings.Instance.OHPoison == "Leeching Poison" && Me.HasAura(ARSettings.Instance.OHPoison) && Me.HealthPercent < ARSettings.Instance.RHP, new Action(delegate { CastSpell("Shiv", Me.CurrentTarget); return RunStatus.Failure; })), #region Boss CD's / Always Use CD's // Defensive cooldowns new Decorator(ret => SpellManager.HasSpell("Evasion") && ARSettings.Instance.UseCDs && ValidUnit(Me.CurrentTarget) && !Me.IsStealthed && Me.HealthPercent <= 50, new Action(delegate { CastSpell("Evasion", Me); return RunStatus.Failure; })), new Decorator(ret => SpellManager.HasSpell("Combat Readiness") && !SpellManager.CanCast("Evasion") && !Me.HasAura("Evasion") && ARSettings.Instance.UseCDs && ValidUnit(Me.CurrentTarget) && !Me.IsStealthed && Me.HealthPercent <= 50, new Action(delegate { CastSpell("Combat Readiness", Me); return RunStatus.Failure; })), //Boss CDs / always use CDs //Expose Armor new Decorator(ret => SpellManager.HasSpell("Expose Armor") && ARSettings.Instance.ExposeArmor && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed && Me.CurrentTarget.HasMyAura("Weakened Armor") && Me.CurrentTarget.GetAuraByName("Weakened Armor").StackCount < 3, new Action(delegate { CastSpell("Expose Armor", Me.CurrentTarget); return RunStatus.Failure; })), new Decorator(ret => SpellManager.HasSpell("Expose Armor") && ARSettings.Instance.ExposeArmor && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed && (!Me.CurrentTarget.HasAura("Weakened Armor") || Me.CurrentTarget.GetAuraTimeLeft("Weakened Armor", false).TotalSeconds < 3), new Action(delegate { CastSpell("Expose Armor", Me.CurrentTarget); return RunStatus.Failure; })), //Shadow Blades new Decorator(ret => SpellManager.HasSpell("Shadow Blades") && ARSettings.Instance.ShadowBlades && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.HasAura("Killing Spree") && !Me.IsStealthed, new Action(delegate { CastSpell("Shadow Blades", Me); return RunStatus.Failure; })), //Vanish new Decorator(ret => SpellManager.HasSpell("Vanish") && ARSettings.Instance.Vanish && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed && ((ARSettings.Instance.Spec == "Sublety" && !Me.CurrentTarget.HasMyAura("Find Weakness")) || ARSettings.Instance.Spec != "Sublety"), new Action(delegate {CastSpell("Vanish", Me); return RunStatus.Failure;})), //Assassination - Vendetta new Decorator(ret => SpellManager.HasSpell("Vendetta") && ARSettings.Instance.Vendetta && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget), new Action(delegate { CastSpell("Vendetta", Me.CurrentTarget); return RunStatus.Failure; })), //Combat - Adrenaline Rush new Decorator(ret => SpellManager.HasSpell("Adrenaline Rush") && ARSettings.Instance.AdrenalineRush && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.HasAura("Killing Spree") && !Me.IsStealthed, new Action(delegate { CastSpell("Adrenaline Rush", Me); return RunStatus.Failure; })), //Combat - Killing Spree new Decorator(ret => SpellManager.HasSpell("Killing Spree") && ARSettings.Instance.KillingSpree && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && !Me.IsStealthed && Me.CurrentEnergy < 40 && !Me.HasAura("Adrenaline Rush") && !Me.HasAura("Shadow Blades"), new Action(delegate {CastSpell("Killing Spree", Me); return RunStatus.Failure;})), //Sublety - Premeditation new Decorator(ret => SpellManager.HasSpell("Premeditation") && ARSettings.Instance.Premeditation && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && (Me.IsStealthed || Me.HasAura("Shadow Dance")), new Action(delegate { CastSpell("Premeditation", Me.CurrentTarget); return RunStatus.Failure; })), //Sublety - Shadow Dance // ***** needs behind check ***** new Decorator(ret => SpellManager.HasSpell("Shadow Dance") && ARSettings.Instance.ShadowDance && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed && !Me.CurrentTarget.HasMyAura("Find Weakness"), new Action(delegate { CastSpell("Shadow Dance", Me); return RunStatus.Failure; })), //Talent - Preparation // ***** need talent checker ***** new Decorator(ret => SpellManager.HasSpell("Preparation") && ARSettings.Instance.Preparation && (IsTargetBoss() || ARSettings.Instance.UseCDs) && !SpellManager.CanCast("Vanish") && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed, new Action(delegate { CastSpell("Preparation", Me); return RunStatus.Failure; })), //Racials //Arcane Torrent new Decorator(ret => SpellManager.HasSpell("Arcane Torrent") && ARSettings.Instance.ArcaneTorrent && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed && (Me.CurrentEnergy < 85 || ((Me.CurrentTarget.IsCasting || Me.CurrentTarget.IsChanneling) && Me.CurrentTarget.CanInterruptCurrentSpellCast && Me.CurrentTarget.Distance <= 8)), new Action(delegate { CastSpell("Arcane Torrent", Me.CurrentTarget); return RunStatus.Failure; })), //Berserking new Decorator(ret => SpellManager.HasSpell("Berserking") && ARSettings.Instance.Berserking && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed, new Action(delegate { CastSpell("Berserking", Me); return RunStatus.Failure; })), //Blood Fury new Decorator(ret => SpellManager.HasSpell("Blood Fury") && ARSettings.Instance.BloodFury && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed, new Action(delegate { CastSpell("Blood Fury", Me); return RunStatus.Failure; })), //Rocket Barrage new Decorator(ret => SpellManager.HasSpell("Rocket Barrage") && ARSettings.Instance.RocketBarrage && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && Me.CurrentTarget.Distance <= 30 && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed, new Action(delegate { CastSpell("Rocket Barrage", Me.CurrentTarget); return RunStatus.Failure; })), //Engy Gloves new Decorator(ret => ARSettings.Instance.UseEngineeringGloves && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed && Me.Inventory.Equipped.Hands.Usable && Me.Inventory.Equipped.Hands.Cooldown == 0, new Action(delegate { Me.Inventory.Equipped.Hands.Use(); return RunStatus.Failure; })), //Trinkets new Decorator(ret => ARSettings.Instance.UseTrinkets && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed && Me.Inventory.Equipped.Trinket1.Usable && Me.Inventory.Equipped.Trinket1.Cooldown == 0, new Action(delegate { Me.Inventory.Equipped.Trinket1.Use(); return RunStatus.Failure; })), new Decorator(ret => ARSettings.Instance.UseTrinkets && (IsTargetBoss() || ARSettings.Instance.UseCDs) && ValidUnit(Me.CurrentTarget) && IsEnemy(Me.CurrentTarget) && Me.IsFacing(Me.CurrentTarget) && !Me.IsStealthed && Me.Inventory.Equipped.Trinket2.Usable && Me.Inventory.Equipped.Trinket2.Cooldown == 0, new Action(delegate { Me.Inventory.Equipped.Trinket2.Use(); return RunStatus.Failure; })), #endregion //AoE new Decorator(ret => SpellManager.HasSpell("Fan of Knives") && ARSettings.Instance.AOE && addCount() >= ARSettings.Instance.AoeAmount, AoERotation()), //Assassination new Decorator(ret => SpellManager.HasSpell("Mutilate") && (!SpellManager.HasSpell("Fan of Knives") || !ARSettings.Instance.AOE || addCount() < ARSettings.Instance.AoeAmount), AssassinationRotation()), //Combat Spec new Decorator(ret => !SpellManager.HasSpell("Mutilate") && !SpellManager.HasSpell("Backstab") && (!SpellManager.HasSpell("Fan of Knives") || !ARSettings.Instance.AOE || addCount() < ARSettings.Instance.AoeAmount), CombatRotation()), //Sublety Spec new Decorator(ret => SpellManager.HasSpell("Backstab") && (SpellManager.HasSpell("Fan of Knives") || !ARSettings.Instance.AOE || addCount() < ARSettings.Instance.AoeAmount), SubletyRotation()) ); }
When i try to use it, it just spinns around and around and pulling more and more mobs. Going back to CLU.. Which is not so bad, but you always want to try out something new.
Assassination below 35% with 5 cp sometimes don't do envenom only Dispatch so waste cp. can you fix this please. I tested in Combat Bot.
i'm using this with assassination spec and love it. I'm only having one problem; the shadowstep option doesn't seem to work. what I mean is, I check the box for shadowstep and click save but it won't remember the setting. I open up the class config again and it shows the box unchecked. also don't like how it uses sprint right before it pulls a mob. These are very minor things and overall love the routine. I'll check back if I have any problems (no real problems currently).
Be sure you tick "enable movement" in the Class Config. Without this checked it'll just run circles whilst fighting which is weird but the way it is :/
I don't have a clue what I am looking for and my eyes are surely bleeding by now, but.. in the file ARForm.Designer.cs should there be something like "this.SS.CheckedChanged += new System.EventHandler(this.SS_CheckedChanged);" around line 440? edit: wow.. this actually made shadowstep work.
Great CR. I am Ass. and I DO NOT have Recouperate checked. It's keeping it up almost 100%. I tried enabling it and setting it to 1%...still keeping it up..
Do you have "Spend CP (rest)" checked off? this will spend combo points remaining after combat on SnD or recuperate.