Nope, all 3 talents specs are supported. The previous version was actually a showcase for destro locks only. About PvP: I need to work on a new Helper class to manage people on battlegrounds (think about multi dotting in affliction and fearing people like crazy, keeping silence/death coil for healers => detect nearby ennemy healers, etc.). Stay tuned, as always...
Yeah, AoE stuff is on my todo list. I've recently added the concept of 'burst levels' on the core. This will be available on next release. The idea is that you first define in the CC settings if you want to manage your cooldowns yourself or let the CC do it. Then when you start the bot, it will create two temp in-game macros you can display on your UI: 1. Increase burst level by 1 2. Reset burst level to 0 Giving a small example about this: When burst=0, the bot will only focus on the main rotation (felhunter, no meta, no trinket, no doomroflguard). Press the macro button once and you'll switch to burst=1, causing the rotation to implement felguard, trinket and meta. Press it again and you'll move to burst=2, causing the rotation to still include metamorphis & co, but also pop doomguard. This could also work for a tanking CC, assuming that the 'burst macro' would become a panic button.
So excited about your continued work on this CC. I got tired of being on my rogue and seeing the massive aoe damage demo puts out.
Updated to 1.2.1 and added some new rotations (thanks everyone!) SC.PlayerCountBuff(name): returns player buff stack count (like shadow priest's orbs) Added bursting logic Added some more settings Settings are now saved per character instead of one single file SC.TargetCountDebuff(name): returns player debuff stack count on target SC.BurstLevel: returns current burst level (default 0) SC.CombatTimeElapsed: returns time elapsed since combat started SC.UseBagItem(name): uses item in player's bags if not on cooldown SC.UseEngineerGloves: uses engineer's gloves enchant (1min cooldown pseudo trinket) Fixed SC.PlayerHasBuff when buff has no duration Fixed facing math bug AOE behaviors and helpers: SC.CountEnnemiesInRange(WoWPoint fromLocation, double maxRange): returns number of hostile units in range of given location SC.GetSpellRadius(name): returns spell's area radius SC.CastSpellAtLocation: casts a spell at a given location (like hunter's trap throwing) SC.CastSpellAtTargetLocation: exactly the same as the previous one, but on your current target location. SC.CastAreaSpell: automatically find packed units and cast an area spell on them. Does nothing if not enough targets SC.ChannelAreaSpell: same as the previous one, but channels an area spell (like rain of fire) About burst levels: - The idea is to split your common rotation and your burst one. It allows the user to pop every cooldown needed on burst phases. - You can manage burst phases by yourself or let the bot handle your cooldowns on the class settings panel - If managing them by yourself, you'll find two general in-game macros once you started the bot. - Macro 'burst more': increase burst level by one - Macro 'reset burst': reset burst level to 0 - Burst level is automatically reset to 0 after you leave combat - If the bot is managing your burst level, it will wait 10 seconds after entering combat before bursting. Example: I've added the demonology warlock burst sequence in two levels: burst=1: pop trinkets and short/medium cooldowns burst=2: pop doomguard (10min cooldown) Code example: Code: return new Sequence( //this is the burst phase pre-rotation. Called if and only if SC.BurstLevel > 0 SC.BurstSequence( SC.CastSpell("Doomguard", a => true, "Doomguard - burst!"), ), //and here's our normal rotation, which is always called, even while bursting new PrioritySelector( SC.CastSpell("Shadow Bolt", a => true, "Shadow Bolt"), SC.CastSpell("Fel Flame", a => Me.IsMoving, "Fel flame while moving") ) ); Please switch to this thread for comments/questions/etc: http://www.thebuddyforum.com/honorb...ing-cc-lazyraider-combat-bots.html#post344038 The current thread is no more related to this CC.
Just checking, but you do know that HB has supported the spell queue system for a few releases now yes? SpellManager.CanCast(WoWSpell spell, WoWUnit target, bool checkRange, bool checkMoving, bool accountForLagTolerance) By default CanCast will account for lag tolerance (the spell queue system). If its not "responsive" enough, please let me know. It increased my ele shaman DPS from 16k back up to 22-24k (what I can do manually) using Singular's ele shaman code.
Yeah Apoc, I saw that. I may be implementing stuff already existing, but at least I know exactly how each of my core functions are working. I can remember some temp bugs related to cooldowns, player items and unit auras in the HB API. Nothing against your work, I truly admire it... I just want something reliable through HB updates without having to guess how some getter actually works, or how could I design a temp workaround. I wanted to do a similar project using pure lua rotations (nothing new here) but I guess I'm loving that ObjectManager too much to get rid of it. I also know that memory reading would be more efficient than talking to the lua engine. I'm fine with the idea of having a greedy CC. I'm aiming at responsiveness, not hardware performance. Last point, it's a quite fun experiment.
As far as how it works; Code: if (accountForLagTolerance && StyxWoW.Me.ChanneledCastingSpellId == 0) { if (StyxWoW.Me.IsCasting && StyxWoW.Me.CurrentCastTimeLeft.TotalMilliseconds > 500) return false; } else { if (StyxWoW.Me.IsCasting) return false; } Basically; if the spell queue is to be used, just make sure there's nothing being channeled, and the time left on the cast is < 500ms (yes, we wrap the API, no, it won't break). After that check, are movement and CD checks. Code: // This calls a Lua func that checks for all 'required' conditionals. Mana, runes, reactive conditions, etc. return !spell.Cooldown && spell.CanCast; Lastly; WoWSpell already implements your Lua calls, in a much "safer" manner. Code: // BUGFIX: This was using the 'name' of the spell, which is in english. Which causes it to break on non-english clients public bool CanCast { get { return Lua.GetReturnVal<bool>("return IsUsableSpell(select(1, GetSpellInfo("+Id+")))", 0); } } public bool Cooldown { get { return Lua.GetReturnVal<float>(string.Format("return GetSpellCooldown({0})", Id), 1) != 0; } } As for the aura bugs, its actually next on my todo list of things to fix. That one has some "odd" bugs. (We read the aura tables manually, so we have the exact same info the Lua funcs do, not entirely sure why ours don't update properly.)
Thanks for the snippets. I'm localizing spell/aura names as much as possible (tested on french client with accents). I also fully escape (char to \xxx code) every single localized string before calling them through LUA. The result is really as nice as relying on id's, even though lua strings are getting quite big.
Well, do keep in mind that HB has a localized DB for spells. (Any WoWSpell.Name is automatically localized to English, so you really don't need to mess around with it) Edit; that includes aura/buff/etc names, as they're just spells as well.
I must be missing something cause for me singular ele doesn't do any rotation at all in it's current state.... just sets there
I'll have to commit the working version. (I only wrote enough to test the spell queue system, but yea, I'll get around to finishing it today at some point) Also; please stay on topic. Not trying to hijack cowdude's thread here.
Great CC, but need update. U must add shadowflame in melee range and add options for manualy use cooldown (doomguard)
hello Cowdude , i think u can help me , i realy like ur job on rotations , but i have a little problem on Simple Demonology rotation i just tried get off the pet summon but if i delete it dont work, can u make this, no pets, i want to chose one for diferent fights please. Thanks and congratulations. Cya
hey Barga I have not seen Cowdude around in a very long time... maybe someone has a more updated profile for you to use I have no idea. Gl to ya.
I'm having massive issues using this on the latest REV, keeps freezing bot and and not attacking, tries to summon pet, even though I have him out.
I have a question, I have not really dived into CC coding at all so I was wondering. Where would i add in (and how) when my Destro lock casts demon soul he also casts the orc racial and life blood? Thanks in advance.