annotate Equip.lua @ 3:9de4a810fda7

ENCOUNTER_START syntax
author Nenue
date Tue, 15 Dec 2015 10:09:11 -0500
parents 766d8a40a1d6
children
rev   line source
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