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!

Default Combat Test Edition

Status
Not open for further replies.
I don't PVP but didn't work on anything specific for stealth. Likely it changes the PC within buddywing and the bot doesn't like that. I had reported the health issue, it was fixed and issue closed in the GitHub but that fix affected solo grinding and was pulled. I haven't seen any indication of it being worked on, that's not saying Aevitas isn't working on it but there hasn't been anything to indicate it. Has been broken since the launch of 4.0
 
Wired203, check out this pm I got from pindelskin:

Oh I see. I've been doing some dumping and yes HealthMax and HealthPercent are not working for other players -> they show 0 value. But you can see still use Health and statHealth for that healing to work and get the percentage out.

Take a look below:

The log he linked to me: [C#] Logging.Write("Target: " + BuddyTor.Me.CurrentTarget.Name); Logging.Write("Attr - Pastebin.com

I don't have much time this week to check on it, but it's possible that instead of using HealthMax and HealthPercent, you could use Health and statHealth to calculate it. This would ideally be a fix in the core, but I haven't seen/heard from Aevitas in forever.
 
Perhaps, it's worth investigating. What do we get for the same tests on yourself? I'm starting to finish up house projects for the winter which opens time to play games etc so good timing. If it's correct on the player themselves then we can have Aevitas change the core code for it as those would be the values we would need. I just recall when he changed it for other players it broke solo so curious how that turns out.
 
Wired203, check out this pm I got from pindelskin:



The log he linked to me: [C#] Logging.Write("Target: " + BuddyTor.Me.CurrentTarget.Name); Logging.Write("Attr - Pastebin.com

I don't have much time this week to check on it, but it's possible that instead of using HealthMax and HealthPercent, you could use Health and statHealth to calculate it. This would ideally be a fix in the core, but I haven't seen/heard from Aevitas in forever.

BioWare literally can't make up their minds about which fields they want to use for health on the various object types. Could be we need to fix these up again, if you guys could manage to figure out what fields are used this time around that'd be a tremendous help.
 
From time to time i check these boards to see if there was a fix for healing since its literally the clases i enjoy playing in swtor. If we can manage to get this going im happy to test stuff ingame if needed and will resub and purchase buddywing once more :)
 
From time to time i check these boards to see if there was a fix for healing since its literally the clases i enjoy playing in swtor. If we can manage to get this going im happy to test stuff ingame if needed and will resub and purchase buddywing once more :)

Same here, periodically checking in on how the routines are developing and contributing were I can.

Would be so nice to have some smooth running combat rotations coming into the next expansion.
 
Last edited:
Now and a year back, id think the Same. With update 5 some like sentinels get a spell name change and new additional spell. Others like troopers get spells that are shifted to another spec and get new spells.
All in all a meh change, nothing really fancy.
I'd rather see them keep the current level cap as it gains nothing and put more work in fps and ops. But yeah since the lead raid designer left... I shouldn't really expect much. Word has it, EA is keeping it a bit on life support and gain as much as possible from the cartel market.
 
Now and a year back, id think the Same. With update 5 some like sentinels get a spell name change and new additional spell. Others like troopers get spells that are shifted to another spec and get new spells.
All in all a meh change, nothing really fancy.
I'd rather see them keep the current level cap as it gains nothing and put more work in fps and ops. But yeah since the lead raid designer left... I shouldn't really expect much. Word has it, EA is keeping it a bit on life support and gain as much as possible from the cartel market.

Mmm, well that's unfortunate that not much progress has been made since then. Not sure if I want to use it BW yet then.
 
