WeakAuras

WeakAuras

200M Downloads

Think about supporting soft targets

emptyrivers opened this issue ยท 11 comments

commented

There's a new feature in dragonflight which is alternately called 'soft' or 'action' targetting (presumably the developers did the same thing I did with custom options and changed their minds on what to call it halfway thru development...), which allows the user to have more than one target unit.

With soft targets enabled (there are a bunch of Cvars which control the precise behavior), the game will automatically select a soft target in a manner similar to tab targetting. The traditional target is known as the 'locked' target internally.

Accompanying this change are 6 new possible unitId tokens:

  • anyenemy
    • Resolves to either the "target" unit or "softenemy" target, with "target" being higher priority.
  • anyfriend
    • Resolves to either the "target" unit or "softfriend" target, with "target" being higher priority.
  • anyinteract
    • Resolves to either the "target" unit or "softinteract" target, with "target" being higher priority.
  • softenemy
    • The current soft target that is hostile towards the player.
  • softfriend
    • The current soft target that is friendly towards the player.
  • softinteract
    The current soft target that can be interacted with. This may be an NPC such as a questgiver or merchant, or a game object like a mailbox or a gathering node.

So, with this, there are a few things we might want to adopt:

  • prompt the user (when selecting the target unit) to specify if they want to only use soft targets, or want to avoid the soft target for e.g. aura scan?
  • extend 'has target' global condition to understand soft targets?
commented

some events associated with soft targeting:

  • PLAYER_SOFT_ENEMY_CHANGED
  • PLAYER_SOFT_FRIEND_CHANGED
  • PLAYER_SOFT_INTERACT_CHANGED (though, i haven't been able to see this one fire in the wild)
commented

For an example use case, here is an aura which should glow when anyfriend has a curse I can remove, but unfortunately it doesn't work, because BT2 doesn't think that anyfriend is a trackable unit:

!WA:2!Dvv3UTrru4AzQaTxanM2abrLmbiIYfvOu1QkUZRRDtqo2M1BibUGSZU7z9onRNzzMzTJRexudQKR9JGVMRSq8a4NGrwiEa6JqEc4mJTtBjxS(mN5833z(oNuQzLbvIReF5NpJgXz94fIi4tVH4IojjsqvsmETWCclkLl6YPmvy9gT9B4TmIZZI5Jy9grZHGfBo2iUpK6AcxWeLG2VpiK)8EI1IxU1RkKWzKqjxeEepgcw2hyGGg1lLpQdBMe)Pw2iYy5RKfHWqGP6kGe6fE962OvRzXqyrsI)4CqCqJwDBEClxfEWtMdzz5vEDWpaiz2eCDC6HosVy(z1R1Z)SE(1889S6Z3P(6AVAxbVVaKYQFvpt8U3et8kyuvWsbgpRY2KbWcpyaFiuTEHqclngj3CvWeR4HXsN8Tm38w4ly61g(x31JH)iDMASsjirNh4AYvyEgzmiMwWw30C2t7836kEKcbz)RmwVQlupJiLb67O3w)rw8Qs1VV(d031zbMLiAcn6ymEtjSXjckWIN)g(TTxKP4d07goageccDvh9T0BP)cN5Xu5Zkyrk6qyF058Tiwz)vLJPR(N34kKkacgj7hWhykN9RxDoa51mjw5ruuE6ujKLyPm6BIVBsIcRFfKodFq8G(OpYVDBDLL4Xqe89f8cw8L3oVIcUqDMmLGpjNUMaMVJvP9tcxmGGgSwWLXzW0RVE3VuMFR3ic15zCX3vQuPYVAL2nfLBTJ97K)HwLKcfhdfn6eASk1TgE8Qv5IEbeBv(ILRMb(X1v0c79pRqQOjJrak4keC(Os32DA3qxrG4YyZmRHr2YOm(301GajE3QPG(8QFFbjgBmKQ((Vf23KPLwDJ4I4teK8jNSwyvbmKkPHzqWAm)gZP5BDy72n8oZTJVFNJ8o8Ph4V86u3J(CyN1i603kpMBTJxDo2V1HTB8Vl7NXh1ua)sbWIg39D(M7V)dxHoZfZnF2eHjMdgNxgwOuCwNHGa5YZmQBbS(Q07yTFdYMAou)6oZcKA)0nAsDnxMAZUFkn6Cgoxw26rVisgSsSffvVLnbUyFbePHPaTFQ6fUzCsCZqfAktTT3GImf1X1qp3wh54fzNbqjxj2kmcZewoPP81Vx(T3SpZ8I(eQKGn54uCuIA4jC2J8KkIq1CbqKqpLWIU3vxr)4LXgAoAYzMft4igUkmwoXyNn2p2DaHYAQp3ATotpqZ0pomHYOY0)V65u2kwogphVrwIO7Z58bLeMzsCe6r6N5OZDCr3voZu8OHRMh)4sVC2U045yTJBCQY4J(mVxtcNNiWDpyDJ8UYxTIh00OYuIH9Q71Or79lq3pya7EN)Wg)0r73mebscTVJGYm5asTRB3S7e3kGJ9qGhjlpLuEMb1uBf(175fLcrN)iTt5jdjcQPxoJZ24P3qswbuweLsy9b5NSN(LbtYfCS5PgRFWE6Fd98M6F318)g0VSS(pSMOV0Si5(p4(Mh)jBEUcwIZYiy6KBZTtf5(pbgwz4)C6)b
commented

Did a bit more digging around:

  • the softX unit tokens seems totally normal - appear in events, regitering unit events to them works as expected, etc.
  • anyX unit ids are more abstract - they don't show up in events, registering unit events to anyenemy behaves as if you used a nonsense unit token (i.e. every event is passed to event handler regardless of unit id). Using an any unit token in the API works fine, however.
commented

If the user has the cvar softTargetForce set, then often the distinction between locked & soft target is moot, as unless the user actually locks a target thru a hardware interaction, target will resolve to its soft variant if it exists.

commented

Amusingly, the soft target feature does seem to be available in wotlk (at least, on the PTR - i'm not going to go thru the bother of setting up on wotlk live). So much for #nochanges, i guess.

commented

if you have both friendly and enemy soft targeting enabled, then enemy takes precedence, and both take precedence over interact targeting AFAICT.

commented

If your locked target dies, then it becomes a neutral interact target, and frees up that reaction type for soft targeting.

I have not had the opportunity to see what happens if a locker target changes reaction (eg mind control), though i imagine the rule of "only one GUID can be targeted per reaction type" continues to hold.

commented

Fast replies..
So you are both right, I was able to get it to work using the Custom Event and adding the event myself, it was just missing from the default builtin dropdown event lists. I'm fine using it under custom, and doubt it warrants enough people using the event to include it in a dropdown. Thanks both for replying.

commented

Was there a reason this was marked as completed, but not implemented?
I do not see for example the PLAYER_SOFT_INTERACT_CHANGED anywhere in the code.
Thanks!

commented

It's implemented.

commented

well, i didn't add anything for softinteract, because i didn't see much use for that - if you've found an actual use for interact unit tracking, then consider opening a ticket for it.