Notable UI Changes Coming in 7.1

UI and Macro
1 2 3 5 Next
Patch 7.1 includes several changes to WoW UI functions, and we wanted to call extra attention to a few of them, as they may break some functionality provided by addons. This is not a comprehensive list of all of 7.1’s UI API changes, just the ones we thought addon authors would be most interested in. If you’re not an addon author, feel free to ignore this post, as it’s only covering technical changes to how addons interact with the game.

Unit Position changes

Several unit positioning/facing/range APIs have been restricted so that they will only return valid values when the following criteria are met:
• Unit is the active player or in the party
• Unit is not in any kind of instance PvE or PvP.

The following functions have been affected:
GetPlayerMapPosition
UnitCameraFacing
UnitDistanceSquared
UnitFacing
UnitPosition (note: when in the restricted state, the mapID return is still valid)

There are new ways to access units on the map:
"AddUnit",
"AddUnitFileID",
"AddUnitAtlas",
"ClearUnits",
"FinalizeUnits", It's illegal to call AddUnit after a call to Finalize in the same frame that this was finalized.
"SetPlayerPingTexture",
"StartPlayerPing",
"StopPlayerPing",
"GetMouseOverUnits",
"SetOverrideMapID",
"GetOverrideMapID",

Intrinsics

It’s now possible to create an “intrinsic” frame template. Intrinsics are similar to virtual XML templates but have a few special behaviors.

As an example, here is a simple intrinsic definition.

<Frame name="ExampleIntrinsic" intrinsic="true">
<Scripts>
<OnShow function="ExampleIntrinsic_OnPostShow" intrinsicOrder="postcall" />
</Scripts>
</Frame>


These can be created through CreateFrame like built-in widgets. Using the example above, you’d create a new ExampleIntrinsic by calling CreateFrame(“ExampleIntrinsic”).

These can also be created through XML elements anywhere a frame type could. For example:

<Frame name="ExampleParentFrame">
<Frames>
<ExampleIntrinsic parentKey="Example">
<Scripts>
<OnShow function="ExampleIntrinsic_OnShow" />
</Scripts>
</ExampleIntrinsic>
</Frames>
</Frame>


Lastly, and perhaps most importantly, intrinsics can apply special ordering to their frame scripts. Additionally, once an intrinsic frame script is bound to the frame, it cannot be rebound. However, it can be hooked and inspected. For example, in the definition above the global function “ExampleIntrinsic_OnPostShow” is bound to an instantiation of ExampleIntrinsic. It’s intrinsicOrder is “postcall” which means that this OnShow handler is called after the normal OnShow handler.

The ExampleIntrinsic_OnPostShow cannot be replaced. However, it can be hooked via HookScript or inspected by GetScript by passing in an additional optional argument with either LE_SCRIPT_BINDING_TYPE_INTRINSIC_POSTCALL or LE_SCRIPT_BINDING_TYPE_INTRINSIC_PRECALL. Specifying “precall” for the intrinsicOrder means that the handler is called before the normal OnShow handler. An intrinsic can have both a precall and a postcall.

For an example of usage, see the new ScrollingMessageFrame.xml and the corresponding ScrollingMessageFrame.lua files.

Nameplates

In patch 7.1, addons have been restricted from acting on nameplate. Addons can still gather information, target, and customize nameplates, but can no longer use their unit tokens for spell casts. This is similar to how nameplates worked in Warlords of Draenor.

Functions were added to help addons:

Added:
SetNamePlateFriendlySize,
GetNamePlateFriendlySize,
SetNamePlateEnemySize,
GetNamePlateEnemySize,
SetNamePlateSelfClickThrough,
GetNamePlateSelfClickThrough,
SetNameplateFriendlyClickThrough,
GetNameplateFriendlyClickThrough,
SetNamePlateEnemyClickThrough,
GetNamePlateEnemyClickThrough

These functions allow a specific area on the nameplate to be marked as a preferred click area such that if the nameplate position query results in two overlapping nameplates, the nameplate with the position inside its preferred area will be returned:

SetNamePlateSelfPreferredClickInsets,
GetNamePlateSelfPreferredClickInsets,
SetNamePlateFriendlyPreferredClickInsets,
GetNamePlateFriendlyPreferredClickInsets,
SetNamePlateEnemyPreferredClickInsets,
GetNamePlateEnemyPreferredClickInsets,