So First Set of changes:

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

		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Shien Form"),
					Spell.Buff("Force Might")
					);
			}
		}

		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Resolute", ret => Me.IsStunned),
					Spell.Buff("Saber Reflect", ret => Me.HealthPercent <= 90),
					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 50),
					Spell.Buff("Focused Defense", ret => Me.HealthPercent < 70),
					Spell.Buff("Enure", ret => Me.HealthPercent <= 30),
					Spell.Buff("Combat Focus", ret => Me.ActionPoints <= 6)
					);
			}
		}

		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					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),

					//Movement
					CombatMovement.CloseDistance(Distance.Melee),

					//Interrupts
					Spell.Cast("Force Kick", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),

					//Rotation
					Spell.Cast("Plasma Brand"),
					Spell.Cast("Overhead Slash"),
					Spell.Cast("Blade Storm", ret => Me.BuffCount("Force Rush") == 2),
					Spell.Cast("Blade Barrage"),
					//Spell.Cast("Dispatch", ret => Me.HasBuff("Keening") || Me.HasBuff("Ardent Advocate") || Me.CurrentTarget.HealthPercent <= 30), Dispatch will be replaced for Whirling Blade in patch 5.0
					Spell.Cast("Whirling Blade", ret => Me.HasBuff("Keening") || Me.HasBuff("Ardent Advocate") || Me.CurrentTarget.HealthPercent <= 30), //Whirling Blade might not like the Me.HasBuff requirements
					Spell.Cast("Sundering Strike", ret => Me.ActionPoints <= 7),
					Spell.Cast("Slash", ret => Me.ActionPoints >= 9),
					Spell.Cast("Strike"),
					Spell.Cast("Riposte"),
					Spell.Cast("Saber Throw", ret => Me.CurrentTarget.Distance >= 0.5f && Me.InCombat)
					);
			}
		}

		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldPbaoe,
					new PrioritySelector(
						Spell.Cast("Vigilant Thrust",
							ret =>
								Me.Level >= 57 && Me.CurrentTarget.HasDebuff("Burning (Plasma Brand)") &&
								Me.CurrentTarget.HasDebuff("Burning (Burning Purpose)") && Me.CurrentTarget.HasDebuff("Burning (Burning Blade)")),
						Spell.Cast("Force Sweep",
							ret =>
								Me.Level < 57 && Me.CurrentTarget.HasDebuff("Burning (Plasma Brand)") &&
								Me.CurrentTarget.HasDebuff("Burning (Burning Purpose)") && Me.CurrentTarget.HasDebuff("Burning (Burning Blade)")),
						Spell.Cast("Cyclone Slash",
							ret =>
								Me.CurrentTarget.HasDebuff("Burning (Plasma Brand)") || Me.CurrentTarget.HasDebuff("Burning (Burning Purpose)") ||
								Me.CurrentTarget.HasDebuff("Burning (Burning Blade)"))
						));
			}
		}
	}
}

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

		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Shii-Cho Form"),
					Spell.Buff("Force Might")
					);
			}
		}

		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Resolute", ret => Me.IsStunned),
					Spell.Buff("Saber Reflect", ret => Me.HealthPercent <= 90),
					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 50),
					Spell.Buff("Focused Defense", ret => Me.HealthPercent < 70),
					Spell.Buff("Enure", ret => Me.HealthPercent <= 30),
					Spell.Buff("Combat Focus", ret => Me.ActionPoints <= 6 || Me.BuffCount("Singularity") < 3)
					);
			}
		}

		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					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),

					//Movement
					CombatMovement.CloseDistance(Distance.Melee),

					//Interrupts
					Spell.Cast("Force Kick", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
					Spell.Cast("Awe", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
					Spell.Cast("Force Stasis", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),

					//Rotation
					Spell.Cast("Focused Burst", ret => Me.HasBuff("Felling Blow") && Me.BuffCount("Singularity") == 3),
					Spell.Cast("Zealous Leap", ret => !Me.HasBuff("Felling Blow")),
					Spell.Cast("Force Exhaustion", ret => Me.BuffCount("Singularity") < 3),
					Spell.Cast("Blade Storm", ret => Me.HasBuff("Momentum")),
					Spell.Cast("Concentrated Slice"),
					Spell.Cast("Blade Barrage"),
					Spell.Cast("Riposte"),
					Spell.Cast("Sundering Strike", ret => Me.ActionPoints < 7),
					Spell.Cast("Strike"),
					Spell.Cast("Saber Throw", ret => Me.CurrentTarget.Distance >= 0.5f && Me.InCombat)
					);
			}
		}

		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldPbaoe,
					new PrioritySelector(
						Spell.Cast("Force Sweep", ret => Me.HasBuff("Felling Blow") && Me.BuffCount("Singularity") == 3),
						Spell.Cast("Cyclone Smash")
						));
			}
		}
	}
}

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

		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Soresu Form"),
					Spell.Buff("Force 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 PrioritySelector(
					Spell.Buff("Resolute"),
					Spell.Buff("Saber Reflect", ret => Me.HealthPercent <= 90),
					Spell.Buff("Enure", ret => Me.HealthPercent <= 80),
					Spell.Buff("Focused Defense", ret => Me.HealthPercent < 70),
					Spell.Buff("Warding Call", ret => Me.HealthPercent <= 50),
					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 30),
					Spell.Buff("Combat Focus", ret => Me.ActionPoints <= 6)
					);
			}
		}

		public override Composite SingleTarget
		{
			get
			{
				return new PrioritySelector(
					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),

					//Movement
					CombatMovement.CloseDistance(Distance.Melee),

					//Rotation
					Spell.Cast("Riposte"),
					Spell.Cast("Guardian Slash"),
					Spell.Cast("Blade Storm"),
					Spell.Cast("Warding Strike", ret => Me.ActionPoints <= 7 || !Me.HasBuff("Warding Strike")),
					Spell.Cast("Force Sweep", ret => !Me.CurrentTarget.HasDebuff("Unsteady (Force)") && Targeting.ShouldPbaoe),
					Spell.Cast("Hilt Bash", ret => !Me.CurrentTarget.IsStunned),
					Spell.Cast("Blade Barrage"),
					Spell.Cast("Dispatch", ret => Me.CurrentTarget.HealthPercent <= 30 || Me.HasBuff("Ardent Advocate")),
					Spell.Cast("Slash", ret => Me.ActionPoints >= 9),
					Spell.Cast("Strike"),
					Spell.Cast("Saber Throw", ret => Me.CurrentTarget.Distance >= 0.5f && Me.InCombat)
					);
			}
		}

		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldPbaoe,
					new PrioritySelector(
						Spell.Cast("Force Sweep"),
						Spell.Cast("Guardian Slash", ret => Me.HasBuff("Warding Strike")),
						Spell.Cast("Warding Strike", ret => !Me.HasBuff("Warding Strike")),
						Spell.Cast("Riposte"),
						Spell.Cast("Blade Storm"),
						Spell.Cast("Cyclone Slash")
						));
			}
		}
	}
}
 
