What's new
  • Visit Rebornbuddy
  • Visit Resources
  • Visit API Documentation
  • Visit Downloads
  • Visit Portal
  • Visit Panda Profiles
  • Visit LLamamMagic

Exilebuddy 3.0+ Reference Thread

Status
Not open for further replies.

pushedx

Well-Known Member
Joined
Sep 24, 2013
Messages
4,252
Reaction score
290
Welcome to the Exilebuddy reference thread for 3.0.0+!

The point of this thread is to provide one large reference that contains everything users will need to know and refer to for our 3.0 builds. There will be a lot of content in this thread, but users are expected to go through it all for the best possible experience when using Exilebuddy.

TL;DR Download

Exilebuddy Release/Installer builds are accessible through BuddyAuth via this link: http://updates.buddyauth.com/

The static direct download link for builds are as follows (feel free to bookmark these):
Beta - updates.buddyauth.com/GetNewest?filter=ExilebuddyBETA
Release - updates.buddyauth.com/GetNewest?filter=Exilebuddy

Contents

Exilebuddy 3.2 Release Addendum
Exilebuddy 3.1 Release Addendum


Path of Exile/Exilebuddy General Information

Exilebuddy Project Information

Exilebuddy 3.0 Build Information

Exilebuddy 3.0 Release Changelog
Exilebuddy 3.0 Beta Changelog

Exilebuddy Quick Start Guide (from 2.4+, but still pretty accurate)
User Guide to Install Content to Exilebuddy

Exilebuddy Capability Information

ThirdPartyConfigMaker (for devs)

OldGrindBot Source Code (for devs)

Big Thread of Upcoming 3.0 Changes! (for devs)

Overview of the 3rd party content loading system

Previous Auto-Passives Guide

[3.0+] Developers Guide To Setting Up A Project

Upcoming Changes for 3.3 Mega Thread

Exilebuddy Forum Reorganization (Part 1)
 
Last edited:
Path of Exile/Exilebuddy General Information

