Releases: Xian55/WowClassicGrindBot
1.2.3
Addon version 1.2.3
The most noticeable change is to switch the project to dotnet6, Comes with its on benefit, taking advantage of the rewritten IO where PathingAPIV1 benefits the most.
Spent a great deal of effort to root out the async/await usage from the hot path. Improving the responsiveness quite significantly. Also Wait no longer allocates new objects when waiting for new feed from addon thread, rather uses thread synchronization.
Since many Goal execution moved to the OnEnter method, its by design the action no longer be able to repeat itself unless the KeyAction.Charge > 1. This was a long annoying issue, buffing and using consumables multiple times!
Reorganized the those goals which were heavily relied on the navigation with their own implementation. From now own all of them use the unified Navigation component. For more consistent behavior. On the other hand Navigation no longer blocks the bot thread but rather delegates the path request to its own thread and it is possible to discard the path result incase the owner goal no longer active.
While working on Navigation redesigned the AdhocNPCGoal both backend and in-game addon to eliminate any downtime during selling grey items. WalkToCorpse should behave much better by avoiding infinite death run.
As #255 merged to the dev branch, did a little bit overhaul around NpcNameFinder component, using parallelism to reduce the duration of the image processing time quite significantly improving the responsiveness even more.
What's Changed
Breaking Changes!
- Upgrade: dotnet6.0 by @Xian55 in #228
 - Upgrade: 
netstandard2.1projects todotnet6.0by @Xian55 in #229 - Upgrade: every project to 
dotnet6.0by @Xian55 in #232 - Refactor: 
KeyAction.CastIfAddsVisiblereplaced withAddsVisible. RequirementCD==0replaced byWhenUsableby @Xian55 in #252 
Fixes 🛠
- Addon: [1.1.52] - Fix: 
UnitCastingInfoandUnitChannelInfofor_classic_. Also for_classic_era_by @Xian55 in #227 - Addon: [1.1.53] - Fix: TBC lua error while channeling by @Xian55 in #233
 - Fix: Don't allow to pass startup incase 
MainWindowHandleis zero. More sanity check for Auto FrameConfiguration by @Xian55 in #235 - Addon: [1.1.55] - Feature: Swagger overhaul by @Xian55 in #239
 - Core: Fix: Druid unable to cast the next spell after shapeshift - still not usable. Have to wait for GCD. Only consider Bash when its off cd by @Xian55 in #241
 - Feature: nonblocking navigation - small fixes by @Xian55 in #254
 
New Features 🎉
- Game: 
WoWProcessInputuses source generated logging to avoid boxing by @Xian55 in #230 - Feature: Core: Use 
ValueTask- Wait: Reduce internal delay from 4ms to 2ms by @Xian55 in #231 - Feature: PPather less exception and logging by @Xian55 in #236
 - Addon: [1.1.54] - Fix: macro which contains items shows up always usable even when the item dosen't exists in inventory by @Xian55 in #237
 - Addon: [1.1.56] - Implement a simple inventory cache. Flush only the diffs. There for the item change should be instant. Adhoc actions no longer repeat itself. by @Xian55 in #240
 - Core: ApproachTargetGoal: No longer attempts to dismount by @Xian55 in #242
 - Core: LootGoal: Take advantage of the known corpse locations when no npcname was visible. by @Xian55 in #243
 - Addon [1.2.0]: Refactor: Taskless and awaitless by @Xian55 in #244
 - Feature: FollowRouteGoal improvements by @Xian55 in #246
 - Addon [1.2.1]: Feature: Improved 
AdhocNpcGoalwith iterator based grey item selling and navigation by @Xian55 in #247 - Addon [1.2.2]: Feature: Extract goals navigations to a single module by @Xian55 in #248
 - Core: 
GoapGoalGet rid of unused functions. Refactor Repeatable flag by Moving the logic fromPerformActiontoOnEnter. by @Xian55 in #249 - Addon [1.2.3]: Create a table for useless GetShapeshiftForm api. Fix for Druid and Paladin. by @Xian55 in #250
 - Core: 
AdhocGoalandParallelGoalno longer repeatable. by @Xian55 in #251 - Feature: NpcNameFinder fuzzy search option - Processing with 
Parallel.Forby @Xian55 in #255 
Other Changes
- Refactor: use 
nameof()instead of using reflectionGetType().Nameby @Xian55 in #245 - Replace 
DateTime.NowwithDateTime.UtcNowinternally. by @Xian55 in #253 
There are many more changes, if you interested checkout each Pull request for further details or inspect the Full Changelog: 1.1.51...1.2.3
1.1.51
Addon version 1.1.51
Probably the biggest change was #216. As a result the memory usage has been cut significantly from ~300mb -> ~150mb! Not to mention the better usage of the GC. Should yield a better and more consistent and deterministic behavior.
Other than that, there are changes in many areas of the project, take a look at the curated list below.
What's Changed
Fixes 🛠
- Determine 
Form.Druid_Cat_Prowlproperly by @Xian55 in #199 - Upon populating the default KeyAction such as 
Interact,Approach,AutoAttack,StopAttacksingle requirement was not properly obtained by the user. by @Xian55 in #205 - TargetPetTarget goal use 
dangercombatkey instead of pureincombat. by @Xian55 in #206 - Druid moonfire pull + fix typo by @Xian55 in #207
- Fixed an issue with moonfire pull while closing the gap from the target in the very last moment shifts out from cat and does a moonfire.
 - Fixed a typo in 
