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.1
projects todotnet6.0
by @Xian55 in #229 - Upgrade: every project to
dotnet6.0
by @Xian55 in #232 - Refactor:
KeyAction.CastIfAddsVisible
replaced withAddsVisible
. RequirementCD==0
replaced byWhenUsable
by @Xian55 in #252
Fixes 🛠
- Addon: [1.1.52] - Fix:
UnitCastingInfo
andUnitChannelInfo
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 fromPerformAction
toOnEnter
. 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
andParallelGoal
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 reflectionGetType().Name
by @Xian55 in #245 - Replace
DateTime.Now
withDateTime.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
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 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 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
- Format all
- 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.
- 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
ValueTask
instead 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
KeyPressNoDelay
api. Where there will be no extra random delay, just the specified milliseconds. On top of this whenKeyPress
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 usesKeyPressNoDelay
so 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 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 targetUnitCastingInfo
andUnitChannelInfo
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
- 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_MovementKeys
example profile for changing default keybindingHunter_66
profile usingKill Command
andAspect of the Viper
. Pretty mana conservative.Warrior_20
andWarrior_24
profiles
Added first wiki page
CastingHandler changes #212
- Remove runtime check from
CastIfReady()
regardingKeyAction.ConseleKey
CastingHandler
removePressCastKeyAndWaitForCastToEnd()
CastingHandler
: SplitCastIfReady()
intoCanRun()
andCast()
CastingHandler
:Cast()
only checkForm
requirement when its neededCastingHandler
:Cast()
Remove duplicateGCD
wait when switching fromShoot
to any spell.CastingHandler
:WaitForGCD()
move condition outside.CastingHandler
:SwitchForm()
no longer handlesForm
condition existence and sameForm
.KeyAction
: Get rid of try catch blocks. SimplyfiyLastClicked
related calls.MountHandler
: Druid switchesTravel_Form
incase its mentioned inClassConfig
. Otherwise uses normal mount.CastingHandler
:SwitchForm()
better condition for awaiting the desired Form.KeyAction
: Introduce new propertySkipValidation
after pressing the button don't wait for the in-game effect.ClassConfig
: DefaultKeyAction
sInteract
Approach
AutoAttack
StopAttack
usesSkipValidation
Frontend changes
LoggerSink
usesRingBuffer
with 250 size instead of List.GoapGoalView
: Ability to expand Goals with multipleKeyAction
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 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.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
andRouteComponent
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
andNext
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 whenThereAndBack
flag enabled.Path Editor
andRouteComponent
no longer renders twice thePathPoints
list.RouteComponent
: no longer attempts to render the points multiple times per frame.RouteInto
: Properly renders the distances in yards when renderingPathPOI
such asCorpse
.RouteComponent
: Properly renders the orange player triangle indicator.- Fixed an issue,
RouteComponent
no longer shows a single point after pressing theClear
button inPath 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
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.
...
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
BlazorServer
andPathingAPI
projectsPlatformTarget
tox86
Fixes 🛠
- Fix: Support
HealthCost
by offsetting thePowerType
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
andCreatureHistory
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
andOffhand
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 otherKeyAction
even 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
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
asSpellInRange:3
1d145c2 - Warrior: Added debuffs Thunder clap, Hamstring 40fa68b
- Warrior: Added debuff
Charge Stun
/ BuffBloodrage
5513e05 - Warrior 1-12 profiles updated cde20eb 817c3be 4a22558
Other Changes 🔢
- Refactor: Use
ValueTask
instead ofTask
during Input by @Xian55 in #193 - Refactor:
Wait
: usingValueTuple
instead ofTuple
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
- 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.WorldMapAreaExtractor
project. by @Xian55 in #160 - Core: Refactor
PlayerReader
andAddonReader
- 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 usedangercombat
to start consume corpse more quickly. by @Xian55 in #172 - Core: Use
ValueTask
instead ofTask
. 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 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:
GoapGoalView
component received a newRequirement
renderer to show better theBadge
s 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