I thought it would be a good idea to make a topic for this feature alone given the fact it's a bit more complicated to implement but should be possible by now. I think we should focus on making different types of blood and gibs based on each character's species by now, so robots and aliens won't gib red meat chunks and bleed with red blood.
I looked into the code for some time but it's something too complicated to just open a text editor and implement, so I thought I should post what I believe and have noticed on the technical part here so maybe we can all get an idea on how this would be doable. I'm not saying this should be done the exact way I describe it here, it's just what I believe is best to follow from what I have examined.
First of all what I think it should do: There should be 3 gib and blood types in total. First one is the current red gibs which should be left as they are for all human characters. The second type should be a greenish-blue type of meat and blood for all types of aliens and lizards (something like this). Third type finally should be black oil for blood (something like this) and mechanical parts for gibs in the case of robots. The species of each player model that would specify which gibs / bloods apply to which character should be written in models\player\playername.txt in one of the lines there as "human", "alien" or "robot".
As far as my understanding goes, the gibing event must basically read the character type of the victim whenever it's called and spawn different gib models depending on what it sees. The blood code seems to be separate from gibs, so the blood effect spawners would need to read the character type separately in the same way and spawn different blood particles and decals depending on what character species they read in each case.
More into the code, the files I found of most interest are cl_player.qc and g_violence.qc in the server code, and gibs.qc in the client code (as gibing and blood are client side effects now). gibs.qc is the file where the gibs models are specified, so a new switch needs to be added here pointing to different gib models which can be called by the event that invokes gibing ("case 0x01" is the switch for the current gib types, that switch probably needs duplicating with new TossGib()s pointing to different models in each case). Each of these switches now would be used either from cl_player or g_violence where reading the character's species needs to occur and in each case use a different "case" from gibs.qc (the lines "if(sv_gentle) | e.state |= 0x80;" in g_violence.qc are probably a good example although I'm not sure).
Putting a reader for each gibing character's type is the biggest challenge. Different gib models and blood textures would need to be done as well of course. Also a new gib sound would need to be created for robots, since the current meaty "Splash!" can apply to gibing humans and aliens but for robots that would need to sound as someone smashing a computer against a wall.
I am of course willing to try and help with implementing this but can't do it by myself so I'd like to know what everyone else thinks and knows so far. You can post any partial code patches here and new gib models and textures as well if anyone makes any (as requested by the admins, try to use use the sourceforge project page for posting patches or modifications).