Hmm not quite as bad as I thought...
Only minor changes to constructor.gd, basically I moved the <type>_race_arrays out of the set genealogy function so that I could look at them in globals, rather than rebuilding the arrays myself. (edit: I am also using the arrays in multiple functions within constructor itself, but that is for an entirely different unfinished thing)
I added entries to races.gd for each of the animal types, a little bit of work to prevent characters generating with an animal race but not that hard, most character generation is either already filtered or used globals.allracesarray when generating characters, so I just had to prevent the animal races from being populated into that array.
For globals.gd I did the aforementioned filtering to keep animal races out of allracesarray
had to make major changes to the impregnation, race_breed_compatible, and fertilize_egg functions,
as well as adding another array for race groups to be used with the getracebygroup function, including adding addition group filters to said function
And lastly in every file that calls globals.impregnation without providing a father person, I had to add a new input to target either a specific race or group of races to generate a father from.
Aric if I can get my internet to cooperate I will try to send the changes on discord, if you need them. It would be quite the wall of text to post it here.