Json/class/Druid_30_cat_bear.json 
 - Pet classes - After killing an enemy and having more of them the player properly targets the pet target. by @Xian55 in #208
 - Frame Configuration sanity check and force window to be topmost by @Xian55 in #210
 - PathingV1 NRE by @Xian55 in #221
 - Upon player login - 
/reload-Init Statebutton the meta info from the bags properly getting flushed by the addon by @Xian55 in #225- Addon Version: 1.1.51
 
 Paladin_20profile regarding typo MainHandSpeed. Use variables.
New Features 🎉
- Ability to create user defined variables in 
ClassConfigby @Xian55 in #200- Format all 
Warlockprofiles - Demonstrate user defined variable in 
Warlockprofiles 
 - Format all 
 - Expose 
TargetTargetEnumby @Xian55 in #201- Added 
TargetsMecondition - Added 
TargetsPetcondition - Added 
TargetsNonecondition - Demonstrate 
Targets*condition in Warlock profiles. Only use Shadow Bolt when somebody else tanking the target. 
 - Added 
 - Configurable movement keys by @Xian55 in #203
- Added the ability to change the default movement keys - arrows  - to any ConsoleKey like 
WASD - StopMoving: Using 
ValueTaskinstead ofTask 
 - Added the ability to change the default movement keys - arrows  - to any ConsoleKey like 
 - Improve navigation turn input by @Xian55 in #204
- Input: Introduce a new 
KeyPressNoDelayapi. Where there will be no extra random delay, just the specified milliseconds. On top of this whenKeyPresslogs the amount of time now considers the random delay and returns the total amount of time spent. - Core: Refactor 
PlayerDirection. No longer blocks the current Thread with Sleep. Rather using Task + Task.Delay to implement waiting mechanism. On the other hand usesKeyPressNoDelayso truly only presses the button for the calculated duration based onTurnAmount->TurnDuration. - Core: adjust distances in FollowPath goal behaviors
 
 - Input: Introduce a new 
 - Improve CastingHandler + ClassConfig + KeyAction / Frontend changes by @Xian55 in #212
 - Toggle Screenshot thread by @Xian55 in #214
- ScreenshotCompontent: Clicking on the live preview toggles the visibility
 
 - Added Druid buff 
Omen of Clarityby @Xian55 in #215- Addon Version: 1.1.48
 
 - Better bitmap handling by @Xian55 in #216
AddonData,WoWScreen: Better resource management by locking the Bitmap data while it has been used for reading the pixel data. On the other hand making AddonData more read friendly.NpcNameFinder: better resource management. Only locking the BitmapData while its being accessed for read. Using structs instead of classes.SharedLib: Allow unsafe code
 - Added 
LibClassicCasterinoto polyfill targetUnitCastingInfoandUnitChannelInfofor SoM by @Xian55 in #217- Addon bumped to 1.1.49
 
 - Refactor: Hunter 
"Aspect of"by @Xian55 in #218- Keep track of 
Aspect of the Viper - Tidy up all hunter profiles
 
 - Keep track of 
 - Util Project: Create route by mob spawn location by @Xian55 in #219
 - Path Editor update by @Xian55 in #222
 - Improve remote pathing v3 by @Xian55 in #224
 - Frontend: BotHeader component shows more info about the status of the initial obtaining process. by @Xian55 in #226
 
Added Profiles
Warror_1_MovementKeysexample profile for changing default keybindingHunter_66profile usingKill CommandandAspect of the Viper. Pretty mana conservative.Warrior_20andWarrior_24profiles
Added first wiki page
CastingHandler changes #212
- Remove runtime check from 
CastIfReady()regardingKeyAction.ConseleKey CastingHandlerremovePressCastKeyAndWaitForCastToEnd()CastingHandler: SplitCastIfReady()intoCanRun()andCast()CastingHandler:Cast()only checkFormrequirement when its neededCastingHandler:Cast()Remove duplicateGCDwait when switching fromShootto any spell.CastingHandler:WaitForGCD()move condition outside.CastingHandler:SwitchForm()no longer handlesFormcondition existence and sameForm.KeyAction: Get rid of try catch blocks. SimplyfiyLastClickedrelated calls.MountHandler: Druid switchesTravel_Formincase its mentioned inClassConfig. Otherwise uses normal mount.CastingHandler:SwitchForm()better condition for awaiting the desired Form.KeyAction: Introduce new propertySkipValidationafter pressing the button don't wait for the in-game effect.ClassConfig: DefaultKeyActionsInteractApproachAutoAttackStopAttackusesSkipValidation
Frontend changes
LoggerSinkusesRingBufferwith 250 size instead of List.GoapGoalView: Ability to expand Goals with multipleKeyActionview.
Core Fixes
- ClassConfig: 
InitializeKeyActions()respect user defined values. 
PathMaker changes #219
- Added Utility project to create routes quickly based on specific mob spawn locations
 
