Basic kevlar detection stuff
This commit is contained in:
parent
62eb3468b1
commit
b95120e965
4 changed files with 30 additions and 4 deletions
31
Source/Server/Damage.c
Executable file → Normal file
31
Source/Server/Damage.c
Executable file → Normal 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
3
freecs/default.cfg
Executable file → Normal 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
|
BIN
freecs/progs.dat
BIN
freecs/progs.dat
Binary file not shown.
Loading…
Reference in a new issue