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)

Phanx 02-15-18 12:52 AM

Quote:

Originally Posted by Xodiv (Post 326916)
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).

Quote:

Originally Posted by Xodiv (Post 326916)
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.

Quote:

Originally Posted by Xodiv (Post 326916)
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.

Quote:

Originally Posted by Xodiv (Post 326916)
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?

Ammako 02-15-18 01:05 AM

-1 would be coming from GetCurrentMapContinent()

Xodiv 02-15-18 06:23 PM

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:

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

Phanx 02-16-18 06:48 AM

I've tagged version 2 of LibFlyable.

Quote:

Originally Posted by Xodiv (Post 326931)
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.

Quote:

Originally Posted by Xodiv (Post 326931)
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

sezz 02-17-18 02:00 PM

Just encountered a bug: The library returns true for Timeless Isle, while IsFlyableArea() correctly returns false.

Phanx 02-19-18 04:22 AM

Quote:

Originally Posted by sezz (Post 326959)
Just encountered a bug: The library returns true for Timeless Isle, while IsFlyableArea() correctly returns false.

Odd; I was actually playing in Pandaria, and was using the same code in my mount addon back then.

What is the output from /run print(string.format("%8$d %1$s", GetInstanceInfo())) while on the Timeless Isle?

sezz 02-20-18 04:20 PM

Quote:

Originally Posted by Phanx (Post 326968)
Odd; I was actually playing in Pandaria, and was using the same code in my mount addon back then.

What is the output from /run print(string.format("%8$d %1$s", GetInstanceInfo())) while on the Timeless Isle?

I actually checked GetInstanceInfo when I was there and it returned 870, so I'm currently using GetCurrentMapAreaID() to check for Timeless Isle (951).

Xodiv 03-14-18 06:24 PM

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.

Phanx 03-15-18 12:35 AM

Quote:

Originally Posted by Xodiv (Post 327252)
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.

If you mean it no longer tests if the character knows flying skills required for the current area (e.g. you need Broken Isles Pathfinder to fly in Legion zones) that's not really a change; it's always worked that way, and working around that is the primary purpose of this library. Up until 7.3.5 it was the only purpose of the library, which a private function being used in several of my addons for years to avoid summoning huge dragons to waddle around on the ground.

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.

sezz 03-16-18 04:24 AM

Quote:

Originally Posted by Xodiv (Post 327252)
FYI, the bug with IsFlyableArea() and [flyable] was fixed a week or two back.

Thanks, tested it in Pandaria and it correctly returned true.

Quote:

Originally Posted by Phanx (Post 327255)
If you mean it no longer tests if the character knows flying skills required for the current area (e.g. you need Broken Isles Pathfinder to fly in Legion zones) that's not really a change.

I think in the past it always returned false if your character didn't have any flying skill, this is now not the case anymore.

Xodiv 03-18-18 08:11 PM

Quote:

Originally Posted by Phanx (Post 327255)
If you mean it no longer tests if the character knows flying skills required for the current area (e.g. you need Broken Isles Pathfinder to fly in Legion zones)

I mean the regular flying skills, not the area-specific unlocks.


All times are GMT -6. The time now is 05:25 AM.

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