Detect enemy units in combat log entries

This function will return the enemy (if any) from a combat log event.

Snippet

local hostile = {
  ["_DAMAGE"] = true, 
  ["_LEECH"] = true,
  ["_DRAIN"] = true,
  ["_STOLEN"] = true,
  ["_INSTAKILL"] = true,
  ["_INTERRUPT"] = true,
  ["_MISSED"] = true
}
local function GetEnemy(time, event, sguid, sname, sflags, dguid, dname, dflags)
  local suffix = event:match(".+(_.-)$")
  if hostile[suffix] then
    if bit.band(sflags, COMBATLOG_OBJECT_AFFILIATION_MASK) < 8 then
      return dguid, dname, dflags
    elseif bit.band(dflags, COMBATLOG_OBJECT_AFFILIATION_MASK) < 8 then
      return sguid, sname, sflags
    end
  end
end
Posted by jnwhiteh at Sun, 17 May 2009 12:06:12 +0000