RPPM formula (effective PPM = base PPM * haste^scaling * (1 + crit)^scaling), bad luck protection multiplier on misses, internal cooldowns (ICD), proc chance calculation (ppm * time_since_attempt / 60 * blp_multiplier), bitmask-based trigger flags, spell filtering, requires-aura validation, ProcEffect variants (ApplyAura, CastSpell, Damage, Resource, ReduceCooldown, ExtendAura, AddStacks, Multiple), proc handler registry.
Next steps