Basically; all this bot does is run your current CC's Heal->CombatBuff->Combat behavior, at 30fps, within a FrameLock. This is meant to be used for people who use LazyRaider *only* for the "fight for me" support. It makes no claims to deal with targeting, or anything else. It simply runs your entire CC at 30fps (or as close as it can get to it). Note: I haven't actually messed with this myself, but it should work. The idea is, since HB by itself tends to be a bit slow due to plugins, and other overhead, it can vastly drop your DPS. Add on top of that some internal complexities, and you gradually slow down how frequently HB can "Pulse". This BotBase works around these issues, by ensuring the entire combat logic is executed within a single frame. I take no responsibility for any CC not working, or for any bugs you may encounter. Hopefully this may spawn a new set of super-speed CCs designed to run at 30fps (and achieve the top-DPS numbers that normal players can). I won't bother uploading the .cs file, nor explaining how to install/use it. This is simply some proof-of-concept code to show that HB can run as fast as your game (almost) Code: using Styx;using Styx.Logic.BehaviorTree; using Styx.Logic.Combat; using TreeSharp; namespace RaidBot { public class RaidBot : BotBase { private byte _oldTps; private Composite _root; #region Overrides of BotBase public override string Name { get { return "Raid Bot"; } } public override Composite Root { get { return _root; } } public override PulseFlags PulseFlags { get { return PulseFlags.Objects | PulseFlags.Lua; } } #endregion public override void Start() { _oldTps = TreeRoot.TicksPerSecond; TreeRoot.TicksPerSecond = 30; _root = new Decorator( ret => StyxWoW.Me.Combat && StyxWoW.Me.GotTarget && !StyxWoW.Me.CurrentTarget.IsFriendly, new LockSelector( RoutineManager.Current.HealBehavior, RoutineManager.Current.CombatBuffBehavior, RoutineManager.Current.CombatBehavior)); } public override void Stop() { TreeRoot.TicksPerSecond = _oldTps; } #region Nested type: LockSelector private class LockSelector : PrioritySelector { public LockSelector(params Composite[] children) : base(children) { } public override RunStatus Tick(object context) { using (new FrameLock()) { return base.Tick(context); } } } #endregion } }
Correct. Thats by design. (Most plugins just do pointless stuff that slows down the pulses. This should avoid that as much as it can.)
Here it is as a *.cs file. I just added PrecombatBuffBehaviour into it nothing more. THIS IS A BOT. YOU HAVE TO PUT THIS INTO YOUR BOT FOLDER! I won't maintain this nor will i take any bug reports. This is simple copy pasta, basta. greetz Weischbier
Thanks Apoc. I decided to run a quick test and copied your code and used it as a botbase. I ran ultraxion 25 LFR using my custom warlock file with felmaster. Using combat bot i did 19.6k DPS. Using raidbot i did 29.5k DPS
Works great thanks Apoc , and thanks weischbier for the .cs Tested on my crappy ilvl 344 destro lock , LazyRaider + Plagueheart did 9.5k on 85 dummy , Raid Bot + Plagueheart did 12.8k
Cheers for this Apoc. The slow down of DPS/HPS within HB was really hurting it. (Even tho people argued the toss it was fine) Nice to see it was simple to get around it to have HB as pure pewpew bot when people need it
This is good news, ive been using a different Bot for combat/healing and HB for farming leveling due to the difference in Hps/Dps
we do NOT want this in other botbases, most things like normal fighting or gathering does not need to be run at 30 ticks. this is one of those only times where 1. your only running 1 WoW and 1 Honorbuddy 2. you dont need plugins - as your playing manauly 3. your not running advanced logic like questing doing this WILL increase CPU usage, so integrating it into places where its not needed makes no sense.
Just did Madness with DeathShade v2.0 ALPHA CC. 391 ilevel Rogue. He did 63.2k DPS. Thats amazing. With lazyraider I've gotten about half that. That beeing said, Shaddar just updated his CC. So I'll have to use lazyraider with the same CC to compare. Anyway, this looks very promising! Cheers apoc
Ok i'm a bit new to this and need some clarification. Say i have an exeptionally long CC and on line 10000 i have CastSpell("Exorcism") If PlayerHasBuff("Art of War") if the pulse occurs b4 the CC gets to the line would the CC return to the begining never casting exorcism or would it continue through the CC only updating the values/definitions. Thanks Apoc i understand now.
It will only pulse as fast as your CC can allow. (Please google "Control Flow" in terms of programming for a better explanation, and answer to your question)
Apoc I am gonna test this exclusively next week in HM's instead of running PQR but so far doing test in 5mans on my alt warrior this thing is processing logic faster than PQR. So if this holds up you just finally made HB the best of all worlds type bot