Thread Tools Display Modes
01-17-18, 12:55 PM   #1
sezz
A Chromatic Dragonspawn
AddOn Author - Click to view addons
Join Date: Apr 2008
Posts: 158
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?
  Reply With Quote
02-09-18, 03:40 PM   #2
sezz
A Chromatic Dragonspawn
AddOn Author - Click to view addons
Join Date: Apr 2008
Posts: 158
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
  Reply With Quote
02-11-18, 02:38 AM   #3
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Originally Posted by sezz View Post
is there a alternative for IsFlyableArea?
There is now:
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.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
02-11-18, 04:07 PM   #4
sezz
A Chromatic Dragonspawn
AddOn Author - Click to view addons
Join Date: Apr 2008
Posts: 158
Originally Posted by Phanx View Post
Thanks, great idea. I totally forgot about Flight Master's License, that's the reason why IsFlyableArea() returned false in Orgrimmar on new alts.

Originally Posted by Kanegasi View Post
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.
Only DKs, Hunters and Druids can fly in their class hall. The DK class hall is on the broken shore (not instanced).
  Reply With Quote
02-12-18, 05:42 AM   #5
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Originally Posted by myrroddin View Post
Garrisons are flyable, with the exceptions of the mine, inside buildings, and if the player is swimming.
Can you check if IsFlyableArea() now returns correct info in all those scenarios? (e.g. false in the mine, buildings, and when swimming; true otherwise). If it does then I can just remove the special check for garrisons.

Does that also apply to the garrison shipyard?

Originally Posted by myrroddin View Post
[Ashran is] 100% completely flyable, except for obvious things like inside buildings or while swimming.
It's for the PvP Ashran, not the normal world Ashran. I should update the description to clarify.

Originally Posted by myrroddin View Post
The Argus zone and its three sections are not flyable, nor will they ever be flyable. Argus is the new Timeless Isle.
Does IsFlyableArea() return false there even with Broken Isles Pathfinder?

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.

Originally Posted by sezz View Post
Only DKs, Hunters and Druids can fly in their class hall. The DK class hall is on the broken shore (not instanced).
Can you check if IsFlyableArea() is returning correct info in class halls? Last I heard, it wasn't, but it wasn't working in garrisons either. If both have been fixed then I can just remove the special check; otherwise I'll have to add more checks for those specific class halls that are actually flyable.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
02-12-18, 04:41 PM   #6
sezz
A Chromatic Dragonspawn
AddOn Author - Click to view addons
Join Date: Apr 2008
Posts: 158
Originally Posted by Phanx View Post
Can you check if IsFlyableArea() is returning correct info in class halls?
It doesn't, not for all classes:

Code:
Class			IsFlyableArea

DemonHunter		True
Mage			False
Shaman			True
Monk			True
DeathKnight		True
Hunter			True
Rogue			False
Warrior			True
Paladin			False
Druid			True
Warlock			True
Priest			False
Originally Posted by Phanx View Post
Does IsFlyableArea() return false there even with Broken Isles Pathfinder?
IsFlyableArea() correctly returns false on the Argus maps (mapID 1669).
  Reply With Quote
02-14-18, 04:20 AM   #7
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Originally Posted by sezz View Post
It doesn't, not for all classes:
Thanks for the info. Can you get me the instanceMapIDs from GetInstanceInfo for the bugged ones (demon hunter, monk, shaman, warlock, warrior)? Wowpedia is missing the instanceMapIDs for class halls.

