but I have no idea if I ever get around to creating blueprints for clients of different castes and noone else wants to do it.
I want to do it, and I'll do it after traits and jobs balancing
==============================================================================
The easiest way to support any possible race combinations is to use general traits races. Elven blood, celestial/infernal origin, undead, monster, anthropomorphic animal, android/cyborg, etc.
So in case of half-breeds we could just use several traits. It's quite accurate in terms of flags, but not accurate in terms of stats. All half-breeds will have full power of both races, that's illogical.
The problem is that even with as general as possible race traits the number of traits rises considerably, and they don't carry much semantic load either.
Another way is to create a separate json for all races, with optional bonuses and penalties.
But this way works poorly with half-breeds. You have to manually create a new race for every new species you add into the game.
Using current traits + race as a simple string won't help much. There are tons of elves for example, with different names too (high, forest, dark, etc), it will be impossible to properly use as flags. Unless you have advanced strings analyzer in plans.
So I propose this:
1) json with base races types
{
"id": "Elven Blood",
"desc": "This girl is of the elven race.",
"mod": {"constitution": -10},
"min": {"agility": 10},
"traits" : {"Not Human"}
},
{
"id": "Undead",
"desc": "This girl is basically dead.",
"mod": {"constitution": 10}
"min": {"charisma": -10}
}
]
2) In girls data files we specify both actual race name and base race (optionaly, by default either Human or Unknown, I guess). For example, race name Ghost and race type Undead. This way the girl will have Ghost race, while with the help of Undead race type the game knows that she should hang around a cemetery.
3) For half-breeds you could type anything you want in race name, as for types, usually they act and live as one of their parents, like half-elves either live in a city as humans or in a forest as elves. So depending on character you should choose a base race, since it's just a flag and nothing more. This is the best we can do without advanced coding. It's just an example, I'll create half-elf base race of course, but I cannot create all possible half-breed races.
4) Artificial Body is a vague thing. Sometimes it's a race, sometimes it's a trait.
Not Human is a flag, nothing more. And usually it's pretty clear if the character is human or not.
Alien is quite complicated. Let's say, we have an angel that lived among humans all her life and doesn't have any special powers at all. So she is an angel, but not an Alien.
So, in cases when we sure that some specific race should have specific trait, we could use traits field, like in that example above. All elves are not humans, all adroids have AB. When a race has traits, all girls with this race will have these traits, no matter whether they specified in girls data files or not. Yet we cannot remove these traits completely, since in some cases they should be used manually.
==============================================================================
I'm not sure about p.4, perhaps it's a bit too complicated, but 1-3 sound reasonable.