Basic kevlar detection stuff

This commit is contained in:
Marco Cawthorne 2017-09-26 00:10:21 -05:00
parent 62eb3468b1
commit b95120e965
4 changed files with 30 additions and 4 deletions

31
Source/Server/Damage.c Executable file → Normal file
View File

@ -114,7 +114,34 @@ void Damage_Apply( entity eTarget, entity eAttacker, int iDamage, vector vHitPos
dprint( sprintf( "[DEBUG] Hit Bodypart: %s\n", Damage_GetHitLocation( trace_surface_id ) ) );
// Apply the damage finally
eTarget.health = eTarget.health - iDamage;
if ( eTarget.armor ) {
float fRatio = 0.5;
if ( eAttacker != world ) {
fRatio = wptTable[ eAttacker.weapon ].fWeaponArmorRatio;
}
// Simple implementation of how kevlar damage is calculated
float fNewDmg = iDamage * fRatio;
float fNewArmor = ( iDamage - fNewDmg ) / 2;
if ( fNewArmor > eTarget.armor ) {
fNewArmor = eTarget.armor;
fNewArmor *= (1/0.5);
fNewDmg = iDamage - fNewArmor;
eTarget.armor = 0;
} else {
int oldValue = eTarget.armor;
if ( fNewArmor < 0 ) {
fNewArmor = 1;
}
eTarget.armor = ( oldValue - fNewArmor );
}
eTarget.health -= fNewDmg;
} else {
// No armor
eTarget.health -= iDamage;
}
// Special monetary punishment for hostage murderers
if ( eTarget.classname == "hostage_entity" ) {
@ -169,7 +196,6 @@ void Damage_Radius( vector vOrigin, entity eAttacker, float fDamage, float fRadi
entity eDChain = findradius( vOrigin, fRadius );
while( eDChain ) {
if ( eDChain.takedamage == DAMAGE_YES ) {
float fDiff = vlen( vOrigin - eDChain.origin );
@ -180,7 +206,6 @@ void Damage_Radius( vector vOrigin, entity eAttacker, float fDamage, float fRadi
Damage_Apply( eDChain, eAttacker, fDamage, eDChain.origin );
}
}
eDChain = eDChain.chain;
}
}

Binary file not shown.

3
freecs/default.cfg Executable file → Normal file
View File

@ -72,4 +72,5 @@ seta r_shadow_realtime_dlight_shadows "0"
seta r_imageexensions "tga bmp pcx"
seta vid_conautoscale "1"
seta scr_conalpha "1"
seta con_notifylines "0"
seta con_notifylines "0"
seta maxplayers 8

Binary file not shown.