Thread Tools Display Modes
08-02-24, 07:06 AM   #1
thepariah
A Deviate Faerie Dragon
Join Date: Aug 2018
Posts: 15
Addon that shows whether mount is skyriding/dynamic/ground/water in collection

I have MountJournal Enhanced and have tried many mount addons.

The challenge I have is that without wowhead or actually mounting up, I can't tell which mounts are skyriding, dynamic flight only, etc. I'd like something to show in the collection

MountJournal Enhanced lets you filter by type, but it doesn't distinguish between skyriding and dynamic.

The reason I want to see this is so I can use the XMount addon (from this site) to summon random skyriding mounts and the summon favorite mount button to summon favorite dynamic flyers. To accomplish this, I need to unfavorite a TON of mounts and it's going to take forever if I have to mount each one first. Plus, it will help when adding a new mount to instantly see what kinds of movement it offers.

Is there an addon out there that does this or would someone be interested in making one?
  Reply With Quote
08-02-24, 08:59 AM   #2
Xrystal
nUI Maintainer
 
Xrystal's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Feb 2006
Posts: 6,006
Dynamic Flight is Dragonriding which is now Skyriding. Unless your idea of Dynamic Flight is the old school flying now called Steady Flight ?

So .. we have,

Skyriding Mounts which can be shifted from Skyriding to Steady Flight ( the Dynamic Flight aspect of being able to switch between modes ) as far as I know most if not all Flying mounts are Skyriding compatible and switchable to old school Steady Flight.

Ground Mounts which can't fly. Or Skyriding Mounts that can't fly due to lack of skills on the player.

Swim Mounts for underwater use. Like the seahorse mount.

name, spellID, icon, isActive, isUsable, sourceType, isFavorite, isFactionSpecific, faction, shouldHideOnChar, isCollected, mountID, isSteadyFlight = C_MountJournal.GetMountInfoByID(mountID)

Looks like they changed isForDragonriding to isSteadyFlight. Whether this means SteadyFlight only ( old school flying ) I don't know.

My addon doesn't test that value anyway as the list that the mountID comes from is from is generated by
mountIDs = C_MountJournal.GetCollectedDragonridingMounts() so will only include Skyriding mounts ( those mounts converted to more than just steady flight ).

I could add a slash command to auto unfavourite any mounts in that list. Seeing as it may be a lot of mounts it will hopefully cut down the list to a more manageable amount.
C_MountJournal.SetIsFavorite(mountIndex, isFavorite)
__________________


Characters:
Gwynedda - 70 - Demon Warlock
Galaviel - 70 - Resto Druid
Gamaliel - 70 - Disc Priest
Lienae - 70 - Resto Shaman
Velandryn - 70 - Prot Paladin (TR)
+ 5 at 60+
+ 2 at 40+

Info Panel IDs : http://www.wowinterface.com/forums/s...818#post136818
  Reply With Quote
08-02-24, 12:30 PM   #3
Xrystal
nUI Maintainer
 
Xrystal's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Feb 2006
Posts: 6,006
Looking at the functions available it looks like it won't be possible.

-- Get ALL mounts ( bypasses filters )
numMounts = C_MountJournal.GetNumMounts()

-- Check if a favourite using the index in range of 1 to numMounts above
isFavorite, canSetFavorite = C_MountJournal.GetIsFavorite(mountIndex)
-- Sets the selected mount in the unfiltered list index as favourite
C_MountJournal.SetIsFavorite(mountIndex, isFavorite)


name, spellID, icon, isActive, isUsable, sourceType, isFavorite, isFactionSpecific, faction, shouldHideOnChar, isCollected, mountID, isSteadyFlight = C_MountJournal.GetDisplayedMountInfo(displayIndex)

displayIndex is ..
Index of the displayed mount in the mount journal list with the current search query and filters. Ranging from 1 to C_MountJournal.GetNumDisplayedMounts()


The favourite functions do not work with my moundID not mountIndex set up which bypasses filters barring the check on dragonriding.

I can't get a mountIndex from the mountID to use that on those functions. And the mountID in the DisplayedMountInfo function might miss mounts out that my list has. Short of using the filtering functions to force a list to match my list ( hopefully ) and the revert back ( hopefully rofl ) to what the user had it set at.


It sounds like it would be worth you posting a request on the MountJournal Enhanced page on curse. The developer is active there so hopefully will see what you are missing.
__________________


Characters:
Gwynedda - 70 - Demon Warlock
Galaviel - 70 - Resto Druid
Gamaliel - 70 - Disc Priest
Lienae - 70 - Resto Shaman
Velandryn - 70 - Prot Paladin (TR)
+ 5 at 60+
+ 2 at 40+

Info Panel IDs : http://www.wowinterface.com/forums/s...818#post136818
  Reply With Quote
08-03-24, 07:53 AM   #4
thepariah
A Deviate Faerie Dragon
Join Date: Aug 2018
Posts: 15
Will post on Curse. Mostly looking for just display information rather than mount selection since Xmount works great!!
  Reply With Quote
08-03-24, 02:11 PM   #5
Xrystal
nUI Maintainer
 
Xrystal's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Feb 2006
Posts: 6,006
Ah, I see what you mean. I am sure it had Dragonriding as one of it's filters. But, nope, just flying.

Let me know what the developer of that other addon thinks on the idea.
__________________


Characters:
Gwynedda - 70 - Demon Warlock
Galaviel - 70 - Resto Druid
Gamaliel - 70 - Disc Priest
Lienae - 70 - Resto Shaman
Velandryn - 70 - Prot Paladin (TR)
+ 5 at 60+
+ 2 at 40+

Info Panel IDs : http://www.wowinterface.com/forums/s...818#post136818
  Reply With Quote
08-03-24, 07:33 PM   #6
LudiusMaximus
A Rage Talon Dragon Guard
 
LudiusMaximus's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2018
Posts: 328
Hi! I have just worked on the same (or at least a similar) problem. DynamicCam users have requested to be able to distinguish between ground mounts and flying mounts. And it seems there is no easy and safe way to do this.

The easy but unsafe way would be to use GetMountInfoExtraByID:

Lua Code:
  1. local _, _ ,_ ,_, mountTypeID = C_MountJournal.GetMountInfoExtraByID(mountID)
  2.    
  3. local flyingMountTypeIDs = {
  4.   [242] = true,
  5.   [247] = true,
  6.   [248] = true,
  7.   [398] = true,
  8.   [402] = true,
  9.   [407] = true,
  10.   [424] = true,
  11.   [436] = true,
  12. }
  13.  
  14. if flyingMountTypeIDs[mountTypeID] then
  15.   print("I believe mount", mountID, "type", mountTypeID, "can fly")
  16. else
  17.   print("I believe mount", mountID, "type", mountTypeID, "cannot fly")
  18. end

