What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal
RebornBuddy Forums

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

What did you change?
a few priority changes in the rot and biggest thing was to take snipe out completely it was draining too much energy with human reaction times you should almost never use snipe so i f that is the case put in a free ability that will damage thus making him able to use more abilities more often crazy hoe that 15 energy was making a big hit in my pool. also changed some values on when adren probe is used
** uses a few parse to verify
 
Last edited:
Fixed Sorcerer Madness (taken from Balance Sage) replaced Lockselector with Priority Selector.


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 Madness : RotationBase
	{
		public override string Name
		{
			get { return "Sorcerer Madness"; }
		}


		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Mark of Power")
					);
			}
		}


		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Force Barrier", ret => Me.HealthPercent <= 20),
					Spell.Buff("Static Barrier", ret => !Me.HasBuff("Static Barrier") && !Me.HasDebuff("Deionized")),
					Spell.Buff("Unnatural Preservation", ret => Me.HealthPercent <= 50),
					Spell.Buff("Polarity Shift", ret => Me.CurrentTarget.BossOrGreater()),
					Spell.Buff("Recklessness")
					);
			}
		}


		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					//Movement
					CombatMovement.CloseDistance(Distance.Ranged),
					Spell.Cast("Jolt", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
					Spell.Cast("Electrocute", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
					Spell.Cast("Demolish", ret => Me.BuffCount("Wrath") == 4),
				    Spell.DoT("Affliction", "Affliction"),
					Spell.DoT("Creeping Terror", "Creeping Terror"),
					Spell.CastOnGround("Death Field",
						ret => Me.CurrentTarget.HasDebuff("Affliction") && Me.CurrentTarget.HasDebuff("Creeping Terror")),
					Spell.Cast("Force Leach", ret => Me.CurrentTarget.HasDebuff("Affliction")),
					Spell.Cast("Lightning Strike", ret => Me.BuffCount("Wrath") == 4),
					Spell.Cast("Force Lightning", ret => Me.BuffCount("Wrath") < 4)
					);
			}
		}


		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldAoe,
					new PrioritySelector(
						Spell.DoT("Affliction", "Affliction"),
						Spell.DoT("Creeping Terror", "Creeping Terror"),
						Spell.CastOnGround("Death Field",
							ret => Me.CurrentTarget.HasDebuff("Affliction") && Me.CurrentTarget.HasDebuff("Creeping Terror")),
						Spell.CastOnGround("Force Storm", ret => Me.CurrentTarget.HasDebuff("Overwhelmed (Mental)"))
						));
			}
		}
	}
}
 
Advanced Protoype had a typo


