From bfb660db02ac2839727d48a3925922566c9d338e Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Wed, 17 Mar 2021 14:35:56 +0100 Subject: [PATCH] Client: Add shell ejection code to WEAPON_GLOCK and WEAPON_MP5 --- src/client/defs.h | 7 ++++++- src/client/view.qc | 1 - src/server/damage.qc | 12 ++++-------- src/shared/w_glock.qc | 2 ++ src/shared/w_mp5.qc | 1 + 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/client/defs.h b/src/client/defs.h index 60dd330..7856999 100644 --- a/src/client/defs.h +++ b/src/client/defs.h @@ -39,7 +39,12 @@ struct entity m_eViewModel; entity m_eMuzzleflash; int m_iVMBones; - int m_iVMEjectBone; + + /* viewmodel shell ejection */ + float m_fEjectModel; + vector m_vecEjectPos; + vector m_vecEjectVel; + int m_iLastWeapon; int m_iOldWeapon; float m_flBobTime; diff --git a/src/client/view.qc b/src/client/view.qc index 5592181..0980460 100644 --- a/src/client/view.qc +++ b/src/client/view.qc @@ -47,5 +47,4 @@ View_UpdateWeapon(entity vm, entity mflash) skel_delete(mflash.skeletonindex); mflash.skeletonindex = skel_create(vm.modelindex); pSeat->m_iVMBones = skel_get_numbones(mflash.skeletonindex) + 1; - pSeat->m_iVMEjectBone = pSeat->m_iVMBones + 1; } diff --git a/src/server/damage.qc b/src/server/damage.qc index 73cd380..c0789a8 100644 --- a/src/server/damage.qc +++ b/src/server/damage.qc @@ -137,20 +137,16 @@ Damage_Radius(vector org, entity attacker, float dmg, float r, int check, int w) /* don't bother if it's not anywhere near us */ dist = vlen(org - pos); - if (dist > r) { + if (dist > r) continue; - } /* can we physically hit this thing? */ - if (Damage_CheckTrace(e, org) == FALSE) { - if (check == TRUE) { + if (check == TRUE) + if (Damage_CheckTrace(e, org) == FALSE) continue; - } - } /* calculate new damage values */ - diff = vlen(org - pos); - diff = (r - diff) / r; + diff = (r - dist) / r; new_dmg = rint(dmg * diff); if (diff > 0) { diff --git a/src/shared/w_glock.qc b/src/shared/w_glock.qc index d6918cf..a152896 100644 --- a/src/shared/w_glock.qc +++ b/src/shared/w_glock.qc @@ -138,6 +138,7 @@ w_glock_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_SMALL); + View_EjectShellPos(SHELL_DEFAULT, [26,8,-32], [0, 80, 100]); Weapons_ViewPunchAngle([-2,0,0]); if (pl.glock_mag) { @@ -178,6 +179,7 @@ w_glock_secondary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_SMALL); Weapons_ViewPunchAngle([-2,0,0]); + View_EjectShellPos(SHELL_DEFAULT, [26,8,-32], [0, 80, 100]); if (pl.glock_mag) { Weapons_ViewAnimation(GLOCK_SHOOT); diff --git a/src/shared/w_mp5.qc b/src/shared/w_mp5.qc index 6f8a882..90b0531 100644 --- a/src/shared/w_mp5.qc +++ b/src/shared/w_mp5.qc @@ -138,6 +138,7 @@ w_mp5_primary(void) #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); + View_EjectShellPos(SHELL_DEFAULT, [32,8,-32], [0, 80, 100]); #else /* singleplayer is more accurate */ if (cvar("sv_playerslots") == 1) {