- 1 Base Parameters
- 2 Events
- 3 Parameter Values
- 4 Examples
- 5 WoWCombatLog.txt
- 6 Event Descriptions
- 7 References
Fires for combat events such as a player casting a spell or an NPC taking damage. The event payload is returned from CombatLogGetCurrentEventInfo().
COMBAT_LOG_EVENT and COMBAT_LOG_EVENT_UNFILTERED (CLEU) have identical parameters, the difference is that COMBAT_LOG_EVENT only reflects the user's actual combat log. This makes CLEU preferred for use by addons.
|1st Param||2nd Param||3rd Param||4th Param||5th Param||6th Param||7th Param||8th Param||9th Param||10th Param||11th Param|
- number - Unix Time in seconds with milliseconds precision, for example
1555749627.861. Similar to time() and can be passed as the second argument of date().
- boolean - Returns true if the source unit should be hidden in the Blizzard combat log.
- string - Globally unique identifier for units (NPCs, players, pets, etc), for example
- number - Contains the flag bits for a unit's type, controller, reaction and affiliation. For example
68168= 0x10A48: Unit is the current target, is an NPC, the controller is an NPC, reaction is hostile and affiliation is outsider.
- number - Contains the raid flag bits for a unit's raid target icon.
- Patch 8.0.1 (2018-07-17): COMBAT_LOG_EVENT and CLEU no longer have any payload, which is now returned by CombatLogGetCurrentEventInfo(). The payload itself is unchanged. 
- Patch 4.2.0 (2011-06-28): Added two new parameters, sourceRaidFlags and destRaidFlags, after sourceFlags and destFlags respectively.
- Patch 4.1.0 (2011-04-26): Added hideCaster, after the event param.
- Patch 2.4.0 (2008-03-25): Reworked to support filters and the terse format. 
How to specify full event strings: read prefix to suffix in order and use the parameter table as specified. Unused entries are nil. A blank cell means that there are no additional arguments for this prefix or suffix.
The Parameters listed with prefixes are numbered in the order they come after the 11 base parameters.
|Prefix||1st Parameter (12th)||2nd Parameter (13th)||3rd Parameter (14th)|
- Patch 1.13.2 (2019-08-26): (Classic) spellId and extraSpellId are always returned as 0, since they were only added to the combat log in patch 2.4
The Parameters listed with suffixes are numbered in the order they come after the prefix parameters.
- Note that params for SWING_DAMAGE start at the 12th parameter; and for ENVIRONMENTAL_DAMAGE at the 13th parameter.
- The parameters for critical, glancing, crushing, and isOffHand are true/false flags.
|Event||Prefix to use||Suffix to use|
|Event||1st Param (12th)||2nd Param (13th)||3rd Param (14th)|
- ENCHANT_APPLIED is triggered when a weapon's enchant changes, but before the API information is updated to reflect the change. It is possible for main-hand and off-hand wielded weapons to have the same itemID. When an enchant is reapplied the original is removed first, triggering an ENCHANT_REMOVED event before an ENCHANT_APPLIED event is triggered. A much better way of tracking temporary weapon enchants is to use the UNIT_INVENTORY_CHANGED event.
|Physical||#FFFF00 - 255, 255, 0|
|Holy||#FFE680 - 255, 230, 128|
|Fire||#FF8000 - 255, 128, 0|
|Nature||#4DFF4D - 77, 255, 77|
|Frost||#80FFFF - 128, 255, 255|
|Shadow||#8080FF - 128, 128, 255|
|Arcane||#FF80FF - 255, 128, 255|
|Holystrike||Holy + Physical|
|Flamestrike||Fire + Physical|
|Holyfire (Radiant)||Fire + Holy|
|Stormstrike||Nature + Physical|
|Holystorm||Nature + Holy|
|Firestorm||Nature + Fire|
|Froststrike||Frost + Physical|
|Holyfrost||Frost + Holy|
|Frostfire||Frost + Fire|
|Froststorm||Frost + Nature|
|Shadowstrike||Shadow + Physical|
|Shadowlight (Twilight)||Shadow + Holy|
|Shadowflame||Shadow + Fire|
|Shadowstorm (Plague)||Shadow + Nature|
|Shadowfrost||Shadow + Frost|
|Spellstrike||Arcane + Physical|
|Divine||Arcane + Holy|
|Spellfire||Arcane + Fire|
|Spellstorm (Astral)||Arcane + Nature|
|Spellfrost||Arcane + Frost|
|Spellshadow||Arcane + Shadow|
|Elemental||Frost + Nature + Fire|
|Chromatic (Chaos)||Arcane + Shadow + Frost + Nature + Fire|
|Magic||Arcane + Shadow + Frost + Nature + Fire + Holy|
|Chaos||Arcane + Shadow + Frost + Nature + Fire + Holy + Physical|
Patch 5.0.4 (2012-08-28): This value is now reporting non-localized proper case strings instead of capitalized strings (e.g. "Falling" instead "FALLING").
See the SPELL_FAILED GlobalStrings for a full list of failed types.
- "A more powerful spell is already active"
- "Another action is in progress"
- "Can't do that while asleep"
- "Can't do that while charmed"
- "Can't do that while confused"
- "Can't do that while fleeing"
- "Can't do that while horrified"
- "Can't do that while incapacitated"
- "Can't do that while moving"
- "Can't do that while silenced"
- "Can't do that while stunned"
- "Invalid target"
- "No target"
- "Not enough energy"
- "Not enough mana"
- "Not enough rage"
- "Out of range"
- "Target needs to be in front of you."
- "Target not in line of sight"
- "Target too close"
- "You are dead"
- "You are in combat"
- "You are in shapeshift form"
- "You are unable to move"
- "You can't do that yet"
- "You must be behind your target."
- Prints all CLEU parameters.
local function OnEvent(self, event) print(CombatLogGetCurrentEventInfo()) end local f = CreateFrame("Frame") f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") f:SetScript("OnEvent", OnEvent)
- Displays your spell or melee critical hits.
local playerGUID = UnitGUID("player") local MSG_CRITICAL_HIT = "Your %s critically hit %s for %d damage!" local f = CreateFrame("Frame") f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") f:SetScript("OnEvent", function(self, event) -- pass a variable number of arguments self:OnEvent(event, CombatLogGetCurrentEventInfo()) end) function f:OnEvent(event, ...) local timestamp, subevent, _, sourceGUID, sourceName, sourceFlags, sourceRaidFlags, destGUID, destName, destFlags, destRaidFlags = ... local spellId, spellName, spellSchool local amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing, isOffHand if subevent == "SWING_DAMAGE" then amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing, isOffHand = select(12, ...) elseif subevent == "SPELL_DAMAGE" then spellId, spellName, spellSchool, amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing, isOffHand = select(12, ...) end if critical and sourceGUID == playerGUID then local action = spellId and GetSpellLink(spellId) or "melee swing" print(MSG_CRITICAL_HIT:format(action, destName, amount)) end end
Combat log messages may be written to the
World of Warcraft\_retail_\Logs\WoWCombatLog.txt file for external parsing purposes.
This feature can be enabled with LoggingCombat(true) or toggled with the /combatlog slash command.
In version 10 there can be up to 38 parameters:
- 9 base parameters from CLEU (event, source unit and dest unit)
- 0-3 prefix params from CLEU (spell/environmental events)
- 16 advanced parameters which require CVar advancedCombatLogging to be enabled for meaningful values.
- 10 suffix params from CLEU
6/11 17:09:36.127 COMBAT_LOG_VERSION,10,ADVANCED_LOG_ENABLED,0 6/11 17:09:47.745 SPELL_DAMAGE,Player-1598-0611966F,"Ketho-Boulderfist",0x511,0x0,Creature-0-3891-0-1-94-00007FC33E,"Cutpurse",0x10a48,0x0,585,"Smite",0x2,0000000000000000,0000000000000000,0,0,0,0,0,-1,0,0,0,0.00,0.00,37,0.0000,0,88633,88633,88265,2,0,0,0,nil,nil,nil
6/11 17:13:43.859 COMBAT_LOG_VERSION,10,ADVANCED_LOG_ENABLED,1 6/11 17:13:49.052 SPELL_DAMAGE,Player-1598-0611966F,"Ketho-Boulderfist",0x511,0x0,Creature-0-3891-0-1-94-00007FC4D6,"Cutpurse",0x10a48,0x0,585,"Smite",0x2,Creature-0-3891-0-1-94-00007FC4D6,0000000000000000,0,393,0,0,59,1,0,0,0,-9179.14,111.56,37,2.8178,5,88633,88633,88239,2,0,0,0,nil,nil,nil
These parameters contain advanced information about involved units and the map location.
- 1. unitGUID
- 2. ownerGUID
- 3. currHp
- 4. maxHp
- 5. attackPower
- 6. spellPower
- 7. armor
- 8. resourceType
- Enum.PowerType. If there are multiple resource types they are delimited with a pipe char, e.g. "3|4" for Rogue Energy and ComboPoints.
- 9. currResource
- 10. maxResource
- 11. resourceCost
- 12. coord
- 13. coord
- 14. UiMapID
- 15. facing
- 16. itemLevel/level
|_DAMAGE||Triggered on damage to health. Nothing Special. (overkill returns a number greater than or equal to zero)|
|_MISSED||Triggered When Effect isn't applied but mana/energy is used IE: ABSORB BLOCK DEFLECT DODGE EVADE IMMUNE MISS PARRY REFLECT RESIST|
|_HEAL||Triggered when a unit is healed|
|_ENERGIZE||Any effect that restores power. Spell/trinket/item set bonuses can trigger this event. IE: Vampiric Touch, or Mark of Defiance (Trinket)|
|_DRAIN||Same as _ENERGIZE but this time you are losing power. Caused by enemies.|
|_LEECH||Same as _DRAIN, but the source unit will simultaneously receive the same kind of power (specified in extraAmount)|
|_INTERRUPT||Spellcasting being interrupted by an ability such as Kick or Pummel.|
|_DISPEL||A buff or debuff being actively dispelled by a spell like Remove Curse or Dispel Magic. The source is the caster of the aura that was dispelled, and the destination is the target which was dispelled (needs verifying).|
|_DISPEL_FAILED||A failed attempt to dispel a buff or debuff, most likely due to immunity.|
|_STOLEN||A buff being transferred from the destination unit to the source unit (i.e. mages' Spellsteal).|
|_EXTRA_ATTACKS||Unit gains extra melee attacks due to an ability (like Sword Sepcialization or Windfury). These attacks usually happen in brief succession 100-200ms following this event.|
|_AURA_APPLIED||Triggered When Buffs/Debuffs are Applied. Note: This event doesn't fire if a debuff is applied twice without being removed. IE: casting Vampiric Embrace twice in a row only triggers this event once. This can make it difficult to track whether a debuff was successfully reapplied to the target. However, for instant cast spells, SPELL_CAST_SUCCESS can be used.|
|_AURA_REMOVED||Triggered When Buffs/Debuffs expire. The souce is the caster of the aura which faded, and the destination is the target from which the aura faded (needs verifying).|
|_AURA_APPLIED_DOSE||Triggered by stacking Debuffs if the debuff is already applied to a target. IE: If you cast Mind Flay twice it causes 2 doses of shadow vunerability, the first time it will trigger, SPELL_AURA_APPLIED (arg10 = shadow vulnerability), and SPELL_AURA_APPLIED_DOSE (arg10 = shadow vunerability) the second. The last argument reflects the new number of doses on the unit.|
|_AURA_REMOVED_DOSE||The opposite of _AURA_APPLIED_DOSE, reducing the amount of doses on a buff/debuff on the unit.|
|_AURA_REFRESH||Resets the expiration timer of a buff/debuff on the unit.|
|_AURA_BROKEN||A buff or debuff is being removed by melee damage. The source is the name of the caster of the aura that was broken, and the destination is the target which the aura broke off of (needs verifying).|
|_AURA_BROKEN_SPELL||A buff or debuff is being removed by spell damage (specified in extraSpell...). Source and destination is the same as the above.|
|_CAST_START||Triggered when a spell begins casting. Instant spells don't invoke this event. They trigger _CAST_SUCCESS, _FAILED instead.|
|_CAST_SUCCESS||Triggered when an instant spell is cast or when a spellcast finishes and doesn't fail. This isn't triggered when the spell misses. On a miss SPELL_MISS will be triggered instead.|
|_CAST_FAILED||If the cast fails before it starts (IE invalid target), then _CAST_START never triggers. However it is possible for a cast to fail after beginning. (IE you jump, move, hit escape etc.)|
|_INSTAKILL||Immediately kills the destination unit (usually happens when warlocks sacrifice their minions).|
|_CREATE||Creates an object (as opposed to an NPC who are 'summoned') like a hunter's trap or a mage's portal.|
|_SUMMON||Summmons an NPC such as a pet or totem.|
|_DISSIPATES||Fires when Gas Clouds are being extracted with Zapthrottle Mote Extractor|
|UNIT_DIED||destGUID and destName refer to the unit that died.|
|PARTY_KILL||includes both sourceGUID and destGUID, but only reports for you (not in a party) or your other 4 party members (not raid members)|