I have a suggestion regarding damage system.
Instead of making weapons one-two hit kill, which is in fact incredibly unrealistic, how about every player has bodypart damage?
Take SS13 (Space Station 13) for example. In there, your hands, legs, chest and head can be damaged, and when you examine yourself it tells you stuff like
"My head is OK.
My chest is slightly bruised.
My legs are bleeding!
My hands are OK."
The game calculates the character's overall damage based on that info, and if he's damaged too much, he goes into "critical" condition. Your character falls down, you barely can see anything, you can't talk, move or hear anybody and you are slowly succumbing to death. If you are exposed to the damage, the succumbing process speeds up. Other players can perform CPR on you in the critical condition, which keeps you alive and resets your succumb status, although it only helps against oxygen deprivation and stops working after a while.
I really suggest you play a bit of SS13 to better understand what I'm talking about :V
Oh, and to help you out with hitboxes
Support_Hitbox.csUsage:
//All thanks go to Port!
function ProjectileData::damage(%this, %obj, %col, %fade, %pos, %normal)
{
%chestTest = matchBodyArea( getHitbox( %obj, %col, %pos ), $chestTest );
%headTest = matchBodyArea( getHitbox( %obj, %col, %pos ), $headTest );
%legTest = matchBodyArea( getHitbox( %obj, %col, %pos ), $legTest );
%armTest = matchBodyArea( getHitbox( %obj, %col, %pos ), $armTest );
if( %chestTest )
{
YOUR SILLY CODE HERE
}
%col.damage( %obj, %pos, %damage, %this.directDamageType );
}