I was trying to standardize gender across the code so that 0 = neuter, 1 = male, 2 = female, but gender was stored as a boolean in the new game parameters, so every character was getting changed into a male. So the bug was caused by misrepresenting gender as a binary construct. :|