Usage
- Pick a mob from wowhead like Serpent
 - Left click one of the spawn node
 - Copy All > Coordinates
 - Head to 
Utilities\PathMaker\data\create aninput.txt - Copy the clipboard content to 
input.txt - Run the app
 - Result is 
output.json 
Added Routes
Json/path/_pack/60-70/Blade's Edge Mountains/67 Scalewing Serpent.jsonJson/path/_pack/60-70/Netherstorm/68-69 Swiftwing Shredder.json
Path Editor changes #221
- Added panzoom.js to handle Pan and Zoom. Note: the library is not supported in Internet Explorer
 Path EditorandRouteComponentgrid component now support zoom and pan.
Features
- Clicking on the grid svg elements - circle - makes a selection.
 - Added new point called 
Preview Pointits usually shows the previous state of the Selected point. - Incase the Selected point input boxes(x,y) edited then it becomes Preview point
 - Selected point can be 
Deleted. Incase multiple node share the same location, all will be removed. - Selected point can be 
Moved to Player - Selected point can be 
Moved to Preview point - Added 
PreviousandNextbutton in order to cycle between the path points - Insert new point at player location
 - During recording, there's a new indicator which shows how much the 
Distanceslider affects the recording in real time. 
Fixes
RouteInto.PathPoints: no longer contains the route twice whenThereAndBackflag enabled.Path EditorandRouteComponentno longer renders twice thePathPointslist.RouteComponent: no longer attempts to render the points multiple times per frame.RouteInto: Properly renders the distances in yards when renderingPathPOIsuch asCorpse.RouteComponent: Properly renders the orange player triangle indicator.- Fixed an issue, 
RouteComponentno longer shows a single point after pressing theClearbutton inPath Recorderpage and switching back to the dashboard. - Fixed an issue where player can go outside of the grid in 
RouteComponent 
Media
Updated Path Recorder which has been renamed to Path Editor
Remote Pathing V3 changes #224
- The server will transform back to the original coordinate system to match the input.
 - Avoid allocating new list of 
WorldMapArea. - The api changed. Its uses the default 
PATHto take advantage interpolation and/or smoothing. 
...
1.1.47
Addon version: 1.1.47
The goal was to add more support for the Warrior class before SoM release. Added many small features. One key feature probably is how the scripting language of RequirementFactory has been extended. At the end upgraded the project to .net5 🚀
What's Changed
Breaking Changes!
- Migrate project to .net5 by @Xian55 in #187
 - Updated the projects 3rd party dependencies to comply 
