Add support for Legion bodyguards
Sharparam opened this issue · 5 comments
ℹ️ This issue will be continously updated as new information is gathered.
TODO
- Detect if a follower is assigned as a "Combat Ally"
- Detect if said "Combat Ally" is a proper bodyguard (and not just providing some spell)
- Update library to handle both WoD and Legion bodyguards
Analysis
The library should support Legion bodyguards.
This might require some reworking in how bodyguards are handled, to account for bodyguards from different expansions (WoD and Legion). Or perhaps there can be a seamless transition?
On my Horde Druid, out of the visible followers, only one can be a bodyguard that follows you around in the world: Broll Bearmantle.
The output of C_Garrison.GetFollowers()
gives this (trimmed to only show Broll Bearmantle):
[3]={
displayHeight=0.5,
followerTypeID=4,
zoneSupportSpellID=218603,
iLevel=760,
scale=0.60000002384186,
classAtlas="GarrMission_ClassIcon-Druid-Feral",
isTroop=false,
displayIDs={
[1]={
followerPageScale=1,
showWeapon=true,
id=65529
}
},
displayScale=1,
status="Combat Ally",
level=103,
quality=1,
portraitIconID=1360256,
isFavorite=false,
slotSoundKitID=67139,
xp=702,
className="Feral Druid",
classSpec=112,
isMaxLevel=false,
name="Broll Bearmantle",
followerID="0x00000000023CDF49",
height=1.3500000238419,
levelXP=800,
isCollected=true,
garrFollowerID=641
},
(The above table is inside the first table returned by the function.)
The entry zoneSupportSpellID=218603
gives information on the "Combat Ally" spell for the follower. The output of GetSpellInfo(218603)
is the following:
[1]="Bodyguard",
[2]="",
[3]=571585,
[4]=0,
[5]=0,
[6]=40,
[7]=218603
@InvisiBilldotnet did some investigating and found the following bodyguard spells:
Class | Spec | Follower | Spell |
---|---|---|---|
Death Knight | Blood | Koltira Deathweaver | 222365 |
Demon Hunter | Vengeance | Belath Dawnblade | 222964 |
Druid | Feral | Broll Bearmantle | 218603 |
Hunter | Survival | Addie Fizzlebog | 219995 |
Hunter | Survival | Rexxar | 220814 |
Mage | Fire | Millhouse Manastorm | 220212 |
Mage | Frost | Archmage Modera | 220125 |
Monk | Brewmaster | Chen Stormstout | 211945 |
Monk | Windwalker | The Monkey King | 212145 |
Paladin | Protection | Vindicator Boros | 221625 |
Paladin | Retribution | Arator the Redeemer | 221713 |
Priest | Holy | Sol | 222080 |
Priest | Shadow | Zabra Hexx | 222070 |
Rogue | Outcast | Akama | 222820 |
Rogue | Outcast | Shade of Akama | 222842 |
Rogue | Outlaw | Vanessa VanCleef | 221496 |
Shaman | Enhancement | Rehgar Earthfury | 217849 |
Shaman | Elemental | Stormcaller Mylra | 218154 |
Warlock | Destruction | Ritssyn Flamescowl | 216090 |
Warrior | Fury | Dvalen Ironrune | 222827 |
I found 20 Legion Bodyguard spells on Wowhead. The dumped SpellInfo is identical for all of them, other than the SpellID and icon values. Wowhead does list all of them with both Alliance and Horde versions of name/class, but all of the bodyguards have the same info for both sides (not too unexpected, since we all share a Hall).
Here are the SpellID and icon values for each of them:
Chen Stormstout - Brewmaster Monk
211945
611417
The Monkey King - Windwalker Monk
212145
667301
Ritssyn Flamescowl - Destruction Warlock
216090
236297
Rehgar Earthfury - Enhancement Shaman
217849
538568
Stormcaller Mylra - Elemental Shaman
218154
463562
Broll Bearmantle - Feral Druid
218603
571585
Addie Fizzlebog - Survival Hunter
219995
236445
Archmage Modera - Frost Mage
220125
135865
Millhouse Manastorm - Fire Mage
220212
135869
Rexxar - Survival Hunter
220814
132409
Vanessa VanCleef - Outlaw Rogue
221496
135358
Vindicator Boros - Protection Paladin
221625
236256
Arator the Redeemer - Retribution Paladin
221713
1360762
Zabra Hexx - Shadow Priest
222070
1022950
Sol - Holy Priest
222080
458225
Koltira Deathweaver - Blood Death Knight
222365
135770
Akama - Outcast
222820
1305151
Dvalen Ironrune - Fury Warrior
222827
254108
Shade of Akama - Outcast
222842
1305151
Belath Dawnblade - Vengeance Demon Hunter
222964
1355117
When I dumped my follower info, it output so many lines I couldn't see my Bodyguard's entry. If you have an addon that exposes IDs (like idTip or Wowhead Link), you can simply mouse over their Combat Ally ability icon on the Follower screen to get their Bodyguard SpellID.
Thanks for the contribution, @InvisiBilldotnet! Do you by chance play on a non-English version of the WoW client? I need to find out if the return from C_Garrison.GetFollowerStatus()
is localized. If you are, can you please run the following and tell me its output?
/dump C_Garrison.GetFollowerStatus(C_Garrison.GetFollowers(LE_FOLLOWER_TYPE_GARRISON_7_0)[1].followerID)
Sorry, I'm en-US. Hopefully someone can get that info. According to https://us.battle.net/support/en/article/changing-language, you can change the game's language in Battle.net, but I haven't tried it myself.
Bummer. It seems to work decently well at the moment at least. The health tracking is a little buggy when the bodyguard dies and respawns because there doesn't seem to be a good way to track that.
For English clients at least the current revision on master
branch should work. And mousing over the bodyguard is a quick way to update its data (after it respawns for example).
Once I figure out the localization issue it should be ready for a new beta release of BGH.
@InvisiBilldotnet The latest alpha of LibBodyguard-1.0 and BodyguardHealth should now have preliminary support for Bodyguards. My testing so far has been promising, but more people testing it (with bodyguards other than Broll) is always positive!
Note that you'll have to install the alpha LibBodyguard-1.0 separately along with the alpha version of BodyguardHealth (both from Curse) in order to get the necessary alpha changes in LibBodyguard-1.0.