Users should read *ALL* of the following material.
  • Exilebuddy lifetime keys expired April 20th, 2016. Please see the "[Official] Exilebuddy - Monthly Key System is now live" thread if you're just now returning to Exilebuddy after many years.

  • Exilebuddy is still undergoing its project direction change since the temporarily closing last year. Please see the "[Official] Exilebuddy - the Way Forward" thread if you're returning to Exilebuddy after many years, or are a new user.

  • Path of Exile is an extremely high maintenance game (100's of patches a year) that requires a lot of development time and resources. We undergo a lot of downtime due to game changes, and our update process is a lot more complicated than any other project out there. With 3.0 finally being released now, we hope the game starts to become more stable, so we can further our bot development ambitions to providing a project of quality like our larger bots for other games.

  • Exilebuddy only supports the International version of Path of Exile (managed by GGG). Other version are not supported. Both the standalone and Steam clients are supported from this version.

  • Path of Exile has a 2 client limit per machine. Please keep this in mind, as topics bypassing this are not allowed on our forums, and we offer no solution around this.

  • English is the only currently supported client language at this time. While we hope to one day support other languages, it is not currently possible. Exilebuddy does not contain translations for languages other than English yet either. Once again, we hope to one day implement this, but for now it is not possible.

  • Exilebuddy performs input action emulation. In essence, it moves the mouse and clicks buttons and presses keys to perform actions. Because of this, it can trigger some undesirable client behaviors due to blocking gui windows. This design means Exilebuddy will not be as accurate as bots in other games, but it also means it's performing actions in the safest way possible to avoid detection from invalid actions.

  • Path of Exile also uses the hash of the machine's MAC addresses as part of the login process for account security. Logging in multiple accounts from the same machine will create a visible association seen on the server side.

  • The IP you use to create an account matters and is tracked along with the IPs you use to access your account in game. While this should be obvious, a lot of people seem unaware of this, and how GGG does check IPs for patterns most commonly used by botters. The same is true of your e-mail address.

  • There has not been any known association of accounts from your GGPK. While there are tin-foil theories each update about account tracking through GGPKs, there is no known system in place, and users should not worry about shared GGPKs as long as they are unmodified. It's still advisable to always get your updates and game files directly from GGG though, as you never know if modifications have been made by a 3rd party.

  • Exilebuddy does not support, and we do not recommend users modifying their GGPKs with 3rd party tools. Various "optimizers" will break Exilebuddy, and can possibly lead to client behaviors that result in users getting banned.

  • Various video related programs, such as overlays, captures, and boosters can interfere with Exilebuddy. This is because our bot framework works alongside the Direct X rendering process. Please check over this thread (Programs that interfere with Exilebuddy.)

  • Sometimes, anti-virus and firewall programs interfere with Exilebuddy or the connections to the auth servers. Please be sure to whitelist the Exilebuddy folder and executable to avoid issues. Support will ask you to disable AV/firewalls to help diagnose this issue if you have problems.

  • IP address modification topics are not allowed on our forums, so while it is necessary to bot multiple accounts across a network, we do not support this or allow talks about the best way to do it here. This is for legal reasons, so that's all we can say about that.

  • Path of Exile contains a custom client sided cheat detection system (please see this thread). While we do not talk about the specifics, the use of additional 3rd party software alongside ours is not supported nor recommended as it might cause detection issues. This is not the main anti-cheat system of the game, but it does exist, so users should be aware of it ahead of time. Exilebuddy is designed to be as safe as possible in respect to it.

  • Path of Exile employs a significant server-sided cheat detection system as well. This is the primary way the game catches exploiters, dupers, botters, and RMTers. While we do our best to ensure we do not do anything that would be easily identifiable, users need to be aware of this, because unknown server sided metrics are used to detect bot-like behaviors.

  • Please keep in mind that GGG analyzes all their server data, since it's their game after all. Each league, there are posts about various stats and stuff. Most users ignore these, but it's a key reveal about how GGG goes about tracking down cheaters. Assume everything is motioned, and while some people have luck avoiding detection, it doesn't change the fact that the main focus is on server sided detection, so there's very little for us to do to help combat that.

  • A client telemetry system exists in Path of Exile. Please see this post. The current status of the system is not known for 3.0, but the code is still there.

  • Exilebuddy is highly dependent on the Path of Exile client. Every client update (as in a game exe change) will stop Exilebuddy from working, and a new update is required. We do not do automatic updates or push out untested bot builds for user safety. This means users will need to wait for new bot updates after any client patch.

  • Client bugs affect Exilebuddy in much more significant ways than those same bugs affect non-botting users. This is because most non-crash client bugs are masked by variations in the way users play the game. For example, Exilebuddy has issues with certain tilesets' stairs, because of a long time client bug when moving across stairs. The code we use for player movement certainly needs improvements but the core issue lies in the client itself.

  • Likewise, various item highlighting issues exist in the game that affect Exilebuddy. Normal players get around these by picking up unwanted items and then dropping the items, but Exilebuddy does not do that. Label overlap around strongboxes has always been an issue, but there's no simple solution other than to code around a lot of cases in the code, which we currently do not because it requires a different code design.

  • We check each and every client update for potential surprise changes that might affect us. This takes time, and why we have longer downtime over patches than anyone else, but as a result, we're 2/2 for in catching what we look for. While we can't guarantee we'll always be able to catch these things, we try our best. We've never had a software specific detection ban wave. We did initially have a server side detection related flagging issues back during the very first version from 2013, but that was addressed with a complete API rewrite. That was attributed not due to carelessness, but rather a very different way the Path of Exile client works compared to every other game we have bots for.

  • Exilebuddy is a 32-bit bot that only supports the 32-bit version of the game. 64-bit support is not currently possible. Windows 7 and above are the currently supported Operating Systems. We get a lot of questions if Windows 10 is supported, and it is, as well as the operating system used to perform API updates.

  • Exilebuddy requires the Visual Studio 2017 runtime along with .net 4.6.1 runtimes. Please use the Exilebuddy installer to take care of these pre-requisites on your bot machines if you do not want to manually install them.

  • Path of Exile is not a bot-friendly game. The devs are always active in their efforts to stop all sorts of cheating and RMT, and they have emphasized this stance since day 1. Please do not underestimate GGG in this regards, as a lot of people attempt to mindlessly bot with Exilebuddy, get banned, then complain to us. We always attempt to do as much as possible to keep Exilebuddy as safe as possible to use, so it's ultimately up to users to manage how they bot.

  • The following are anti-ban tips posted by Apoc back in 2013 that are still relevant. Please understand there are always risks with botting, so if you're not willing to accept the consequences, you should not bot.
  1. Do not bot for hours and hours on end. This is a very obvious flag. If you want to bot for 24hrs straight, don't expect to keep your account.
  2. Do not drastically change your play time in a week. If you go from 30min-1hr of play time a day, to 16+ hours a day, it's a very obvious flag. This should just be common sense at this point, however, some users just don't grasp that simple concept.
  3. Do not bot on an account you don't want to lose. While we make every attempt possible to ensure your account is safe while using our products, we are in a cat-and-mouse game with game developers. More often than not, we do win. But GGG has shown, that simply hiding what they do, is enough to catch us sometimes. If you insist on botting on a "main" account, then understand that you may lose everything on it. This goes for any bots, for any games. Our company does have a very good track record of minimal ban rates (near-zero overall) for users who don't do silly things. (Such as bot 24/7, etc)
  4. Engaging in RMT is a big red flag. While GGG seems to be a bit lax about it, they do ***** down on it quite a bit. Be careful when you buy/sell currency.
  5. Never, ever, ever, EVER, tell others that you bot. Unless you trust them not to "tattle" on you to others. Especially do not post about bots on the official GGG forums. This should be common sense, but again, some users feel the need to request support from the game developers. While you'll give them (and us) quite a laugh by doing so, you'll also find yourself banned.
  6. Please, don't post your email conversations with GGG on our forums (or any other forum). If you want to give some description, feel free. But copy/pasting text from the email is likely easily linked to your account. Just don't do it.
  7. When posting screenshots of in-game, make sure you cover up any text (including life/mana, etc). All these things can be used to track you down. (Yes, life/mana can narrow a search field by millions of results)
  8. Use the /age and /played commands in-game to check your character age, and amount of time being in game. If it looks suspicious to you, it probably looks suspicious to them.
  9. The easy areas (such as Ledge and Docks) are known botting areas, and GGG knows about it. Try leveling somewhere else, or farming items in a different area.
  10. There are such things as "easy bot builds" that other products use, such as starting out as Marauder and using a few simple skills. If you do the same thing, you may get caught along with anything that is being watched with those other products. Exilebuddy is full-featured, and should support just about any build you can come up with. Mix it up, play something different!
  11. There is a level 25 character requirement to trade currency on new accounts. If you make a new account and try to bot to 25, you'll have a bad time doing so.

  • The reason why we have to say these things, no matter how obvious they might seem, is we get users who break these simple rules, get banned, then complain to us. When we go through the most likely reason they got banned, it usually fits one of these basic things.

  • Users should always baby-sit their bots and watch them for any undesired behaviors. Unattended botting is not supported, and dangerous. Path of Exile is a game based on random generation, so quite often it's possible for users to encounter new situations each update that we have not seen before. For example, chests can spawn in the middle of doorways, blocking the bot and causing it to get temporarily stuck. Certain situations like these aren't handled because of the side effects of then causing other chests to be opened that users do not want when passing by.

  • In addition, to get the most out of your botting experience, all users should play through the entire game at least once to understand things. Exilebuddy is not a user-friendly bot, because Path of Exile is not a user friendly game. There are a lot of complexities in the game that cause the bot to have less than ideal systems in place to handle various things. While it's our desire to make things as user friendly as possible, there's only so much we can do for users who have no idea what they are doing with the game.

  • Hardcore league botting is never recommended, and our code is not designed or optimized for that type of "safe gameplay". In addition, playing the game legit hardcore comes with its own sets of risks due to client or game bugs, so please keep this in mind. The more experienced you are with the game, the better you'll be able to handle botting because you'll know which areas the bot will have issues with based on the game itself. The same is true for maps, while we try to support everything as best as possible, certain areas just cause issues that are not trivial to solve.

Client Settings

Exilebuddy works best with Windowed clients, but users may try Windowed Fullscreen as well. Fullscreen is not recommended.

The "Move only" skill needs to be on the skill bar, but cannot be used from the Left mouse button slot. This is because LMB is a special slot for Interaction, so movement actions can only be successfully performed from other slots. While this is an inconvenience, there's no way around it that allows the bot to perform as well as it currently can.

The Path of Exile game client cannot be minimized! While it does not have to be the foreground window, it must be rendering and active. Running another game or movie in fullscreen can affect the client, and cause the bot to have issues, so please keep this in mind.

[Graphics]

Only the 32-bit version of Path of Exile is supported. This is the DirectX 9 and DirectX 9Ex graphics settings in the client. To change your client settings, go to "Options -> Graphics -> DirectX Version" and change it to either "DirectX 9Ex" or "DirectX 9". Be sure to "Save" and restart your game client. Failure to do this means Exilebuddy will not be able to find a process to attach to.

It is highly recommended to turn down all graphics options to the lowest settings, disable optional graphics additions such as Post Processing and Screen Shake, disable Engine Multithreading, and disable VSync. Exilebuddy will add significant per-frame overhead to the game when running, so having rendering options at the lowest will yield the best performance.

[Sound]

Users may configure these client settings as the see fit.

[UI]

"English"
is the only supported Language and Chat Language.

Users should change the "Networking Mode" to "Predictive", unless they understand the impacts of using "Lockstep". "Auto" is not supported and will result in undesirable behavior depending on your latency.

"Key Pickup" should be set to "Use Highlight Key" or "Use Bound Key". Otherwise, Exilebuddy will cause the client to randomly pickup items on the ground when it attempts to click the ground to use a skill or interact.

"Auto-equip" is a client specific feature that will auto-equip items you loot into an empty gear slot. Users should disable this if they do not want this game behavior (unarmed builds) as it is not something Exilebuddy does for you (but people think it does).

"Item Filters" are supported by Exilebuddy, but can result in undesirable behaviors if a loot filter is used that does not perfectly match the client's filter. Most users should not need to use them during questing, only mapping, so they are for advanced users.

[Input]


"Use bound skill 2" and "Use bound skill 3" should be mapped to non-mouse buttons if you will be using long ranged skills on them. Otherwise, it is possible for the mouse to overlap the gui, and the gui will prevent the mouse actions from working and the bot will not attack correctly.

[Notifications]

It is highly recommended to disable all notifications.
Otherwise, notifications can be spammed to the client which will affect the bot when it performs actions in towns.

"Trade Requests" are the only type of notification needed for Exilebuddy to make use of the trading API correctly, as there is no other way to view pending trade requests in the client. Everything else necessary is accessible elsewhere.
 
Last edited:
Exilebuddy Project Information

Exilebuddy is not your typical bot project. It's marketed just as a "bot", because that's what people understand. Exilebuddy is more than that though, so this post will try to adequately explain how the project is setup and why things are setup the way they are.

Starting out, Exilebuddy is not just "one" bot. Exilebuddy uses a design of being able to load custom bot implementations. The bots we provide, currently QuestBot and MapBot, are built the same way any user would make their own bot to use in Exilebuddy. This distinction is important to make, because when you talk about what Exilebuddy can or can't do, it's not the same as what the current bot implementations you are using can or can't do.

When you talk about the things Exilebuddy can or can't do, you're really talking about what the API supports and doesn't support. There's only a few things the API provided by Exilebuddy can't do right now. This is always changing because of how often the game changes, but we try our best to provide as close to complete client coverage as possible.

The API we provide though Exilebuddy, allows users full access to the game so they can write advanced bots, plugins, and combat routines. Our vision is to provide basic bots and functionality for the game, but empower the community to do more and create new and amazing things that better fits their needs.

Our setup is significantly different than most other bot projects out there, because our primary focus is writing an API for the game we're targeting. Then, using that API, we and the community, can create all sorts of things for the game that otherwise just wouldn't be possible using the traditional bot project setup.

Everyone has access to the bot implementation code we're using, as well as plugins, and routines. The only thing users don't have access to, is the actual API source itself, as that's our intellectual property we have to protect to keep the project going, and the core components that form the project itself, such as program gui code, auth, and our custom memory library used across all our bots.

Exilebuddy is an out-of-process memory bot. It does not use pixels to operate, so it is not a pixel bot. It does not use packets to directly perform actions, so it is not a packet bot. However, it does full mouse and keyboard input emulation in order to work. Exilebuddy is written in C# and uses several low level libraries written in ASM, C++, and C++/CLI.

Path of Exile has a unique client design that prevents the typical bot design most other Buddy bots use from working correctly. While we cannot get into the details about this matter, Exilebuddy is quite unlike all the other bots Buddy provides. A lot of things work in ways that most botters might not expect, especially ones that use other Buddy products. In most games, bots are able to call client functions to perform actions with 100% accuracy and reliability.

This is not the case for Path of Exile, and as a result, the bot is bound to the limitations a normal user is as well as the client implementation itself. To be more specific, Path of Exile as a game is known for its desync issue (which was mostly solved, but back again). That issue greatly affects the bot, because the bot is reliant on the client for it's information. There are many other client issues that affect the bot, and as a result, there will be noticeable things that happen that might not make sense, but are done in order to have a working bot for this game.

Beta vs Release

Exilebuddy comes in two versions: Release and Beta.

Exilebuddy (Release) is the "stable" version of Exilebuddy that is intended for most users to use. The purpose of Release is to give users something that doesn't change too often, except for bug fixes, to allow them to get comfortable with the bot and build up their own bots, routines, and plugins from the API.

ExilebuddyBeta (Beta) is the "experimental" version of Exilebuddy that is used to try and find new and better ways to make Exilebuddy work with Path of Exile. This version can be expected to change frequently, and is not meant for general use. At times, Beta might break and be completely unusable, so it is not recommenced for users to bot around this version.

Path of Exile is a game that changes very frequently. As a result, Beta has been predominantly used as the new latest and greatest version of the bot/API, as making a stable build becomes really hard when there are large amounts of changes and features that need testing after an update. All game updates are significant in Path of Exile. Unlike most other games, a lot of core game features change in this game, and as a result, the bot/API has to be updated to handle these changes.

Development Model

The model we use for bot development here at Buddy is as follows (for the bots we code):
  1. Start a project for a game and get a basic API working to build around (pathfinding, movement, skills, etc...).
  2. Get a simple simple grind/farm bot working that uses that API to get the project started for the masses.
  3. Extend and refine the API so it covers as much of the game as possible. Improve the basic bot as needed based on API changes.
  4. Build up and expand the community by offering a design that allows for community development and improvements, with the opportunity of commercial gains.
  5. Maintain the API and simple bot provided, letting the community take over "bigger and better things" using what is provided.
Unlike a lot of other bot development models, the model we use is to not to try and write and maintain a bot that has every feature possible. We do not sell bots based on features, nor promise any specific types of features. Our original goal was to make a working grind/farm bot and provide it along with an API for users to do the things they need. If the community wants better, they will develop it. If what we provide is good enough, they won't. As long as the basic bot we provide works, and the API allows users to do the things they need, everything is working as it should according to our intentions.

This is our model, and how Buddy has found the success it has, and unless something changes in the near future, this is the model Exilebuddy is expected to adhere to.

Downtime Model


One of the biggest areas of confusion a lot of users seem to have, for some reason, is why we have frequent downtime, or lengthy downtime cycles after major client updates.

We always see wild conspiracies posted, and a lot of people saying really negative things, or spreading false rumors.

The answer is very simple: our project is heavily dependent on the entire client as a whole, not just a few parts.

We don't expect anyone to truly understand what this means, but you don't get what Exilebuddy offers with little to no work or effort. Right now, Exilebuddy has just passed being a 4-year investment, and I can't even estimate how many total hours have been spent on this project, but it's exponentially greater than you could ever guess. Yes, it's that much work.

Exilebuddy is not the type of project where we can throw a few hours of work each day or week, and then have what we currently do. What we have, is the result of a significant time and resource investment that we are really proud of, and we do take pride in what we offer, even though sometimes it doesn't look like much to users.

Because of this, and how much we really do care about the project and are invested, we do things our way, and ensure we're comfortable with the state of the project before doing any new releases. We will never jeopardize our project for the sake of appeasing users who simply want us to do things their way, and have us abandon the practices that got us here in the first place.

While we try our best to keep downtime limited, Path of Exile is a really complex game, and more things affect us on a regular basis than other projects. We don't talk about every single issue that affects us, because most people wouldn't understand, and it's just part of the job, but when there's downtime, we need it.

Regardless of what nonsense people spam our forums with, please understand we only take as much downtime as we need, and our aim is to have Exilebuddy up and running as soon as possible after any update. If Path of Exile was a game that only updated once a month in a minor way, Exilebuddy would rarely have any downtime. However, that's not the case, so things are the way they are as a result of the game, not anything we're trying to hide from users.

API

The API typically executes in context of a rendered game frame. This means the more API calls and logic that takes place per each bot tick, the higher the frame overhead is on the game itself. Attempting to execute logic outside of the frame results in inaccurate memory reading, a lot of memory exceptions due to the client design, and overall bad bot performance, so that is why we affect the game performance.

There exists a problematic issue with how the API works with the game. This issue is best illustrated as the following:
  • Memory valid at Tick X
  • Some frame release or coroutine wait that results in a few game ticks (C) going by.
  • Memory is now invalid at Tick X + C, because the client object has been moved or deleted, since we're out of process.
This is an issue that has always been present in Exilebuddy. At the start, it was much more common, but as time went on, we found ways to work around it. However, due to changes in the game and how the API has to work, this issue is now more frequently occurring when users don't plan around it.

The best way to work around the issue, is to cache all object data you need to process before you start using coroutine waits or API functions that cause the current frame to be release (pretty much anything that generates an action in the client). This way, if the object is invalid when it returns, you won't have exceptions thrown, because the data is already pre-stored.

This is just an issue we have to live with for the foreseeable future, due to the way this game works.

The main thing to keep in mind when using the API, is that latency and client performance (FPS) have an effect on logic. If you perform an action, you need to wait for a response from the server so the client updates its state. There is no way to handle the responses directly, as the API does not work with packets or hook events in the client, so some rough waiting has to be done, or frequent polling for the desired state. Sometimes, actions might fail, in which case, you need to handle something not happening, even though it should.

The best way to find API documentation is through the Help/Documentation.chm file, browsing the Exilebuddy assembly in Visual Studio, or looking at the code we provide. The game is always changing, so our API is always changing. There's never been a stable enough point in time to provide a useful help reference that would remain valid for long, so we hope with the release of 3.0, this will change.

Community Content

Our vision with the project is to build up a community that is able to make their development dreams for the game come true, as cheesy as that may sound. While it's not always on public display, I've personally seen people who have done some amazing things with our API, and it always feels good that it was possible because of our model.

Here at Buddy, we've seen the power from focusing on the API project approach time and time again. It's not a model we'll abandon for Exilebuddy, because each expansion and each new project cycle, things get bigger and better than ever before, and soon enough, post 3.0, we'll hopefully be where we want to be with a stable game that isn't changing so frequently.

However, there are always major "resets" that happen. This is due to the way the game changes, and how we have to keep changing to keep up with it. It's unfortunate breaking community code and not being able to fully support what everyone wants, but it's just part of the process, and probably why Path of Exile as a game is still around and only getting more and more popular each year.

We understand the frustrations that come along with developing for Path of Exile, as we would know best since we bear most of the labor. It still provides an interesting opportunity for community developers though, so while things are never ideal in terms of how long community content lasts, we hope things continue to improve as time goes on so we can actually achieve our vision to the fullest.

Community interest and involvement is a key part of our plans. We cannot focus on this at all times though, but after major updates and the game settles down, we'll be able to get back to trying to address the needs of the community where possible.
 
Exilebuddy 3.0 Build Information

Important: Any client executable update means the current Exilebuddy build breaks, and you'll need to wait for the next build to be deployed.


There is a minimal downtime period, usually about an hour or two, as that's how long it takes to check the client for new changes that might affect us. On average, small patches that have little to no client changes should at most take 3-4 hours for a new build. Other patches usually take anywhere between 4-8 hours depending on what changed inside the client itself. If we foresee downtime taking longer than that, we'll make a post to warn users.

Reading the game patch notes is not a good indication of how big or small client changes actually are., so please keep that in mind if you're wondering why some patches take a long time, and other patches that seem like they should take longer don't. It's all about how the client itself changes, and GGG does not post specific client code changes, just general game changes/improvements.

We monitor the game for updates, so we do not post news of each update progress unless something is expected to take longer than normal, or there's going to be additional downtime. Every now and then, there will be an update that is off-hours for us, and since we're not robots, a new build is pushed later than expected.

We try our best to avoid this, but it happens, so we just given some extra downtime compensation for these events. Please be sure to understand our downtime model talked about earlier in this thread as to how we go about handling updates for this game. Client changes affect us in significant ways, and there's no way around that.

Exilebuddy Release/Installer builds are accessible through BuddyAuth via this link: http://updates.buddyauth.com/

The static direct download link for builds are as follows (feel free to bookmark these):
Beta - updates.buddyauth.com/GetNewest?filter=ExilebuddyBETA
Release - updates.buddyauth.com/GetNewest?filter=Exilebuddy

Make sure to right click the file(s) you download and choose "Unblock" before extracting or running. Otherwise, Windows will stop Exilebuddy from correctly running until you move the folder location or unblock the files.

The way these links work is simple, the web server pulls the latest builds from our build servers. This means new builds need to be fully deployed first before you're able to update previous versions.

There is no system to automatically know when new builds are pushed, other than checking the actual link text from the BuddyAuth site.

We try to keep our changelog posts up to date with builds as they are deployed, but the fastest way to usually know if there's an update ready is to launch Exilebuddy.

As a reminder, you'll need to rename both the Exilebuddy executable and the folder its in as a precaution. Otherwise, you'll get an error about needing to rename Exilebuddy to something else and the bot won't launch.

The Exilebuddy installer will help install the necessary pre-requites, but if you have issues, you can install them manually. You can get the latest Visual Studio 2017 runtime form Microsoft: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

In addition, you can get the .Net 4.6.1 installer from Microsoft via this link: https://www.microsoft.com/en-us/download/details.aspx?id=49982

Due to the nature of this 3.0 update, fresh install builds of Exilebuddy are required. Please do not copy old settings, plugins, or other files into the new build directory. While there are some plugins that are unchanged and the settings are compatible, too many people often create new problems for themselves doing this.

The first thing we ask users to do if they run into issues is to download a clean copy of the bot, and run that without any other modifications.

In addition, there will still be numerous Exilebuddy changes over the upcoming weeks and months, so it's important to always start with a clean build. I've seen people use folders from literally years ago that contain files and plugins that have been removed for ages, and they run into issues on new updates for this reason.

The changelog for builds will be covered in the next two posts, but you can click these links to jump to them:
Release Changelog
Beta Changelog
 
Last edited:
Exilebuddy 3.0 Release Changelog
#366 [25 May 18 00:07] (3.2.4.5)
  • Updates for 3.2.4.5
  • PreGameState.IsRealmRestartingMessageShown and PreGameState.RealmRestartingMessage added.

#365 [18 May 18 03:11] (3.2.4.4)
  • Updates for 3.2.4.4

#364 [15 May 18 04:47] (3.2.4.3)
  • Updates for 3.2.4.3
  • Additional minor updates to catch out of memory issues inside the pathfinding library/wrapper.
  • SelectCharacter update to try and handle a new client bug.

#363 [11 May 18 03:32] (3.2.4.2)
  • Updates for 3.2.4.2

#362 [10 May 18 23:33] (3.2.4.1)
  • Updates for 3.2.4.1
  • Skill.Supports added. This returns a list of DatGrantedEffectsPerLevelWrapper of the supports this skill has.
  • Skill.LinkedGems updated to only display the gems that support the skill. Before, all linked support gems were returned. Duplicate supports are not handled yet.
  • Item.IsElderShaped added.
  • Item.MapTier now handles IsElderShaped maps.
  • AtlasUi implemented:
    • GetSextantsAffectingArea added to return sextants affecting an area.
    • ApplyCursorTo will click an area's gui control.
      • It assumes the Atlas has not been zoomed, will not check cursor contents, and will fail if there is a left or right side ui opened. This means users need to close InventoryUi after using currency before being able to apply it.

#361 [08 May 18 07:13] (3.2.3.5)
  • Updates for 3.2.3.5
  • BotManager.Tick will now attempt to stop the bot if 10 unhandled exceptions happen in a row, preventing Tick from finishing. Before, unhandled exceptions could cause the bot to spam exceptions infinitely until the bot was stopped manually.
  • Fixed a display issue where OldCoroutinePlayerMover did not appear under the intended 'Dev' category.
  • Minor AutoLogin gui update
  • InstanceInfo.Sextants added. This exposes sextant data on the Atlas, but is not part of the currently non-existent AtlasUi API.
  • SextantData wrapper class added to hold sextant data. Currently exposed is: 'UsesLeft', 'WorldArea' for the map it was applied directly to, the 'Mod' applied, and a list of unknown int 'Data'.
  • MasterDeviceUi updates:
    • 'ActivateWithOption' added. Users can now select options in master devices based on name or index (scrolling supported).
    • 'Options' added so users can dump option labels. Returned is a 3-tuple of strings from the labels shown, where Item1 = option name, Item2 = option level, Item3 = option cost (not the currency type, since that's an image)
    • 'ActivateResult' enum updated with new error values for the new functionality added (ScrollFailed, OptionNotSelected, OptionNotFound, OptionUnaffordable, OptionUnusable).
    * Configuration Selection GUI updates:
    • GlobalSettings.Configurations has been removed. This manually tracked configuration names, but could become out of sync or lost altogether.
    • The Configuration Selection GUI now checks the "Settings" folder to display configuration names based on folders present.
  • LokiPoe.TerrainData.Recache added to support recaching terrain data.
  • ExilePather.Reload will now recache the current terrain data when the 'force' parameter is true. Before, it did not update the terrain data cache if the area was still the same, even though the pathfinding data could have changed.
  • The instance specific RDPathfinder.MeshChanged event handler has now been made static. This is so user code can more easily know when the mesh is changed due to obstacles being added/removed. Before, user code had to re-assign the event handler for each RDPathfinder instance, making it impractical to even use.
  • Various critical ExilePather bug fixes and minor improvements. Nothing should break, but logging has been improved to help identify if it does.
  • Various AreaVisualizer bug fixes and minor improvements. This plugin still needs a lot of work though.
  • Various improvements to object stuck issues (not walls), but the issue is not 100% solved yet due to the nature of random area generation.
    • Ossuary - triggerable exit door near the entrance
    • Sewers - Undying Blockage
    • Trial of Ascendancy doors
  • Stuck issues relating to walls/doorways in areas like sewers, sarn tileset areas can be reduced with future pathfinding improvements, but are also a player mover issue, so there's no quick or easy fix.
  • Stuck issues relating to other objects like chests or terrain doodads has been identified, but there's no quick or easy solution yet for those problems due to the nature of the problem itself.
  • Please note: https://www.thebuddyforum.com/threads/notice-upcoming-pathfinding-breaking-changes.418884/

#359 [03 May 18 05:11] (3.2.3.4)
  • Updates for 3.2.3.4

#358 [03 May 18 01:17] (3.2.3.3)
  • Updates for 3.2.3.3
  • WorldUi.TakeWaypoint no longer allows new instances for "The Templar Laboratory".
  • DatGrantedEffectsPerLevelWrapper updates (vaal soul info is now correctly exposed)
#357 [26 Apr 18 07:34] (3.2.3.2)
  • Updates for 3.2.3.2

#356 [26 Apr 18 02:13] (3.2.3.1)
  • Updates for 3.2.3.1
  • LifeComponent.ManaPercentTotal now returns 0 when the character has 0 max mana.
  • The unused "MicortransactionsPanel" class has been replaced with "ShopUi", so users know if the new MTX shop window is open.
  • CloseBlockingWindows will now check for and close the ShopUi if it is opened.

#355 [18 Apr 18 04:42] (3.2.2.4)
  • Updates for 3.2.2.4.
  • DatWorldAreaWrapper properties updated to avoid Id conflicts: IsMissionArea, IsDenArea, IsDailyArea, IsRelicArea logic updated.
  • Skill.CanUseEx now checks for Totems' cooldown.

#354 [06 Apr 18 15:03] (3.2.2.3)
  • BREAKING CHANGE: The client's DnD system has changed in 3.2.2.3, and is no longer accessible by the API.
    • LokiPoe.InGameState.IsDoNotDisturbedEnabled has been removed.
    • "Default/EXtensions/Dnd.cs" and "Default/EXtensions/EXtensions.cs" have had the DnD logic commented out for the time being.
    • Internal UI struct layout updated, as the size was wrong. Random memory access exceptions may occur if this update is ignored.

#353 [06 Apr 18 01:36] (3.2.2.3)
  • Updates for 3.2.2.3
  • Coroutines.ThrowNetAt will no longer await FinishCurrentAction internally, since it can invalidate the Monster object's data passed in.
    • Users should await FinishCurrentAction before calling this function themselves to have the same behavior as before.
  • SkillBarHud.SkillUseLogging added to allow users to disable the normal skill use logging if they really want to. Logging from errors is not affected by this.
  • RewardUi.InventoryControls will now check if the UI is opened.
  • NetworkObject.IsLockedDoor now checks for "Metadata/Terrain/Labyrinth/Objects/Puzzle_Parts/Door_Open" (The other two variants already checked were "Door_Closed" and "Door_Counter").
  • Legacy.OldCoroutinePlayerMover example updated with more comments and some design fixes for using a coroutine so devs will be able to make sense of it better.
  • [This set of changelog entries can be ignored by non-devs.]
    • New internal MouseManager system added. Full integration with the API has been completed.
      • A redundant Input.MoveMouse call was removed from internal code. No side effects should result.
      • Several Input.Click functions are now obsolete, as they will be renamed to better represents what the function does.
        • ClickLMB -> PressLMB, ClickRMB -> PressRMB, ClickXB1 -> PressXB1, ClickXB2 -> PressXB2
      • MouseManager static class added. Exposes a low level hook for users to move the mouse to the destination rather than having it instantly warp there.
      • MouseManager.LogEvents can be set to true via code to enable logging of all OnPreMove events.
      • IMouseHandler interface added for the new mouse manager system.
      • All GUI related API functions updated to use the new mouse manager system. No side effects should result in normal code.
      • Internal calls to ClickPosition/ClickCenterOfPosition have been replaced to the new internal versions.
      • Both variants of LokiPoe.ClickPosition are now marked as Obsolete. A replacement will be added at a later time.
      • LokiPoe.ClickCenterOfPosition is now marked as Obsolete. A replacement will be added at a later time.
      • Input.SetMousePos usage will change in the future to the new system (currently changed in our code). For now, here are the places where it's being used in our code.
        • DefaultPlayerMover / OldCoroutinePlayerMover / OldPlayerMover [will already be changing]
        • OldRoutine [will already be changing]
        • Default.EXtensions.CommonTasks.HandleBlockingChestsTask
        • Input.HighlightObject [Logics needs reworking 3.3, but code updated to use MouseManager now]
      • Input.SetMousePos is now marked as obsolete and will be removed in the future (all our code is updated already for this change).
        • Use 'MouseManager.SetMousePos'' outside of the 'OnPreMove' callback to move the mouse (generates OnPreMove events).
        • Use 'Input.SetMousePosRaw' inside of the 'OnPreMove' callback to move the mouse (won't generate OnPreMove events).

#352 [01 Apr 18 17:20] (3.2.2.1)
  • Updates for 3.2.2.1
  • Actor.IsSpectating added.
  • Another performance update with Dat based stuff. The client stall on Start should be much less due to multiple Dat caches being built in the same frame (more improvements to that will come later).
  • MapBot/QuestBot updated to call MoverManager Start/Tick/Stop.
  • Added Legacy.OldCoroutinePlayerMover as an example of using Coroutines in the new system. The code isn't updated to actually use coroutines though.
  • OldRoutine will no longer try to use totem supported auras in place of normal auras.
  • SelectCharacterState.SelectCharacter will now use keyboard input to choose "[All Leagues]" when scrolling is required to select it, since ComboBoxWrapper doesn't support mouse scrolling.
  • LocalData.IsLeagueMovementBlocked added. This can be used to know if movement is blocked due to a league not having started yet.

#350 [28 Mar 18 05:59] (3.2.1.6)
  • Updates for 3.2.1.6
  • Dat loading on startup has been slightly improved to load different data across multiple frames rather than all at once.
  • Dat loading logic is now correct in terms of accessing data in/out of a frame. Before, it would incorrectly access most data out of frame.
  • Dat loading on startup now logs if the time being shown was in a frame (AcquireFrame) or outside a frame (NoFrame)
  • PlayerComponent.HasMenagerie added. Player now exposes HasMenagerie and HasHideout.
  • Bestiary.BuildCache added to build the Bestiary data cache. This needs to be called once before accessing any Bestiary data (such as captured monsters, known recipes, if a monster is capturable, etc... ideally in Start).
    • NOTE: Public Bestiary API internally calls BuildCache, but it's recommended users call it themselves to control when the data gets loaded. Otherwise, noticeable client stalls could happen in combat vs when you start the bot.
  • The type BestiaryCapturedMonsterMod was added to wrap a captured monsters mods.
  • BestiaryCapturedMonster.Mods added to hold the monster's mods.
  • Bestiary.UnlockedRecipes added to expose unlocked recipes.
  • DatModsWrapper.ModId added for the lookup required for Bestiary data.
  • BestiaryCapturedMonster.FullName added to expose the full name of the monster (for magic/rares)
  • BestiaryCapturedMonster.Word1, Word2, Word3 added to expose the full name parts for the monster.
  • Legacy.PythonExample now registers a default hotkey to run code: ALT + SHIFT + F
  • CloseBlockingWindows now checks for ProphecyPopupUi, NewBeastRecipeUi, and BeastCapturedUi.
  • BotManager.CurrentBot is now obsolete. Use BotManager.Current instead.
  • RoutineManager.CurrentRoutine is now obsolete. Use RoutineManager.Current instead.
  • Utility.BroadcastMessage/BroadcastLogicRequest now process MoverManager.
  • Monolith.ChildNetworkObjectId added.
  • Monolith.ChildNetworkObject updated as it was broken for 3.2+.
  • Monster.IsImprisoned added to know when a monster is trapped by an Essence Monolith.
  • LokiPoe.ObjectManager.GetObjectsByPosition added, as the only way to link a Monolith and Monster now is by exact position.
  • New player mover system integrated, but not enabled yet:
    • https://www.thebuddyforum.com/threads/notice-upcoming-playermover-breaking-changes.418088/
    • "Settings" -> "Movers" -> "-> Manager <-" can be used to enable/disable the new system, and switch between player movers.
    • The DefaultPlayerMover class is now marked as obsolete as it will be removed in the future.
    • PlayerMover is now marked as obsolete as it will be removed in the future.
    • IMover interface added. It's like IRoutine with the addition of the MoveTowards coroutine like the old IPlayerMover.
    • MoverManager added - it mirrors RoutineManager, except it's for the new IMover interface.
    • Gui/Settings updated to manage the current IMover like how the current IRoutine is handled.
    • Added Legacy.OldPlayerMover, which is simply the DefaultPlayerMover converted to IMover
    • Additional skill based IMover implementations will be added later after the new system is switched to.
    • PlayerMover.UseMoverManager bool property added to allow users to use the new MoverManager class without breaking all their existing code. When set to 'true', using Message/MoveTowards will forward the calls to MoveManager.

#346 [16 Mar 18 09:35] (3.2.2.2)
  • Updates for 3.2.1.2

#345 [16 Mar 18 05:37] (3.2.1.1)
  • Updates for 3.2.1.1
  • Added Coroutines.ThrowNetAt, which is a coroutine like InteractWith to throw a net at an alive monster. It will attempt to highlight the target, verify the target was highlighted, then press the throw net key. Users must handle making sure the monster is alive, a capturable beast, is not enraged, etc...
  • Various updates to try and handle Aspect skills:
    • Skill.IsManaReserving and Skill.IsConsideredAura updated
    • Actor.HasAspectBirdBuff, HasAspectCatBuff, HasAspectCrabBuff, HasAspectSpiderBuff added.
    • Actor.HasConsideredAuraFrom updated.
    • Skill names added to OldRoutine's auraNames list.
  • LifeComponent updates to try and fix an issue where usable corpse detection broke in 3.2+.
  • Changes to DefaultPlayerMover to support some experimental functionality (disabled by default).
  • [QuestBot]
    • Added new option "Enter corrupted side areas" to QuestBot -> Misc. This option is enabled by default.
    • Added new option "Talk to all quest givers in town" to QuestBot -> Misc. This option is disabled by default.
    • Did a small tweak in Autoflask for quicksilver flasks. If range is set to 0 bot will omit all checks and just use quicksilver when ready (for Pathfinders).
    • Made Chaos Recipe stashing more fool-proof. Previously stashing logic completely relied that cached stash data is valid. Now it always verifies before stashing.
    • Disabled Abyss logic inside Depths areas.

#344 [09 Mar 18 04:56] (3.2.0.9)
  • Updates for 3.2.0.9

#343 [08 Mar 18 06:43] (3.2.0.8)
  • Updates for 3.2.0.8

#342 [06 Mar 18 17:16] (3.1.0.7)
  • Updates for 3.2.0.1 - 3.2.0.7
  • [QuestBot]
    • Added support for "Vilenta's Vengeance" quest in Act 10.
  • [MapBot]
    • Now bot will correctly take sacrifice fragments from Fragment stash tab.
  • [EXtensions]
    • Renamed Inventories.FastMoveFromCurrencyTab to FastMoveFromPremiumStashTab. All users must update their code where its used.
  • Added InGameState.IsNewHelpPageAvailablePopupShowing to know when the other help popup is showing.
  • Added the InGameState.DismissHelpPopup function.
  • InstanceInfo.MinimapIcons added to expose icons on the minimap.
  • ActionKeys updated with missing keys: open_atlas_screen, open_cosmetics_inventory, open_guidebook_panel, open_mtx_stash, open_pantheon_panel, throw_net.
  • The character list in AutoLogin will now display names in alphabetical order.
  • ChallengesUi updates for some Bestiary tab (not data) processing.
  • DatWorldAreaWrapper.IsMenagerieArea added. This is considered a "combat area".
  • WorldUi.GoToMenagerie added.
  • ContextMenu.LeaveCurrentParty added.
  • ContextMenu.VisitMenagerie added.
  • Skill.CurrentlyRequiresPercentPower added, as an aurafied curse would return false with RequiresPercentPower.
  • Various DatWorldAreaWrapper id checking updates to account for inconsistent naming in the game.
  • Skill.CastTime updated to handle a stat warcries use.
  • NotificationHud revamps:
    • NotificationType updated to now include: Guild, Info, SoloPvP, PartyPvP
    • NotificationData added to store data for the different notification events (AccountName, CharacterName, CharacterLevel, CharacterArea, Information, GuildName)
    • ProcessNotificationEx delegate added to represent the new user handler. It takes a NotificationData and a NotificationType, and should return a bool if the notification should be accepted or dismissed (like before).
    • HandleNotificationResult.NoHandler added for a null check on the user handler when calling HandleNotificationHelper/HandleNotificationHelperEx.
    • HandleNotificationEx added to handle more notifications and expose more data than before.
    • HandleNotification is now marked as obsolete, but will not be removed until 3.2+.
    • Various caching improvements made to strings that come from LookupClientString.
  • LoginState.UnlockAccountUi added.
    • Cancel function added to click the button.
    • ResendEmail function added to click the button.
    • Unlock function added to click the button.
  • LoginState.UnlockAccountUiResult enum added
  • LoginState.IsEnterUnlockCodeDialogVisible is now marked as Obsolete, use LoginState.UnlockAccountUi.IsOpened instead

#338 [16 Feb 18 05:15] (3.1.4.2)
  • Updates for 3.1.4.2

#337 [15 Feb 18 21:41] (3.1.4.1)
  • Updates for 3.1.4.1
  • ModAffix.TierString is now exposed.
  • AutoLogin plugin update to handle a message box on the character selection screen.

#336 [08 Feb 18 17:48] (3.1.3.4)
  • Configuration.SaveAll will now log the path of the JsonSettings it's processing if an exception occurs.
  • InventoryControlWrapper ApplyCursorTo/ApplyCursorAt now support using quality currency on equipped items.
  • Updates for 3.1.3.4 (Steam)

#334 [31 Jan 18 04:06] (3.1.3.2)
  • Updates for 3.1.3.2 (non-Steam)

#333 [26 Jan 18 04:52] (3.1.3.1)
  • Updates for 3.1.3.1
  • StashUi.FragmentTab added. It implements an API similarly to EssenceTab/CurrencyTab.
  • "Cross-bot Settings" does not utilize the FragmentTab properly yet. Please wait to use the new Fragment tab until we determine if logic will support it.
  • StashTabInfo.IsPremiumFragment added
  • StashTabInfo.IsPremiumSpecial now checks IsPremiumFragment
  • InventoryTabType.Todo9 -> InventoryTabType.Fragment
  • InventoryControlWrapper.HasFragmentTabOverride added
  • InventoryControlWrapper.HasCustomTabOverride updated to check HasFragmentTabOverride
  • InventoryControlWrapper.CustomTabMetadata added to expose the manually set metadata for the control
  • Various DumpTab updates for dev debugging

#332 [19 Jan 18 06:15] (3.1.2.2)
  • Updates for 3.1.2.2
  • Updates for 3.1.2.1
  • [ChaosRecipe]
    • New plugin added.
  • [Cross-bot Settings]
    • Users can now select currency exchange act in gui (including random act).
  • [Abyss]
    • Improved abyss crack following logic. Now bot movement should be way smoother.
  • Added EvaluationType.ExcludeFromChaosRecipe / MyEvaluationType.ExcludeFromChaosRecipe (ItemFilterEditor)
  • Added MyRarity.Prophecy (ItemFilterEditor) as it was forgotten a while ago.
  • Prophecy rarity support added to ItemFilterEditor.
  • ConfigurableItemEvaluator updated with a few default disabled rules for the ExcludeFromChaosRecipe category. Users must recreate their item filters or manually add them though.
  • Fixed a bug in DefaultItemEvaluator where it always returned true for Quest items without checking for Pickup.
  • Item.RequiredStr/Dex/Int now take into account more attribute modifying stats on items. This value is approximate though, and will not 100% match the item always due to rounding.
  • Item.GetStatRequirements updated to not return 0 for skillgems socketed in a Tabula
  • The HeraldManaReservationOverride45Pct stat is now processed by Skill cost logic.
  • IsAbyssArea updated with more area ids.

#330 [12 Jan 18 21:45] (3.1.1.7)
  • AvalonEdit updated from 5.0.3 to 5.0.4
  • DotNetCompilerPlatform updated from 1.0.5 to 1.0.8
  • Microsoft.Net.Compilers updated from 2.3.1 to 2.6.1
  • The package "MahApps.Metro.IconPacks" was added.
  • Item.ManaRecoveredPerSecond / Item.HealthRecoveredPerSecond fixed.
  • AtlasAreas updated to only refer to the areas that have the "MapWorlds" id. Before, it was using the "MapAtlas" id which is areas from last seasons maps.
  • Added a new EventHandler, InGameState.OnPreLevelSkillGem
    • This is invoked when HandlePendingLevelUps is called, and the user evaluator function returns true to signal a skillgem should be leveled.
  • In preparation of upcoming routine changes, the first wave of significant updates to exposed game data have been made (relating to skills/gems). More details will come later as it's finished.
  • [Cross-bot settings]
    • Now bot will use Navali to exchange divination cards in hideout if she is present there.
    • Now currency exchange will be performed in Act 5 (fastest area loading speed).
    • Fixed an issue with bot trying to sell/stash pantheon souls.
  • [MapBot]
    • Now TrackMob and KillBoss tasks will abandon their current target if it was ignored by Chicken plugin.

#327 [03 Jan 18 04:08] (3.1.1.7)
  • Updates for 3.1.1.7
  • IsAbyssArea updated to handle the second area variant.
  • DisplayNoteUi updates for 3.1+ changes
  • A more modern pathfinding library, RecastDetourNet, has been added in preparations of upcoming changes later this year. This should not break anything, since it's only being included alongside EB. More info will be posted on the forums soon about our 2018 roadmap.

#326 [25 Dec 17 15:45] (3.1.1.6)
  • Item.MapTier updated to handle the shaped maps that drop 3.1+.
  • [MapBot]
    • Added "Atlas" category to General Settings. Refer to the MapBot guide for more information.
    • Added 4 new affixes introduced in 3.1 to Affix Settings.
    • Various fixes and adjustments for red tier maps.
  • [QuestBot]
    • Fixed stuck issue near Doedre in Act 9.
  • [AutoFlask]
    • Added support for new unique flask "Coralito's Signature".

#325 [22 Dec 17 15:02] (3.1.1.6)
  • Item.Name updated to force display "Shaped" for the shaped maps that drop 3.1+.

#324 [21 Dec 17 15:14] (3.1.1.6)
  • Updates for 3.1.1.6

#323 [21 Dec 17 02:12] (3.1.1.5)
  • Updates for 3.1.1.5
  • Updates for 3.1.1.4
  • ElderInfluencedAreas/ShaperInfluencedAreas updated to be correct now.
  • Minor Default content updates.
  • SocialUi updates to fix gui changes.

#322 [18 Dec 17 11:01]
  • Updates for 3.1.1.3
  • ItemFilterEditor updated to support filtering by IsElderItem and IsShaperItem.
  • In addition an option has been selected to choose Elder or Shaper if you want either, as the single options will restrict specifically to that type.
  • A new default Elder/Shaper item pickup filter has been added, but it will only appear on new item filters created after this update.

#321 [17 Dec 17 20:34]
  • Updates for 3.1.0+!

#319 [08 Dec 17 07:20] (3.0.3.3)
  • Updates for 3.0.3.3.
  • Update to NpcDialogUi.HasConversed to detect actively selected text.

#318 [21 Nov 17 23:33] (3.0.3.2)
  • Updates for 3.0.3.2.

#317 [16 Nov 17 22:47] (3.0.3.1)
  • Updates for 3.0.3.1.

#316 [08 Nov 17 00:05] (3.0.2.10)
  • Updates for 3.0.2.6.
  • OldRoutine will now cast Bone Offering.

#315 [31 Oct 17 03:19] (3.0.2.6)
  • Updates for 3.0.2.6.
  • ChestComponent/Chest.Quality added.

#314 [19 Oct 17 03:20] (3.0.2.3)
  • Updates for 3.0.2.3.

#313 [12 Oct 17 23:50] (3.0.2.2)
  • Updates for a Steam specific patch.
  • AscendencyTrialData updated from a change in 3.0.2.

#312 [12 Oct 17 15:17] (3.0.2.2)
  • Updates for 3.0.2.2.
  • Updates for 3.0.2.1.
  • CloseBlockingWindows now closes the tutorial window.
  • InGameState.TutorialUi placeholder API added. It won't do anything except expose if the control is opened.

#310 [10 Oct 17 02:19] (3.0.1.12)
  • Updates for 3.0.1.12.
  • The LoginThread now delays 1s between key logins to try and avoid hammering the auth server with login attempts for longer key lists.
  • [Autoflask]
    • Added a separate %HP threshold for Instant Life flasks. Due to this change current threshold will be reset and must be re-configured.
  • [Cross-bot Settings]
    • Added "Auto dnd" option to Misc.
    • Added "Inventory currency" settings to Misc. Users can configure where bot keeps currency (Wisdom and Portal scrolls by default) in inventory, add new currency to be persisted in inventory, set bot to automatically restock currency.
    • ItemsSoldEvent now fire with 2 arguments. Sold items as first argument and Gained items as second.
  • [QuestBot]
    • Threshold jewel rewards for "Death to Purity" quest are now correctly displayed.
    • "Optional Quests" and "Rewards" are now grouped by act instead of long lists.
    • Untargetable Fireflies should no longer be tracked for interaction.
  • [MapBot]
    • Now MapBot flags all reroll currency as available every time Start is pressed in addition to checking that upon stashing.

#308 [27 Sep 17 01:26] (3.0.1.10)
  • Legacy AutoFlask has been replaced with a new Default AutoFlask.
  • OldRoutine had a small update to work with an AutoFlask hook.
  • Minor MapBot updates.

#305 [20 Sep 17 01:19] (3.0.1.10)
  • Updates for 3.0.1.10.
  • Various minor Default content updates.

#304 [15 Sep 17 02:53] (3.0.1.9)
  • Updates for 3.0.1.9.
  • Added ChatPanel.Commands.destroy for the "/destroy" message.
  • Fixed a bug that prevented GCP recipe logic from selling 20 quality gems.
  • Fixed a bug that caused MapBot to constantly switch to a first tab with currency instead of staying on the current.

#303 [06 Sep 17 03:11] (3.0.1.8)
  • Updates for 3.0.1.8.
  • InstanceInfo.PartyItemAllocationMode updated.
  • BotManager.Stop will now log the StopReason if one exists, so each bot base does not have to do so individually.
  • Labyrinth room ids updated for 3.0 changes.
  • Typo fixed: LabyrinthMapSelectorUi.SelecteDifficulty -> LabyrinthMapSelectorUi.SelectedDifficulty
  • The LabyrinthRoom.Override (of type LabyrinthOverride) has been replaced with LabyrinthRoom.Overrides, which is now a list of LabyrinthOverride objects to represent a 3.0 change with lab data.

#302 [29 Aug 17 05:45] (3.0.1.7)
  • Updates for 3.0.1.7.

#301 [28 Aug 17 03:37] (3.0.1.5)
  • Added "Chance to Scouring" currency exchange to Vendoring in Cross-bot Settings.
  • Added "Loot all visible items" option to Misc in Cross-bot Settings.
  • Added Harbinger League currency to individual currency stashing options in Cross-bot Settings .
  • Improved "full tab check" system. For premium stash tabs bot will mark individual currency controls as full instead of whole tab.
  • Now bot will do 5 logout attempts instead of 1 if resurrection failed.
  • Now bot will logout instead of stopping when failed to interact with portal to town more than 5 times.
  • Now bot will prioritize Act 9 over Act 4 for divination card exchange.
  • Now stuck detection will not trigger when bot is breaking blocking clutter.
  • Fixed an issue when bot tried to open locked boss-chest in Reef Map.
  • Fixed an issue with track mob logic sticking to "Volatile Core" bomb.
  • Fixed an issue with local transition detection after death in Descent (Act 9).
  • Added 3 new map affixes to Affix settings in MapBot (Haunting, Lunar, Solar).
  • Parameter for "items_sold_event" has been changed to List<CachedItem> to avoid type cast exception when only one item is sold.
    • All users of that event must update their code accordingly.

#299 [Next Version] (3.0.1.5)
  • Updates for 3.0.1.5.
  • Microsoft.Net.Compilers updated from 2.3.0 -> 2.3.1.
  • Re-updated the error message shown when Windows blocks extracted Exilebuddy content to hopefully inform users better.
  • The ClientNPC component has been removed from the game, so it was removed from the API. This should not affect any user code.
  • HasIconOverHead has been moved from the ClientNPC component into the NPC component, where it now resides. This should not affect any user code.
  • StashUi.CurrencyTab API updated for the new stash tab.
  • InventoryControlWrapper.OpenDisplayNote now correctly returns Unsupported for Divination tabs, as they are not supported.

#298 [21 Aug 17 07:35] (3.0.1.4)
  • Updates for 3.0.1.4.
  • Minor fixes
  • Updated the error message shown when Windows blocks extracted Exilebuddy content to hopefully inform users better.
  • NullRoutine will now stop Exilebuddy from running if it's started while being the active routine.

#297 [19 Aug 17 23:02] (3.0.1.3)
  • Fixed an issue with QuestBot endlessly trying to take a reward for "An End to Hunger" quest.
  • Fixed an issue with Chicken On Sight not leaving a map permanently.
  • Fixed an issue with Mesa bossroom entering.
  • Now bot should properly initiate Racecourse boss fight.
  • Improved track mob logic. Now its less likely to stick to invincible mobs.
  • Updated the "Select Process" text to help users with the 64-bit client issues.
    • "A 32-bit process is required. If you do not see a process, please change the game to use DirectX 9/9Ex."
  • Fixed a bug where PlayerComponent.Level was wrong for pre-3.0 characters.
  • Initial ZH-CN localization added.
    • Our localization support system needs a lot of work still.
  • Voidspawn of Abaxoth is no longer ignored in OldRoutine as it was causing new issues compared to before.

#293 [18 Aug 17 02:48] (3.0.1.2)
  • Updates for 3.0.1.2
  • Added Act 9 and Act 10 to QuestBot.
  • Fixed an error occurring while full tab checking a divination tab.
  • OldRoutine now ignores DoedreStonePillars for QB to work correctly in an area.
  • WorldItem.HasVisibleHighlightLabel is no longer static, and should work correctly.
  • DatWorldAreaWrapper.IsOverworldArea updated for Act 10 areas.
  • Attempted fix to try and reduce issues with Exilebuddy loading when Windows blocks the path the zip was extracted to.
  • A previous botbase behavior from 2.6 has been readded in an updated form.
    • The 'hook_ingame' logic request has been added to the 'IsInGame' logic block in our botbase's main coroutine function.
    • This hook (in 2.6 it was incorrectly implemented as an event) allows user code to execute coroutine logic before our botbase coroutine logic.
    • Most people do not need to care about this change, but it was a design flaw correction.

#292 [16 Aug 17 01:39] (3.0.0.7)
  • Updates for 3.0.0!
 
Last edited:
Exilebuddy 3.0 Beta Changelog
#1728 [24 May 18 23:48] (3.2.4.5)
  • Updates for 3.2.4.5
  • PreGameState.IsRealmRestartingMessageShown and PreGameState.RealmRestartingMessage added.

#1727 [18 May 18 02:50] (3.2.4.4)
  • Updates for 3.2.4.3

#1726 [15 May 18 04:28] (3.2.4.3)
  • SelectCharacter update to try and handle a new client bug.

#1725 [15 May 18 03:12] (3.2.4.3)
  • Updates for 3.2.4.3
  • Additional minor updates to catch out of memory issues inside the pathfinding library/wrapper.

#1723 [11 May 18 03:09] (3.2.4.2)
  • Updates for 3.2.4.2

#1722 [10 May 18 23:04] (3.2.4.1)
  • Updates for 3.2.4.1
  • Skill.Supports added. This returns a list of DatGrantedEffectsPerLevelWrapper of the supports this skill has.
  • Skill.LinkedGems updated to only display the gems that support the skill. Before, all linked support gems were returned. Duplicate supports are not handled yet.
  • Item.IsElderShaped added.
  • Item.MapTier now handles IsElderShaped maps.
  • AtlasUi implemented:
    • GetSextantsAffectingArea added to return sextants affecting an area.
    • ApplyCursorTo will click an area's gui control.
      • It assumes the Atlas has not been zoomed, will not check cursor contents, and will fail if there is a left or right side ui opened. This means users need to close InventoryUi after using currency before being able to apply it.

#1720 [08 May 18 06:55] (3.2.3.5)
  • Updates for 3.2.3.5
  • BotManager.Tick will now attempt to stop the bot if 10 unhandled exceptions happen in a row, preventing Tick from finishing. Before, unhandled exceptions could cause the bot to spam exceptions infinitely until the bot was stopped manually.
  • Fixed a display issue where OldCoroutinePlayerMover did not appear under the intended 'Dev' category.
  • Minor AutoLogin gui update
  • InstanceInfo.Sextants added. This exposes sextant data on the Atlas, but is not part of the currently non-existent AtlasUi API.
  • SextantData wrapper class added to hold sextant data. Currently exposed is: 'UsesLeft', 'WorldArea' for the map it was applied directly to, the 'Mod' applied, and a list of unknown int 'Data'.
  • MasterDeviceUi updates:
    • 'ActivateWithOption' added. Users can now select options in master devices based on name or index (scrolling supported).
    • 'Options' added so users can dump option labels. Returned is a 3-tuple of strings from the labels shown, where Item1 = option name, Item2 = option level, Item3 = option cost (not the currency type, since that's an image)
    • 'ActivateResult' enum updated with new error values for the new functionality added (ScrollFailed, OptionNotSelected, OptionNotFound, OptionUnaffordable, OptionUnusable).
    * Configuration Selection GUI updates:
    • GlobalSettings.Configurations has been removed. This manually tracked configuration names, but could become out of sync or lost altogether.
    • The Configuration Selection GUI now checks the "Settings" folder to display configuration names based on folders present.
  • LokiPoe.TerrainData.Recache added to support recaching terrain data.
  • ExilePather.Reload will now recache the current terrain data when the 'force' parameter is true. Before, it did not update the terrain data cache if the area was still the same, even though the pathfinding data could have changed.
  • The instance specific RDPathfinder.MeshChanged event handler has now been made static. This is so user code can more easily know when the mesh is changed due to obstacles being added/removed. Before, user code had to re-assign the event handler for each RDPathfinder instance, making it impractical to even use.
  • Various critical ExilePather bug fixes and minor improvements. Nothing should break, but logging has been improved to help identify if it does.
  • Various AreaVisualizer bug fixes and minor improvements. This plugin still needs a lot of work though.
  • Various improvements to object stuck issues (not walls), but the issue is not 100% solved yet due to the nature of random area generation.
    • Ossuary - triggerable exit door near the entrance
    • Sewers - Undying Blockage
    • Trial of Ascendancy doors
  • Stuck issues relating to walls/doorways in areas like sewers, sarn tileset areas can be reduced with future pathfinding improvements, but are also a player mover issue, so there's no quick or easy fix.
  • Stuck issues relating to other objects like chests or terrain doodads has been identified, but there's no quick or easy solution yet for those problems due to the nature of the problem itself.
  • Please note: https://www.thebuddyforum.com/threads/notice-upcoming-pathfinding-breaking-changes.418884/
#1714 [03 May 18 04:47] (3.2.3.4)
  • Updates for 3.2.3.4

#1713 [03 May 18 00:54] (3.2.3.3)
  • Updates for 3.2.3.3
  • WorldUi.TakeWaypoint no longer allows new instances for "The Templar Laboratory".
  • DatGrantedEffectsPerLevelWrapper updates (vaal soul info is now correctly exposed)

#1711 [26 Apr 18 07:13] (3.2.3.2)
  • Updates for 3.2.3.2

#1710 [26 Apr 18 01:49] (3.2.3.1)
  • Updates for 3.2.3.1
  • LifeComponent.ManaPercentTotal now returns 0 when the character has 0 max mana.
  • The unused "MicortransactionsPanel" class has been replaced with "ShopUi", so users know if the new MTX shop window is open.
  • CloseBlockingWindows will now check for and close the ShopUi if it is opened.

#1709 [18 Apr 18 03:54] (3.2.2.4)
  • Updates for 3.2.2.4.
  • DatWorldAreaWrapper properties updated to avoid Id conflicts: IsMissionArea, IsDenArea, IsDailyArea, IsRelicArea logic updated.
  • Skill.CanUseEx now checks for Totems' cooldown.

#1707 [06 Apr 18 14:40] (3.2.2.3)
  • BREAKING CHANGE: The client's DnD system has changed in 3.2.2.3, and is no longer accessible by the API.
    • LokiPoe.InGameState.IsDoNotDisturbedEnabled has been removed.
    • "Default/EXtensions/Dnd.cs" and "Default/EXtensions/EXtensions.cs" have had the DnD logic commented out for the time being.
    • Internal UI struct layout updated, as the size was wrong. Random memory access exceptions may occur if this update is ignored.

#1706 [06 Apr 18 00:59] (3.2.2.3)
  • Updates for 3.2.2.3
  • Coroutines.ThrowNetAt will no longer await FinishCurrentAction internally, since it can invalidate the Monster object's data passed in.
    • Users should await FinishCurrentAction before calling this function themselves to have the same behavior as before.
  • SkillBarHud.SkillUseLogging added to allow users to disable the normal skill use logging if they really want to. Logging from errors is not affected by this.
  • RewardUi.InventoryControls will now check if the UI is opened.
  • NetworkObject.IsLockedDoor now checks for "Metadata/Terrain/Labyrinth/Objects/Puzzle_Parts/Door_Open" (The other two variants already checked were "Door_Closed" and "Door_Counter").
  • Legacy.OldCoroutinePlayerMover example updated with more comments and some design fixes for using a coroutine so devs will be able to make sense of it better.
  • [This set of changelog entries can be ignored by non-devs.]
    • New internal MouseManager system added. Full integration with the API has been completed.
      • A redundant Input.MoveMouse call was removed from internal code. No side effects should result.
      • Several Input.Click functions are now obsolete, as they will be renamed to better represents what the function does.
        • ClickLMB -> PressLMB, ClickRMB -> PressRMB, ClickXB1 -> PressXB1, ClickXB2 -> PressXB2
      • MouseManager static class added. Exposes a low level hook for users to move the mouse to the destination rather than having it instantly warp there.
      • MouseManager.LogEvents can be set to true via code to enable logging of all OnPreMove events.
      • IMouseHandler interface added for the new mouse manager system.
      • All GUI related API functions updated to use the new mouse manager system. No side effects should result in normal code.
      • Internal calls to ClickPosition/ClickCenterOfPosition have been replaced to the new internal versions.
      • Both variants of LokiPoe.ClickPosition are now marked as Obsolete. A replacement will be added at a later time.
      • LokiPoe.ClickCenterOfPosition is now marked as Obsolete. A replacement will be added at a later time.
      • Input.SetMousePos usage will change in the future to the new system (currently changed in our code). For now, here are the places where it's being used in our code.
        • DefaultPlayerMover / OldCoroutinePlayerMover / OldPlayerMover [will already be changing]
        • OldRoutine [will already be changing]
        • Default.EXtensions.CommonTasks.HandleBlockingChestsTask
        • Input.HighlightObject [Logics needs reworking 3.3, but code updated to use MouseManager now]
      • Input.SetMousePos is now marked as obsolete and will be removed in the future (all our code is updated already for this change).
        • Use 'MouseManager.SetMousePos'' outside of the 'OnPreMove' callback to move the mouse (generates OnPreMove events).
        • Use 'Input.SetMousePosRaw' inside of the 'OnPreMove' callback to move the mouse (won't generate OnPreMove events).

#1701 [01 Apr 18 17:04] (3.2.2.1)
  • Updates for 3.2.2.1
  • Actor.IsSpectating added.
  • Another performance update with Dat based stuff. The client stall on Start should be much less due to multiple Dat caches being built in the same frame (more improvements to that will come later).
  • MapBot/QuestBot updated to call MoverManager Start/Tick/Stop.
  • Added Legacy.OldCoroutinePlayerMover as an example of using Coroutines in the new system. The code isn't updated to actually use coroutines though.
  • OldRoutine will no longer try to use totem supported auras in place of normal auras.
  • SelectCharacterState.SelectCharacter will now use keyboard input to choose "[All Leagues]" when scrolling is required to select it, since ComboBoxWrapper doesn't support mouse scrolling.
  • LocalData.IsLeagueMovementBlocked added. This can be used to know if movement is blocked due to a league not having started yet.

#1697 [28 Mar 18 05:41] (3.2.1.6)
  • Updates for 3.2.1.6
  • Dat loading on startup has been slightly improved to load different data across multiple frames rather than all at once.
  • Dat loading logic is now correct in terms of accessing data in/out of a frame. Before, it would incorrectly access most data out of frame.
  • Dat loading on startup now logs if the time being shown was in a frame (AcquireFrame) or outside a frame (NoFrame)
  • PlayerComponent.HasMenagerie added. Player now exposes HasMenagerie and HasHideout.
  • Bestiary.BuildCache added to build the Bestiary data cache. This needs to be called once before accessing any Bestiary data (such as captured monsters, known recipes, if a monster is capturable, etc... ideally in Start).
    • NOTE: Public Bestiary API internally calls BuildCache, but it's recommended users call it themselves to control when the data gets loaded. Otherwise, noticeable client stalls could happen in combat vs when you start the bot.
  • The type BestiaryCapturedMonsterMod was added to wrap a captured monsters mods.
  • BestiaryCapturedMonster.Mods added to hold the monster's mods.
  • Bestiary.UnlockedRecipes added to expose unlocked recipes.
  • DatModsWrapper.ModId added for the lookup required for Bestiary data.
  • BestiaryCapturedMonster.FullName added to expose the full name of the monster (for magic/rares)
  • BestiaryCapturedMonster.Word1, Word2, Word3 added to expose the full name parts for the monster.
  • Legacy.PythonExample now registers a default hotkey to run code: ALT + SHIFT + F
  • CloseBlockingWindows now checks for ProphecyPopupUi, NewBeastRecipeUi, and BeastCapturedUi.
  • BotManager.CurrentBot is now obsolete. Use BotManager.Current instead.
  • RoutineManager.CurrentRoutine is now obsolete. Use RoutineManager.Current instead.
  • Utility.BroadcastMessage/BroadcastLogicRequest now process MoverManager.
  • Monolith.ChildNetworkObjectId added.
  • Monolith.ChildNetworkObject updated as it was broken for 3.2+.
  • Monster.IsImprisoned added to know when a monster is trapped by an Essence Monolith.
  • LokiPoe.ObjectManager.GetObjectsByPosition added, as the only way to link a Monolith and Monster now is by exact position.
  • New player mover system integrated, but not enabled yet:
    • https://www.thebuddyforum.com/threads/notice-upcoming-playermover-breaking-changes.418088/
    • "Settings" -> "Movers" -> "-> Manager <-" can be used to enable/disable the new system, and switch between player movers.
    • The DefaultPlayerMover class is now marked as obsolete as it will be removed in the future.
    • PlayerMover is now marked as obsolete as it will be removed in the future.
    • IMover interface added. It's like IRoutine with the addition of the MoveTowards coroutine like the old IPlayerMover.
    • MoverManager added - it mirrors RoutineManager, except it's for the new IMover interface.
    • Gui/Settings updated to manage the current IMover like how the current IRoutine is handled.
    • Added Legacy.OldPlayerMover, which is simply the DefaultPlayerMover converted to IMover
    • Additional skill based IMover implementations will be added later after the new system is switched to.
    • PlayerMover.UseMoverManager bool property added to allow users to use the new MoverManager class without breaking all their existing code. When set to 'true', using Message/MoveTowards will forward the calls to MoveManager.

#1694 [23 Mar 18 02:00] (3.2.1.5)
  • Updates for 3.2.1.5
  • Updates for 3.2.1.4
  • ProphecyPopupUi added to know when that UI is showing. The Dismiss function can be used to dismiss it.
  • BeastCapturedUi added to know when that UI is showing.
  • NewBeastRecipeUi added to know when that UI is showing. The Dismiss function can be used to dismiss all pending UIs.
  • Monster class updates for Bestiary:
    • Properties added: HasBestiaryEnragedAura, HasBestiaryTrappedAura, HasBestiaryCapturedAura, HasBestiaryDisappearingAura. Exposes the various auras on monsters during the capture process.
    • BestiaryCapturableMonsterWrapper returns the DatBestiaryCapturableMonstersWrapper (or null) associated with a capturable monster.
    • IsSpeciesCapturableForBestiary returns if the monster species is capturable or not (but does not check for bloodlines mods that were recently blacklisted).
    • HasSpeciesBeenNettedAlready returns if the monster species has been netted already or not (returns true for non-capturable monsters).
  • Dat.BestiaryCapturableMonsters updated with the new data format.
  • DumpTab can now dump BestiaryCapturableMonsters.
  • DumpTab can now debug ProphecyPopupUi, BeastCapturedUi, NewBeastRecipeUi.
  • BestiaryCapturedMonster wrapper class added to hold info about captured monsters. Currently exposes: Id, Metadata, Name, Level, Rarity
  • InstanceInfo.IsBestiaryActive added to know if Bestiary is active in the current league.
  • InstanceInfo.IsBestiaryCapturedMonstersDataLoaded added to know if Bestiary data is currently loaded (have to open Bestiary tab to load it).
  • InstanceInfo.Bestiary static class added:
    • IsActive is an alias for IsBestiaryActive
    • IsCapturedMonstersDataLoaded is an alias for IsBestiaryCapturedMonstersDataLoaded
    • Function 'HasNetted' can be given a metadata of a monster to know if it's species has been netted already or not.
    • Function 'IsCapturable' can be given a metadata, and will find a DatBestiaryCapturableMonstersWrapper associated with that monster if it's capturable.
    • CapturedMonsters property added to return a list of the currently captured monsters (BestiaryCapturedMonster) if the Bestiary data is loaded.
  • Dat.Runtime.MonsterVarieties2 added for the in-memory version of MonsterVarieties that are needed. Dat.MonsterVarieties refers to a file specific version.
  • Various Dat fixes for wrappers that were placed into the wrong namespace.
    • For example, "Loki.Game.GameData.Dat.DatPantheonPanelLayoutWrapper" as a type should have just been "Loki.Game.GameData.DatPantheonPanelLayoutWrapper"
  • Dat updates for Bestiary data:
    • Dat.BestiaryRecipes, Dat.BestiaryRecipeComponent,
    • Dat.BestiaryNets,
    • Dat.BestiaryEncounters, Dat.BestiaryFamilies, Dat.BestiaryGenus, Dat.BestiaryGroups

#1687 [16 Mar 18 09:11] (3.2.1.2)
  • Updates for 3.2.1.2

#1686 [16 Mar 18 04:41] (3.2.1.1)
  • Updates for 3.2.1.1
  • Added Coroutines.ThrowNetAt, which is a coroutine like InteractWith to throw a net at an alive monster. It will attempt to highlight the target, verify the target was highlighted, then press the throw net key. Users must handle making sure the monster is alive, a capturable beast, is not enraged, etc...

#1685 [15 Mar 18 02:00] (3.2.0.9)
  • Various updates to try and handle Aspect skills:
    • Skill.IsManaReserving and Skill.IsConsideredAura updated
    • Actor.HasAspectBirdBuff, HasAspectCatBuff, HasAspectCrabBuff, HasAspectSpiderBuff added.
    • Actor.HasConsideredAuraFrom updated.
    • Skill names added to OldRoutine's auraNames list.
  • LifeComponent updates to try and fix an issue where usable corpse detection broke in 3.2+.
  • Changes to DefaultPlayerMover to support some experimental functionality (disabled by default).
  • [QuestBot]
    • Added new option "Enter corrupted side areas" to QuestBot -> Misc. This option is enabled by default.
    • Added new option "Talk to all quest givers in town" to QuestBot -> Misc. This option is disabled by default.
    • Did a small tweak in Autoflask for quicksilver flasks. If range is set to 0 bot will omit all checks and just use quicksilver when ready (for Pathfinders).
    • Made Chaos Recipe stashing more fool-proof. Previously stashing logic completely relied that cached stash data is valid. Now it always verifies before stashing.
    • Disabled Abyss logic inside Depths areas.

#1681 [09 Mar 18 04:22] (3.2.0.9)
  • Updates for 3.2.0.9

#1680 [08 Mar 18 06:17] (3.2.0.8)
  • Updates for 3.2.0.8

#1677 [06 Mar 18 16:09] (3.1.0.7)
  • Updates for 3.2.0.1 - 3.2.0.7
  • [QuestBot]
    • Added support for "Vilenta's Vengeance" quest in Act 10.
  • [MapBot]
    • Now bot will correctly take sacrifice fragments from Fragment stash tab.
  • [EXtensions]
    • Renamed Inventories.FastMoveFromCurrencyTab to FastMoveFromPremiumStashTab. All users must update their code where its used.
  • Added InGameState.IsNewHelpPageAvailablePopupShowing to know when the other help popup is showing.
  • Added the InGameState.DismissHelpPopup function.
  • InstanceInfo.MinimapIcons added to expose icons on the minimap.
  • ActionKeys updated with missing keys: open_atlas_screen, open_cosmetics_inventory, open_guidebook_panel, open_mtx_stash, open_pantheon_panel, throw_net.
  • The character list in AutoLogin will now display names in alphabetical order.
  • ChallengesUi updates for some Bestiary tab (not data) processing.
  • DatWorldAreaWrapper.IsMenagerieArea added. This is considered a "combat area".
  • WorldUi.GoToMenagerie added.
  • ContextMenu.LeaveCurrentParty added.
  • ContextMenu.VisitMenagerie added.
  • Skill.CurrentlyRequiresPercentPower added, as an aurafied curse would return false with RequiresPercentPower.
  • Various DatWorldAreaWrapper id checking updates to account for inconsistent naming in the game.
  • Skill.CastTime updated to handle a stat warcries use.
  • NotificationHud revamps:
    • NotificationType updated to now include: Guild, Info, SoloPvP, PartyPvP
    • NotificationData added to store data for the different notification events (AccountName, CharacterName, CharacterLevel, CharacterArea, Information, GuildName)
    • ProcessNotificationEx delegate added to represent the new user handler. It takes a NotificationData and a NotificationType, and should return a bool if the notification should be accepted or dismissed (like before).
    • HandleNotificationResult.NoHandler added for a null check on the user handler when calling HandleNotificationHelper/HandleNotificationHelperEx.
    • HandleNotificationEx added to handle more notifications and expose more data than before.
    • HandleNotification is now marked as obsolete, but will not be removed until 3.2+.
    • Various caching improvements made to strings that come from LookupClientString.
  • LoginState.UnlockAccountUi added.
    • Cancel function added to click the button.
    • ResendEmail function added to click the button.
    • Unlock function added to click the button.
  • LoginState.UnlockAccountUiResult enum added
  • LoginState.IsEnterUnlockCodeDialogVisible is now marked as Obsolete, use LoginState.UnlockAccountUi.IsOpened instead

#1663 [16 Feb 18 04:50] (3.1.4.2)
  • Updates for 3.1.4.2

#1662 [15 Feb 18 21:22] (3.1.4.1)
  • Updates for 3.1.4.1
  • ModAffix.TierString is now exposed.
  • AutoLogin plugin update to handle a message box on the character selection screen.

#1660 [08 Feb 18 17:29] (3.1.3.4)
  • Configuration.SaveAll will now log the path of the JsonSettings it's processing if an exception occurs.
  • InventoryControlWrapper ApplyCursorTo/ApplyCursorAt now support using quality currency on equipped items.
  • Updates for 3.1.3.4 (Steam)

#1657 [31 Jan 18 03:42] (3.1.3.2)
  • Updates for 3.1.3.2 (non-Steam)

#1656 [26 Jan 18 04:40] (3.1.3.1)
  • Updates for 3.1.3.1
  • StashUi.FragmentTab added. It implements an API similarly to EssenceTab/CurrencyTab.
  • "Cross-bot Settings" does not utilize the FragmentTab properly yet. Please wait to use the new Fragment tab until we determine if logic will support it.
  • StashTabInfo.IsPremiumFragment added
  • StashTabInfo.IsPremiumSpecial now checks IsPremiumFragment
  • InventoryTabType.Todo9 -> InventoryTabType.Fragment
  • InventoryControlWrapper.HasFragmentTabOverride added
  • InventoryControlWrapper.HasCustomTabOverride updated to check HasFragmentTabOverride
  • InventoryControlWrapper.CustomTabMetadata added to expose the manually set metadata for the control
  • Various DumpTab updates for dev debugging

#1653 [19 Jan 18 03:53] (3.1.2.2)
  • Updates for 3.1.2.2
  • Updates for 3.1.2.1

#1651 [16 Jan 18 06:04] (3.1.1.7)
  • [ChaosRecipe]
    • New plugin added.
  • [Cross-bot Settings]
    • Users can now select currency exchange act in gui (including random act).
  • [Abyss]
    • Improved abyss crack following logic. Now bot movement should be way smoother.
  • Added EvaluationType.ExcludeFromChaosRecipe / MyEvaluationType.ExcludeFromChaosRecipe (ItemFilterEditor)
  • Added MyRarity.Prophecy (ItemFilterEditor) as it was forgotten a while ago.
  • Prophecy rarity support added to ItemFilterEditor.
  • ConfigurableItemEvaluator updated with a few default disabled rules for the ExcludeFromChaosRecipe category. Users must recreate their item filters or manually add them though.
  • Fixed a bug in DefaultItemEvaluator where it always returned true for Quest items without checking for Pickup.
  • Item.RequiredStr/Dex/Int now take into account more attribute modifying stats on items. This value is approximate though, and will not 100% match the item always due to rounding.
  • Item.GetStatRequirements updated to not return 0 for skillgems socketed in a Tabula

#1647 [13 Jan 18 23:28] (3.1.1.7)
  • The HeraldManaReservationOverride45Pct stat is now processed by Skill cost logic.
  • IsAbyssArea updated with more area ids.

#1646 [11 Jan 18 04:47] (3.1.1.7)
  • AvalonEdit updated from 5.0.3 to 5.0.4
  • DotNetCompilerPlatform updated from 1.0.5 to 1.0.8
  • Microsoft.Net.Compilers updated from 2.3.1 to 2.6.1
  • The package "MahApps.Metro.IconPacks" was added.
  • Item.ManaRecoveredPerSecond / Item.HealthRecoveredPerSecond fixed.
  • AtlasAreas updated to only refer to the areas that have the "MapWorlds" id. Before, it was using the "MapAtlas" id which is areas from last seasons maps.
  • Added a new EventHandler, InGameState.OnPreLevelSkillGem
    • This is invoked when HandlePendingLevelUps is called, and the user evaluator function returns true to signal a skillgem should be leveled.
  • In preparation of upcoming routine changes, the first wave of significant updates to exposed game data have been made (relating to skills/gems). More details will come later as it's finished.
  • [Cross-bot settings]
    • Now bot will use Navali to exchange divination cards in hideout if she is present there.
    • Now currency exchange will be performed in Act 5 (fastest area loading speed).
    • Fixed an issue with bot trying to sell/stash pantheon souls.
  • [MapBot]
    • Now TrackMob and KillBoss tasks will abandon their current target if it was ignored by Chicken plugin.

#1638 [03 Jan 18 03:38] (3.1.1.7)
  • Updates for 3.1.1.7
  • IsAbyssArea updated to handle the second area variant.
  • DisplayNoteUi updates for 3.1+ changes
  • A more modern pathfinding library, RecastDetourNet, has been added in preparations of upcoming changes later this year. This should not break anything, since it's only being included alongside EB. More info will be posted on the forums soon about our 2018 roadmap.

#1636 [25 Dec 17 15:19] (3.1.1.6)
  • Item.MapTier updated to handle the shaped maps that drop 3.1+.
  • [MapBot]
    • Added "Atlas" category to General Settings. Refer to the MapBot guide for more information.
    • Added 4 new affixes introduced in 3.1 to Affix Settings.
    • Various fixes and adjustments for red tier maps.
  • [QuestBot]
    • Fixed stuck issue near Doedre in Act 9.
  • [AutoFlask]
    • Added support for new unique flask "Coralito's Signature".

#1635 [22 Dec 17 14:27] (3.1.1.6)
  • Item.Name updated to force display "Shaped" for the shaped maps that drop 3.1+.

#1632 [21 Dec 17 14:51] (3.1.1.6)
  • Updates for 3.1.1.6

#1631 [21 Dec 17 01:52] (3.1.1.5)
  • Updates for 3.1.1.5
  • Updates for 3.1.1.4
  • ElderInfluencedAreas/ShaperInfluencedAreas updated to be correct now.
  • Minor Default content updates.

#1630 [19 Dec 17 10:27] (3.1.1.3)
  • SocialUi updates to fix gui changes.

#1628 [16 Dec 17 20:05] (3.1.1.3)
  • Updates for 3.1.1.3
  • Actor.HasCurseFrom updated for 'Despair'.
  • Actor.IsCursingWith updated for 'Despair'.
  • Actor.IsCursedWithDespair and Actor.IsCursingWithDespair added.
  • ItemFilterEditor updated to support filtering by IsElderItem and IsShaperItem.
  • In addition an option has been selected to choose Elder or Shaper if you want either, as the single options will restrict specifically to that type.
  • A new default Elder/Shaper item pickup filter has been added, but it will only appear on new item filters created after this update.

#1627 [16 Dec 17 20:05]
  • Updates for 3.1.0+!

#1611 [08 Dec 17 07:04] (3.0.3.3)
  • Updates for 3.0.3.3.
  • Update to NpcDialogUi.HasConversed to detect actively selected text.

#1610 [21 Nov 17 23:50] (3.0.3.2)
  • Updates for 3.0.3.2.

#1609 [16 Nov 17 22:30] (3.0.3.1)
  • Updates for 3.0.3.1.

#1608 [07 Nov 17 23:46] (3.0.2.10)
  • Updates for 3.0.2.6.
  • OldRoutine will now cast Bone Offering.

#1604 [31 Oct 17 03:03] (3.0.2.6)
  • Updates for 3.0.2.6.
  • ChestComponent/Chest.Quality added.

#1603 [19 Oct 17 03:03] (3.0.2.3)
  • Updates for 3.0.2.3.

#1602 [12 Oct 17 23:34) (3.0.2.2)
  • Updates for a Steam specific patch.
  • AscendencyTrialData updated from a change in 3.0.2.

#1594 [12 Oct 17 14:48] (3.0.2.2)
  • Updates for 3.0.2.2.
  • Updates for 3.0.2.1.
  • CloseBlockingWindows now closes the tutorial window.
  • InGameState.TutorialUi placeholder API added. It won't do anything except expose if the control is opened.

#1593 [10 Oct 17 01:54] (3.0.1.12)
  • Updates for 3.0.1.12.
  • The LoginThread now delays 1s between key logins to try and avoid hammering the auth server with login attempts for longer key lists.
  • [Autoflask]
    • Added a separate %HP threshold for Instant Life flasks. Due to this change current threshold will be reset and must be re-configured.
  • [Cross-bot Settings]
    • Added "Auto dnd" option to Misc.
    • Added "Inventory currency" settings to Misc. Users can configure where bot keeps currency (Wisdom and Portal scrolls by default) in inventory, add new currency to be persisted in inventory, set bot to automatically restock currency.
    • ItemsSoldEvent now fire with 2 arguments. Sold items as first argument and Gained items as second.
  • [QuestBot]
    • Threshold jewel rewards for "Death to Purity" quest are now correctly displayed.
    • "Optional Quests" and "Rewards" are now grouped by act instead of long lists.
    • Untargetable Fireflies should no longer be tracked for interaction.
  • [MapBot]
    • Now MapBot flags all reroll currency as available every time Start is pressed in addition to checking that upon stashing.

#1591 [27 Sep 17 01:13] (3.0.1.10)
  • Legacy AutoFlask has been replaced with a new Default AutoFlask.
  • OldRoutine had a small update to work with an AutoFlask hook.
  • Minor MapBot updates.

#1589 [20 Sep 17 01:07] (3.0.1.10)
  • Updates for 3.0.1.10.
  • Various minor Default content updates.

#1588 [15 Sep 17 02:48] (3.0.1.9)
  • Updates for 3.0.1.9.
  • Added ChatPanel.Commands.destroy for the "/destroy" message.
  • Fixed a bug that prevented GCP recipe logic from selling 20 quality gems.
  • Fixed a bug that caused MapBot to constantly switch to a first tab with currency instead of staying on the current.

#1587 [06 Sep 17 03:05] (3.0.1.8)
  • Updates for 3.0.1.8.
  • InstanceInfo.PartyItemAllocationMode updated.
  • BotManager.Stop will now log the StopReason if one exists, so each bot base does not have to do so individually.
  • Labyrinth room ids updated for 3.0 changes.
  • Typo fixed: LabyrinthMapSelectorUi.SelecteDifficulty -> LabyrinthMapSelectorUi.SelectedDifficulty
  • The LabyrinthRoom.Override (of type LabyrinthOverride) has been replaced with LabyrinthRoom.Overrides, which is now a list of LabyrinthOverride objects to represent a 3.0 change with lab data.

#1584 [29 Aug 17 05:39] (3.0.1.7)
  • Updates for 3.0.1.7.

#1583 [28 Aug 17 03:33] (3.0.1.5)
  • Added "Chance to Scouring" currency exchange to Vendoring in Cross-bot Settings.
  • Added "Loot all visible items" option to Misc in Cross-bot Settings.
  • Added Harbinger League currency to individual currency stashing options in Cross-bot Settings .
  • Improved "full tab check" system. For premium stash tabs bot will mark individual currency controls as full instead of whole tab.
  • Now bot will do 5 logout attempts instead of 1 if resurrection failed.
  • Now bot will logout instead of stopping when failed to interact with portal to town more than 5 times.
  • Now bot will prioritize Act 9 over Act 4 for divination card exchange.
  • Now stuck detection will not trigger when bot is breaking blocking clutter.
  • Fixed an issue when bot tried to open locked boss-chest in Reef Map.
  • Fixed an issue with track mob logic sticking to "Volatile Core" bomb.
  • Fixed an issue with local transition detection after death in Descent (Act 9).
  • Added 3 new map affixes to Affix settings in MapBot (Haunting, Lunar, Solar).
  • Parameter for "items_sold_event" has been changed to List<CachedItem> to avoid type cast exception when only one item is sold.
    • All users of that event must update their code accordingly.

#1581 [25 Aug 17 08:37] (3.0.1.5)
  • Updates for 3.0.1.5.
  • Microsoft.Net.Compilers updated from 2.3.0 -> 2.3.1.
  • Re-updated the error message shown when Windows blocks extracted Exilebuddy content to hopefully inform users better.
  • The ClientNPC component has been removed from the game, so it was removed from the API. This should not affect any user code.
  • HasIconOverHead has been moved from the ClientNPC component into the NPC component, where it now resides. This should not affect any user code.
  • StashUi.CurrencyTab API updated for the new stash tab.
  • InventoryControlWrapper.OpenDisplayNote now correctly returns Unsupported for Divination tabs, as they are not supported.

#1579 [21 Aug 17 07:30] (3.0.1.4)
  • Updates for 3.0.1.4.
  • Minor fixes
  • Updated the error message shown when Windows blocks extracted Exilebuddy content to hopefully inform users better.
  • NullRoutine will now stop Exilebuddy from running if it's started while being the active routine.

#1576 [19 Aug 17 22:56] (3.0.1.3)
  • Fixed an issue with QuestBot endlessly trying to take a reward for "An End to Hunger" quest.
  • Fixed an issue with Chicken On Sight not leaving a map permanently.
  • Fixed an issue with Mesa bossroom entering.
  • Now bot should properly initiate Racecourse boss fight.
  • Improved track mob logic. Now its less likely to stick to invincible mobs.
  • Updated the "Select Process" text to help users with the 64-bit client issues.
    • "A 32-bit process is required. If you do not see a process, please change the game to use DirectX 9/9Ex."
  • Fixed a bug where PlayerComponent.Level was wrong for pre-3.0 characters.
  • Initial ZH-CN localization added.
    • Our localization support system needs a lot of work still.
  • Voidspawn of Abaxoth is no longer ignored in OldRoutine as it was causing new issues compared to before.

#1567 [18 Aug 17 02:41] (3.0.1.2)
  • Updates for 3.0.1.2
  • Added Act 9 and Act 10 to QuestBot.
  • Fixed an error occurring while full tab checking a divination tab.
  • OldRoutine now ignores DoedreStonePillars for QB to work correctly in an area.
  • WorldItem.HasVisibleHighlightLabel is no longer static, and should work correctly.
  • DatWorldAreaWrapper.IsOverworldArea updated for Act 10 areas.
  • Attempted fix to try and reduce issues with Exilebuddy loading when Windows blocks the path the zip was extracted to.
  • A previous botbase behavior from 2.6 has been readded in an updated form.
    • The 'hook_ingame' logic request has been added to the 'IsInGame' logic block in our botbase's main coroutine function.
    • This hook (in 2.6 it was incorrectly implemented as an event) allows user code to execute coroutine logic before our botbase coroutine logic.
    • Most people do not need to care about this change, but it was a design flaw correction.

#1565 [16 Aug 17 01:35] (3.0.0.7)
  • Updates for 3.0.0!
 
Last edited:
Exilebuddy Capability Information

This post will cover some known issues of Exilebuddy as a product, and what we're aware of going into the 3.0 release.

Quest Support - For our initial release, QuestBot supports Act 1- 8, which is what the closed beta covered, and should work with minimal issues. There are several known game bugs that affect us though. For example, you kill Brutus in game, but the server tells the client you've not killed it yet. Things like this can affect the Exilebuddy API. There are a few other random quest related issues, but we just have to wait until they are addresses in the game itself. Support for Act 9 and Act 10 will be coming over the next few weeks. Update: Act 9 and 10 support now exists.

Boss Fight Logic - One of the nice additions we'd like to add in the near future is support for handling boss fights. Right now, Exilebuddy will face tank everything with OldRoutine, and does not contain the logic to avoid standing in damaging effects, which is pretty much what all the new content is centered around; avoidance. Before this is possible, we'll need to revamp the routine system to avoid a lot of problems we're currently faced when trying to support this. While this system can be applied to quests, it is also applicable to map bosses, which should not really change until the next end-game related expansion. To help address this in the short term, QB has a basic system to stop before bosses for users to kill them if they are under-geared or our routine isn't good enough for their build.

Routine System - A new routine system is planned and will start being prototyped after our 3.0 release. Right now our current design is negatively affecting Exilebuddy in that it makes the bots look and feel a lot worse than they really are. We feel with a new routine system in place, we'll eliminate some of the biggest user frustrations when using Exilebuddy's combat system, and have a product that really starts to shine when it comes to what is possible vs what we've provided in the past. In addition, routine development and configuration should be significantly easier in the future under this new system, something that's been a big problem with our project ever since 2013.

Item Filters - A new item filter system is planned and will start being prototyped after our 3.0 release. This has been long overdue for years now, but we're finally almost in a position where this can be a reality. The original hope was that a new C# scripting system could be integrated into Exilebuddy for 3.0, and the new item filter system would use that, but it was not possible, and since we can live with the current system a little longer, it was pushed back until after we have a 3.0 release out. We still want to find a way to make our original plans possible, but it requires changing more core things that would have slowed down 3.0 progress too much.

Default Plugins - Some of our default plugins got minor updates in time for 3.0, but the focus was not on them yet, as having a working, functional build for 3.0 was the priority. However, we have plans to do more updates and modernize the most lacking plugins that come with the bot. This includes a better AutoFlask plugin, better GemLeveler, rewritten Essence/Breach plugins that integrate into our default bot bases, and of course a new item filter plugin.

Community Plugins - We hope to start being able to assist community developers with updating their plugins and writing new content for Exilebuddy once the 3.0 version is released and the initial bugs are addresses. However, expect support to be light still, and documentation to be behind, as our focus for going into 3.0 is having something usable for 3.0 that we can focus on improving and continue to grow over the upcoming weeks and months.

API Support - The only new thing that I'm aware of that the API doesn't support is knowing which Pantheon powers are accessible to the player. There exists an API to work with that UI as well as know which powers are selected, but a bit of roundabout coding is required to know if something can be changed or not. When it comes to quest rewards, there's a new threshold quest reward in Act 5 that is not properly supported reward wise with the API. As a result, QuestBot is not able to choose the desired reward. For now, users can stop the bot before the boss or manually take the reward to avoid this inconvenience. Other than that, most of the previous APIs have been updated and testing, and should be good to go. A few new APIs were added alongside the 3.0 updates, so we hope users find them useful.

Atlas Support - GUI support for Atlas will be looked into in the future, but it was not vital for our 3.0 release, and as a result, still remains unsupported. Right now, it's a low priority API thing.

Masters Missions - There is no support from us on this still, and it's only a distant future thing we'd possibly offer, once more important things get taken care of first. It would be really nice to support it, but we do not have any current plans to start working on this feature as part of our core offerings anytime soon.

Non-map Farming - With the change in the way the game works now, and the removal of OldGrindBot, various boss and corrupted are farming mechanics that used to exist do not anymore. Support for corrupted zones will be added in the near future to QuestBot, but this feature was not vital for the 3.0 release. However, we intended to support it in the near future for sure. Boss farming throughout the game is no longer that useful, but minor grinding support has been added to QuestBot in the meantime for users to be able to at least grind for items between quests. The QB thread will cover the new system, so it's pretty simple to use for now. Everyone knows maps are where the real game lies now, but keep in mind, you still have to get through the entire game on each character to map!

Auto-Equip - The API supports this, but we have no short term plans to offer managing character's gear. This is most useful for new characters running QB to get from 1 - 70 to be able to access maps, and we might look into it in the future, but it's not a current priority. It would be a wonderful feature to complete our bot once everything else is done though, but for now, we can live without it.

Trade Bot - There are no plans from us on this for the foreseeable future. Our API supports it, and very talented and motivated people in the community have made their own using our API, but it's not something we're going to offer and support anytime soon. The game was supposed to see some trade related updates around 3.0, but those have been pushed back, so whatever future updates come in relation to it, we'll keep our eye out for making sure we're able to support it.

"Profiles" - This covers quite a few things in combination with features mentioned above, but for the time being, Exilebuddy has to stay as a non-profile based bot. Coding logic directly and supporting user code offers the power required to work in this game environment, so we'd have to consider a totally different design to everything in order to support profiles correctly. While it's something I personally would love to see Exilebuddy support in the future, it's not technically feasible right now. There are certain plugins, such as AutoPassives, that is really annoying to use, and would be better server with a profile-like design, but work of that type has to take place after our 3.0 release, so it's something being thought about, but not going to be a reality in the short term.

Tutorial - API support exists for disabling tutorials, but our code will not touch the tutorial system currently. Users can manually do the tutorial on new characters if they feel its safer, or click the button. An option to disable tutorials by clicking the button might be added in the future, but since users already need to handle new character setup, it wasn't a priority.

Player Mover - This system will be updated most likely along with the routine system, since people want better skill based handling, so it ties together. We do have plans to revamp this system in the near future as well, but for the initial 3.0 release, we just stuck with something that was 'working' still, because trying to have something that is more efficient is just a QoL upgrade that can be focused on later.

Vaal Areas - We intend to add support for these into QB in the near future. They existed for OldGrindBot, but not as a part of QB. Priority going into 3.0 was updated support for the game, so these nice extra features will come after things quiet down. Update: Vaal area support is now included!

I *think* that covers most of the big things when it comes to Exilebuddy as a product. We'll try to keep this updated as time goes on if anything changes, as all things are subject to change.
 
Last edited:
ThirdPartyConfigMaker

A new simple tool has been included in the root Exilebuddy folder for devs. This tool allows the simple creation of the json files required to load content into Exilebuddy.

d0bda432ae60cf6471fd8a849c6f483a.webp

The switch to the json format was to get rid of the old text file system, which slowly had features added over time, and a new project workspace design was needed. This design was suggested to us in the past, but at the time there was no real need for it because of how simple things were.

Moving forward, we see the need for it now.

To start out, this is the current 3rdparty.json from the Default assembly:
Code:
{
  "AssemblyName": "Default",
  "FileList": [
    "Chicken\\Chicken.cs",
    "Chicken\\Gui.baml",
    "Chicken\\Gui.g.cs",
    "Chicken\\Gui.xaml",
    "Chicken\\Gui.xaml.cs",
    "Chicken\\Settings.cs",
    "EXtensions\\AreaChangedArgs.cs",
    "EXtensions\\AreaInfo.cs",
    "EXtensions\\BotStructure.cs",
    "EXtensions\\ClassExtensions.cs",
    "EXtensions\\CurrencyNames.cs",
    "EXtensions\\Enums.cs",
    "EXtensions\\ErrorManager.cs",
    "EXtensions\\ErrorReporter.cs",
    "EXtensions\\Events.cs",
    "EXtensions\\EXtensions.cs",
    "EXtensions\\GlobalLog.cs",
    "EXtensions\\Gui.baml",
    "EXtensions\\Gui.g.cs",
    "EXtensions\\Gui.xaml",
    "EXtensions\\Gui.xaml.cs",
    "EXtensions\\InputDelayOverride.cs",
    "EXtensions\\Interval.cs",
    "EXtensions\\Inventories.cs",
    "EXtensions\\ITaskManagerHolder.cs",
    "EXtensions\\MapNames.cs",
    "EXtensions\\MessageBoxes.cs",
    "EXtensions\\Move.cs",
    "EXtensions\\PlayerAction.cs",
    "EXtensions\\RarityColors.cs",
    "EXtensions\\Settings.cs",
    "EXtensions\\Tgt.cs",
    "EXtensions\\TownNpcs.cs",
    "EXtensions\\Wait.cs",
    "EXtensions\\World.cs",
    "EXtensions\\CachedObjects\\CachedItem.cs",
    "EXtensions\\CachedObjects\\CachedObject.cs",
    "EXtensions\\CachedObjects\\CachedStrongbox.cs",
    "EXtensions\\CachedObjects\\CachedTransition.cs",
    "EXtensions\\CachedObjects\\CachedWorldItem.cs",
    "EXtensions\\CommonTasks\\ClearCursorTask.cs",
    "EXtensions\\CommonTasks\\CombatTask.cs",
    "EXtensions\\CommonTasks\\FallbackTask.cs",
    "EXtensions\\CommonTasks\\HandleBlockingChestsTask.cs",
    "EXtensions\\CommonTasks\\HandleBlockingObjectTask.cs",
    "EXtensions\\CommonTasks\\IdTask.cs",
    "EXtensions\\CommonTasks\\LeaveAreaTask.cs",
    "EXtensions\\CommonTasks\\LootItemTask.cs",
    "EXtensions\\CommonTasks\\OpenChestTask.cs",
    "EXtensions\\CommonTasks\\PostCombatHookTask.cs",
    "EXtensions\\CommonTasks\\ReturnAfterTownrunTask.cs",
    "EXtensions\\CommonTasks\\SellTask.cs",
    "EXtensions\\CommonTasks\\SortInventoryTask.cs",
    "EXtensions\\CommonTasks\\StashTask.cs",
    "EXtensions\\CommonTasks\\VendorTask.cs",
    "EXtensions\\CommonTasks\\VendoringModules\\CardExchange.cs",
    "EXtensions\\CommonTasks\\VendoringModules\\CurrencyExchange.cs",
    "EXtensions\\CommonTasks\\VendoringModules\\GcpRecipe.cs",
    "EXtensions\\CommonTasks\\VendoringModules\\VendoringModule.cs",
    "EXtensions\\Global\\CombatAreaCache.cs",
    "EXtensions\\Global\\ComplexExplorer.cs",
    "EXtensions\\Global\\ResurrectionLogic.cs",
    "EXtensions\\Global\\StuckDetection.cs",
    "EXtensions\\Global\\TrackMobLogic.cs",
    "EXtensions\\Global\\Travel.cs",
    "EXtensions\\Positions\\Position.cs",
    "EXtensions\\Positions\\StaticPositions.cs",
    "EXtensions\\Positions\\TgtPosition.cs",
    "EXtensions\\Positions\\WalkablePosition.cs",
    "EXtensions\\Positions\\WorldPosition.cs",
    "MapBot\\AffixData.cs",
    "MapBot\\AffixSettings.cs",
    "MapBot\\CastAuraTask.cs",
    "MapBot\\DeviceAreaTask.cs",
    "MapBot\\EnterTrialTask.cs",
    "MapBot\\FinishMapTask.cs",
    "MapBot\\GeneralSettings.cs",
    "MapBot\\Gui.baml",
    "MapBot\\Gui.g.cs",
    "MapBot\\Gui.xaml",
    "MapBot\\Gui.xaml.cs",
    "MapBot\\KillBossTask.cs",
    "MapBot\\MapBot.cs",
    "MapBot\\MapData.cs",
    "MapBot\\MapExplorationTask.cs",
    "MapBot\\MapExtensions.cs",
    "MapBot\\MapSettings.cs",
    "MapBot\\OpenMapTask.cs",
    "MapBot\\SellMapTask.cs",
    "MapBot\\SpecialObjectTask.cs",
    "MapBot\\Statistics.cs",
    "MapBot\\TakeMapTask.cs",
    "MapBot\\TrackMobTask.cs",
    "MapBot\\TransitionTriggerTask.cs",
    "MapBot\\TravelToHideoutTask.cs",
    "MapBot\\TravelToLabTask.cs",
    "Properties\\AssemblyInfo.cs",
    "QuestBot\\BanditHelper.cs",
    "QuestBot\\GrindingHandler.cs",
    "QuestBot\\Gui.baml",
    "QuestBot\\Gui.g.cs",
    "QuestBot\\Gui.xaml",
    "QuestBot\\Gui.xaml.cs",
    "QuestBot\\Helpers.cs",
    "QuestBot\\OpenWaypointTask.cs",
    "QuestBot\\QuestBot.cs",
    "QuestBot\\QuestHandler.cs",
    "QuestBot\\QuestItemMetadata.cs",
    "QuestBot\\QuestManager.cs",
    "QuestBot\\Quests.cs",
    "QuestBot\\QuestTask.cs",
    "QuestBot\\ReturnAfterDeathTask.cs",
    "QuestBot\\Settings.cs",
    "QuestBot\\QuestHandlers\\A1_Q1_EnemyAtTheGate.cs",
    "QuestBot\\QuestHandlers\\A1_Q2_MercyMission.cs",
    "QuestBot\\QuestHandlers\\A1_Q3_DirtyJob.cs",
    "QuestBot\\QuestHandlers\\A1_Q4_BreakingSomeEggs.cs",
    "QuestBot\\QuestHandlers\\A1_Q5_DwellerOfTheDeep.cs",
    "QuestBot\\QuestHandlers\\A1_Q6_CagedBrute.cs",
    "QuestBot\\QuestHandlers\\A1_Q7_MaroonedMariner.cs",
    "QuestBot\\QuestHandlers\\A1_Q8_SirensCadence.cs",
    "QuestBot\\QuestHandlers\\A2_Q1_SharpAndCruel.cs",
    "QuestBot\\QuestHandlers\\A2_Q2_WayForward.cs",
    "QuestBot\\QuestHandlers\\A2_Q3_GreatWhiteBeast.cs",
    "QuestBot\\QuestHandlers\\A2_Q4_IntrudersInBlack.cs",
    "QuestBot\\QuestHandlers\\A2_Q5_ThroughSacredGround.cs",
    "QuestBot\\QuestHandlers\\A2_Q6_DealWithBandits.cs",
    "QuestBot\\QuestHandlers\\A2_Q7_ShadowOfVaal.cs",
    "QuestBot\\QuestHandlers\\A3_Q1_LostInLove.cs",
    "QuestBot\\QuestHandlers\\A3_Q2_VictarioSecrets.cs",
    "QuestBot\\QuestHandlers\\A3_Q3_GemlingQueen.cs",
    "QuestBot\\QuestHandlers\\A3_Q4_SeverRightHand.cs",
    "QuestBot\\QuestHandlers\\A3_Q5_PietyPets.cs",
    "QuestBot\\QuestHandlers\\A3_Q6_SwigOfHope.cs",
    "QuestBot\\QuestHandlers\\A3_Q7_FixtureOfFate.cs",
    "QuestBot\\QuestHandlers\\A3_Q8_SceptreOfGod.cs",
    "QuestBot\\QuestHandlers\\A4_Q1_BreakingSeal.cs",
    "QuestBot\\QuestHandlers\\A4_Q2_IndomitableSpirit.cs",
    "QuestBot\\QuestHandlers\\A4_Q3_KingOfFury.cs",
    "QuestBot\\QuestHandlers\\A4_Q4_KingOfDesire.cs",
    "QuestBot\\QuestHandlers\\A4_Q5_EternalNightmare.cs",
    "QuestBot\\QuestHandlers\\A5_Q1_ReturnToOriath.cs",
    "QuestBot\\QuestHandlers\\A5_Q2_InServiceToScience.cs",
    "QuestBot\\QuestHandlers\\A5_Q3_KeyToFreedom.cs",
    "QuestBot\\QuestHandlers\\A5_Q4_DeathToPurity.cs",
    "QuestBot\\QuestHandlers\\A5_Q5_KingFeast.cs",
    "QuestBot\\QuestHandlers\\A5_Q6_KitavaTorments.cs",
    "QuestBot\\QuestHandlers\\A5_Q7_RavenousGod.cs",
    "QuestBot\\QuestHandlers\\A6_Q1_FallenFromGrace.cs",
    "QuestBot\\QuestHandlers\\A6_Q2_BestelEpic.cs",
    "QuestBot\\QuestHandlers\\A6_Q3_FatherOfWar.cs",
    "QuestBot\\QuestHandlers\\A6_Q4_EssenceOfUmbra.cs",
    "QuestBot\\QuestHandlers\\A6_Q5_ClovenOne.cs",
    "QuestBot\\QuestHandlers\\A6_Q6_PuppetMistress.cs",
    "QuestBot\\QuestHandlers\\A6_Q7_BrineKing.cs",
    "QuestBot\\QuestHandlers\\A7_Q1_SilverLocket.cs",
    "QuestBot\\QuestHandlers\\A7_Q2_EssenceOfArtist.cs",
    "QuestBot\\QuestHandlers\\A7_Q3_WebOfSecrets.cs",
    "QuestBot\\QuestHandlers\\A7_Q4_MasterOfMillionFaces.cs",
    "QuestBot\\QuestHandlers\\A7_Q5_InMemoryOfGreust.cs",
    "QuestBot\\QuestHandlers\\A7_Q6_LightingTheWay.cs",
    "QuestBot\\QuestHandlers\\A7_Q7_QueenOfDespair.cs",
    "QuestBot\\QuestHandlers\\A7_Q8_KisharaStar.cs",
    "QuestBot\\QuestHandlers\\A7_Q9_MotherOfSpiders.cs",
    "QuestBot\\QuestHandlers\\A8_Q1_EssenceOfHag.cs",
    "QuestBot\\QuestHandlers\\A8_Q2_LoveIsDead.cs",
    "QuestBot\\QuestHandlers\\A8_Q3_GemlingLegion.cs",
    "QuestBot\\QuestHandlers\\A8_Q4_WingsOfVastiri.cs",
    "QuestBot\\QuestHandlers\\A8_Q5_ReflectionOfTerror.cs",
    "QuestBot\\QuestHandlers\\A8_Q6_LunarEclipse.cs"
  ],
  "Dependencies": [],
  "References": []
}

AssemblyName - The name of the assembly. This is what used to be contained in "3rdparty.txt".

FileList
- The list of relative files EB should compile. This is now mandatory, as before it was only enforced when there was a "3rdparty-files.txt" file present that listed the same information. This is to help ensure files are kept in sync with users, so nothing breaks due to missing or extra files anymore.

Dependencies - This is a new feature to replace the concept of "3rdparty-required.txt". The system is simple, content with no dependencies are loaded first. Then, content with loaded dependencies are loaded, and this repeats for a fixed number of cycles or until everything is loaded. This now allows users to properly reference assemblies that should be loaded before theirs correctly, and EB handles the rest for them.

References - This adds assembly references to the project as an alternative to using the "AddRef" comment compiler line in the code itself. Not all code is updated to make use of this, but for example: "//!CompilerOption|AddRef|HelixToolkit.dll" can be found in the AreaVisualizer plugin. The new system would allow referencing "HelixToolkit.dll" from the json file now.

Lastly, the "Load Json" button is to open and existing json file and edit it (saving overwrites the original file). The "Load Folder" is to help automatically create the json settings in the GUI from the EB 2.6 folder structure.

For example, this is what an old content folder looked like in 2.6:
0451ebbf9f83fad2da1f9f36ff309269.webp

To use the "Load Folder" feature, click the button, choose a file in the root directory of that folder. The gui will then fill out with the basic information (won't do dependencies or references automatically, since those systems weren't the same then). That's it!

3f23c9a20c5565635de42d5b1a6ee731.webp

We hope this new setup will help simplify some thing for content users with only minor extra work on the dev side of things. Devs need to make sure they keep their file lists in sync though, as that will be the biggest hurdle to overcome now.
 
OldGrindBot Source Code

Attached is the source code for OldGrindBot, which is no longer included with Exilebuddy. It was not updated for all the new content, but should compile and "work" still, as it was used to help test API updates during the 3.0 update cycle.

It's still a functional bot, but as we've talked about for over a year now, it was time to move on from this code base and design.

There will be no more support for this code, but it still offers a lot of useful examples for using the API, so that's why it's still be provided.

A development replacement for OGB will most likely come in the future after 3.0 is stable.

How to put OldGrindBot back into Exilebuddy for development purposes

1. Extract "OldGrindBot-3_0.zip" to a folder.
2. Copy the extracted "OldGrindBot" inner folder (so the path "OldGrindBot\BasicGrindBot.cs" is valid, not "OldGrindBot-3_0\OldGrindBot\BasicGrindBot.cs") into your EB's "3rdParty\Legacy" folder.
3. Run "ThirdPartyConfigMaker.exe"
4. Click "Load Json" and choose the "3rdParty\Legacy\3rdparty.json" file.
5. Click on the "..." button at the top right of the File List.
6. Choose the "3rdparty.json" file again (this is just choosing a file in the root folder to generate the file list from, if there were no existing json, you'd make a temp text file to select)
7. Now the file list should be filled out properly with the new files and paths, click Save.
8. Start Exilebuddy and OGB should now be loaded.
 

Attachments

Last edited:
User Guide to Install Content to Exilebuddy

This guide will cover how users can add content to Exilebuddy.

1. Download 3.0+ compatible content from the forums. If the thread doesn't mention being updated for 3.0, it's probably not updated yet.

2a. Drop the downloaded ZIP into your "3rdParty" folder of Exilebuddy. It does not go inside Default / Legacy / _CONFIGS_ / any other existing folder, but rather the root directory.

2b. Extract the downloaded content into your "3rdParty" folder of Exilebuddy. It does not go inside Default / Legacy / _CONFIGS_ / any other existing folder, but rather the root directory in its own folder.

3. Start Exilebuddy! As long as the devs who made the content setup their project correctly, that's all you have to do.

Uninstalling Content from Exilebuddy

Simply delete the folder / zip you added in the previous section!
 
Last edited:
Exilebuddy 3.1+ Release

Our first Exilebuddy 3.1+ Beta will be deployed really soon. This expansion was very large and contained a lot of client changes, which is why there was a lengthy downtime. Expect there to be bugs and unnoticed issues, as is always the case with these large updates. We'll work as diligently as possible to get things smoothed out, but the game needs to also stabilize with patches and changes.

We've tested and checked as much as possible, but due to there being so many patches and changes, it's highly likely we missed something. Please watch your bots and do not run them unattended. Make sure to report all issues in the Support forums with logs, and we'll get

Changelog

[Abyss]
  • Added Abyss plugin to support new league mechanic. If enabled bot will follow the crack and open Abyssal Trove in the end.
  • The "Abyssal Depths" sub-area is not currently supported.
[QuestBot]
  • Added second reward choice to "Mercy Mission" quest.
  • Removed Hedge Maze logic from "A Swig of Hope" quest.
  • Added support for new "Queen of the Sands" quest in Act 9.
  • Added Shakari to Manual Bosses settings.
[MapBot]
  • Lots of internal changes and adjustments to support new maps.
  • Bot should be able to run white and yellow map tier normally. Red tier maps were not tested, it is not recommended to run them until official support is added.
[General]
  • There are new mobs (Pitworms) that spawn from the Abyss that can rapidly create a lot of monsters. Due to their massive range, this can create stuck issues for the bot where it endlessly fights them. Adjustments to the routine and changes to try and avoid this have not been made, so please watch out for this issue if you're running a small-no AoE build with no piercing projectiles.
  • The new map tab is unsupported and there are no plans to support that tab moving forward due to the complexity of the underlying inventory system used for it.
  • Item.IsShaperItem added for the cosmic background items.
  • Item.IsElderItem added for the tentacle background items.
  • InstanceInfo.ElderInfluencedAreas added.
  • InstanceInfo.ShaperInfluencedAreas added.
  • The quest to move the fuel carts in "The Beacon" is now much more combat intensive. Changes have been made to prevent the routine from locking up on infinite monsters, but if your character does not have good defenses or enough aoe DPS, chances are it'll get stuck or die a lot now. Please monitor this quest manually to be sure your bots can get through it.
  • OldRoutine updates:
    • Changes have been made to work around the quest changes of the fuel cart quest in "The Beacon" area.
    • Orb of Storms is now cast on a fixed interval.
  • StashTabInfo updates:
    • InventoryId will return 0 for the new unsupported map tabs. Check against IsPremiumMap to avoid possible logic issues if you're using this member.
    • DisplayIndex is now an ushort.
    • Added LinkedParentId which is related to the new changes for map tabs.
    • InventoryTabPermissions enum added.
    • InventoryTabType enum added to handle the different types of tabs (normal, currency, etc...).
    • InventoryTabFlags enum added to handle the new tab flags.
    • InventoryTabMapSeries enum added for the 4 map series types listed on the tab.
    • MemberFlags now returns a type of 'InventoryTabPermissions' rather than an 'int'.
    • OfficerFlags now returns a type of 'InventoryTabPermissions' rather than an 'int'.
    • MapSeries added (InventoryTabMapSeries enum).
    • IsPremiumMap added.
    • IsPremiumSpecial now checks IsPremiumMap.
    • TabType added to expose the new tab types. This is what the 'Is' properties check against.
    • TabFlags added to expose the new tab flags. This is what the 'Is_Flagged' properties check against.
    • To avoid confusion due to internal tab data changes, and the dual meaning of 'premium':
      • IsPremium now refers to the Premium standard stash tab (the standard size with color header). Before, it would refer to any non-standard stash tab. This is for consistency with the other Is properties, such as IsPremiumQuad or IsPremiumEssence.
      • IsPremiumFlagged has been added to refer to any non-standard stash tab that has the premium flag on it. All non-standard tabs are premium flagged currently.
      • For consistency: IsPublic -> IsPublicFlagged, IsRemoveOnly -> IsRemoveOnlyFlagged, IsHidden -> IsHiddenFlagged to help avoid confusion with the premium wording.
  • TransitionTypes.Labyrinth added for Labyrinth area transitions (type 5) as they otherwise would show up as 'Unknown'.
  • InventoryControl.HasRewardTabOverride added to distinguish the new RewardUi controls.
  • RewardUi changes
    • InventoryControl removed as there is no longer one inventory control for the reward UI.
    • InventoryControls added, which is a list of InventoryControlWrappers that represent all the quest rewards.
    • Use the 'CustomTabItem' property to get the item with these InventoryControlWrappers as you would with any other special tab. The id-less variants of the API have to be used for these controls as with the other special tabs.
  • SocketColor.Abyss added.
  • Socket matching logic updated to properly match Abyss and White sockets.
  • LinkedSocketColors, SocketedSkillGemsByLinks, and SocketedGems are now properly logged in Item.Dump.
  • To avoid breaking changes, various places where the "Skill Gem" text is used will be kept as-is rather than rename to account for the fact Abyss Jewels can now be equipped.
  • InventoryControlWrapper.EquipSkillGem updated to handle Abyss Jewels.
  • MapComponent.MapSeries added and is exposed through Item.MapSeries.
  • StashUi.MapTab placeholder added, but there's no API support for that tab.
  • Added the IUrlProvider interface.
  • Updated the 3rdparty content guis to support a clickable Guide link.
  • Updates for 3.1.1.2
  • Updates for 3.1.1.1
  • Updates for 3.1.0.5
  • Updates for 3.1.0.4
  • Updates for 3.1.0.3
  • Updates for 3.1.0.2
  • Updates for 3.1.0.1

Roadmap

We will be looking to post an updated roadmap of Exilebuddy development heading into the new year over the next few weeks. At the top of the list will most definitely be a new routine system to handle the ever changing game mechanics and how combat isn't the same as it used to be. With the addition of a lot of skills this patch, there was not enough time to consider significant routine updates for the start of this update cycle.
 
Last edited:
Exilebuddy 3.2+ Release

Our first Exilebuddy 3.2+ Beta will be deployed really soon (minutes). Expect there to be bugs and unnoticed issues, as is always the case with these large updates. We'll work as diligently as possible to get things smoothed out, but the game needs to also stabilize with patches and changes.

We've tested and checked as much as possible, but due to there being so many patches and changes, it's highly likely we missed something. Please watch your bots and do not run them unattended. Make sure to report all issues in the Support forums with logs, and we'll get

Changelog

* Updates for 3.2.0.1 - 3.2.0.7

[QuestBot]
- Added support for "Vilenta's Vengeance" quest in Act 10.

[MapBot]
- Now bot will correctly take sacrifice fragments from Fragment stash tab.

[EXtensions]
- Renamed Inventories.FastMoveFromCurrencyTab to FastMoveFromPremiumStashTab. All users must update their code where its used.

* Added InGameState.IsNewHelpPageAvailablePopupShowing to know when the other help popup is showing.
* Added the InGameState.DismissHelpPopup function.

* InstanceInfo.MinimapIcons added to expose icons on the minimap.

* ActionKeys updated with missing keys: open_atlas_screen, open_cosmetics_inventory, open_guidebook_panel, open_mtx_stash, open_pantheon_panel, throw_net.

* The character list in AutoLogin will now display names in alphabetical order.

* ChallengesUi updates for some Bestiary tab (not data) processing.

* DatWorldAreaWrapper.IsMenagerieArea added. This is considered a "combat area".
* WorldUi.GoToMenagerie added.

* ContextMenu.LeaveCurrentParty added.
* ContextMenu.VisitMenagerie added.

* Skill.CurrentlyRequiresPercentPower added, as an aurafied curse would return false with RequiresPercentPower.
* Various DatWorldAreaWrapper id checking updates to account for inconsistent naming in the game.
* Skill.CastTime updated to handle a stat warcries use.

* NotificationHud revamps:
** NotificationType updated to now include: Guild, Info, SoloPvP, PartyPvP
** NotificationData added to store data for the different notification events (AccountName, CharacterName, CharacterLevel, CharacterArea, Information, GuildName)
** ProcessNotificationEx delegate added to represent the new user handler. It takes a NotificationData and a NotificationType, and should return a bool if the notification should be accepted or dismissed (like before).
** HandleNotificationResult.NoHandler added for a null check on the user handler when calling HandleNotificationHelper/HandleNotificationHelperEx.
** HandleNotificationEx added to handle more notifications and expose more data than before.
** HandleNotification is now marked as obsolete, but will not be removed until 3.2+.
** Various caching improvements made to strings that come from LookupClientString.

* LoginState.UnlockAccountUi added.
** Cancel function added to click the button.
** ResendEmail function added to click the button.
** Unlock function added to click the button.

* LoginState.UnlockAccountUiResult enum added

* LoginState.IsEnterUnlockCodeDialogVisible is now marked as Obsolete, use LoginState.UnlockAccountUi.IsOpened instead

Please be sure to read the: Exiledbuddy 3.2.0 Downtime Status Thread
 
Status
Not open for further replies.
Back
Top