I've got some rudimentary programing skills...or more appropriately, I have some ability to reverse engineer and modify the great work that others put out...and I need a bit of help. I'm looking to create a routing for my preferred Rogue grinding/farming spec at level 50. The spec is 21+ Assassin (primarily for perma-stealth to avoid detection on a PvP server), 13+ Riftstalker (for Rift Scavenger heals on mob death), the rest in Bladedancer. Here's my strategy: Always use stealth when out of combat. Basically, kill mob, check to ensure there are no DoTs on me (that would pop me out of stealth), then stealth, move to next mob, use stealth openers (Expose Weakness, Poison Malice, Elusiveness, Shadow Stalk if spec'd for it, Jagged/Assassinate/etc based on spec), then do typical builders/finishers based on spec, but stop using any finishers when the mob is below 20% health (or whatever amount I figure out is optimal for efficient Rift Scavenger heals). Mob dies, I get a big heal from Rift Scavenger, check to make sure no DoTs are on me (and wait until they drop off if there are any), stealth, rinse, repeat. The part I need help with is the stealth portion. How do I code it so the bot will always, when out of combat, check for DoTs, wait for any active DoTs to fall off, then stealth? The rest of it I've got a handle on, but I can't figure this out. Thanks!
The Assassin 4-point root ability is named "Stealth" Instant cast, 10 second recast, from when you come out of stealth. For example, if a dot breaks you out of stealth, or you drop stealth manually, you cannot re-stealth for 10 seconds.
First you need a way to check if you have any damage over time debuffs on you. Here is how I'd do it: Code: private readonly HashSet<string> DotDebuffs = new HashSet<string>() { "A Nasty DOT", "Another Nasty DOT", "A Really Nasty DOT", }; private bool HaveDotDebuff { get { return DotDebuffs.Any(b => GigaRift.Me.HasBuff(b)); } } Then in CreateRestBehavior() you need to create a "Stealth" buff on your toon after it has all other buffs and after it has finished drinking. Here is how I'd do it, checking if there are any DOTs to interfere: Code: CreateBuffOnSelf("Stealth", ctx => !HaveDotDebuff), That hard part is listing all the dots that affect you in DotDebuffs. I'd be very grateful if you posted your results back here.
Awesome, thanks Hawker. I didn't think of the rest routine. That should get me started. When I get time I'll start compiling the list of all the DoT effects and post back here. Then I'll try to use this, and if I ever come across one that I missed, I'll try to update the list. I appreciate your help.
What would be nice is if there was a little more spell info available from the API, for example spell type, damage, cast time, duration etc. we can determine if there were dots on the bot without the need for a using a huge list of known dots