Vocola: Part 4 — Raid Healing and Communication

In Part 2: Healing, Abilities, and Multiple Characters, I gave three examples of how you can heal a group without the use of your hands:

  1. Referencing group members by name or alias (difficult when players names’ include non-standard characters)
  2. Mouseover healing, cascading to target-healing, cascading to self-healing
  3. Referencing group members by numerical index (1-4)
first-aid-sign

Within a raid environment, approaches 1 and 2 serve reasonably well. The numerical index system used in a group can get a little tricky, though. Because, while it’s possible for you to heal the thirty-second member of your raid by saying, Mend 32 to issue the /use [raid32] Swiftmend command, it’s difficult and kludgy to identify raid members visually (it would also likely conflict with your group-healing macro, depending on where your group falls within the raid). But by leveraging any one of the many grid-style raid addons, it’s possible to solve both of these issues.

Healing the Grid

When using numerical healing — /cast [party1] Spell Name — you only need to think in a single dimension, 1-4. But with a raid of 20-40 players, it is useful to think in two dimensions: columns and rows. Using the ElvUI user interface, I configured my raid windows as follows (or see a screenshot).

  • Growth Direction: Down and then Right
  • Number of Groups: 5
  • Groups Per Row/Column: 1
  • Display Player: True
  • Group By: Group
  • Sort Direction: Ascending
  • Raid Wide Sorting: True
  • Invert Grouping Order: False
  • Start Near Center: False
A raid window viewed as rows and columns
A raid window viewed as rows and columns

This creates a set of frames five rows high and as many columns across as there are groups (for the sake of space, I’m only showing four above). I’ve labeled my rows numerically and my columns alphabetically. To be able to heal using [raid#] macros, we need to be able to refer to a group member by their column letter and their row number and have the command that’s generated correctly correspond to their numerical index within the raid. In other words, instead of saying Heal 12 to cast [healing-touch] on Lasanta, we want to be able to say Heal C2 (cast the spell that is aliased as “Heal” on the second row (2) of the third column (C)). To accomplish this, I created two variables in my voice command file: one for columns, one for rows. Each possible value of the column variable is mapped to a numerical value, starting at 0.

<column_index> := A = 0 | B = 1 | C = 2 | D = 3 | E = 4;
<row_index> := 1..5;

The formula that will correctly translate our two spoken inputs into the appropriate [raid#] is:

ColumnValue * 5 + RowNumber

Translating that into a voice command:

<targeted_help> <column_index> <row_index> = "/use [@raid"Eval(Eval(5*$2) + $3)"] $1"{Enter};

With this command, we can heal Mannaer with A4 and Neritica with B5.

An important caveat: For this system to work, the raid leader — who the game always assigns as [raid1]must always be in the first slot of the raid. If he/she gets moved into another position, you will discover that your heals will misfire by 1 position for all characters that appear in the raid frames prior to the raid leader.

Communication

Raiding is a social activity, and it’s important that you be able to communicate easily with the rest of your group (if only to respond that your Rebirth is on cooldown when asked to battle rez). We’ve looked at specifically-defined variables in the past, but Vocola also has an open-ended variable called <_anything> that can be used to interpret and use anything that has been spoken. For instance, the voice command I use for saying anything aloud is:

say <_anything> = "/say $1"{Enter};

This will relay anything that is spoken after I have said Say into the public say channel. Likewise with /yell:

yell <_anything> = "/yell $1"{Enter};

For “speaking” in group, guild, raid, and instance channels, I use the following parameter and commands:

<chat_channel>:= (group = p | guild = gu | raid | instance = i);
<chat_channel> say <_anything> = "/$1 $2"{Enter};

Voice dictation isn’t perfect, even less so when it’s free-form interpreting what has been spoken (as opposed to listening for pre-defined commands and parameters). It tends to make a lot of — sometimes funny, sometimes inappropriate — corrections. Which is why I also created this command:

<chat_channel> correct <_anything> = "/$1 $2*"{Enter};

And for chatting with anyone whose name I’ve defined as a possible value for the <friend> parameter (the same parameter I use to raid heal by name):

tell <friend> <_anything> = "/tell $1 $2"{Enter};
reply <_anything> = "/r $1"{Enter};

Of course, not all communication during raids is through text channels. Most players prefer to communicate through voice chat because it’s often faster than typing. To accommodate the use of Ventrilo (my raid group’s chosen voice chat software), I created a command that takes a parameter for a number of seconds it should keep my mic open before closing it:

vent <number> = Keys.SendInput({f6_hold}) + Wait(Eval($1*1000)) + Keys.SendInput({f6_release});

In this case saying vent 4 will press F6 (the key I have mapped for Push-to-Talk). I have to wait until I hear the audible cue that indicates my mic is open, and then I can speak for up to four seconds, at which point the mic will close. There are, unfortunately, a few downsides to this approach:

  • I can’t issue any other voice commands (such as healing, rezzing, running) while I’m speaking in Vent.
  • There is a small delay between when I have spoken the command to open the mic and when I can begin speaking.
  • I have to guess at how long it will take me to say what is needed without guessing under. Then I have to sit quietly until the time specified elapses and the mic closes.

Because of all of the above, I often instead use the key I have mapped to Push-to-Talk on my game controller.


You aren’t likely to top the healing meters when healing by voice, and you can expect to be sometimes be frustrated by a combination of voice recognition latency or misrecognition. It is nonetheless possible and — with a friendly and understanding raid group — can be a lot of fun without causing or aggravating existing RSI.

Finally, as proof that all of the above is possible, here are a couple of videos I recorded of my raid group in Normal Nighthold. Please forgive the voice chatter. I am not sure how to record my own voice without also picking up theirs!

6 thoughts on “Vocola: Part 4 — Raid Healing and Communication

  1. This is fascinating. What about non-targeted spells? I’m thinking something along the lines of a /castsequence like “cast swiftmend on A2, Wild Growth, Flourish”. Since Wild Growth has a cast time, maybe you’d say go, go, go?
    Tranquility isn’t targeted either, so do you simply say “tranq it up, baby”?
    This has been an awesome series; I hope to read the Continued Adventures.

    1. Excellent question. I have three arrays of spells: Targeted and helpful (<targeted_help>), Targeted and harmful (<targeted_harm>), and Untargeted (either harmful or helpful) (<nontargeted_spell>). Each of them has a separate set of commands that references them:

      Helpful, targeted:
      <targeted_help> <friend> = “/use [@$2] $1″{Enter};
      <targeted_help> [<number>] = When($2, “/use [@party$2,help] $1”, “/use [@mouseover,help][@target,help][@player] $1”){Enter};

      Harmful, targeted:
      <targeted_harm> [<harm_target>] = When($2, “/use [@$2] $1”, “/use [@target,harm,nodead][@focustarget,harm,nodead][@targettarget,harm,nodead][@target] $1”){Enter};

      Untargeted:
      <nontargeted_spell> = “/use $1;”{Enter};

      If you’re interested, I dive into this subject in greater depth in “Part 2: Group Healing, Abilities, and Multiple Characters”. This post is really just an extension of the targeted help to accommodate healing in a raid environment.

      Also, you wouldn’t want to make yourself have to say something like “Tranq it up, baby” because by the time you got that out, some other Druid would totally snipe your super-heal. 🙂

  2. Loving the guide! If you need a no hands tank check me out 🙂 twitch.tv/quadcapable I use a quad stick as well along with Dragon but looking to set up the VOCOLA!

Leave a Reply

Your email address will not be published. Required fields are marked *