EsreverWoW / ClassicThreatMeter

A simple threat meter for WoW Classic (1.13.2)
37 stars 7 forks source link

[REQ] Group roles and nameplate gradients #10

Open mikfhan opened 5 years ago

mikfhan commented 5 years ago

What is the feature you would like requested?

  1. Automatic handling of tank vs nontank roles for nameplate coloring.
  2. Color gradient fading as threat % approaches a different target type.

Details: Me and a few others mess about with a WoW Retail addon: https://www.curseforge.com/wow/addons/blizzard-nameplates-threat Feel free to try it out if you're bored, though it only works for WoW Retail client.

  1. I wonder if it's possible in WoW Classic to guess a group member's role automatically: Healer: Many healing spells cast, compared to others in the group Tank: Many healing spells or attacks received, compared to others It probably is VERY inaccurate especially if most other group members don't use your addon.

Still, it would allow you to color nameplates similar to how our addon does when tanks hold the monster's threat (green/gray) or healers having threat (red) or damage roles (orange - normally healers are more important to defend than damage roles - see also JPG image below - if you are not a tank role, the colors would be as seen on the right side of the JPG image instead.

  1. Our addon also permits a gradient update 1-9 times per second (disabled in JPG image) that fades the nameplate color between two extremes of low and high threat, so you can almost predict in real-time when each monster changes targets, instead of only showing full colors.

Dunno if any of the above is a useful feature in your addon, just thought I'd mention them since I don't have an active WoW subscription; otherwise I might try and integrate our NPT "getGroupRoles" and "threatSituation" methods with your CTM data somehow - I certainly don't have the skills to collect our own threat data from WoW Classic to the extent you have done :)

npt

EsreverWoW commented 5 years ago

I toyed with the idea of automatically tracking role in a group, but ultimately it is just not that feasible in Classic compared to retail. The global functions associated with group roles in retail don't exist in Classic, and checking things based on stance/auras/gear isn't really an option since there are cases where warriors for example will want to tank but not have traditional defense gear or be in defensive stance all or any of the time.

I may consider adding a gradient option however.

mikfhan commented 5 years ago

Sweet! The NPT addon I linked has the gradient code at the bottom of updateThreatColor if you want inspiration. A bit higher up you see a lot of commented code that sets the base color and fader color from an array of RGB colors depending on the current nameplate threat status (commented out because the code just above does it in fewer lines but is quite unreadable).

For auto detecting roles, instead of stance/auras/gear my thought was more like: Healer: "if this player, compared to all their spells in recent x minutes, cast over y % healing spells" Tank: "if this player, compared to others in recent x minutes, was over y % the attack/healing target" Damage: "if the criteria above do not apply to this player"

This avoids relying on stance/auras/gear but will be rather imprecise early on until a lot of healing and attacks have been made. It also does not directly mean someone is a tank, only that they receive the most attacks/healing in the group (e.g. a rookie damage player needing lots of healing might suddenly show as tank - hopefully other players notice this as a warning sign when colors change).

At any rate, the poor man's role auto detection above is not very precise, but might be the simplest option; take it or leave it, just spitballing/brainstorming to myself :) it certainly is nice to see separate colors when a healer is under attack, as this is likely worse than damage roles being under attack.