Hi everyone,
I am working on a small tool to reconstruct warrior rage from raw WoW 3.3.5a combat logs, and I have reached a point where I am not sure whether I am seeing a mistake in my logic, a missing mechanic, or a limitation of the raw combat log itself.
I am not claiming this is a server bug. I am mainly looking for feedback from people who have worked with raw combat logs, rage formulas, UnitPower readings, or similar post-fight analysis tools.
What I am doing
I have two sources of information:
- A simulator that replays the raw combat log in textual order.
- An addon that tracks the warrior's rage progression from the client side, using what the player actually sees on the rage bar.
The idea is to compare both timelines and see whether the simulator can reproduce the rage shown to the player.
In some places, they match well. But in other places, I see this pattern:
SPELL_CAST_SUCCESS happens for a warrior ability,
but when I replay the raw combat log in textual order,
there is not enough rage before that line to pay the ability cost.
The ability was accepted by the server, so I assume the warrior really did have enough rage at that moment. The problem is that the raw log, when read strictly in textual order, does not always seem to expose that rage before the accepted spend.
Example of the suspected issue
In one case, the addon/player-side rage progression looked like this:
Bloodrage +20
Bloodrage +1
white hit +11
= 32 rage
However, around the same moment, the raw combat log order can make the rage-related events appear in a slightly different order.
That means later abilities may look impossible if I only trust the textual order of the raw log.
To be clear: I am not saying the player used an ability without rage. I am saying the raw log order and the client-observed rage order may not be perfectly synchronized at this micro-timing level.
Rage formula being used
For outgoing main-hand white damage, I am using the standard 3.3.5a warrior rage formula.
First, the rage conversion value:
c = 0.0091107836 * level^2
+ 3.225598133 * level
+ 4.2652911
if level > 70:
c += 13.27 * (level - 70)
For a level 80 warrior:
c = 453.32215678
For a main-hand white hit:
weapon_hit_factor = weapon_speed_seconds * 3.5
rage = (damage / c * 7.5 + weapon_hit_factor) / 2
Example:
damage = 876
weapon speed = 2.6
weapon_hit_factor = 2.6 * 3.5
weapon_hit_factor = 9.1
rage = (876 / 453.32215678 * 7.5 + 9.1) / 2
rage ~= 11.7
The simulator stores rage internally as rage multiplied by 10, so:
int(11.7 * 10) = 117 internal rage
117 internal rage = +11 displayed rage
For damage taken, I am using:
rage = (damage + absorbed) / c * 2.5
With Berserker Rage active, that value is doubled.
The main question
Has anyone here analyzed raw WoW combat logs deeply enough to know whether their textual order can be slightly different from the actual internal rage/power update order?
For example:
- Can damage, rage gain, and spell cast events be written to the combat log in an order that is not exactly the same as the internal server/client power timeline?
- Can a warrior ability be accepted by the server while the raw log only shows the rage gain that made it possible a few lines later?
- Is this a known limitation when reconstructing rage from raw logs?
- Or am I more likely missing a mechanic, modifier, truncation rule, or rage source?
What I am trying to avoid
I am trying to keep the analysis conservative.
- I do not want to invent hidden rage.
- I do not want to force the numbers to fit.
- I do not want to assume the server is wrong.
- I do not want to treat the addon as a replacement for the combat log.
The addon is only being used as an external check of what the player saw on the rage bar. The simulator itself is based on the raw combat log and known rage formulas.
What I would like to know
If anyone has experience with:
- raw WoW combat logs,
- warrior rage reconstruction,
- UnitPower / rage tracking addons,
- server-side rage formulas,
- or post-fight combat log simulators,
I would really appreciate your opinion.
Have you ever found this kind of barrier when analyzing raw logs?
If yes, how did you handle it?
Did you reorder certain event types, add a tolerance window, use client-side power readings as validation, or conclude that exact rage reconstruction is not always possible from the raw log alone?
Any correction to the formula or interpretation above is also welcome.