Hint for developer:
If you do random(0,1) you get a roughly even distrubution from 0 to 1. Great way to add RNG to a game. Check if values are between 0.9 to 1.0 and give a reward or whatever.
But if you do random(0,1) * random(0,1) your distrubition is now weighted very heavily to lower values. Something like 30% of values will fall between 0 and 0.1, and barely 1% between 0.9 and 1.0. Suddenly your 0.9 to 1.0 reward only happens 1% of the time instead of 10% of the time and no one has fun playing the game as it is too frustrating. Genetic algorithms will not have enough boost to fix this unless you expect your players to play 100,000 times. Genetic is good for running huge numbers of iterations, something players will not do and is not reasonable.
I think someone like this is happening with your model. As if there is a global pain sensitivity value multiplied by a sensitivity value for the given body part, resulting in glass women. Bounding the FINAL value is a quick fix. Make 0.2 a minimum after final calculation, but long term you need to redistribute your values.
If you do sqrt(random(0,1) * random(0,1)) your distribution is back to more reasonable, and actually starts to take on a bell-like shape with fewer values between 0-0.05 and 0.95-1.0, which may be desirable anyay.
Whenever you are doing things like this you need to write test code and look at you distributions to make sure they are reasonable. You have a giant complete piece of game code but you should really look at simplifying and make sure to test as you go as you add more complexity. It's fun to write some fancy genetic algorithm code but these systems are very hard to make work as you want, and you need to prove one step at a time that it works rather than build a fancy system then never be able to keep in in check.
If you do random(0,1) you get a roughly even distrubution from 0 to 1. Great way to add RNG to a game. Check if values are between 0.9 to 1.0 and give a reward or whatever.
But if you do random(0,1) * random(0,1) your distrubition is now weighted very heavily to lower values. Something like 30% of values will fall between 0 and 0.1, and barely 1% between 0.9 and 1.0. Suddenly your 0.9 to 1.0 reward only happens 1% of the time instead of 10% of the time and no one has fun playing the game as it is too frustrating. Genetic algorithms will not have enough boost to fix this unless you expect your players to play 100,000 times. Genetic is good for running huge numbers of iterations, something players will not do and is not reasonable.
I think someone like this is happening with your model. As if there is a global pain sensitivity value multiplied by a sensitivity value for the given body part, resulting in glass women. Bounding the FINAL value is a quick fix. Make 0.2 a minimum after final calculation, but long term you need to redistribute your values.
If you do sqrt(random(0,1) * random(0,1)) your distribution is back to more reasonable, and actually starts to take on a bell-like shape with fewer values between 0-0.05 and 0.95-1.0, which may be desirable anyay.
Whenever you are doing things like this you need to write test code and look at you distributions to make sure they are reasonable. You have a giant complete piece of game code but you should really look at simplifying and make sure to test as you go as you add more complexity. It's fun to write some fancy genetic algorithm code but these systems are very hard to make work as you want, and you need to prove one step at a time that it works rather than build a fancy system then never be able to keep in in check.