Originally Posted by sezz View Post
IsFlyableArea() correctly returns false on the Argus maps (mapID 1669).
Good, no special handling required! (I'm assuming 1669 is the instanceMapID from GetInstanceInfo, not the mapID from GetCurrentMapAreaID.)

Originally Posted by myrroddin View Post
Lua Code:
  1. Garrison = true
  2. Lunarfall Excavation/Horde equivalent = true
  3. Swimming in Garrison = true
  4. Garrison Shipyard = true
More questions:
  1. Does IsFlyableArea() return true inside buildings in the garrison?
  2. Can you actually not manually summon a flying mount while swimming in the garrison?

Originally Posted by myrroddin View Post
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.
No need; according to the info Sezz posted above, Argus doesn't need special handling.

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.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
02-11-18, 09:28 AM   #8
Kanegasi
A Molten Giant
 
Kanegasi's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2007
Posts: 666
-- TODO: is Legion!Dalaran flyable with Broken Isles Pathfinder ???
Yes. All of Legion Dalaran is flyable.
  Reply With Quote
02-11-18, 12:19 PM   #9
myrroddin
A Pyroguard Emberseer
 
myrroddin's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2008
Posts: 1,240
Phanx, awesome stuff. Here's a couple of updates, from your GitHub:
  • Warlords garrisons and Legion class halls are never flyable.
Garrisons are flyable, with the exceptions of the mine, inside buildings, and if the player is swimming. Legion class halls are not flyable, possibly except right beside a flightmaster NPC. At least when I zone into my class hall on a flying mount I remain flying until I move into the building proper.
  • Ashran and the Tanaan Jungle Intro are never flyable.
Both of these zones are 100% completely flyable, except for obvious things like inside buildings or while swimming.
**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!

Last edited by myrroddin : 02-11-18 at 12:23 PM. Reason: Argus mention
  Reply With Quote
02-11-18, 12:42 PM   #10
Kanegasi
A Molten Giant
 
Kanegasi's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2007
Posts: 666
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.
  Reply With Quote
02-11-18, 01:00 PM   #11
myrroddin
A Pyroguard Emberseer
 
myrroddin's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2008
Posts: 1,240
Originally Posted by Kanegasi View Post
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.
Interesting. I play a Demon Hunter and it is flyable by the flightmaster but not inside the building itself. That is cool that some classes can fly, perhaps because their class halls are larger?
  Reply With Quote
02-11-18, 02:08 PM   #12
Ammako
A Frostmaul Preserver
AddOn Author - Click to view addons
Join Date: Jun 2016
Posts: 256
Originally Posted by myrroddin View Post
Interesting. I play a Demon Hunter and it is flyable by the flightmaster but not inside the building itself.
Most buildings aren't flyable inside. But also Fel Hammer is inside Mardum which isn't flyable.

Don't remember about Acherus but that might be flyable everywhere, too.
  Reply With Quote
02-13-18, 12:50 AM   #13
myrroddin
A Pyroguard Emberseer
 
myrroddin's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2008
Posts: 1,240
Lua Code:
  1. Garrison = true
  2. Lunarfall Excavation/Horde equivalent = true
  3. Swimming in Garrison = true
  4. Garrison Shipyard = true

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.
  1. Vindicaar
  2. Mac'Aree
  3. Argus
  4. Antoran Wastes
  5. Kokuun
  Reply With Quote
02-14-18, 08:37 PM   #14
myrroddin
A Pyroguard Emberseer
 
myrroddin's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2008
Posts: 1,240
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.
  Reply With Quote
02-14-18, 11:31 PM   #15
Xodiv
A Murloc Raider
AddOn Author - Click to view addons
Join Date: May 2007
Posts: 6
There's a significant difference between:
  1. IsFlyableArea() or replacement; and
  2. Can I summon a flying mount right now?

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.

Last edited by Xodiv : 02-15-18 at 12:04 AM.
  Reply With Quote
02-15-18, 12:52 AM   #16
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Originally Posted by Xodiv View Post
There's a significant difference between:
  1. IsFlyableArea() or replacement; and
  2. Can I summon a flying mount right now?

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.
The intention is (1); addons should be able to do something like:

Code:
if allOtherConditionsForMountingAreMet then
    if IsFlyableArea() then
        summonHugeDragonOrRocket()
    else
        summonMountThatDoesntLookStupidOnTheGround()
    end
end
This is why in my last post I stated I'm not going to bother checking for other conditions in garrisons -- the library should only be answering the question "if you summoned a flight-capable mount here (whether or not that's blocked for some other reason) and pressed the spacebar, would it fly into the air or fall back to the ground?"

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).

Originally Posted by Xodiv View Post
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.
OK, I'm just blacklisting the entire Argus continent/instance, then.

Originally Posted by Xodiv View Post
Both of the Draenor garrisons are correctly flagged.
Are you sure? I understand they are now flyable, but unless they're flyable without Draenor Pathfinder, then if IsFlyableArea() still returns false for characters without Draenor Pathfinder, they're not flagged correctly.

Originally Posted by Xodiv View Post
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.
If GetCurrentMapAreaID() == 1177 and select(8, GetInstanceInfo()) == 1756, then where is the -1 coming from?
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
02-15-18, 01:05 AM   #17
Ammako
A Frostmaul Preserver
AddOn Author - Click to view addons
Join Date: Jun 2016
Posts: 256
-1 would be coming from GetCurrentMapContinent()
  Reply With Quote
02-15-18, 06:23 PM   #18
Xodiv
A Murloc Raider
AddOn Author - Click to view addons
Join Date: May 2007
Posts: 6
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.

If GetCurrentMapAreaID() == 1177 and select(8, GetInstanceInfo()) == 1756, then where is the -1 coming from?
-1 is the continent, from GetCurrentMapContinent()

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
  Reply With Quote
02-16-18, 06:48 AM   #19
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
I've tagged version 2 of LibFlyable.

Originally Posted by Xodiv View Post
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.
Right; this means garrisons will now be treated just like Draenor itself.

Originally Posted by Xodiv View Post
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'm not doing any map querying, and don't need to know anything about maps, so nothing HereBeDragons offers is applicable. The only global API functions I'm actually using are:
  • GetInstanceInfo
  • GetSubZoneText
  • IsFlyableArea
  • IsSpellKnown
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
02-17-18, 02:00 PM   #20
sezz
A Chromatic Dragonspawn
AddOn Author - Click to view addons
Join Date: Apr 2008
Posts: 158
Just encountered a bug: The library returns true for Timeless Isle, while IsFlyableArea() correctly returns false.
  Reply With Quote

WoWInterface » Developer Discussions » Lua/XML Help » IsFlyableArea() + [flyable] conditional bugged in 7.3.5?


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