• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Default Combat Test Edition

    Discussion in 'Archives' started by wired203, Mar 14, 2016.

    Thread Status:
    Not open for further replies.
    1. Aevitas

      Aevitas Well-Known Member Staff Member Buddy Core Dev

      Joined:
      Mar 2, 2010
      Messages:
      2,307
      Likes Received:
      36
      Trophy Points:
      48
      We used to check the specific spells (didn't have to be active spells, we'd find passive ones too) to detect some disciplines that couldn't be read properly by using their nodes. It looked something like this:

      Code:
      			if (HasAbility("Death Field") && advancedClass == AdvancedClass.Sorcerer)
      			{
      				discipline = CharacterDiscipline.Madness;
      				return true;
      			}
      
      			if (HasAbility("Death Field") && advancedClass == AdvancedClass.Assassin)
      			{
      				discipline = CharacterDiscipline.Hatred;
      				return true;
      			}
      
      For advanced classes, the bot always read it properly from the game itself. If that has changed, I'll need to implement some additional code to handle cases where the bot doesn't manage to read them properly before we release.

      Also, how do you guys propose we get these updates on GitHub? I could do it, but I can imagine you'd want at least credit for your work. Let me know. :)
       
    2. Logandros

      Logandros Moderator Moderator

      Joined:
      Nov 20, 2012
      Messages:
      370
      Likes Received:
      21
      Trophy Points:
      18
      If I had GitHub access to the test edition I'd be making changes as I go, I've already finished Consular Shadow and Trooper. But I certainly don't care about the credit, just want to get them all done and updated so that part I will leave up to you. If you want to give me access, I will do the updates. With regards to the advanced class detection. It looks to me now like each advanced class now gets his/her own specific and inc level 10 spells. I could double-check that but if the bot could look for those spells and then load the appropriate advanced class accordingly, I can work on that for you. If you would like to fix Consular Shadow Infiltration then you need to make this change to your code :

      Code:
      Jedi Consular, Shadow (Jedi Shadow), Infiltration, Vaulting Slash, DPS
       
    3. alltrueist

      alltrueist Active Member

      Joined:
      Dec 10, 2012
      Messages:
      1,424
      Likes Received:
      16
      Trophy Points:
      38
      No need for credit. Quick updates work best, as long as we get them tested before they go up.

      EDIT: and if we can check passives, you could look for stuff like Double-Saber proficiency or Dual Wald passives.
       
    4. Cryogenesis

      Cryogenesis Moderator Moderator

      Joined:
      Jul 13, 2010
      Messages:
      2,128
      Likes Received:
      13
      Trophy Points:
      38
      I updated that code on patch 4.x, but couldnt find that code anymore. I did send You the full list back then.
      Do you have it or was it on github?
       
    5. Logandros

      Logandros Moderator Moderator

      Joined:
      Nov 20, 2012
      Messages:
      370
      Likes Received:
      21
      Trophy Points:
      18
      Fix for Jedi Consular Shadow Infiltration

      Code:
      if (HasAbility("Vaulting Slash") && advancedClass == AdvancedClass.Shadow)
      			{
      				discipline = CharacterDiscipline.Infiltration;
      				return true;
      			}
       
    6. lonestr

      lonestr New Member

      Joined:
      Nov 28, 2015
      Messages:
      19
      Likes Received:
      1
      Trophy Points:
      0
      Here are the routine changes that need to be made for the Assassin specs. There are probably more, based on new utilities, but this should get them working in 5.0

      Darkness:
      Removed line 22 - Spell.Buff("Dark Charge")

      Deception:
      Removed line 22 - Spell.Buff("Surging Charge")
      Removed line 38 - Spell.Buff("Blackout", ret => Me.ForcePercent <= 40)

      Hatred:
      Removed line 22 - Spell.Buff("Lightning Charge")
      Updated line 59 - Spell.Cast("Eradicate", ret => Me.HasBuff("Raze") && Me.Level >= 57), // "Eradicate" - Replaces Demolish
      Updated line 76 - Spell.DoT("Discharge", "Shocked (Discharge)"), // Debuff was not named correctly, should be "Shocked (Discharge)"
      Updated line 81 - Me.CurrentTarget.HasDebuff("Shocked (Discharge)") && Me.CurrentTarget.HasDebuff("Creeping Terror") && // Debuff was not named correctly, should be "Shocked (Discharge)"
       
    7. ManFriday

      ManFriday New Member

      Joined:
      Apr 26, 2013
      Messages:
      216
      Likes Received:
      1
      Trophy Points:
      0
      I love how you guys work together to get this routine working again..I wish i knew how to code to help :)
       
    8. alltrueist

      alltrueist Active Member

      Joined:
      Dec 10, 2012
      Messages:
      1,424
      Likes Received:
      16
      Trophy Points:
      38
      No need. Just look at the current rotations and tell us what's supposed to happen. Like, when do I cast ability X? What buff/debuff to I need to cast ability Y? I can code rotations for classes I don't even play if someone just tells me what to do.
       
    9. Logandros

      Logandros Moderator Moderator

      Joined:
      Nov 20, 2012
      Messages:
      370
      Likes Received:
      21
      Trophy Points:
      18
      Trooper Commando

      Trooper.cs

      Code:
      // Copyright (C) 2011-2016 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 Trooper : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Basic Trooper"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Fortification")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get { return new PrioritySelector(); }
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new PrioritySelector(
      					CombatMovement.CloseDistance(Distance.Ranged),
      					Spell.Cast("High Impact Bolt"),
      					Spell.Cast("Recharge Cells", ret => Me.ResourcePercent() <= 50),
      					Spell.Cast("Ion Pulse", ret => Me.ResourcePercent() >= 50),
      					Spell.Cast("Hammer Shot")
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldAoe,
      					new PrioritySelector());
      			}
      		}
      	}
      }
      AssaultSpecialist.cs

      Code:
      // Copyright (C) 2011-2016 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 AssaultSpecialist : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Commando Assault Specialist"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Fortification")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Tenacity", ret => Me.IsStunned),
      					Spell.Buff("Recharge Cells", ret => Me.ResourceStat <= 40),
      					Spell.Buff("Reactive Shield", ret => Me.HealthPercent <= 70),
      					Spell.Buff("Adrenaline Rush", ret => Me.HealthPercent <= 30),
      					Spell.Buff("Supercharged Cell", ret => Me.BuffCount("Supercharge") == 10),
      					Spell.Buff("Reserve Powercell", ret => Me.ResourceStat <= 60),
      					Spell.Cast("Echoing Deterrence", ret => Tank != null && Me.HealthPercent <= 30)
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new PrioritySelector(
      					new Decorator(ret => Me.ResourcePercent() < 60,
      						new PrioritySelector(
      							Spell.Cast("Mag Bolt", ret => Me.HasBuff("Ionic Accelerator") && Me.Level >= 57),
      							Spell.Cast("High Impact Bolt", ret => Me.HasBuff("Ionic Accelerator") && Me.Level < 57),
      							Spell.Cast("Hammer Shot")
      							)),
      
      					//Movement
      					CombatMovement.CloseDistance(Distance.Ranged),
      
      					//Rotation
      					Spell.Cast("Disabling Shot", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
      					Spell.Cast("Mag Bolt", ret => Me.HasBuff("Ionic Accelerator") && Me.Level >= 57),
      					Spell.Cast("High Impact Bolt", ret => Me.HasBuff("Ionic Accelerator") && Me.Level < 57),
      					Spell.Cast("Explosive Round", ret => Me.HasBuff("Hyper Assault Rounds")),
      					Spell.Cast("Assault Plastique"),
      					Spell.DoT("Serrated Bolt", "Bleeding"),
      					Spell.DoT("Incendiary Round", "Burning (Incendiary Round)"),
      					Spell.Cast("Electro Net"),
      					Spell.Cast("Full Auto"),
      					Spell.Cast("Mag Bolt", ret => Me.Level >= 57),
      					Spell.Cast("High Impact Bolt", ret => Me.Level < 57),
      					Spell.Cast("Charged Bolts")
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldAoe,
      					new PrioritySelector(
      						Spell.CastOnGround("Mortar Volley"),
      						Spell.DoT("Serrated Bolt", "Bleeding"),
      						Spell.DoT("Incendiary Round", "Burning (Incendiary Round)"),
      						Spell.Cast("Plasma Grenade", ret => Me.CurrentTarget.HasDebuff("Burning (Incendiary Round)")),
      						Spell.Cast("Sticky Grenade", ret => Me.CurrentTarget.HasDebuff("Bleeding")),
      						Spell.Cast("Explosive Round", ret => Me.HasBuff("Hyper Assault Rounds")),
      						Spell.CastOnGround("Hail of Bolts", ret => Me.ResourcePercent() >= 90)
      						));
      			}
      		}
      	}
      }
      CombatMedic.cs

      Code:
      // Copyright (C) 2011-2016 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 CombatMedic : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Commando Combat Medic"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Fortification")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Tenacity"),
      					Spell.Buff("Supercharged Cell",	ret => Me.ResourceStat >= 20 && HealTarget != null && HealTarget.HealthPercent <= 80 &&	Me.BuffCount("Supercharge") == 10),
      					Spell.Buff("Adrenaline Rush", ret => Me.HealthPercent <= 30),
      					Spell.Buff("Reactive Shield", ret => Me.HealthPercent <= 70),
      					Spell.Buff("Reserve Powercell", ret => Me.ResourceStat <= 60),
      					Spell.Buff("Recharge Cells", ret => Me.ResourceStat <= 50),
      					Spell.Cast("Tech Override", ret => Tank != null && Tank.HealthPercent <= 50),
      					Spell.Cast("Echoing Deterrence", ret => Tank != null && Me.HealthPercent <= 30)
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new PrioritySelector(
      					//Movement 
      					CombatMovement.CloseDistance(Distance.Ranged),
      					Spell.Cast("Disabling Shot", ret => Me.CurrentTarget.IsCasting),
      					Spell.Cast("High Impact Bolt"),
      					Spell.Cast("Full Auto"),
      					Spell.Cast("Charged Bolts", ret => Me.ResourceStat >= 70),
      					Spell.Cast("Hammer Shot")
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new PrioritySelector(
      					new Decorator(ret => Me.HasBuff("Supercharged Cell"),
      						new PrioritySelector(
      							Spell.HealGround("Kolto Bomb", ret => !Tank.HasBuff("Kolto Residue")),
      							Spell.CastOnGround("Mortar Volley"),
      							Spell.Cast("Sticky Grenade"),
      							Spell.Heal("Bacta Infusion", 60),
      							Spell.Heal("Advanced Medical Probe", 85)
      							)),
      
      					//Dispel 
      					Spell.Cleanse("Field Aid"),
      
      					//AoE Healing 
      					Spell.HealAoe("Successive Treatment", ret => Targeting.ShouldAoeHeal),
      					Spell.HealGround("Kolto Bomb", ret => !Tank.HasBuff("Kolto Residue")),
      
      					//Single Target Healing 
      					Spell.Heal("Bacta Infusion", 80),
      					Spell.Heal("Advanced Medical Probe", 80),
      					Spell.Heal("Medical Probe", 75),
      
      					//Keep Trauma Probe on Tank 
      					Spell.HoT("Trauma Probe", 100),
      
      					//To keep Supercharge buff up; filler heal 
      					Spell.Heal("Med Shot", onUnit => Tank, 100, ret => Tank != null && Me.InCombat)
      					);
      			}
      		}
      	}
      }
      Gunnery.cs

      Code:
      // Copyright (C) 2011-2016 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 Gunnery : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Commando Gunnery"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Fortification")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Tenacity"),
      					Spell.Buff("Reactive Shield", ret => Me.HealthPercent <= 70),
      					Spell.Cast("Echoing Deterrence", ret => Tank != null && Me.HealthPercent <= 30),
      					Spell.Buff("Adrenaline Rush", ret => Me.HealthPercent <= 30),
      					Spell.Buff("Recharge Cells", ret => Me.ResourceStat <= 40),
      					Spell.Buff("Supercharged Cell", ret => Me.BuffCount("Supercharge") == 10),
      					Spell.Buff("Reserve Powercell", ret => Me.ResourceStat <= 60)
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Cast("Hammer Shot", ret => Me.ResourcePercent() < 60),
      
      					//Movement
      					CombatMovement.CloseDistance(Distance.Ranged),
      
      					//Rotation
      					Spell.Cast("Disabling Shot", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
      					Spell.Cast("Boltstorm", ret => Me.HasBuff("Curtain of Fire") && Me.Level >= 57),
      					Spell.Cast("Full Auto", ret => Me.HasBuff("Curtain of Fire") && Me.Level < 57),
      					Spell.Cast("Demolition Round", ret => Me.CurrentTarget.HasDebuff("Gravity Vortex")),
      					Spell.Cast("Electro Net"),
      					Spell.Cast("Vortex Bolt"),
      					Spell.Cast("High Impact Bolt", ret => Me.BuffCount("Charged Barrel") == 5),
      					Spell.Cast("Grav Round")
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldAoe,
      					new PrioritySelector(
      						Spell.Cast("Sticky Grenade"),
      						Spell.Cast("Tech Override"),
      						Spell.CastOnGround("Mortar Volley"),
      						Spell.Cast("Plasma Grenade", ret => Me.ResourceStat >= 90 && Me.HasBuff("Tech Override")),
      						Spell.Cast("Pulse Cannon", ret => Me.CurrentTarget.Distance <= 1f),
      						Spell.CastOnGround("Hail of Bolts", ret => Me.ResourceStat >= 90)
      						));
      			}
      		}
      	}
      }
       
      Last edited: Dec 4, 2016
    10. Logandros

      Logandros Moderator Moderator

      Joined:
      Nov 20, 2012
      Messages:
      370
      Likes Received:
      21
      Trophy Points:
      18
      Trooper Vanguard

      Trooper.cs

      Code:
      // Copyright (C) 2011-2016 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 Trooper : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Basic Trooper"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Fortification")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get { return new PrioritySelector(); }
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new PrioritySelector(
      					CombatMovement.CloseDistance(Distance.Ranged),
      					Spell.Cast("High Impact Bolt"),
      					Spell.Cast("Recharge Cells", ret => Me.ResourcePercent() <= 50),
      					Spell.Cast("Ion Pulse", ret => Me.ResourcePercent() >= 50),
      					Spell.Cast("Hammer Shot")
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldAoe,
      					new PrioritySelector());
      			}
      		}
      	}
      }
      Plasmatech.cs

      Code:
      // Copyright (C) 2011-2016 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 Plasmatech : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Vanguard Plasmatech"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Fortification")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Tenacity"),
      					Spell.Buff("Battle Focus"),
      					Spell.Buff("Recharge Cells", ret => Me.ResourcePercent() <= 50),
      					Spell.Buff("Reserve Powercell"),
      					Spell.Buff("Reactive Shield", ret => Me.HealthPercent <= 60),
      					Spell.Buff("Adrenaline Rush", ret => Me.HealthPercent <= 30)
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new PrioritySelector(
      					//Movement
      					CombatMovement.CloseDistance(Distance.Melee),
      					new Decorator(ret => Me.ResourcePercent() < 60,
      						new PrioritySelector(
      							Spell.Cast("High Impact Bolt", ret => Me.HasBuff("Ionic Accelerator")),
      							Spell.Cast("Hammer Shot")
      							)),
      					Spell.Cast("High Impact Bolt"),
      					Spell.Cast("Stockstrike", ret => Me.CurrentTarget.Distance <= .4f),
      					Spell.Cast("Assault Plastique"),
      					Spell.DoT("Incendiary Round", "", 12000),
      					Spell.Cast("Shockstrike"),
      					Spell.Cast("Ion Pulse")
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldAoe,
      					new PrioritySelector(
      						Spell.CastOnGround("Artillery Blitz"),
      						Spell.Cast("Ion Wave", ret => Me.CurrentTarget.Distance <= 1f),
      						Spell.Cast("Flak Shell", ret => Me.CurrentTarget.Distance <= 1f),
      						Spell.Cast("Explosive Surge", ret => Me.CurrentTarget.Distance <= .5f)
      						));
      			}
      		}
      	}
      }
      ShieldSpecialist.cs

      Code:
      // Copyright (C) 2011-2016 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 ShieldSpecialist : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Vanguard Shield Specialist"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Fortification"),
      					Spell.Cast("Guard", on => Me.Companion,	ret => Me.Companion != null && !Me.Companion.IsDead && !Me.Companion.HasBuff("Guard"))
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Tenacity", ret => Me.IsStunned),
      					Spell.Buff("Recharge Cells", ret => Me.ResourcePercent() >= 50),
      					Spell.Buff("Reactive Shield", ret => Me.HealthPercent <= 40),
      					Spell.Buff("Adrenaline Rush", ret => Me.HealthPercent <= 30),
      					Spell.Buff("Shoulder Cannon", ret => !Me.HasBuff("Shoulder Cannon") && Me.CurrentTarget.BossOrGreater())
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Cast("Storm", ret => Me.CurrentTarget.Distance >= 1f && !DefaultCombat.MovementDisabled),
      
      					//Movement
      					CombatMovement.CloseDistance(Distance.Melee),
      					new Decorator(ret => Me.ResourcePercent() < 60,
      						new PrioritySelector(
      							Spell.Cast("Energy Blast", ret => Me.BuffCount("Power Screen") == 3),
      							Spell.Cast("Pulse Cannon", ret => Me.HasBuff("Pulse Engine") && Me.CurrentTarget.Distance <= 1f),
      							Spell.Cast("Stockstrike", ret => Me.CurrentTarget.Distance <= .4f),
      							Spell.Cast("Explosive Surge", ret => Me.HasBuff("Static Surge") && Me.CurrentTarget.Distance <= 0.5f),
      							Spell.Cast("Hammer Shot")
      							)),
      					Spell.CastOnGround("Smoke Grenade", ret => Me.CurrentTarget.BossOrGreater() && Me.CurrentTarget.Distance <= 0.8f),
      					Spell.Cast("Shoulder Cannon", ret => Me.HasBuff("Shoulder Cannon") && Me.CurrentTarget.BossOrGreater()),
      					Spell.Cast("Riot Strike",	ret =>	Me.CurrentTarget.IsCasting && Me.CurrentTarget.Distance <= Distance.Melee && !DefaultCombat.MovementDisabled),
      					Spell.Cast("Energy Blast", ret => Me.BuffCount("Power Screen") == 3),
      					Spell.Cast("High Impact Bolt"),
      					Spell.Cast("Pulse Cannon", ret => Me.HasBuff("Pulse Engine") && Me.CurrentTarget.Distance <= 1f),
      					Spell.Cast("Explosive Surge", ret => Me.HasBuff("Static Surge") && Me.CurrentTarget.Distance <= 0.5f),
      					Spell.Cast("Ion Pulse")
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new Decorator(ret => Targeting.ShouldAoe,
      					new PrioritySelector(
      						Spell.CastOnGround("Artillery Blitz"),
      						Spell.Cast("Ion Wave", ret => Me.CurrentTarget.Distance <= 1f),
      						Spell.Cast("Flak Shell", ret => Me.CurrentTarget.Distance <= 1f),
      						Spell.Cast("Explosive Surge")
      						));
      			}
      		}
      	}
      }
      Tactics.cs

      Code:
      // Copyright (C) 2011-2016 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 Tactics : RotationBase
      	{
      		public override string Name
      		{
      			get { return "Vanguard Tactics"; }
      		}
      
      		public override Composite Buffs
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Fortification")
      					);
      			}
      		}
      
      		public override Composite Cooldowns
      		{
      			get
      			{
      				return new PrioritySelector(
      					Spell.Buff("Tenacity"),
      					Spell.Buff("Recharge Cells", ret => Me.ResourcePercent() <= 50),
      					Spell.Buff("Reactive Shield", ret => Me.HealthPercent <= 60),
      					Spell.Buff("Adrenaline Rush", ret => Me.HealthPercent <= 30),
      					Spell.Buff("Reserve Powercell", ret => Me.ResourceStat <= 80),
      					Spell.Buff("Battle Focus")
      					);
      			}
      		}
      
      		public override Composite SingleTarget
      		{
      			get
      			{
      				return new PrioritySelector(
      					//Movement
      					Spell.Cast("Storm", ret => Me.CurrentTarget.Distance >= 1f && !DefaultCombat.MovementDisabled),
      					CombatMovement.CloseDistance(Distance.Melee),
      					new Decorator(ret => Me.ResourcePercent() > 40,
      						new PrioritySelector(
      							Spell.Cast("High Impact Bolt", ret => Me.HasBuff("Tactical Accelerator")),
      							Spell.Cast("Hammer Shot")
      							)),
      					Spell.Cast("Riot Strike", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
      					Spell.Cast("Cell Burst", ret => Me.BuffCount("Energy Lode") == 4),
      					Spell.Cast("High Impact Bolt",
      						ret => Me.CurrentTarget.HasDebuff("Bleeding (Gut)") && Me.HasBuff("Tactical Accelerator")),
      					Spell.DoT("Gut", "Bleeding (Gut)"),
      					Spell.Cast("Assault Plastique"),
      					Spell.Cast("Stock Strike"),
      					Spell.Cast("Tactical Surge", ret => Me.Level >= 26),
      					Spell.Cast("Ion Pulse", ret => Me.Level < 26)
      					);
      			}
      		}
      
      		public override Composite AreaOfEffect
      		{
      			get
      			{
      				return new PrioritySelector(
      					new Decorator(ret => Targeting.ShouldAoe,
      						new PrioritySelector(
      							Spell.CastOnGround("Artillery Blitz")
      							)),
      					new Decorator(ret => Targeting.ShouldPbaoe,
      						new PrioritySelector(
      							Spell.Cast("Ion Wave", ret => Me.CurrentTarget.Distance <= 1f),
      						Spell.Cast("Flak Shell", ret => Me.CurrentTarget.Distance <= 1f),
      							Spell.Cast("Explosive Surge"))
      						));
      			}
      		}
      	}
      }
       
    11. Cryogenesis

      Cryogenesis Moderator Moderator

      Joined:
      Jul 13, 2010
      Messages:
      2,128
      Likes Received:
      13
      Trophy Points:
      38
      So i did find the code for patch 4.x, on a different drive, so did a full update on that code for patch 5.x. You can find it on github.
       
    12. Praline

      Praline Member

      Joined:
      Aug 17, 2015
      Messages:
      150
      Likes Received:
      2
      Trophy Points:
      18
      Where is this github to be found? :p
      Seriously need my BW fix!! :)
       
    13. Logandros

      Logandros Moderator Moderator

      Joined:
      Nov 20, 2012
      Messages:
      370
      Likes Received:
      21
      Trophy Points:
      18
      His patch is just for work in the background, not for a new release. github
       
    14. Praline

      Praline Member

      Joined:
      Aug 17, 2015
      Messages:
      150
      Likes Received:
      2
      Trophy Points:
      18
      Thank you kindly. :)
       
    15. Logandros

      Logandros Moderator Moderator

      Joined:
      Nov 20, 2012
      Messages:
      370
      Likes Received:
      21
      Trophy Points:
      18
      Welcome, I think I worded that poorly ... this work you see on the github is going towards a new release.
       
    16. Praline

      Praline Member

      Joined:
      Aug 17, 2015
      Messages:
      150
      Likes Received:
      2
      Trophy Points:
      18
      Nah, your wording was fine and I understood it that way. Was hoping there was a Github repository for the betas for impatient users like me that don't mind buggy beta releases. :)
       
    17. hp33604

      hp33604 New Member

      Joined:
      Jan 29, 2016
      Messages:
      17
      Likes Received:
      0
      Trophy Points:
      1
      This might sound silly, but is it possible for me to use older combat routines? I just want the bot to gather materials in a zone with barely any mobs.

      Thanks.
       
    18. Cryogenesis

      Cryogenesis Moderator Moderator

      Joined:
      Jul 13, 2010
      Messages:
      2,128
      Likes Received:
      13
      Trophy Points:
      38
    19. hp33604

      hp33604 New Member

      Joined:
      Jan 29, 2016
      Messages:
      17
      Likes Received:
      0
      Trophy Points:
      1
      So which subolder should I be copying from my older buddywing folder? The routines only? I've tried that but the bot doesn't seem to load it.
       
      Last edited: Dec 5, 2016
    20. Cryogenesis

      Cryogenesis Moderator Moderator

      Joined:
      Jul 13, 2010
      Messages:
      2,128
      Likes Received:
      13
      Trophy Points:
      38
      As said, routines dont work untill they are updated as you might encounter issues like this one, or missing spells.
      Also without logfiles we cant help you.
       
    Thread Status:
    Not open for further replies.

    Share This Page