Hamselv007
New Member
- Joined
- Mar 29, 2012
- Messages
- 17
is someone workin on BW to fix it tho?
Bump
is someone workin on BW to fix it tho?
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:
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.
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![]()
A few more weeks till the expansion drops.
Also the changes to every build is online, see for instance SWTOR 5.0 Class Changes - Dulfy
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.
// 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)"))
));
}
}
}
}
// 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")
));
}
}
}
}
// 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")
));
}
}
}
}
// 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")
));
}
}
}
}
// 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(
));
}
}
}
}
// 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")
));
}
}
}
}
does this routine Heal in FP's and OP's ?