From 4aa2e3e550fea6d6b10dfa3eaac07004b98916c8 Mon Sep 17 00:00:00 2001 From: Ben Echols Date: Wed, 7 Apr 2021 23:55:15 -0600 Subject: [PATCH] Big overhaul of UI. Small bug fixes --- .gitignore | 3 + README | 13 +- icons/Armor/INV_Belt_19.png | Bin 0 -> 6574 bytes icons/Armor/INV_Boots_Wolf.png | Bin 0 -> 7361 bytes icons/Armor/INV_Bracer_09.png | Bin 0 -> 6437 bytes icons/Armor/INV_Chest_Chain_04.png | Bin 0 -> 7443 bytes icons/Armor/INV_Gauntlets_26.png | Bin 0 -> 9039 bytes icons/Armor/INV_Helmet_06.png | Bin 0 -> 8355 bytes icons/Armor/INV_Jewelry_Necklace_07.png | Bin 0 -> 8389 bytes icons/Armor/INV_Jewelry_Ring_04.png | Bin 0 -> 7703 bytes icons/Armor/INV_Jewelry_Ring_05.png | Bin 0 -> 9117 bytes icons/Armor/INV_Jewelry_Talisman_09.png | Bin 0 -> 7992 bytes icons/Armor/INV_Jewelry_Talisman_10.png | Bin 0 -> 8011 bytes icons/Armor/INV_Misc_Cape_16.png | Bin 0 -> 8254 bytes icons/Armor/INV_Pants_03.png | Bin 0 -> 8859 bytes icons/Armor/INV_Shield_20.png | Bin 0 -> 7560 bytes icons/Armor/INV_Shoulder_14.png | Bin 0 -> 8765 bytes .../Spells/Spell_Nature_InvisibilityTotem.png | Bin 0 -> 8514 bytes icons/Trade/Trade_Engraving.png | Bin 0 -> 8576 bytes icons/Weapons/INV_Sword_39.png | Bin 0 -> 8866 bytes itemparser/main.go | 21 +- tbc/auras.go | 11 +- tbc/buffs.go | 4 +- tbc/items.go | 809 ++++++++---------- tbc/optimizer.go | 61 +- tbc/sim.go | 10 +- tbc/sim2.go | 4 +- tbc/spells.go | 2 +- ui/index.html | 156 +--- ui/lib.wasm | Bin 2872030 -> 2873532 bytes ui/main_wasm.go | 52 +- ui/simworker.js | 15 +- ui/ui.css | 59 +- ui/ui.js | 298 +++++-- web.go | 2 +- 35 files changed, 744 insertions(+), 776 deletions(-) create mode 100644 .gitignore create mode 100644 icons/Armor/INV_Belt_19.png create mode 100644 icons/Armor/INV_Boots_Wolf.png create mode 100644 icons/Armor/INV_Bracer_09.png create mode 100644 icons/Armor/INV_Chest_Chain_04.png create mode 100644 icons/Armor/INV_Gauntlets_26.png create mode 100644 icons/Armor/INV_Helmet_06.png create mode 100644 icons/Armor/INV_Jewelry_Necklace_07.png create mode 100644 icons/Armor/INV_Jewelry_Ring_04.png create mode 100644 icons/Armor/INV_Jewelry_Ring_05.png create mode 100644 icons/Armor/INV_Jewelry_Talisman_09.png create mode 100644 icons/Armor/INV_Jewelry_Talisman_10.png create mode 100644 icons/Armor/INV_Misc_Cape_16.png create mode 100644 icons/Armor/INV_Pants_03.png create mode 100644 icons/Armor/INV_Shield_20.png create mode 100644 icons/Armor/INV_Shoulder_14.png create mode 100644 icons/Spells/Spell_Nature_InvisibilityTotem.png create mode 100644 icons/Trade/Trade_Engraving.png create mode 100644 icons/Weapons/INV_Sword_39.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..09eb5ae --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +icons +wowsim +.vscode diff --git a/README b/README index 5dc619d..afc68e3 100644 --- a/README +++ b/README @@ -5,24 +5,23 @@ TODO: UI Could use a real design Icons - Gear Colors + Gear Quality Colors Gear Change data on hover of item change dropdown. Gear Stats on hover Gem Display Items - Gems - Gem Slots in existing items. + Gear Quality Trinkets - Validate gear stats - + Validate gear stats - unsure if item data source is accurate. + Enchants Engine - Gem Auras Socket Bonuses Set Bonuses - Upgrader - find upgrade for a single piece. + Upgrader - find upgrade for a single piece? If we can get stat weights we can do it all. Other Implement Gear Phases seventyupgrades importer + Add armor type to allow for a 'mail-only' optimization \ No newline at end of file diff --git a/icons/Armor/INV_Belt_19.png b/icons/Armor/INV_Belt_19.png new file mode 100644 index 0000000000000000000000000000000000000000..0f8cff0a32d85dae6c786c867952c71fc051bc04 GIT binary patch literal 6574 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 literal 0 HcmV?d00001 diff --git a/icons/Armor/INV_Boots_Wolf.png b/icons/Armor/INV_Boots_Wolf.png new file mode 100644 index 0000000000000000000000000000000000000000..53b85eb90a287df3e8023eeffb001d7f189bd591 GIT binary patch literal 7361 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 R|9k)d002ovPDHLkV1lbrR;mC1 literal 0 HcmV?d00001 diff --git a/icons/Armor/INV_Gauntlets_26.png b/icons/Armor/INV_Gauntlets_26.png new file mode 100644 index 0000000000000000000000000000000000000000..c484c6c50106aa1e6da0c47039eaf16593fd289f GIT binary patch literal 9039 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 bBuf4tNqWVurdUO85U7hapK0n=JOS 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 literal 0 HcmV?d00001 diff --git a/icons/Armor/INV_Jewelry_Talisman_09.png b/icons/Armor/INV_Jewelry_Talisman_09.png new file mode 100644 index 0000000000000000000000000000000000000000..99f23017fde94a1d0bc4ef9e964fe91cbc1581a3 GIT binary patch literal 7992 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 N002ovPDHLkV1gz2?!N#4 literal 0 HcmV?d00001 diff --git a/icons/Armor/INV_Misc_Cape_16.png b/icons/Armor/INV_Misc_Cape_16.png new file mode 100644 index 0000000000000000000000000000000000000000..798ec1fbee73783f5abeaa70121bfdff7ecc0810 GIT binary patch literal 8254 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 literal 0 HcmV?d00001 diff --git a/icons/Armor/INV_Pants_03.png b/icons/Armor/INV_Pants_03.png new file mode 100644 index 0000000000000000000000000000000000000000..277a36f86a72bb66565d3cae36228ea20b86013e GIT binary patch literal 8859 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 eH{jn0g8vWgfXEjR3Hqx<^MpYNiIqyy8+V}fu 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 literal 0 HcmV?d00001 diff --git a/icons/Trade/Trade_Engraving.png b/icons/Trade/Trade_Engraving.png new file mode 100644 index 0000000000000000000000000000000000000000..d550a9d9aa2df7f6cdbb16df4d33c4f7d9d3e69e GIT binary patch literal 8576 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 literal 0 HcmV?d00001 diff --git a/itemparser/main.go b/itemparser/main.go index c84d62f..ccecb9c 100644 --- a/itemparser/main.go +++ b/itemparser/main.go @@ -92,14 +92,27 @@ func main() { numYellow, _ := strconv.Atoi(v[14]) numBlue, _ := strconv.Atoi(v[15]) + gemBonus := tbc.Stats{} if len(v[15]) > 0 { // parse out socket bonus tokens := strings.Split(v[15], " ") - val := strconv.Atoi() + val, _ := strconv.Atoi(tokens[0]) if len(tokens) == 2 { - + if tokens[1] == "int" { + gemBonus[tbc.StatInt] = float64(val) + } else if tokens[1] == "mp5" { + gemBonus[tbc.StatMP5] = float64(val) + } } else if len(tokens) == 3 { - + if tokens[1] == "spell" { + if tokens[2] == "crit" { + gemBonus[tbc.StatSpellCrit] = float64(val) + } else if tokens[2] == "hit" { + gemBonus[tbc.StatSpellHit] = float64(val) + } else if tokens[2] == "dmg" { + gemBonus[tbc.StatSpellDmg] = float64(val) + } + } } } it := tbc.Item{ @@ -115,7 +128,7 @@ func main() { tbc.StatHaste: haste, tbc.StatMP5: mp5, }, - GemSlots: make([]tbc.GemColor, numMeta+numRed+numYellow+numBlue), + GemSlots: make([]tbc.GemColor, 0, numMeta+numRed+numYellow+numBlue), } if numMeta > 0 { // its always 1 or 0 it.GemSlots = append(it.GemSlots, tbc.GemColorMeta) diff --git a/tbc/auras.go b/tbc/auras.go index 2b9bb5b..5a57cae 100644 --- a/tbc/auras.go +++ b/tbc/auras.go @@ -128,7 +128,7 @@ func AuraLightningOverload(lvl int) Aura { if c.Spell.ID != MagicIDLB12 && c.Spell.ID != MagicIDCL6 { return } - if c.isLO { + if c.IsLO { return // can't proc LO on LO } if sim.rando.Float64() < 0.04*float64(lvl) { @@ -138,17 +138,12 @@ func AuraLightningOverload(lvl int) Aura { dmg /= 2 } clone := &Cast{ - isLO: true, + IsLO: true, Spell: c.Spell, Hit: c.Hit, Crit: c.Crit, Spellpower: c.Spellpower, - DidDmg: dmg, - Effects: []AuraEffect{ - func(sim *Simulation, c *Cast) { - c.DidDmg /= 2 - }, - }, + Effects: []AuraEffect{func(sim *Simulation, c *Cast) { c.DidDmg /= 2 }}, } sim.Cast(clone) } diff --git a/tbc/buffs.go b/tbc/buffs.go index f2cb006..7ce7abb 100644 --- a/tbc/buffs.go +++ b/tbc/buffs.go @@ -1,7 +1,5 @@ package tbc -import "fmt" - type Options struct { SpellOrder []string UseAI bool // when set true, the AI will modulate the rotations to maximize DPS and mana. @@ -37,7 +35,7 @@ func (o Options) StatTotal(e Equipment) Stats { // Final calculations stats[StatSpellCrit] += (stats[StatInt] / 80) / 100 stats[StatMana] += stats[StatInt] * 15 - fmt.Printf("\fFinal MP5: %f", (stats[StatMP5] + (stats[StatInt] * 0.06))) + // fmt.Printf("\fFinal MP5: %f", (stats[StatMP5] + (stats[StatInt] * 0.06))) return stats } diff --git a/tbc/items.go b/tbc/items.go index 8f880b3..c37d2e0 100644 --- a/tbc/items.go +++ b/tbc/items.go @@ -1,9 +1,5 @@ package tbc -import ( - "fmt" -) - // TODO: Implement gems and socket bonuses. // TODO: is the item separated structure better? @@ -25,288 +21,30 @@ var items = struct { OffHand []Item Totem []Item }{ - Head: []Item{ - {Slot: EquipHead, Name: "Uni-Mind Headdress", SourceZone: "Kara", SourceDrop: "Netherspite", - Stats: Stats{StatStm: 31, StatInt: 40, StatSpellDmg: 46, StatSpellCrit: 25, StatSpellHit: 19}}, - {Slot: EquipHead, Name: "Wicked Witch's Hat", SourceZone: "Kara", SourceDrop: "Opera", - Stats: Stats{StatStm: 37, StatInt: 38, StatSpellDmg: 43, StatHaste: 0, StatSpellCrit: 32, StatSpellHit: 0, StatMP5: 0}}, - {Slot: EquipHead, Name: "Cyclone Faceguard (Tier 4)", SourceZone: "Kara", SourceDrop: "Prince", - Stats: Stats{StatStm: 30, StatInt: 31, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 0, StatMP5: 8}}, - {Slot: EquipHead, Name: "Spellstrike Hood", SourceZone: "Crafted", SourceDrop: "Tailoring", - Stats: Stats{StatStm: 16, StatInt: 12, StatSpellDmg: 46, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 16, StatMP5: 0}}, - {Slot: EquipHead, Name: "Cataclysm Headpiece (Tier 5)", SourceZone: "SSC", SourceDrop: "Lady Vashj", - Stats: Stats{StatStm: 35, StatInt: 28, StatSpellDmg: 54, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 18, StatMP5: 7}}, - {Slot: EquipHead, Name: "Cowl of the Grand Engineer", SourceZone: "TK", SourceDrop: "Void Reaver", - Stats: Stats{StatStm: 22, StatInt: 27, StatSpellDmg: 53, StatHaste: 0, StatSpellCrit: 35, StatSpellHit: 16, StatMP5: 0}}, - {Slot: EquipHead, Name: "Magnified Moon Specs", SourceZone: "Crafted (Patch 2.1)", SourceDrop: "Engineering (Leather)", - Stats: Stats{StatStm: 22, StatInt: 24, StatSpellDmg: 50, StatHaste: 0, StatSpellCrit: 41, StatSpellHit: 0, StatMP5: 0}}, - {Slot: EquipHead, Name: "Gadgetstorm Goggles", SourceZone: "Crafted (Patch 2.1)", SourceDrop: "Engineering (Mail)", - Stats: Stats{StatStm: 28, StatInt: 0, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 40, StatSpellHit: 12, StatMP5: 0}}, - {Slot: EquipHead, Name: "Destruction Holo-gogs", SourceZone: "Crafted (Patch 2.1)", SourceDrop: "Engineering (Cloth)", - Stats: Stats{StatStm: 22, StatInt: 24, StatSpellDmg: 64, StatHaste: 0, StatSpellCrit: 29, StatSpellHit: 0, StatMP5: 0}}, - {Slot: EquipHead, Name: "Skyshatter Headguard (Tier 6)", SourceZone: "Hyjal", SourceDrop: "Archimonde", - Stats: Stats{StatStm: 42, StatInt: 37, StatSpellDmg: 62, StatHaste: 0, StatSpellCrit: 36, StatSpellHit: 0, StatMP5: 8}}, - {Slot: EquipHead, Name: "Cowl of the Illidari High Lord", SourceZone: "BT", SourceDrop: "Illidan", - Stats: Stats{StatStm: 33, StatInt: 31, StatSpellDmg: 64, StatHaste: 0, StatSpellCrit: 47, StatSpellHit: 21, StatMP5: 0}}, - }, - // Meta Gem, Red Gems, Orange Gems, Purple Gems, Socket Bonus - Neck: []Item{ - {Slot: EquipNeck, Name: "Brooch of Unquenchable Fury", SourceZone: "Kara", SourceDrop: "Moroes", - Stats: Stats{StatStm: 24, StatInt: 21, StatSpellDmg: 26, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 15, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipNeck, Name: "Manasurge Pendant", SourceZone: "Shattrah", SourceDrop: "Badges", - Stats: Stats{StatStm: 24, StatInt: 22, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, // , 0, 0, 0, 0, 0}, - {Slot: EquipNeck, Name: "Pendant of the Lost Ages", SourceZone: "SSC", SourceDrop: "Tidewalker", - Stats: Stats{StatStm: 27, StatInt: 17, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipNeck, Name: "Adornment of Stolen Souls", SourceZone: "Kara", SourceDrop: "Prince", - Stats: Stats{StatStm: 18, StatInt: 20, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipNeck, Name: "The Sun King's Talisman", SourceZone: "TK", SourceDrop: "Kael Reward", - Stats: Stats{StatStm: 22, StatInt: 16, StatSpellDmg: 41, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipNeck, Name: "Translucent Spellthread Necklace", SourceZone: "BT", SourceDrop: "RoS", - Stats: Stats{StatStm: 0, StatInt: 0, StatSpellDmg: 46, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 15, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - }, - Shoulder: []Item{ - {Slot: EquipShoulder, Name: "Mantle of the Mind Flayer", SourceZone: "Kara", SourceDrop: "Aran", - Stats: Stats{StatStm: 33, StatInt: 29, StatSpellDmg: 35, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipShoulder, Name: "Mantle of the Elven Kings", SourceZone: "TK", SourceDrop: "Trash", - Stats: Stats{StatStm: 27, StatInt: 18, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 18, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipShoulder, Name: "Cyclone Shoulderguards (Tier 4)", SourceZone: "Gruul's Lair", SourceDrop: "Maulgar", - Stats: Stats{StatStm: 28, StatInt: 26, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 12, StatSpellHit: 0, StatMP5: 0}}, //, 0, 18, 0, 0, 0}, - {Slot: EquipShoulder, Name: "Illidari Shoulderpads", SourceZone: "SSC", SourceDrop: "Tidewalker", - Stats: Stats{StatStm: 34, StatInt: 23, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 16, StatSpellHit: 0, StatMP5: 0}}, //, 0, 18, 0, 0, 0}, - {Slot: EquipShoulder, Name: "Blood-cursed Shoulderpads", SourceZone: "BT", SourceDrop: "Bloodboil", - Stats: Stats{StatStm: 25, StatInt: 19, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 18, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipShoulder, Name: "Cataclysm Shoulderpads (Tier 5)", SourceZone: "TK", SourceDrop: "VoidReaver", - Stats: Stats{StatStm: 26, StatInt: 19, StatSpellDmg: 41, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 6}}, //, 0, 18, 0, 0, 0}, - {Slot: EquipShoulder, Name: "Mantle of Nimble Thought", SourceZone: "BT", SourceDrop: "Tailoring", - Stats: Stats{StatStm: 37, StatInt: 26, StatSpellDmg: 44, StatHaste: 38, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipShoulder, Name: "Skyshatter Mantle (Tier 6)", SourceZone: "BT", SourceDrop: "Mother", - Stats: Stats{StatStm: 30, StatInt: 31, StatSpellDmg: 46, StatHaste: 0, StatSpellCrit: 27, StatSpellHit: 11, StatMP5: 4}}, //, 0, 24, 0, 0, 0}, - {Slot: EquipShoulder, Name: "Hatefury Mantle", SourceZone: "Hyjal", SourceDrop: "Anetheron", - Stats: Stats{StatStm: 15, StatInt: 18, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 0}}, //, 0, 24, 0, 0, 0}, - }, - Back: []Item{ - {Slot: EquipBack, Name: "Ruby Drape of the Mysticant", SourceZone: "Kara", SourceDrop: "Prince", - Stats: Stats{StatStm: 22, StatInt: 21, StatSpellDmg: 30, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 18, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipBack, Name: "Shadow-Cloak of Dalaran", SourceZone: "Kara", SourceDrop: "Moroes", - Stats: Stats{StatStm: 19, StatInt: 18, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipBack, Name: "Shawl of Shifting Probabilities", SourceZone: "Shattrah", SourceDrop: "Badges", - Stats: Stats{StatStm: 18, StatInt: 16, StatSpellDmg: 21, StatHaste: 0, StatSpellCrit: 22, StatSpellHit: 0, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipBack, Name: "Royal Cloak of the Sunstriders", SourceZone: "TK", SourceDrop: "Kaelthas", - Stats: Stats{StatStm: 27, StatInt: 22, StatSpellDmg: 44, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipBack, Name: "Brute Cloak of the Ogre-Magi", SourceZone: "Gruul'sLair", SourceDrop: "Maulgar", - Stats: Stats{StatStm: 18, StatInt: 20, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipBack, Name: "Ancient Spellcloak of the Highborne", SourceZone: "WorldBoss", SourceDrop: "Kazzak", - Stats: Stats{StatStm: 0, StatInt: 15, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 0, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipBack, Name: "Cloak of the Illidari Council", SourceZone: "BT", SourceDrop: "IllidariCouncil", - Stats: Stats{StatStm: 24, StatInt: 16, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 0, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - }, - Chest: []Item{ - {Slot: EquipChest, Name: "Cyclone Chestguard (Tier 4)", SourceZone: "GruulsLair", SourceDrop: "Maulgar", - Stats: Stats{StatStm: 33, StatInt: 32, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 20, StatSpellHit: 0, StatMP5: 8}}, // 0, 27, 0, 0, 0}, - {Slot: EquipChest, Name: "Netherstrike Breastplate", SourceZone: "Crafted", SourceDrop: "Leatherworking", - Stats: Stats{StatStm: 34, StatInt: 23, StatSpellDmg: 37, StatHaste: 0, StatSpellCrit: 32, StatSpellHit: 0, StatMP5: 8}}, // 0, 27, 0, 0, 0}, - {Slot: EquipChest, Name: "Robe of Hateful Echoes", SourceZone: "SSC", SourceDrop: "Hydross", - Stats: Stats{StatStm: 34, StatInt: 36, StatSpellDmg: 50, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 0, StatMP5: 0}}, // 0, 27, 0, 0, 0}, - {Slot: EquipChest, Name: "Robe of the Shadow Council", SourceZone: "BT", SourceDrop: "Teron", - Stats: Stats{StatStm: 37, StatInt: 36, StatSpellDmg: 73, StatHaste: 0, StatSpellCrit: 28, StatSpellHit: 0, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipChest, Name: "Robes of Rhonin", SourceZone: "Hyjal", SourceDrop: "Archimonde", - Stats: Stats{StatStm: 55, StatInt: 38, StatSpellDmg: 81, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 27, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipChest, Name: "Cataclysm Chestpiece (Tier 5)", SourceZone: "TK", SourceDrop: "Kaelthas", - Stats: Stats{StatStm: 37, StatInt: 28, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 10}}, // 0, 27, 0, 0, 0}, - {Slot: EquipChest, Name: "Vestments of the Sea-Witch", SourceZone: "SSC", SourceDrop: "LadyVashj", - Stats: Stats{StatStm: 28, StatInt: 28, StatSpellDmg: 57, StatHaste: 0, StatSpellCrit: 31, StatSpellHit: 27, StatMP5: 0}}, // 0, 27, 0, 0, 0}, - {Slot: EquipChest, Name: "Chestguard of Relentless Storms", SourceZone: "Hyjal", SourceDrop: "Trash", - Stats: Stats{StatStm: 36, StatInt: 30, StatSpellDmg: 74, StatHaste: 0, StatSpellCrit: 46, StatSpellHit: 0, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipChest, Name: "Skyshatter Breastplate (Tier 6)", SourceZone: "BT", SourceDrop: "Illidan", - Stats: Stats{StatStm: 42, StatInt: 41, StatSpellDmg: 62, StatHaste: 0, StatSpellCrit: 27, StatSpellHit: 17, StatMP5: 7}}, // 0, 36, 0, 0, 0}, - }, - Wrist: []Item{ - {Slot: EquipWrist, Name: "Bands of Nefarious Deeds", SourceZone: "Kara", SourceDrop: "Maiden", - Stats: Stats{StatStm: 27, StatInt: 22, StatSpellDmg: 32, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //0, 0, 0, 0, 0, - {Slot: EquipWrist, Name: "Elunite Empowered Bracers", SourceZone: "BT", SourceDrop: "RoS", - Stats: Stats{StatStm: 27, StatInt: 22, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 19, StatMP5: 6}}, //0, 0, 0, 0, 0, - {Slot: EquipWrist, Name: "Focused Mana Bindings", SourceZone: "BT", SourceDrop: "Akama", - Stats: Stats{StatStm: 27, StatInt: 20, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 19, StatMP5: 0}}, //0, 0, 0, 0, 0, - {Slot: EquipWrist, Name: "Netherstrike Bracers", SourceZone: "Crafted", SourceDrop: "Leatherworking", - Stats: Stats{StatStm: 13, StatInt: 13, StatSpellDmg: 20, StatHaste: 0, StatSpellCrit: 17, StatSpellHit: 0, StatMP5: 6}}, //0, 0, 8, 0, 2, - {Slot: EquipWrist, Name: "Bands of the Coming Storm", SourceZone: "BT", SourceDrop: "Supremus", - Stats: Stats{StatStm: 28, StatInt: 28, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 21, StatSpellHit: 0, StatMP5: 0}}, //0, 0, 0, 0, 0, - {Slot: EquipWrist, Name: "Mindstorm Wristbands", SourceZone: "TK", SourceDrop: "Alar", - Stats: Stats{StatStm: 13, StatInt: 13, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, //0, 0, 0, 0, 0, - {Slot: EquipWrist, Name: "Cuffs of Devastation", SourceZone: "Hyjal", SourceDrop: "Winterchill", - Stats: Stats{StatStm: 22, StatInt: 20, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 14, StatSpellHit: 0, StatMP5: 0}}, //0, 12, 0, 0, 0, - }, - Hands: []Item{ - {Slot: EquipHands, Name: "Cyclone Handguards (Tier 4)", SourceZone: "Kara", SourceDrop: "Curator", - Stats: Stats{StatStm: 26, StatInt: 29, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 19, StatMP5: 6}}, //0, 0, 0, 0, 0, - {Slot: EquipHands, Name: "Handwraps of Flowing Thought", SourceZone: "Kara", SourceDrop: "Huntsman", - Stats: Stats{StatStm: 24, StatInt: 22, StatSpellDmg: 35, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 14, StatMP5: 0}}, //0, 18, 0, 0, 0, - {Slot: EquipHands, Name: "Cataclysm Handgrips (Tier 5)", SourceZone: "TK", SourceDrop: "LeotherastheBlind", - Stats: Stats{StatStm: 25, StatInt: 27, StatSpellDmg: 41, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 19, StatMP5: 7}}, //0, 0, 0, 0, 0, - {Slot: EquipHands, Name: "Gauntlets of the Sun King", SourceZone: "TK", SourceDrop: "Kaelthas", - Stats: Stats{StatStm: 28, StatInt: 29, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 28, StatSpellHit: 0, StatMP5: 0}}, //0, 0, 0, 0, 0, - {Slot: EquipHands, Name: "Anger-Spark Gloves", SourceZone: "World Boss", SourceDrop: "Doomwalker", - Stats: Stats{StatStm: 0, StatInt: 0, StatSpellDmg: 30, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 20, StatMP5: 0}}, //0, 18, 0, 0, 2, - {Slot: EquipHands, Name: "Soul-Eater's Handwraps", SourceZone: "Magtheridon's Lair", SourceDrop: "Magtheridon", - Stats: Stats{StatStm: 31, StatInt: 24, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 21, StatSpellHit: 0, StatMP5: 0}}, //0, 18, 0, 0, 0, - {Slot: EquipHands, Name: "Skyshatter Guantlets (Tier 6)", SourceZone: "Hyjal", SourceDrop: "Azgalor", - Stats: Stats{StatStm: 30, StatInt: 31, StatSpellDmg: 46, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 19, StatMP5: 0}}, //0, 9, 0, 0, 2, - }, - Waist: []Item{ - {Slot: EquipWaist, Name: "Nethershard Girdle", SourceZone: "Kara", SourceDrop: "Moroes", - Stats: Stats{StatStm: 22, StatInt: 30, StatSpellDmg: 35, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //0, 0, 0, 0, 0, - {Slot: EquipWaist, Name: "General's Mail Girdle", SourceZone: "PvP", SourceDrop: "PvP", - Stats: Stats{StatStm: 34, StatInt: 23, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, //0, 0, 0, 0, 0, - {Slot: EquipWaist, Name: "Malefic Girdle", SourceZone: "Kara", SourceDrop: "Illhoof", - Stats: Stats{StatStm: 27, StatInt: 26, StatSpellDmg: 37, StatHaste: 0, StatSpellCrit: 21, StatSpellHit: 0, StatMP5: 0}}, //0, 0, 0, 0, 0, - {Slot: EquipWaist, Name: "Monsoon Belt", SourceZone: "SSC/TK", SourceDrop: "Leatherworking", - Stats: Stats{StatStm: 23, StatInt: 24, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 21, StatMP5: 0}}, //0, 18, 0, 0, 0, - {Slot: EquipWaist, Name: "Netherstrike Belt", SourceZone: "Crafted", SourceDrop: "Leatherworking", - Stats: Stats{StatStm: 10, StatInt: 17, StatSpellDmg: 30, StatHaste: 0, StatSpellCrit: 16, StatSpellHit: 0, StatMP5: 9}}, //0, 18, 0, 0, 0, - {Slot: EquipWaist, Name: "Belt of Divine Inspiration", SourceZone: "Gruul's Lair", SourceDrop: "Maulgar", - Stats: Stats{StatStm: 27, StatInt: 26, StatSpellDmg: 43, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //0, 18, 0, 0, 0, - {Slot: EquipWaist, Name: "Cord of Screaming Terrors", SourceZone: "SSC", SourceDrop: "Lurker", - Stats: Stats{StatStm: 34, StatInt: 15, StatSpellDmg: 50, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 24, StatMP5: 0}}, //0, 18, 0, 0, 0, - {Slot: EquipWaist, Name: "Girdle of Ruination", SourceZone: "Crafted", SourceDrop: "Tailoring", - Stats: Stats{StatStm: 18, StatInt: 13, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 20, StatSpellHit: 0, StatMP5: 0}}, //0, 18, 0, 0, 0, - {Slot: EquipWaist, Name: "Belt of the Crescent Moon", SourceZone: "Hyjal", SourceDrop: "Kazrogal", - Stats: Stats{StatStm: 25, StatInt: 27, StatSpellDmg: 44, StatHaste: 36, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //0, 0, 0, 0, 0, - {Slot: EquipWaist, Name: "Waistwrap of Infinity", SourceZone: "BT", SourceDrop: "Supremus", - Stats: Stats{StatStm: 31, StatInt: 22, StatSpellDmg: 56, StatHaste: 32, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //0, 0, 0, 0, 0, - {Slot: EquipWaist, Name: "Belt of Blasting", SourceZone: "SSC/TK", SourceDrop: "Tailoring", - Stats: Stats{StatStm: 0, StatInt: 0, StatSpellDmg: 50, StatHaste: 0, StatSpellCrit: 30, StatSpellHit: 23, StatMP5: 0}}, //0, 18, 0, 0, 0, - {Slot: EquipWaist, Name: "Anetheron's Noose", SourceZone: "Hyjal", SourceDrop: "Anetheron", - Stats: Stats{StatStm: 22, StatInt: 23, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 0}}, //0, 24, 0, 0, 0, - {Slot: EquipWaist, Name: "Flashfire Girdle", SourceZone: "BT", SourceDrop: "Akama", - Stats: Stats{StatStm: 27, StatInt: 26, StatSpellDmg: 44, StatHaste: 37, StatSpellCrit: 18, StatSpellHit: 0, StatMP5: 0}}, //0, 0, 0, 0, 0, - }, - Legs: []Item{ - {Slot: EquipLegs, Name: "Cyclone Legguards (Tier 4)", SourceZone: "Gruul's Lair", SourceDrop: "Gruul", - Stats: Stats{StatStm: 40, StatInt: 40, StatSpellDmg: 49, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 20, StatMP5: 8}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipLegs, Name: "Trial-Fire Trousers", SourceZone: "Kara", SourceDrop: "Opera", - Stats: Stats{StatStm: 42, StatInt: 40, StatSpellDmg: 49, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 25, 0, 5}, - {Slot: EquipLegs, Name: "Trousers of the Astromancer", SourceZone: "TK", SourceDrop: "Solarian", - Stats: Stats{StatStm: 33, StatInt: 36, StatSpellDmg: 54, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 27, 0, 0, 0}, - {Slot: EquipLegs, Name: "Cataclysm Leggings (Tier 5)", SourceZone: "TK", SourceDrop: "Karathress", - Stats: Stats{StatStm: 48, StatInt: 46, StatSpellDmg: 54, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 14, StatMP5: 0}}, //, 0, 0, 8, 0, 2}, - {Slot: EquipLegs, Name: "Spellstrike Pants", SourceZone: "Crafted", SourceDrop: "Tailoring", - Stats: Stats{StatStm: 12, StatInt: 8, StatSpellDmg: 46, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 22, StatMP5: 0}}, //, 0, 27, 0, 0, 0}, - {Slot: EquipLegs, Name: "Leggings of Devastation", SourceZone: "BT", SourceDrop: "Mother", - Stats: Stats{StatStm: 40, StatInt: 42, StatSpellDmg: 60, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 26, StatMP5: 0}}, //, 0, 36, 0, 0, 0}, - {Slot: EquipLegs, Name: "Skyshatter Pants (Tier 6)", SourceZone: "BT", SourceDrop: "IllidariCouncil", - Stats: Stats{StatStm: 40, StatInt: 42, StatSpellDmg: 62, StatHaste: 0, StatSpellCrit: 29, StatSpellHit: 20, StatMP5: 11}}, //, 0, 0, 11, 0, 2}, - {Slot: EquipLegs, Name: "Leggings of the Seventh Circle", SourceZone: "World Boss", SourceDrop: "Kazzak", - Stats: Stats{StatStm: 0, StatInt: 22, StatSpellDmg: 50, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 18, StatMP5: 0}}, //, 0, 9, 16, 0, 5}, - {Slot: EquipLegs, Name: "Leggings of Channeled Elements", SourceZone: "Hyjal", SourceDrop: "Kazrogal", - Stats: Stats{StatStm: 25, StatInt: 28, StatSpellDmg: 59, StatHaste: 0, StatSpellCrit: 34, StatSpellHit: 18, StatMP5: 0}}, //, 0, 36, 0, 0, 0}, - }, - Feet: []Item{ - {Slot: EquipFeet, Name: "Boots of the Infernal Coven", SourceZone: "Kara", SourceDrop: "Aran", - Stats: Stats{StatStm: 27, StatInt: 27, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFeet, Name: "Ruby Slippers", SourceZone: "Kara", SourceDrop: "Opera", - Stats: Stats{StatStm: 33, StatInt: 29, StatSpellDmg: 35, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 16, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFeet, Name: "Windshear Boots", SourceZone: "Gruul's Lair", SourceDrop: "Gruul", - Stats: Stats{StatStm: 37, StatInt: 32, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 18, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFeet, Name: "Blue Suede Shoes", SourceZone: "Hyjal", SourceDrop: "Kazrogal", - Stats: Stats{StatStm: 37, StatInt: 32, StatSpellDmg: 56, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 18, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFeet, Name: "Boots of Blasting", SourceZone: "SSC/TK", SourceDrop: "Tailoring", - Stats: Stats{StatStm: 25, StatInt: 25, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 18, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFeet, Name: "Boots of Foretelling", SourceZone: "Kara", SourceDrop: "Maiden", - Stats: Stats{StatStm: 27, StatInt: 23, StatSpellDmg: 26, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 0, StatMP5: 0}}, //, 0, 18, 0, 0, 0}, - {Slot: EquipFeet, Name: "Hurricane Boots", SourceZone: "SSC/TK", SourceDrop: "Leatherworking", - Stats: Stats{StatStm: 25, StatInt: 26, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 0, StatMP5: 6}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFeet, Name: "Velvet Boots of the Guardian", SourceZone: "SSC", SourceDrop: "Lurker", - Stats: Stats{StatStm: 21, StatInt: 21, StatSpellDmg: 49, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFeet, Name: "Boots of Oceanic Fury", SourceZone: "BT", SourceDrop: "Najentus", - Stats: Stats{StatStm: 28, StatInt: 36, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFeet, Name: "Naturewarden's Treads", SourceZone: "BT", SourceDrop: "RoS", - Stats: Stats{StatStm: 39, StatInt: 18, StatSpellDmg: 44, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 0, StatMP5: 7}}, //, 0, 24, 0, 0, 0}, - {Slot: EquipFeet, Name: "Slippers of the Seacaller", SourceZone: "BT", SourceDrop: "Najentus", - Stats: Stats{StatStm: 25, StatInt: 18, StatSpellDmg: 44, StatHaste: 0, StatSpellCrit: 29, StatSpellHit: 0, StatMP5: 0}}, //, 0, 24, 0, 0, 0}, - }, - Finger: []Item{ - {Slot: EquipFinger, Name: "Band of Crimson Fury", SourceZone: "Magtheridon's Lair", SourceDrop: "MagtheridonQuest", - Stats: Stats{StatStm: 22, StatInt: 22, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 16, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFinger, Name: "Spectral Band of Innervation", SourceZone: "Kara", SourceDrop: "Huntsman", - Stats: Stats{StatStm: 22, StatInt: 24, StatSpellDmg: 29, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFinger, Name: "Band of Alar", SourceZone: "TK", SourceDrop: "Alar", - Stats: Stats{StatStm: 24, StatInt: 23, StatSpellDmg: 37, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFinger, Name: "Ring of Cryptic Dreams", SourceZone: "Shattrah", SourceDrop: "Badges", - Stats: Stats{StatStm: 16, StatInt: 17, StatSpellDmg: 23, StatHaste: 0, StatSpellCrit: 20, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFinger, Name: "Violet Signet of the Archmage", SourceZone: "Kara", SourceDrop: "Exalted", - Stats: Stats{StatStm: 24, StatInt: 23, StatSpellDmg: 29, StatHaste: 0, StatSpellCrit: 17, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFinger, Name: "Ring of Recurrence", SourceZone: "Kara", SourceDrop: "Chess", - Stats: Stats{StatStm: 15, StatInt: 15, StatSpellDmg: 32, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFinger, Name: "Band of the Eternal Sage", SourceZone: "Hyjal", SourceDrop: "Exalted", - Stats: Stats{StatStm: 28, StatInt: 25, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFinger, Name: "Ring of Endless Coils", SourceZone: "SSC", SourceDrop: "LadyVashj", - Stats: Stats{StatStm: 31, StatInt: 0, StatSpellDmg: 37, StatHaste: 0, StatSpellCrit: 22, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFinger, Name: "Ring of Unrelenting Storms", SourceZone: "Kara", SourceDrop: "Trash", - Stats: Stats{StatStm: 0, StatInt: 15, StatSpellDmg: 43, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFinger, Name: "Ring of Captured Storms", SourceZone: "BT", SourceDrop: "Najentus", - Stats: Stats{StatStm: 0, StatInt: 0, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 29, StatSpellHit: 19, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipFinger, Name: "Ring of Ancient Knowledge", SourceZone: "BT", SourceDrop: "Trash", - Stats: Stats{StatStm: 30, StatInt: 20, StatSpellDmg: 39, StatHaste: 31, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - }, - MainHand: []Item{ - {Slot: EquipWeapon, Name: "Gavel of Unearthed Secrets", SourceZone: "Shattrah", SourceDrop: "LowerCityExalted", - Stats: Stats{StatStm: 24, StatInt: 16, StatSpellDmg: 159, StatHaste: 0, StatSpellCrit: 15, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipWeapon, Name: "Eternium Runed Blade", SourceZone: "Crafted", SourceDrop: "Blacksmithing", - Stats: Stats{StatStm: 0, StatInt: 19, StatSpellDmg: 168, StatHaste: 0, StatSpellCrit: 21, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipWeapon, Name: "Gladiator's Gavel / Gladiator's Spellblade", SourceZone: "PvP", SourceDrop: "PvP", - Stats: Stats{StatStm: 28, StatInt: 18, StatSpellDmg: 199, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipWeapon, Name: "Nathrezim Mindblade", SourceZone: "Kara", SourceDrop: "Prince", - Stats: Stats{StatStm: 18, StatInt: 18, StatSpellDmg: 203, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipWeapon, Name: "Talon of the Tempest", SourceZone: "World Boss", SourceDrop: "Doomwalker", - Stats: Stats{StatStm: 0, StatInt: 10, StatSpellDmg: 194, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 9, StatMP5: 0}}, //, 0, 18, 0, 0, 0}, - {Slot: EquipWeapon, Name: "Hammer of Judgement", SourceZone: "Hyjal", SourceDrop: "Trash", - Stats: Stats{StatStm: 33, StatInt: 22, StatSpellDmg: 236, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 22, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipWeapon, Name: "The Maelstrom's Fury", SourceZone: "BT", SourceDrop: "Najentus", - Stats: Stats{StatStm: 33, StatInt: 21, StatSpellDmg: 236, StatHaste: 0, StatSpellCrit: 22, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipWeapon, Name: "Staff of Infinite Mysteries", SourceZone: "Kara", SourceDrop: "Curator", - Stats: Stats{StatStm: 61, StatInt: 51, StatSpellDmg: 185, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 23, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipWeapon, Name: "The Nexus Key", SourceZone: "TK", SourceDrop: "Kaelthas", - Stats: Stats{StatStm: 76, StatInt: 52, StatSpellDmg: 236, StatHaste: 0, StatSpellCrit: 51, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipWeapon, Name: "Zhar'doom, Greatstaff of the Devourer", SourceZone: "BT", SourceDrop: "Illidan", - Stats: Stats{StatStm: 70, StatInt: 47, StatSpellDmg: 259, StatHaste: 55, StatSpellCrit: 36, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - }, - OffHand: []Item{ - {Slot: EquipOffhand, Name: "Jewel of Infinite Possibilities", SourceZone: "Kara", SourceDrop: "Netherspite", - Stats: Stats{StatStm: 19, StatInt: 18, StatSpellDmg: 23, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 21, StatMP5: 0}}, // , 0, 0, 0, 0, 0}, - {Slot: EquipOffhand, Name: "Dragonheart Flameshield", SourceZone: "Kara", SourceDrop: "Nightbane", - Stats: Stats{StatStm: 19, StatInt: 33, StatSpellDmg: 23, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 7}}, // , 0, 0, 0, 0, 0}, - {Slot: EquipOffhand, Name: "Illidari Runeshield", SourceZone: "BT", SourceDrop: "Trash", - Stats: Stats{StatStm: 45, StatInt: 39, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipOffhand, Name: "Karaborian Talisman", SourceZone: "Magtheridon's Lair", SourceDrop: "Magtheridon", - Stats: Stats{StatStm: 23, StatInt: 23, StatSpellDmg: 35, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipOffhand, Name: "Mazthoril Honor Shield", SourceZone: "Shattrah", SourceDrop: "Badges", - Stats: Stats{StatStm: 16, StatInt: 29, StatSpellDmg: 23, StatHaste: 0, StatSpellCrit: 21, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipOffhand, Name: "Talisman of Nightbane", SourceZone: "Kara", SourceDrop: "Nightbane", - Stats: Stats{StatStm: 19, StatInt: 19, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 17, StatSpellHit: 0, StatMP5: 0}}, // 0, 0, 0, 0, 0}, - {Slot: EquipOffhand, Name: "Blind-Seers Icon", SourceZone: "BT", SourceDrop: "Akama", - Stats: Stats{StatStm: 25, StatInt: 16, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 24, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipOffhand, Name: "Khadgar's Knapsack", SourceZone: "Shattrah", SourceDrop: "Badges", - Stats: Stats{StatStm: 0, StatInt: 0, StatSpellDmg: 49, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipOffhand, Name: "FathomStone", SourceZone: "SSC", SourceDrop: "Lurker", - Stats: Stats{StatStm: 16, StatInt: 12, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipOffhand, Name: "Antonidas's Aegis of Rapt Concentration", SourceZone: "Hyjal", SourceDrop: "Archimonde", - Stats: Stats{StatStm: 28, StatInt: 32, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 20, StatSpellHit: 0, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - {Slot: EquipOffhand, Name: "Chronicle of Dark Secrets", SourceZone: "Hyjal", SourceDrop: "Winterchill", - Stats: Stats{StatStm: 16, StatInt: 12, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 17, StatMP5: 0}}, //, 0, 0, 0, 0, 0}, - }, - Trinket: []Item{ - {Slot: EquipTrinket, Name: "Quagmirran's Eye", SourceZone: "The Slave Pens", SourceDrop: "Quagmirran", Stats: Stats{StatSpellDmg: 37}, - Activate: ActivateQuagsEye, ActivateCD: -1}, // -1 will trigger an activation only once - {Slot: EquipTrinket, Name: "Icon of the Silver Crescent", SourceZone: "Shattrath", SourceDrop: "G'eras - 41 Badges", Stats: Stats{StatSpellDmg: 44}, - Activate: ActivateSilverCrescent, ActivateCD: 120 * TicksPerSecond, CoolID: MagicIDISCTrink}, - {Slot: EquipTrinket, Name: "Natural Alignment Crystal", SourceZone: "BWL", SourceDrop: "", Stats: Stats{}, - Activate: ActivateNAC, ActivateCD: 300 * TicksPerSecond, CoolID: MagicIDNACTrink}, - {Slot: EquipTrinket, Name: "Neltharion's Tear", SourceZone: "BWL", SourceDrop: "Nefarian", Stats: Stats{StatSpellDmg: 44, StatSpellHit: 16}}, - }, - Totem: []Item{ - {Slot: EquipTotem, Name: "Skycall Totem", SourceZone: "Geras", SourceDrop: "20 Badges", Stats: Stats{}, - Activate: ActivateSkycall, ActivateCD: -1}, // -1 will trigger an activation only once + Head: []Item{}, + Neck: []Item{}, + Shoulder: []Item{}, + Back: []Item{}, + Chest: []Item{}, + Wrist: []Item{}, + Hands: []Item{}, + Waist: []Item{}, + Legs: []Item{}, + Feet: []Item{}, + Finger: []Item{}, + MainHand: []Item{}, + OffHand: []Item{}, + Trinket: []Item{ + // {Slot:0xe, Name:"Darkmoon Card: Crusade", SourceZone:"Blessings Deck", SourceDrop:"", Stats:Stats{0, 0, 0, 0, 0, 0, 0}, GemSlots:[]GemColor{} } + // {Slot:0xe, Name:"Scryer's Bloodgem", SourceZone:"The Scryers - Revered", SourceDrop:"", Stats:Stats{0, 0, 0, 32, 0, 0, 0}, GemSlots:[]GemColor{} } + // {Slot:0xe, Name:"Arcanist's Stone", SourceZone:"H OHF - Epoch Hunter", SourceDrop:"", Stats:Stats{0, 0, 0, 25, 0, 0, 0}, GemSlots:[]GemColor{} } + // {Slot:0xe, Name:"Shiffar's Nexus-Horn", SourceZone:"Arc - Harbinger Skyriss", SourceDrop:"", Stats:Stats{0, 0, 30, 0, 0, 0, 0}, GemSlots:[]GemColor{} } + // {Slot:0xe, Name:"Xi'ri's Gift", SourceZone:"The Sha'tar - Revered", SourceDrop:"", Stats:Stats{0, 0, 32, 0, 0, 0, 0}, GemSlots:[]GemColor{} } + // {Slot:0xe, Name:"Vengeance of the Illidari", SourceZone:"Cruel's Intentions/Overlord - HFP Quest", SourceDrop:"", Stats:Stats{0, 0, 26, 0, 0, 0, 0}, GemSlots:[]GemColor{} } + // {Slot:0xe, Name:"Figurine - Living Ruby Serpent", SourceZone:"Jewelcarfting BoP", SourceDrop:"", Stats:Stats{23, 33, 0, 0, 0, 0, 0}, GemSlots:[]GemColor{} } + }, + Totem: []Item{}, } var Gems = []Gem{ @@ -328,6 +66,23 @@ var Gems = []Gem{ // {Name: "Eternal Earthstorm Diamond", Color: GemColorMeta, Stats: Stats{}}, // {Name: "Brutal Earthstorm Diamond", Color: GemColorMeta, Stats: Stats{}}, {Name: "Insightful Earthstorm Diamond", Color: GemColorMeta, Stats: Stats{StatInt: 12}, Activate: ActivateIED}, + {Name: "Runed Blood Garnet", Color: GemColorRed, Stats: Stats{StatSpellDmg: 7}}, + {Name: "Runed Living Ruby", Color: GemColorRed, Stats: Stats{StatSpellDmg: 9}}, + {Name: "Runed Crimson Spinel", Color: GemColorRed, Stats: Stats{StatSpellDmg: 12}}, + {Name: "Lustrous Azure Moonstone", Color: GemColorBlue, Stats: Stats{StatMP5: 2}}, + {Name: "Lustrous Star of Elune", Color: GemColorBlue, Stats: Stats{StatMP5: 3}}, + {Name: "Lustrous Empyrean Sapphire", Color: GemColorBlue, Stats: Stats{StatMP5: 4}}, + {Name: "Brilliant Golden Draenite", Color: GemColorYellow, Stats: Stats{StatInt: 6}}, + {Name: "Brilliant Dawnstone", Color: GemColorYellow, Stats: Stats{StatInt: 8}}, + {Name: "Brilliant Lionseye", Color: GemColorYellow, Stats: Stats{StatInt: 10}}, + {Name: "Gleaming Golden Draenite", Color: GemColorYellow, Stats: Stats{StatSpellCrit: 6}}, + {Name: "Gleaming Dawnstone", Color: GemColorYellow, Stats: Stats{StatSpellCrit: 8}}, + {Name: "Gleaming Lionseye", Color: GemColorYellow, Stats: Stats{StatSpellCrit: 10}}, + {Name: "Potent Flame Spessarite", Color: GemColorOrange, Stats: Stats{StatSpellCrit: 3, StatSpellDmg: 4}}, + {Name: "Potent Noble Topaz", Color: GemColorOrange, Stats: Stats{StatSpellCrit: 4, StatSpellDmg: 5}}, + {Name: "Potent Pyrestone", Color: GemColorOrange, Stats: Stats{StatSpellCrit: 5, StatSpellDmg: 6}}, + {Name: "Infused Fire Opal", Color: GemColorOrange, Stats: Stats{StatInt: 4, StatSpellDmg: 6}}, + {Name: "Rune Covered Chrysoprase", Color: GemColorGreen, Stats: Stats{StatMP5: 2, StatSpellCrit: 5}}, } var ItemLookup = map[string]*Item{} @@ -420,16 +175,6 @@ func init() { } } -// Darkmoon Card: Crusade Blessings Deck 78 -// Scryer's Bloodgem The Scryers - Revered 74.6 / 21 32 -// Quagmirran's Eye H SP - Quagmirran 68.6 37 -// Arcanist's Stone H OHF - Epoch Hunter 66.7 / 24.2 25 -// Icon of the Silver Crescent 41 Badge of Justice - G'eras 64.8 43 -// Shiffar's Nexus-Horn Arc - Harbinger Skyriss 45.4 30 -// Xi'ri's Gift The Sha'tar - Revered 40 32 -// Vengeance of the Illidari Cruel's Intentions/Overlord - HFP Quest 29.3 26 -// Figurine - Living Ruby Serpent Jewelcarfting BoP 33 23 - type Item struct { Slot byte Name string @@ -444,15 +189,15 @@ type Item struct { // For simplicity all items that produce an aura are 'activatable'. // Since we activate all items on CD, this works fine for stuff like Quags Eye. // TODO: is this the best design for this? - Activate ItemActivation // Activatable Ability, produces an aura - ActivateCD int // cooldown on activation, -1 means perm effect. - CoolID int32 // ID used for cooldown + Activate ItemActivation `json:"-"` // Activatable Ability, produces an aura + ActivateCD int `json:"-"` // cooldown on activation, -1 means perm effect. + CoolID int32 `json:"-"` // ID used for cooldown } type Gem struct { Name string Stats Stats // flat stats gem adds - Activate ItemActivation // Meta gems activate an aura on player when socketed. + Activate ItemActivation `json:"-"` // Meta gems activate an aura on player when socketed. Color GemColor // Requirements // Validate the gem can be used... later } @@ -479,7 +224,7 @@ func NewEquipmentSet(names ...string) Equipment { for _, v := range names { item, ok := ItemLookup[v] if !ok { - fmt.Printf("Unable to find item: '%s'\n", v) + // fmt.Printf("Unable to find item: '%s'\n", v) continue } if item.Slot == EquipFinger { @@ -534,180 +279,296 @@ func (e Equipment) Stats() Stats { return s } -// "Slot","Name","Location","Boss","Sta","Int","Sp","Haste","Crit","Hit","MP5","Meta Gem","Red Gems","Orange Gems","Purple Gems","Socket Bonus" +var moreItems = []Item{ + // source: https://docs.google.com/spreadsheets/d/1X-XO9N1_MPIq-UIpTN13LrhXRoho9fe26YEEM48QmPk/edit#gid=2035379487 + {Slot: EquipHead, Name: "Gadgetstorm Goggles", SourceZone: "Engineering BoP", SourceDrop: "", Stats: Stats{0, 28, 40, 12, 55, 0, 0}, GemSlots: []GemColor{0x1, 0x3}}, + {Slot: EquipHead, Name: "Gladiator's Mail Helm", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{15, 54, 18, 0, 37, 0, 0}, GemSlots: []GemColor{0x1, 0x2}}, + {Slot: EquipHead, Name: "Spellstrike Hood", SourceZone: "Tailoring BoE", SourceDrop: "", Stats: Stats{12, 16, 24, 16, 46, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x3}}, + {Slot: EquipHead, Name: "Incanter's Cowl", SourceZone: "Mech - Pathaleon the Calculator", SourceDrop: "", Stats: Stats{27, 15, 19, 0, 29, 0, 0}, GemSlots: []GemColor{0x1, 0x4}}, + {Slot: EquipHead, Name: "Lightning Crown", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{0, 0, 43, 0, 66, 0, 0}}, + {Slot: EquipHead, Name: "Hood of Oblivion", SourceZone: "Arc - Harbinger Skyriss", SourceDrop: "", Stats: Stats{32, 27, 0, 0, 40, 0, 0}, GemSlots: []GemColor{0x1, 0x3}}, + {Slot: EquipHead, Name: "Exorcist's Mail Helm", SourceZone: "18 Spirit Shards", SourceDrop: "", Stats: Stats{16, 30, 24, 0, 29, 0, 0}, GemSlots: []GemColor{0x1}}, + {Slot: EquipHead, Name: "Tidefury Helm", SourceZone: "Bot - Warp Splinter", SourceDrop: "", Stats: Stats{26, 32, 0, 0, 32, 0, 6}, GemSlots: []GemColor{0x1, 0x4}}, + {Slot: EquipHead, Name: "Windscale Hood", SourceZone: "Leatherworking BoE", SourceDrop: "", Stats: Stats{18, 16, 37, 0, 44, 0, 10}}, + {Slot: EquipHead, Name: "Shamanistic Helmet of Second Sight", SourceZone: "Teron Gorfiend, I am... - SMV Quest", SourceDrop: "", Stats: Stats{15, 12, 24, 0, 35, 0, 4}, GemSlots: []GemColor{0x4, 0x3, 0x3}}, + {Slot: EquipHead, Name: "Mana-Etched Crown", SourceZone: "BM - Aeonus", SourceDrop: "", Stats: Stats{20, 27, 0, 0, 34, 0, 0}, GemSlots: []GemColor{0x1, 0x2}}, + {Slot: EquipHead, Name: "Mag'hari Ritualist's Horns", SourceZone: "Hero of the Mag'har - Nagrand quest (Horde)", SourceDrop: "", Stats: Stats{16, 18, 15, 12, 50, 0, 0}}, + {Slot: EquipHead, Name: "Mage-Collar of the Firestorm", SourceZone: "H BF - The Maker", SourceDrop: "", Stats: Stats{33, 32, 23, 0, 39, 0, 0}}, + {Slot: EquipHead, Name: "Circlet of the Starcaller", SourceZone: "Dimensius the All-Devouring - NS Quest", SourceDrop: "", Stats: Stats{18, 27, 18, 0, 47, 0, 0}}, + {Slot: EquipHead, Name: "Mask of Inner Fire", SourceZone: "BM - Chrono Lord Deja", SourceDrop: "", Stats: Stats{33, 30, 22, 0, 37, 0, 0}}, + {Slot: EquipHead, Name: "Mooncrest Headdress", SourceZone: "Blast the Infernals! - SMV Quest", SourceDrop: "", Stats: Stats{16, 0, 21, 0, 44, 0, 0}}, + {Slot: EquipNeck, Name: "Pendant of Dominance", SourceZone: "15,300 Honor & 10 EotS Marks", SourceDrop: "", Stats: Stats{12, 31, 16, 0, 26, 0, 0}, GemSlots: []GemColor{0x4}}, + {Slot: EquipNeck, Name: "Brooch of Heightened Potential", SourceZone: "SLabs - Blackheart the Inciter", SourceDrop: "", Stats: Stats{12, 15, 14, 9, 22, 0, 0}}, + {Slot: EquipNeck, Name: "Torc of the Sethekk Prophet", SourceZone: "Brother Against Brother - Auchindoun ", SourceDrop: "", Stats: Stats{18, 0, 21, 0, 19, 0, 0}}, + {Slot: EquipNeck, Name: "Natasha's Ember Necklace", SourceZone: "The Hound-Master - BEM Quest", SourceDrop: "", Stats: Stats{15, 0, 10, 0, 29, 0, 0}}, + {Slot: EquipNeck, Name: "Warp Engineer's Prismatic Chain", SourceZone: "Mech - Mechano Lord Capacitus", SourceDrop: "", Stats: Stats{18, 17, 16, 0, 19, 0, 0}}, + {Slot: EquipNeck, Name: "Eye of the Night", SourceZone: "Jewelcrafting BoE", SourceDrop: "", Stats: Stats{0, 0, 26, 16, 0, 0, 0}}, + {Slot: EquipNeck, Name: "Hydra-fang Necklace", SourceZone: "H UB - Ghaz'an", SourceDrop: "", Stats: Stats{16, 17, 0, 16, 19, 0, 0}}, + {Slot: EquipNeck, Name: "Manasurge Pendant", SourceZone: "25 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{22, 24, 0, 0, 28, 0, 0}}, + {Slot: EquipNeck, Name: "Natasha's Arcane Filament", SourceZone: "The Hound-Master - BEM Quest", SourceDrop: "", Stats: Stats{10, 22, 0, 0, 29, 0, 0}}, + {Slot: EquipNeck, Name: "Omor's Unyielding Will", SourceZone: "H Ramps - Omar the Unscarred", SourceDrop: "", Stats: Stats{19, 19, 0, 0, 25, 0, 0}}, + {Slot: EquipNeck, Name: "Charlotte's Ivy", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{19, 18, 0, 0, 23, 0, 0}}, + {Slot: EquipShoulder, Name: "Gladiator's Mail Spaulders", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{17, 33, 20, 0, 22, 0, 6}, GemSlots: []GemColor{0x2, 0x4}}, + {Slot: EquipShoulder, Name: "Pauldrons of Wild Magic", SourceZone: "H SP - Quagmirran", SourceDrop: "", Stats: Stats{28, 21, 23, 0, 33, 0, 0}}, + {Slot: EquipShoulder, Name: "Mana-Etched Spaulders", SourceZone: "H UB - Quagmirran", SourceDrop: "", Stats: Stats{17, 25, 16, 0, 20, 0, 0}, GemSlots: []GemColor{0x2, 0x4}}, + {Slot: EquipShoulder, Name: "Spaulders of the Torn-heart", SourceZone: "The Cipher of Damnation - SMV Quest", SourceDrop: "", Stats: Stats{7, 10, 18, 0, 40, 0, 0}}, + {Slot: EquipShoulder, Name: "Elekk Hide Spaulders", SourceZone: "The Fallen Exarch - Terokkar Forest Quest", SourceDrop: "", Stats: Stats{12, 0, 28, 0, 25, 0, 0}}, + {Slot: EquipShoulder, Name: "Spaulders of Oblivion", SourceZone: "SLabs - Murmur", SourceDrop: "", Stats: Stats{17, 25, 0, 0, 29, 0, 0}, GemSlots: []GemColor{0x4, 0x3}}, + {Slot: EquipShoulder, Name: "Tidefury Shoulderguards", SourceZone: "SH - O'mrogg", SourceDrop: "", Stats: Stats{23, 18, 0, 0, 19, 0, 6}, GemSlots: []GemColor{0x2, 0x3}}, + {Slot: EquipShoulder, Name: "Mantle of Three Terrors", SourceZone: "BM - Chrono Lord Deja", SourceDrop: "", Stats: Stats{25, 29, 0, 12, 29, 0, 0}}, + {Slot: EquipBack, Name: "Shawl of Shifting Probabilities", SourceZone: "25 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{16, 18, 22, 0, 21, 0, 0}}, + {Slot: EquipBack, Name: "Ogre Slayer's Cover", SourceZone: "Cho'war the Pillager - Nagrand Quest", SourceDrop: "", Stats: Stats{18, 0, 16, 0, 20, 0, 0}}, + {Slot: EquipBack, Name: "Baba's Cloak of Arcanistry", SourceZone: "Mech - Pathaleon the Calculator", SourceDrop: "", Stats: Stats{15, 15, 14, 0, 22, 0, 0}}, + {Slot: EquipBack, Name: "Cloak of Woven Energy", SourceZone: "Hitting the Motherlode - Netherstorm Quest", SourceDrop: "", Stats: Stats{13, 6, 6, 0, 29, 0, 0}}, + {Slot: EquipBack, Name: "Sethekk Oracle Cloak", SourceZone: "SH - Talon King Ikiss", SourceDrop: "", Stats: Stats{18, 18, 0, 12, 22, 0, 0}}, + {Slot: EquipBack, Name: "Terokk's Wisdom", SourceZone: "Terokk - Skettis Summoned Boss", SourceDrop: "", Stats: Stats{16, 18, 0, 0, 33, 0, 0}}, + {Slot: EquipBack, Name: "Cloak of the Black Void", SourceZone: "Tailoring BoE", SourceDrop: "", Stats: Stats{11, 0, 0, 0, 35, 0, 0}}, + {Slot: EquipBack, Name: "Cloak of Entropy", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{11, 0, 0, 10, 25, 0, 0}}, + {Slot: EquipBack, Name: "Sergeant's Heavy Cape", SourceZone: "9,435 Honor & 20 AB Marks", SourceDrop: "", Stats: Stats{12, 33, 0, 0, 26, 0, 0}}, + {Slot: EquipChest, Name: "Netherstrike Breastplate", SourceZone: "Leatherworking BoP - Req. Dragonscale LW", SourceDrop: "", Stats: Stats{23, 34, 32, 0, 37, 0, 8}, GemSlots: []GemColor{0x4, 0x3, 0x3}}, + {Slot: EquipChest, Name: "Gladiator's Mail Armor", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{23, 42, 23, 0, 32, 0, 7}, GemSlots: []GemColor{0x2, 0x4, 0x4}}, + {Slot: EquipChest, Name: "Will of Edward the Odd", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{30, 0, 30, 0, 53, 0, 0}}, + {Slot: EquipChest, Name: "Anchorite's Robe", SourceZone: "The Aldor - Honored", SourceDrop: "", Stats: Stats{38, 16, 0, 0, 29, 0, 18}, GemSlots: []GemColor{0x4, 0x4, 0x3}}, + {Slot: EquipChest, Name: "Tidefury Chestpiece", SourceZone: "Arc - Harbinger Skyriss", SourceDrop: "", Stats: Stats{22, 28, 0, 10, 36, 0, 4}, GemSlots: []GemColor{0x4, 0x4, 0x3}}, + {Slot: EquipChest, Name: "Auchenai Anchorite's Robe", SourceZone: "Everything Will Be Alright - AC Quest", SourceDrop: "", Stats: Stats{24, 0, 0, 23, 28, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x4}}, + {Slot: EquipChest, Name: "Mana-Etched Vestments", SourceZone: "OHF - Epoch Hunter", SourceDrop: "", Stats: Stats{25, 25, 17, 0, 29, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x3}}, + {Slot: EquipChest, Name: "Robe of the Crimson Order", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{23, 0, 0, 30, 50, 0, 0}}, + {Slot: EquipChest, Name: "Warp Infused Drape", SourceZone: "Bot - Warp Splinter", SourceDrop: "", Stats: Stats{28, 27, 0, 12, 30, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x3}}, + {Slot: EquipChest, Name: "Robe of Oblivion", SourceZone: "SLabs - Murmur", SourceDrop: "", Stats: Stats{20, 30, 0, 0, 40, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x3}}, + {Slot: EquipChest, Name: "Incanter's Robe", SourceZone: "Bot - Warp Splinter", SourceDrop: "", Stats: Stats{22, 24, 8, 0, 29, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x4}}, + {Slot: EquipChest, Name: "Robe of the Great Dark Beyond", SourceZone: "MT - Tavarok", SourceDrop: "", Stats: Stats{30, 25, 23, 0, 39, 0, 0}}, + {Slot: EquipChest, Name: "Worldfire Chestguard", SourceZone: "Arc - Dalliah the Doomsayer", SourceDrop: "", Stats: Stats{32, 33, 22, 0, 40, 0, 0}}, + {Slot: 0x6, Name: "Netherstrike Bracers", SourceZone: "Leatherworking BoP - Req. Dragonscale LW", SourceDrop: "", Stats: Stats{13, 13, 17, 0, 20, 0, 6}, GemSlots: []GemColor{0x4}}, + {Slot: 0x6, Name: "General's Mail Bracers", SourceZone: "7,548 Honor & 20 WSG Marks", SourceDrop: "", Stats: Stats{12, 22, 14, 0, 20, 0, 0}, GemSlots: []GemColor{0x4}}, + {Slot: 0x6, Name: "World's End Bracers", SourceZone: "H BF - Keli'dan the Breaker", SourceDrop: "", Stats: Stats{19, 18, 17, 0, 22, 0, 0}}, + {Slot: 0x6, Name: "Bracers of Havok", SourceZone: "Tailoring BoE", SourceDrop: "", Stats: Stats{12, 0, 0, 0, 30, 0, 0}, GemSlots: []GemColor{0x4}}, + {Slot: 0x6, Name: "Crimson Bracers of Gloom", SourceZone: "H Ramps - Omor the Unscarred", SourceDrop: "", Stats: Stats{18, 18, 0, 12, 22, 0, 0}}, + {Slot: 0x6, Name: "Bands of Negation", SourceZone: "H MT - Nexus- Prince Shaffar", SourceDrop: "", Stats: Stats{22, 25, 0, 0, 29, 0, 0}}, + {Slot: 0x6, Name: "Arcanium Signet Bands", SourceZone: "H UB - Hungarfen", SourceDrop: "", Stats: Stats{15, 14, 0, 0, 30, 0, 0}}, + {Slot: 0x6, Name: "Wave-Fury Vambraces", SourceZone: "H SV - Warlod Kalithresh", SourceDrop: "", Stats: Stats{18, 19, 0, 0, 22, 0, 5}}, + {Slot: 0x6, Name: "Mana Infused Wristguards", SourceZone: "A Fate Worse Than Death - Netherstorm Quest", SourceDrop: "", Stats: Stats{8, 12, 0, 0, 25, 0, 0}}, + {Slot: 0x7, Name: "Mana-Etched Gloves", SourceZone: "H Ramps - Omor the Unscarred", SourceDrop: "", Stats: Stats{17, 25, 16, 0, 20, 0, 0}, GemSlots: []GemColor{0x2, 0x4}}, + {Slot: 0x7, Name: "Earth Mantle Handwraps", SourceZone: "SV - Mekgineer Steamrigger", SourceDrop: "", Stats: Stats{18, 21, 16, 0, 19, 0, 0}, GemSlots: []GemColor{0x2, 0x4}}, + {Slot: 0x7, Name: "Gloves of Pandemonium", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{15, 0, 22, 10, 25, 0, 0}}, + {Slot: 0x7, Name: "Gladiator's Mail Gauntlets", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{18, 36, 21, 0, 32, 0, 0}}, + {Slot: 0x7, Name: "Thundercaller's Gauntlets", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{16, 16, 18, 0, 35, 0, 0}}, + {Slot: 0x7, Name: "Gloves of the High Magus", SourceZone: "News of Victory - SMV Quest", SourceDrop: "", Stats: Stats{18, 13, 22, 0, 26, 0, 0}}, + {Slot: 0x7, Name: "Tempest's Touch", SourceZone: "Return to Andormu - CoT Quest", SourceDrop: "", Stats: Stats{20, 10, 0, 0, 27, 0, 0}, GemSlots: []GemColor{0x3, 0x3}}, + {Slot: 0x7, Name: "Gloves of the Deadwatcher", SourceZone: "H AC - Shirrak the Dead Watcher", SourceDrop: "", Stats: Stats{24, 24, 0, 18, 29, 0, 0}}, + {Slot: 0x7, Name: "Incanter's Gloves", SourceZone: "SV - Thespia", SourceDrop: "", Stats: Stats{24, 21, 14, 0, 29, 0, 0}}, + {Slot: 0x7, Name: "Starlight Gauntlets", SourceZone: "N UB - Hungarfen", SourceDrop: "", Stats: Stats{21, 10, 0, 0, 25, 0, 0}, GemSlots: []GemColor{0x3, 0x3}}, + {Slot: 0x7, Name: "Gloves of Oblivion", SourceZone: "SH - Kargath", SourceDrop: "", Stats: Stats{21, 33, 0, 20, 26, 0, 0}}, + {Slot: 0x7, Name: "Harmony's Touch", SourceZone: "Building a Perimeter - Netherstorm Quest", SourceDrop: "", Stats: Stats{0, 18, 16, 0, 33, 0, 0}}, + {Slot: 0x8, Name: "Girdle of Ruination", SourceZone: "Tailoring BoE", SourceDrop: "", Stats: Stats{13, 18, 20, 0, 39, 0, 0}, GemSlots: []GemColor{0x2, 0x4}}, + {Slot: 0x8, Name: "Girdle of Living Flame", SourceZone: "H UB - Hungarfen", SourceDrop: "", Stats: Stats{17, 15, 0, 16, 29, 0, 0}, GemSlots: []GemColor{0x4, 0x3}}, + {Slot: 0x8, Name: "Wave-Song Girdle", SourceZone: "H AC - Exarch Maladaar", SourceDrop: "", Stats: Stats{25, 25, 23, 0, 32, 0, 0}}, + {Slot: 0x8, Name: "A'dal's Gift", SourceZone: "How to Break Into the Arcatraz - Quest", SourceDrop: "", Stats: Stats{25, 0, 21, 0, 34, 0, 0}}, + {Slot: 0x8, Name: "Netherstrike Belt", SourceZone: "Leatherworking BoP - Req. Dragonscale LW", SourceDrop: "", Stats: Stats{17, 10, 16, 0, 30, 0, 9}}, + {Slot: 0x8, Name: "General's Mail Girdle", SourceZone: "14,280 Honor & 40 AB Marks", SourceDrop: "", Stats: Stats{23, 34, 24, 0, 28, 0, 0}}, + {Slot: 0x8, Name: "Sash of Arcane Visions", SourceZone: "H AC - Exarch Maladaar", SourceDrop: "", Stats: Stats{23, 18, 22, 0, 28, 0, 0}}, + {Slot: 0x8, Name: "Belt of Depravity", SourceZone: "H Arc - Harbinger Skyriss", SourceDrop: "", Stats: Stats{27, 31, 0, 17, 34, 0, 0}}, + {Slot: 0x8, Name: "Moonrage Girdle", SourceZone: "SV - Hydromancer Thespia", SourceDrop: "", Stats: Stats{22, 0, 20, 0, 25, 0, 0}}, + {Slot: 0x8, Name: "Sash of Serpentra", SourceZone: "SV - Warlord Kalithresh", SourceDrop: "", Stats: Stats{21, 31, 0, 17, 25, 0, 0}}, + {Slot: 0x8, Name: "Blackwhelp Belt", SourceZone: "Whelps of the Wyrmcult - BEM Quest", SourceDrop: "", Stats: Stats{11, 0, 10, 0, 32, 0, 0}}, + {Slot: 0x9, Name: "Spellstrike Pants", SourceZone: "Tailoring BoE", SourceDrop: "", Stats: Stats{8, 12, 26, 22, 46, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x3}}, + {Slot: 0x9, Name: "Stormsong Kilt", SourceZone: "H UB - The Black Stalker", SourceDrop: "", Stats: Stats{30, 25, 26, 0, 35, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x3}}, + {Slot: 0x9, Name: "Tempest Leggings", SourceZone: "The Mag'har - Revered (Horde)", SourceDrop: "", Stats: Stats{11, 0, 18, 0, 44, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x4}}, + {Slot: 0x9, Name: "Kurenai Kilt", SourceZone: "Kurenai - Revered (Ally)", SourceDrop: "", Stats: Stats{11, 0, 18, 0, 44, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x4}}, + {Slot: 0x9, Name: "Breeches of the Occultist", SourceZone: "H BM - Aeonus", SourceDrop: "", Stats: Stats{22, 37, 23, 0, 26, 0, 0}, GemSlots: []GemColor{0x4, 0x4, 0x3}}, + {Slot: 0x9, Name: "Pantaloons of Flaming Wrath", SourceZone: "H SH - Blood Guard Porung", SourceDrop: "", Stats: Stats{28, 0, 42, 0, 33, 0, 0}}, + {Slot: 0x9, Name: "Moonchild Leggings", SourceZone: "H BF - Broggok", SourceDrop: "", Stats: Stats{20, 26, 21, 0, 23, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x4}}, + {Slot: 0x9, Name: "Haramad's Leggings of the Third Coin", SourceZone: "Undercutting the Competition - MT Quest", SourceDrop: "", Stats: Stats{29, 0, 16, 0, 27, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x4}}, + {Slot: 0x9, Name: "Gladiator's Mail Leggins", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{25, 54, 22, 0, 42, 0, 6}}, + {Slot: 0x9, Name: "Kirin Tor Master's Trousers", SourceZone: "H SLabs - Murmur", SourceDrop: "", Stats: Stats{29, 27, 0, 0, 36, 0, 0}, GemSlots: []GemColor{0x2, 0x4, 0x3}}, + {Slot: 0x9, Name: "Khadgar's Kilt of Abjuration", SourceZone: "BM - Temporus", SourceDrop: "", Stats: Stats{22, 20, 0, 0, 36, 0, 0}, GemSlots: []GemColor{0x4, 0x3, 0x3}}, + {Slot: 0x9, Name: "Incanter's Trousers", SourceZone: "SH - Talon King Ikiss", SourceDrop: "", Stats: Stats{30, 25, 18, 0, 42, 0, 0}}, + {Slot: 0x9, Name: "Mana-Etched Pantaloons", SourceZone: "H UB - The Black Stalker", SourceDrop: "", Stats: Stats{32, 34, 21, 0, 33, 0, 0}}, + {Slot: 0x9, Name: "Tidefury Kilt", SourceZone: "SLabs - Murmur", SourceDrop: "", Stats: Stats{31, 39, 19, 0, 35, 0, 0}}, + {Slot: 0x9, Name: "Molten Earth Kilt", SourceZone: "Mech - Pathaleon the Calculator", SourceDrop: "", Stats: Stats{32, 24, 0, 0, 40, 0, 10}}, + {Slot: 0x9, Name: "Trousers of Oblivion", SourceZone: "SH - Talon King Ikiss", SourceDrop: "", Stats: Stats{33, 42, 0, 12, 39, 0, 0}}, + {Slot: 0x9, Name: "Leggings of the Third Coin", SourceZone: "Levixus the Soul Caller - Auchindoun Quest", SourceDrop: "", Stats: Stats{26, 34, 12, 0, 32, 0, 4}}, + {Slot: 0xa, Name: "Sigil-Laced Boots", SourceZone: "Arc - Harbinger Skyriss", SourceDrop: "", Stats: Stats{18, 24, 17, 0, 20, 0, 0}, GemSlots: []GemColor{0x2, 0x4}}, + {Slot: 0xa, Name: "General's Mail Sabatons", SourceZone: "11,424 Honor & 40 EotS Marks", SourceDrop: "", Stats: Stats{23, 34, 24, 0, 28, 0, 0}}, + {Slot: 0xa, Name: "Moonstrider Boots", SourceZone: "SH - Darkweaver Syth", SourceDrop: "", Stats: Stats{22, 21, 20, 0, 25, 0, 6}}, + {Slot: 0xa, Name: "Shattarath Jumpers", SourceZone: "Into the Heart of the Labyrinth - Auch. Quest", SourceDrop: "", Stats: Stats{17, 25, 0, 0, 29, 0, 0}, GemSlots: []GemColor{0x4, 0x3}}, + {Slot: 0xa, Name: "Wave-Crest Striders", SourceZone: "H BF - Keli'dan the Breaker", SourceDrop: "", Stats: Stats{26, 28, 0, 0, 33, 0, 8}}, + {Slot: 0xa, Name: "Extravagant Boots of Malice", SourceZone: "H MT - Tavarok", SourceDrop: "", Stats: Stats{24, 27, 0, 14, 30, 0, 0}}, + {Slot: 0xa, Name: "Magma Plume Boots", SourceZone: "H AC - Shirrak the Dead Watcher", SourceDrop: "", Stats: Stats{26, 24, 0, 14, 29, 0, 0}}, + {Slot: 0xa, Name: "Shimmering Azure Boots", SourceZone: "Securing the Celestial Ridge - NS Quest", SourceDrop: "", Stats: Stats{19, 0, 0, 16, 23, 0, 5}}, + {Slot: 0xa, Name: "Boots of Blashpemy", SourceZone: "H SP - Quagmirran", SourceDrop: "", Stats: Stats{29, 36, 0, 0, 36, 0, 0}}, + {Slot: 0xa, Name: "Boots of Ethereal Manipulation", SourceZone: "H Bot - Warp Splinter", SourceDrop: "", Stats: Stats{27, 27, 0, 0, 33, 0, 0}}, + {Slot: 0xa, Name: "Earthbreaker's Greaves", SourceZone: "Levixus the Soul Caller - Auchindoun Quest", SourceDrop: "", Stats: Stats{20, 27, 8, 0, 25, 0, 3}}, + {Slot: 0xa, Name: "Boots of the Nexus Warden", SourceZone: "The Flesh Lies... - Netherstorm Quest", SourceDrop: "", Stats: Stats{17, 27, 0, 18, 21, 0, 0}}, + {Slot: 0xb, Name: "Sparking Arcanite Ring", SourceZone: "H OHF - Epoch Hunter", SourceDrop: "", Stats: Stats{14, 13, 14, 10, 22, 0, 0}}, + {Slot: 0xb, Name: "Ring of Cryptic Dreams", SourceZone: "25 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{17, 16, 20, 0, 23, 0, 0}}, + {Slot: 0xb, Name: "Seer's Signit", SourceZone: "The Scryers - Exalted", SourceDrop: "", Stats: Stats{0, 24, 12, 0, 34, 0, 0}}, + {Slot: 0xb, Name: "Ring of Conflict Survival", SourceZone: "H MT - Yor (Summoned Boss)", SourceDrop: "", Stats: Stats{0, 28, 20, 0, 23, 0, 0}}, + {Slot: 0xb, Name: "Ryngo's Band of Ingenuity", SourceZone: "Arc - Wrath-Scryer Soccothrates", SourceDrop: "", Stats: Stats{14, 12, 14, 0, 25, 0, 0}}, + {Slot: 0xb, Name: "Band of the Guardian", SourceZone: "Hero of the Brood - CoT Quest", SourceDrop: "", Stats: Stats{11, 0, 17, 0, 23, 0, 0}}, + {Slot: 0xb, Name: "Scintillating Coral Band", SourceZone: "SV - Hydromancer Thespia", SourceDrop: "", Stats: Stats{15, 14, 17, 0, 21, 0, 0}}, + {Slot: 0xb, Name: "Manastorm Band", SourceZone: "Shutting Down Manaforge Ara - Quest", SourceDrop: "", Stats: Stats{15, 0, 10, 0, 29, 0, 0}}, + {Slot: 0xb, Name: "Ashyen's Gift", SourceZone: "Cenarion Expedition - Exalted", SourceDrop: "", Stats: Stats{0, 30, 0, 21, 23, 0, 0}}, + {Slot: 0xb, Name: "Cobalt Band of Tyrigosa", SourceZone: "H MT - Nexus-Prince Shaffar", SourceDrop: "", Stats: Stats{17, 19, 0, 0, 35, 0, 0}}, + {Slot: 0xb, Name: "Seal of the Exorcist", SourceZone: "50 Spirit Shards ", SourceDrop: "", Stats: Stats{0, 24, 0, 12, 28, 0, 0}}, + {Slot: 0xb, Name: "Lola's Eve", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{14, 15, 0, 0, 29, 0, 0}}, + {Slot: 0xb, Name: "Yor's Collapsing Band", SourceZone: "H MT - Yor (Summoned Boss)", SourceDrop: "", Stats: Stats{20, 0, 0, 0, 23, 0, 0}}, + {Slot: 0x13, Name: "Totem of the Void", SourceZone: "Mech - Cache of the Legion", SourceDrop: "", Stats: Stats{0, 0, 0, 0, 0, 0, 0}}, + {Slot: 0x13, Name: "Totem of the Pulsing Earth", SourceZone: "15 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{0, 0, 0, 0, 0, 0, 0}}, + {Slot: 0x13, Name: "Totem of Impact", SourceZone: "15 Mark of Thrallmar/ Honor Hold", SourceDrop: "", Stats: Stats{0, 0, 0, 0, 0, 0, 0}}, + {Slot: 0x13, Name: "Totem of Lightning", SourceZone: "Colossal Menace - HFP Quest", SourceDrop: "", Stats: Stats{0, 0, 0, 0, 0, 0, 0}}, + {Slot: 0x11, Name: "Gladiator's Spellblade / Gavel", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{18, 28, 0, 0, 199, 0, 0}}, + {Slot: 0x11, Name: "Eternium Runed Blade", SourceZone: "Blacksmithing BoE", SourceDrop: "", Stats: Stats{19, 0, 21, 0, 168, 0, 0}}, + {Slot: 0x11, Name: "Gavel of Unearthed Secrets", SourceZone: "Lower City - Exalted", SourceDrop: "", Stats: Stats{16, 24, 15, 0, 159, 0, 0}}, + {Slot: 0x11, Name: "Starlight Dagger", SourceZone: "H SP - Mennu the Betrayer", SourceDrop: "", Stats: Stats{15, 15, 0, 16, 121, 0, 0}}, + {Slot: 0x11, Name: "Runesong Dagger", SourceZone: "SH - Warbringer O'mrogg", SourceDrop: "", Stats: Stats{11, 12, 20, 0, 121, 0, 0}}, + {Slot: 0x11, Name: "Bleeding Hollow Warhammer", SourceZone: "H SP - Quagmirran", SourceDrop: "", Stats: Stats{17, 12, 16, 0, 121, 0, 0}}, + {Slot: 0x11, Name: "Sky Breaker", SourceZone: "H AC - Avatar of the Martyred", SourceDrop: "", Stats: Stats{20, 13, 0, 0, 132, 0, 0}}, + {Slot: 0x12, Name: "Mazthoril Honor Shield", SourceZone: "33 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{17, 16, 21, 0, 23, 0, 0}}, + {Slot: 0x12, Name: "Lamp of Peaceful Raidiance", SourceZone: "Arc - Harbinger Skyriss", SourceDrop: "", Stats: Stats{14, 13, 13, 12, 21, 0, 0}}, + {Slot: 0x12, Name: "Khadgar's Knapsack", SourceZone: "25 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{0, 0, 0, 0, 49, 0, 0}}, + {Slot: 0x12, Name: "Manual of the Nethermancer", SourceZone: "Mech - Nethermancer Sepethrea", SourceDrop: "", Stats: Stats{15, 12, 19, 0, 21, 0, 0}}, + {Slot: 0x12, Name: "Draenei Honor Guard Shield", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{16, 0, 21, 0, 19, 0, 0}}, + {Slot: 0x12, Name: "Star-Heart Lamp", SourceZone: "BM - Temporus", SourceDrop: "", Stats: Stats{18, 17, 0, 12, 22, 0, 0}}, + {Slot: 0x12, Name: "The Saga of Terokk", SourceZone: "Terokk's Legacy - Auchindoun Quest", SourceDrop: "", Stats: Stats{23, 0, 0, 0, 28, 0, 0}}, + {Slot: 0x12, Name: "Silvermoon Crest Shield", SourceZone: "SLabs - Murmur", SourceDrop: "", Stats: Stats{20, 0, 0, 0, 23, 0, 5}}, + {Slot: 0x12, Name: "Spellbreaker's Buckler", SourceZone: "Akama's Promise - SMV Quest", SourceDrop: "", Stats: Stats{10, 22, 0, 0, 29, 0, 0}}, + {Slot: 0x12, Name: "Hortus' Seal of Brilliance", SourceZone: "SH - Warchief Kargath Bladefist", SourceDrop: "", Stats: Stats{20, 18, 0, 0, 23, 0, 0}}, + {Slot: 0x12, Name: "Gladiator's Endgame", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{14, 21, 0, 0, 19, 0, 0}}, + {Slot: 0x11, Name: "Gladiator's War Staff", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{35, 48, 36, 21, 199, 0, 0}}, + {Slot: 0x11, Name: "Terokk's Shadowstaff", SourceZone: "H SH - Talon King Ikiss", SourceDrop: "", Stats: Stats{42, 40, 37, 0, 168, 0, 0}}, + {Slot: 0x11, Name: "Auchenai Staff", SourceZone: "The Aldor - Revered", SourceDrop: "", Stats: Stats{46, 0, 26, 19, 121, 0, 0}}, + {Slot: 0x11, Name: "Warpstaff of Arcanum", SourceZone: "Bot - Warp Splinter", SourceDrop: "", Stats: Stats{38, 37, 26, 16, 121, 0, 0}}, + {Slot: 0x11, Name: "The Bringer of Death", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{31, 32, 42, 0, 121, 0, 0}}, + {Slot: 0x11, Name: "Bloodfire Greatstaff", SourceZone: "BM - Aeonus", SourceDrop: "", Stats: Stats{42, 42, 28, 0, 121, 0, 0}}, + {Slot: 0x11, Name: "Ameer's Impulse Taser", SourceZone: "Nexus-King Salhadaar - Netherstorm Quest", SourceDrop: "", Stats: Stats{27, 27, 27, 17, 103, 0, 0}}, + {Slot: 0x11, Name: "Grand Scepter of the Nexus-Kings", SourceZone: "H MT - Nexus-Prince Shaffar", SourceDrop: "", Stats: Stats{43, 45, 0, 19, 121, 0, 0}}, -// "Color","Gem","Value",,,,,,,,,,,,, -// "Meta","Chaotic Skyfire Diamond (ZA Patch)","47.8",,,,,,,,,,,,, -// "Meta","Mystical Skyfire Diamond","10.1",,,,,,,,,,,,, -// "Red","Runed Living Ruby","9",,,,,,,,,,,,, -// "Orange","Potent Noble Topaz","8.2",,,,,,,,,,,,, -// "Purple","Glowing Nightseye","5",,,,,,,,,,,,, -// "Red (Epic)","Runed Crimson Spinel","12",,,,,,,,,,,,, -// "Orange (Epic)","Potent Pyrestone","10.5",,,,,,,,,,,,, -// "Purple (Epic)","Glowing Shadowsong","6",,,,,,,,,,,,, -// "Meta","Chaotic Skyfire Diamond","47.8",,,,,,,,,,,,, -// "Meta","Mystical Skyfire Diamond","10.1",,,,,,,,,,,,, -// "Red","Runed Living Ruby","9",,,,,,,,,,,,, + // source: https://docs.google.com/spreadsheets/d/1T4DEuq0yroEPb-11okC3qjj7aYfCGu2e6nT9LeT30zg/edit#gid=0 + {Slot: EquipHead, Name: "Uni-Mind Headdress", SourceZone: "Kara", SourceDrop: "Netherspite", Stats: Stats{StatStm: 31, StatInt: 40, StatSpellDmg: 46, StatSpellCrit: 25, StatSpellHit: 19}}, + {Slot: EquipHead, Name: "Wicked Witch's Hat", SourceZone: "Kara", SourceDrop: "Opera", Stats: Stats{StatStm: 37, StatInt: 38, StatSpellDmg: 43, StatHaste: 0, StatSpellCrit: 32, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipHead, Name: "Cyclone Faceguard (Tier 4)", SourceZone: "Kara", SourceDrop: "Prince", Stats: Stats{StatStm: 30, StatInt: 31, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 0, StatMP5: 8}, GemSlots: []GemColor{GemColorMeta, GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipHead, Name: "Cataclysm Headpiece (Tier 5)", SourceZone: "SSC", SourceDrop: "Lady Vashj", Stats: Stats{StatStm: 35, StatInt: 28, StatSpellDmg: 54, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 18, StatMP5: 7}, GemSlots: []GemColor{GemColorMeta, GemColorYellow}, SocketBonus: Stats{StatSpellHit: 5}}, + {Slot: EquipHead, Name: "Cowl of the Grand Engineer", SourceZone: "TK", SourceDrop: "Void Reaver", Stats: Stats{StatStm: 22, StatInt: 27, StatSpellDmg: 53, StatHaste: 0, StatSpellCrit: 35, StatSpellHit: 16, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipHead, Name: "Magnified Moon Specs", SourceZone: "Crafted (Patch 2.1)", SourceDrop: "Engineering (Leather)", Stats: Stats{StatStm: 22, StatInt: 24, StatSpellDmg: 50, StatHaste: 0, StatSpellCrit: 41, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorMeta, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipHead, Name: "Gadgetstorm Goggles", SourceZone: "Crafted (Patch 2.1)", SourceDrop: "Engineering (Mail)", Stats: Stats{StatStm: 28, StatInt: 0, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 40, StatSpellHit: 12, StatMP5: 0}, GemSlots: []GemColor{GemColorMeta, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipHead, Name: "Destruction Holo-gogs", SourceZone: "Crafted (Patch 2.1)", SourceDrop: "Engineering (Cloth)", Stats: Stats{StatStm: 22, StatInt: 24, StatSpellDmg: 64, StatHaste: 0, StatSpellCrit: 29, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorMeta, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipHead, Name: "Skyshatter Headguard (Tier 6)", SourceZone: "Hyjal", SourceDrop: "Archimonde", Stats: Stats{StatStm: 42, StatInt: 37, StatSpellDmg: 62, StatHaste: 0, StatSpellCrit: 36, StatSpellHit: 0, StatMP5: 8}, GemSlots: []GemColor{GemColorMeta, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipHead, Name: "Cowl of the Illidari High Lord", SourceZone: "BT", SourceDrop: "Illidan", Stats: Stats{StatStm: 33, StatInt: 31, StatSpellDmg: 64, StatHaste: 0, StatSpellCrit: 47, StatSpellHit: 21, StatMP5: 0}, GemSlots: []GemColor{GemColorMeta, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipNeck, Name: "Brooch of Unquenchable Fury", SourceZone: "Kara", SourceDrop: "Moroes", Stats: Stats{StatStm: 24, StatInt: 21, StatSpellDmg: 26, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 15, StatMP5: 0}}, + {Slot: EquipNeck, Name: "Manasurge Pendant", SourceZone: "Shattrah", SourceDrop: "Badges", Stats: Stats{StatStm: 24, StatInt: 22, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipNeck, Name: "Pendant of the Lost Ages", SourceZone: "SSC", SourceDrop: "Tidewalker", Stats: Stats{StatStm: 27, StatInt: 17, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipNeck, Name: "Adornment of Stolen Souls", SourceZone: "Kara", SourceDrop: "Prince", Stats: Stats{StatStm: 18, StatInt: 20, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipNeck, Name: "The Sun King's Talisman", SourceZone: "TK", SourceDrop: "Kael Reward", Stats: Stats{StatStm: 22, StatInt: 16, StatSpellDmg: 41, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipNeck, Name: "Translucent Spellthread Necklace", SourceZone: "BT", SourceDrop: "RoS", Stats: Stats{StatStm: 0, StatInt: 0, StatSpellDmg: 46, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 15, StatMP5: 0}}, + {Slot: EquipShoulder, Name: "Mantle of the Mind Flayer", SourceZone: "Kara", SourceDrop: "Aran", Stats: Stats{StatStm: 33, StatInt: 29, StatSpellDmg: 35, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipShoulder, Name: "Mantle of the Elven Kings", SourceZone: "TK", SourceDrop: "Trash", Stats: Stats{StatStm: 27, StatInt: 18, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 18, StatMP5: 0}}, + {Slot: EquipShoulder, Name: "Cyclone Shoulderguards (Tier 4)", SourceZone: "Gruul's Lair", SourceDrop: "Maulgar", Stats: Stats{StatStm: 28, StatInt: 26, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 12, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 4}}, + {Slot: EquipShoulder, Name: "Illidari Shoulderpads", SourceZone: "SSC", SourceDrop: "Tidewalker", Stats: Stats{StatStm: 34, StatInt: 23, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 16, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 4}}, + {Slot: EquipShoulder, Name: "Blood-cursed Shoulderpads", SourceZone: "BT", SourceDrop: "Bloodboil", Stats: Stats{StatStm: 25, StatInt: 19, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 18, StatMP5: 0}}, + {Slot: EquipShoulder, Name: "Cataclysm Shoulderpads (Tier 5)", SourceZone: "TK", SourceDrop: "VoidReaver", Stats: Stats{StatStm: 26, StatInt: 19, StatSpellDmg: 41, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 6}, GemSlots: []GemColor{GemColorBlue, GemColorYellow}, SocketBonus: Stats{StatSpellCrit: 3}}, + {Slot: EquipShoulder, Name: "Mantle of Nimble Thought", SourceZone: "BT", SourceDrop: "Tailoring", Stats: Stats{StatStm: 37, StatInt: 26, StatSpellDmg: 44, StatHaste: 38, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipShoulder, Name: "Skyshatter Mantle (Tier 6)", SourceZone: "BT", SourceDrop: "Mother", Stats: Stats{StatStm: 30, StatInt: 31, StatSpellDmg: 46, StatHaste: 0, StatSpellCrit: 27, StatSpellHit: 11, StatMP5: 4}, GemSlots: []GemColor{GemColorBlue, GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 4}}, + {Slot: EquipShoulder, Name: "Hatefury Mantle", SourceZone: "Hyjal", SourceDrop: "Anetheron", Stats: Stats{StatStm: 15, StatInt: 18, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorBlue, GemColorYellow}, SocketBonus: Stats{StatSpellCrit: 3}}, + {Slot: EquipBack, Name: "Ruby Drape of the Mysticant", SourceZone: "Kara", SourceDrop: "Prince", Stats: Stats{StatStm: 22, StatInt: 21, StatSpellDmg: 30, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 18, StatMP5: 0}}, + {Slot: EquipBack, Name: "Shadow-Cloak of Dalaran", SourceZone: "Kara", SourceDrop: "Moroes", Stats: Stats{StatStm: 19, StatInt: 18, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipBack, Name: "Shawl of Shifting Probabilities", SourceZone: "Shattrah", SourceDrop: "Badges", Stats: Stats{StatStm: 18, StatInt: 16, StatSpellDmg: 21, StatHaste: 0, StatSpellCrit: 22, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipBack, Name: "Royal Cloak of the Sunstriders", SourceZone: "TK", SourceDrop: "Kaelthas", Stats: Stats{StatStm: 27, StatInt: 22, StatSpellDmg: 44, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipBack, Name: "Brute Cloak of the Ogre-Magi", SourceZone: "Gruul'sLair", SourceDrop: "Maulgar", Stats: Stats{StatStm: 18, StatInt: 20, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipBack, Name: "Ancient Spellcloak of the Highborne", SourceZone: "WorldBoss", SourceDrop: "Kazzak", Stats: Stats{StatStm: 0, StatInt: 15, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipBack, Name: "Cloak of the Illidari Council", SourceZone: "BT", SourceDrop: "IllidariCouncil", Stats: Stats{StatStm: 24, StatInt: 16, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipChest, Name: "Cyclone Chestguard (Tier 4)", SourceZone: "GruulsLair", SourceDrop: "Maulgar", Stats: Stats{StatStm: 33, StatInt: 32, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 20, StatSpellHit: 0, StatMP5: 8}, GemSlots: []GemColor{GemColorRed, GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellHit: 4}}, + {Slot: EquipChest, Name: "Netherstrike Breastplate", SourceZone: "Crafted", SourceDrop: "Leatherworking", Stats: Stats{StatStm: 34, StatInt: 23, StatSpellDmg: 37, StatHaste: 0, StatSpellCrit: 32, StatSpellHit: 0, StatMP5: 8}, GemSlots: []GemColor{GemColorBlue, GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipChest, Name: "Robe of Hateful Echoes", SourceZone: "SSC", SourceDrop: "Hydross", Stats: Stats{StatStm: 34, StatInt: 36, StatSpellDmg: 50, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorRed, GemColorYellow, GemColorYellow}, SocketBonus: Stats{StatStm: 6}}, + {Slot: EquipChest, Name: "Robe of the Shadow Council", SourceZone: "BT", SourceDrop: "Teron", Stats: Stats{StatStm: 37, StatInt: 36, StatSpellDmg: 73, StatHaste: 0, StatSpellCrit: 28, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipChest, Name: "Robes of Rhonin", SourceZone: "Hyjal", SourceDrop: "Archimonde", Stats: Stats{StatStm: 55, StatInt: 38, StatSpellDmg: 81, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 27, StatMP5: 0}}, + {Slot: EquipChest, Name: "Cataclysm Chestpiece (Tier 5)", SourceZone: "TK", SourceDrop: "Kaelthas", Stats: Stats{StatStm: 37, StatInt: 28, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 10}, GemSlots: []GemColor{GemColorBlue, GemColorYellow, GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipChest, Name: "Vestments of the Sea-Witch", SourceZone: "SSC", SourceDrop: "LadyVashj", Stats: Stats{StatStm: 28, StatInt: 28, StatSpellDmg: 57, StatHaste: 0, StatSpellCrit: 31, StatSpellHit: 27, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipChest, Name: "Chestguard of Relentless Storms", SourceZone: "Hyjal", SourceDrop: "Trash", Stats: Stats{StatStm: 36, StatInt: 30, StatSpellDmg: 74, StatHaste: 0, StatSpellCrit: 46, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipChest, Name: "Skyshatter Breastplate (Tier 6)", SourceZone: "BT", SourceDrop: "Illidan", Stats: Stats{StatStm: 42, StatInt: 41, StatSpellDmg: 62, StatHaste: 0, StatSpellCrit: 27, StatSpellHit: 17, StatMP5: 7}, GemSlots: []GemColor{GemColorBlue, GemColorYellow, GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipWrist, Name: "Bands of Nefarious Deeds", SourceZone: "Kara", SourceDrop: "Maiden", Stats: Stats{StatStm: 27, StatInt: 22, StatSpellDmg: 32, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWrist, Name: "Elunite Empowered Bracers", SourceZone: "BT", SourceDrop: "RoS", Stats: Stats{StatStm: 27, StatInt: 22, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 19, StatMP5: 6}}, + {Slot: EquipWrist, Name: "Focused Mana Bindings", SourceZone: "BT", SourceDrop: "Akama", Stats: Stats{StatStm: 27, StatInt: 20, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 19, StatMP5: 0}}, + {Slot: EquipWrist, Name: "Netherstrike Bracers", SourceZone: "Crafted", SourceDrop: "Leatherworking", Stats: Stats{StatStm: 13, StatInt: 13, StatSpellDmg: 20, StatHaste: 0, StatSpellCrit: 17, StatSpellHit: 0, StatMP5: 6}, GemSlots: []GemColor{GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 2}}, + {Slot: EquipWrist, Name: "Bands of the Coming Storm", SourceZone: "BT", SourceDrop: "Supremus", Stats: Stats{StatStm: 28, StatInt: 28, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 21, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWrist, Name: "Mindstorm Wristbands", SourceZone: "TK", SourceDrop: "Alar", Stats: Stats{StatStm: 13, StatInt: 13, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWrist, Name: "Cuffs of Devastation", SourceZone: "Hyjal", SourceDrop: "Winterchill", Stats: Stats{StatStm: 22, StatInt: 20, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 14, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow}, SocketBonus: Stats{StatStm: 3}}, + {Slot: EquipHands, Name: "Cyclone Handguards (Tier 4)", SourceZone: "Kara", SourceDrop: "Curator", Stats: Stats{StatStm: 26, StatInt: 29, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 19, StatMP5: 6}}, + {Slot: EquipHands, Name: "Handwraps of Flowing Thought", SourceZone: "Kara", SourceDrop: "Huntsman", Stats: Stats{StatStm: 24, StatInt: 22, StatSpellDmg: 35, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 14, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellHit: 3}}, + {Slot: EquipHands, Name: "Cataclysm Handgrips (Tier 5)", SourceZone: "TK", SourceDrop: "LeotherastheBlind", Stats: Stats{StatStm: 25, StatInt: 27, StatSpellDmg: 41, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 19, StatMP5: 7}}, + {Slot: EquipHands, Name: "Gauntlets of the Sun King", SourceZone: "TK", SourceDrop: "Kaelthas", Stats: Stats{StatStm: 28, StatInt: 29, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 28, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipHands, Name: "Anger-Spark Gloves", SourceZone: "World Boss", SourceDrop: "Doomwalker", Stats: Stats{StatStm: 0, StatInt: 0, StatSpellDmg: 30, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 20, StatMP5: 0}, GemSlots: []GemColor{GemColorRed, GemColorRed}, SocketBonus: Stats{StatSpellCrit: 3}}, + {Slot: EquipHands, Name: "Soul-Eater's Handwraps", SourceZone: "Magtheridon's Lair", SourceDrop: "Magtheridon", Stats: Stats{StatStm: 31, StatInt: 24, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 21, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 4}}, + {Slot: EquipHands, Name: "Skyshatter Guantlets (Tier 6)", SourceZone: "Hyjal", SourceDrop: "Azgalor", Stats: Stats{StatStm: 30, StatInt: 31, StatSpellDmg: 46, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 19, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 2}}, + {Slot: EquipWaist, Name: "Nethershard Girdle", SourceZone: "Kara", SourceDrop: "Moroes", Stats: Stats{StatStm: 22, StatInt: 30, StatSpellDmg: 35, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWaist, Name: "General's Mail Girdle", SourceZone: "PvP", SourceDrop: "PvP", Stats: Stats{StatStm: 34, StatInt: 23, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWaist, Name: "Malefic Girdle", SourceZone: "Kara", SourceDrop: "Illhoof", Stats: Stats{StatStm: 27, StatInt: 26, StatSpellDmg: 37, StatHaste: 0, StatSpellCrit: 21, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWaist, Name: "Monsoon Belt", SourceZone: "SSC/TK", SourceDrop: "Leatherworking", Stats: Stats{StatStm: 23, StatInt: 24, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 21, StatMP5: 0}, GemSlots: []GemColor{GemColorBlue, GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 4}}, + {Slot: EquipWaist, Name: "Netherstrike Belt", SourceZone: "Crafted", SourceDrop: "Leatherworking", Stats: Stats{StatStm: 10, StatInt: 17, StatSpellDmg: 30, StatHaste: 0, StatSpellCrit: 16, StatSpellHit: 0, StatMP5: 9}, GemSlots: []GemColor{GemColorBlue, GemColorYellow}, SocketBonus: Stats{StatSpellCrit: 3}}, + {Slot: EquipWaist, Name: "Belt of Divine Inspiration", SourceZone: "Gruul's Lair", SourceDrop: "Maulgar", Stats: Stats{StatStm: 27, StatInt: 26, StatSpellDmg: 43, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 4}}, + {Slot: EquipWaist, Name: "Cord of Screaming Terrors", SourceZone: "SSC", SourceDrop: "Lurker", Stats: Stats{StatStm: 34, StatInt: 15, StatSpellDmg: 50, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 24, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorYellow}, SocketBonus: Stats{StatStm: 4}}, + {Slot: EquipWaist, Name: "Girdle of Ruination", SourceZone: "Crafted", SourceDrop: "Tailoring", Stats: Stats{StatStm: 18, StatInt: 13, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 20, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorRed, GemColorYellow}, SocketBonus: Stats{StatStm: 4}}, + {Slot: EquipWaist, Name: "Belt of the Crescent Moon", SourceZone: "Hyjal", SourceDrop: "Kazrogal", Stats: Stats{StatStm: 25, StatInt: 27, StatSpellDmg: 44, StatHaste: 36, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWaist, Name: "Waistwrap of Infinity", SourceZone: "BT", SourceDrop: "Supremus", Stats: Stats{StatStm: 31, StatInt: 22, StatSpellDmg: 56, StatHaste: 32, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWaist, Name: "Belt of Blasting", SourceZone: "SSC/TK", SourceDrop: "Tailoring", Stats: Stats{StatStm: 0, StatInt: 0, StatSpellDmg: 50, StatHaste: 0, StatSpellCrit: 30, StatSpellHit: 23, StatMP5: 0}, GemSlots: []GemColor{GemColorBlue, GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 4}}, + {Slot: EquipWaist, Name: "Anetheron's Noose", SourceZone: "Hyjal", SourceDrop: "Anetheron", Stats: Stats{StatStm: 22, StatInt: 23, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 4}}, + {Slot: EquipWaist, Name: "Flashfire Girdle", SourceZone: "BT", SourceDrop: "Akama", Stats: Stats{StatStm: 27, StatInt: 26, StatSpellDmg: 44, StatHaste: 37, StatSpellCrit: 18, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipLegs, Name: "Cyclone Legguards (Tier 4)", SourceZone: "Gruul's Lair", SourceDrop: "Gruul", Stats: Stats{StatStm: 40, StatInt: 40, StatSpellDmg: 49, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 20, StatMP5: 8}}, + {Slot: EquipLegs, Name: "Trial-Fire Trousers", SourceZone: "Kara", SourceDrop: "Opera", Stats: Stats{StatStm: 42, StatInt: 40, StatSpellDmg: 49, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorYellow, GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipLegs, Name: "Trousers of the Astromancer", SourceZone: "TK", SourceDrop: "Solarian", Stats: Stats{StatStm: 33, StatInt: 36, StatSpellDmg: 54, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorBlue, GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipLegs, Name: "Cataclysm Leggings (Tier 5)", SourceZone: "TK", SourceDrop: "Karathress", Stats: Stats{StatStm: 48, StatInt: 46, StatSpellDmg: 54, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 14, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 2}}, + {Slot: EquipLegs, Name: "Leggings of Devastation", SourceZone: "BT", SourceDrop: "Mother", Stats: Stats{StatStm: 40, StatInt: 42, StatSpellDmg: 60, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 26, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipLegs, Name: "Skyshatter Legguards (Tier 6)", SourceZone: "BT", SourceDrop: "IllidariCouncil", Stats: Stats{StatStm: 40, StatInt: 42, StatSpellDmg: 62, StatHaste: 0, StatSpellCrit: 29, StatSpellHit: 20, StatMP5: 11}, GemSlots: []GemColor{GemColorYellow, GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipLegs, Name: "Leggings of the Seventh Circle", SourceZone: "World Boss", SourceDrop: "Kazzak", Stats: Stats{StatStm: 0, StatInt: 22, StatSpellDmg: 50, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 18, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow}, SocketBonus: Stats{StatSpellDmg: 2}}, + {Slot: EquipLegs, Name: "Leggings of Channeled Elements", SourceZone: "Hyjal", SourceDrop: "Kazrogal", Stats: Stats{StatStm: 25, StatInt: 28, StatSpellDmg: 59, StatHaste: 0, StatSpellCrit: 34, StatSpellHit: 18, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 5}}, + {Slot: EquipFeet, Name: "Boots of the Infernal Coven", SourceZone: "Kara", SourceDrop: "Aran", Stats: Stats{StatStm: 27, StatInt: 27, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFeet, Name: "Ruby Slippers", SourceZone: "Kara", SourceDrop: "Opera", Stats: Stats{StatStm: 33, StatInt: 29, StatSpellDmg: 35, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 16, StatMP5: 0}}, + {Slot: EquipFeet, Name: "Windshear Boots", SourceZone: "Gruul's Lair", SourceDrop: "Gruul", Stats: Stats{StatStm: 37, StatInt: 32, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 18, StatMP5: 0}}, + {Slot: EquipFeet, Name: "Blue Suede Shoes", SourceZone: "Hyjal", SourceDrop: "Kazrogal", Stats: Stats{StatStm: 37, StatInt: 32, StatSpellDmg: 56, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 18, StatMP5: 0}}, + {Slot: EquipFeet, Name: "Boots of Blasting", SourceZone: "SSC/TK", SourceDrop: "Tailoring", Stats: Stats{StatStm: 25, StatInt: 25, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 25, StatSpellHit: 18, StatMP5: 0}}, + {Slot: EquipFeet, Name: "Boots of Foretelling", SourceZone: "Kara", SourceDrop: "Maiden", Stats: Stats{StatStm: 27, StatInt: 23, StatSpellDmg: 26, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorRed, GemColorYellow}, SocketBonus: Stats{StatInt: 3}}, + {Slot: EquipFeet, Name: "Hurricane Boots", SourceZone: "SSC/TK", SourceDrop: "Leatherworking", Stats: Stats{StatStm: 25, StatInt: 26, StatSpellDmg: 39, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 0, StatMP5: 6}}, + {Slot: EquipFeet, Name: "Velvet Boots of the Guardian", SourceZone: "SSC", SourceDrop: "Lurker", Stats: Stats{StatStm: 21, StatInt: 21, StatSpellDmg: 49, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFeet, Name: "Boots of Oceanic Fury", SourceZone: "BT", SourceDrop: "Najentus", Stats: Stats{StatStm: 28, StatInt: 36, StatSpellDmg: 55, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFeet, Name: "Naturewarden's Treads", SourceZone: "BT", SourceDrop: "RoS", Stats: Stats{StatStm: 39, StatInt: 18, StatSpellDmg: 44, StatHaste: 0, StatSpellCrit: 26, StatSpellHit: 0, StatMP5: 7}, GemSlots: []GemColor{GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 4}}, + {Slot: EquipFeet, Name: "Slippers of the Seacaller", SourceZone: "BT", SourceDrop: "Najentus", Stats: Stats{StatStm: 25, StatInt: 18, StatSpellDmg: 44, StatHaste: 0, StatSpellCrit: 29, StatSpellHit: 0, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorBlue}, SocketBonus: Stats{StatSpellDmg: 4}}, + {Slot: EquipFinger, Name: "Band of Crimson Fury", SourceZone: "Magtheridon's Lair", SourceDrop: "MagtheridonQuest", Stats: Stats{StatStm: 22, StatInt: 22, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 16, StatMP5: 0}}, + {Slot: EquipFinger, Name: "Spectral Band of Innervation", SourceZone: "Kara", SourceDrop: "Huntsman", Stats: Stats{StatStm: 22, StatInt: 24, StatSpellDmg: 29, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFinger, Name: "Band of Alar", SourceZone: "TK", SourceDrop: "Alar", Stats: Stats{StatStm: 24, StatInt: 23, StatSpellDmg: 37, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFinger, Name: "Ring of Cryptic Dreams", SourceZone: "Shattrah", SourceDrop: "Badges", Stats: Stats{StatStm: 16, StatInt: 17, StatSpellDmg: 23, StatHaste: 0, StatSpellCrit: 20, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFinger, Name: "Violet Signet of the Archmage", SourceZone: "Kara", SourceDrop: "Exalted", Stats: Stats{StatStm: 24, StatInt: 23, StatSpellDmg: 29, StatHaste: 0, StatSpellCrit: 17, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFinger, Name: "Ring of Recurrence", SourceZone: "Kara", SourceDrop: "Chess", Stats: Stats{StatStm: 15, StatInt: 15, StatSpellDmg: 32, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFinger, Name: "Band of the Eternal Sage", SourceZone: "Hyjal", SourceDrop: "Exalted", Stats: Stats{StatStm: 28, StatInt: 25, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 24, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFinger, Name: "Ring of Endless Coils", SourceZone: "SSC", SourceDrop: "LadyVashj", Stats: Stats{StatStm: 31, StatInt: 0, StatSpellDmg: 37, StatHaste: 0, StatSpellCrit: 22, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFinger, Name: "Ring of Unrelenting Storms", SourceZone: "Kara", SourceDrop: "Trash", Stats: Stats{StatStm: 0, StatInt: 15, StatSpellDmg: 43, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipFinger, Name: "Ring of Captured Storms", SourceZone: "BT", SourceDrop: "Najentus", Stats: Stats{StatStm: 0, StatInt: 0, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 29, StatSpellHit: 19, StatMP5: 0}}, + {Slot: EquipFinger, Name: "Ring of Ancient Knowledge", SourceZone: "BT", SourceDrop: "Trash", Stats: Stats{StatStm: 30, StatInt: 20, StatSpellDmg: 39, StatHaste: 31, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWeapon, Name: "Gavel of Unearthed Secrets", SourceZone: "Shattrah", SourceDrop: "LowerCityExalted", Stats: Stats{StatStm: 24, StatInt: 16, StatSpellDmg: 159, StatHaste: 0, StatSpellCrit: 15, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWeapon, Name: "Eternium Runed Blade", SourceZone: "Crafted", SourceDrop: "Blacksmithing", Stats: Stats{StatStm: 0, StatInt: 19, StatSpellDmg: 168, StatHaste: 0, StatSpellCrit: 21, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWeapon, Name: "Gladiator's Gavel / Gladiator's Spellblade", SourceZone: "PvP", SourceDrop: "PvP", Stats: Stats{StatStm: 28, StatInt: 18, StatSpellDmg: 199, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWeapon, Name: "Nathrezim Mindblade", SourceZone: "Kara", SourceDrop: "Prince", Stats: Stats{StatStm: 18, StatInt: 18, StatSpellDmg: 203, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWeapon, Name: "Talon of the Tempest", SourceZone: "World Boss", SourceDrop: "Doomwalker", Stats: Stats{StatStm: 0, StatInt: 10, StatSpellDmg: 194, StatHaste: 0, StatSpellCrit: 19, StatSpellHit: 9, StatMP5: 0}, GemSlots: []GemColor{GemColorYellow, GemColorYellow}, SocketBonus: Stats{StatInt: 3}}, + {Slot: EquipWeapon, Name: "Hammer of Judgement", SourceZone: "Hyjal", SourceDrop: "Trash", Stats: Stats{StatStm: 33, StatInt: 22, StatSpellDmg: 236, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 22, StatMP5: 0}}, + {Slot: EquipWeapon, Name: "The Maelstrom's Fury", SourceZone: "BT", SourceDrop: "Najentus", Stats: Stats{StatStm: 33, StatInt: 21, StatSpellDmg: 236, StatHaste: 0, StatSpellCrit: 22, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWeapon, Name: "Staff of Infinite Mysteries", SourceZone: "Kara", SourceDrop: "Curator", Stats: Stats{StatStm: 61, StatInt: 51, StatSpellDmg: 185, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 23, StatMP5: 0}}, + {Slot: EquipWeapon, Name: "The Nexus Key", SourceZone: "TK", SourceDrop: "Kaelthas", Stats: Stats{StatStm: 76, StatInt: 52, StatSpellDmg: 236, StatHaste: 0, StatSpellCrit: 51, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipWeapon, Name: "Zhar'doom, Greatstaff of the Devourer", SourceZone: "BT", SourceDrop: "Illidan", Stats: Stats{StatStm: 70, StatInt: 47, StatSpellDmg: 259, StatHaste: 55, StatSpellCrit: 36, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipOffhand, Name: "Jewel of Infinite Possibilities", SourceZone: "Kara", SourceDrop: "Netherspite", Stats: Stats{StatStm: 19, StatInt: 18, StatSpellDmg: 23, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 21, StatMP5: 0}}, + {Slot: EquipOffhand, Name: "Dragonheart Flameshield", SourceZone: "Kara", SourceDrop: "Nightbane", Stats: Stats{StatStm: 19, StatInt: 33, StatSpellDmg: 23, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 7}}, + {Slot: EquipOffhand, Name: "Illidari Runeshield", SourceZone: "BT", SourceDrop: "Trash", Stats: Stats{StatStm: 45, StatInt: 39, StatSpellDmg: 34, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipOffhand, Name: "Karaborian Talisman", SourceZone: "Magtheridon's Lair", SourceDrop: "Magtheridon", Stats: Stats{StatStm: 23, StatInt: 23, StatSpellDmg: 35, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipOffhand, Name: "Mazthoril Honor Shield", SourceZone: "Shattrah", SourceDrop: "Badges", Stats: Stats{StatStm: 16, StatInt: 29, StatSpellDmg: 23, StatHaste: 0, StatSpellCrit: 21, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipOffhand, Name: "Talisman of Nightbane", SourceZone: "Kara", SourceDrop: "Nightbane", Stats: Stats{StatStm: 19, StatInt: 19, StatSpellDmg: 28, StatHaste: 0, StatSpellCrit: 17, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipOffhand, Name: "Blind-Seers Icon", SourceZone: "BT", SourceDrop: "Akama", Stats: Stats{StatStm: 25, StatInt: 16, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 24, StatMP5: 0}}, + {Slot: EquipOffhand, Name: "Khadgar's Knapsack", SourceZone: "Shattrah", SourceDrop: "Badges", Stats: Stats{StatStm: 0, StatInt: 0, StatSpellDmg: 49, StatHaste: 0, StatSpellCrit: 0, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipOffhand, Name: "FathomStone", SourceZone: "SSC", SourceDrop: "Lurker", Stats: Stats{StatStm: 16, StatInt: 12, StatSpellDmg: 36, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipOffhand, Name: "Antonidas's Aegis of Rapt Concentration", SourceZone: "Hyjal", SourceDrop: "Archimonde", Stats: Stats{StatStm: 28, StatInt: 32, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 20, StatSpellHit: 0, StatMP5: 0}}, + {Slot: EquipOffhand, Name: "Chronicle of Dark Secrets", SourceZone: "Hyjal", SourceDrop: "Winterchill", Stats: Stats{StatStm: 16, StatInt: 12, StatSpellDmg: 42, StatHaste: 0, StatSpellCrit: 23, StatSpellHit: 17, StatMP5: 0}}, + + {Slot: EquipTrinket, Name: "Quagmirran's Eye", SourceZone: "The Slave Pens", SourceDrop: "Quagmirran", Stats: Stats{StatSpellDmg: 37}, Activate: ActivateQuagsEye, ActivateCD: -1}, // -1 will trigger an activation only once + {Slot: EquipTrinket, Name: "Icon of the Silver Crescent", SourceZone: "Shattrath", SourceDrop: "G'eras - 41 Badges", Stats: Stats{StatSpellDmg: 44}, Activate: ActivateSilverCrescent, ActivateCD: 120 * TicksPerSecond, CoolID: MagicIDISCTrink}, + {Slot: EquipTrinket, Name: "Natural Alignment Crystal", SourceZone: "BWL", SourceDrop: "", Stats: Stats{}, Activate: ActivateNAC, ActivateCD: 300 * TicksPerSecond, CoolID: MagicIDNACTrink}, + {Slot: EquipTrinket, Name: "Neltharion's Tear", SourceZone: "BWL", SourceDrop: "Nefarian", Stats: Stats{StatSpellDmg: 44, StatSpellHit: 16}}, + + {Slot: EquipTotem, Name: "Skycall Totem", SourceZone: "Geras", SourceDrop: "20 Badges", Stats: Stats{}, Activate: ActivateSkycall, ActivateCD: -1}, // -1 will trigger an activation only once -var moreItems = []Item{ - {Slot: 1, Name: "Gadgetstorm Goggles", SourceZone: "Engineering BoP", SourceDrop: "", Stats: Stats{0, 28, 40, 12, 55, 0, 0}}, - {Slot: 1, Name: "Gladiator's Mail Helm", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{15, 54, 18, 0, 37, 0, 0}}, - {Slot: 1, Name: "Spellstrike Hood", SourceZone: "Tailoring BoE", SourceDrop: "", Stats: Stats{12, 16, 24, 16, 46, 0, 0}}, - {Slot: 1, Name: "Incanter's Cowl", SourceZone: "Mech - Pathaleon the Calculator", SourceDrop: "", Stats: Stats{27, 15, 19, 0, 29, 0, 0}}, - {Slot: 1, Name: "Lightning Crown", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{0, 0, 43, 0, 66, 0, 0}}, - {Slot: 1, Name: "Hood of Oblivion", SourceZone: "Arc - Harbinger Skyriss", SourceDrop: "", Stats: Stats{32, 27, 0, 0, 40, 0, 0}}, - {Slot: 1, Name: "Exorcist's Mail Helm", SourceZone: "18 Spirit Shards", SourceDrop: "", Stats: Stats{16, 30, 24, 0, 29, 0, 0}}, - {Slot: 1, Name: "Tidefury Helm", SourceZone: "Bot - Warp Splinter", SourceDrop: "", Stats: Stats{26, 32, 0, 0, 32, 0, 6}}, - {Slot: 1, Name: "Windscale Hood", SourceZone: "Leatherworking BoE", SourceDrop: "", Stats: Stats{18, 16, 37, 0, 44, 0, 10}}, - {Slot: 1, Name: "Shamanistic Helmet of Second Sight", SourceZone: "Teron Gorfiend, I am... - SMV Quest", SourceDrop: "", Stats: Stats{15, 12, 24, 0, 35, 0, 4}}, - {Slot: 1, Name: "Mana-Etched Crown", SourceZone: "BM - Aeonus", SourceDrop: "", Stats: Stats{20, 27, 0, 0, 34, 0, 0}}, - {Slot: 1, Name: "Mag'hari Ritualist's Horns", SourceZone: "Hero of the Mag'har - Nagrand quest (Horde)", SourceDrop: "", Stats: Stats{16, 18, 15, 12, 50, 0, 0}}, - {Slot: 1, Name: "Mage-Collar of the Firestorm", SourceZone: "H BF - The Maker", SourceDrop: "", Stats: Stats{33, 32, 23, 0, 39, 0, 0}}, - {Slot: 1, Name: "Circlet of the Starcaller", SourceZone: "Dimensius the All-Devouring - NS Quest", SourceDrop: "", Stats: Stats{18, 27, 18, 0, 47, 0, 0}}, - {Slot: 1, Name: "Mask of Inner Fire", SourceZone: "BM - Chrono Lord Deja", SourceDrop: "", Stats: Stats{33, 30, 22, 0, 37, 0, 0}}, - {Slot: 1, Name: "Mooncrest Headdress", SourceZone: "Blast the Infernals! - SMV Quest", SourceDrop: "", Stats: Stats{16, 0, 21, 0, 44, 0, 0}}, - {Slot: 2, Name: "Pendant of Dominance", SourceZone: "15,300 Honor & 10 EotS Marks", SourceDrop: "", Stats: Stats{12, 31, 16, 0, 26, 0, 0}}, - {Slot: 2, Name: "Brooch of Heightened Potential", SourceZone: "SLabs - Blackheart the Inciter", SourceDrop: "", Stats: Stats{12, 15, 14, 9, 22, 0, 0}}, - {Slot: 2, Name: "Torc of the Sethekk Prophet", SourceZone: "Brother Against Brother - Auchindoun ", SourceDrop: "", Stats: Stats{18, 0, 21, 0, 19, 0, 0}}, - {Slot: 2, Name: "Natasha's Ember Necklace", SourceZone: "The Hound-Master - BEM Quest", SourceDrop: "", Stats: Stats{15, 0, 10, 0, 29, 0, 0}}, - {Slot: 2, Name: "Warp Engineer's Prismatic Chain", SourceZone: "Mech - Mechano Lord Capacitus", SourceDrop: "", Stats: Stats{18, 17, 16, 0, 19, 0, 0}}, - {Slot: 2, Name: "Eye of the Night", SourceZone: "Jewelcrafting BoE", SourceDrop: "", Stats: Stats{0, 0, 26, 16, 0, 0, 0}}, - {Slot: 2, Name: "Hydra-fang Necklace", SourceZone: "H UB - Ghaz'an", SourceDrop: "", Stats: Stats{16, 17, 0, 16, 19, 0, 0}}, - {Slot: 2, Name: "Manasurge Pendant", SourceZone: "25 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{22, 24, 0, 0, 28, 0, 0}}, - {Slot: 2, Name: "Natasha's Arcane Filament", SourceZone: "The Hound-Master - BEM Quest", SourceDrop: "", Stats: Stats{10, 22, 0, 0, 29, 0, 0}}, - {Slot: 2, Name: "Omor's Unyielding Will", SourceZone: "H Ramps - Omar the Unscarred", SourceDrop: "", Stats: Stats{19, 19, 0, 0, 25, 0, 0}}, - {Slot: 2, Name: "Charlotte's Ivy", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{19, 18, 0, 0, 23, 0, 0}}, - {Slot: 3, Name: "Gladiator's Mail Spaulders", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{17, 33, 20, 0, 22, 0, 6}}, - {Slot: 3, Name: "Pauldrons of Wild Magic", SourceZone: "H SP - Quagmirran", SourceDrop: "", Stats: Stats{28, 21, 23, 0, 33, 0, 0}}, - {Slot: 3, Name: "Mana-Etched Spaulders", SourceZone: "H UB - Quagmirran", SourceDrop: "", Stats: Stats{17, 25, 16, 0, 20, 0, 0}}, - {Slot: 3, Name: "Spaulders of the Torn-heart", SourceZone: "The Cipher of Damnation - SMV Quest", SourceDrop: "", Stats: Stats{7, 10, 18, 0, 40, 0, 0}}, - {Slot: 3, Name: "Elekk Hide Spaulders", SourceZone: "The Fallen Exarch - Terokkar Forest Quest", SourceDrop: "", Stats: Stats{12, 0, 28, 0, 25, 0, 0}}, - {Slot: 3, Name: "Spaulders of Oblivion", SourceZone: "SLabs - Murmur", SourceDrop: "", Stats: Stats{17, 25, 0, 0, 29, 0, 0}}, - {Slot: 3, Name: "Tidefury Shoulderguards", SourceZone: "SH - O'mrogg", SourceDrop: "", Stats: Stats{23, 18, 0, 0, 19, 0, 6}}, - {Slot: 3, Name: "Mantle of Three Terrors", SourceZone: "BM - Chrono Lord Deja", SourceDrop: "", Stats: Stats{25, 29, 0, 12, 29, 0, 0}}, - {Slot: 4, Name: "Shawl of Shifting Probabilities", SourceZone: "25 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{16, 18, 22, 0, 21, 0, 0}}, - {Slot: 4, Name: "Ogre Slayer's Cover", SourceZone: "Cho'war the Pillager - Nagrand Quest", SourceDrop: "", Stats: Stats{18, 0, 16, 0, 20, 0, 0}}, - {Slot: 4, Name: "Baba's Cloak of Arcanistry", SourceZone: "Mech - Pathaleon the Calculator", SourceDrop: "", Stats: Stats{15, 15, 14, 0, 22, 0, 0}}, - {Slot: 4, Name: "Cloak of Woven Energy", SourceZone: "Hitting the Motherlode - Netherstorm Quest", SourceDrop: "", Stats: Stats{13, 6, 6, 0, 29, 0, 0}}, - {Slot: 4, Name: "Sethekk Oracle Cloak", SourceZone: "SH - Talon King Ikiss", SourceDrop: "", Stats: Stats{18, 18, 0, 12, 22, 0, 0}}, - {Slot: 4, Name: "Terokk's Wisdom", SourceZone: "Terokk - Skettis Summoned Boss", SourceDrop: "", Stats: Stats{16, 18, 0, 0, 33, 0, 0}}, - {Slot: 4, Name: "Cloak of the Black Void", SourceZone: "Tailoring BoE", SourceDrop: "", Stats: Stats{11, 0, 0, 0, 35, 0, 0}}, - {Slot: 4, Name: "Cloak of Entropy", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{11, 0, 0, 10, 25, 0, 0}}, - {Slot: 4, Name: "Sergeant's Heavy Cape", SourceZone: "9,435 Honor & 20 AB Marks", SourceDrop: "", Stats: Stats{12, 33, 0, 0, 26, 0, 0}}, - {Slot: 5, Name: "Netherstrike Breastplate", SourceZone: "Leatherworking BoP - Req. Dragonscale LW", SourceDrop: "", Stats: Stats{23, 34, 32, 0, 37, 0, 8}}, - {Slot: 5, Name: "Gladiator's Mail Armor", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{23, 42, 23, 0, 32, 0, 7}}, - {Slot: 5, Name: "Will of Edward the Odd", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{30, 0, 30, 0, 53, 0, 0}}, - {Slot: 5, Name: "Anchorite's Robe", SourceZone: "The Aldor - Honored", SourceDrop: "", Stats: Stats{38, 16, 0, 0, 29, 0, 18}}, - {Slot: 5, Name: "Tidefury Chestpiece", SourceZone: "Arc - Harbinger Skyriss", SourceDrop: "", Stats: Stats{22, 28, 0, 10, 36, 0, 4}}, - {Slot: 5, Name: "Auchenai Anchorite's Robe", SourceZone: "Everything Will Be Alright - AC Quest", SourceDrop: "", Stats: Stats{24, 0, 0, 23, 28, 0, 0}}, - {Slot: 5, Name: "Mana-Etched Vestments", SourceZone: "OHF - Epoch Hunter", SourceDrop: "", Stats: Stats{25, 25, 17, 0, 29, 0, 0}}, - {Slot: 5, Name: "Robe of the Crimson Order", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{23, 0, 0, 30, 50, 0, 0}}, - {Slot: 5, Name: "Warp Infused Drape", SourceZone: "Bot - Warp Splinter", SourceDrop: "", Stats: Stats{28, 27, 0, 12, 30, 0, 0}}, - {Slot: 5, Name: "Robe of Oblivion", SourceZone: "SLabs - Murmur", SourceDrop: "", Stats: Stats{20, 30, 0, 0, 40, 0, 0}}, - {Slot: 5, Name: "Incanter's Robe", SourceZone: "Bot - Warp Splinter", SourceDrop: "", Stats: Stats{22, 24, 8, 0, 29, 0, 0}}, - {Slot: 5, Name: "Robe of the Great Dark Beyond", SourceZone: "MT - Tavarok", SourceDrop: "", Stats: Stats{30, 25, 23, 0, 39, 0, 0}}, - {Slot: 5, Name: "Worldfire Chestguard", SourceZone: "Arc - Dalliah the Doomsayer", SourceDrop: "", Stats: Stats{32, 33, 22, 0, 40, 0, 0}}, - {Slot: 6, Name: "Netherstrike Bracers", SourceZone: "Leatherworking BoP - Req. Dragonscale LW", SourceDrop: "", Stats: Stats{13, 13, 17, 0, 20, 0, 6}}, - {Slot: 6, Name: "General's Mail Bracers", SourceZone: "7,548 Honor & 20 WSG Marks", SourceDrop: "", Stats: Stats{12, 22, 14, 0, 20, 0, 0}}, - {Slot: 6, Name: "World's End Bracers", SourceZone: "H BF - Keli'dan the Breaker", SourceDrop: "", Stats: Stats{19, 18, 17, 0, 22, 0, 0}}, - {Slot: 6, Name: "Bracers of Havok", SourceZone: "Tailoring BoE", SourceDrop: "", Stats: Stats{12, 0, 0, 0, 30, 0, 0}}, - {Slot: 6, Name: "Crimson Bracers of Gloom", SourceZone: "H Ramps - Omor the Unscarred", SourceDrop: "", Stats: Stats{18, 18, 0, 12, 22, 0, 0}}, - {Slot: 6, Name: "Bands of Negation", SourceZone: "H MT - Nexus- Prince Shaffar", SourceDrop: "", Stats: Stats{22, 25, 0, 0, 29, 0, 0}}, - {Slot: 6, Name: "Arcanium Signet Bands", SourceZone: "H UB - Hungarfen", SourceDrop: "", Stats: Stats{15, 14, 0, 0, 30, 0, 0}}, - {Slot: 6, Name: "Wave-Fury Vambraces", SourceZone: "H SV - Warlod Kalithresh", SourceDrop: "", Stats: Stats{18, 19, 0, 0, 22, 0, 5}}, - {Slot: 6, Name: "Mana Infused Wristguards", SourceZone: "A Fate Worse Than Death - Netherstorm Quest", SourceDrop: "", Stats: Stats{8, 12, 0, 0, 25, 0, 0}}, - {Slot: 7, Name: "Mana-Etched Gloves", SourceZone: "H Ramps - Omor the Unscarred", SourceDrop: "", Stats: Stats{17, 25, 16, 0, 20, 0, 0}}, - {Slot: 7, Name: "Earth Mantle Handwraps", SourceZone: "SV - Mekgineer Steamrigger", SourceDrop: "", Stats: Stats{18, 21, 16, 0, 19, 0, 0}}, - {Slot: 7, Name: "Gloves of Pandemonium", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{15, 0, 22, 10, 25, 0, 0}}, - {Slot: 7, Name: "Gladiator's Mail Gauntlets", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{18, 36, 21, 0, 32, 0, 0}}, - {Slot: 7, Name: "Thundercaller's Gauntlets", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{16, 16, 18, 0, 35, 0, 0}}, - {Slot: 7, Name: "Gloves of the High Magus", SourceZone: "News of Victory - SMV Quest", SourceDrop: "", Stats: Stats{18, 13, 22, 0, 26, 0, 0}}, - {Slot: 7, Name: "Tempest's Touch", SourceZone: "Return to Andormu - CoT Quest", SourceDrop: "", Stats: Stats{20, 10, 0, 0, 27, 0, 0}}, - {Slot: 7, Name: "Gloves of the Deadwatcher", SourceZone: "H AC - Shirrak the Dead Watcher", SourceDrop: "", Stats: Stats{24, 24, 0, 18, 29, 0, 0}}, - {Slot: 7, Name: "Incanter's Gloves", SourceZone: "SV - Thespia", SourceDrop: "", Stats: Stats{24, 21, 14, 0, 29, 0, 0}}, - {Slot: 7, Name: "Starlight Gauntlets", SourceZone: "N UB - Hungarfen", SourceDrop: "", Stats: Stats{21, 10, 0, 0, 25, 0, 0}}, - {Slot: 7, Name: "Gloves of Oblivion", SourceZone: "SH - Kargath", SourceDrop: "", Stats: Stats{21, 33, 0, 20, 26, 0, 0}}, - {Slot: 7, Name: "Harmony's Touch", SourceZone: "Building a Perimeter - Netherstorm Quest", SourceDrop: "", Stats: Stats{0, 18, 16, 0, 33, 0, 0}}, - {Slot: 8, Name: "Girdle of Ruination", SourceZone: "Tailoring BoE", SourceDrop: "", Stats: Stats{13, 18, 20, 0, 39, 0, 0}}, - {Slot: 8, Name: "Girdle of Living Flame", SourceZone: "H UB - Hungarfen", SourceDrop: "", Stats: Stats{17, 15, 0, 16, 29, 0, 0}}, - {Slot: 8, Name: "Wave-Song Girdle", SourceZone: "H AC - Exarch Maladaar", SourceDrop: "", Stats: Stats{25, 25, 23, 0, 32, 0, 0}}, - {Slot: 8, Name: "A'dal's Gift", SourceZone: "How to Break Into the Arcatraz - Quest", SourceDrop: "", Stats: Stats{25, 0, 21, 0, 34, 0, 0}}, - {Slot: 8, Name: "Netherstrike Belt", SourceZone: "Leatherworking BoP - Req. Dragonscale LW", SourceDrop: "", Stats: Stats{17, 10, 16, 0, 30, 0, 9}}, - {Slot: 8, Name: "General's Mail Girdle", SourceZone: "14,280 Honor & 40 AB Marks", SourceDrop: "", Stats: Stats{23, 34, 24, 0, 28, 0, 0}}, - {Slot: 8, Name: "Sash of Arcane Visions", SourceZone: "H AC - Exarch Maladaar", SourceDrop: "", Stats: Stats{23, 18, 22, 0, 28, 0, 0}}, - {Slot: 8, Name: "Belt of Depravity", SourceZone: "H Arc - Harbinger Skyriss", SourceDrop: "", Stats: Stats{27, 31, 0, 17, 34, 0, 0}}, - {Slot: 8, Name: "Moonrage Girdle", SourceZone: "SV - Hydromancer Thespia", SourceDrop: "", Stats: Stats{22, 0, 20, 0, 25, 0, 0}}, - {Slot: 8, Name: "Sash of Serpentra", SourceZone: "SV - Warlord Kalithresh", SourceDrop: "", Stats: Stats{21, 31, 0, 17, 25, 0, 0}}, - {Slot: 8, Name: "Blackwhelp Belt", SourceZone: "Whelps of the Wyrmcult - BEM Quest", SourceDrop: "", Stats: Stats{11, 0, 10, 0, 32, 0, 0}}, - {Slot: 9, Name: "Spellstrike Pants", SourceZone: "Tailoring BoE", SourceDrop: "", Stats: Stats{8, 12, 26, 22, 46, 0, 0}}, - {Slot: 9, Name: "Stormsong Kilt", SourceZone: "H UB - The Black Stalker", SourceDrop: "", Stats: Stats{30, 25, 26, 0, 35, 0, 0}}, - {Slot: 9, Name: "Tempest Leggings", SourceZone: "The Mag'har - Revered (Horde)", SourceDrop: "", Stats: Stats{11, 0, 18, 0, 44, 0, 0}}, - {Slot: 9, Name: "Kurenai Kilt", SourceZone: "Kurenai - Revered (Ally)", SourceDrop: "", Stats: Stats{11, 0, 18, 0, 44, 0, 0}}, - {Slot: 9, Name: "Breeches of the Occultist", SourceZone: "H BM - Aeonus", SourceDrop: "", Stats: Stats{22, 37, 23, 0, 26, 0, 0}}, - {Slot: 9, Name: "Pantaloons of Flaming Wrath", SourceZone: "H SH - Blood Guard Porung", SourceDrop: "", Stats: Stats{28, 0, 42, 0, 33, 0, 0}}, - {Slot: 9, Name: "Moonchild Leggings", SourceZone: "H BF - Broggok", SourceDrop: "", Stats: Stats{20, 26, 21, 0, 23, 0, 0}}, - {Slot: 9, Name: "Haramad's Leggings of the Third Coin", SourceZone: "Undercutting the Competition - MT Quest", SourceDrop: "", Stats: Stats{29, 0, 16, 0, 27, 0, 0}}, - {Slot: 9, Name: "Gladiator's Mail Leggins", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{25, 54, 22, 0, 42, 0, 6}}, - {Slot: 9, Name: "Kirin Tor Master's Trousers", SourceZone: "H SLabs - Murmur", SourceDrop: "", Stats: Stats{29, 27, 0, 0, 36, 0, 0}}, - {Slot: 9, Name: "Khadgar's Kilt of Abjuration", SourceZone: "BM - Temporus", SourceDrop: "", Stats: Stats{22, 20, 0, 0, 36, 0, 0}}, - {Slot: 9, Name: "Incanter's Trousers", SourceZone: "SH - Talon King Ikiss", SourceDrop: "", Stats: Stats{30, 25, 18, 0, 42, 0, 0}}, - {Slot: 9, Name: "Mana-Etched Pantaloons", SourceZone: "H UB - The Black Stalker", SourceDrop: "", Stats: Stats{32, 34, 21, 0, 33, 0, 0}}, - {Slot: 9, Name: "Tidefury Kilt", SourceZone: "SLabs - Murmur", SourceDrop: "", Stats: Stats{31, 39, 19, 0, 35, 0, 0}}, - {Slot: 9, Name: "Molten Earth Kilt", SourceZone: "Mech - Pathaleon the Calculator", SourceDrop: "", Stats: Stats{32, 24, 0, 0, 40, 0, 10}}, - {Slot: 9, Name: "Trousers of Oblivion", SourceZone: "SH - Talon King Ikiss", SourceDrop: "", Stats: Stats{33, 42, 0, 12, 39, 0, 0}}, - {Slot: 9, Name: "Leggings of the Third Coin", SourceZone: "Levixus the Soul Caller - Auchindoun Quest", SourceDrop: "", Stats: Stats{26, 34, 12, 0, 32, 0, 4}}, - {Slot: 10, Name: "Sigil-Laced Boots", SourceZone: "Arc - Harbinger Skyriss", SourceDrop: "", Stats: Stats{18, 24, 17, 0, 20, 0, 0}}, - {Slot: 10, Name: "General's Mail Sabatons", SourceZone: "11,424 Honor & 40 EotS Marks", SourceDrop: "", Stats: Stats{23, 34, 24, 0, 28, 0, 0}}, - {Slot: 10, Name: "Moonstrider Boots", SourceZone: "SH - Darkweaver Syth", SourceDrop: "", Stats: Stats{22, 21, 20, 0, 25, 0, 6}}, - {Slot: 10, Name: "Shattarath Jumpers", SourceZone: "Into the Heart of the Labyrinth - Auch. Quest", SourceDrop: "", Stats: Stats{17, 25, 0, 0, 29, 0, 0}}, - {Slot: 10, Name: "Wave-Crest Striders", SourceZone: "H BF - Keli'dan the Breaker", SourceDrop: "", Stats: Stats{26, 28, 0, 0, 33, 0, 8}}, - {Slot: 10, Name: "Extravagant Boots of Malice", SourceZone: "H MT - Tavarok", SourceDrop: "", Stats: Stats{24, 27, 0, 14, 30, 0, 0}}, - {Slot: 10, Name: "Magma Plume Boots", SourceZone: "H AC - Shirrak the Dead Watcher", SourceDrop: "", Stats: Stats{26, 24, 0, 14, 29, 0, 0}}, - {Slot: 10, Name: "Shimmering Azure Boots", SourceZone: "Securing the Celestial Ridge - NS Quest", SourceDrop: "", Stats: Stats{19, 0, 0, 16, 23, 0, 5}}, - {Slot: 10, Name: "Boots of Blashpemy", SourceZone: "H SP - Quagmirran", SourceDrop: "", Stats: Stats{29, 36, 0, 0, 36, 0, 0}}, - {Slot: 10, Name: "Boots of Ethereal Manipulation", SourceZone: "H Bot - Warp Splinter", SourceDrop: "", Stats: Stats{27, 27, 0, 0, 33, 0, 0}}, - {Slot: 10, Name: "Earthbreaker's Greaves", SourceZone: "Levixus the Soul Caller - Auchindoun Quest", SourceDrop: "", Stats: Stats{20, 27, 8, 0, 25, 0, 3}}, - {Slot: 10, Name: "Boots of the Nexus Warden", SourceZone: "The Flesh Lies... - Netherstorm Quest", SourceDrop: "", Stats: Stats{17, 27, 0, 18, 21, 0, 0}}, - {Slot: 11, Name: "Sparking Arcanite Ring", SourceZone: "H OHF - Epoch Hunter", SourceDrop: "", Stats: Stats{14, 13, 14, 10, 22, 0, 0}}, - {Slot: 11, Name: "Ring of Cryptic Dreams", SourceZone: "25 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{17, 16, 20, 0, 23, 0, 0}}, - {Slot: 11, Name: "Seer's Signit", SourceZone: "The Scryers - Exalted", SourceDrop: "", Stats: Stats{0, 24, 12, 0, 34, 0, 0}}, - {Slot: 11, Name: "Ring of Conflict Survival", SourceZone: "H MT - Yor (Summoned Boss)", SourceDrop: "", Stats: Stats{0, 28, 20, 0, 23, 0, 0}}, - {Slot: 11, Name: "Ryngo's Band of Ingenuity", SourceZone: "Arc - Wrath-Scryer Soccothrates", SourceDrop: "", Stats: Stats{14, 12, 14, 0, 25, 0, 0}}, - {Slot: 11, Name: "Band of the Guardian", SourceZone: "Hero of the Brood - CoT Quest", SourceDrop: "", Stats: Stats{11, 0, 17, 0, 23, 0, 0}}, - {Slot: 11, Name: "Scintillating Coral Band", SourceZone: "SV - Hydromancer Thespia", SourceDrop: "", Stats: Stats{15, 14, 17, 0, 21, 0, 0}}, - {Slot: 11, Name: "Manastorm Band", SourceZone: "Shutting Down Manaforge Ara - Quest", SourceDrop: "", Stats: Stats{15, 0, 10, 0, 29, 0, 0}}, - {Slot: 11, Name: "Ashyen's Gift", SourceZone: "Cenarion Expedition - Exalted", SourceDrop: "", Stats: Stats{0, 30, 0, 21, 23, 0, 0}}, - {Slot: 11, Name: "Cobalt Band of Tyrigosa", SourceZone: "H MT - Nexus-Prince Shaffar", SourceDrop: "", Stats: Stats{17, 19, 0, 0, 35, 0, 0}}, - {Slot: 11, Name: "Seal of the Exorcist", SourceZone: "50 Spirit Shards ", SourceDrop: "", Stats: Stats{0, 24, 0, 12, 28, 0, 0}}, - {Slot: 11, Name: "Lola's Eve", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{14, 15, 0, 0, 29, 0, 0}}, - {Slot: 19, Name: "Totem of the Void", SourceZone: "Mech - Cache of the Legion", SourceDrop: "", Stats: Stats{StatSpellDmg: 55}}, // TODO: Make an aura that effects only LB/CL - {Slot: 19, Name: "Totem of the Pulsing Earth", SourceZone: "15 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{0, 0, 0, 0, 0, 0, 0}}, - {Slot: 19, Name: "Totem of Impact", SourceZone: "15 Mark of Thrallmar/ Honor Hold", SourceDrop: "", Stats: Stats{0, 0, 0, 0, 0, 0, 0}}, - {Slot: 19, Name: "Totem of Lightning", SourceZone: "Colossal Menace - HFP Quest", SourceDrop: "", Stats: Stats{0, 0, 0, 0, 0, 0, 0}}, - {Slot: 17, Name: "Gladiator's Spellblade / Gavel", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{18, 28, 0, 0, 199, 0, 0}}, - {Slot: 17, Name: "Eternium Runed Blade", SourceZone: "Blacksmithing BoE", SourceDrop: "", Stats: Stats{19, 0, 21, 0, 168, 0, 0}}, - {Slot: 17, Name: "Gavel of Unearthed Secrets", SourceZone: "Lower City - Exalted", SourceDrop: "", Stats: Stats{16, 24, 15, 0, 159, 0, 0}}, - {Slot: 17, Name: "Starlight Dagger", SourceZone: "H SP - Mennu the Betrayer", SourceDrop: "", Stats: Stats{15, 15, 0, 16, 121, 0, 0}}, - {Slot: 17, Name: "Runesong Dagger", SourceZone: "SH - Warbringer O'mrogg", SourceDrop: "", Stats: Stats{11, 12, 20, 0, 121, 0, 0}}, - {Slot: 17, Name: "Bleeding Hollow Warhammer", SourceZone: "H SP - Quagmirran", SourceDrop: "", Stats: Stats{17, 12, 16, 0, 121, 0, 0}}, - {Slot: 17, Name: "Sky Breaker", SourceZone: "H AC - Avatar of the Martyred", SourceDrop: "", Stats: Stats{20, 13, 0, 0, 132, 0, 0}}, - {Slot: 18, Name: "Mazthoril Honor Shield", SourceZone: "33 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{17, 16, 21, 0, 23, 0, 0}}, - {Slot: 18, Name: "Lamp of Peaceful Raidiance", SourceZone: "Arc - Harbinger Skyriss", SourceDrop: "", Stats: Stats{14, 13, 13, 12, 21, 0, 0}}, - {Slot: 18, Name: "Khadgar's Knapsack", SourceZone: "25 Badge of Justice - G'eras", SourceDrop: "", Stats: Stats{0, 0, 0, 0, 49, 0, 0}}, - {Slot: 18, Name: "Manual of the Nethermancer", SourceZone: "Mech - Nethermancer Sepethrea", SourceDrop: "", Stats: Stats{15, 12, 19, 0, 21, 0, 0}}, - {Slot: 18, Name: "Draenei Honor Guard Shield", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{16, 0, 21, 0, 19, 0, 0}}, - {Slot: 18, Name: "Star-Heart Lamp", SourceZone: "BM - Temporus", SourceDrop: "", Stats: Stats{18, 17, 0, 12, 22, 0, 0}}, - {Slot: 18, Name: "The Saga of Terokk", SourceZone: "Terokk's Legacy - Auchindoun Quest", SourceDrop: "", Stats: Stats{23, 0, 0, 0, 28, 0, 0}}, - {Slot: 18, Name: "Silvermoon Crest Shield", SourceZone: "SLabs - Murmur", SourceDrop: "", Stats: Stats{20, 0, 0, 0, 23, 0, 5}}, - {Slot: 18, Name: "Spellbreaker's Buckler", SourceZone: "Akama's Promise - SMV Quest", SourceDrop: "", Stats: Stats{10, 22, 0, 0, 29, 0, 0}}, - {Slot: 18, Name: "Hortus' Seal of Brilliance", SourceZone: "SH - Warchief Kargath Bladefist", SourceDrop: "", Stats: Stats{20, 18, 0, 0, 23, 0, 0}}, - {Slot: 18, Name: "Gladiator's Endgame", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{14, 21, 0, 0, 19, 0, 0}}, - {Slot: 17, Name: "Gladiator's War Staff", SourceZone: "Arena Season 1 Reward", SourceDrop: "", Stats: Stats{35, 48, 36, 21, 199, 0, 0}}, - {Slot: 17, Name: "Terokk's Shadowstaff", SourceZone: "H SH - Talon King Ikiss", SourceDrop: "", Stats: Stats{42, 40, 37, 0, 168, 0, 0}}, - {Slot: 17, Name: "Auchenai Staff", SourceZone: "The Aldor - Revered", SourceDrop: "", Stats: Stats{46, 0, 26, 19, 121, 0, 0}}, - {Slot: 17, Name: "Warpstaff of Arcanum", SourceZone: "Bot - Warp Splinter", SourceDrop: "", Stats: Stats{38, 37, 26, 16, 121, 0, 0}}, - {Slot: 17, Name: "The Bringer of Death", SourceZone: "BoE World Drop", SourceDrop: "", Stats: Stats{31, 32, 42, 0, 121, 0, 0}}, - {Slot: 17, Name: "Bloodfire Greatstaff", SourceZone: "BM - Aeonus", SourceDrop: "", Stats: Stats{42, 42, 28, 0, 121, 0, 0}}, - {Slot: 17, Name: "Ameer's Impulse Taser", SourceZone: "Nexus-King Salhadaar - Netherstorm Quest", SourceDrop: "", Stats: Stats{27, 27, 27, 17, 103, 0, 0}}, - {Slot: 17, Name: "Grand Scepter of the Nexus-Kings", SourceZone: "H MT - Nexus-Prince Shaffar", SourceDrop: "", Stats: Stats{43, 45, 0, 19, 121, 0, 0}}, } diff --git a/tbc/optimizer.go b/tbc/optimizer.go index 1d40422..0e6c5a8 100644 --- a/tbc/optimizer.go +++ b/tbc/optimizer.go @@ -1,7 +1,6 @@ package tbc import ( - "fmt" "math" ) @@ -15,7 +14,7 @@ var rotations = [][]string{ // Finds the optimal rotation for given parameters. func OptimalRotation(stats Stats, opts Options, equip Equipment, seconds int, numSims int) ([]SimMetrics, []string) { - fmt.Printf("Starting optimize...\n") + // fmt.Printf("Starting optimize...\n") topDmg := 0.0 topRot := []string{} @@ -35,7 +34,7 @@ func OptimalRotation(stats Stats, opts Options, equip Equipment, seconds int, nu oomat := 0 numoom := 0 simdmg := 0.0 - fmt.Printf("Starting opt sim: %v\n", rotation) + // fmt.Printf("Starting opt sim: %v\n", rotation) sopts := opts sopts.SpellOrder = rotation sim := NewSim(stats, equip, sopts) @@ -60,7 +59,7 @@ func OptimalRotation(stats Stats, opts Options, equip Equipment, seconds int, nu } avgOOM := float64(numoom) / float64(numSims) - fmt.Printf("(%d LB: 1 CL) %0.0f DPS OOM: %0.0f percent\n", numLB, simdmg/float64(seconds)/float64(numSims), avgOOM*100) + // fmt.Printf("(%d LB: 1 CL) %0.0f DPS OOM: %0.0f percent\n", numLB, simdmg/float64(seconds)/float64(numSims), avgOOM*100) if numLB == minLB || numLB == maxLB { if simdmg >= topDmg { @@ -101,7 +100,7 @@ func OptimalRotation(stats Stats, opts Options, equip Equipment, seconds int, nu } // Optimal Found - fmt.Printf("Optimal Found: %0.0f DPS (%d LB : 1 CL)\n", simdmg/float64(seconds)/float64(numSims), numLB) + // fmt.Printf("Optimal Found: %0.0f DPS (%d LB : 1 CL)\n", simdmg/float64(seconds)/float64(numSims), numLB) printResult(simmet, seconds) return simmet, rotation } @@ -109,36 +108,36 @@ func OptimalRotation(stats Stats, opts Options, equip Equipment, seconds int, nu } func printResult(metrics []SimMetrics, seconds int) { - numSims := len(metrics) - simDmgs := make([]float64, 0, numSims) - for _, metric := range metrics { - simDmgs = append(simDmgs, metric.TotalDamage) - } + // numSims := len(metrics) + // simDmgs := make([]float64, 0, numSims) + // for _, metric := range metrics { + // simDmgs = append(simDmgs, metric.TotalDamage) + // } - totalDmg := 0.0 - tdSq := totalDmg - max := 0.0 - for _, dmg := range simDmgs { - totalDmg += dmg - tdSq += dmg * dmg + // totalDmg := 0.0 + // tdSq := totalDmg + // max := 0.0 + // for _, dmg := range simDmgs { + // totalDmg += dmg + // tdSq += dmg * dmg - if dmg > max { - max = dmg - } - } + // if dmg > max { + // max = dmg + // } + // } - meanSq := tdSq / float64(numSims) - mean := totalDmg / float64(numSims) - stdev := math.Sqrt(meanSq - mean*mean) + // meanSq := tdSq / float64(numSims) + // mean := totalDmg / float64(numSims) + // stdev := math.Sqrt(meanSq - mean*mean) - fmt.Printf("DPS:\n") - fmt.Printf("\tMean: %0.1f\n", (mean / float64(seconds))) - fmt.Printf("\tMax: %0.1f\n", (max / float64(seconds))) - fmt.Printf("\tStd.Dev: %0.1f\n", stdev/float64(seconds)) - fmt.Printf("Total Casts:\n") + // fmt.Printf("DPS:\n") + // fmt.Printf("\tMean: %0.1f\n", (mean / float64(seconds))) + // fmt.Printf("\tMax: %0.1f\n", (max / float64(seconds))) + // fmt.Printf("\tStd.Dev: %0.1f\n", stdev/float64(seconds)) + // fmt.Printf("Total Casts:\n") // for k, v := range casts { - // fmt.Printf("\t%s: %d\n", tbc.AuraName(k), v/numSims) + // fmt.Printf("\t%s: %d\n", tbc.AuraName(k), v/numSims) // } } @@ -253,7 +252,7 @@ func (ai *EleAI) ChooseSpell(sim *Simulation, didPot bool) int { // // Get mana remaining // avgMana /= numSims // dps /= float64(numSims * (seconds - opts.NumBloodlust*40)) -// fmt.Printf("Rot: %s, Mana Left: %v\n", p1Res.R, avgMana) +// fmt.Printf("Rot: %s, Mana Left: %v\n", p1Res.R, avgMana) // // if avgMana < 1000 { // // // If you dont have 1000 mana to spare on average, there is little value in BL. // // // This is disregarding 'critical' phases of boss fights where you might conserve mana until that spot, and then BL. @@ -288,7 +287,7 @@ func (ai *EleAI) ChooseSpell(sim *Simulation, didPot bool) int { // bldps := bltotal / float64(opts.NumBloodlust*40) // totaltotal := int((nr.oDPS*float64(seconds-opts.NumBloodlust*40))+bltotal) / seconds -// fmt.Printf("BASE(%s): %0.0f, BL(%s): %0.0f, TOTAL: %d\n", nr.OR, nr.oDPS, nr.R, bldps, totaltotal) +// fmt.Printf("BASE(%s): %0.0f, BL(%s): %0.0f, TOTAL: %d\n", nr.OR, nr.oDPS, nr.R, bldps, totaltotal) // } // } diff --git a/tbc/sim.go b/tbc/sim.go index 220e011..086575a 100644 --- a/tbc/sim.go +++ b/tbc/sim.go @@ -24,9 +24,10 @@ type Simulation struct { Equip Equipment // Current Gear activeEquip Equipment // cache of gear that can activate. - Options Options - SpellRotation []int32 - RotationIdx int + bloodlustCasts int + Options Options + SpellRotation []int32 + RotationIdx int // ticks until cast is complete CastingSpell *Cast @@ -60,7 +61,7 @@ type SimMetrics struct { // mostly for stat weight purposes. func NewSim(stats Stats, equip Equipment, options Options) *Simulation { if len(options.SpellOrder) == 0 { - fmt.Printf("[ERROR] No rotation given to sim.\n") + // fmt.Printf("[ERROR] No rotation given to sim.\n") return nil } rotIdx := 0 @@ -120,6 +121,7 @@ func (sim *Simulation) reset() { sim.SpellChooser = ai.ChooseSpell } + sim.bloodlustCasts = 0 sim.currentTick = 0 sim.CurrentMana = sim.Stats[StatMana] sim.CastingSpell = nil diff --git a/tbc/sim2.go b/tbc/sim2.go index 7237833..f82c811 100644 --- a/tbc/sim2.go +++ b/tbc/sim2.go @@ -35,9 +35,9 @@ func (sim *Simulation) Spellcasting(tickID int) int { if sim.CastingSpell == nil { // Activate any specials - if sim.Options.NumBloodlust > 0 && sim.CDs[MagicIDBloodlust] < 1 { + if sim.Options.NumBloodlust > sim.bloodlustCasts && sim.CDs[MagicIDBloodlust] < 1 { sim.addAura(ActivateBloodlust(sim)) - sim.Options.NumBloodlust-- // TODO: will this break anything? + sim.bloodlustCasts++ // TODO: will this break anything? } if sim.Options.Talents.ElementalMastery && sim.CDs[MagicIDEleMastery] < 1 { diff --git a/tbc/spells.go b/tbc/spells.go index f47b3fc..c78e35c 100644 --- a/tbc/spells.go +++ b/tbc/spells.go @@ -3,7 +3,7 @@ package tbc type Cast struct { Spell *Spell // Caster ... // Needed for onstruck effects? - isLO bool // stupid hack + IsLO bool // stupid hack // Pre-hit Mutatable State TicksUntilCast int diff --git a/ui/index.html b/ui/index.html index eceae28..b59905d 100644 --- a/ui/index.html +++ b/ui/index.html @@ -21,157 +21,21 @@

TBC Elemental Shaman Simulator

  • Notes