Skip to content

Releases: demonnic/demonnicAutoWalker

Add pattern matching for targets, failed room tracking, and fix some bugs

16 Jan 02:14
289ca6d
Compare
Choose a tag to compare
  • adds tracking for failed rooms
    • demonwalker:getFailedRooms() to get a table with all the roomIDs you couldn't visit for some reason.
    • added the count of failed rooms to dwalk report
  • begin a searchTarget entry with "Match:" and it will feed the rest into string.match to check for room items.
    • IE searchTargets = { "Match:Drakt" } will stop for any item or mob with Drakt in the name.
  • Fixes a bug where if you used "2000" for a roomID versus 2000 (so string rather than a number) it would just stop in the first room and get stuck. It will now use tonumber on everything you give to it as a roomID, and anything which cannot be converted is added to failedRooms
  • Fixes a bug where if an item was found in the room you were speedwalking to last you sometimes had to tell the walker to move on twice.

Add echo to new explore and update commands

29 Oct 15:15
Compare
Choose a tag to compare

Also stop printing usage after successfully running these aliases.

Adds an explore and update alias

28 Oct 03:08
Compare
Choose a tag to compare

Adds

  • dwalk explore
    • automatically explores an area, moving to each new room without stopping
  • dwalk update
    • Updates the package to the latest version from github.

Fixes the avoid list

10 Sep 23:47
Compare
Choose a tag to compare

Was brought to my attention it was still walking to the avoid list rooms, realized the iterator hadn't been moved from ipairs to pairs for that table when I restructured it.

This release fixes that.

Performance adjustments, more stats in performance report

23 May 02:37
Compare
Choose a tag to compare

I wasn't happy with the pause at the start of a walk with a lot of rooms (500+) for it to find and remove unreachable rooms, so I shifted it so that it handles them as it comes across them during the walk itself. This did result in one of the moves taking just over one second to calculate the next room, but I didn't notice it while it was happening, just discovered it in the stats.

Speaking of stats, dwalk report now also includes the longest move in the set, the longest time it took to calculate the next move, and the most checks done in any single calculation. Cuz... why not.

No real change otherwise.

Major rewrite, new tablespace.

03 Jan 23:42
Compare
Choose a tag to compare

Changes

  • Major performance rewrite.
  • Makes the distance it will search from your current room for an unvisited room before searching the unvisited rooms for the closest one a configuration option
  • Makes the configuration options persistent to disk
  • Adds dwalk alias for interacting with demowalker
  • Adds the capability to look for items/mobs and only raise the demonwalker.arrived event when it finds one, rather than when it arrives at a new room.
  • Moves the entire thing from demonnic.autowalker to demonwalker table
  • demonwalker:init(options) takes a table of options for the walker, whereas before demonnic.autowalker:init(rooms, avoidRooms) used separate parameters. When called with no parameters at all previous functionality is maintained, so demonwalker:init() is valid.
  • keys for the options table for demonwalker:init(options)
    • rooms
      • List of roomIDs you want to visit. If not provided will be all rooms in the current area
      • IE { 12, 482, 1837 }
    • avoidRooms
      • List of roomIDs you do not want to visit. Can be used to filter unwanted rooms out when allowing the list of rooms to be autogenerated based on the area
      • IE { 88, 199, 12 }
    • searchTargets
      • List of items/mobs to search for. When provided, causes the walker to raise the arrived event when it finds one of the items or mobs, instead of when a new unvisited room has been reached.
      • IE {"a thief on a leaf", "a dracnari hunk", "a dracnari dreamer"}

The README was updated with full information.

Add options for excluding rooms from the walker

20 Nov 22:53
Compare
Choose a tag to compare

This release adds demonnic.autowalker.config.avoidRooms, which is a table of rooms to never include in a walk. It also include functions for interacting with it:

demonnic.autowalker:addAvoidRoom(roomID)
demonnic.autowalker:removeAvoidRoom(roomID)

roomID can be either a number (1234), a string ("1234"), or a table of numbers/strings ({1234, "2345", 829})

Also demonnic.autowalker:init now takes two optional arguments, (rooms, roomsToAvoid). If you want to pass the rooms to avoid but have the autowalker assemble the rooms list based on the area, call demonnic.autowalker:init(nil, roomsToAvoid)

Fixes edge case with table.contains

06 Nov 22:53
Compare
Choose a tag to compare

Chances are you never would have noticed this... took just the right combination of circumstances for it to come up.

But since it did, I fixed it.

Improve performance

28 Oct 18:34
Compare
Choose a tag to compare

In larger areas Mudlet would sometimes stall for a brief half second while trying to calculate the closest room, especially in the beginning of the walk as it would need to cycle every room until it tripped upon right next to it, or had checked each room to find the closest.

With this it will check all of the adjacent rooms first to see if any are unvisited and go to the first of these it finds. If it doesn't find any, it will then check all the rooms adjacent to -those- (so within two moves of your current location). These are the two most common scenarios, especially when the list of unvisited rooms is larger. As you visit more rooms and it becomes less likely you will find a match within 2 rooms, the number of rooms you have to check is significantly shortened for the vast majority of the checks.

In testing I experienced far fewer moments of hesitation due to calculating route. In any use where you don't immediately move on from each room it should be almost entirely smoothed out.

Initial release as a muddler project

11 Oct 00:32
Compare
Choose a tag to compare

Making this its own repository, turning it into a muddler project, removing debugging code I'm not really using any more.