From f4fa0214fc95f129367945d3e52515f057a2937c Mon Sep 17 00:00:00 2001 From: F16Gaming Date: Mon, 12 Dec 2011 19:56:26 +0100 Subject: [PATCH] Mob counting fixed, added a toggle for count mode. FIXED: Mob kills done by raid members should now count, just like party kills. ADDED: Now has two modes: "Count all group kills" and "Count only your own kills". This can be toggled with /kt countmode. --- Command.lua | 5 +++++ KillTrack.lua | 30 +++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Command.lua b/Command.lua index b800cb6..52fd8da 100644 --- a/Command.lua +++ b/Command.lua @@ -75,6 +75,7 @@ C:Register("__DEFAULT__", function(args) KT:Msg("/kt reset - Clear the mob database.") KT:Msg("/kt time - Track kills within specified time.") KT:Msg("/kt threshold - Set threshold for kill record notices to show.") + KT:Msg("/kt countmode - Toggle between counting group killing blows or your killing blows only.") KT:Msg("/kt - Displays this help message.") end) @@ -179,6 +180,10 @@ C:Register({"threshold"}, function(args) end end) +C:Register({"countmode", "cm", "count", "counttype", "changecount", "switchcount"}, function(args) + KT:ToggleCountMode() +end) + for i,v in ipairs(C.Slash) do _G["SLASH_" .. KT.Name:upper() .. i] = "/" .. v end diff --git a/KillTrack.lua b/KillTrack.lua index fd91a23..333937e 100644 --- a/KillTrack.lua +++ b/KillTrack.lua @@ -63,6 +63,9 @@ function KT.Events.ADDON_LOADED(self, ...) if type(self.Global.ACHIEV_THRESHOLD) ~= "number" then self.Global.ACHIEV_THRESHOLD = 1000 end + if type(self.Global.COUNT_GROUP) ~= "boolean" then + self.Global.COUNT_GROUP = false + end if type(self.Global.MOBS) ~= "table" then self.Global.MOBS = {} end @@ -78,7 +81,16 @@ end function KT.Events.COMBAT_LOG_EVENT_UNFILTERED(self, ...) local event = (select(2, ...)) - if event ~= "PARTY_KILL" then return end + if event ~= "UNIT_DIED" then return end + -- Perform solo/group checks + local source = tostring((select(5, ...))) + local pass + if self.Global.COUNT_GROUP then + pass = self:IsInGroup(source) + else + pass = UnitName("player") == source + end + if not pass then return end local id = KTT:GUIDToID((select(8, ...))) local name = tostring((select(9, ...))) if id == 0 then return end @@ -97,6 +109,13 @@ function KT.Events.UPDATE_MOUSEOVER_UNIT(self, ...) GameTooltip:Show() end +function KT:IsInGroup(unit) + if unit == UnitName("player") then return true end + if UnitInParty(unit) then return true end + if UnitInRaid(unit) then return true end + return false +end + function KT:SetThreshold(threshold) if type(threshold) ~= "number" then error("KillTrack.SetThreshold: Argument #1 (threshold) must be of type 'number'") @@ -106,6 +125,15 @@ function KT:SetThreshold(threshold) KT:Msg(("New kill notice (achievement) threshold set to %d."):format(threshold)) end +function KT:ToggleCountMode() + self.Global.COUNT_GROUP = not self.Global.COUNT_GROUP + if self.Global.COUNT_GROUP then + KT:Msg("Now counting kills for every player in the group (party/raid)!") + else + KT:Msg("Now counting your own killing blows ONLY.") + end +end + function KT:AddKill(id, name) name = name or "" if type(self.Global.MOBS[id]) ~= "table" then -- 1.7.9.5