Haha this is too funny.
I’ve actually been working on some stuff with affix rolls.
Some relevant info: after 1000+ crafts on PTR (didn’t want to waste the mats on live servers), I’ve determined with pretty high certainty that primary affixes roll first. Probably not all that suprising, this is what I expected going in. But still necessary to know for direct calculation of affix combination probabilities.
This probably isn’t really relevant for quivers (no mutually exclusive primaries/secondaries?), but it will matter for amulets. LPH/LPK and all res/secondary res both roll on amulets, and are mutually exclusive. Although, since primary affixes roll first, it’s not that important, and it really only matters for secondaries (since depending on what primaries roll, some secondaries are excluded). If the affixed were all pooled and rolled at the same time, which was another possibility I considered, it would actually matter, since it would affect the relative affix probabilities.
Anyway, I considered three scenarios:
-
roll for all affixes at once (pool both primary and secondary affixes, sample based on the affix weights from the datamine you found), once you hit 4 primaries or 2 secondaries, drop the rest from the pool and roll the remaining primaries/secondaries.
-
roll 4 primaries first, then 2 secondaries.
-
roll 2 secondaries first, then 4 primaries (this one seemed unlikely to be the case, but I checked for it anyway).
It’s possible they roll in some other weird way that I didn’t test, and that under certain situations would be consistent with what I saw, but logically, I think these three scenarios were the most likely possibilities.
I was using crafted level 70 yellow Templar Relics, since they have a small affix pool, and can roll both sets of mutually exclusive primaries/secondaries: LPH/LPK and all res/secondary res. The mutually exclusive primaries/secondaries are key for testing the order they roll in. Notably, Templar relics also only have three possible secondary affixes: LPK, secondary res, and monster kills grant XP. This is also important. They also only take a single inventory slot, so you can make 60 at once, which is convenient.
I pretty much immediately excluded scenario 3 (secondaries rolling first). Normally, level 70 yellow templar relics roll with 6 affixes (4/2). However, it’s possible to roll one with only 5 (4/1). This happens if it rolls with LPH+all res, then there’s only one possible secondary affix that can roll (monster kills grant XP). This could not happen if secondary stats rolled first, you’d always get 2 secondaries, you’d always have 6 total affixes, and you’d never be able to have both LPH and all res on the same templar relic (since at least one of lpk and secondary res would always roll). Since you can get LPH + all res relics with only 5 affixes, we know secondaries don’t roll first.
That still leaves the first two scenarios, either roll all affixes simultaneously, or roll only primary affixes first. I’m not going to share it here yet, but my data was strongly consistent with primary affixes rolling first. I’ll probably make a post about it in the next week or so once I get it organized. You’ll just have to take my word for it for now
Also, for what it’s worth, the datamined affix weights still seem to be accurate. I wasn’t seeing any major inconsistencies. Granted, templar relics have a pretty small available affix pool, but I wasn’t seeing anything that didn’t fit. I would also say that anecdotally, the datamined weights do seem to make sense for what I see in game as more vs. less heavily weighted affixes too.
Part of my reason for doing this was to optimize rolling reduced level requirement at the start of the season, I needed to know the affix probabilities and how items are generated. And I guess just for interest as well
(side note: rather than trying to calculate all the probabilities exactly, which change depending on which affixes roll and the order they roll in since that alters that relative weights of the remaining affixes, and can get complicated, I actually just wrote some functions to generate random items based on an input list of primary and secondary affixes and their weights, then made a million random items and checked to see what came out. Seemed like the easier approach)