Download - Please download a clean copy of Beta for each version. Do not "update", because the changes will break other versions. Before reporting issues, please make sure you are using a clean copy.
Please attach a full log if you have any problems. I've made sure as much debugging information is logged as possible to track down various issues that might happen. I need the full log though, and not partial snippets. If you do not feel comfortable posting a full log, you can PM me it instead with a link to your thread.
Beta #899
1. Please place the "Move only" skill on your skillbar, but not in Left Mouse Button.
2. Make sure "Always Highlight" is enabled (PoE Options-> Ui or press Z)
3. Make sure "Key Pickup" is enabled (PoE Options-> Ui)
4. For a rough guide to Beta, please see the ExilebuddyBeta User's Guide. It's not fully updated yet for post 1.2, but the core stuff is still mostly the same.
5. A new guide for understanding and dealing with ExampleRoutine will be added 'soon", but the priority still is identifying core issues and fixing them so a Release can be made asap.
Standard town functionality using the new API has been re-added and is ready for testing. The bot will now id items based on your Id filters, and will sell items based on your sell filters. The filters are the same as before, so nothing has changed in that regards. With the new API, the bot will perform all actions the same way a user would. That is, it has to open the appropriate window first (stash/sell/inventory), and then it will perform actions by moving the mouse and checking the current client state. As the bot ids items, it will look the same as if you were doing it yourself. However, it is possible to interrupt the logic if you click inside the client or perform any actions yourself while the bot is running. The current logic attempts to handle this as best as possible, but please be aware of how the bot works now; your actions in the client affect the game, and in turn interfere with the bot.
A lot of the previous beta functionality has been updated for the new API and re-added, but not all of it is done yet. The bot does not have the withdraw id/tp scrolls logic yet, so even though the option is in the GUI, the bot will not do it yet. Likewise with inventory sorting, to get quest items moved to the left most positions. That stuff will most likely make it back in the next version, as this update is quite large and has taken a few days as it is. The bot will handle ordering inventory shards, non-virtual items on the cursor, and merging inventory stacks.
The new stashing logic is setup to work the same way a normal user would stash, with some exceptions. The bot will go to the first stash tab before starting to work its way though the stash to process each tab. This is necessary, as the new API does not perform any actions at a time that a normal user couldn't. That is, if your Wisdom Scrolls were on tab 1, and you're on tab 2, a normal user couldn't withdraw them (even though the client makes no distinction between which tab you're actually on once you have the contents). The API has support for switching tabs using the tab list drop down, but BasicGrindBot will not make use of that functionality, and simply rely on the normal left/right arrow changing tabs method, as it's the most reliable. Unlike before, the bot will not request stash tabs any longer, but rather just changes to a stash tab and lets the client request the contents. There is not currently a max stash tabs to use setting as a result.
Iding logic works as follows: the bot will check your main inventory for id scrolls and id as many items as possible. If the bot needs more, it will go to stash and start looking from the first tab. In the event you're out of id scrolls, it will try again, and eventually stop because iding has failed. This is just a short term logic implementation that will be changed later.
Lastly, for town stuff, the bot will exhibit a new behavior when placing items from the cursor. Since the bot does not directly call any client functions to perform actions now with the new API, it must "drag" items to the desired location to place them before being able to drop them. This means you'll see cursor drop operations take longer than before as the item moves across a few inventory cells to the location it needs to be in. This is working as intended, and how the API will work from now on.
Various out of town issues have been fixed and logic has been improved. The extra town trip when going to an area that has a different governing town should now be fixed. That is, if you're in town, the bot should not take a waypoint to another town, and then take a waypoint to the grind zone. This would happen in a few specific areas at the start of the act. The bug with Merciless Upper Sceptre of God should now be fixed as well, and there should be no more waypoint issues.
Various plugins from the last beta have been updated and worked back into Beta. These are just working examples of how some things can be done, and are provided for users to customize or extend to their needs. The logic is setup to work for any bot implementation, and none of the plugins have logic for working directly with BasicGrindBot. That is why, for example, StuckDetection cannot trigger exploration complete, because there's no generic interface across IBot that would allow for that.
A few changes were worked into ExampleRoutine as well. There is now a ranged attack distance used to determine ranged combat. This is to address the issue of CombatRange needing to be larger, say 70, to correctly trigger some boss fights in the CR. In addition, a reported null exception issue was fixed due to typo.
The object/component system was not rewritten yet, because the focus was getting back iding/selling, as that seemed to be the biggest issue people were waiting for. There are still quite a number of things to cleanup and do, but progress is steadily continuing on. Strongboxes should now be opened by default, if not ignored in settings, but it has not been tested yet. Please remember this is still Beta, so be cautious on the characters you test on if you cannot afford anything going wrong.
Changelog
Please attach a full log if you have any problems. I've made sure as much debugging information is logged as possible to track down various issues that might happen. I need the full log though, and not partial snippets. If you do not feel comfortable posting a full log, you can PM me it instead with a link to your thread.
Beta #899
1. Please place the "Move only" skill on your skillbar, but not in Left Mouse Button.
2. Make sure "Always Highlight" is enabled (PoE Options-> Ui or press Z)
3. Make sure "Key Pickup" is enabled (PoE Options-> Ui)
4. For a rough guide to Beta, please see the ExilebuddyBeta User's Guide. It's not fully updated yet for post 1.2, but the core stuff is still mostly the same.
5. A new guide for understanding and dealing with ExampleRoutine will be added 'soon", but the priority still is identifying core issues and fixing them so a Release can be made asap.
Standard town functionality using the new API has been re-added and is ready for testing. The bot will now id items based on your Id filters, and will sell items based on your sell filters. The filters are the same as before, so nothing has changed in that regards. With the new API, the bot will perform all actions the same way a user would. That is, it has to open the appropriate window first (stash/sell/inventory), and then it will perform actions by moving the mouse and checking the current client state. As the bot ids items, it will look the same as if you were doing it yourself. However, it is possible to interrupt the logic if you click inside the client or perform any actions yourself while the bot is running. The current logic attempts to handle this as best as possible, but please be aware of how the bot works now; your actions in the client affect the game, and in turn interfere with the bot.
A lot of the previous beta functionality has been updated for the new API and re-added, but not all of it is done yet. The bot does not have the withdraw id/tp scrolls logic yet, so even though the option is in the GUI, the bot will not do it yet. Likewise with inventory sorting, to get quest items moved to the left most positions. That stuff will most likely make it back in the next version, as this update is quite large and has taken a few days as it is. The bot will handle ordering inventory shards, non-virtual items on the cursor, and merging inventory stacks.
The new stashing logic is setup to work the same way a normal user would stash, with some exceptions. The bot will go to the first stash tab before starting to work its way though the stash to process each tab. This is necessary, as the new API does not perform any actions at a time that a normal user couldn't. That is, if your Wisdom Scrolls were on tab 1, and you're on tab 2, a normal user couldn't withdraw them (even though the client makes no distinction between which tab you're actually on once you have the contents). The API has support for switching tabs using the tab list drop down, but BasicGrindBot will not make use of that functionality, and simply rely on the normal left/right arrow changing tabs method, as it's the most reliable. Unlike before, the bot will not request stash tabs any longer, but rather just changes to a stash tab and lets the client request the contents. There is not currently a max stash tabs to use setting as a result.
Iding logic works as follows: the bot will check your main inventory for id scrolls and id as many items as possible. If the bot needs more, it will go to stash and start looking from the first tab. In the event you're out of id scrolls, it will try again, and eventually stop because iding has failed. This is just a short term logic implementation that will be changed later.
Lastly, for town stuff, the bot will exhibit a new behavior when placing items from the cursor. Since the bot does not directly call any client functions to perform actions now with the new API, it must "drag" items to the desired location to place them before being able to drop them. This means you'll see cursor drop operations take longer than before as the item moves across a few inventory cells to the location it needs to be in. This is working as intended, and how the API will work from now on.
Various out of town issues have been fixed and logic has been improved. The extra town trip when going to an area that has a different governing town should now be fixed. That is, if you're in town, the bot should not take a waypoint to another town, and then take a waypoint to the grind zone. This would happen in a few specific areas at the start of the act. The bug with Merciless Upper Sceptre of God should now be fixed as well, and there should be no more waypoint issues.
Various plugins from the last beta have been updated and worked back into Beta. These are just working examples of how some things can be done, and are provided for users to customize or extend to their needs. The logic is setup to work for any bot implementation, and none of the plugins have logic for working directly with BasicGrindBot. That is why, for example, StuckDetection cannot trigger exploration complete, because there's no generic interface across IBot that would allow for that.
A few changes were worked into ExampleRoutine as well. There is now a ranged attack distance used to determine ranged combat. This is to address the issue of CombatRange needing to be larger, say 70, to correctly trigger some boss fights in the CR. In addition, a reported null exception issue was fixed due to typo.
The object/component system was not rewritten yet, because the focus was getting back iding/selling, as that seemed to be the biggest issue people were waiting for. There are still quite a number of things to cleanup and do, but progress is steadily continuing on. Strongboxes should now be opened by default, if not ignored in settings, but it has not been tested yet. Please remember this is still Beta, so be cautious on the characters you test on if you cannot afford anything going wrong.
Changelog
- OpenChestTask now uses GlobalChestsToIgnore to determine which chests to open. Strongbox specific logic is not implemented.
- AreaStateCache.CorruptedAreaParentId added to try and auto-detect the parent area for corrupted areas. Corrupted area logic is not in yet.
- Chicken, StuckDeteection, and the Scheduler plugins have been updated and re-added from the previous Beta.
- HandleInventoryItemsTask added.
- Bug fix in ExampleRoutine that was causing null exceptions.
- Added SellItemsCoroutine.
- FinishCurrentAction now waits 250 ms if input was reset.
- WaitFor functions now log their entry to make debugging easier.
- Added WaitForNpcDialogPanel.
- InteractWith delay increased to 64ms from 32ms.
- Added TalkToNpc.
- Added SellTask, a generic, reusable coroutine like Stash and Id.
- StashItemsCoroutine logic updates.
- Added IdItemsCoroutine.
- IdTask is now generic and reusable.
- Added ClearCursorTask and MergeInventoryTask.
- TravelToGrindZoneTask now removes extra town hops for certain areas.
- ExampleRoutine curse logic now uses MaxRangeRange.
- ExampleRoutineSettings.CombatRange now controls total combat range, but not skill use.
- Added ExampleRoutineSettings.MaxRangeRange, which controls how far to use ranged skills. The CR will move into attacking distance for ranged attacks now.
- Added BasicGrindBotSettings.TriggerTownRun.
- LootItemsTask, ReturnToGrindZoneTask logic updated to be reusable.
- Added TownRunTask to replace the old CreateAndTakePortalToTown calls.
- TravelToGrindZoneTask updated to make use of new common coroutines.
- Commonly used coroutine logic added and updated. See v3.Coroutines.
- StashPanel.GoToFirstTab added.
- Coroutines.StashItemsCoroutine added.
- Coroutines.OpenStash updated to move to stash if in town (only works in hideout if Stash is spawned in range).
- ExilePather.FindPath now has a releaseFrame parameter for advanced usage.
- ExilePather.WalkablePositionFor now has a noCache parameter for advanced usage.
- StashTask updated to be fully reusable by devs wanting to implement custom stashing.
- BasicGrindBot now implements stash specific logic to use in StashTask.
Last edited: