When a build gives you a pool of stat points and several attributes competing for them, eyeballing the split wastes potential. This optimizer takes your priority weights and divides the pool proportionally, using a precise apportionment method so every point is accounted for.
How it works
Each stat gets a share of the pool equal to its weight over the total weight:
share_i = weight_i / Σ weights
raw_i = share_i × totalPoints
Because you can only spend whole points, the tool rounds each raw_i down, then
distributes the leftover points to the stats with the largest fractional
remainders. This is the largest-remainder (Hamilton) method, the standard way to
apportion a fixed integer pool by proportion without rounding error.
Example and notes
With 40 points and weights of Strength 5, Agility 3, Vitality 2, Intelligence 1 (total weight 11), the raw shares are 18.2, 10.9, 7.3, and 3.6. Flooring gives 18, 10, 7, 3 — that is 38, leaving 2 points, which go to Agility (0.9 remainder) and Vitality (0.3) ahead of the others. The final split is 18 / 11 / 8 / 3, summing exactly to 40. Use the ratios of your weights to express priority; the absolute numbers do not matter since they are normalised.