Exilebuddy will be receiving some major API and structure changes over the next few weeks-months. In the past, most changes have been made to try and avoid changing the API, but it's time we break the API to better position EB so users can have the bot they really want. This mostly means that users should download clean copies of the bot rather than updating, and they might have to update their custom code a lot more than normal. We know this is an inconvenience, but it's required for gearing up EB for long term development.
The first large upcoming change is with the inventory API. The current inventory API was only a placeholder when it was first added a long time ago. We just never got around to properly updating it, due to having to address other things with the bot/API. It is being reworked for the following reasons:
These api changes will be making their way into the API this week and some of the new stuff will be integrated into the bot the following week. However, don't expect a lot of logic updates, because those are time consuming and require a lot of testing first. As a result, Beta will receive very large updates, followed by minor bug fix patched for the new code rather than a more steady stream of small updates. Before a beta is pushed with the changes, it'll be tested as thoroughly as possible, but some users might want to rely on Release instead.
These changes are just the first of many large upcoming sets. Inventory stuff is changing first, because it's not dependent on other code, while a lot of bot logic is dependent on it. Rather than updating other code first, and using the current inventory api, it makes more sense to update inventory stuff first, so when the other code is rewritten, it can take advantage of the new stuff. More posts similar to this one will be added to this thread as time goes on and the systems are almost ready to be integrated into the bot.
The first large upcoming change is with the inventory API. The current inventory API was only a placeholder when it was first added a long time ago. We just never got around to properly updating it, due to having to address other things with the bot/API. It is being reworked for the following reasons:
- To support the map device. The map device uses the inventory system the rest of the game does, we need something a little more improved to correctly place items into it. While it is not final, the new method of moving a map or map fragment to the map device when it is open is as follows: InventoryItem.MoveToMapDeviceTopLeft, InventoryItem.MoveToMapDeviceTopRight, InventoryItem.MoveToMapDeviceBottomLeft, InventoryItem.MoveToMapDeviceBottomRight.
- To more easily support CR logic that needs to perform snapshots (RF).
- To support easily taking quest rewards. The future of EB includes being able to do quests, so being able to accept quest rewards is a must.
- To support using currency on Strong Boxes.
- Trading support. Eventually, making a trade bot will be possible with the API. While there are obvious design issues that have to be considered, EB will at least support working with trade dialogs.
- Buying support. Being able to visit a vendor and buy items each level up is a desired feature, and support will be added to the API for this.
- Better support for slots than we currently have. The current system is somewhat messy, but the new changes will simplify this a bit. Rather than accessing the inventory through the Me object, it'll be done through a static class in LokiPoe now.
- More utility functions. A lot of the logic for inventory stuff is contained in Registry, which was just a class that holds a bunch of random stuff. Inventory stuff is being moved to the appropriate places, so users can access the functions is a more intuitive way.
- Changing how stash tabs are requested. The old logic would throw exceptions and request stash tabs in places it probably shouldn't. As a result, the approach for working with stash tabs is being reworked to only search the tabs the client knows about. The user will have to request the tabs it wants to work with instead.
- Various bug fixes with things like the Gem Leveler, which relies on the inventory API and under certain scenarios, it might have been possible for gems to fail to level (but most of those are from caching issues more than likely).
- Support for working with skill gems on the cursor. The bot will eventually be able to place skill gems and remove them, which is needed for fully automated bot logic.
- Support for guild stash pages. There's not been a real need for them, but supporting them in the API would be good. The game actually has an implementation for them that doesn't match Stash tabs, so the API is separate from normal Stash.
- Docs and usage examples. Some new guides and stuff will be made going over the new system.
These api changes will be making their way into the API this week and some of the new stuff will be integrated into the bot the following week. However, don't expect a lot of logic updates, because those are time consuming and require a lot of testing first. As a result, Beta will receive very large updates, followed by minor bug fix patched for the new code rather than a more steady stream of small updates. Before a beta is pushed with the changes, it'll be tested as thoroughly as possible, but some users might want to rely on Release instead.
These changes are just the first of many large upcoming sets. Inventory stuff is changing first, because it's not dependent on other code, while a lot of bot logic is dependent on it. Rather than updating other code first, and using the current inventory api, it makes more sense to update inventory stuff first, so when the other code is rewritten, it can take advantage of the new stuff. More posts similar to this one will be added to this thread as time goes on and the systems are almost ready to be integrated into the bot.