Flying, Fishing, Time-saving Bots in World of Warcraft!
Revisiting Old Projects
Recently I have been revisiting projects from the past — hundreds of little toys, gadgets, fragments of code. One example of that I'm going to talk about here...
In the infamous MMORPG that is World of Warcraft, there are many vanity items that are intentionally a massive time sink to acquire. Obtaining these items can make your character stand-out from the crowd, even if it means you've spent 3 weeks of your game-life trying to obtain them.
Being a programmer / hacker by nature I am particularly averse to doing anything manually when I think I can automate it — even if writing the code to automate something will take longer than just doing the boring task itself.
The Sea Turtle Challenge
Our friend the Sea Turtle is a classic example of this. I wanted my character to trot around the virtual world on-top of this slow but cute virtual creature.
In order to obtain the Sea Turtle, you need to fish him from ephemeral 'pools' of fish that flit in and out of watery areas within the game. Normally a player would have to fly around a zone within the game that has a lot of open water — keeping eye out for these transient 'pools' of fish.
When the player spots one, they must land on the shore nearby and then cast with their fishing rod into the pool to hopefully fish out the prize among other more common items.
The chance of getting the Sea Turtle from a fishing pool is about 0.02%. Obviously I didn't fancy spending time trying to get this the old fashioned way.
Breaking Down the Problem
So, what do I need to do...
- Patrol an area looking for these transient pools as they appear
- When I spot one, I need to land and fish in that pool
Sounds simple enough.
Technical Implementation
I had already implemented a simple Waypoint navigation system and could easily Patrol an area. Next I need to look for Fishing Pools — that's also simple they can be found by reading from the Object Manager in the games' process memory.
Lastly I need to land nearby — close enough to reach the pool with my fishing rod... well I looked at a couple of ways I could do this using fancier navigation and opted to manually set 'landing spots' for each pool that appeared in the area I patrol.
Fishing Pools appear in specific places, their locations are fixed by the game designers. Admittedly a bit of a cop-out but I was looking for a simple solution.
Putting It All Together
So, piecing it all together...
- I created a simple Waypoint path to patrol around
- When I got the character to fly around the route I had it stop at every Fishing Pool I hadn't already set a 'landing spot' for
- I soon had 'landing spots' for all the Fishing Pool locations I needed
- Some simple code to actually fish the pool and return to patrol when the pool vanishes
Viola, we have a flying fishing character!
The Results
After a couple of days leaving my character running 24/7 I finally obtained the hallowed Sea Turtle!
The video below shows my one of my characters demonstrating this working. All the character movement and action is done in code, I just used the mouse a couple of times to reposition the camera angle for the video.
Related Posts
Navigation Mesh path finding in MMORPG Bots (updated)
Advanced navigation techniques for autonomous MMORPG characters using Recast/Detour navigation meshes and path finding algorithms
Building Agentic Deep Research Systems: From Hours to Minutes with AI-Powered Document Generation
How multi-agent AI systems are revolutionizing document creation, turning complex research workflows into automated pipelines that generate comprehensive reports with rich formatting, citations, and visuals.