I wanted a mod that would just cycle through my mounts in an intelligent way. I was surprised to see that nothing like that existed, so I made it myself. I know that there are a lot of mods out there that pick your mount randomly, but that isn't what this does. See, computers don't really do random very well. So in all likelihood, with a randomised system, you're likely going to end up seeing some mounts often, and others rarely. That was my experience. It's why I prefer having a list of mounts which is cycled through, that way you get to see all of the mounts you'd want to see!
You can build mount lists for skyriding, flying, underwater, and ground-riding. And Unicycle can handle these intelligently, in an intuitive way. I'll explain more below.
Setting Up
When you start WoW with Unicycle, you're going to want to head into your mounts journal. Now, you'll want to find each mount you want, and shift + right-click it, then add it to a list. You can have one mount in more than one list, yes! For example, if you desire, you could have the wondrous wavewhisker in dynamic, flying, underwater, and ground-riding.
This sets up the lists for what mounts you'd like to see when you summon them from the appropriate lists. So if you summon a mount from the dynamic list, it'll go one at a time through the dynamic mounts list you've created via the means above. If you want to remove a mount, just shift + right-click on it and check off whatever lists you don't want it in. You can also filter by shift + right-clicking on any mount and choosing filter, making Unicycle's handled mounts easier to find.
There's also an entry for special mounts. These won't be summoned, but can be added to a list so that they show up when the filtered list is shown. This can be useful for those mounts with utility, such as the Great Expeditionary Yak. This way, you can keep your mounts list filtered to what you actually use, and thus uncluttered.
You'll also notice a small indicator to the bottom-right of each mount name to show what lists it's in!
Keybinds
The keybinds are designed to intelligently pick a mount for you. They work in the following way…
Flight State: Your current flight buff will be checked. If you have the Skyriding buff, you'll pull a mount from your dynamic list. If you don't have the Skyriding buff, it'll pick one from your flying list.
Skills: Your skills will be checked, and if you don't have the skills for riding a particular mount, it'll drop to the next mount type.
Availability: Whether, for example, whether you're in a zone that allows for flight will be checked. If you're in a zone that doesn't allow for the summoned type, it'll choose the next type available. So, if you pick flying and you're in a zone where that isn't available, you'll mount a ground mount instead.
Flying Mount
- Skyriding (dynamic) mount if you have one or more listed, you have the skill necessary to use skyriding, you're in a place where you can skyride, and your flight state buff is set to skyriding (this will be the default if you can't switch flight states yet);
- Steady (flying) mount if you have one or more listed, you have the skill necessary to use steady flight, you're in a place where you can fly, and your flight state buff is set to steady flight;
- Underwater mount if you have one or more listed, you have the skill, and if you have a decreasing breath bar (best possible implementation, more on this later);
- Ground mount if you have one or more listed, and you have the skill.
Ground/Underwater
- Underwater mount if you have one or more listed, you have the skill, and you're swimming.
- Ground mount if you have one or more listed, and you have the skill.
Note on underwater mounts: I know the implementation isn't perfect, such as if you're playing undead or using an item that grants unlimited breath, but it is the only realistic way to be able to check whether the player is actually underwater/has surfaced. Thankfully, the old Unicycle implementation still works in those cases, where the ground/underwater keybind will summon an underwater mount if you're swimming (in this case, the breath bar isn't checked).
Macros
You can use the following functions in macros to achieve the same functionality as the keybinds…
Flying
/run Unicycle2.sky()
Ground/Underwater
/run Unicycle2.grd()
Reporting Bugs
When reporting a bug, please provide the location of your character when you encountered the bug, a Unicycle debug report, and any other information you might believe is permanent.
To create a debug report:
- Type the following into the chat window: /run Unicycle2.d = true;
- Hit the relevant mount key;
- Look in the chat window for lines starting with Unicycle2, and copy those.
You don't need to copy them exactly, I just need to know what Unicycle is trying to do vis-a-vis the skill/fly/smn functions.
If you can't get that report to work for you, try disabling your other addons five at a time to see if you can discover the culprit that's causing a conflict.
Development Notes
Why shift + right-click? Well, it has to do with keeping compatibility with mods that edit the mount journal. There are certain naughty mods that opt for the aggravating approach of improperly hooking functions, and localising the result. It's good practice to have one pointer in the global namespace that allows for accessing your addon object, it's just polite! But the approach of _local ADDON_NAME, ADDON = …_ has become an unfortunately common practice. Well-behaved mods, like BugSack, do have a global namespace pointer that links to their addon object, but not every mod does. And when an addon doesn't? Well… that's when ugly workarounds become necessary.