This is probably the reason for the long time since the last update, but after having a testing account getting banned for some of the memory modifications I make in WoW, there really was no way around it. Since there was very little information available on Warden and the fact that it wasn’t really my area of interest, it took some with a lot of big breaks to get this done.

As you should know, Warden is (one of) World of Warcraft’s anti-cheat tools, the main logic behind it is sent, decrypted and dynamically linked at runtime, making the reverse engineering of it a bit more involved. I don’t want to get into much detail regarding this, but what I do right now to protect myself from Warden is pretty much the “standard” way it is done right now; hooking the scan function and removing all modifications before doing the scan and reapplying them again. Some testing whether this actually works still needs to be done, but so far it is working.

This means I can actually get back on the bot development now. To get some useful results, I want to create some basic “gathering” controller for my current framework. The idea is to fly around looking for mining nodes and harvest them, defending against attacking mobs (which is probably the smallest problem since a combat state/routine framework is already present) only to mount, fly up and continue. A bit more detailed my current plan looks like this:

Harvest service

  • Works a lot like the Targets service by keeping a list of possible nodes
  • Updated each tick in order to keep the list up to date every time
  • Also filters nodes that are above the player’s skill (currently a hardcoded list of skill levels for each node, but I hope to dynamically retrieve that information either from some DBC files (they probably don’t contain that) or checking some “usable” flag on the node (whether the text on the tooltip would be red)

Mount module/functionality to determine whether the player can mount in the current situation and what mount to use (flying/ground). At the moment this information is hardcoded too.

Logic in the form of states to put the previous functionality to use. So far I intend to separate this into the following states:

  • Generic waypoint following in the air, following a predefined set of waypoints in a circle, switching to the next state when a node is found
  • Moving into range of the node to mine it by flying directly above the node and then flying straight down. Once in range, dismount and switch to the next state
  • Mining the node, looting all its content
  • Mounting up again and flying straight up, ideally to the point where the descend started, and switch back to state one again
  • In the last two states, especially in the third one, react to possible combat and switch to combat state (which is where the routine kicks in and handles things)

This is the idea so far, I’ll probably write the next post once I discover something new.