promotional bannermobile promotional banner
header
logo

Unicycle 2: Tricycle

Install

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 dragon-riding, 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 flying, underwater, and ground-riding (I suspect even dragon-riding when The War Within hits, but we aren't there quite yet!).

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 dragon, it'll go one at a time through the 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.

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…

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. For example, a flying mount will be summoned if you hit the dragon-riding keybind and you don't have a dragon-riding skill.

Availability: Whether, for example, you're in a zone that allows for dragon-riding or flight will be checked. If you're in a zone that doesn't allow for the summoned mount 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.

Dragon-Riding

  • Dragon-riding mount if you have one or more listed, you have the skill, and you're in a place where you can dragon-ride;
  • Flying mount if you have one or more listed, you have the skill, and you're in a place where you can fly;
  • 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.

Flying

  • Flying mount if you have one or more listed, you have the skill, and you're in a place where you can fly;
  • 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…

Dragon-Riding

/run Unicycle2.smn(4)

Flying

/run Unicycle2.smn(3)

Ground/Underwater

/run Unicycle2.smn(4)

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:

  1. Type the following into the chat window: /run Unicycle2.d = true;
  2. Hit the relevant mount key;
  3. 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.