• Visit Rebornbuddy
  • DefaultCombat 4.0 Consolidated Changes

    Discussion in 'Archives' started by alltrueist, Nov 6, 2015.

    1. alltrueist

      alltrueist Active Member

      Joined:
      Dec 10, 2012
      Messages:
      1,424
      Likes Received:
      16
      Trophy Points:
      38
      Hey all,
      I'm going to set up this thread as a consolidated place for us to discuss and share new routine code for 4.0. At the moment, I'm tracking 4+ threads where people are suggesting different changes for different specs; it's too much.

      I'm going to ask Cryogensis (or whomever can) to heavily moderate this thread: no outside discussions, no routine support, only code sharing and theorycrafting.

      As of right now, I know the following rotations are working 100% smoothly:

      Jedi Guardian/Defense
      Jedi Sage/Balance
      Scoundrel/Scrapper
      Commando/Gunnery

      RULES FOR THIS THREAD
      1. Do not post support issues here. Please post issues with DefaultCombat in the general DefaultCombat thread.
      2. Off-topic, arguments, and troll posts will not be tolerated.
      3. If you have a suggestion, please post the following: What the rotation is currently doing; what the rotation SHOULD BE doing; EXACT names of buff/debuffs (including capitalization); specific dependencies (energy level above 60, etc.); what type of ability this is (single target, aoe, click on ground, defensive, offensive buff, etc.); who the target of the ability is (player, friendly target, enemy); anything else you can think of. The more information the better.

      If you have already posted a fixed routine elsewhere, please also post it here.
       
    2. alltrueist

      alltrueist Active Member

      Joined:
      Dec 10, 2012
      Messages:
      1,424
      Likes Received:
      16
      Trophy Points:
      38
      FAQs:

      Q. I want to help, but I can't code! What can I do?
      A. You can still help! If you know of a rotation that's currently working, please help me translate it! Look at the list in the above post for rotations that are 100% working, and give me the mirror-class names for every ability, buff, and debuff. This requires no coding knowledge-- all you have to do is give me proper spelling and capitalization!
       
    3. Cryogenesis

      Cryogenesis Moderator Moderator

      Joined:
      Jul 13, 2010
      Messages:
      2,128
      Likes Received:
      13
      Trophy Points:
      38
      Posts not related to this thread will be deleted.
      If you need support post them in the support page for general help or in defaultcombat if you need specific help for this routine.
       
    4. willz916

      willz916 Member Legendary

      Joined:
      Jan 22, 2014
      Messages:
      303
      Likes Received:
      2
      Trophy Points:
      18
      over haul on Sniper Engineer tested and works
      **EDIT** AOE update
      Code:
      // Copyright (C) 2011-2015 Bossland GmbH
      // See the file LICENSE for the source code's detailed license
      
      using Buddy.BehaviorTree;
      using DefaultCombat.Core;
      using DefaultCombat.Helpers;
      
      namespace DefaultCombat.Routines
      {
      	internal class Engineering : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Sniper Engineering"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Coordination")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Buff("Escape"),
      					Spell.Buff("Shield Probe", ret => Me.HealthPercent <= 50),
      					Spell.Buff("Evasion", ret => Me.HealthPercent <= 30),
      					Spell.Buff("Adrenaline Probe", ret => Me.EnergyPercent <= 50),
      					Spell.Buff("Laze Target"),
      					Spell.Cast("Target Acquired")
      					);
      			}
      		}
      
              public override Composite SingleTarget
              {
                  get
                  {
                      return new LockSelector(
                          //Movement
                          CombatMovement.CloseDistance(Distance.Melee),
      
                          //Low Energy
      
                          //Low Energy
                          new Decorator(ret => Me.EnergyPercent < 35,
                              new LockSelector(
                                  Spell.Cast("Rifle Shot"),
                                  Spell.Cast("Fragmentation Grenade", ret => Me.HasBuff("Energy Overrides"))
                                  )),
                          //Rotation
                          Spell.Cast("Distraction", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                          Spell.Cast("Series of Shots"),
                          Spell.Cast("EMP Discharge", ret => Me.CurrentTarget.HasDebuff("Interrogation Probe")),
                          Spell.CastOnGround("Plasma Probe", ret => Me.CurrentTarget.DebuffTimeLeft("Overwhelmed (Mental)") < 41),
                          Spell.Cast("Explosive Probe"),
                          Spell.Cast("Fragmentation Grenade", ret => Me.HasBuff("Energy Overrides")),
                          Spell.DoT("Interrogation Probe", "Interrogation Probe"),
                          Spell.DoT("Corrosive Dart", "Corrosive Dart"),
                          Spell.CastOnGround("Orbital Strike", ret => Me.EnergyPercent > 65),
                          Spell.Cast("Takedown", ret => Me.CurrentTarget.HealthPercent <= 30),
                          Spell.Cast("Fragmentation Grenade"),
                          Spell.Cast("Snipe", ret => Me.EnergyPercent > 75),
                          Spell.Cast("Rifle Shot")
                          );
                  }
              }
      
              public override Composite AreaOfEffect
              {
                  get
                  {
                      return new Decorator(ret => Targeting.ShouldAoe,
                          new LockSelector(
                              Spell.CastOnGround("Orbital Strike"),
                              Spell.CastOnGround("Plasma Probe", ret => Me.CurrentTarget.DebuffTimeLeft("Overwhelmed (Mental)") < 41),
                              Spell.Cast("Suppressive Fire")
                              ));
                  }
              }
      	}
      }
      
       
      Last edited: Nov 7, 2015
    5. Aziziel

      Aziziel New Member

      Joined:
      Mar 17, 2013
      Messages:
      23
      Likes Received:
      0
      Trophy Points:
      1
      My attempt at Immortal Jugg conversion:

      Code:
      // Copyright (C) 2011-2015 Bossland GmbH
      // See the file LICENSE for the source code's detailed license
      
      using Buddy.BehaviorTree;
      using DefaultCombat.Core;
      using DefaultCombat.Helpers;
      
      namespace DefaultCombat.Routines
      {
      	internal class Immortal : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Juggernaut Immortal"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Soresu Form"),
      					Spell.Buff("Unnatural Might"),
      					Spell.Cast("Guard", on => Me.Companion,
      						ret => Me.Companion != null && !Me.Companion.IsDead && !Me.Companion.HasBuff("Guard"))
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Buff("Unleash"),
      					Spell.Buff("Saber Reflect", ret => Me.HealthPercent <= 90),
      					Spell.Buff("Endure Pain", ret => Me.HealthPercent <= 80),
      					Spell.Buff("Enraged Defense", ret => Me.HealthPercent < 70),
      					Spell.Buff("Invincible", ret => Me.HealthPercent <= 50),
      					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 30),
      					Spell.Buff("Enrage", ret => Me.ActionPoints <= 6)
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Cast("Saber Throw",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 0.5f && Me.CurrentTarget.Distance <= 3f),
      					Spell.Cast("Force Charge",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 1f && Me.CurrentTarget.Distance <= 3f),
      
      					//Movement
      					CombatMovement.CloseDistance(Distance.Melee),
      
      					//Rotation
      					Spell.Cast("Retaliation"),
      					Spell.Cast("Crushing Blow"),
      					Spell.Cast("Force Scream"),
      					Spell.Cast("Aegis Assault", ret => Me.ActionPoints <= 7 || !Me.HasBuff("Aegis")),
      					Spell.Cast("Smash", ret => !Me.CurrentTarget.HasDebuff("Unsteady (Force)") && Targeting.ShouldPbaoe),
      					Spell.Cast("Backhand", ret => !Me.CurrentTarget.IsStunned),
      					Spell.Cast("Ravage"),
      					Spell.Cast("Vicious Throw", ret => Me.CurrentTarget.HealthPercent <= 30 || Me.HasBuff("War Bringer")),
      					Spell.Cast("Vicious Slash", ret => Me.ActionPoints >= 9),
      					Spell.Cast("Assault"),
      					Spell.Cast("Saber Throw", ret => Me.CurrentTarget.Distance >= 0.5f && Me.InCombat)
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldPbaoe,
      					new LockSelector(
      						Spell.Cast("Smash"),
      						Spell.Cast("Crushing Blow", ret => Me.HasBuff("Aegis")),
      						Spell.Cast("Aegis Assault", ret => !Me.HasBuff("Aegis")),
      						Spell.Cast("Retaliation"),
      						Spell.Cast("Force Scream"),
      						Spell.Cast("Sweeping Slash")
      						));
      			}
      		}
      	}
      }
       
    6. pindleskin

      pindleskin Community Developer

      Joined:
      Oct 24, 2012
      Messages:
      1,124
      Likes Received:
      2
      Trophy Points:
      38
      Mercenary - Arsenal

      "Death From Above" in AOE doesn't need any (ret) conditions otherwhise it never uses it. I tested it. Probably same goes for mirror discipline (I think its Mortar Volley or smth like that there).
       
    7. willz916

      willz916 Member Legendary

      Joined:
      Jan 22, 2014
      Messages:
      303
      Likes Received:
      2
      Trophy Points:
      18
      My Carnage Marauder
      Code:
      // Copyright (C) 2011-2015 Bossland GmbH
      // See the file LICENSE for the source code's detailed license
      
      using Buddy.BehaviorTree;
      using DefaultCombat.Core;
      using DefaultCombat.Helpers;
      
      namespace DefaultCombat.Routines
      {
      	internal class Carnage : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Marauder Carnage"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Ataru Form"),
      					Spell.Buff("Unnatural Might")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Buff("Unleash"),
      					Spell.Buff("Cloak of Pain", ret => Me.HealthPercent <= 90),
      					Spell.Buff("Force Camouflage", ret => Me.HealthPercent <= 70),
      					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 50),
      					Spell.Buff("Undying Rage", ret => Me.HealthPercent <= 10),
      					Spell.Buff("Frenzy", ret => Me.BuffCount("Fury") < 5),
      					Spell.Buff("Berserk")
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Cast("Saber Throw",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 0.5f && Me.CurrentTarget.Distance <= 3f),
      					Spell.Cast("Force Charge",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 1f && Me.CurrentTarget.Distance <= 3f),
      					Spell.Cast("Dual Saber Throw",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 1f && Me.CurrentTarget.Distance <= 3f),
      
      					//Movement
      					CombatMovement.CloseDistance(Distance.Melee),
      
      					//Rotation
      					Spell.Cast("Disruption", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                          Spell.Cast("Massacre", ret => !Me.HasBuff("Massacre")),
      					Spell.Cast("Gore"),
      					Spell.Cast("Ravage", ret => Me.HasBuff("Gore")),
      					Spell.Cast("Vicious Throw"),
      					Spell.Cast("Force Scream", ret => Me.HasBuff("Execute") && Me.Level < 58),
                          Spell.Cast("Devastating Blast", ret => Me.HasBuff("Execute") && Me.Level > 57),
      					Spell.Cast("Massacre"),
                          Spell.Cast("Dual Saber Throw"),
      					Spell.Cast("Battering Assault"),
      					Spell.Cast("Assault")
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldPbaoe,
      					new LockSelector(
      						Spell.Cast("Smash"),
      						Spell.Cast("Sweeping Slash")
      						));
      			}
      		}
      	}
      }
      
       
    8. alltrueist

      alltrueist Active Member

      Joined:
      Dec 10, 2012
      Messages:
      1,424
      Likes Received:
      16
      Trophy Points:
      38
      Everything up to this post has been updated and uploaded. Will be in the next build.
       
    9. Gualtiero

      Gualtiero New Member

      Joined:
      Jun 27, 2014
      Messages:
      51
      Likes Received:
      0
      Trophy Points:
      0
      I modified my Advanced Sentinel CR.
      Just added few abilities that I use and was not there.
      Take a look.
      If you like it use it or suggest changes.

      Code:
      // Copyright (C) 2011-2015 Bossland GmbH
      // See the file LICENSE for the source code's detailed license
      
      using Buddy.BehaviorTree;
      using DefaultCombat.Core;
      using DefaultCombat.Helpers;
      
      namespace DefaultCombat.Routines
      {
      	internal class Combat : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Sentinel Combat"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Ataru Form"),
      					Spell.Buff("Force Might")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Buff("Resolute"),
      					Spell.Buff("Rebuke", ret => Me.HealthPercent <= 90),
      					Spell.Buff("Saber Reflect", ret => Me.HealthPercent <= 70),
      					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 50),
      					Spell.Buff("Heroic Moment", ret => Me.HealthPercent <= 30),
      					Spell.Buff("Guarded by the Force", ret => Me.HealthPercent <= 20),
      					Spell.Buff("Valorous Call", ret => Me.BuffCount("Centering") < 5),
      					Spell.Buff("Zen", ret => Me.CurrentTarget.Distance <= 0.4f)
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Cast("Saber Throw",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 0.5f && Me.CurrentTarget.Distance <= 3f),
      					Spell.Cast("Force Leap",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 1f && Me.CurrentTarget.Distance <= 3f),
      					Spell.Cast("Dual Saber Throw",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 1f && Me.CurrentTarget.Distance <= 3f),
      
      					//Movement
      					CombatMovement.CloseDistance(Distance.Melee),
      
      					//Rotation
      					Spell.Cast("Force Kick", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
      					Spell.Cast("Force Stasis", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
      					Spell.Cast("Dispatch", ret => Me.HasBuff("Hand of Justice") || Me.CurrentTarget.HealthPercent <= 30),
      					Spell.Cast("Precision", ret => Me.CurrentTarget.Distance <= 0.4f),
      					Spell.Cast("Blade Dance", ret => Me.HasBuff("Precision")),
      					Spell.Cast("Clashing Blast", ret => Me.HasBuff("Opportune Attack") && Me.Level >= 57),
      					Spell.Cast("Blade Storm", ret => Me.HasBuff("Opportune Attack") && Me.Level < 57),
      					Spell.Cast("Blade Rush"),
      					Spell.Cast("Slash", ret => Me.ActionPoints >= 7 && Me.Level < 26),
      					Spell.Cast("Zealous Strike", ret => Me.ActionPoints <= 7),
      					Spell.Cast("Strike", ret => Me.ActionPoints <= 10)
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldPbaoe,
      					new LockSelector(
      						Spell.Cast("Force Sweep"),
      						Spell.Cast("Awe"),
      						Spell.Cast("Cyclone Slash")
      						));
      			}
      		}
      	}
      }
      One thing I noticed is that bot never use "Dual Saber Throw": at least I didn't notice.
      Any clue?
       
      Last edited: Nov 8, 2015
    10. FriskyAssassin

      FriskyAssassin New Member

      Joined:
      Jul 15, 2013
      Messages:
      21
      Likes Received:
      0
      Trophy Points:
      0
      It doesn't use Twin Saber Throw, because you are using Dual Saber Throw which is the marauder mirror move.
       
    11. Gualtiero

      Gualtiero New Member

      Joined:
      Jun 27, 2014
      Messages:
      51
      Likes Received:
      0
      Trophy Points:
      0
      Yes I meant "Dual Saber Throw", just wrote the wrong name in my previous message.
       
    12. Cryogenesis

      Cryogenesis Moderator Moderator

      Joined:
      Jul 13, 2010
      Messages:
      2,128
      Likes Received:
      13
      Trophy Points:
      38
      I doubt heroic moment will do anything.
      Heroic moment itself will be fired, but not the 8 spells behind It.
       
    13. willz916

      willz916 Member Legendary

      Joined:
      Jan 22, 2014
      Messages:
      303
      Likes Received:
      2
      Trophy Points:
      18
      in your coding you have it named as "Dual Saber Throw" you need to change it to "Twin Saber Throw"
       
    14. Cryogenesis

      Cryogenesis Moderator Moderator

      Joined:
      Jul 13, 2010
      Messages:
      2,128
      Likes Received:
      13
      Trophy Points:
      38
      So for Sentinel Combat im looking at this code:
      Code:
      // Copyright (C) 2011-2015 Bossland GmbH
      // See the file LICENSE for the source code's detailed license
      
      using Buddy.BehaviorTree;
      using Buddy.CommonBot;
      using DefaultCombat.Core;
      using DefaultCombat.Helpers;
      
      namespace DefaultCombat.Routines
      {
      	internal class Combat : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Sentinel Combat"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Ataru Form"),
      					Spell.Buff("Force Might")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Buff("Resolute"),
      					Spell.Buff("Rebuke", ret => Me.HealthPercent <= 90),
      					Spell.Buff("Saber Reflect", ret => Me.HealthPercent <= 75),
      					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 50),
      					Spell.Buff("Force Camouflage", ret => Me.HealthPercent <= 50 && !Me.HasBuff("Saber Ward")),
      					Spell.Buff("Guarded By The Force", ret => Me.HealthPercent <= 25 && !Me.HasBuff("Saber Ward") || !Me.HasBuff("Force Camouflage")),
      					Spell.Buff("Valorous Call", ret => Me.BuffCount("Centering") < 5),
      					Spell.Buff("Zen", ret => Me.CurrentTarget.Distance <= 0.4f),
      					Spell.Cast("Pacify", ret => Me.CurrentTarget.StrongOrGreater() && !Me.CurrentTarget.BossOrGreater())
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Cast("Twin Saber Throw",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 1f && Me.CurrentTarget.Distance <= 3f),
      					Spell.Cast("Force Leap",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 1f && Me.CurrentTarget.Distance <= 3f),
      
      					//Movement
      					CombatMovement.CloseDistance(Distance.Melee),
      
      					//Rotation
      					Spell.Cast("Force Kick", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
      					Spell.Cast("Force Stasis", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled && !Me.CurrentTarget.BossOrGreater()),
      					Spell.Cast("Dispatch", ret => Me.HasBuff("Hand of Justice") || Me.CurrentTarget.HealthPercent <= 30),
      					Spell.Cast("Precision", ret => Me.CurrentTarget.Distance <= 0.4f),
      					Spell.Cast("Blade Dance", ret => Me.HasBuff("Precision")),
      					Spell.Cast("Clashing Blast", ret => Me.HasBuff("Opportune Attack") && Me.Level >= 57),
      					Spell.Cast("Blade Storm", ret => Me.HasBuff("Opportune Attack") && Me.Level < 57),
      					Spell.Cast("Blade Rush"),
      					Spell.Cast("Slash", ret => Me.ActionPoints >= 7 && Me.Level < 26),
      					Spell.Cast("Zealous Strike", ret => Me.ActionPoints <= 7),
      					Spell.Cast("Strike", ret => Me.ActionPoints <= 10)
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldPbaoe,
      					new LockSelector(
      						Spell.Cast("Force Sweep"),
      						Spell.Buff("Awe", AbilityManager.CanCast("Force Sweep", Me.CurrentTarget) || AbilityManager.CanCast("Cyclone Slash", Me.CurrentTarget)),
      						Spell.Cast("Cyclone Slash")
      						));
      			}
      		}
      	}
      }
      
      It has more defensive spells in it, one more spell cancel Force Statis and Awe for Multi targets.

      I have to still check this code for bugs (ie if it runs) and i need to tweak it for engaging combat, low resource phase and burst phase. (Which i was doing months ago).
       
    15. willz916

      willz916 Member Legendary

      Joined:
      Jan 22, 2014
      Messages:
      303
      Likes Received:
      2
      Trophy Points:
      18
      How do you code a burst phase?
       
    16. Cryogenesis

      Cryogenesis Moderator Moderator

      Joined:
      Jul 13, 2010
      Messages:
      2,128
      Likes Received:
      13
      Trophy Points:
      38
      Something along the lines of sequence and amount of resources.
      Dont know how to pull it off right now.
       
    17. alltrueist

      alltrueist Active Member

      Joined:
      Dec 10, 2012
      Messages:
      1,424
      Likes Received:
      16
      Trophy Points:
      38
      Wouldn't "precision is on cooldown" and "precision is NOT on cooldown" be an easy way to organize the 2 routines?

      NOTE: I don't play a Sentinel
       
    18. Cryogenesis

      Cryogenesis Moderator Moderator

      Joined:
      Jul 13, 2010
      Messages:
      2,128
      Likes Received:
      13
      Trophy Points:
      38
      It doesnt completely rely on precision.
      I'll try to cook up something tomorrow...
       
    19. Bigboom

      Bigboom Member

      Joined:
      Feb 23, 2012
      Messages:
      93
      Likes Received:
      0
      Trophy Points:
      6
      I just tried your code out and it doesn't compile =/. Wasn't sure how far along it was.
       
    20. Cryogenesis

      Cryogenesis Moderator Moderator

      Joined:
      Jul 13, 2010
      Messages:
      2,128
      Likes Received:
      13
      Trophy Points:
      38
      Sorry, you are right.
      Code:
      // Copyright (C) 2011-2015 Bossland GmbH
      // See the file LICENSE for the source code's detailed license
      
      using Buddy.BehaviorTree;
      using DefaultCombat.Core;
      using DefaultCombat.Helpers;
      
      namespace DefaultCombat.Routines
      {
      	internal class Combat : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Sentinel Combat"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Ataru Form"),
      					Spell.Buff("Force Might")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Buff("Resolute"),
      					Spell.Buff("Rebuke", ret => Me.HealthPercent <= 90),
      					Spell.Buff("Saber Reflect", ret => Me.HealthPercent <= 75),
      					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 50),
      					Spell.Buff("Force Camouflage", ret => Me.HealthPercent <= 50 && !Me.HasBuff("Saber Ward")),
      					Spell.Buff("Guarded By The Force", ret => Me.HealthPercent <= 25 && !Me.HasBuff("Saber Ward") || !Me.HasBuff("Force Camouflage")),
      					Spell.Buff("Valorous Call", ret => Me.BuffCount("Centering") < 5),
      					Spell.Buff("Zen", ret => Me.CurrentTarget.Distance <= 0.4f),
      					Spell.Cast("Pacify", ret => Me.CurrentTarget.StrongOrGreater() && !Me.CurrentTarget.BossOrGreater())
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new LockSelector(
      					Spell.Cast("Twin Saber Throw",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 1f && Me.CurrentTarget.Distance <= 3f),
      					Spell.Cast("Force Leap",
      						ret => !DefaultCombat.MovementDisabled && Me.CurrentTarget.Distance >= 1f && Me.CurrentTarget.Distance <= 3f),
      
      					//Movement
      					CombatMovement.CloseDistance(Distance.Melee),
      
      					//Rotation
      					Spell.Cast("Force Kick", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
      					Spell.Cast("Force Stasis", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled && !Me.CurrentTarget.BossOrGreater()),
      					Spell.Cast("Dispatch", ret => Me.HasBuff("Hand of Justice") || Me.CurrentTarget.HealthPercent <= 30),
      					Spell.Cast("Precision", ret => Me.CurrentTarget.Distance <= 0.4f),
      					Spell.Cast("Blade Dance", ret => Me.HasBuff("Precision")),
      					Spell.Cast("Clashing Blast", ret => Me.HasBuff("Opportune Attack") && Me.Level >= 57),
      					Spell.Cast("Blade Storm", ret => Me.HasBuff("Opportune Attack") && Me.Level < 57),
      					Spell.Cast("Blade Rush"),
      					Spell.Cast("Slash", ret => Me.ActionPoints >= 7 && Me.Level < 26),
      					Spell.Cast("Zealous Strike", ret => Me.ActionPoints <= 7),
      					Spell.Cast("Strike", ret => Me.ActionPoints <= 10)
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldPbaoe,
      					new LockSelector(
      						Spell.Cast("Force Sweep"),
      						Spell.Buff("Awe", !Buddy.CommonBot.AbilityManager.CanCast("Force Sweep", Me.CurrentTarget) || !Buddy.CommonBot.AbilityManager.CanCast("Cyclone Slash", Me.CurrentTarget)),
      						Spell.Cast("Cyclone Slash")
      						));
      			}
      		}
      	}
      }
      
      This one should run.

      If im right you had a CSXXXX error (where XXXX stands for a digit). The problem is with AbilityManager, that needs to be refered to Buddy.Commonbot.
       

    Share This Page