• Visit Rebornbuddy
  • DefaultCombat 4.0 Consolidated Changes

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

    1. Markeen

      Markeen Member

      Joined:
      Oct 14, 2012
      Messages:
      153
      Likes Received:
      3
      Trophy Points:
      18
      Pyro is pretty bad imo, why don't you go Advanced Prototype?

      Also that guide has Fillers that require you to have set bonuses, i could try and rework the rotation but you would need to do the opener manually and then he does the main rotation for you.

      Edit: Try this out.

      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
      {
      	public class Pyrotech : RotationBase
      	{
      		public override string Name
      		{
      			get { return "PowerTech Pyrotech"; }
      		}
      
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Combustible Gas Cylinder"),
      					Spell.Buff("Hunter's Boon")
      					);
      			}
      		}
      
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Determination"),
      					Spell.Buff("Vent Heat", ret => Me.ResourcePercent() >= 65),
      					Spell.Buff("Energy Shield", ret => Me.HealthPercent <= 60),
      					Spell.Buff("Kolto Overload", ret => Me.HealthPercent <= 30)
      					);
      			}
      		}
      
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new PrioritySelector(
      					//Movement
      					CombatMovement.CloseDistance(Distance.Melee),
      					
      					//Low Energy
      					new Decorator(ret => Me.ResourcePercent() > 40,
      						new PrioritySelector(
      							Spell.Cast("Flame Burst", ret => Me.HasBuff("Flame Barrage")),
      							Spell.Cast("Rapid Shots")
      							)),
      							
      					//Rotation
                          Spell.Cast("Quell", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
      					Spell.DoT("Scorch", "Scorch"),
      					Spell.DoT("Incendiary Missile", "Burning (Incendiary Missile)"),
      					Spell.Cast("Flaming Fist"),
                          Spell.Cast("Flame Thrower", ret => Me.BuffCount("Superheated Flame Thrower") == 2),
      					Spell.Cast("Rail Shot", ret => Me.HasBuff("Charged Gauntlets")),
      					Spell.Cast("Immolate"),
      					Spell.Cast("Flame Burst"),
      					Spell.Cast("Rapid Shots")
      					);
      			}
      		}
      
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new PrioritySelector(
      					new Decorator(ret => Targeting.ShouldAoe,
      						new PrioritySelector(
      							Spell.DoT("Scorch", "Scorch"),
      							Spell.CastOnGround("Death from Above"),
      							Spell.Cast("Explosive Dart")
      							)),
      					new Decorator(ret => Targeting.ShouldPbaoe,
      						new PrioritySelector(
      							Spell.DoT("Scorch", "Scorch"),
      							Spell.Cast("Flame Thrower"),
      							Spell.Cast("Flame Sweep")
      							)));
      			}
      		}
      	}
      }
       
      Last edited: Jan 2, 2016
    2. Sippinhaterade

      Sippinhaterade Member

      Joined:
      Jul 10, 2011
      Messages:
      387
      Likes Received:
      2
      Trophy Points:
      18
      Pyro parses higher than AP and it has fire. In regard to BW, is AP easier to do well with than Pyro?
       
    3. Markeen

      Markeen Member

      Joined:
      Oct 14, 2012
      Messages:
      153
      Likes Received:
      3
      Trophy Points:
      18
      I tried it on Operations Dummy but it feels weird to be honest ^^, it definitely works but after the 5th rotation you will run into energy problems.
       
    4. Sippinhaterade

      Sippinhaterade Member

      Joined:
      Jul 10, 2011
      Messages:
      387
      Likes Received:
      2
      Trophy Points:
      18
      From the author,

      With that in mind, use Vent Heat some time after the second flamethrower in the cycle, and Thermal Sensor Override on the second flamethrower in the cycle.
      So, somewhere between the 2
      [*] symbols i've added here. Oh and if its after the Immolate (IML), make that last Rapid Shots a Flame Burst instead.

      SCH -> IMS -> FF -> FT -> RS -> FB -> IML -> FB -> FF ->
      FB -> IMS -> FB -> FT -> * RS -> FF -> IML -> FB * -> RpS ->
       
    5. Markeen

      Markeen Member

      Joined:
      Oct 14, 2012
      Messages:
      153
      Likes Received:
      3
      Trophy Points:
      18
      My coding skills aren't really good to be honest but from what i saw so far the bot is really limited, so making a rotation that is 100% like that from the guide will be unlikely. You could remove the cooldowns from the rotation and do them manually thou.

      2nd try, i added some of the cooldowns and switched some of the priority's and added Shoulder Cannon.

      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
      {
          public class Pyrotech : RotationBase
          {
              public override string Name
              {
                  get { return "PowerTech Pyrotech"; }
              }
      
      
              public override Composite Buffs
              {
                  get
                  {
                      return new PrioritySelector(
                          Spell.Buff("Combustible Gas Cylinder"),
                          Spell.Buff("Hunter's Boon")
                          );
                  }
              }
      
      
              public override Composite Cooldowns
              {
                  get
                  {
                      return new PrioritySelector(
                          Spell.Buff("Determination"),
                          Spell.Buff("Thermal Sensor Override", ret => Me.InCombat),
                          Spell.Buff("Explosive Fuel", ret => Me.InCombat),
                          Spell.Buff("Vent Heat", ret => Me.ResourcePercent() >= 65),
                          Spell.Buff("Energy Shield", ret => Me.HealthPercent <= 60),
                          Spell.Buff("Shoulder Cannon", ret => !Me.HasBuff("Shoulder Cannon") && Me.CurrentTarget.BossOrGreater()),
                          Spell.Buff("Kolto Overload", ret => Me.HealthPercent <= 30)
                          );
                  }
              }
      
      
              public override Composite SingleTarget
              {
                  get
                  {
                      return new PrioritySelector(
                          //Movement
                          CombatMovement.CloseDistance(Distance.Melee),
                          
                          //Low Energy
                          new Decorator(ret => Me.ResourcePercent() > 40,
                              new PrioritySelector(
                                  Spell.Cast("Flame Burst", ret => Me.HasBuff("Flame Barrage")),
                                  Spell.Cast("Rapid Shots")
                                  )),
                                  
                          //Rotation
                          Spell.Cast("Shoulder Cannon", ret => Me.HasBuff("Shoulder Cannon") && Me.CurrentTarget.BossOrGreater()),
                          Spell.Cast("Quell", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                          Spell.Cast("Flame Thrower", ret => Me.BuffCount("Superheated Flame Thrower") == 2),
                          Spell.DoT("Scorch", "Scorch"),
                          Spell.DoT("Incendiary Missile", "Burning (Incendiary Missile)"),
                          Spell.Cast("Rail Shot", ret => Me.HasBuff("Charged Gauntlets")),
                          Spell.Cast("Flaming Fist", ret => Me.HasBuff("Flame Barrage")),
                          Spell.Cast("Flaming Fist"),
                          Spell.Cast("Immolate"),
                          Spell.Cast("Flame Burst")
                          );
                  }
              }
      
      
              public override Composite AreaOfEffect
              {
                  get
                  {
                      return new PrioritySelector(
                          new Decorator(ret => Targeting.ShouldAoe,
                              new PrioritySelector(
                                  Spell.DoT("Scorch", "Scorch"),
                                  Spell.CastOnGround("Death from Above"),
                                  Spell.Cast("Explosive Dart")
                                  )),
                          new Decorator(ret => Targeting.ShouldPbaoe,
                              new PrioritySelector(
                                  Spell.DoT("Scorch", "Scorch"),
                                  Spell.Cast("Flame Thrower"),
                                  Spell.Cast("Flame Sweep")
                                  )));
                  }
              }
          }
      }

      Maybe someone else can help you out thou.
       
    6. Sippinhaterade

      Sippinhaterade Member

      Joined:
      Jul 10, 2011
      Messages:
      387
      Likes Received:
      2
      Trophy Points:
      18
      I appreciate the help. I understand that there are some limitations with the bot. In your opinion, is there bot more efficient using AP or Pyro?
       
    7. Markeen

      Markeen Member

      Joined:
      Oct 14, 2012
      Messages:
      153
      Likes Received:
      3
      Trophy Points:
      18
      I don't play BH that much, but the best class to bot would be a Force class, the bot really hates being resource depended because he will blow all Energy even if you put in restrictions. So getting a Sorc or Warrior who aren't limited by resources will play the best.

      I am pretty sure the best "botable" rotation is the Sorc/Sage, the Warrior has a few issues with it's PBOE but the rotations are also pretty good.

      I also play Marksman and Gunslinger but they have the issue that the non Force classes will run into.
       
    8. Markeen

      Markeen Member

      Joined:
      Oct 14, 2012
      Messages:
      153
      Likes Received:
      3
      Trophy Points:
      18
      Advanced Prototype - added Shoulder Cannon and some buffs

      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
      {
      	public class AdvancedPrototype : RotationBase
      	{
      		public override string Name
      		{
      			get { return "PowerTech Advanced Prototype"; }
      		}
      
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("High Energy Gas Cylinder"),
      					Spell.Buff("Hunter's Boon")
      					);
      			}
      		}
      
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Determination"),
      					Spell.Buff("Shoulder Cannon"),
      					Spell.Buff("Thermal Sensor Override", ret => Me.InCombat && Me.CurrentTarget.BossOrGreater()),
      					Spell.Buff("Explosive Fuel", ret => Me.InCombat && Me.CurrentTarget.BossOrGreater()),
      					Spell.Buff("Vent Heat", ret => Me.ResourcePercent() >= 50),
      					Spell.Buff("Energy Shield", ret => Me.HealthPercent <= 60),
      					Spell.Buff("Kolto Overload", ret => Me.HealthPercent <= 30)
      					);
      			}
      		}
      
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new PrioritySelector(
      					//Movement
      					CombatMovement.CloseDistance(Distance.Melee),
      					
      					//Low Energy
      					new Decorator(ret => Me.ResourcePercent() < 50,
      						new PrioritySelector(
      							Spell.Cast("Rail Shot", ret => Me.HasBuff("Prototype Particle Accelerator")),
      							Spell.Cast("Rapid Shots")
      							)),
      							
      					//Rotation
      					Spell.Cast("Shoulder Cannon", ret => Me.HasBuff("Shoulder Cannon") && Me.CurrentTarget.BossOrGreater()),
      					Spell.Cast("Quell", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
      					Spell.Cast("Energy Burst", ret => Me.BuffCount("Energy Lode") == 4),
      					Spell.Cast("Rail Shot",
      						ret => Me.CurrentTarget.HasDebuff("Bleeding (Retractable Blade)") && Me.HasBuff("Prototype Particle Accelerator")),
      					Spell.DoT("Retractable Blade", "Bleeding (Retractable Blade)"),
      					Spell.Cast("Thermal Detonator"),
      					Spell.Cast("Rocket Punch"),
      					Spell.Cast("Magnetic Blast", ret => Me.Level >= 26),
      					Spell.Cast("Flame Burst", ret => Me.Level < 26)
      					);
      			}
      		}
      
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new PrioritySelector(
      					new Decorator(ret => Targeting.ShouldAoe,
      						new PrioritySelector(
      							Spell.CastOnGround("Death from Above"),
      							Spell.Cast("Explosive Dart", ret => Me.CurrentTarget.HasDebuff("Bleeding (Retractable Blade)"))
      							)),
      					new Decorator(ret => Targeting.ShouldPbaoe,
      						new PrioritySelector(
      							Spell.Cast("Flame Thrower"),
      							Spell.Cast("Flame Sweep"))
      						));
      			}
      		}
      	}
      }
       
    9. Sippinhaterade

      Sippinhaterade Member

      Joined:
      Jul 10, 2011
      Messages:
      387
      Likes Received:
      2
      Trophy Points:
      18
      My main is a marauder and it does quite well with Nexis5000's edit. It is difficult to use the default because of the lag even with changing to priority selector.
       
      Last edited: Jan 2, 2016
    10. Trance101

      Trance101 Member

      Joined:
      May 24, 2014
      Messages:
      81
      Likes Received:
      1
      Trophy Points:
      8
      Should be Flurry of Bolts not Rifle Shot, no?
       
    11. Markeen

      Markeen Member

      Joined:
      Oct 14, 2012
      Messages:
      153
      Likes Received:
      3
      Trophy Points:
      18
      Yes, you are correct.

      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 Saboteur : RotationBase
          {
              public override string Name
              {
                  get { return "Gunslinger Saboteur"; }
              }
      
      
              public override Composite Buffs
              {
                  get
                  {
                      return new PrioritySelector(
                          Spell.Buff("Lucky Shots")
                          );
                  }
              }
      
      
              public override Composite Cooldowns
              {
                  get
                  {
                      return new PrioritySelector(
                          Spell.Buff("Escape"),
                          Spell.Buff("Defense Screen", ret => Me.HealthPercent <= 50),
                          Spell.Buff("Dodge", ret => Me.HealthPercent <= 30),
                          Spell.Buff("Cool Head", ret => Me.EnergyPercent <= 50),
                          Spell.Buff("Smuggler's Luck", ret => Me.CurrentTarget.BossOrGreater()),
                          Spell.Buff("Illegal Mods", ret => Me.CurrentTarget.BossOrGreater())
                          );
                  }
              }
      
      
              public override Composite SingleTarget
              {
                  get
                  {
                      return new PrioritySelector(
                          //Low Energy
                          new Decorator(ret => Me.EnergyPercent < 60,
                              new PrioritySelector(
                              Spell.Cast("Thermal Grenade", ret => Me.HasBuff("Seize the Moment")),
                              Spell.Cast("Flurry of Bolts")
                              )),
      
      
                          //Movement
                          CombatMovement.CloseDistance(Distance.Ranged),
      
      
                          //Rotation
                          Spell.Cast("Distraction", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                          Spell.Cast("Sabotage Charge"),
                          Spell.DoTGround("Incendiary Grenade", 9000),
                          Spell.Cast("Speed Shot"),
                          Spell.DoT("Shock Charge", "Shock Charge"),
                          Spell.Cast("Sabotage", ret => Me.CurrentTarget.HasDebuff("Shock Charge")),
                          Spell.Cast("Thermal Grenade", ret => Me.HasBuff("Seize the Moment")),
                          Spell.CastOnGround("XS Freighter Flyby", ret => Me.EnergyPercent > 75),
                          Spell.DoT("Vital Shot", "Vital Shot"),
                          Spell.Cast("Quickdraw", ret => Me.CurrentTarget.HealthPercent <= 30)
                          );
                  }
              }
      
      
              public override Composite AreaOfEffect
              {
                  get
                  {
                      return new Decorator(ret => Targeting.ShouldAoe,
                          new PrioritySelector(
                              Spell.CastOnGround("XS Freighter Flyby"),
                              Spell.Cast("Incendiary Grenade"),
                              Spell.Cast("Thermal Grenade")
                              ));
                  }
              }
          }
      }
      Corrected Rifle Shot to Flurry of Bolts and changed the buffs to only activate at Gold mobs.
       
      Last edited: Jan 3, 2016
    12. Markeen

      Markeen Member

      Joined:
      Oct 14, 2012
      Messages:
      153
      Likes Received:
      3
      Trophy Points:
      18
      Gunslinger Dirty Fighting rewrite/fix.

      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 DirtyFighting : RotationBase
          {
              public override string Name
              {
                  get { return "Gunslinger Dirty Fighting"; }
              }
      
      
              public override Composite Buffs
              {
                  get
                  {
                      return new PrioritySelector(
                          Spell.Buff("Lucky Shots")
                          );
                  }
              }
      
      
              public override Composite Cooldowns
              {
                  get
                  {
                      return new PrioritySelector(
                          Spell.Buff("Escape"),
                          Spell.Buff("Defense Screen", ret => Me.HealthPercent <= 50),
                          Spell.Buff("Dodge", ret => Me.HealthPercent <= 30),
                          Spell.Buff("Cool Head", ret => Me.EnergyPercent <= 50),
                          Spell.Buff("Smuggler's Luck", ret => Me.CurrentTarget.BossOrGreater()),
                          Spell.Buff("Illegal Mods", ret => Me.CurrentTarget.BossOrGreater())
                          );
                  }
              }
      
      
              public override Composite SingleTarget
              {
                  get
                  {
                      return new PrioritySelector(
                          //Movement
                          CombatMovement.CloseDistance(Distance.Ranged),
                          
                          //Low Energy
                          Spell.Cast("Flurry of Bolts", ret => Me.EnergyPercent < 60),
      
      
                          //Rotation
                          Spell.Cast("Distraction", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                          Spell.DoT("Vital Shot", "Vital Shot"),
                          Spell.DoT("Shrap Bomb", "Shrap Bomb"),
                          Spell.Cast("Hemorrhaging Blast", ret => Me.CurrentTarget.HasDebuff("Vital Shot") && Me.CurrentTarget.HasDebuff("Shrap Bomb")),
                          Spell.Cast("Wounding Shots", ret => Me.CurrentTarget.DebuffTimeLeft("Vital Shot") > 3 && Me.CurrentTarget.DebuffTimeLeft("Shrap Bomb") > 3),
                          Spell.Cast("Quickdraw", ret => Me.CurrentTarget.HealthPercent <= 30),
                          Spell.Cast("Speed Shot"),
                          Spell.Cast("Dirty Blast", ret => Me.Level >= 57),
                          Spell.Cast("Charged Burst", ret => Me.Level < 57)
                          );
                  }
              }
      
      
              public override Composite AreaOfEffect
              {
                  get
                  {
                      return new Decorator(ret => Targeting.ShouldAoe,
                          new PrioritySelector(
                              Spell.CastOnGround("XS Freighter Flyby"),
                              Spell.Cast("Thermal Grenade"),
                              Spell.Cast("Shrap Bomb", ret => Me.CurrentTarget.HasDebuff("Vital Shot") && !Me.CurrentTarget.HasDebuff("Shrap Bomb")),
                              Spell.CastOnGround("Sweeping Gunfire")
                              ));
                  }
              }
          }
      }
       
    13. Markeen

      Markeen Member

      Joined:
      Oct 14, 2012
      Messages:
      153
      Likes Received:
      3
      Trophy Points:
      18
      You need to change DefaultCombat.cs in your Buddywing->Routines-> folder to make the lag disappear there is a line above medpack that has Lockselector in it, change it to PrioritySelector and you are good to go.

      Just changing the combat routine won't work, i already made the suggestion on github to change it by default (when you download buddywing) and it seems it's already through.
       
      Sippinhaterade likes this.
    14. Aevitas

      Aevitas Well-Known Member Staff Member Buddy Core Dev

      Joined:
      Mar 2, 2010
      Messages:
      2,307
      Likes Received:
      36
      Trophy Points:
      48
      Just submitted a pull request that changes the remaining LockSelectors to PrioritySelectors: https://github.com/BosslandGmbH/BuddyWing.DefaultCombat/pull/10

      After that one goes through we'll have to do some testing and make changes in BW's core if required.

      Edit: Thanks for your contributions to the routines, it's good to see people getting involved with the routine. :)
       
      Last edited: Jan 4, 2016
    15. Sippinhaterade

      Sippinhaterade Member

      Joined:
      Jul 10, 2011
      Messages:
      387
      Likes Received:
      2
      Trophy Points:
      18
      There isnt a shred of lag while using the bot now. Repped
       
    16. tavi8767

      tavi8767 New Member

      Joined:
      Sep 27, 2010
      Messages:
      76
      Likes Received:
      0
      Trophy Points:
      0
      Working great so far. Thanks Markeen!
       
    17. Tman446

      Tman446 Member

      Joined:
      Dec 13, 2014
      Messages:
      33
      Likes Received:
      0
      Trophy Points:
      6
      Doesn't swap targets or let you swap targets
       
    18. Markeen

      Markeen Member

      Joined:
      Oct 14, 2012
      Messages:
      153
      Likes Received:
      3
      Trophy Points:
      18
    19. Tman446

      Tman446 Member

      Joined:
      Dec 13, 2014
      Messages:
      33
      Likes Received:
      0
      Trophy Points:
      6
    20. Cyanogen1

      Cyanogen1 Member

      Joined:
      Mar 5, 2014
      Messages:
      156
      Likes Received:
      0
      Trophy Points:
      16
      Getting rid of the spell.heal code and putting just normal Spell.cast code in the routine works to an extent, you just have to manually target.
       

    Share This Page