How does SimulationCraft account for Ignite Munching?
When a crit occurs, the new Ignite pool is calculated immediately, but not applied for AuraDelay ms +/- some rng, where AuraDelay defaults to 150ms. If a subsequent crit occurs before the first one is applied then the Ignite pool is calculated using stale data. When this second crit is applied it effectively “munches” the previous crit. When an Ignite is initially applied where it did not previously exist, it will have a duration of exactly 4sec. When an Ignite is applied where it already existed, the event time of the next tick is not changed. The duration of Ignite becomes time_to_next_tick plus 4sec and the stack size becomes 3. At the time of Ignite application (AuraDelay ms after crit), if the stack size is still 3 (duration remaining is greater than 4sec) then the application will fail, effectively “munching” the crit. If Ignite ticks AFTER the crit and BEFORE the application of an Ignite refresh, you get a “rolled” Ignite. This is because the new Ignite pool damage is calculated