.net5 - Minor warning fixes about 
CA1805 - Minor warning fixes about 
CA1806 - Set 
BlazorServerandPathingAPIprojectsPlatformTargettox86 
Fixes 🛠
- Fix: Support 
HealthCostby offsetting thePowerTypeby 2 9d8cd59 - Fix: 
GoapAgentOnKillCredit listener were not disposed after loading a new profile :( ae5bac7 - Fix: BagReader properly update bagmeta. When any of the bag related que is empty show black cells 579a5b8
 - Fix: Whenever Toggle Bot state or Loading a class profile - Reset 
LevelTrackerandCreatureHistoryf1617d2 - Fix: 
CreatureHistorymake sure to remove expired ones even if the corresponding cell were not updated! 2a9495e - Addon: [1.1.44] - Utilize most of the warrior abilities until level 12. by @Xian55 in #180
 - Addon: [1.1.47] - Fix: Damage taken guid was unable to expire due 
LastEventkept renewing by @Xian55 in #184 
New Features 🎉
- Obtain player 
MainhandandOffhandattack speed. Allows to estimate next melee swing time. 71d2c2d - Expose 
StopAttackinternal key b46b895 - RequirementFactory: allow value based requirement to use variables even dynamic variables! 592c351
 - RequirementFactory: allow to reference out of 
KeyActionsscope. e4a302a - KeyAction: Allow 
KeyActionto reference otherKeyActioneven from otherKeyActions. ab10678 - RequirementFactory: new dynamic binding 
'Cost_'46a9716 - Addon: [1.1.45] - Add support for multi row setup by @Xian55 in #181
 - Addon: [1.1.46] - Fix: UnitCastingInfo and UnitChannelInfo different classic to tbcc by @Xian55 in #182
 - Feature: Add support for Travel Form during 
FollowRouteGoalby @Xian55 in #191 - Feature use SwitchToCorrectStanceForm instead of CastIfReady by @Xian55 in #192
 - Feature: improve paladin rotation - seal to be used by @Xian55 in #197
 
Warrior Changes ⚔️
- Goal: support most of the warrior abilities thru level 12.
 - Warrior: Added 
ThrowasSpellInRange:31d145c2 - Warrior: Added debuffs Thunder clap, Hamstring 40fa68b
 - Warrior: Added debuff 
Charge Stun/ BuffBloodrage5513e05 - Warrior 1-12 profiles updated cde20eb 817c3be 4a22558
 
Other Changes 🔢
- Refactor: Use 
ValueTaskinstead ofTaskduring Input by @Xian55 in #193 - Refactor: 
Wait: usingValueTupleinstead ofTupleby @Xian55 in #194 - Refactor: Get rid of linq from Core by @Xian55 in #195
 - Refactor: replace Tuple with 
ValueTupleby @Xian55 in #196 
Path Changes
- Added Loch Modan vendor 15eb407
 
Full Changelog: 1.1.42...1.1.47
1.1.42
Addon version: 1.1.42
This release mostly contains refactors and performance related improvements. Spend a great amount of time updating the Util project. From now on it is possible to give a client version and all of the external data will be generated with one click.
However there are some new features.
First time using github automated release note generator.
What's Changed
Fixes 🛠
- Util: Improve 
ReadDBC_CSV.WorldMapAreaExtractorproject. by @Xian55 in #160 - Core: Refactor 
PlayerReaderandAddonReader- Better kill credit detection -ValueTask- Reworked Corpse consumption by @Xian55 in #162 - Core Fix: 
NonRepeatableGoals no longer gets repeated! by @Xian55 in #171 - Core: ActionbarCooldown - DynamicBinding - More support for Paladin class by @Xian55 in #176
 - Addon: [1.1.42] - 
Init Phase- Backend Reader sanity check by @Xian55 in #179 
New Features 🎉
- Addon: [1.1.36] - Core: SpellBookReader by @Xian55 in #150
 - Addon: [1.1.37] - Core: TalentReader by @Xian55 in #151
 - Core: 
RequirementFactorynew operators. Uniformly negate. Where id were used now context names appear. by @Xian55 in #153 - Util: Improved 
ReadDBC_CSV/ItemExtractor- using structs by @Xian55 in #158 - Addon: [1.1.38] - Custom Triggers using WeakAura by @Xian55 in #159
 - Addon: [1.1.39] - Remove unused addon deps. by @Xian55 in #163
 - [Contribution] Use 
run.batpath as working directory by @AsterNighT in #165 - Core: Instead of 
incombatGoapKey usedangercombatto start consume corpse more quickly. by @Xian55 in #172 - Core: Use 
ValueTaskinstead ofTask. Performance uplift. Less GC by @Xian55 in #174 - Frontend: Redesigned 
FrameConfuguratorby @Xian55 in #175 - Core: Requirements processing by reverse polish notation. Mix && and || operators. Support whitespaces. by @Xian55 in #177
 - [Contribution] Core: Implement the background mode by @AsterNighT in #168
 
Other Changes
- Core: Type conversions. 
double->float--long->intby @Xian55 in #155 - Util: One project rule them all to extract CSV-DBC data. by @Xian55 in #156
 - Core: Tidyup Cursor api by @Xian55 in #157
 - Core: Removed 
PathingAPIV2by @Xian55 in #161 - Core: 
LevelTrackercomponent using event signals. by @Xian55 in #169 - Core: Reorganize classes which uses 
BitStatuslike behavior. Create separate file from enums. by @Xian55 in #170 - Core: Use 
Vector3instead ofWoWPoint. Performance uplift. by @Xian55 in #173 - Updated Paladin profiles from 1-20 using complex conditions. Using most of the available abilities. f242105
 - Frontend: new Dark Theme to support all html elements 13801b7
 - Frontend: 
GoapGoalViewcomponent received a newRequirementrenderer to show better theBadges cde5a5e 
New Contributors
- @AsterNighT made their first contribution in #165
 
Full Changelog: 1.1.35...1.1.42
1.1.35 - Reworked casting engine
The latest changes can be found under #149
In general should be more responsive and reactive.
Breaking changes:
There is one breaking change about "Cooldown" property. It has been converted to Milliseconds from Seconds due the higher time resolution what the new backend engine allows. if you happen to have custom profiles, suggest to run the mentioned regex in #149
