Hazelnut wrote: ↑Thu Nov 28, 2019 8:48 pm
Pretty sure Interkarma is not keen on adding more options into base DFU so probably the former, but we should wait for his opinion - I don't want to speak for him. There's also the added benefit of allowing multiple interpretations if it's opened up for modding too.
Leaving aside the shop code for a moment...
Yes, I agree. For those reasons, I don't think options in the settings is the way to go, and it also adds little value alongside a lot of possible confusion (to the uninitiated) as to what the effect is in-game. Mods "fix" it better.
Because it isn't either broken or a bug, really. There's nothing mathematically wrong with the material generation numbers, it just wasn't optimized for the final play experience, causing some materials in the mid-late list having sharply reduced rates of generation.
My research and number-crunching has revealed to me that while adjusting the numbers themselves can basically "fix" the problem, it doesn't completely negate it, and the numbers in that list can't be adjusted individually (without making the problem worse). All the numbers short of the final one need to sum to
at most 254 (at least with the current code limiting the maximum bound of the player level modified "roll" number to 255). And I was wrong in my initial assumption: It doesn't matter what the final number (for Daedric) is. The 5 is arbitrary. Any number other than 0 produces the same result as it does now (and 0 causes Daedric to be unable to appear).
Unfortunately, a really satisfying fix would require the adjustment of
at least the maximum bounding number (if not some other code as well around line 116 of ItemBuilder.cs), in conjunction with a complete adjustment of the chance numbers. This is too much for an option setting.
Unlevelled worlds will require a complete overhaul to this generation code, unfortunately. Although as Ralzar says, it would be very simple to make all types above a certain level disappear completely; all you'd have to do is make sure the numbers up to the point you want them to stop add to 255 or more, and those after them can never be generated. 0s should work, too.