Since 1994 the world of Warcraft has captured the souls of gamers. 10 years later, gamers no longer command from afar, but enter the World of Warcraft themselves to carve out a virtual life in Azeroth of their own. Quests, exploration and riches await as gamers venture through the world on foot, on the back of a gryphon or with a group of friends. World of Warcraft takes place within the Warcraft universe, in the wake of Warcraft III and it's expansion. Choosing your faction plays a major part in the game, as you will be at war with no less than half of the races that inhabit the game.
This addon scans your equipment by reading item tooltips for cumulative bonuses like additional spell damage and sums them up.
Purpose : Scans your equipment by reading item tooltips for cumulative bonuses like additional spell damage and sums them up. It can run as a standalone tooltip scanning mod, but the original intention behind its creation was to be a library for other mods, requesting item bonus data.
Dependencies (for tooltip summary support) are :
AceLibrary
TipHooker-1.0
The BonusScanner package includes these libraries for your convenience.
Addon support : To the best of my knowledge BonusScanner does not interfere or break other addons. There might be a case however where you will witness erratic behaviour, if GratuityLib gets loaded after BonusScanner (and consequently TipHooker). BonusScanner still supports Titan Panel and more specifically TitanItemBonuses. However the version of TitanItemBonuses found in the latest release of Titan Panel is badly outdated, so a modified version that supports the new functions is included in this package.
Basic Usage (as a function library):
BonusScanner.active = 1, when BonusScanner is active
BonusScanner.bonuses always contains a table of the bonuses of the current equipment (for the player). Example: BonusScanner.bonuses['HEAL'] contains the current healing bonus.
The lib also provides the following functions:
BonusScanner:GetBonus(bonus)
- returns total of a certain bonus type or 0 if that bonus type is not present.
- example: BonusScanner:GetBonus('CRIT') returns crit chance bonus of your current equipment.
BonusScanner:GetSlotBonuses(slotname)
- returns table of bonuses on a certain item slot or an empty table if nothing present.
- example: BonusScanner:GetSlotBonuses('Trinket0') returns bonuses on your first trinket slot. Valid slot names are : 'Head', 'Neck', 'Shoulder', 'Shirt', 'Chest', 'Waist', 'Legs', 'Feet', 'Wrist', 'Hands', 'Finger0', 'Finger1', 'Trinket0', 'Trinket1', 'Back', 'MainHand', 'SecondaryHand', 'Ranged', 'Tabard'. They are pretty much self-explanatory.
BonusScanner:GetBonusDetails(bonus)
- returns slot distribution of a certain bonus type.
BonusScanner:GetSlotBonus(bonus, slotname)
- returns the bonus amount of a certain bonus type on a certain item slot.
- example: BonusScanner:GetSlotBonus('DMG', 'Head') returns the spell damage bonus on your helmet.
BonusScanner:GetRatingBonus(type, value,level)
- returns the percentage or raw number of skillpoints of a bonus rating value. Type represents the bonus type, the value is the decimal number of the rating value and level represents the level of the character. A proper format should be used to round the results to a reasonable value.
- example: GetRatingBonus('CRIT',200,70) will return the percentage number corresponding to 200 critical strike rating for a level 70 character.
Available bonus types are:
--Base Stats
STR = 'Strength',
AGI = 'Agility',
STA = 'Stamina',
INT = 'Intellect',
SPI = 'Spirit',
ARMOR = 'Armor' (total),
--Resistances
ARCANERES = 'Arcane Resistance',
FIRERES = 'Fire Resistance',
NATURERES = 'Nature Resistance',
FROSTRES = 'Frost Resistance',
SHADOWRES = 'Shadow Resistance',
--Skills
FISHING = 'Fishing',
MINING = 'Mining',
HERBALISM = 'Herbalism',
SKINNING = 'Skinning',
DEFENSE = 'Defense Rating',
EXPERTISE = 'Expertise Rating',
--Abilities
BLOCK = 'Block Rating',
BLOCKVALUE = 'Block Value',
DODGE = 'Dodge Rating',
PARRY = 'Parry Rating',
RESILIENCE = 'Resilience Rating',
DMGWPN = 'Increased Melee Damage',
RANGEDDMG = 'Ranged Weapon Damage',
ARMORPEN = 'Armor Penetration',
--Attack Power
ATTACKPOWER = 'Attack Power',
ATTACKPOWERUNDEAD = 'Attack Power against Undead',
ATTACKPOWERFERAL = 'Attack Power in feral form',
RANGEDATTACKPOWER = 'Ranged Attack Power',
--Critical
CRIT = 'Crit. Rating' (melee),
SPELLCRIT = 'Spell Crit. Rating',
RANGEDCRIT = 'Crit. Shots',
HOLYCRIT = 'Crit. Holy Spell',
--Hit
TOHIT = 'Hit Rating' (melee),
RANGEDHIT = 'Ranged Hit Rating',
SPELLTOHIT = 'Spell Hit Rating',
--Haste
HASTE = 'Melee Haste Rating',
SPELLH = 'Spell Haste Rating',
--Spell Damage/healing
DMG = 'Spell Damage',
DMGUNDEAD = 'Spell Damage against Undead',
ARCANEDMG = 'Arcane Damage',
FIREDMG = 'Fire Damage',
FROSTDMG = 'Frost Damage',
HOLYDMG = 'Holy Damage',
NATUREDMG = 'Nature Damage',
SHADOWDMG = 'Shadow Damage',
SPELLPEN = 'Spell Penetration',
HEAL = 'Healing',
--Regen
HEALTHREG = 'Life Regeneration',
MANAREG = 'Mana Regeneration',
--Health/mana
HEALTH = 'Life Points',
MANA = 'Mana Points'
More bonus types available for detection can and will be added as I see fit.
Slash Commands : BonusScanner also provides a few slash commands, mostly for debugging purposes. Usage is is /bonusscanner or /bscan or /bs. The options are:
/bscan show - Shows all bonuses of your current equipment.
/bscan details - Shows bonuses with slot distribution.
/bscan tooltip - Attaches bonus summary on item/itemlink tooltips (work in progress).
/bscan clearcache - Clears the item cache and forces a garbage collection (mostly used for debugging purposes).
/bscan target - Shows bonuses for your target's equipped gear (must be in inspect range and friendly/non-NPC).
/bscan target 'player' - Whispers bonuses for your target's equipped gear (must be in inspect range) to the player specified.
/bscan 'itemlink' - Shows bonuses of linked item (insert link with Shift-Click).
/bscan 'itemlink' 'player' - Whispers bonuses of linked item to the player specified.
/bscan 'slotname' - Shows bonuses of given equipment slot.
Installation : Unzip the BonusScanner archive to your ../Interface/Addons folder. In addition, BonusScanner will provide you with an appropriate version of TitanItemBonuses plugin to support functionality in Titan Panel. Should you choose to use this, simply unzip the TitanItemBonuses.zip file into your ../Interface/Addons folder overwriting any old versions (it is recommended that you keep a backup). If all is done properly you should be good and ready to go.
Additional Considerations :
- Set bonuses will not be taken into consideration in the item bonus summary, on an item tooltip, as they aren’t really part of the item but rather conditional. They will still be counted as usual in the overall summary for a specific target or the player himself. This is intended behaviour.
- Detection of temporary bonuses derived by oils, poisons or stones has been disabled as again they do not represent static bonuses but have a limited duration.
Credits: I did not wake up one day and decided to make BonusScanner, I’ve been using the addon as part of Titan Panel back in the day and just picked it up where others left it, having very little to do personally with programming and lua. This addon was originally developed by CrowleyAJ and thus all credit goes to him for his hard work. Special thanks also goes to Archarodim, jmsteele and all the people that have contributed one way or another into keeping the addon alive.