Code:
namespace DefaultCombat.Routines{
    public class AdvancedPrototype : RotationBase
    {
        public override string Name
        {
            get { return "PowerTech Advance Prototype"; }


It should spell "{ return "PowerTech Advanced Prototype"; }", i was wondering why it didn't work and it took some time to actually find this problem lol.
 
Advanced Protoype had a typo


Code:
namespace DefaultCombat.Routines{
    public class AdvancedPrototype : RotationBase
    {
        public override string Name
        {
            get { return "PowerTech Advance Prototype"; }


It should spell "{ return "PowerTech Advanced Prototype"; }", i was wondering why it didn't work and it took some time to actually find this problem lol.

Thats just a string to return to a logger. Shouldn't cause the problem of not working.
 
Fixed Sorcerer Madness (taken from Balance Sage) replaced Lockselector with Priority Selector.


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 Madness : RotationBase
	{
		public override string Name
		{
			get { return "Sorcerer Madness"; }
		}


		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Mark of Power")
					);
			}
		}


		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Force Barrier", ret => Me.HealthPercent <= 20),
					Spell.Buff("Static Barrier", ret => !Me.HasBuff("Static Barrier") && !Me.HasDebuff("Deionized")),
					Spell.Buff("Unnatural Preservation", ret => Me.HealthPercent <= 50),
					Spell.Buff("Polarity Shift", ret => Me.CurrentTarget.BossOrGreater()),
					Spell.Buff("Recklessness")
					);
			}
		}


		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					//Movement
					CombatMovement.CloseDistance(Distance.Ranged),
					Spell.Cast("Jolt", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
					Spell.Cast("Electrocute", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
					Spell.Cast("Demolish", ret => Me.BuffCount("Wrath") == 4),
				    Spell.DoT("Affliction", "Affliction"),
					Spell.DoT("Creeping Terror", "Creeping Terror"),
					Spell.CastOnGround("Death Field",
						ret => Me.CurrentTarget.HasDebuff("Affliction") && Me.CurrentTarget.HasDebuff("Creeping Terror")),
					Spell.Cast("Force Leach", ret => Me.CurrentTarget.HasDebuff("Affliction")),
					Spell.Cast("Lightning Strike", ret => Me.BuffCount("Wrath") == 4),
					Spell.Cast("Force Lightning", ret => Me.BuffCount("Wrath") < 4)
					);
			}
		}


		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldAoe,
					new PrioritySelector(
						Spell.DoT("Affliction", "Affliction"),
						Spell.DoT("Creeping Terror", "Creeping Terror"),
						Spell.CastOnGround("Death Field",
							ret => Me.CurrentTarget.HasDebuff("Affliction") && Me.CurrentTarget.HasDebuff("Creeping Terror")),
						Spell.CastOnGround("Force Storm", ret => Me.CurrentTarget.HasDebuff("Overwhelmed (Mental)"))
						));
			}
		}
	}
}

Updated and pushed.
 
Thats just a string to return to a logger. Shouldn't cause the problem of not working.

When i was on my Advanced prototype it didn't work, He gave me a weird description on my class when buddywing was booting up (maybe it was just the logger dunno.), i think it he called it Experimental weapon or something and the rotation was either wonky or didn't work for me, or i fucked up something dunno.

Either way, it works now.

Btw i have no clue about coding i just sifted through the code and compared it with Vanguard to look for a abnormality.
 
Last edited:
Update to Lightning Sorc routine, it now looks like the Tele Sage

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 Lightning : RotationBase
	{
		public override string Name
		{
			get { return "Sorcerer Lightning"; }
		}


		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Mark of Power")
					);
			}
		}


		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Recklessness", ret => Me.CurrentTarget.StrongOrGreater()),
					Spell.Buff("Polarity Shift", ret => Me.CurrentTarget.StrongOrGreater()),
					Spell.Buff("Unnatural Preservation", ret => Me.HealthPercent <= 80),
					Spell.HoT("Static Barrier", on => Me, 99, ret => !Me.HasDebuff("Deionized") && !Me.HasBuff("Static Barrier")),
					Spell.Buff("Consuming Darkness", ret => Me.ForcePercent < 50 && !Me.HasDebuff("Weary"))
					);
			}
		}


		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					//Movement
					CombatMovement.CloseDistance(Distance.Ranged),


					//Rotation
					Spell.Cast("Affliction", ret => !Me.CurrentTarget.HasDebuff("Affliction")),
					Spell.Cast("Thundering Blast", ret => Me.CurrentTarget.HasDebuff("Affliction")),
					Spell.Cast("Lightning Flash"),
					Spell.Cast("Crushing Darkness", ret => Me.HasBuff("Force Flash")),
					Spell.Cast("Force Lightning", ret => Me.HasBuff("Lightning Barrage")),
					Spell.Cast("Chain Lightning", ret => Me.HasBuff("Lightning Storm")),
					Spell.Cast("Lightning Bolt", ret => Me.Level >= 57),
					Spell.Cast("Lightning Strike", ret => Me.Level < 57),
					Spell.Cast("Shock")
					);
			}
		}


		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldAoe,
					new PrioritySelector(
						Spell.Cast("Chain Lightning", ret => Me.HasBuff("Lightning Storm")),
						Spell.CastOnGround("Force Storm")
						));
			}
		}
	}
}
 
Last edited:
Update to Lightning Sorc routine, it now looks like the Tele Sage

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 Lightning : RotationBase
	{
		public override string Name
		{
			get { return "Sorcerer Lightning"; }
		}


		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Mark of Power")
					);
			}
		}


		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Recklessness", ret => Me.CurrentTarget.StrongOrGreater()),
					Spell.Buff("Polarity Shift", ret => Me.CurrentTarget.StrongOrGreater()),
					Spell.Buff("Unnatural Preservation", ret => Me.HealthPercent <= 80),
					Spell.HoT("Static Barrier", on => Me, 99, ret => !Me.HasDebuff("Deionized") && !Me.HasBuff("Static Barrier")),
					Spell.Buff("Consuming Darkness", ret => Me.ForcePercent < 50 && !Me.HasDebuff("Weary"))
					);
			}
		}


		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					//Movement
					CombatMovement.CloseDistance(Distance.Ranged),


					//Rotation
					Spell.Cast("Affliction", ret => !Me.CurrentTarget.HasDebuff("Affliction")),
					Spell.Cast("Thundering Blast", ret => Me.CurrentTarget.HasDebuff("Affliction")),
					Spell.Cast("Lightning Flash"),
					Spell.Cast("Crushing Darkness", ret => Me.HasBuff("Force Flash")),
					Spell.Cast("Force Lightning", ret => Me.HasBuff("Lightning Barrage")),
					Spell.Cast("Chain Lightning", ret => Me.HasBuff("Lightning Storm")),
					Spell.Cast("Lightning Bolt", ret => Me.Level >= 57),
					Spell.Cast("Lightning Strike", ret => Me.Level < 57),
					Spell.Cast("Shock")
					);
			}
		}


		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldAoe,
					new PrioritySelector(
						Spell.Cast("Chain Lightning", ret => Me.HasBuff("Lightning Storm")),
						Spell.CastOnGround("Force Storm")
						));
			}
		}
	}
}
I'm out of town for the holidays, so I won't be able to update this until after the New Year.
 
Virulence Sniper added Snipe until level 57 then Lethal Shot, replaced Lock with Prio.


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 Virulence : RotationBase
	{
		public override string Name
		{
			get { return "Sniper Virulence"; }
		}


		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Coordination")
					);
			}
		}


		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					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", ret => Me.CurrentTarget.StrongOrGreater()),
					Spell.Cast("Target Acquired", ret => Me.CurrentTarget.StrongOrGreater())
					);
			}
		}


		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					//Movement
					CombatMovement.CloseDistance(Distance.Ranged),


					//Low Energy
					Spell.Cast("Rifle Shot", ret => Me.EnergyPercent < 60),


					//Rotation
					Spell.Cast("Distraction", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
                    Spell.DoT("Corrosive Dart", "Corrosive Dart"),
                    Spell.DoT("Corrosive Grenade", "Corrosive Grenade"),
                    Spell.Cast("Weakening Blast", ret => Me.CurrentTarget.HasDebuff("Corrosive Dart") && Me.CurrentTarget.HasDebuff("Corrosive Grenade")),
                    Spell.Cast("Cull", ret => Me.CurrentTarget.DebuffTimeLeft("Corrosive Dart") > 3 && Me.CurrentTarget.DebuffTimeLeft("Corrosive Grenade") > 3),
                    Spell.Cast("Takedown", ret => Me.CurrentTarget.HealthPercent <= 30 || Me.HasBuff("Lethal Takedown")),
					Spell.Cast("Series of Shots"),
					Spell.Cast("Lethal Shot", ret => Me.Level >= 57),
					Spell.Cast("Snipe", ret => Me.Level < 57),
					Spell.Cast("Rifle Shot")
					);
			}
		}


		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldAoe,
					new PrioritySelector(
						Spell.CastOnGround("Orbital Strike"),
						Spell.Cast("Fragmentation Grenade"),
                        Spell.DoT("Corrosive Dart", "Corrosive Dart"),
                        Spell.Cast("Corrosive Grenade", ret => Me.CurrentTarget.HasDebuff("Corrosive Dart") && !Me.CurrentTarget.HasDebuff("Corrosive Grenade")),
						Spell.CastOnGround("Suppressive Fire")
						));
			}
		}
	}
}
 
