The last time this suggestion was made, I outlined a solution that should keep all parties happy. It would be trivial to code, so would be more likely to see light of day in an update. Plus, it would be customizable, and optional, so that the player gets to decide how it affects their game, and the change would have other modding uses, too:-
- Change the hard-coded gender pairing, into caste-based pairing. For the vanilla game, things would work the same, but it'll be trivial to code pairing-rules for 6 castes:
GayMale (pairs with GayMale and BiMale)
BiMale (pairs with GayMale, BiMale, BiFemale, StraightFemale)
StraightMale (pairs with StraightFemale and BiFemale)
GayFemale (pairs with GayFemale and BiFemale)
BiFemale (pairs with StraightMale, BiMale, BiFemale, GayFemale)
StraightFemale (pairs with StraightMale and BiMale)
With this system, sexual orientation would be set at birth (no big deal), you could also hand-code the percentages of each type, making customization easy for the player, actual breeding would still use the [MALE] / [FEMALE] tag system, so no real changes the breeding code. You could also give all the castes of the same gender, the same text descriptions, so you wouldn't know which orientation they were until they grew up and paired.
The same change to pairing based on Castes could also be used to create modded "sub races" or actual social castes in the Dwarf world which only marry ones of their matching social rank, or, mobility could only be allowed to one rank higher or lower. This would work especially well, if the [POP_RATIO] tags for children were to be made a Caste-level tag, taken from either parent.