Removed:
SetNamePlateOtherSize
GetNamePlateOtherSize
So how do I tell if I'm 8 yards away from everyone around me when the screen is nothing but boss !@#?
I know some of these words
Hopefully boss mechanics will be clearly and precisely telegraphed to the players. Having to guesstimate inane range requirements such as 8 or 10 yards between characters would be tedious in the extreme.
I am definitely concerned about the range meter being no longer functional in raids, especially if there is no default replacement it.

Guesstimating the exact yards would be extremely departmental, on top of trying to keep up on the other mechanics. Things like Nythendra where you can't go above 10 stacks and being in range accidentally causes a stack is very unforgiving if you have to play the guessing game.

Please reconsider the range meter, unless the range requirements for future bosses are not going to be as strict as they have been in the past.
I imagine most of the pulses will be like they are on nythendra.

If you dont stand next to the thing thats pulsing you are probably going to be ok.
In general, I agree with the changes. As boss addons continue to grow in sophistication, the game becomes less of a boss encounter and more of a top-down game where you react more from the data your interface is telling you than interacting with the actual world.

However, boss encounters have never been very well telegraphed, and "eyeballing" exactly X yards while doing everything else asked of you is unreasonable, especially in larger raid settings.

When bosses have strict range requirements and little room for poor positioning, while also generally not giving you much space to work with, it's frustrating enough with a range radar. Without it, some fights are going to be a nightmare. Pun not intended.

So, while I agree with the change, I hope fights going forward are designed with this change in mind, and range requirements are made more forgiving based on the number of people in a raid (flex 10-30 is a pretty huge range). I'd argue some encounters simply need the "dotted line circle" that is used in places like Suramar, if the range requirement is extremely demanding. There was talk during this first reveal that Legion encounters were created with this change in mind, however I'm... really not seeing it. Boss mechanic communication is probably the worst its ever been, positioning being one small part of it.
I really wish there was some alternative to removing the API for UnitPosition in raids. Figuring out how far players are from each other is critical for many many many boss abilities, and it's something that is very difficult to tell with the eye without an addon.

I don't know if it could be as simple as allowing the UI itself to project a circle around you at a given distance, or all boss abilities giving circles like Shade of Xavius fight.
10/04/2016 10:19 AMPosted by Grümp
Hopefully boss mechanics will be clearly and precisely telegraphed to the players. Having to guesstimate inane range requirements such as 8 or 10 yards between characters would be tedious in the extreme.
red on red on red my friend. and boss butt.

I've already coded around what's being done in patch 7.1 in DBM. My main focus of this post though I wanted focused on the two things I couldn't work around without position that need addressing. I've simply been waiting on this post to raise those secondary concerns that have all but been overlooked. Besides breaking range radars and arrows, etc. Some other things were broken too.

Split FIghts (Spoils of pandaria, Galakras, Iron Maidens, etc):
These fights required position of player for alert filtering. Were you on a boat or on a platform. Were you on mantid side or mogu. Without any means to tell WHERE a player is, it'll be far more difficult to appropriately filter events to ensure player has relevant information while filtering that which is not.

Adequate events:
In addition, encounter designers have a history of not including adequate events (ESPECIALLY IN LEGION). For example there was not actually any useable event when boat phase ended on iron maidens. The only way addons could detect phase change on this fight was when number of players on boat == 0. So for example in patch 7.1 half of the iron maidens mod will cease to function.

What needs to happen in absence of position APIs in raids
    1. Split encounters where teams split up need much better events for player to determine location. If for example you are on a fight like spoils, perhaps some kind of buff on player signifying what side of room you are on. This cannot be used for any kind of mapping or super special arrows. It can be used to ensure the user doesn't get too much spam on their screen.
    2. Blizzard REALLY needs to do a better job with events. Combat log or otherwise. If there is a phase change, especially something as paramount as a boat phase ending, it really should have an event. Too often, addon authors are left with having to create elaborate hacks to do something that should be simple.


Ion himself said they are ok with addons relaying INFORMATION such as timers and such (they just wanted to kill all the automation).
So I hope things like breaking phase change detection (and thus timer information) and ability to present information in least spammy way possible (by allowing some way to detect what part of a split fight a player is on) will be considerations blizzard takes to heart going forward.

-------------------
As for my thoughts on why it's being done in first place and how they could have addressed the automation without gutting position/radar stuff, I've given those already and can be found here: http://www.deadlybossmods.com/forum/viewtopic.php?f=3&t=65 .
Please don't kill EnemyGrid with these nameplate changes. Multi-dotting has been a constant process of fighting against your terrible UI for the last ten years, and finally this wonderful addon comes along to make it less painful.

Now I don't have to try and find the right mob amongst a giant pile of dancing nameplates, I have a nice, ordered list that I can travel down, target, and DOT. DOT classes are already vastly inferior to other classes in multitarget situations by virtue of having godawful AOE-- because that one council fight a tier is SUPER IMPORTANT and the marginal advantage you get dotting on it is just SO HUGE-- and now you're going back to making the UI an actual, direct detrimental force.

Just.. why.

Why, why, why. Were people having too much fun on Shadow Priests again? Did they, for one minute, briefly forget the all-important message that they are objectively wrong for not having rolled a mage? Are you just compulsively putting the boots in for the sake of tradition?

Tell me I'm wrong, and this won't affect EnemyGrid. PLEASE.
I understand the change is largely lead over things like Exorsus Raid Tools, but things like the range radar from DBM never seemed as excessive. Can something like that be incorporated by default? With no actual way to measure range of abilities, we're left with hoping players can see the rings on them, based on their own equipment restraints vs what textures are visible.

I would love having some way, even if just in a tooltip to mouse over someone and get a solid range in yards. It seems like a fair spot for things.
I don't use any addons. People who need them are bad
10/04/2016 10:30 AMPosted by Eclipsedsoul
Please reconsider the range meter, unless the range requirements for future bosses are not going to be as strict as they have been in the past.

Trial of Valor requires specific range spreads on all 3 fights. and still just as poorly telegraphed. It's often not as big of a problem for ranged but for melee it can still be a bit of a hassle especially with a lot.
Will the Cast on Nameplate removal also break healers with Mouseover macros?
10/04/2016 11:14 AMPosted by Clonk
Will the Cast on Nameplate removal also break healers with Mouseover macros?

I doubt it, it seems they are undoing the "nameplate" unitID they added in 7.x that allowed mods/macros to cast at nameplates without targetting or mousing over. They basically say nameplates got too powerful in 7.x and they are reverting them somewhat to the power they had in warlords. What worked in warlords should probably work in 7.1
10/04/2016 11:25 AMPosted by Omegal
10/04/2016 11:14 AMPosted by Clonk
Will the Cast on Nameplate removal also break healers with Mouseover macros?

I doubt it, it seems they are undoing the "nameplate" unitID they added in 7.x that allowed mods/macros to cast at nameplates without targetting or mousing over. They basically say nameplates got too powerful in 7.x and they are reverting them somewhat to the power they had in warlords. What worked in warlords should probably work in 7.1


what does this mean for healbot?
SetNamePlateSelfClickThrough, yes thank you
10/04/2016 10:07 AMPosted by Nupnups
So how do I tell if I'm 8 yards away from everyone around me when the screen is nothing but boss !@#?


10/04/2016 10:40 AMPosted by Clawandorder
I really wish there was some alternative to removing the API for UnitPosition in raids. Figuring out how far players are from each other is critical for many many many boss abilities, and it's something that is very difficult to tell with the eye without an addon.

I don't know if it could be as simple as allowing the UI itself to project a circle around you at a given distance, or all boss abilities giving circles like Shade of Xavius fight.


This still works:
https://mods.curse.com/addons/wow/librangecheck-2-0

10/04/2016 11:32 AMPosted by Glitterglow
what does this mean for healbot?

Everything is basically going to work like it used to. The only perceivable change is breaking DBM (for most users), or anything else that relies on positioning in raids (a few WeakAuras and such). I doubt the change to nameplates is even going to affect many users since that specific change is only reverting "one patch" (compared to the positioning changes, which is basically the lifetime of the game). This means, all your 90% of your addons will be working like they used to.

Join the Conversation

Return to Forum