blooblahguy / BigDumbLootCouncil

5 stars 6 forks source link

Enhancement: Auto-pass automatically on armor/weapons you can't use. #12

Open Ramurotand opened 6 years ago

Ramurotand commented 6 years ago

I can tell coding-wise this addon was made prior to patch 7.0.3 and at one point you tried to make an auto-pass function that was only working for English clients because of localization issues. I can't find a localization independent way to check relics or tier (which I believe are gone in the next expansion), but it's easy for weapons/armor.

There are new localization independent returns on GetItemInfo now since 7.0.3. I see you only use the first 10 which were expanded in Legion to 15 returns.

https://wow.gamepedia.com/API_GetItemInfo

The 12th and 13th return value is a number which is localization independent.

12 | itemClassID | Number | This is the numerical value that determines the string to display for 'itemType' 13 | itemSubClassID | Number | This is the numerical value that determines the string to display for 'itemSubType'

itemClassID 2 denotes weapons. These are all the sub-classes I've found in game so far: One-handed Axes=0,Two-handed Axes=1,Bows=2,Guns=3,One-handed Maces=4,Two-handed Maces=5,Polearms=6,One-handed Swords=7,Two-handed Swords=8,Warglaives=9,Staves=10,Fist Weapons=13,Miscellaneous=14,Daggers=15,Thrown=16,Crossbows=18,Wands=19,Fishing Poles=20

itemClassID 4 denotes armor. These are all the sub-classes I've found in game so far: Miscellaneous=0,Cloth=1,Leather=2,Mail=3,Plate=4,Cosmetic=5,Shields=6

Offhands, trinkets, and necklaces are labeled as itemClassID 4 itemSubClassID 0. The only way to verify caster offhand versus the others that I can find is to check "INVTYPE_HOLDABLE" in the 9th return itemEquipLoc. If the armor lists 0 in the list below then that means caster offhand.

Cloaks are labeled as itemClassID 4 itemSubClassID 1 which is cloth armor. Apparently long time ago the game had different armor types of cloaks. Checking for "INVTYPE_CLOAK" in the 9th return itemEquipLoc can identify these for non-cloth wearers.

Here is table of what is usable that I found in Legion:

Class=([Weapons]={allowed weapons},[Armor]={allowed armor/offhands},}

Death Knight={[2]={0,1,4,5,6,7,8,14,20},[4]={4,5},} Demon Hunter={[2]={0,7,9,13,14,15,20},[4]={2,5},} Druid={[2]={4,5,6,10,13,14,15,20},[4]={0,2,5},} Hunter=={[2]={0,1,2,3,6,7,8,10,13,14,15,18,20},[4]={3,5},} Mage={[2]={7,10,14,15,19,20},[4]={0,1,5},} Monk={[2]={0,4,6,7,10,13,14,20},[4]={0,2,5},} Paladin={[2]={0,1,4,5,6,7,8,14,20},[4]={0,4,5,6},} Priest={[2]={4,10,14,15,19,20},[4]={0,1,5},} Rogue={[2]={0,4,7,13,14,15,20},[4]={2,5},} Shaman={[2]={0,1,4,5,10,13,14,15,20},[4]={0,3,5,6},} Warlock={[2]={7,10,14,15,19,20},[4]={0,1,5},} Warrior={[2]={0,1,4,5,6,7,8,10,13,14,15,20},[4]={4,5,6},}

You work hard and have fixed all the issues I have with the addon so if you pass on this I understand, but this is a common request from my guildmates for your addon and would speed up the overall loot council voting process. I did some of the grunt work for you in case you're bored sometime and feel ambitious. Thank you for all your hard work.

Update 1: Identifying cloaks, cosmetic armor sub-type information, and table update. Update 2: Added Miscellaneous weapon itemSubClassID

Phlogistons commented 6 years ago

Hi,

We forked BDLC for BfA to run a few tests that are specific to our guild. I just saw this post I implemented a locale-agnostic version of your itemEquippable function.

If this works (full scale test is tomorrow), I'll send a merge request :) BTW, we're also testing a traded-item blacklisting to avoid triggers :3

Ephi

Phlogistons commented 6 years ago

Looks like you merged our fork :)

blooblahguy commented 6 years ago

Yes indeed :). Thanks for putting some work on this, I had some code ready for the auto pass but I just haven't been able to implement and test since I'm working 3 jobs right now.

Out of curiosity, why a locale agnostic version? I see that you renamed the buttons for yourself which is great, maybe we can just code that into the configuration.

Phlogistons commented 6 years ago

We're a french guild (arcanis obscurantis) with half the users playing in french, and the other half in english... so avoiding locales is always safer ^^

The button configuration is the next step, we did this quick&dirty in the meantime. To give you an idea, we're not using the council in BDLC. Our own loot system (BC old, based on a numerical scale) grabs BDLC addon messages. We've chosen BDLC for this extension because it was the nicest/fastest on the end user side to detect/trigger/vote loots and it allowed us to keep our backend :)

-- Good luck with your time management between your jobs, we're getting old in my guild and this is also an issue (which is why it took us 2 weeks to test the autopass filter).