annotate bossmods.lua @ 38:bb41be8f13b2

Remove some older commented code. Cosmetic comment changes. Clear stray empty 'count' strings out of rebroadcast loot histories, if restoring previous version's data (and not in combat).
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Fri, 23 Dec 2011 01:08:02 +0000
parents d929c40cdb09
children 4f1e71f62776
rev   line source
farmbuyer@2 1 local addon = select(2,...)
farmbuyer@2 2
farmbuyer@2 3 --[[
farmbuyer@2 4 Here's the control flow:
farmbuyer@2 5 (1) This file or another addon calls :register_boss_mod("Foo",register[,unregister])
farmbuyer@2 6 (2) When OL decides it's time to register with a boss mod, it calls
farmbuyer@2 7 register (addon, addon_do_boss)
farmbuyer@2 8 which should do whatever's needed. This may happen more than once, if OL
farmbuyer@2 9 is turned on/off, etc.
farmbuyer@2 10 (2b) If a boss mod is already in place,
farmbuyer@2 11 unregister (addon)
farmbuyer@2 12 will be called first, if such a function was given at the start.
farmbuyer@2 13 (3) When the boss mod triggers a callback, this code should call
farmbuyer@2 14 addon_do_boss (.....)
farmbuyer@2 15 with the crapton of data passed as in the DBM-related code below.
farmbuyer@2 16
farmbuyer@2 17 NOTA BENE:
farmbuyer@2 18 - 'register' will not be called multiple times in a row for the same boss mod.
farmbuyer@2 19 - The callback for (3) must check if OL is appropriately active.
farmbuyer@2 20
farmbuyer@2 21 ------ Constants
farmbuyer@6 22 ------ Globals
farmbuyer@2 23 ------ Deadly Boss Mods
farmbuyer@2 24 ]]
farmbuyer@2 25
farmbuyer@2 26 ------ Constants
farmbuyer@2 27
farmbuyer@6 28 ------ Globals
farmbuyer@2 29 local flib = LibStub("LibFarmbuyer")
farmbuyer@2 30 local pprint, tabledump = addon.pprint, flib.tabledump
farmbuyer@2 31
farmbuyer@2 32 -- Lua
farmbuyer@6 33 local pairs, ipairs, tinsert, tremove = pairs, ipairs, table.insert, table.remove
farmbuyer@6 34 local tonumber = tonumber
farmbuyer@2 35
farmbuyer@2 36 -- WoW
farmbuyer@2 37 local GetRaidRosterInfo = GetRaidRosterInfo
farmbuyer@2 38
farmbuyer@2 39 -- OL
farmbuyer@2 40 local addon_do_boss
farmbuyer@2 41
farmbuyer@2 42
farmbuyer@2 43 ------ Deadly Boss Mods
farmbuyer@2 44 do
farmbuyer@2 45 local location
farmbuyer@2 46 local function DBMBossCallback (self, reason, mod, ...)
farmbuyer@2 47 if (not self.rebroadcast) and (not self.enabled) then return end
farmbuyer@2 48
farmbuyer@2 49 local name
farmbuyer@2 50 if mod.combatInfo and mod.combatInfo.name then
farmbuyer@2 51 name = mod.combatInfo.name
farmbuyer@2 52 elseif mod.id then
farmbuyer@2 53 name = mod.id
farmbuyer@2 54 else
farmbuyer@2 55 name = "Unknown Boss"
farmbuyer@2 56 end
farmbuyer@2 57
farmbuyer@2 58 local it = location or self.instance_tag()
farmbuyer@2 59 location = nil
farmbuyer@2 60
farmbuyer@2 61 local duration = 0
farmbuyer@2 62 if mod.combatInfo and mod.combatInfo.pull then
farmbuyer@2 63 duration = math.floor (GetTime() - mod.combatInfo.pull)
farmbuyer@2 64 end
farmbuyer@2 65
farmbuyer@2 66 -- attendance: maybe put people in groups 6,7,8 into a "backup/standby"
farmbuyer@2 67 -- list? probably too specific to guild practices.
farmbuyer@2 68 local raiders = {}
farmbuyer@2 69 for i = 1, GetNumRaidMembers() do
farmbuyer@17 70 local name = GetRaidRosterInfo(i)
farmbuyer@17 71 if name then
farmbuyer@17 72 tinsert (raiders, name)
farmbuyer@17 73 end
farmbuyer@2 74 end
farmbuyer@2 75 table.sort(raiders)
farmbuyer@2 76
farmbuyer@2 77 return addon_do_boss (self, reason, name, it, duration, raiders)
farmbuyer@2 78 end
farmbuyer@2 79
farmbuyer@2 80 local function callback(...) DBMBossCallback(addon,...) end
farmbuyer@2 81
farmbuyer@2 82 local function _registerDBM (self, OL_boss_worker)
farmbuyer@2 83 if _G.DBM then
farmbuyer@2 84 local rev = tonumber(DBM.Revision) or 0
farmbuyer@2 85 if rev < 1503 then
farmbuyer@2 86 self.status_text = "|cffff1010Deadly Boss Mods must be version 1.26 or newer to work with Ouro Loot.|r"
farmbuyer@2 87 return
farmbuyer@2 88 end
farmbuyer@2 89 addon_do_boss = OL_boss_worker
farmbuyer@2 90 local r = _G.DBM:RegisterCallback("kill", callback)
farmbuyer@2 91 _G.DBM:RegisterCallback("wipe", callback)
farmbuyer@2 92 _G.DBM:RegisterCallback("pull", function() location = self.instance_tag() end)
farmbuyer@2 93 return r > 0
farmbuyer@2 94 else
farmbuyer@2 95 self.status_text = "|cffff1010Ouro Loot cannot find Deadly Boss Mods, loot will not be grouped by boss.|r"
farmbuyer@2 96 end
farmbuyer@2 97 end
farmbuyer@2 98
farmbuyer@2 99 addon:register_boss_mod ("DBM", _registerDBM)
farmbuyer@2 100 end -- DBM tie-ins
farmbuyer@2 101
farmbuyer@2 102
farmbuyer@2 103 -- DXE, BigWigs, etc, need to be researched for this too
farmbuyer@2 104
farmbuyer@2 105 -- vim:noet