comparison bossmods.lua @ 56:fcc0d0ff5832

- instance_tag() also returns max instance size as a plain number, adjust call sites - clean up .raiders table, add some new fields, use copies of this instead of a single string - make sure datarev field is properly updated when it's already present - avoid multiple GetRaidRosterInfo loops scattered throughout the addon, instead just traverse the .raiders list, regularly updated - make the 'loot' and 'boss' broadcasts versioned. Handle receiving older. - new format for plaintext attendance output
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Fri, 13 Apr 2012 04:28:46 +0000
parents 4f1e71f62776
children c01875b275ca
comparison
equal deleted inserted replaced
55:ac57a4342812 56:fcc0d0ff5832
33 -- Lua 33 -- Lua
34 local pairs, ipairs, tinsert, tremove = pairs, ipairs, table.insert, table.remove 34 local pairs, ipairs, tinsert, tremove = pairs, ipairs, table.insert, table.remove
35 local tonumber = tonumber 35 local tonumber = tonumber
36 36
37 -- WoW 37 -- WoW
38 local GetRaidRosterInfo = GetRaidRosterInfo 38 --local GetRaidRosterInfo = GetRaidRosterInfo
39 39
40 -- OL 40 -- OL
41 local addon_do_boss 41 local addon_do_boss
42 42
43 43
44 ------ Deadly Boss Mods 44 ------ Deadly Boss Mods
45 do 45 do
46 local DBM 46 local DBM
47 local location 47 local location, maxsize
48 local real_loadmod 48 local real_loadmod
49 -- When zoning into a raid instance not seen this session, make sure 49 -- When zoning into a raid instance not seen this session, make sure
50 -- we don't report a previous raid instance as current location. DBM 50 -- we don't report a previous raid instance as current location. DBM
51 -- has no callback event for this, so we do a small hook instead. 51 -- has no callback event for this, so we do a small hook instead.
52 local function resetting_loadmod (...) 52 local function resetting_loadmod (...)
64 name = mod.id 64 name = mod.id
65 else 65 else
66 name = "Unknown Boss" 66 name = "Unknown Boss"
67 end 67 end
68 68
69 local it = location or self.instance_tag() 69 local it
70 if location then
71 it = location
72 else
73 it, maxsize = self.instance_tag()
74 end
70 self.latest_instance = it 75 self.latest_instance = it
71 location = nil 76 location = nil
72 77
73 local duration = 0 78 local duration = 0
74 if mod.combatInfo and mod.combatInfo.pull then 79 if mod.combatInfo and mod.combatInfo.pull then
75 duration = math.floor (GetTime() - mod.combatInfo.pull) 80 duration = math.floor (GetTime() - mod.combatInfo.pull)
76 end 81 end
77 82
78 -- attendance: maybe put people in groups 6,7,8 into a "backup/standby" 83 return addon_do_boss (self, reason, name, it, maxsize, duration)
79 -- list? probably too specific to guild practices.
80 local raiders = {}
81 for i = 1, GetNumRaidMembers() do
82 local name = GetRaidRosterInfo(i)
83 if name then
84 tinsert (raiders, name)
85 end
86 end
87 table.sort(raiders)
88
89 return addon_do_boss (self, reason, name, it, duration, raiders)
90 end 84 end
91 85
92 local function callback(...) DBMBossCallback(addon,...) end 86 local function callback(...) DBMBossCallback(addon,...) end
93 87
94 local function _registerDBM (self, OL_boss_worker) 88 local function _registerDBM (self, OL_boss_worker)
100 return 94 return
101 end 95 end
102 addon_do_boss = OL_boss_worker 96 addon_do_boss = OL_boss_worker
103 local r = DBM:RegisterCallback("kill", callback) 97 local r = DBM:RegisterCallback("kill", callback)
104 DBM:RegisterCallback("wipe", callback) 98 DBM:RegisterCallback("wipe", callback)
105 DBM:RegisterCallback("pull", function() location = self.instance_tag() end) 99 DBM:RegisterCallback("pull", function()
100 location, maxsize = self.instance_tag()
101 end)
106 real_loadmod = DBM.LoadMod 102 real_loadmod = DBM.LoadMod
107 DBM.LoadMod = resetting_loadmod 103 DBM.LoadMod = resetting_loadmod
108 return r > 0 104 return r > 0
109 else 105 else
110 self.status_text = "|cffff1010Ouro Loot cannot find Deadly Boss Mods, loot will not be grouped by boss.|r" 106 self.status_text = "|cffff1010Ouro Loot cannot find Deadly Boss Mods, loot will not be grouped by boss.|r"