WoWInterface

WoWInterface (https://www.wowinterface.com/forums/index.php)
-   Lua/XML Help (https://www.wowinterface.com/forums/forumdisplay.php?f=16)
-   -   IsFlyableArea() + [flyable] conditional bugged in 7.3.5? (https://www.wowinterface.com/forums/showthread.php?t=55977)

sezz 01-17-18 12:55 PM

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?

sezz 02-09-18 03:40 PM

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

Phanx 02-11-18 02:38 AM

Quote:

Originally Posted by sezz (Post 326531)
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. :p

Kanegasi 02-11-18 09:28 AM

Quote:

-- TODO: is Legion!Dalaran flyable with Broken Isles Pathfinder ???
Yes. All of Legion Dalaran is flyable.

myrroddin 02-11-18 12:19 PM

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!

Kanegasi 02-11-18 12:42 PM

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.

myrroddin 02-11-18 01:00 PM

Quote:

Originally Posted by Kanegasi (Post 326816)
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?

Ammako 02-11-18 02:08 PM

Quote:

Originally Posted by myrroddin (Post 326817)
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.

sezz 02-11-18 04:07 PM

Quote:

Originally Posted by Phanx (Post 326813)

Thanks, great idea. I totally forgot about Flight Master's License, that's the reason why IsFlyableArea() returned false in Orgrimmar on new alts.

Quote:

Originally Posted by Kanegasi (Post 326816)
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).

Phanx 02-12-18 05:42 AM

Quote:

Originally Posted by myrroddin (Post 326815)
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?

Quote:

Originally Posted by myrroddin (Post 326815)
[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.

Quote:

Originally Posted by myrroddin (Post 326815)
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.

Quote:

Originally Posted by sezz (Post 326827)
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.

sezz 02-12-18 04:41 PM

Quote:

Originally Posted by Phanx (Post 326840)
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

Quote:

Originally Posted by Phanx (Post 326840)
Does IsFlyableArea() return false there even with Broken Isles Pathfinder?

IsFlyableArea() correctly returns false on the Argus maps (mapID 1669).

myrroddin 02-13-18 12:50 AM

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

Phanx 02-14-18 04:20 AM

Quote:

Originally Posted by sezz (Post 326856)
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.

Quote:

Originally Posted by sezz (Post 326856)
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.)

Quote:

Originally Posted by myrroddin (Post 326867)
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?

Quote:

Originally Posted by myrroddin (Post 326867)
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.

sezz 02-14-18 05:34 AM

Quote:

Originally Posted by Phanx (Post 326893)
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.

Sure:

1519 Demon Hunter
1514 Monk
1469 Shaman
1107 Warlock
1479 Warrior

Quote:

Originally Posted by Phanx (Post 326893)
Good, no special handling required! (I'm assuming 1669 is the instanceMapID from GetInstanceInfo, not the mapID from GetCurrentMapAreaID.)

Yes, that's correct.

Ammako 02-14-18 09:14 AM

Quote:

Originally Posted by Phanx (Post 326893)
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?

1: Don't know, but can easily check in a bit once I get to my PC.
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.

Phanx 02-14-18 10:45 AM

Changes for the class order halls are on GitHub.

Quote:

Originally Posted by Ammako (Post 326898)
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.)

Inside the cave should be covered by "indoors". Normally IsFlyableArea() returns false while indoors, so I'm waiting to hear whether it's actually returning true while indoors in the garrison; that will determine what I actually need to check for.

Quote:

Originally Posted by Ammako (Post 326898)
Flying mounts are also pretty interchangeable with ground mounts nowadays in virtually every scenario.

Right, but the purpose of LibFlyable is to determine whether you can actually fly in your current location, not just whether you can summon a flight-capable mount. ;)

Ammako 02-14-18 12:11 PM

Quote:

Originally Posted by Phanx (Post 326899)
Inside the cave should be covered by "indoors". Normally IsFlyableArea() returns false while indoors, so I'm waiting to hear whether it's actually returning true while indoors in the garrison; that will determine what I actually need to check for.

Come to think of it, I'm pretty sure IsFlyableArea() checks your general zone/continent, irrespective of your more specific location. As such it returns true indoors in the garrison, in the same way it returns true while indoors in buildings outside of the garrison (personally tested just now, btw. Or at least it also returned true in a building at Embaari Village, couldn't be bothered to check every place in the game.)

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:

Originally Posted by Phanx (Post 326899)
Right, but the purpose of LibFlyable is to determine whether you can actually fly in your current location, not just whether you can summon a flight-capable mount. ;)

But of course, flying mounts used to be completely unmountable in non-flying areas (while they now can and are treated as the same as hybrid mounts), and as I had no idea whether you were aware or not, I wanted to clarify.

myrroddin 02-14-18 08:37 PM

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.

Phanx 02-14-18 10:46 PM

Quote:

Originally Posted by Ammako (Post 326902)
... it returns true indoors in the garrison, in the same way it returns true while indoors in buildings outside of the garrison (personally tested just now, btw. Or at least it also returned true in a building at Embaari Village, couldn't be bothered to check every place in the game.)

It returns false in buildings in Orgrimmar, so I assumed it did that everywhere. However, if that's not the case, then I won't bother checking it in garrisons. You also have a good point here:

Quote:

Originally Posted by Ammako (Post 326902)
I imagine that flyable doesn't always necessarily imply mountable. You could fly in that area, if it were mountable.

...so I'm just going to declare garrisons flyable with Draenor Pathfinder and call it good.

Xodiv 02-14-18 11:31 PM

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.


All times are GMT -6. The time now is 09:57 AM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI