Pokedex
IMPORTANT UPDATE FOR 9.2
The "new hotness" feature for mounts has been completely rewritten to work better with how the game has operated the last several expansions. The problems were that 1) multiple new mounts are often acquired in a small window of time followed by periods of drought and 2) flying mounts are often acquired when the vast majority of time was being spent in ground mount only zones.
The result is that many new mounts never really get a chance to be highlighted by the system before getting bumped down into the full pool. The solution is to track multiple hot mounts. Now, when you acquire a new mount its given a heat value. When you summon a mount, we will first check that slider percentage to see if we should summon from the pool of hot mounts. If so, we'll select from amongst just those mounts with hotter mounts having a greater chance of being summoned. A mount summoned this way loses one from its heat value. When a mount hits zero its no longer hot and falls into the general pool of mounts.
This system should ensure that all new mounts you acquire will have their time in the sun with the most recently acquired mounts being summoned the most often.
USING POKEDEX - THE SHORT VERSION
The games Key Binding UI will contain a section for Pokedex. The only two commands you'll probably want or need to keybind are Toggle Mount and Summon Companion. SummonOtherMount is a useful bind for those times when you don't want the type of mount we selected (for example, we choose a swimming mount but you want a regular one). Pokedex configuration can be reached through the games addons menu or by typing /pd. The full list of commands can be found at http://www.wowace.com/addons/pokedex/pages/main/actions/.
ADDON DESCRIPTION
Pokedex allows random summoning of mounts and companions using preference values set by user to influence selection. Pokedex will summon the appropriate mount, or invoke a class specific movement ability like Ghost Wolf or Burning Rush, based on what the current location and conditions support. Pokedex can also randomly set character's title using the same basic ranking system.
The chance of a particular item (mount, companion or title) being selected is equal to the rank you have assigned to it divided by the total of the ranks for all other eligible items. Put another way, each point of ranking is one ticket to the raffle drawing to see which mount is selected. If all items are still set to the default value, then they all have an equal chance of being selected. An item which you have assigned a value of 0 will never be selected.
PROFILE SUPPORT
Pokedex has support for all the normal ace3 profile stuff (change current, copy, etc), with a couple of twists so that you can have the benefits of sharing a profile and still be able to make character specific tweaks by overriding the rank value on that character. See http:www.wowace.com/addons/pokedex/pages/profiles/ for more info.
ADDITIONAL FEATURES
The New Hotness - The idea behind this feature is that your most recently acquired pet/mount/title is something you're probably excited about and what to see more often than the rest of your collection. Or maybe you want to flaunt it in front of the all the people who are still trying to get, for example, their Sinister Squashling. When dealing with large numbers of pets or mounts, even setting it to the max rank will not cause it to show up very often. So rather than make you downrank every other item, the hotness feature acts as a way to get that one pet or mount out more often. If there is a hot pet, we'll first do a percentile roll against the heat of hot item. If the heat is set to 50, then 50 percent of the time we would summon that hot pet. The other 50 percent of the time, we'll do the usual random selection out of the weighted pet pool.
Safe Dismount - This feature is disabled by default but can be turned on in Pokedex's options ui. This feature allows you to keep as a default behavior that of having the Auto Dismount in Flight option turned off, so that accidently trying to cast a spell in flight won't send you plummeting to your death, but allows you to choose override scenarios where you do want actions to dismount you automatically so that they can be executed. The scenarios you can opt into are 1) when you are in combat, 2) targeting something attackable or 3) attempting to gather a resource via mining, herbalism or skinning.
Random Titles - You can also rank titles the way you do pets and mounts and have Pokedex periodically change your title.
Auto summon pet - You can have Pokedex summon a non-combat pet, if you don't already have one out, every time you dismount or change zone.
Druid forms, Ghost Wolf and Burning Rush support - Pokedex supports using Druid forms, Shaman Ghost Wolf and Warlock Burning Rush in the appropriate situations as part of the Toggle Mount command.
autocast Water Walking when mounting - An option exists (off by default) for Shamans to cast Water Walking and Affliction Warlocks to cast a Soulburned Unending Breath as they summon a mount with the Toggle Mount command. This way the buff is already in place when they encounter water so they don't have to dismount, buff and then remount (all while wondering why Death Knights get to cast Path of Frost while mounted).
autocast Horn of Winter when mounting - For Death Knights, Pokedex can cast Horn of Winter whenever you mount. This is useful for keeping the buff up while questing or resource gathering (e.g. mining).
Your addon is working great. I'd like to suggest a feature though
I've got 120 mounts and over 300 pets (will be 400 soon). But on most of my characters I only want to use a dozen pets or mounts regularly, and it gets tedious to go through and manually set that many priority levels. If you had a way to set them all to 0, then I could go through quickly and only increase the priority on the ones I actually want to use.
I'm getting close to finishing a rewrite of the mount code; the new framework should make it easier to maintain the addon and to plug in new features. Once that's done, the first sets of changes I'd like to implement are things that could help your problems. These are things like better profile support, allowing users to set new values for max and default rank and being able to change sort order of names from alphabetical to by ranks (so highest ranked are at top of list).
With as many mounts as collectors now have, a rank of 10 versus 1 doesn't provide enough differentiation. Letting users set the max value will allow you more control over the odds in play.
With regards to getting you help for your situation right now, I think if you enter and run the following from the chat window they should zero out the ranks of a characters mounts and pets and titles (included for completeness) respectively. I'd say make to make a backup copy of the saved settings file first, but considering you're trying to zero out everything anyway, there's probably no worries there :)
/run for _,mount in pairs(Pokedex.db.profile.rgMountInfo) do mount.rank = 0 end
/run for pet,_ in pairs(Pokedex.Globals.Variables.Pets.All) do pet.rank = 0 end
/run for _,title in pairs(Pokedex.db.profile.rgTitleInfo) do title.rank = 0 end
Thanks, the pet and mount scripts seem to work fine. I don't actually use the random titles so I didn't run that one.
Your new features sound great too. Keep up the good work.
"Better" profile support? Is there profile support in some form now - because I'd love to not have to go through my long, long list of alts and not have to set ranks for all my mounts and companions for each one?
Heh, well there are profiles which is why all the setting are being saved out per character. But the ability to select or set profile hasn't been added yet, so, yeah, its pretty much the same as not having profiles.
I'm a little undecided as to what settings should be set per character, shared across all toons or per profile. For example, being able to select a shared profile for ranks is going to be what we all want, but should things like which mount is your hot mount and other settings like that be saved always per character or per profile like the rankings. Or should I have two profiles, one for ranks and the other for everything else, which users can then set up as shared or character specific however they like.
I'd love to hear what users think and would like in terms of whether there are settings they WOULDN'T necessarily want shared across toons when sharing pet/mount ranks.
I think having the "hot pet/mount" be character specific and everything else being shared is a good idea. People might have a favorite mount or pet for each character, but their rankings of everything is likely the same no matter what character. For example, I hate the "large" mounts (elekks, mammoths, etc.) so I'd want those ranked 0 on every toon. On the flipside, I want to have high rankings for holiday and achievement mounts and pets.
But to be honest, for the sake of keeping your coding easy and light, just have a "import settings from [character name]" and people can adjust the hot mount/pet manually after the import.
I love this addon. I have noticed that the new version does not seem to summon a companion pet. Is this a function of the new companion pet interface from bliz?
Yes its a result of their changes. Functions that used to work for mounts and pets are now only working for mounts. When I had hopped onto the beta, none of my pets were available (though in the pet journal greyed out), even after learning pet training and doing some pet battles. So I assumed any pets problems I had were related to stuff they were monkeying with for beta testing purposes. The patch showed that wasn't the case heh.
I think I've figured out what I need to do to get it working and hope to have it fixed soon. I'm going to try to keep it working as closely to how it did before. So, even if you have 8 Alliance Balloons sitting in your Pet Journal, in the Pokedex UI there will only be one entry for Alliance Ballooon and it will be treated as one entry. When we do a summons we'll just use one of them; which one we select out of the pool is TBD but we may use things like Favorited status, custom name or level as a tiebreaker.
the problems with pets should be fixed in build 5.0.02
First off I wanna say thanks for this addon and all the work you put into it, been using it a long time now and I love it. If this has already been asked and answered I apologize ahead of time. I was wondering if there was a way for you to add the capability to do the legendary staff mount. Not sure if it'll work since its an item that requires it to be equipped.
I've done part of the work necessary for that, but got bogged down trying to make it work for shamans and druids because I'd made the code that supports forms overly complicated and it made me want to tear down and rewrite much of the mount code. I'll try to find some time soon to get back to finishing that and getting it in.
I was wondering if there is a way I could call the /click PokedexToggleMountButton from another addon (in this case, I'm trying to modify FollowFelankor)? I want to use Pokedex to call a mount via whisper to my wife's character when she is afk. I'm not sure if there is a Pokedex function call I can put in FollowFelankor's code or if there is an API to simply run a "/click" from the addon's Lua.
Edit: I've setup FollowFelankor to call the Pokedex function "Pokedex:ToggleMount();" Would this be the proper manner to accomplish what I'm trying to do?
Blizzard does not allow addon code to perform 'click' actions; that's what they did to break all those old heal addons where you could mash a button and the addon would select a target and what spell (and rank) to cast. The reason for having a hidden Pokedex button to click is that's the only way we can support things like Running Wild (Worgen running form), Druid forms, Tarecgosa mount form, or doing stuff like casting Horn of Winter or Water Walking while summoning a mount. So, you won't get any of that stuff calling Pokedex:ToggleMount() but it should otherwise work just fine.
The only drawback I've found with this is that the Pokedex:ToggleMount() function won't cancel shapeshift form when called up via the FollowFelankor whisper. I'm not sure what it would take to get it to work, but I'm pretty sure (based on WoWInterface feedback) that it wouldn't be an easy fix. This solution works fine for the most part, though.
I'm having a problem with running wild for some reason it shows up in the flying mount list and not the ground mount list causing pokedex to try and cast running wild in flying areas and not cast it when flying mounts are not available. Other than that pokedex is working perfectly and I love using it.
First, thank you for making and maintainin this addon! I love it, and I've recommended it to others. :)
My only want for the addon now is the ability to summon a random ground mount that is not also a flying mount (gryphons and such) in areas where flying is permitted. Sometimes I rather do a quest via a ground mount or scout something out on ground. Othertimes I just want to be able to enjoy my real ground mounts. The summon other mount command used to do this, but now it only summons flying mounts that double as ground. Even if I put those mounts as a lower rank, it will not summon anything else. :(
When you do the next update, please consider adding a true ground only command or have the Summon Other Mount take rankings into consideration.
Seconding the desire for this. It's probably my biggest issue as I used it all the time for the RP purposes. What's the point of collecting 200 mounts if I can't use them all? I'm exaggerating. Heavily.
I love this addon and am a long time user, I hope in the next update this gets fixed. Many thanks if you do.