IsFlyableArea() + [flyable] conditional bugged in 7.3.5?
Both return false on a character in Pandaria (Kun-Lai Summit) who has Artisan Riding and wasn't able to fly in Pandaria before 7.3.5, but correctly return true on those characters who had Wisdom of the Four Winds before the patch hit (which is now gone, because it's not required anymore).
Did anyone else notice this/is there a alternative for IsFlyableArea? |
Same bug on Highmountain Tauren and Nightbornes - IsFlyableArea() returns false in Orgrimmar.
Seems like someone posted it on the US forums, so I guess there's a chance this might be fixed in BfA. https://us.battle.net/forums/en/wow/topic/20761606777 |
Quote:
https://github.com/phanx-wow/LibFlyable I've had a number of people email me about the IsFlyableArea replacement function in my mount addon, and this weekend have had the inexplicable urge to address some the mountain of bug reports that have been piling up on my addons since I quit playing, so I just split said function out into a proper library so everyone can just use it instead of copy-pasting. Note that I'm still not actually playing the game, and have no urge or plans to start, so until/unless someone volunteers as a maintainer, bugs will only get fixed if you tell me about them in sufficient detail. :p |
Quote:
|
Phanx, awesome stuff. Here's a couple of updates, from your GitHub:
**EDIT** oops, yes, you are correct that the Tanaan Jungle intro is not flyable, but Tanaan Jungle itself is flyable. I missed that, sorry! The Argus zone and its three sections are not flyable, nor will they ever be flyable. Argus is the new Timeless Isle. Hopefully this helps. Nice to see you, even if all you are doing is fixing bugs. We miss you! |
Some class halls are flyable. Dreamgrove (druid) and Lodge (hunter) are flyable since they're simply zones of Broken Isles. I want to say Maelstrom is flyable (shaman) but I don't have a shaman to test.
|
Quote:
|
Quote:
Don't remember about Acherus but that might be flyable everywhere, too. |
Quote:
Quote:
|
Quote:
Does that also apply to the garrison shipyard? Quote:
Quote:
If it does, then it normally won't need a special check, and I'll just add the mapID to the 7.3.5 override list. Otherwise, please run /dump GetInstanceInfo() while you're there, and give me the 8th value. It's not listed on Wowpedia as a separate instance map, but I can't tell if that means it's not separate, or if the wiki just hasn't been updated. Quote:
|
Quote:
Code:
Class IsFlyableArea Quote:
|
Lua Code:
So it looks like all of the garrison areas are true, even if your character automatically dismounts inside buildings. I can tell you that if you are mounted, either a ground or flying mount, and you swim, it does not dismount you regardless of where in the world you are swimming. I will dump GetInstanceInfo() tomorrow when I am in Argus. It should give me 3 or 4 different values, possibly 5, if you are asking for the mapIDs.
|
Quote:
Quote:
Quote:
Quote:
FYI GetInstanceInfo gives you an instanceMapID, not a mapID. The two aren't interchangable; even for an instance (continent) that only contains one map (zone) the instanceMapID and mapID are different. |
Quote:
1519 Demon Hunter 1514 Monk 1469 Shaman 1107 Warlock 1479 Warrior Quote:
|
Quote:
2: You can mount while in the water, as long as you're not inside the underwater cave (which disallows mounting by virtue of being a cave, regardless of the water.) Flying mounts are also pretty interchangeable with ground mounts nowadays in virtually every scenario. |
Changes for the class order halls are on GitHub.
Quote:
Quote:
|
Quote:
I imagine that flyable doesn't always necessarily imply mountable. You could fly in that area, if it were mountable. Maybe I should check IsIndoors() for those locations instead? if that can be reliably used to determine whether the player could mount or not. If you can't mount then it goes without saying that you can't fly either :p Quote:
|
IsFlyableArea() returns true even inside the building within the Garrison. I'll check the cave later, but all the buildings I tested return true, yet you cannot manually cast a mount spell. If such a spell is on your action bar, it is greyed out.
|
Quote:
Quote:
|
There's a significant difference between:
I started out thinking the intention was (1) but a lot of the comments lead me to think it is actually (2), which I think would be a mistake. At least two bugged areas on Argus have IsFlyableArea() == true even though you can't fly there. I forget the second one, but the first is a graveyard on Mac'Aree near the City Center teleporter. Both of the Draenor garrisons are correctly flagged. With the exception of the Deaths of Chromie scenario (MapID 1177, InstanceMapID 1756) you can't fly on continent -1, even though most of it is flagged flyable. This handles many many cases, including the Draenor intro area. All of the Legion order halls are correctly flagged once continent -1 is excluded. |
Quote:
Code:
if allOtherConditionsForMountingAreMet then That's what the real IsFlyableArea() is supposed to do, but fails in certain areas. The original problem I wanted to solve was that all continents but Outland required buying a spell to fly in, but IsFlyableArea() didn't consider whether your character actually knew that spell. As soon as Blizzard fixes the 7.3.5 problem, then the library logic will go back to what it originally was -- if IsFlyableArea() returns false, assume it's correct; otherwise "trust but verify" by checking a few other things. The 7.3.5 problem is that now the opposite problem is happening in some places, so we can't trust a return of false from IsFlyableArea() either. Finally, keep in mind that prior to 5 days ago this wasn't a library at all, but a file I was copy-pasting into my various addons (and others were copy-pasting into their various addons) so it's good that we're clarifying the scope here to avoid bloat going forward. I definitely intend for it to be (1) and not (2) so please feel free to point out anything you think is out of scope for (1). Quote:
Quote:
Quote:
|
-1 would be coming from GetCurrentMapContinent()
|
I'm (very) familiar with the issues with 7.3.5, having worked around them myself. Based on previous experience Blizzard will be aware of the bug but won't hotfix it, so it'll be broken until there's a minor patch.
Garrisons are not flagged "correctly" with respect to the achievement unlocks. Blizzard appear to not consider this a bug - I don't expect it to change and I expect it to continue to work this way in the future with BfA. Given that it is reliably continent-wide it is a minor inconvenience at most. Quote:
Also if you are going to be doing map querying and don't want to handle it nicely yourself you may as well use https://www.wowace.com/projects/herebedragons |
I've tagged version 2 of LibFlyable.
Quote:
Quote:
|
Just encountered a bug: The library returns true for Timeless Isle, while IsFlyableArea() correctly returns false.
|
Quote:
What is the output from /run print(string.format("%8$d %1$s", GetInstanceInfo())) while on the Timeless Isle? |
Quote:
|
FYI, the bug with IsFlyableArea() and [flyable] was fixed a week or two back.
However the behaviour of (at least) IsFlyableArea() and probably [flyable] has changed so that it no longer tests if the character knows any flying skills. This is an understandable change if their server-side fix was just removing the character-based condition checks. |
Quote:
The temporary workaround for the 7.3.5 bug was just the impetus for actually making an official public release of it. If that specific bug has been fixed then I can remove the check for it in the library. |
Quote:
Quote:
|
Quote:
|
All times are GMT -6. The time now is 02:47 PM. |
vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI