I think I found an calculation error for the combat ratings (might apply similarly to the assasination values)
// EP value of spell hit and yellow hit at the hit cap
private static final double EP_AT_SPELL_CAP =
EP_AT_YELLOW_CAP + SPELL_HIT_COEFFICIENT * SPELL_HIT_CAP;
this would in numbers mean: 241 * 1.9 + 1127 * 1.4
I think that is wrong, because you are actually counting the yellow cap ratings twice. Once for 1.9 ep and once for 1.4 ep
So I guess, that right calculation would be 241 * 1.9 + (1127 - 241) * 1.4,.
This actually changes the results for combat
alot (read as: 241 * 1.4ep too much).
It only happens for stat vectors assuming hit rating above the spell cap.
As long as the calculated hit ratings are below the spell hit cap, your formulas are correct, as EP_AT_YELLOW_CAP is not used in the else if.
Regards,
White
// Edit:
Also a little suggestion: For combat, there is no case where reforging into MST or CRT will happen at all. There is always an option to reforge those values into something differnt (reason beeing, that even white hit rating is superior to those two).
Removing all StatVectors for those values could reduce calculation times for combat ratings to a good amount.