Skip to content

[Devourer] Model Voidfall building procs as a pseudo-random distribution#11538

Merged
ToppleTheNun merged 2 commits into
simulationcraft:midnightfrom
taherbert:devourer-voidfall-prd
Jun 28, 2026
Merged

[Devourer] Model Voidfall building procs as a pseudo-random distribution#11538
ToppleTheNun merged 2 commits into
simulationcraft:midnightfrom
taherbert:devourer-voidfall-prd

Conversation

@taherbert

@taherbert taherbert commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Voidfall's building proc is currently a flat 35% roll. In game it's a pseudo-random distribution: the per-cast chance starts near 16% after a proc and climbs with each miss, averaging 35% and guaranteed by the 7th cast. This was checked against ~24k builder casts from logs (a controlled dummy plus ranked raids), where the per-attempt rate matches C*N with C = prd::find_constant(0.35).

  • Replace the flat roll in voidfall_building_trigger_t with accumulated_rng, the existing PRD primitive (same pattern as DK/mage/hunter), with C from prd::find_constant on the talent chance.
  • Check voidfall_spending before the roll so the accumulator only advances on real builder attempts. The counter resets on a builder proc and does not advance during spending; guaranteed sources (Meteoric Rise, Mass Acceleration) trigger the buff directly and stay off the PRD.

DPS-neutral, since find_constant preserves the mean. Only the proc cadence is smoothed.

This closes: #11154

The builder proc is a PRD in game, not a flat roll: the per-cast chance starts near 16% after a proc and rises with each miss, averaging the nominal 35% and guaranteed by the 7th cast. Verified against ~24k builder casts from logs.

Use accumulated_rng with prd::find_constant, and check the spending buff before the roll so the accumulator only advances on real builder attempts. Mean proc rate and DPS are unchanged; the cadence is less streaky.
@taherbert taherbert marked this pull request as ready for review June 27, 2026 02:50
struct accumulated_rngs_t
{
// Annihilator
accumulated_rng_t* voidfall = nullptr;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't need the = nullptr here

@ToppleTheNun ToppleTheNun merged commit 16b061b into simulationcraft:midnight Jun 28, 2026
78 of 89 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants