Welcome to the Exilebuddy Release thread for Forsaken Masters!
Please start with the Support F.A.Q.. All support issues should go in the Support Forum.
All current guides for Exilebuddy are now in the Exilebuddy Guides section.
If you're new to Exilebuddy, it is highly recommend you read over the posted guides and stickies multiple times before diving into Exilebuddy. For existing users who have been following the Beta, the guides and stickies contain some additional information that is worth checking over again.
This release marks a final "stable" version of Exilebuddy for Forsaken Masters. There are no more large rewrites, or huge changes planned. Exilebuddy is now in a maintenance mode, and will be updated accordingly based on game changes.
Download links can be found in the "Beta vs Release" section of the Exilebuddy Project Guide, so be sure to read that over first.
Versions
Release
#81 (Poe 1.2.4.12)
#80 (Poe 1.2.4.12)
#79 (Poe 1.2.4.10)
Beta
#965
#964
#963
#962
#961
#960
#959
Please start with the Support F.A.Q.. All support issues should go in the Support Forum.
All current guides for Exilebuddy are now in the Exilebuddy Guides section.
If you're new to Exilebuddy, it is highly recommend you read over the posted guides and stickies multiple times before diving into Exilebuddy. For existing users who have been following the Beta, the guides and stickies contain some additional information that is worth checking over again.
This release marks a final "stable" version of Exilebuddy for Forsaken Masters. There are no more large rewrites, or huge changes planned. Exilebuddy is now in a maintenance mode, and will be updated accordingly based on game changes.
Download links can be found in the "Beta vs Release" section of the Exilebuddy Project Guide, so be sure to read that over first.
Versions
Release
#81 (Poe 1.2.4.12)
- Beta #965.
#80 (Poe 1.2.4.12)
- Beta #960 - #964.
#79 (Poe 1.2.4.10)
- Beta #959.
#78 (Poe 1.2.4.10)
#77 (Poe 1.2.4.10)
#76 (Poe 1.2.4.9)
#75 (Poe 1.2.4.8)
#74 (Poe 1.2.4.6)
#73 (Poe 1.2.4.4)
#72 (Poe 1.2.4.1)
#71 (Poe 1.2.3.3)
#70 (Poe 1.2.3.2)
#69 (Poe 1.2.2.4)
- Beta #957 - #958.
#77 (Poe 1.2.4.10)
- Beta #955 - #956.
#76 (Poe 1.2.4.9)
- Beta #949 - #954.
#75 (Poe 1.2.4.8)
- Beta #944 - #947.
#74 (Poe 1.2.4.6)
- Beta #940 - #943.
#73 (Poe 1.2.4.4)
- Beta #938 - #939.
#72 (Poe 1.2.4.1)
- Beta #921 - #937.
#71 (Poe 1.2.3.3)
- Beta #919.
#70 (Poe 1.2.3.2)
- Beta #917 - #918.
#69 (Poe 1.2.2.4)
- Beta->Release build.
Beta
#965
- Login functionality fixed. It broke due to the unannounced patch that added the countdown timer.
- VendorItem.CanAfford is no longer exposed due to not working anymore.
- ParseVendorCostFromTextCollation (used by PurchasePanel) updated to parse the new format of item tooltips in the client.
- WithdrawTask updated to support withdrawing: Alch, Chaos, Chance, Alts, Augments, Scour, Transmutation, and Vaal.
- WithdrawTask will now use BasicGrindBotSettings.MaxWithdrawTabs to limit how many tabs are searched to withdraw from. This is to avoid unnecessary stash traversal when trying to withdraw currency items.
- BasicGrindBot's ShouldStashItem function now checks for the new currency items that are able to be withdrawn so they are not stashed.
- Options to withdraw the new currency types have been added to main gui. This allows devs to develop logic for chancing items or rolling strongboxes without the bot's stashing functions from getting in the way.
- ExampleRoutineSettings.EnableAurasFromItems added. This allows users to disable the new support for using auras from corrupted items introduced not too long ago.
#964
- Updates for poe-1.2.4.12.
- BaseComponent layout updated so IsCorrupted is now correct.
- StashPanel.CurrentTabItems and GuildStashPanel.CurrentTabItems are now internal to avoid issues with the items they return not containing location data. Please use "CurrentTabInventory" to get the Inventory of the current tab, which then contains a list of Items.
- GuildStashPanel.CurrentTab, PurchasePanel.CurrentTab, and StashPanel.CurrentTab have been renamed to CurrentTabName to avoid confusion with the types of other API functions.
#963
- WithdrawItemsCoroutine now calls the user's shouldContinue function after shouldWithdrawFromTab returns false, and before the next tab is processed. This allows users to limit how many tabs get processed.
- The ChaosChanceRecipe has been updated to take advantage of the previous change. A new constant, MaxTabs is now used to determine how many tabs are checked. Since there are now settings or GUI for that plugin at this time, users must modify the code to change the tabs checked, and then re-apply those changes after updates.
- Tools GUI on MainWindow now catches exceptions from tools to prevent the main gui from bricking.
- Fixed a bug where DnD logic would fail if the passive reset overlay was showing.
- StashPanel.FastMove now supports fast moving from a remove-only tab.
- Added support for launching the PoE client (uses -noupdate to prevent client updates). Steam is not currently supported or tested.
- LoginSettings.ClientPath added to store the client path for the Path of Exile exe to launch with 'autolaunch'.
- Using the commandline argument 'exe', users can set the client to launch. This argument will set the LoginSettings.ClientPath property. For example, ExilebuddyBETA.exe --exe:"Y:\Path of Exile\PathOfExile.exe"
- Using the commandline argument 'autolaunch', the bot will launch the PoE client and auto-attach. For example, ExilebuddyBETA.exe --autolaunch
- The behavior of launching the client is as follows:
- The bot will start the game process and wait for it to fully load before auto-attaching.
- If the "Error" message box for too many clients is shown, the bot will kill the client and close.
- The bot will be able to launch clients from network paths, e.g., "\\SOME-PC\Path of Exile\PathOfExile.exe", as long as you have proper permissions.
#962
- StashTask, SellTask, and IdTask now reset their attempt counters to prevent the bot from stopping from intentional multiple runs for stashing, selling, or iding. Before, the bot would only reset the counters upon an area change, since only one process of stashing and selling would be performed.
#961
- Added a new logging implementation with log4net that supports multiple loggers. This allows devs to have their own logging instances to make their life easier. The design has also been updated to not require gui initialization unlike before.
- ScriptManager updated to take an ILog for support with the new logging system as well as a custom AppDomain.
- ScriptManagerIoproxy -> ScriptManager.IoProxy.
- ExamplePlugin updated with support for a custom logger that logs to its own GUI.
#960
- The GridExplorer type is now public, instead of internal.
#959
- OverwordAreaTweaks updated to fix a compile error introduced in the #958.
#958
#957
#956
#955
#954
#952
#951
#950
#949
#947
#946
#945
#944
#943
#942
#941
#940
#939
#938
#937
#936
#934
#932
#927
#924 (Poe 1.2.3.3)
#921 (Poe 1.2.3.3)
#919 (Poe 1.2.3.3)
#918 (Poe 1.2.3.2)
#917 (Poe 1.2.3.1)
- GreyMagic updates for the new Windows KB3000850 update.
#957
- Fixed Name/Description being switched in AssignMoveSkillTask.
- Fixed spelling in UseLooseCandleTask.
- Support added to ExampleRoutine to cast auras from corrupted items.
- Added in experimental API support for Zana's map device though MasterDevicePanel. It may, or may not work yet.
#956
- GuildStashPanel updated in the same way StashPanel was. It should work with new Remove-only tabs now.
- ExampleRoutineSettings.DebugAuras added. This setting can be enabled though the gui to allow users to see debug output as to why an aura isn't being cast and any issues related to that can be looked into.
#955
- Updates for poe-1.2.4.10.
- StashPanel has undergone several major changes due to breaking from the way Remove-only tabs were added from the league merges.
- StashPanel.Tabs has been removed. Instead, StashPanel.TabNames can be used to obtain a list of the current visible tab names in display order if needed. InstanceInfo.StashTabs can be used to obtain all stash tabs still, but the DisplayIndex property is now useless.
- GuildStashPanel is most likely broken when Remove-only tabs are present, but since BasicGrindBot does not make use of it, that API will be updated "soon".
#954
- Updates for poe-1.2.4.9.
- More variants of Utility.ClosedDoorBetween added.
- CustomPlayerMover should now filter out positions behind closed doors.
#952
- Various updates for hideout support. BasicGrindBot will not offer features to utilize the hideout automatically though. However, devs are able to make use of them as needed for their stuff.
- HandleInventoryItemsTask/IdTask/SellTask/TravelToGrindZoneTask/WithdrawTask can now run in hideouts.
- AreaPather updated to link hideouts to all other areas with waypoints.
- SellItemsCoroutine will now sell to the first master found in hideouts using the following priority list: Haku, Vorici, Elreon, Catarina, Vagan, Tora, Zana. If a master cannot be found to sell to, SellItemsCoroutineError.NoNpc will now be returned.
- ProcessHookManager.ResetCursor now uses the correct center of the screen for client coordinates.
- ExilePather.GetPointsOnSegment fixed to return a list of points in the direction of start to end. Under some cases, the order was reversed.
#951
- LootItemsTask will now properly enable Always Highlight before trying to loot an item.
- LootItemsTask will no longer busy wait ~1.5s if loot can't be interacted with the first time. Instead it will toggle the labels quickly and try again like it used to.
- Input.HighlightObject logic updated to hopefully fix the random highlight issue from 1.2.4.
- ExampleRoutine's logic for disabling Always Highlight around strongboxes has been reworked to try and avoid disabling it until it's actually needed. It should now properly re-enable it when returning false.
- Removed dead entry logging from OverwordAreaTweaks.
#950
- Based on user feedback, OverwordAreaTweaks logic has been updated to remove nearby dead mob positions to avoid useless actions of checking corpses one by one. The previous range change of 15 -> 50 has been reverted avoid issues with CRs that have low combat ranges. The reason for this change, should now be addressed with the dead corpse removal.
- There were two variants of InteractWith in Coroutines with slightly different logic. The variant that took a generic type now contains the core logic, whereas the variant without the generic type, simply calls the generic type variant. Before the object is interacted with, the input state is now reset.
- TagWaypointTask will now reset the waypoint's cached location after death or a movement error to avoid the case of the bot dying, reviving on a different area, and then being unable to move to the waypoint again (Sceptre of God).
#949
- Various ToLower changed to ToLowerInvariant to fix cultural issues with string processing.
- The delay before trying to make a new instance has been increased in a few places to try and avoid the issue of the gui not being fully loaded when there are a lot of instances, which causes the bot to mislick the new instance button (because the scrollview is not fully filled in).
- OverwordAreaTweaks logic updated to not attempt to find a new mob to move towards until the current one is taken care of. This increases backtracking, but avoids the issue of the bot cycling back and forth between two mobs whose position distance changes in such a way that creates an infinite cycle. This can happen quite often in cavern and jail tilesets, but in any area with corners.
#947
- The LeapSlamPlayerMover now does not attempt to use the skill in towns, hideouts, or the map room.
- Updates for 1.2.4.8.
#946
- GridExplorer is back to looking at 5 tiles around it.
- LokiPoe.InGameState.IsDoNotDisturbedEnabled added to expose the client's current DnD status.
- BasicGrindBotSettings.AutoDoNotDisturb added to let users enable auto-dnd if they don't want to set it manually themselves.
- BasicGrindBot now supports enabling DnD in the client to prevent invite spam. This was added in response to reports of people getting invite spammed. Under certain situation, it would be possible for the bot to accept these invites, because popups are evil (as we all know with ads).
- If DnD is not enabled in the client, it will be possible for people to spam you with invites and there's a good chance they'll interfere with certain bot functions (such as iding or stashing) due to the way the client is setup. If you're not watching your bot, DnD mode is strongly suggested.
- BotManager.MsBeforeNextTick added. This provides a means of delaying the next bot tick, without having to manually sleep in all logic that needs such functionality.
#945
- OpenChestTask will now always execute in non-overworld areas. Before, it would only run in the current grindzone or if a chest was in range. This fixes the issue of the bot sometimes not opening Vaal Vessels in corrupted areas. It also would affect StrongBoxes.
- CombatTask has been modified the same way as OpenChestTask.
- LootItemsTask implementation has changed to always run, rather than only run for items "in range" outside of the grindzone. Before, the bot would not loot items in areas between grindzones, which was as designed, but unintended.
- HandleDoorsTask logic updated to enable Always Highlight to address a case where a nearby StrongBox would otherwise interfere.
- HandleDoorsTask logic tweaked to try 5 times total, and then will blacklist the door for 5s to let other logic run. Upon failing to open the door a second set of times, the current bot run will be abandoned.
- GridExplorer now has two new configurable properties: TileKnownRadius and TileSeenRadius. This allows users to change the vision behavior of the explorer, to make it visit more nodes by limiting how far around it looks. Uses should read the API docs before changing these.
- GridExplorer will now only look at 4 tiles around it in each direction rather than 5.
- AreaStateCache item update logic execute rate increased from 100ms to 25ms.
- ExplorationCompleteTask will now not get stuck on trying to take an area transition or waypoint if the bot is unable to move to it.
- GridExplorer now implements a AutoResetOnAreaChange property to set whether or not the instance will auto-reset on an area change. This is to allow users to correctly use GridExplorer for multiple areas (as AreaStateCache uses one per area).
- AreaStateCache will now Unload and "forget" about areas of the same area type as opposed to unloading (but not removing) all previous areas. This should fix the issue of the explorer getting reset when going between corrupted areas, maps, town, or other side areas.
- A bug where AreaStateCache would eventually accumulate tons of previous areas and never clear has been fixed. The side effect is that areas that must be traveled though to reach the grindzone will be "forgotten".
- ExplorationCompleteTask will now no longer trigger early for any non-overworld area, and not trigger early if the current area is not the set grindzone.
- Additional AutoLoginErrors are now handled so the bot stops rather than endlessly spamming the same error message over an over.
#944
- CoordinateExtensions.World3ToMap and CoordinateExtensions.World3ToWorld added. CoordinateExtensions.MapToWorld (single float param) removed because it's not consistent.
- SkillBarPanel.UseAt variants added that take world coordinates via Vector2 and Vector3 types.
- Input.MoveMouseToPosition variants added that take world coordinates via Vector2 and Vector3 types.
- NetworkObject.ModelCenterWorld added. This property returns the world position of the center of the render model.
- ExampleRoutine now uses ModelCenterWorld as the location to use skills. This should fix casting issues where the hit boxes for certain mobs are not consistent with others, resulting in the bot not using skills when it's supposed to (Assault Ribbons, for example).
#943
- Updates for 1.2.4.6.
#942
- InGameState.InventoryPanel.PlaceCursorIntoNeck and InGameState.InventoryPanel.PickupNeckToCursor were missing, so they have been added.
#941
- Added LocalPlayer.Passives, which is an IEnumerable of DatPassiveSkillWrapper that represent the current passives the character has.
- Added DatPassiveSkillWrapper, which wraps passive skills.
- Dat now builds a stats and passive skills lookup table to avoid performance issue due to there being 1000's of stats and 100s of passives. Passives contain stat data, and trying to access them normally would cause significant slowdowns.
- Dat.PassiveSkills is now provided to iterate though passive skill data. The client only loads this data once you're in game, so you'll have to be in-game to dump it.
- Added Scripts\DumpPassives.cs to dump all game passives and their associated stats/values.
#940
- AreaStateCache now does item logging to track down potential looting issues.
- The distance to remove items from being looted has been lowered from 100 to 30.
- TownRunTask now logs all items that will be abandoned when the mode is to go to town and not return to the current instance.
- DominusFight now longer triggers a town run after killing the boss. Instead it marks itself to not execute anymore, so all tasks that come after it will now execute normally. This will allow GrindZoneChanger to be used with boss farming plugins without coding the logic into the boss farming plugins themselves.
- Added an OverwordAreaTweaks plugin that can be used to (typically) full clear most areas. The side effect of this plugin example is more bot backtracking, as monster positions are not eliminated until the bot travels really close to the detected position to ensure the monster is dead.
- CorruptedAreaTweaks now checks the blacklist before including mobs.
- BotGui window closing logic updated to ensure the current auth session is closed first, before running application specific unloading code.
- Bot/Routine/Plugin Managers Dispose -> Deinitialize.
- Bot/Routine/Plugin Managers Deinitialize function updated to try/catch the object's Dispose function to prevent major issues.
- BotManager / PluginManager / RoutineManager Initialize/Dispose pattern updated. Framelock is no longer acquired for each.
- IBase no longer implements IDisposable, because the model is not correct for what was being done. No changes are needed in current code, as IBase now implements a void Dispose function in place. However, I want to change Dispose to Deinitialize in a future version.
#939
- Updates for 1.2.4.4.
- AreaStateCache will no longer include items allocated to other players in ItemLocations.
- LootItemsTask will now execute significantly longer in order to try and loot an item. This is to address issues with desync or the client being unable to loot an item right away after it drops. This might require some more fine tuning, but the bot should not give up on trying to loot items so quickly after 1.2.4 changes.
- ScriptManager is now a non-static class. Various improvements have been made so it can be used in a profile system. ExamplePlugin has been updated to compile with the new changes.
#938
- StashPanel.SwitchToTab and GuildStashPanel.SwitchToTab should now work with 1.2.4.
#937
- Additional logging lines involving the new instance override flag has been added to track down any future issues.
- The long reported new instance bug has been found and should be fixed.
- ConfigManager updated for 1.2.4. Commented out other functionality due to the changes.
- TakeClosestPortal logging fixes.
- TravelThroughBossAreasTask no longer incorrectly resets the bot upon a death outside of a boss area.
#936
- Updates for 1.2.4.1.
- ExplorationCompleteTask will now create a new instance to the current area when the method is Waypoint, rather than returning to town.
- Spelling fixes in Herald skills in Actor.
- Herald of Thunder added to ExampleRoutine.
- An auto-cast section for Vaal skills has been added.
#934
- CompiledAssemblies is now re-created if it's missing.
- CodeCompiler now compiles to separate directories in CompiledAssemblies so users can run multiple copies of the bot from the same folder again.
#932
- baml support added to CodeCompiler for easier gui creation with code-behind support. A new guide will be made soon detailing this.
- JsonSettings fix for when users cancel the configuration selection and it bricks the bot until Settings are deleted.
#927
- CodeCompiler changes so users can debug their code alongside the bot.
#924 (Poe 1.2.3.3)
- DefaultPlayerMover.MoveTowards now does a pathfind check to avoid stuck issues due to the path distance being much larger.
- Added CorruptedAreaTweaks so BasicGrindBot will fight all corrupted area bosses.
- ReturnToGrindZoneTask now will cancel if the bot gets stuck trying to get back to a portal that is unable to be pathfound to.
- HasHearldOfAshBuff/HasHearldOfIceBuff -> HasHeraldOfAshBuff/HasHeraldOfIceBuff.
- ProcessHookManager.Deinitialize now called when there is an auth issue.
- ScriptManager is now exposed so users can do their own script execution logic.
- ExamplePlugin now shows manual script execution logic.
- ExamplePlugin default text now set for python execution.
- ScriptManager.GetStatement now does not append script text into a pre-formatted text statement. This it to solve issues of multi-line python code execution.
- btnLogin_Click now catches exceptions.
- Fixed an error message statement in ExampleRoutine.
#921 (Poe 1.2.3.3)
- IsShieldTyoe -> IsShieldType.
- Added some extra debugging to track down town movement issues in random instances.
- WalkablePositionFor for NetworkObjects now includes a noCache param to match the Vector2i variant.
- TalkToNpc now does not cast to Npc so bandits can be talked to.
- LokiPoe.ExtractStat/ExtractMatchStat functions added for working with the new affix strings.
- GlobalSettings.TerminatePoeOnAuthIssue added to force close the client on an auth error.
- GlobalSettings.LogoutPoeOnAuthIssue should now properly logout under normal conditions.
- ExplorationCompleteTask will not complete early when in a corrupted area.
- A new plugin example has been added. CustomPlayerMover shows users how they can change general bot movement for any logic that uses PlayerMover.MoveTowards. The provided example gives some basic code for using Leap Slam.
#919 (Poe 1.2.3.3)
- Updates for 1.2.3.3.
- ClearItemLocations now clears the ignored item list so the bot doesn't skip loot after it dies in boss areas.
- ClearItemLocations is now called after local area transitions to reset looting.
- IdTask will no longer stop the bot if there are no more id scrolls in stash to complete iding.
- ExampleRoutine has changes made to help the cache model in a few places where it was incorrect before. All uses of bestTarget are done before any API calls are used that can leave the current frame. This means HandleShrines logic needs to come after canSee/pathDistance/blockedByDoor. Two locations where NumberOfMobsNear was used further down in the logic chain have been moved up to the area where data is cached.
#918 (Poe 1.2.3.2)
- Updates for 1.2.3.2.
#917 (Poe 1.2.3.1)
- Updates for 1.2.3.1.
- ToUpper -> ToUpperInvariant to avoid culture issues.
- StatContainer updated to not throw errors when stats are incorrect due to the current system's culture settings.
Last edited: