Skip to content

Releases: Xian55/WowClassicGrindBot

1.2.3

12 Feb 18:05
aa6eb68
Compare
Choose a tag to compare

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.1 projects to dotnet6.0 by @Xian55 in #229
  • Upgrade: every project to dotnet6.0 by @Xian55 in #232
  • Refactor: KeyAction.CastIfAddsVisible replaced with AddsVisible. Requirement CD==0 replaced by WhenUsable by @Xian55 in #252

Fixes 🛠

  • Addon: [1.1.52] - Fix: UnitCastingInfo and UnitChannelInfo for _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 MainWindowHandle is 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: WoWProcessInput uses 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 AdhocNpcGoal with 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: GoapGoal Get rid of unused functions. Refactor Repeatable flag by Moving the logic from PerformAction to OnEnter. 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: AdhocGoal and ParallelGoal no longer repeatable. by @Xian55 in #251
  • Feature: NpcNameFinder fuzzy search option - Processing with Parallel.For by @Xian55 in #255

Other Changes

  • Refactor: use nameof() instead of using reflection GetType().Name by @Xian55 in #245
  • Replace DateTime.Now with DateTime.UtcNow internally. 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

16 Jan 16:40
Compare
Choose a tag to compare

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_Prowl properly by @Xian55 in #199
  • Upon populating the default KeyAction such as Interact, Approach, AutoAttack, StopAttack single requirement was not properly obtained by the user. by @Xian55 in #205
  • TargetPetTarget goal use dangercombat key instead of pure incombat. 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 State button the meta info from the bags properly getting flushed by the addon by @Xian55 in #225
    • Addon Version: 1.1.51
  • Paladin_20 profile regarding typo MainHandSpeed. Use variables.

New Features 🎉

  • Ability to create user defined variables in ClassConfig by @Xian55 in #200
    • Format all Warlock profiles
    • Demonstrate user defined variable in Warlock profiles
  • Expose TargetTargetEnum by @Xian55 in #201
    • Added TargetsMe condition
    • Added TargetsPet condition
    • Added TargetsNone condition
    • Demonstrate Targets* condition in Warlock profiles. Only use Shadow Bolt when somebody else tanking the target.
  • Configurable movement keys by @Xian55 in #203
    • Added the ability to change the default movement keys - arrows - to any ConsoleKey like WASD
    • StopMoving: Using ValueTask instead of Task
  • Improve navigation turn input by @Xian55 in #204
    • Input: Introduce a new KeyPressNoDelay api. Where there will be no extra random delay, just the specified milliseconds. On top of this when KeyPress logs 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 uses KeyPressNoDelay so truly only presses the button for the calculated duration based on TurnAmount -> TurnDuration.
    • Core: adjust distances in FollowPath goal behaviors
  • 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 Clarity by @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 LibClassicCasterino to polyfill target UnitCastingInfo and UnitChannelInfo for 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
  • 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_MovementKeys example profile for changing default keybinding
  • Hunter_66 profile using Kill Command and Aspect of the Viper. Pretty mana conservative.
  • Warrior_20 and Warrior_24 profiles

Added first wiki page


CastingHandler changes #212

  • Remove runtime check from CastIfReady() regarding KeyAction.ConseleKey
  • CastingHandler remove PressCastKeyAndWaitForCastToEnd()
  • CastingHandler: Split CastIfReady() into CanRun() and Cast()
  • CastingHandler: Cast() only check Form requirement when its needed
  • CastingHandler: Cast() Remove duplicate GCD wait when switching from Shoot to any spell.
  • CastingHandler: WaitForGCD() move condition outside.
  • CastingHandler: SwitchForm() no longer handles Form condition existence and same Form.
  • KeyAction: Get rid of try catch blocks. Simplyfiy LastClicked related calls.
  • MountHandler: Druid switches Travel_Form incase its mentioned in ClassConfig. Otherwise uses normal mount.
  • CastingHandler: SwitchForm() better condition for awaiting the desired Form.
  • KeyAction: Introduce new property SkipValidation after pressing the button don't wait for the in-game effect.
  • ClassConfig: Default KeyActions Interact Approach AutoAttack StopAttack uses SkipValidation

Frontend changes

  • LoggerSink uses RingBuffer with 250 size instead of List.
  • GoapGoalView: Ability to expand Goals with multiple KeyAction view.

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 an input.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.json
  • Json/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 Editor and RouteComponent grid component now support zoom and pan.

Features

  • Clicking on the grid svg elements - circle - makes a selection.
  • Added new point called Preview Point its 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 Previous and Next button 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 Distance slider affects the recording in real time.

Fixes

  • RouteInto.PathPoints: no longer contains the route twice when ThereAndBack flag enabled.
  • Path Editor and RouteComponent no longer renders twice the PathPoints list.
  • RouteComponent: no longer attempts to render the points multiple times per frame.
  • RouteInto: Properly renders the distances in yards when rendering PathPOI such as Corpse.
  • RouteComponent: Properly renders the orange player triangle indicator.
  • Fixed an issue, RouteComponent no longer shows a single point after pressing the Clear button in Path Recorder page 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

image


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 PATH to take advantage interpolation and/or smoothing.

...

Read more

1.1.47

22 Dec 18:39
5b44f06
Compare
Choose a tag to compare

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 BlazorServer and PathingAPI projects PlatformTarget to x86

Fixes 🛠

  • Fix: Support HealthCost by offsetting the PowerType by 2 9d8cd59
  • Fix: GoapAgent OnKillCredit 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 LevelTracker and CreatureHistory f1617d2
  • Fix: CreatureHistory make 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 LastEvent kept renewing by @Xian55 in #184

New Features 🎉

  • Obtain player Mainhand and Offhand attack speed. Allows to estimate next melee swing time. 71d2c2d
  • Expose StopAttack internal key b46b895
  • RequirementFactory: allow value based requirement to use variables even dynamic variables! 592c351
  • RequirementFactory: allow to reference out of KeyActions scope. e4a302a
  • KeyAction: Allow KeyAction to reference other KeyAction even from other KeyActions. 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 FollowRouteGoal by @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 Throw as SpellInRange:3 1d145c2
  • Warrior: Added debuffs Thunder clap, Hamstring 40fa68b
  • Warrior: Added debuff Charge Stun / Buff Bloodrage 5513e05
  • Warrior 1-12 profiles updated cde20eb 817c3be 4a22558

Other Changes 🔢

  • Refactor: Use ValueTask instead of Task during Input by @Xian55 in #193
  • Refactor: Wait: using ValueTuple instead of Tuple by @Xian55 in #194
  • Refactor: Get rid of linq from Core by @Xian55 in #195
  • Refactor: replace Tuple with ValueTuple by @Xian55 in #196

Path Changes

Full Changelog: 1.1.42...1.1.47

1.1.42

14 Nov 18:03
Compare
Choose a tag to compare

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.WorldMapAreaExtractor project. by @Xian55 in #160
  • Core: Refactor PlayerReader and AddonReader - Better kill credit detection - ValueTask - Reworked Corpse consumption by @Xian55 in #162
  • Core Fix: NonRepeatable Goals 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: RequirementFactory new 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.bat path as working directory by @AsterNighT in #165
  • Core: Instead of incombat GoapKey use dangercombat to start consume corpse more quickly. by @Xian55 in #172
  • Core: Use ValueTask instead of Task. Performance uplift. Less GC by @Xian55 in #174
  • Frontend: Redesigned FrameConfugurator by @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->int by @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 PathingAPIV2 by @Xian55 in #161
  • Core: LevelTracker component using event signals. by @Xian55 in #169
  • Core: Reorganize classes which uses BitStatus like behavior. Create separate file from enums. by @Xian55 in #170
  • Core: Use Vector3 instead of WoWPoint. 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: GoapGoalView component received a new Requirement renderer to show better the Badges cde5a5e

New Contributors

Full Changelog: 1.1.35...1.1.42

1.1.35 - Reworked casting engine

19 Oct 19:30
8b5688c
Compare
Choose a tag to compare

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