Stanzilla / WoWUIBugs

World of Warcraft UI Bug Tracker
167 stars 7 forks source link

IsAdvancedFlyableArea() is affected by "Switch Flight Style". #627

Open rowaasr13 opened 2 months ago

rowaasr13 commented 2 months ago

Get into any area where flying is enabled, make sure you have Skyriding style and check /dump IsAdvancedFlyableArea() - it will return true.

Activate "Switch Flight Style" to switch to "steady" and check /dump IsAdvancedFlyableArea() again - it will now return false.

IsAdvancedFlyableArea() used to be semi-reliable way to detect if flying is possible in current area for "one-button random mount" type addon, but now functionality breaks completely if such addon switches to steady mode and requires to fall back to check against hardcoded table of instance IDs and uiMapIDs.

mbattersby commented 2 months ago

As far as I can test Blizzard have altered IsAdvancedFlyableArea() so that it returns whether you are in skyriding flght style, and you need to check IsFlyableArea() to see if you can fly at all - except some parts of DF are still mis-flagged as non-flyable (e.g. The Primalist Future).

Ghostopheles commented 2 months ago

As far as I can tell, at least one of the following conditions must be met for IsAdvancedFlyableArea() to return true:

As for the steady flight switch affecting the output of the function - this function is designed to be used with the advFlyable macro condition, so the switch affecting that output makes sense. I don't think this behavior will be changed, personally.

rowaasr13 commented 2 months ago

so the switch affecting that output makes sense

It does not makes sense for my use case: I want to detect if I'm in advanced flyable area regardless of anything else and activate switch style if necessary and then random advanced flying mount. Every step of setting up such dynamic button OOC is available now except actually detecting if I'm in a place where advanced flying is possible at all.

Actually it would be good if we had functions for every type of mount Is(AdvFlying/Flying/Ground/Underwater/Vashjir)WorksRightInThePlaceYouStand or something. Those could be new functions if current behavior is desirable for something. Or single function with Enums.

(Just for curiosity sake, in which scenario current behavior of advFlyable would make sense considering we have only about one mount that is steadyFligtOnly?)

mbattersby commented 2 months ago

if I'm in advanced flyable area

Is that a concept that still exists though?

rowaasr13 commented 1 month ago

if I'm in advanced flyable area Is that a concept that still exists though?

At least Tindral's fight and flight from platform to Fyrakk shows false true for /run print(IsFlyableArea(), IsAdvancedFlyableArea()).

Ghostopheles commented 1 month ago

The 'concept' of an advanced flyable area is an area in which one of the conditions I outlined, in the comment above, is met. It's not static and the output can change based on game state.

For macros, this is fine. For all other use cases, it's far less than ideal. If anything, I'd like Blizzard to give us a list of advanced flyable map IDs in-game, or a version of IsAdvancedFlyableArea() that is not subject to as much variation.