iirc, You need the spaces inbetween 10*10.
Code:ret => Unit.NearbyUnfriendlyUnits.Count(u => u.Location.DistanceSqr(StyxWoW.Me.CurrentTarget.Location) < 10 * 10) > 2
new Decorator(
ret => Clusters.GetClusterCount(StyxWoW.Me.CurrentTarget, Unit.NearbyUnfriendlyUnits, ClusterType.Radius, 10) > 1,
Spell.CastOnGround("Rain of Fire", ret => StyxWoW.Me.CurrentTarget.Location)
),
ret => Unit.NearbyUnfriendlyUnits.Count(u => u.Location.DistanceSqr(StyxWoW.Me.CurrentTarget.Location) < 20 * 20) > 1,
using System.Collections.Generic;
using System.Linq;
using Singular.Dynamics;
using Singular.Helpers;
using Singular.Managers;
using Styx;
using Styx.Combat.CombatRoutine;
using Styx.Logic.Combat;
using Styx.WoWInternals.WoWObjects;
using TreeSharp;
namespace Singular.ClassSpecific.Druid
{
public class Common
{
public static ShapeshiftForm WantedDruidForm { get; set; }
[Class(WoWClass.Druid)]
[Behavior(BehaviorType.PreCombatBuffs)]
[Spec(TalentSpec.BalanceDruid)]
[Spec(TalentSpec.FeralDruid)]
[Spec(TalentSpec.FeralTankDruid)]
[Spec(TalentSpec.RestorationDruid)]
[Spec(TalentSpec.Lowbie)]
[Context(WoWContext.All)]
public static Composite CreateDruidPreCombatBuffs()
{
return
new PrioritySelector(
Spell.Cast("Aquatic Form",
ret => StyxWoW.Me.IsSwimming
),
CreateDruidBuffBehavior()
);
}
private static Composite CreateDruidBuffBehavior()
{
return
new PrioritySelector(
Spell.Cast("Mark of the Wild",
ret => StyxWoW.Me,
ret =>
{
var players = StyxWoW.Me.IsInParty
? StyxWoW.Me.PartyMembers.Union(new List<WoWPlayer> { StyxWoW.Me })
: StyxWoW.Me.IsInRaid
? StyxWoW.Me.RaidMembers.Union(new List<WoWPlayer> { StyxWoW.Me })
: new List<WoWPlayer> { StyxWoW.Me };
var result = players.Any(
p => p.DistanceSqr < 40*40 &&
(!p.HasAura("Mark of the Wild") || p.Auras["Mark of the Wild"].CreatorGuid != StyxWoW.Me.Guid) &&
!p.HasAura("Blessing of Kings") &&
!p.HasAura("Embrace of the Shale Spider"));
return result;
}
)
);
}
}
}
You can update again.
Messing with the MotW for party.
Looked at the paladin part and copied it to druid (Raphus's work btw).
Seems to work for whole party and solo.
Don't mind the Aquatic stuff, that's something I'm messing with myself.
In the Druid map > Common.cs
Code:using System.Collections.Generic; using System.Linq; using Singular.Dynamics; using Singular.Helpers; using Singular.Managers; using Styx; using Styx.Combat.CombatRoutine; using Styx.Logic.Combat; using Styx.WoWInternals.WoWObjects; using TreeSharp; namespace Singular.ClassSpecific.Druid { public class Common { public static ShapeshiftForm WantedDruidForm { get; set; } [Class(WoWClass.Druid)] [Behavior(BehaviorType.PreCombatBuffs)] [Spec(TalentSpec.BalanceDruid)] [Spec(TalentSpec.FeralDruid)] [Spec(TalentSpec.FeralTankDruid)] [Spec(TalentSpec.RestorationDruid)] [Spec(TalentSpec.Lowbie)] [Context(WoWContext.All)] public static Composite CreateDruidPreCombatBuffs() { return new PrioritySelector( Spell.Cast("Aquatic Form", ret => StyxWoW.Me.IsSwimming ), CreateDruidBuffBehavior() ); } private static Composite CreateDruidBuffBehavior() { return new PrioritySelector( Spell.Cast("Mark of the Wild", ret => StyxWoW.Me, ret => { var players = StyxWoW.Me.IsInParty ? StyxWoW.Me.PartyMembers.Union(new List<WoWPlayer> { StyxWoW.Me }) : StyxWoW.Me.IsInRaid ? StyxWoW.Me.RaidMembers.Union(new List<WoWPlayer> { StyxWoW.Me }) : new List<WoWPlayer> { StyxWoW.Me }; var result = players.Any( p => p.DistanceSqr < 40*40 && (!p.HasAura("Mark of the Wild") || p.Auras["Mark of the Wild"].CreatorGuid != StyxWoW.Me.Guid) && !p.HasAura("Blessing of Kings") && !p.HasAura("Embrace of the Shale Spider")); return result; } ) ); } } }
return new PrioritySelector(
Spell.Cast(
"Mark of the Wild",
ret => StyxWoW.Me,
ret =>
Unit.NearbyFriendlyPlayers.Any(
unit =>
!unit.Dead && !unit.IsGhost && unit.IsInMyPartyOrRaid &&
!unit.HasAnyAura("Mark of the Wild", "Embrace of the Shale Spider", "Blessing of Kings")))
);
You can update again. I've been using Singular while testing some changes to HB. (I noticed a few bugs that have been fixed properly)
And yes, I still work on Singular, when I have the time.
Sorry there hasn't been a whole lot of updates lately for it!
Is it possible to fix the CC so for Melee it can still reach Boss Hit boxes? This is one the primary problems with this CC. The other one, is lack of configurable options for turning on and off cooldown abilities.
Thanks!
1. Could you possible fix the rotations for SMF Fury and Titans Grip. The rotations are different at max level for each, but for these it's not implementing correctly.
2. For Arms, if the warrior's own Colossus Smash is on the mob can you make so won't use CS again if that debuff is on the mob?
3. Finally, can you have the bot stop rage dumping when Colossus Smash is 6 seconds away from being off CD - during this 6 second window it should not use Heroic Strike UNLESS rage = > 90.
Once I finish my classes, I'll start working on the code myself and tossing some changes out.
Thanks!
There will be a fix in the next HB release for this. (As you can tell by my code in Spell.cs and the new debug output when switching a target)
It will know about "large" hitboxes for melee.
CS should be used on CD, regardless of any other conditions. Its a giant DPS tool, and you don't really care too much about the debuff once its up. (Yes, you want it up as much as possible, but CS itself hits very hard, and is worth keeping on CD regardless of whether the debuff is on the target or not)
As for fury; the only difference between the two is the location of Slam and Raging blow, right? (Slam is more important for SMF than TG, so it moves "up" in the rotation)
Yep, Exactly right on Both spec's prioritize slam/raging blow differently, that's it.
Are you sure about Arms and Colossus Smash being better to not delay? I know CS is pretty good damage, but the debuff is like 6 seconds, so if you get a CS refresh isn't it better to finish rage dumping MS>OP> into that, then doing it all over again once the debuff drops?
What do you think about the idea of having Arms and Fury rage pool for 5-6 seconds before CS comes off CD - and by rage pool I mean ONLY not use heroic strike unless rage is greater than 85. Everything I've read says this is how to increase your dps substantially - please correct me if I am wrong.
The other thing would be nice to have options to disable cooldowns like Recklessness/retaliation/Enraged Regeneration/Charge/Heroic Leap/Throwdown/Intercept/Heroic Fury/Deathwish/heroic throw/shattering throw/and battleshout commanding shout. Basically an option to have it only do the base rotation.
As it stands, Right now, I manually take them out so I can use them in raids and pvp - but if options could be thrown in this would be awesome for use with lazy raider with raiding and PVP.
- Right now there is a plugin being created that is going to take over all interrupts and let you choose which ones to do. So if an option to turn on and off interrupts would make this complete!
- One bug that I still find all the time is that it won't cast shattering throw on Paly Bubbles still - though I see it in the code.
- Oh and finally, is inner rage going to be implemented for AOE support?
If these above things are implemented, the warrior class is perfect.
Thanks Apoc!
Yep, Exactly right on Both spec's prioritize slam/raging blow differently, that's it.
Are you sure about Arms and Colossus Smash being better to not delay? I know CS is pretty good damage, but the debuff is like 6 seconds, so if you get a CS refresh isn't it better to finish rage dumping MS>OP> into that, then doing it all over again once the debuff drops?
What do you think about the idea of having Arms and Fury rage pool for 5-6 seconds before CS comes off CD - and by rage pool I mean ONLY not use heroic strike unless rage is greater than 85. Everything I've read says this is how to increase your dps substantially - please correct me if I am wrong.
The other thing would be nice to have options to disable cooldowns like Recklessness/retaliation/Enraged Regeneration/Charge/Heroic Leap/Throwdown/Intercept/Heroic Fury/Deathwish/heroic throw/shattering throw/and battleshout commanding shout. Basically an option to have it only do the base rotation.
As it stands, Right now, I manually take them out so I can use them in raids and pvp - but if options could be thrown in this would be awesome for use with lazy raider with raiding and PVP.
- Right now there is a plugin being created that is going to take over all interrupts and let you choose which ones to do. So if an option to turn on and off interrupts would make this complete!
- One bug that I still find all the time is that it won't cast shattering throw on Paly Bubbles still - though I see it in the code.
- Oh and finally, is inner rage going to be implemented for AOE support?
If these above things are implemented, the warrior class is perfect.
Thanks Apoc!
I'll look into adding the pool rage feature, not sure if I have the skill to do this. I'll put most things that are not the default rotation in a setting that can be toggled. I'll also make it so that the rotations are different for TG and SMF warriors.
I have shattering throw in the cc but I haven't been able to get it working properly. I have some ideas, so I'm going to try some of them out and if I cant get it I'll post again.
I know you have been requesting these changes for quite awhile, sorry I have been slow on getting features added. (School, 18 units, girlfriend and raiding FL)
I took out all racials and cut the cc down to its basic form around 20 rev's ago because I was experiencing it slowing down the more features I added. Keep in mind that if any of these features start bogging down the cc I will not be including them as a slow reacting cc is useless.
I completely agree.
Not doubting your coding skills, but could it just be that when this happens some of the code isn't optimally placed? If that happens couldn't we try to get the attention of Apoc or someone to glance at the code to make sure nothing is out of place?
Thanks for your work, looking forward to some updates!
Please, doubt my coding skills because I have none. lol I'm not sure if it was the way it was done or not, but the warrior cc was at least twice as large as the next largest cc. It was mostly frills that were removed/reorganized and I doubt that anything I add in these changes will amount to even close to what it was.
I have the rotations for SMF and TG working properly, but am running into snags when looking into changing HS while Colossus Smash is about to come off of cooldown. I was trying SpellManager.Spells["Colossus Smash"].CooldownTimeLeft <= 6 but it doesn't seem to be correct, Apoc added the CooldownTimeLeft recently so I am not sure about its correct implementation, or how it can be applied to this.
The settings portion is just a matter of time. I have class for the next 4 hours or so. I'll post my progress a little later tonight. In the mean time if anyone knows how to check the time left on the cooldown of a spell I'd appreciate a point in the right direction. Thanks.
EDIT: New version up with settings (Interupts, AOE, Basic rotation, Slows, DPS cooldowns) and a separated rotation for TG and SMF. Let me know of anything that isn't working properly or needs to be changed. If your a TG warrior, literally nothing has changed lol.
new Decorator(ret=>StyxWoW.Me.CurrentTarget.HasAnyAura("Hand of Protection", "Divine Shield", "Ice Block"),
new PrioritySelector(
Spell.WaitForCast(),
Movement.CreateEnsureMovementStoppedBehavior(),
Spell.Cast("Shattering Throw"))),