diff --git a/Source/Server/Damage.c b/Source/Server/Damage.c index 682f23ad..7566c7c8 100644 --- a/Source/Server/Damage.c +++ b/Source/Server/Damage.c @@ -128,20 +128,20 @@ void Damage_Apply( entity eTarget, entity eAttacker, int iDamage, vector vHitPos if ( fNewArmor > eTarget.armor ) { fNewArmor = eTarget.armor; fNewArmor *= (1/0.5); - fNewDmg = iDamage - fNewArmor; + fNewDmg = rint( iDamage - fNewArmor ); eTarget.armor = 0; eTarget.iEquipment -= EQUIPMENT_KEVLAR; } else { if ( fNewArmor < 0 ) { fNewArmor = 1; } - eTarget.armor -= fNewArmor; + eTarget.armor = rint( eTarget.armor - fNewArmor ); } if ( iSkipArmor == TRUE ) { - eTarget.health -= iDamage; + eTarget.health = rint( eTarget.health -= iDamage ); } else { - eTarget.health -= fNewDmg; + eTarget.health = rint( eTarget.health -= fNewDmg ); } } else { // No armor diff --git a/Source/Server/Player.c b/Source/Server/Player.c index 12ba3f9e..a41efbeb 100755 --- a/Source/Server/Player.c +++ b/Source/Server/Player.c @@ -261,7 +261,7 @@ void Player_UseDown( void ) { traceline ( vSource, vSource + ( v_forward * 64 ), FALSE, self); if ( trace_ent.iUsable ) { - if ( ( trace_ent.classname != "c4bomb" ) && ( trace_ent.classname != "func_pushable" ) ) { + if ( ( trace_ent.weapon == WEAPON_C4BOMB ) && ( trace_ent.classname != "func_pushable" ) ) { self.flags = ( self.flags - FL_USERELEASED ); sound( self, CHAN_ITEM, "common/wpn_select.wav", 0.25, ATTN_IDLE ); } diff --git a/Source/Shared/WeaponC4Bomb.c b/Source/Shared/WeaponC4Bomb.c index efe48fd5..5debfa23 100755 --- a/Source/Shared/WeaponC4Bomb.c +++ b/Source/Shared/WeaponC4Bomb.c @@ -163,9 +163,10 @@ static void WeaponC4BOMB_Think( void ) { void WeaponC4BOMB_Drop( vector vBombPos ) { // Do all the dirty entspawning stuff entity eBomb = spawn(); - eBomb.classname = "c4bomb"; + eBomb.classname = "remove_me"; eBomb.solid = SOLID_BBOX; + eBomb.weapon = WEAPON_C4BOMB; setmodel( eBomb, "models/w_c4.mdl" ); setorigin( eBomb, vBombPos ); setsize( eBomb, '-6 -6 0', '6 6 6' ); diff --git a/Source/Shared/Weapons.c b/Source/Shared/Weapons.c index e8ede14e..41e4336f 100755 --- a/Source/Shared/Weapons.c +++ b/Source/Shared/Weapons.c @@ -134,8 +134,9 @@ void Weapon_PrimaryAttack( float fWeapon ) { #ifdef CSQC if ( fWeaponEventPlayer != player_localentnum ) { entity ono = findfloat( world, entnum, fWeaponEventPlayer ); - //print( sprintf( "Shooter! Origin: %d %d %d\n", ono.origin_x, ono.origin_y, ono.origin_z ) ); - Animation_ShootWeapon( ono ); + if ( ono != __NULL__ ) { + Animation_ShootWeapon( ono ); + } return; } #endif @@ -176,7 +177,9 @@ void Weapon_Reload( float fWeapon ) { #ifdef CSQC if ( fWeaponEventPlayer != player_localentnum ) { entity ono = findfloat( world, entnum, fWeaponEventPlayer ); - Animation_ReloadWeapon( ono ); + if ( ono != __NULL__ ) { + Animation_ReloadWeapon( ono ); + } return; } #endif diff --git a/freecs/csprogs.dat b/freecs/csprogs.dat index 814ddba4..69b2421b 100644 Binary files a/freecs/csprogs.dat and b/freecs/csprogs.dat differ diff --git a/freecs/progs.dat b/freecs/progs.dat index f0a75a2c..602bdcea 100644 Binary files a/freecs/progs.dat and b/freecs/progs.dat differ