SharpWoW / LibBodyguard-1.0

WoW AddOn library to query information about the player's current bodyguard.
MIT License
0 stars 1 forks source link

Add support for Legion bodyguards #4

Open Sharparam opened 8 years ago

Sharparam commented 8 years ago

:information_source: This issue will be continously updated as new information is gathered.

TODO

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

:warning: This should be tested to see if all Bodyguard followers share that same spell. :warning:

@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
InvisiBilldotnet commented 8 years ago

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.

Sharparam commented 8 years ago

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)
InvisiBilldotnet commented 8 years ago

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.

Sharparam commented 8 years ago

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.

Sharparam commented 8 years ago

@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.