Ditto! Well explained, and also explains why it only happened sometimes and not always and more often on certain or specific toons. The rest routine works very well with your added line (for me at least). Always fun to accommodate so many different systems and situations. Now, if you and Cryo could figure out why "enemy npc's" sometimes turns blue and becomes unattackable (wow, is there such a word? lol), you would be my hero!
Never seen the turn blue myself are you choking them till they turn blue? lol, Cryo I played a bit with Joes and his doesn't do the move bump to end the heal as I couldn't see any discernable movement when exiting rest with Joes. I took a quick look at Joes to see how he was handling it but it's going to take more than a quick look as he has functions called within functions in his code. Not sure if it's even worth the time really. XP boosts could be checked and ran from rest code for sure but you would need to put a variable somewhere so people can decide to use it or not. Honestly the reason I stopped using default was the run off into forever on rest and the poor attack support at low low levels, so I went to the quick fix which was Joes but the movement routine for Joes feels a lot clunkier than default. So should I see if I can find his skinning routine or should we see if that can just be added to the buddywing engine?
it's not spamming the cast, KeepResting() is the function to check your and your companions health, the cast is called by if (!Me.IsCasting) which is if me.casting isn't true so it's checking to see if you are casting and if not hitting the rest ability for the detected character which is handled by the Me.RejuvenateAbilityName() function that checks class and then pops the appropriate class. Then it sleeps the thread for 100ms at a time until health for you and comp returns true which it then exits the while function. I'm trying to see how joes cancels his heal but it's going to take a bit it really wasn't immediately readable.
I know Joes is a pain to read, but ive managed to dive into it some months ago and stripped code to set my cores and affinity as a plugin (Yay as i know C# for shit) Still we can add a .cs file which holds all the variables like settings. From there i want to code in the pods handling and xp bonusses. Its a rip from joes i already looked at, but need to be cleaned up. Ive also got a frame in my head to implement the lower levels rotations in the advanced classes routine. What i thought was keep the structure intact, but add the missing lines, with the settings to only fire the spell when below lets say level 47 or 50. Ive seen parts of code already in the routine. Plus if you are level 55-60 you will never get this far inside the routine unless you have nrg issues. Come to think of it, we can better add the lines to use if below level 60. What you guys think? if we get this far, we have in my oppinion the better basic routine for PVE from level 1-60. Then we can take a look at pvp. Also blue mobs are a swtor issue. I asked joe back in the day to handle this by running in or cast a ground spell. in my current C# coding i deffinently CANT code this in
Default should be able to do 1-10 but something is wrong and I'm not sure what. See he has base class rotations but I'm not sure if those only kick in when you don't have an advanced archtype. I know when you have a advanced archtype and it can't find it the bot bugs and doesn't load anything (was my problem with my pryotech that got detected as firebug). Perhaps that would work for low level I would have to test it's been a while since I tried default on a noob. I'm not sure if we should do level detection in that way, perhaps to only use some abilities UNTIL 30 or something but if you don't have it then it can't fire it. The devs have been changing level requirements on spells as well so you would have to maintain that every update across every class and archtype. But there are some abilities you would use at low level and not at ideal 60 rotation so perhaps adding a level lessthan instead so the low levels will use what little the have?
Yeah that was core getting the false values. Aevitas programmed some wrong values like fyrebug. Then default craps out. I dont know if that's still the case, if so please state it here so I can report this to aevitas to fix this. In my opinion everything is here, but needs to be polished up.
Yes powertech pyrotech is firebug I posted a much higher dps version of the routine on this board as well where I changed the names to firebug just to get it to pass but the dps was doubled when I was done.
This was the post #440 but the file name is firebug and I changed pyrotech within routine to firebug to get it to function with the bad detection. If you can get Aevitas to fix detection then just rename it but the dps increase was significant. One big issue I found was flame thrower was waiting on a 3 count buff which even manually all you can get is 2x as well as a few other dependencies to increase damage and reduce power usage. Post #440 has the whole file attached.
So this is how Joes exits the rest cycle without moving if (IAmCasting()) SendMessage(SWTORHWnd, (int)0x100, (IntPtr)(char)0x1b, (IntPtr)0); he commented out bumping the character forward as default and now does this instead. The casting check there is a equivalent in default combat but sendmessage is his own we could likely pull it into default if we really wanted to. So SendMessage is a keypresser which references a dll file of user32.dll and looking up char 0x1b would be him hitting the escape key to cancel the casting. I don't really feel that is causing infinite move as all the movement related issues I had was pre heal but he likely changed from moving forward for a reason. Perhaps if I have some time this weekend I'll implement the method Joes used and then test and share.
Ok well this was a total PITA to implement as it was quite complex to do a simple keypress lol. Here this is working for me no more move as it presses esc to exit rest. Actually seems faster now too. Please test and let me know what you guys thing.
Will test tonight. Looks clean Might aswell talk to aevitas, maybe there is something inside the bot, a command to cancel spells in stead of send keys.
In WoW (and Honorbuddy), we had to use a LUA function to cancel casts. We don't have LUA in SWTOR, so it's going to be more complex
I've seen this one in the code, not sure if it helps or solves the issue... Code: Spell.WaitForCast()
Nea where aren't waiting on anything. If we get max hp or nrg we need to stop it. Thus sending a walk esc or jump would do the trick, where esc is the cleanest.
Yeah, I looked around the API to see if I can find a way to cancel cast, but didn't have any luck. While ESC is a better alternative than moving, it would be nice to have a way to cancel a cast through code (as opposed to a keypress) in case ESC is rebound (which I know is rare, but still!)
In Visual Studio, after adding the reference to Buddywing.exe, you can look at the available methods in the Object Browser. 1. Right click on "References" under the Solution Explorer view. (By default it is on the right hand side) 2. After right clicking, select "Add Reference" then browse and select your Buddywing.exe file. 3. Next, right click on "Buddywing" under "References" in the Solution Explorer, and select "View in Object Browser" 4. By default you'll be viewing all objects. To change this, select the ellipses to the right of where it says "All Components" 5. Select the "Browse" tab and make sure "Files of type" is set to "Executable Files." 6. Navigate to wherever Buddywing.exe is saved on your file system and select it. 7. When Buddywing.exe is selected, click the "Add" button, then hit "Ok." This will limit what is visible in the Object Browser to only Buddywing functions. 8. You can now browse every available function in Buddywing!
Powertech Pyrotech routine After talking with Cyro he noted a few things and I worked some other stuff out. Dps from original file was 1200 and first edit 2050 and now it's pulling 2350 so double from where the routine started at. Enjoy.