Nenue@1
|
1 -- User: Krakyn
|
Nenue@1
|
2 -- Created: 12/4/2015 11:20 PM
|
Nenue@1
|
3 -- Equipment, spec, etc.
|
Nenue@1
|
4 local T = LibStub("AceAddon-3.0"):GetAddon("Turok")
|
Nenue@1
|
5 local mod = T:NewModule("Equip", "AceEvent-3.0")
|
Nenue@1
|
6 --setprinthandler(function (...) T:debug('Equip', nil, ...) end)
|
Nenue@1
|
7
|
Nenue@1
|
8 local t18_slots = {
|
Nenue@1
|
9 [INVSLOT_HEAD] = 124296, -- head
|
Nenue@1
|
10 [INVSLOT_SHOULDER] = 124307, -- shoulders
|
Nenue@1
|
11 [INVSLOT_CHEST] = 124284, -- chest
|
Nenue@1
|
12 [INVSLOT_LEGS] = 124301, -- legs
|
Nenue@1
|
13 [INVSLOT_HAND] = 124292, -- hands
|
Nenue@1
|
14 }
|
Nenue@1
|
15
|
Nenue@1
|
16
|
Nenue@1
|
17 local use_slots = {
|
Nenue@1
|
18 [INVSLOT_FINGER1] = 1,
|
Nenue@1
|
19 [INVSLOT_FINGER2] = 2,
|
Nenue@1
|
20 [INVSLOT_TRINKET1] = 3,
|
Nenue@1
|
21 [INVSLOT_TRINKET2] = 4,
|
Nenue@1
|
22
|
Nenue@1
|
23 }
|
Nenue@1
|
24 function mod:OnEnable()
|
Nenue@1
|
25 self.equipped = {}
|
Nenue@1
|
26 self:RegisterEvent('COMBAT_RATING_UPDATE', 'UpdateCombatRatings')
|
Nenue@1
|
27 self:RegisterEvent('PLAYER_EQUIPMENT_CHANGED', 'UpdateEquipment')
|
Nenue@1
|
28 self:RegisterEvent('PLAYER_SPECIALIZATION_CHANGED', 'UpdateSpec')
|
Nenue@1
|
29 end
|
Nenue@1
|
30
|
Nenue@1
|
31 function mod:UpdateEquipment (_, slot, hasItem)
|
Nenue@1
|
32 -- ratings event will handle the rest
|
Nenue@1
|
33 if not t18_slots[slot] or use_slots[slot] then
|
Nenue@1
|
34 return
|
Nenue@1
|
35 end
|
Nenue@1
|
36 -- debug
|
Nenue@1
|
37 local link = GetInventoryItemID('player', slot)
|
Nenue@1
|
38 print('|cFF00FFFFequipment ', slot, hasItem, link)
|
Nenue@1
|
39 -- /debug
|
Nenue@1
|
40
|
Nenue@1
|
41 if t18_slots[slot] then
|
Nenue@1
|
42 t18_count = 0
|
Nenue@1
|
43 for slot, itemID in pairs(t18_slots) do
|
Nenue@1
|
44 if GetInventoryItemID(slot) == itemID then
|
Nenue@1
|
45 t18_count = t18_count + 1
|
Nenue@1
|
46 end
|
Nenue@1
|
47 end
|
Nenue@1
|
48 if t18 >= 4 then
|
Nenue@1
|
49 T.stats.aimedshot = s.gcd
|
Nenue@1
|
50 else
|
Nenue@1
|
51 T.stats.aimedshot = 2 * T.stats.castingmod
|
Nenue@1
|
52 end
|
Nenue@1
|
53 T.statstext =string.format('%.2f', s.aimedshot)
|
Nenue@1
|
54 end
|
Nenue@1
|
55
|
Nenue@1
|
56 if use_slots[slot] then
|
Nenue@1
|
57 if hasItem then
|
Nenue@1
|
58 local itemID = GetInventoryItemID('player', slot)
|
Nenue@1
|
59 self.equipped[slot] = itemID
|
Nenue@1
|
60 T:GetModule("Spirit").item_watch[itemID] = {GetInventoryItemCooldown('player', slot) }
|
Nenue@1
|
61 else
|
Nenue@1
|
62 if self.equipped[slot] then
|
Nenue@1
|
63 self.equipped[slot] = nil
|
Nenue@1
|
64 end
|
Nenue@1
|
65
|
Nenue@1
|
66 end
|
Nenue@1
|
67 end
|
Nenue@1
|
68
|
Nenue@1
|
69 end
|
Nenue@1
|
70
|
Nenue@1
|
71
|
Nenue@1
|
72 function mod:UpdateCombatRatings()
|
Nenue@1
|
73 local s = T.stats
|
Nenue@1
|
74 s.haste = UnitSpellHaste('player')
|
Nenue@1
|
75 s.focusregen = 4 * (1 + s.haste/100)
|
Nenue@1
|
76 s.castingmod = 1+ s.haste/1000
|
Nenue@1
|
77 s.gcd = 1.5 * s.castingmod
|
Nenue@1
|
78 T.statstext = {
|
Nenue@1
|
79 haste = string.format('%.2f', s.haste),
|
Nenue@1
|
80 focusregen = string.format('%.2f', s.focusregen),
|
Nenue@1
|
81 castingmod = string.format('%.2f', s.castingmod),
|
Nenue@1
|
82 }
|
Nenue@1
|
83 local t = T.statstext
|
Nenue@1
|
84
|
Nenue@1
|
85 print('|cFF00FFFFCOMBAT_RATING_UPDATE:|r', 'haste:', t.haste, 'regen:', t.focusregen)
|
Nenue@1
|
86 end
|
Nenue@1
|
87
|
Nenue@1
|
88 function mod:UpdateSpec (e, unit)
|
Nenue@1
|
89 if unit ~= 'player' then
|
Nenue@1
|
90 return
|
Nenue@1
|
91 end
|
Nenue@1
|
92
|
Nenue@1
|
93 T.stats.focusmax = UnitPowerMax('player')
|
Nenue@1
|
94 end |