And the second:

Jedi Sentinel - Combat:
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 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 PrioritySelector(
					Spell.Buff("Resolute"),
					Spell.Buff("Rebuke", ret => Me.HealthPercent <= 90),
					Spell.Buff("Saber Reflect", ret => Me.HealthPercent <= 70),
					Spell.Buff("Guarded by the Force", ret => Me.HealthPercent <= 50),
					Spell.Buff("Unity", ret => Me.HealthPercent <= 30),
					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 50),
					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 PrioritySelector(
					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("Dispatch", ret => Me.HasBuff("Hand of Justice") || Me.CurrentTarget.HealthPercent <= 30),
					Spell.Cast("Precision", ret => Me.CurrentTarget.Distance <= 0.4f),
					Spell.Cast("Blade Barrage", ret => Me.HasBuff("Precision")), // Renamed in patch 5.0 from Blade Dance
					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("Lance"), //New patch 5.0 ability
					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 PrioritySelector(
						Spell.Cast("Force Sweep"),
						Spell.Cast("Cyclone Slash")
						));
			}
		}
	}
}

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

		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Shii-Cho Form"),
					Spell.Buff("Force Might")
					);
			}
		}

		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Rebuke", ret => Me.HealthPercent <= 50),
					Spell.Buff("Guarded by the Force", ret => Me.HealthPercent <= 10),
					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 30)
					);
			}
		}

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

					//Rotation
					Spell.Cast("Force Leap"),
					Spell.Cast("Dispatch", ret => Me.CurrentTarget.HealthPercent <= 30),
					Spell.Cast("Force Sweep", ret => Me.HasBuff("Singularity") && Me.HasBuff("Felling Blow")),
					Spell.Cast("Force Exhaustion"),
					Spell.Cast("Zealous Leap", ret => Me.HasBuff("Singularity")),
					Spell.Cast("Blade Storm", ret => Me.HasBuff("Battle Cry") || Me.Energy >= 5),
					Spell.Cast("Dual Saber Throw"),
					Spell.Cast("Blade Barrage"),
					Spell.Cast("Force Stasis"),
					Spell.Cast("Slash", ret => Me.HasBuff("Zen")),
					Spell.Cast("Zealous Strike"),
					Spell.Cast("Strike")
					);
			}
		}

		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldPbaoe,
					new PrioritySelector(
						));
			}
		}
	}
}

Jedi Guardian - Watchman:
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 Watchman : RotationBase
	{
		public override string Name
		{
			get { return "Sentinel Watchman"; }
		}

		public override Composite Buffs
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Juyo Form"),
					Spell.Buff("Force Might")
					);
			}
		}

		public override Composite Cooldowns
		{
			get
			{
				return new PrioritySelector(
					Spell.Buff("Rebuke", ret => Me.HealthPercent <= 50),
					Spell.Buff("Guarded by the Force", ret => Me.HealthPercent <= 10),
					Spell.Buff("Saber Ward", ret => Me.HealthPercent <= 30)
					);
			}
		}

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

					//Rotation
					Spell.Cast("Force Kick", ret => Me.CurrentTarget.IsCasting && !DefaultCombat.MovementDisabled),
					Spell.Buff("Zen", ret => Me.BuffCount("Centering") > 29),
					Spell.Buff("Valorous Call", ret => Me.BuffCount("Centering") < 5),
					Spell.Buff("Overload Saber", ret => !Me.HasBuff("Overload Saber")),
					Spell.DoT("Cauterize", "Burning (Cauterize)"),
					Spell.DoT("Force Melt", "Burning (Force Melt)"),
					Spell.Cast("Dispatch", ret => Me.CurrentTarget.HealthPercent <= 30),
					Spell.Cast("Merciless Slash"),
					Spell.Cast("Zealous Strike", ret => Me.ActionPoints <= 5),
					Spell.Cast("Blade Barrage"),
					Spell.Cast("Slash", ret => Me.Level < 41),
					Spell.Cast("Strike", ret => Me.ActionPoints <= 10)
					);
			}
		}

		public override Composite AreaOfEffect
		{
			get
			{
				return new Decorator(ret => Targeting.ShouldPbaoe,
					new PrioritySelector(
						Spell.Cast("Force Sweep"),
						Spell.Cast("Twin Saber Throw"),
						Spell.Cast("Cyclone Slash")
						));
			}
		}
	}
}
 
Status
Not open for further replies.
Back
Top