diff --git a/src/server/defs.h b/src/server/defs.h index bac61418..a2e54978 100644 --- a/src/server/defs.h +++ b/src/server/defs.h @@ -24,7 +24,12 @@ void FX_Explosion(vector vecPos); void FX_GibHuman(vector vecPos); void Footsteps_Update(void); void Vox_Broadcast(string sMessage); -void TraceAttack_FireBullets(int , vector, int, vector, int); + +void TraceAttack_FireBullets(int,vector,int,vector,int); +#ifdef BULLETPENETRATION +void TraceAttack_SetPenetrationPower(int); +#endif + void Damage_Radius(vector, entity, float, float, int, int); void Damage_Apply(entity, entity, float, int, int); void Client_TriggerCamera(entity eTarget, vector vecPos, vector vEndPos, float fResetTime); diff --git a/src/server/traceattack.c b/src/server/traceattack.c index 02838944..3989bd55 100644 --- a/src/server/traceattack.c +++ b/src/server/traceattack.c @@ -102,7 +102,7 @@ TraceAttack_FireSingle(vector vecPos, vector vAngle, int iDamage, int iWeapon) #ifdef BULLETPENETRATION if (iTotalPenetrations > 0) { iTotalPenetrations -= 1; - TraceAttack_FireSingle(trace_endpos + (v_forward * 2), vAngle, iDamage, iWeapon); + TraceAttack_FireSingle(trace_endpos + (v_forward * 2), vAngle, iDamage / 2, iWeapon); } #endif } @@ -115,9 +115,6 @@ TraceAttack_FireBullets(int iShots, vector vecPos, int iDamage, vector vecSpread makevectors(self.v_angle); while (iShots > 0) { -#ifdef BULLETPENETRATION - iTotalPenetrations = 2; -#endif vDir = aim(self, 100000); #ifndef CSTRIKE vDir += random(-1,1) * vecSpread[0] * v_right; @@ -142,3 +139,11 @@ TraceAttack_FireBullets(int iShots, vector vecPos, int iDamage, vector vecSpread iShots--; } } + +#ifdef BULLETPENETRATION +void +TraceAttack_SetPenetrationPower(int power) +{ + iTotalPenetrations = power; +} +#endif diff --git a/src/shared/cstrike/w_ak47.c b/src/shared/cstrike/w_ak47.c index 705b3aef..d6cd5bca 100644 --- a/src/shared/cstrike/w_ak47.c +++ b/src/shared/cstrike/w_ak47.c @@ -132,6 +132,7 @@ w_ak47_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(1); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 36, [accuracy,accuracy], WEAPON_AK47); pl.ak47_mag--; diff --git a/src/shared/cstrike/w_aug.c b/src/shared/cstrike/w_aug.c index 6e8c7c89..7b3cb06c 100644 --- a/src/shared/cstrike/w_aug.c +++ b/src/shared/cstrike/w_aug.c @@ -133,6 +133,7 @@ w_aug_primary(void) View_SetMuzzleflash(MUZZLE_RIFLE); #else pl.aug_mag--; + TraceAttack_SetPenetrationPower(1); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 32, [accuracy,accuracy], WEAPON_AUG); if (self.flags & FL_CROUCHING) diff --git a/src/shared/cstrike/w_awp.c b/src/shared/cstrike/w_awp.c index 6e65b2f6..b294712a 100644 --- a/src/shared/cstrike/w_awp.c +++ b/src/shared/cstrike/w_awp.c @@ -181,6 +181,7 @@ w_awp_primary(void) View_SetMuzzleflash(MUZZLE_RIFLE); #else pl.awp_mag--; + TraceAttack_SetPenetrationPower(2); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 115, [accuracy,accuracy], WEAPON_AWP); if (self.flags & FL_CROUCHING) diff --git a/src/shared/cstrike/w_deagle.c b/src/shared/cstrike/w_deagle.c index 5cc1a38e..65cdf870 100644 --- a/src/shared/cstrike/w_deagle.c +++ b/src/shared/cstrike/w_deagle.c @@ -136,6 +136,7 @@ w_deagle_primary(void) View_SetMuzzleflash(MUZZLE_RIFLE); #else pl.deagle_mag--; + TraceAttack_SetPenetrationPower(1); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 54, [accuracy,accuracy], WEAPON_DEAGLE); if (self.flags & FL_CROUCHING) diff --git a/src/shared/cstrike/w_elites.c b/src/shared/cstrike/w_elites.c index 1765ee32..e8349a14 100644 --- a/src/shared/cstrike/w_elites.c +++ b/src/shared/cstrike/w_elites.c @@ -146,6 +146,7 @@ w_elites_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 45, [accuracy,accuracy], WEAPON_ELITES); pl.elites_mag--; diff --git a/src/shared/cstrike/w_fiveseven.c b/src/shared/cstrike/w_fiveseven.c index 398a3392..8ee2523f 100644 --- a/src/shared/cstrike/w_fiveseven.c +++ b/src/shared/cstrike/w_fiveseven.c @@ -135,6 +135,7 @@ w_fiveseven_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 25, [accuracy,accuracy], WEAPON_FIVESEVEN); pl.fiveseven_mag--; diff --git a/src/shared/cstrike/w_g3sg1.c b/src/shared/cstrike/w_g3sg1.c index 466e0eae..ab995f33 100644 --- a/src/shared/cstrike/w_g3sg1.c +++ b/src/shared/cstrike/w_g3sg1.c @@ -130,6 +130,7 @@ w_g3sg1_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(2); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 80, [accuracy,accuracy], WEAPON_G3SG1); pl.g3sg1_mag--; diff --git a/src/shared/cstrike/w_glock18.c b/src/shared/cstrike/w_glock18.c index 807f28f7..ebb00406 100644 --- a/src/shared/cstrike/w_glock18.c +++ b/src/shared/cstrike/w_glock18.c @@ -153,6 +153,7 @@ w_glock18_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 25, [accuracy,accuracy], WEAPON_GLOCK18); pl.glock18_mag--; diff --git a/src/shared/cstrike/w_m3.c b/src/shared/cstrike/w_m3.c index 1ec1a0fc..370d49fb 100644 --- a/src/shared/cstrike/w_m3.c +++ b/src/shared/cstrike/w_m3.c @@ -140,6 +140,7 @@ w_m3_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(9, pl.origin + pl.view_ofs, 26, [accuracy,accuracy], WEAPON_M3); pl.m3_mag--; diff --git a/src/shared/cstrike/w_m4a1.c b/src/shared/cstrike/w_m4a1.c index e220bfb2..fe230bb3 100644 --- a/src/shared/cstrike/w_m4a1.c +++ b/src/shared/cstrike/w_m4a1.c @@ -164,6 +164,7 @@ w_m4a1_primary(void) Sound_Play(pl, CHAN_WEAPON, "weapon_m4a1.fire"); } + TraceAttack_SetPenetrationPower(1); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 33, [accuracy,accuracy], WEAPON_M4A1); if (self.flags & FL_CROUCHING) diff --git a/src/shared/cstrike/w_mac10.c b/src/shared/cstrike/w_mac10.c index 211884be..e28c517d 100644 --- a/src/shared/cstrike/w_mac10.c +++ b/src/shared/cstrike/w_mac10.c @@ -131,6 +131,7 @@ w_mac10_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 29, [accuracy,accuracy], WEAPON_MAC10); pl.mac10_mag--; diff --git a/src/shared/cstrike/w_mp5.c b/src/shared/cstrike/w_mp5.c index e4f08b14..22be80d8 100644 --- a/src/shared/cstrike/w_mp5.c +++ b/src/shared/cstrike/w_mp5.c @@ -135,6 +135,7 @@ w_mp5_primary(void) return; } + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 26, [accuracy,accuracy], WEAPON_MP5); pl.mp5_mag--; diff --git a/src/shared/cstrike/w_p228.c b/src/shared/cstrike/w_p228.c index 2140d558..4e897aab 100644 --- a/src/shared/cstrike/w_p228.c +++ b/src/shared/cstrike/w_p228.c @@ -139,6 +139,7 @@ w_p228_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 40, [accuracy,accuracy], WEAPON_P228); pl.p228_mag--; diff --git a/src/shared/cstrike/w_p90.c b/src/shared/cstrike/w_p90.c index 731a4fe6..95d4687e 100644 --- a/src/shared/cstrike/w_p90.c +++ b/src/shared/cstrike/w_p90.c @@ -132,6 +132,7 @@ w_p90_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 26, [accuracy,accuracy], WEAPON_P90); pl.p90_mag--; diff --git a/src/shared/cstrike/w_para.c b/src/shared/cstrike/w_para.c index 01160f04..d2b06aaa 100644 --- a/src/shared/cstrike/w_para.c +++ b/src/shared/cstrike/w_para.c @@ -131,6 +131,7 @@ w_para_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(1); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 35, [accuracy,accuracy], WEAPON_PARA); pl.para_mag--; diff --git a/src/shared/cstrike/w_scout.c b/src/shared/cstrike/w_scout.c index 94304e43..c8f7a9b3 100644 --- a/src/shared/cstrike/w_scout.c +++ b/src/shared/cstrike/w_scout.c @@ -180,6 +180,7 @@ w_scout_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(2); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 75, [accuracy,accuracy], WEAPON_SCOUT); pl.scout_mag--; diff --git a/src/shared/cstrike/w_sg550.c b/src/shared/cstrike/w_sg550.c index 72cbd5b9..3a5528c8 100644 --- a/src/shared/cstrike/w_sg550.c +++ b/src/shared/cstrike/w_sg550.c @@ -131,6 +131,7 @@ w_sg550_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(1); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 70, [accuracy,accuracy], WEAPON_SG550); pl.sg550_mag--; diff --git a/src/shared/cstrike/w_sg552.c b/src/shared/cstrike/w_sg552.c index b21f21a1..3dbd5ba2 100644 --- a/src/shared/cstrike/w_sg552.c +++ b/src/shared/cstrike/w_sg552.c @@ -132,6 +132,7 @@ w_sg552_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(1); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 33, [accuracy,accuracy], WEAPON_SG552); pl.sg552_mag--; diff --git a/src/shared/cstrike/w_tmp.c b/src/shared/cstrike/w_tmp.c index ee282f1c..0b0d4fbb 100644 --- a/src/shared/cstrike/w_tmp.c +++ b/src/shared/cstrike/w_tmp.c @@ -132,6 +132,7 @@ w_tmp_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 26, [accuracy,accuracy], WEAPON_TMP); pl.tmp_mag--; diff --git a/src/shared/cstrike/w_ump45.c b/src/shared/cstrike/w_ump45.c index 176c17ea..34faf977 100644 --- a/src/shared/cstrike/w_ump45.c +++ b/src/shared/cstrike/w_ump45.c @@ -132,6 +132,7 @@ w_ump45_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 30, [accuracy,accuracy], WEAPON_UMP45); pl.ump45_mag--; diff --git a/src/shared/cstrike/w_usp45.c b/src/shared/cstrike/w_usp45.c index 44c32996..f0ea002c 100644 --- a/src/shared/cstrike/w_usp45.c +++ b/src/shared/cstrike/w_usp45.c @@ -169,6 +169,7 @@ w_usp45_primary(void) Sound_Play(pl, CHAN_WEAPON, "weapon_usp45.fire"); } + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 33, [accuracy,accuracy], WEAPON_USP45); if (self.flags & FL_CROUCHING) diff --git a/src/shared/cstrike/w_xm1014.c b/src/shared/cstrike/w_xm1014.c index 6f7d6e2b..e07bebfa 100644 --- a/src/shared/cstrike/w_xm1014.c +++ b/src/shared/cstrike/w_xm1014.c @@ -142,6 +142,7 @@ w_xm1014_primary(void) pl.a_ammo1--; View_SetMuzzleflash(MUZZLE_RIFLE); #else + TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(6, pl.origin + pl.view_ofs, 22, [accuracy,accuracy], WEAPON_XM1014); pl.xm1014_mag--;