But this list of flying mount type IDs (see https://warcraft.wiki.gg/wiki/API_C_...tInfoExtraByID) may be (or become) incomplete. This is why it's not safe.

So I ended up building my own list of flying mount IDs using the mount journal.



Lua Code:
  1. FlyingMountList = {}
  2.  
  3.  
  4. -- Store current mount journal filter settings for restoring.
  5.  
  6. local collectedFilters = {}
  7. collectedFilters[LE_MOUNT_JOURNAL_FILTER_COLLECTED] = C_MountJournal.GetCollectedFilterSetting(LE_MOUNT_JOURNAL_FILTER_COLLECTED)
  8. collectedFilters[LE_MOUNT_JOURNAL_FILTER_NOT_COLLECTED] = C_MountJournal.GetCollectedFilterSetting(LE_MOUNT_JOURNAL_FILTER_NOT_COLLECTED)
  9. collectedFilters[LE_MOUNT_JOURNAL_FILTER_UNUSABLE] = C_MountJournal.GetCollectedFilterSetting(LE_MOUNT_JOURNAL_FILTER_UNUSABLE)
  10.  
  11. local typeFilters = {}
  12. for filterIndex = 1, Enum.MountTypeMeta.NumValues do
  13.   typeFilters[filterIndex] = C_MountJournal.IsTypeChecked(filterIndex)
  14. end
  15.  
  16. local sourceFilters = {}
  17. for filterIndex = 1, C_PetJournal.GetNumPetSources() do
  18.   if C_MountJournal.IsValidSourceFilter(filterIndex) then
  19.     sourceFilters[filterIndex] = C_MountJournal.IsSourceChecked(filterIndex)
  20.   end
  21. end
  22.  
  23.  
  24. -- Set filters to flying mounts.
  25. C_MountJournal.SetDefaultFilters()
  26. C_MountJournal.SetCollectedFilterSetting(LE_MOUNT_JOURNAL_FILTER_UNUSABLE, true)  -- Include unusable.
  27. C_MountJournal.SetTypeFilter(1, false)   -- No Ground.
  28. C_MountJournal.SetTypeFilter(3, false)   -- No Aquatic.
  29.  
  30.  
  31. -- Create table of flying mount IDs.
  32. for displayIndex = 1, C_MountJournal.GetNumDisplayedMounts() do
  33.   local mountId = select(12, C_MountJournal.GetDisplayedMountInfo(displayIndex))
  34.   FlyingMountList[mountId] = true
  35. end
  36.  
  37.  
  38. -- Restore the mount journal filter settings.
  39.  
  40. C_MountJournal.SetCollectedFilterSetting(LE_MOUNT_JOURNAL_FILTER_COLLECTED, collectedFilters[LE_MOUNT_JOURNAL_FILTER_COLLECTED])
  41. C_MountJournal.SetCollectedFilterSetting(LE_MOUNT_JOURNAL_FILTER_NOT_COLLECTED, collectedFilters[LE_MOUNT_JOURNAL_FILTER_NOT_COLLECTED])
  42. C_MountJournal.SetCollectedFilterSetting(LE_MOUNT_JOURNAL_FILTER_UNUSABLE, collectedFilters[LE_MOUNT_JOURNAL_FILTER_UNUSABLE])
  43.  
  44. for filterIndex = 1, Enum.MountTypeMeta.NumValues do
  45.   C_MountJournal.SetTypeFilter(filterIndex, typeFilters[filterIndex])
  46. end
  47.  
  48. for filterIndex = 1, C_PetJournal.GetNumPetSources() do
  49.   if C_MountJournal.IsValidSourceFilter(filterIndex) then
  50.     C_MountJournal.SetSourceFilter(filterIndex, sourceFilters[filterIndex])
  51.   end
  52. end

Now I can check a mount ID against this list I have created.
Maybe this helps with your problem.
__________________
~ Be the change you want to see in the world... of warcraft interface! ~
  Reply With Quote
08-03-24, 08:15 PM   #7
Xrystal
nUI Maintainer
 
Xrystal's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Feb 2006
Posts: 6,006
Yeah, filtering the list was what I was thinking of .. after making a copy of the current setting.

Filter according to Collected and Flying.
Then, figure out how to mark the mount buttons for the skyriding/dragonriding/dynamic flight ones my addon selects using the CollectedDragonRidingMounts function.

The marking is my main concern as I haven't really made changes to a Blizzard frame before, just hooked into functions or used their templates rofl.

But hopefully MountJournal Enhanced developer finds a use for such an item in their addon.
__________________


Characters:
Gwynedda - 70 - Demon Warlock
Galaviel - 70 - Resto Druid
Gamaliel - 70 - Disc Priest
Lienae - 70 - Resto Shaman
Velandryn - 70 - Prot Paladin (TR)
+ 5 at 60+
+ 2 at 40+

Info Panel IDs : http://www.wowinterface.com/forums/s...818#post136818
  Reply With Quote
08-04-24, 08:17 AM   #8
Xrystal
nUI Maintainer
 
Xrystal's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Feb 2006
Posts: 6,006
Ah it is as I thought .. only the 1 mount that won't appear on my addons list of mounts. So toggling on flying only and unfavouriting them all should be feasible, as I can just use the filtering system and the index search list and ignore the dragonriding .
__________________


Characters:
Gwynedda - 70 - Demon Warlock
Galaviel - 70 - Resto Druid
Gamaliel - 70 - Disc Priest
Lienae - 70 - Resto Shaman
Velandryn - 70 - Prot Paladin (TR)
+ 5 at 60+
+ 2 at 40+

Info Panel IDs : http://www.wowinterface.com/forums/s...818#post136818
  Reply With Quote
08-05-24, 11:25 AM   #9
Xrystal
nUI Maintainer
 
Xrystal's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Feb 2006
Posts: 6,006
Well,

Had an attempt at setting the flying mounts as non favourites but the 3 options I tried had varying results and none were good.

1. Each slash command went through the list once
2. Executing the slash command activates an update loop to cycle through the list and unfavouriting the top item ( favourites are always at the top )
3. Executing the slash command creates a ticker that runs continuously until cancelled.

1. Because the favourites are always at the top the indexing changes so you have to use the slash command multiple times. How many is dependant on how many you have favourited. At one point I had to run it 4 times.
2. The Update Cycle works, but locks the game up for a few noticeable seconds/microseconds while the unfavouriting cycle is repeated
3. The timer continues after each login and change of mount list contents ( my ground mounts were unfavourited too rofl ). Until the visible list has no favourited mounts left.

This is probably why they didn't create their own favourite all function rofl.

So, I would suggest, that the best option is to just set your filter up to flying mounts and unfavourite each one manually.
__________________


Characters:
Gwynedda - 70 - Demon Warlock
Galaviel - 70 - Resto Druid
Gamaliel - 70 - Disc Priest
Lienae - 70 - Resto Shaman
Velandryn - 70 - Prot Paladin (TR)
+ 5 at 60+
+ 2 at 40+

Info Panel IDs : http://www.wowinterface.com/forums/s...818#post136818
  Reply With Quote

WoWInterface » AddOns, Compilations, Macros » AddOn Search/Requests » Addon that shows whether mount is skyriding/dynamic/ground/water in collection


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off