This part of the command for interruptions, ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),

This never seems to work for me, I have to change it to just ret => Me.CurrentTarget.IsCasting), to use interruption abilities. I'm just wondering what is that end command actually for?
 
This part of the command for interruptions, ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),

This never seems to work for me, I have to change it to just ret => Me.CurrentTarget.IsCasting), to use interruption abilities. I'm just wondering what is that end command actually for?

It defaults to only interrupt when you're running a profile. When you're using LazyRaider, it won't automatically interrupt unless you remove !DefaultCombat.MovementDisabled . This was designed to prevent suspicious activity when playing in groups (instant interrupts).
 
It defaults to only interrupt when you're running a profile. When you're using LazyRaider, it won't automatically interrupt unless you remove !DefaultCombat.MovementDisabled . This was designed to prevent suspicious activity when playing in groups (instant interrupts).
Ahh I see. I just always remove it anyway. I only use this bot for pve...pvp though I'm sure people will be quick to complain, like in Wow :D.
 
@alltrueist Know if there is anyway to fix the targeting checks for units that are in stealth and/or came out of stealth pvp wise?

Routine pretty much disregards those as targets.
 
I'd try in the class routine first. Me.CurrentTarget.IsStealthed
If it doesn't work then targeting needs some more fixes :)

I tried doing something like this, not sure if that is the correct way to use the property but..

Code:
new Decorator(ret => Me.CurrentTarget.IsStealthed,
						new PrioritySelector(

With the rotation after the priorityselector.

EDIT: code loads fine, checking if it actually works.
 
Last edited:
Gunslinger Sharpshooter rework i removed some of the lines, looks like Sniper Marksman now.

I really didn't like the Me.IsInCover and the forced cover when you where manually controlling it, keep it in if you wanna grind/automate.

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 Sharpshooter : RotationBase
	{
		public override string Name
		{
			get { return "Gunslinger Sharpshooter"; }
		}


		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("Burst Volley"),
					Spell.Buff("Defense Screen", ret => Me.HealthPercent <= 70),
					Spell.Buff("Dodge", ret => Me.HealthPercent <= 30),
					Spell.Buff("Cool Head", ret => Me.EnergyPercent <= 50),
					Spell.Buff("Smuggler's Luck"),
					Spell.Buff("Illegal Mods")
					);
			}
		}


		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					//Movement
					CombatMovement.CloseDistance(Distance.Ranged),
					
					//Low Energy
					new Decorator(ret => Me.EnergyPercent < 60,
						new PrioritySelector(
							Spell.Cast("Flurry of Bolts")
							)),						
					


					//Rotation
					Spell.Cast("Trickshot"),
					Spell.Cast("Penetrating Rounds", ret => Me.Level >= 26),
					Spell.Cast("Speed Shot", ret => Me.Level < 26),
					Spell.DoT("Vital Shot", "Vital Shot"),
					Spell.Cast("Aimed Shot", ret => Me.BuffCount("Charged Aim") == 2),
					Spell.Cast("Quickdraw", ret => Me.CurrentTarget.HealthPercent <= 30),
					Spell.Cast("Charged Burst")
					);
			}
		}


		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldAoe,
					new PrioritySelector(
						Spell.CastOnGround("XS Freighter Flyby"),
						Spell.Cast("Thermal Grenade"),
						Spell.CastOnGround("Sweeping Gunfire")
						));
			}
		}
	}
}
 
Gunslinger Saboteur rewrite/fix, took the rotation from dulfy.

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"),
                    Spell.Buff("Illegal Mods")
                    );
            }
        }


        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("Rifle Shot")
                        )),


                    //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),
                    Spell.Cast("Rifle Shot")
                    );
            }
        }


        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")
                        ));
            }
        }
    }
}
 
Back
Top