From ef1e86ee5e68907d9cdc353beb1aa1a537de6014 Mon Sep 17 00:00:00 2001 From: Agiel Date: Sun, 8 Sep 2024 16:57:38 +0200 Subject: [PATCH] Spread parity (#560) * Parity spread values * Add sv_neo_accuracy_scale cvar for future playtesting * Cleanup of weapon classes to eliminate duplicate code --- .../game/shared/neo/weapons/weapon_aa13.cpp | 96 +------- mp/src/game/shared/neo/weapons/weapon_aa13.h | 13 - .../game/shared/neo/weapons/weapon_jitte.cpp | 106 -------- mp/src/game/shared/neo/weapons/weapon_jitte.h | 15 -- .../game/shared/neo/weapons/weapon_jittes.cpp | 106 -------- .../game/shared/neo/weapons/weapon_jittes.h | 15 -- .../game/shared/neo/weapons/weapon_knife.cpp | 16 +- mp/src/game/shared/neo/weapons/weapon_knife.h | 2 - .../game/shared/neo/weapons/weapon_kyla.cpp | 10 +- mp/src/game/shared/neo/weapons/weapon_kyla.h | 13 +- mp/src/game/shared/neo/weapons/weapon_m41.cpp | 95 ------- mp/src/game/shared/neo/weapons/weapon_m41.h | 20 +- .../game/shared/neo/weapons/weapon_m41l.cpp | 76 ------ mp/src/game/shared/neo/weapons/weapon_m41l.h | 12 - .../game/shared/neo/weapons/weapon_m41s.cpp | 78 ------ mp/src/game/shared/neo/weapons/weapon_m41s.h | 12 - .../game/shared/neo/weapons/weapon_milso.cpp | 80 ------ mp/src/game/shared/neo/weapons/weapon_milso.h | 21 +- mp/src/game/shared/neo/weapons/weapon_mpn.cpp | 107 +------- mp/src/game/shared/neo/weapons/weapon_mpn.h | 15 -- .../game/shared/neo/weapons/weapon_mpns.cpp | 105 -------- mp/src/game/shared/neo/weapons/weapon_mpns.h | 23 +- mp/src/game/shared/neo/weapons/weapon_mx.cpp | 104 -------- mp/src/game/shared/neo/weapons/weapon_mx.h | 23 +- mp/src/game/shared/neo/weapons/weapon_mxs.cpp | 104 -------- mp/src/game/shared/neo/weapons/weapon_mxs.h | 23 +- .../weapons/weapon_neobasecombatweapon.cpp | 231 +++++++++++------- .../neo/weapons/weapon_neobasecombatweapon.h | 50 ++-- .../neo/weapons/weapon_neobasemeleeweapon.cpp | 2 - .../neo/weapons/weapon_neobasemeleeweapon.h | 26 -- .../neo/weapons/weapon_neobaseweapon.cpp | 31 --- .../shared/neo/weapons/weapon_neobaseweapon.h | 88 ------- .../game/shared/neo/weapons/weapon_pbk56s.cpp | 2 +- .../game/shared/neo/weapons/weapon_pbk56s.h | 6 +- mp/src/game/shared/neo/weapons/weapon_pz.cpp | 104 -------- mp/src/game/shared/neo/weapons/weapon_pz.h | 23 +- .../game/shared/neo/weapons/weapon_smac.cpp | 104 -------- mp/src/game/shared/neo/weapons/weapon_smac.h | 23 +- mp/src/game/shared/neo/weapons/weapon_srm.cpp | 105 -------- mp/src/game/shared/neo/weapons/weapon_srm.h | 23 +- .../game/shared/neo/weapons/weapon_srms.cpp | 105 -------- mp/src/game/shared/neo/weapons/weapon_srms.h | 23 +- mp/src/game/shared/neo/weapons/weapon_srs.cpp | 80 +----- mp/src/game/shared/neo/weapons/weapon_srs.h | 27 +- .../game/shared/neo/weapons/weapon_supa7.cpp | 10 +- mp/src/game/shared/neo/weapons/weapon_supa7.h | 5 +- .../game/shared/neo/weapons/weapon_tachi.cpp | 80 +----- mp/src/game/shared/neo/weapons/weapon_tachi.h | 26 +- .../game/shared/neo/weapons/weapon_zr68c.cpp | 105 -------- mp/src/game/shared/neo/weapons/weapon_zr68c.h | 23 +- .../game/shared/neo/weapons/weapon_zr68l.cpp | 86 ------- mp/src/game/shared/neo/weapons/weapon_zr68l.h | 23 +- .../game/shared/neo/weapons/weapon_zr68s.cpp | 105 -------- mp/src/game/shared/neo/weapons/weapon_zr68s.h | 16 -- 54 files changed, 259 insertions(+), 2563 deletions(-) delete mode 100644 mp/src/game/shared/neo/weapons/weapon_neobasemeleeweapon.cpp delete mode 100644 mp/src/game/shared/neo/weapons/weapon_neobasemeleeweapon.h delete mode 100644 mp/src/game/shared/neo/weapons/weapon_neobaseweapon.cpp delete mode 100644 mp/src/game/shared/neo/weapons/weapon_neobaseweapon.h diff --git a/mp/src/game/shared/neo/weapons/weapon_aa13.cpp b/mp/src/game/shared/neo/weapons/weapon_aa13.cpp index 29cc6cf6f..c69d6634b 100644 --- a/mp/src/game/shared/neo/weapons/weapon_aa13.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_aa13.cpp @@ -43,87 +43,6 @@ CWeaponAA13::CWeaponAA13(void) // m_nNumShotsFired = 0; } -Activity CWeaponAA13::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - return ACT_VM_PRIMARYATTACK; - - if (m_nNumShotsFired < 2) - return ACT_VM_RECOIL1; - - if (m_nNumShotsFired < 3) - return ACT_VM_RECOIL2; - - return ACT_VM_RECOIL3; -} - -void CWeaponAA13::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - // Update the penalty time decay - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponAA13::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponAA13::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponAA13::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - CNEO_Player *pOwner = ToNEOPlayer((GetOwner())); - - if (!pOwner) - { - return; - } - - if (pOwner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - void CWeaponAA13::AddViewKick() { CNEO_Player *pOwner = ToNEOPlayer((GetOwner())); @@ -142,18 +61,13 @@ void CWeaponAA13::AddViewKick() pOwner->ViewPunch(viewPunch); } -void CWeaponAA13::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - void CWeaponAA13::PrimaryAttack(void) { // Combo of the neobasecombatweapon and the Supa7 attack - Assert(!ShootingIsPrevented()); - + if (ShootingIsPrevented()) + { + return; + } if (gpGlobals->curtime < m_flSoonestAttack) { return; @@ -204,6 +118,8 @@ void CWeaponAA13::PrimaryAttack(void) FireBulletsInfo_t info(5, vecSrc, vecAiming, vecSpread, MAX_TRACE_LENGTH, m_iPrimaryAmmoType); info.m_pAttacker = pPlayer; + m_flNextPrimaryAttack = m_flNextPrimaryAttack + GetFireRate(); + // Fire the bullets, and force the first shot to be perfectly accurate pPlayer->FireBullets(info); diff --git a/mp/src/game/shared/neo/weapons/weapon_aa13.h b/mp/src/game/shared/neo/weapons/weapon_aa13.h index ce80affe0..328d41b46 100644 --- a/mp/src/game/shared/neo/weapons/weapon_aa13.h +++ b/mp/src/game/shared/neo/weapons/weapon_aa13.h @@ -23,28 +23,15 @@ class CWeaponAA13 : public CNEOBaseCombatWeapon CWeaponAA13(void); - void UpdatePenaltyTime(void); - - virtual void ItemPostFrame(void) OVERRIDE; - virtual void ItemPreFrame(void) OVERRIDE; - virtual void ItemBusyFrame(void) OVERRIDE; virtual void PrimaryAttack(void) OVERRIDE; - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } virtual void AddViewKick(void) OVERRIDE; - void DryFire(void); virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_AA13; } virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 20; } virtual float GetSpeedScale(void) const OVERRIDE { return 145.0 / 170.0; } - Activity GetPrimaryAttackActivity(void) OVERRIDE; - - virtual const Vector& GetBulletSpread(void) OVERRIDE { static const Vector cone = VECTOR_CONE_7DEGREES; return cone; }; - protected: - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } private: diff --git a/mp/src/game/shared/neo/weapons/weapon_jitte.cpp b/mp/src/game/shared/neo/weapons/weapon_jitte.cpp index 791055f24..7e59b4bcd 100644 --- a/mp/src/game/shared/neo/weapons/weapon_jitte.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_jitte.cpp @@ -30,112 +30,6 @@ CWeaponJitte::CWeaponJitte() m_nNumShotsFired = 0; } -void CWeaponJitte::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponJitte::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponJitte::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponJitte::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, - 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponJitte::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponJitte::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponJitte::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponJitte::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponJitte::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_jitte.h b/mp/src/game/shared/neo/weapons/weapon_jitte.h index 72be765ca..c4eb77d1f 100644 --- a/mp/src/game/shared/neo/weapons/weapon_jitte.h +++ b/mp/src/game/shared/neo/weapons/weapon_jitte.h @@ -33,29 +33,14 @@ class CWeaponJitte : public CNEOBaseCombatWeapon CWeaponJitte(); - virtual void ItemPostFrame(void) OVERRIDE; - virtual void ItemPreFrame(void) OVERRIDE; - virtual void ItemBusyFrame(void) OVERRIDE; - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } virtual void AddViewKick(void) OVERRIDE; - void DryFire(void); - - virtual void Spawn(void) OVERRIDE; - virtual bool Deploy(void) OVERRIDE; virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_JITTE; } virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; } virtual float GetSpeedScale(void) const OVERRIDE { return 160.0 / 170.0; } - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void) OVERRIDE; - protected: - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 0.5f; } virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } private: diff --git a/mp/src/game/shared/neo/weapons/weapon_jittes.cpp b/mp/src/game/shared/neo/weapons/weapon_jittes.cpp index 12fae1436..cae6b1daa 100644 --- a/mp/src/game/shared/neo/weapons/weapon_jittes.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_jittes.cpp @@ -30,112 +30,6 @@ CWeaponJitteS::CWeaponJitteS() m_nNumShotsFired = 0; } -void CWeaponJitteS::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponJitteS::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponJitteS::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponJitteS::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, - 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponJitteS::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponJitteS::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponJitteS::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponJitteS::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponJitteS::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_jittes.h b/mp/src/game/shared/neo/weapons/weapon_jittes.h index 5b2420b05..3773d1f41 100644 --- a/mp/src/game/shared/neo/weapons/weapon_jittes.h +++ b/mp/src/game/shared/neo/weapons/weapon_jittes.h @@ -33,30 +33,15 @@ class CWeaponJitteS : public CNEOBaseCombatWeapon CWeaponJitteS(); - virtual void ItemPostFrame(void) OVERRIDE; - virtual void ItemPreFrame(void) OVERRIDE; - virtual void ItemBusyFrame(void) OVERRIDE; - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } virtual void AddViewKick(void) OVERRIDE; - void DryFire(void); - - virtual void Spawn(void) OVERRIDE; - virtual bool Deploy(void) OVERRIDE; virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_JITTE | NEO_WEP_SUPPRESSED; } virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; } virtual float GetSpeedScale(void) const OVERRIDE { return 160.0 / 170.0; } - void UpdatePenaltyTime(void); - - virtual Activity GetPrimaryAttackActivity(void) OVERRIDE; - protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 0.5f; } private: CWeaponJitteS(const CWeaponJitteS &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_knife.cpp b/mp/src/game/shared/neo/weapons/weapon_knife.cpp index dc8a16bd8..73887404d 100644 --- a/mp/src/game/shared/neo/weapons/weapon_knife.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_knife.cpp @@ -36,7 +36,7 @@ END_DATADESC() PRECACHE_WEAPON_REGISTER(weapon_knife); #ifdef GAME_DLL // NEO FIXME (Rain): fix these values -acttable_t CWeaponKnife::m_acttable[] = +acttable_t CWeaponKnife::m_acttable[] = { { ACT_MP_STAND_IDLE, ACT_IDLE_MELEE, false }, { ACT_MP_RUN, ACT_MP_RUN_MELEE, false }, @@ -79,16 +79,6 @@ void CWeaponKnife::Spawn() BaseClass::Spawn(); } -void CWeaponKnife::ItemPreFrame() -{ - BaseClass::ItemPreFrame(); -} - -void CWeaponKnife::ItemBusyFrame() -{ - BaseClass::ItemBusyFrame(); -} - void CWeaponKnife::ItemPostFrame() { ProcessAnimationEvents(); @@ -296,7 +286,7 @@ void CWeaponKnife::Hit(trace_t& traceHit, [[maybe_unused]] Activity nHitActivity Vector2D forward2D = Vector2D(forward.x, forward.y); forward2D.NormalizeInPlace(); - + Vector attackerToTarget = pHitEntity->GetAbsOrigin() - pPlayer->GetAbsOrigin(); Vector2D attackerToTarget2D = Vector2D(attackerToTarget.x, attackerToTarget.y); attackerToTarget2D.NormalizeInPlace(); @@ -372,4 +362,4 @@ bool CWeaponKnife::ImpactWater(const Vector &start, const Vector &end) } return true; -} \ No newline at end of file +} diff --git a/mp/src/game/shared/neo/weapons/weapon_knife.h b/mp/src/game/shared/neo/weapons/weapon_knife.h index 4e08e17b2..91d36b0bb 100644 --- a/mp/src/game/shared/neo/weapons/weapon_knife.h +++ b/mp/src/game/shared/neo/weapons/weapon_knife.h @@ -46,8 +46,6 @@ class CWeaponKnife : public CNEOBaseCombatWeapon #endif virtual void Spawn() final; - virtual void ItemPreFrame() final; - virtual void ItemBusyFrame() final; virtual void ItemPostFrame() final; virtual Activity GetPrimaryAttackActivity() final { return ACT_VM_HITCENTER; } diff --git a/mp/src/game/shared/neo/weapons/weapon_kyla.cpp b/mp/src/game/shared/neo/weapons/weapon_kyla.cpp index 9d9b7f8d4..b4cad54de 100644 --- a/mp/src/game/shared/neo/weapons/weapon_kyla.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_kyla.cpp @@ -50,8 +50,7 @@ void CWeaponKyla::PrimaryAttack(void) } else { - WeaponSound(EMPTY); - m_flNextPrimaryAttack = gpGlobals->curtime + GetFastestDryRefireTime(); + DryFire(); } return; @@ -111,11 +110,6 @@ void CWeaponKyla::PrimaryAttack(void) // HEV suit - indicate out of ammo condition pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); } -} - -void CWeaponKyla::ItemPostFrame() -{ - ProcessAnimationEvents(); - BaseClass::ItemPostFrame(); + m_flAccuracyPenalty = min(GetMaxAccuracyPenalty(), m_flAccuracyPenalty + GetAccuracyPenalty()); } diff --git a/mp/src/game/shared/neo/weapons/weapon_kyla.h b/mp/src/game/shared/neo/weapons/weapon_kyla.h index 2ab58ba2f..66185587d 100644 --- a/mp/src/game/shared/neo/weapons/weapon_kyla.h +++ b/mp/src/game/shared/neo/weapons/weapon_kyla.h @@ -23,20 +23,15 @@ class CWeaponKyla : public CNEOBaseCombatWeapon CWeaponKyla(void); - void ItemPostFrame(void); - virtual void PrimaryAttack(void) OVERRIDE; - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_KYLA; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } - virtual float GetSpeedScale(void) const { return 1.0; } + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_KYLA; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } + + virtual float GetSpeedScale(void) const override { return 1.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 0.5f; } private: CWeaponKyla(const CWeaponKyla &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_m41.cpp b/mp/src/game/shared/neo/weapons/weapon_m41.cpp index 8b91f1a3f..658f6a0de 100644 --- a/mp/src/game/shared/neo/weapons/weapon_m41.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_m41.cpp @@ -30,101 +30,6 @@ CWeaponM41::CWeaponM41() m_nNumShotsFired = 0; } -void CWeaponM41::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponM41::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, - 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponM41::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponM41::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponM41::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponM41::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponM41::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_m41.h b/mp/src/game/shared/neo/weapons/weapon_m41.h index 26b5f29ec..6fbe9afe2 100644 --- a/mp/src/game/shared/neo/weapons/weapon_m41.h +++ b/mp/src/game/shared/neo/weapons/weapon_m41.h @@ -33,27 +33,15 @@ class CWeaponM41 : public CNEOBaseCombatWeapon CWeaponM41(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_M41; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_M41; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } - virtual float GetSpeedScale(void) const { return 145.0 / 170.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 145.0 / 170.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } private: CWeaponM41(const CWeaponM41& other); diff --git a/mp/src/game/shared/neo/weapons/weapon_m41l.cpp b/mp/src/game/shared/neo/weapons/weapon_m41l.cpp index 65ef12c74..81d90cd5d 100644 --- a/mp/src/game/shared/neo/weapons/weapon_m41l.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_m41l.cpp @@ -30,82 +30,6 @@ CWeaponM41L::CWeaponM41L() m_nNumShotsFired = 0; } -void CWeaponM41L::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponM41L::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if ((owner->m_nButtons & IN_ATTACK) == false) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, - 0.0f, GetMaxAccuracyPenalty()); - } - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - - if (m_flSoonestAttack > gpGlobals->curtime) - { - m_flSoonestAttack -= (gpGlobals->curtime - m_flLastAttackTime); - } -} - -void CWeaponM41L::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponM41L::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponM41L::ItemPostFrame() -{ - BaseClass::ItemPostFrame(); -} - -Activity CWeaponM41L::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponM41L::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_m41l.h b/mp/src/game/shared/neo/weapons/weapon_m41l.h index 55d1b394d..8e582a68d 100644 --- a/mp/src/game/shared/neo/weapons/weapon_m41l.h +++ b/mp/src/game/shared/neo/weapons/weapon_m41l.h @@ -33,27 +33,15 @@ class CWeaponM41L : public CNEOBaseCombatWeapon CWeaponM41L(); - virtual void ItemPostFrame(void) OVERRIDE; - virtual void ItemPreFrame(void) OVERRIDE; - virtual void ItemBusyFrame(void) OVERRIDE; - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } virtual void AddViewKick(void) OVERRIDE; - void DryFire(void); virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_M41_L; } virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; } virtual float GetSpeedScale(void) const OVERRIDE { return 145.0 / 170.0; } - void UpdatePenaltyTime(void); - - virtual Activity GetPrimaryAttackActivity(void) OVERRIDE; - protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } private: CWeaponM41L(const CWeaponM41L& other); diff --git a/mp/src/game/shared/neo/weapons/weapon_m41s.cpp b/mp/src/game/shared/neo/weapons/weapon_m41s.cpp index 41fb48917..1878df2ef 100644 --- a/mp/src/game/shared/neo/weapons/weapon_m41s.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_m41s.cpp @@ -30,84 +30,6 @@ CWeaponM41S::CWeaponM41S() m_nNumShotsFired = 0; } -void CWeaponM41S::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponM41S::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if ((owner->m_nButtons & IN_ATTACK) == false) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, - 0.0f, GetMaxAccuracyPenalty()); - } - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - - if (m_flSoonestAttack > gpGlobals->curtime) - { - m_flSoonestAttack -= (gpGlobals->curtime - m_flLastAttackTime); - } -} - -void CWeaponM41S::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponM41S::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponM41S::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); -} - -Activity CWeaponM41S::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponM41S::AddViewKick() { auto pOwner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_m41s.h b/mp/src/game/shared/neo/weapons/weapon_m41s.h index eccef3e7d..c45013dd0 100644 --- a/mp/src/game/shared/neo/weapons/weapon_m41s.h +++ b/mp/src/game/shared/neo/weapons/weapon_m41s.h @@ -33,27 +33,15 @@ class CWeaponM41S : public CNEOBaseCombatWeapon CWeaponM41S(); - virtual void ItemPostFrame(void) OVERRIDE; - virtual void ItemPreFrame(void) OVERRIDE; - virtual void ItemBusyFrame(void) OVERRIDE; - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } virtual void AddViewKick(void) OVERRIDE; - void DryFire(void); virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_M41_S | NEO_WEP_SUPPRESSED; } virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; } virtual float GetSpeedScale(void) const OVERRIDE { return 145.0 / 170.0; } - void UpdatePenaltyTime(void); - - virtual Activity GetPrimaryAttackActivity(void) OVERRIDE; - protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } private: CWeaponM41S(const CWeaponM41S& other); diff --git a/mp/src/game/shared/neo/weapons/weapon_milso.cpp b/mp/src/game/shared/neo/weapons/weapon_milso.cpp index 9a6d5fee7..d05b91455 100644 --- a/mp/src/game/shared/neo/weapons/weapon_milso.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_milso.cpp @@ -27,89 +27,9 @@ CWeaponMilso::CWeaponMilso() m_flSoonestAttack = gpGlobals->curtime; m_flAccuracyPenalty = 0.0f; - m_fMinRange1 = 24; - m_fMaxRange2 = 1500; - m_fMinRange2 = 24; - m_fMaxRange2 = 200; - m_bFiresUnderwater = true; } -void CWeaponMilso::Precache(void) -{ - BaseClass::Precache(); -} - -void CWeaponMilso::DryFire(void) -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponMilso::UpdatePenaltyTime(void) -{ - CBasePlayer *pOwner = ToBasePlayer(GetOwner()); - - if (pOwner == NULL) - return; - - // Check our penalty time decay - if ((pOwner->m_nButtons & IN_ATTACK) == false) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - - if (m_flSoonestAttack > gpGlobals->curtime) - { - m_flSoonestAttack -= (gpGlobals->curtime - m_flLastAttackTime); - } -} - -void CWeaponMilso::ItemPreFrame(void) -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponMilso::ItemBusyFrame(void) -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponMilso::ItemPostFrame(void) -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); -} - -Activity CWeaponMilso::GetPrimaryAttackActivity(void) -{ - if (m_nNumShotsFired < 1) - return ACT_VM_PRIMARYATTACK; - - if (m_nNumShotsFired < 2) - return ACT_VM_RECOIL1; - - if (m_nNumShotsFired < 3) - return ACT_VM_RECOIL2; - - return ACT_VM_RECOIL3; -} - void CWeaponMilso::AddViewKick(void) { CBasePlayer *pPlayer = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_milso.h b/mp/src/game/shared/neo/weapons/weapon_milso.h index 2c6bf71f4..b70fd7923 100644 --- a/mp/src/game/shared/neo/weapons/weapon_milso.h +++ b/mp/src/game/shared/neo/weapons/weapon_milso.h @@ -33,28 +33,15 @@ class CWeaponMilso : public CNEOBaseCombatWeapon CWeaponMilso(); - void Precache(void); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - void UpdatePenaltyTime(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_MILSO | NEO_WEP_SUPPRESSED; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } - Activity GetPrimaryAttackActivity(void); - - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_MILSO | NEO_WEP_SUPPRESSED; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } - - virtual float GetSpeedScale(void) const { return 1.0; } + virtual float GetSpeedScale(void) const override { return 1.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 0.2f; } private: CWeaponMilso(const CWeaponMilso &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_mpn.cpp b/mp/src/game/shared/neo/weapons/weapon_mpn.cpp index d72bad49a..11b6d60ba 100644 --- a/mp/src/game/shared/neo/weapons/weapon_mpn.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_mpn.cpp @@ -30,111 +30,6 @@ CWeaponMPN::CWeaponMPN() m_nNumShotsFired = 0; } -void CWeaponMPN::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponMPN::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponMPN::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponMPN::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponMPN::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponMPN::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponMPN::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponMPN::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponMPN::AddViewKick() { auto pOwner = ToBasePlayer(GetOwner()); @@ -151,4 +46,4 @@ void CWeaponMPN::AddViewKick() }; pOwner->ViewPunch(viewPunch); -} \ No newline at end of file +} diff --git a/mp/src/game/shared/neo/weapons/weapon_mpn.h b/mp/src/game/shared/neo/weapons/weapon_mpn.h index b06ce1d74..a34f45fd3 100644 --- a/mp/src/game/shared/neo/weapons/weapon_mpn.h +++ b/mp/src/game/shared/neo/weapons/weapon_mpn.h @@ -33,30 +33,15 @@ class CWeaponMPN : public CNEOBaseCombatWeapon CWeaponMPN(); - virtual void ItemPostFrame(void) OVERRIDE; - virtual void ItemPreFrame(void) OVERRIDE; - virtual void ItemBusyFrame(void) OVERRIDE; - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } virtual void AddViewKick(void) OVERRIDE; - void DryFire(void); - - virtual void Spawn(void) OVERRIDE; - virtual bool Deploy(void) OVERRIDE; virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_MPN; } virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; } virtual float GetSpeedScale(void) const OVERRIDE { return 1.0; } - void UpdatePenaltyTime(void); - - virtual Activity GetPrimaryAttackActivity(void) OVERRIDE; - protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.025f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 0.5f; } private: CWeaponMPN(const CWeaponMPN &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_mpns.cpp b/mp/src/game/shared/neo/weapons/weapon_mpns.cpp index 8d9a82f49..af0f6a9ed 100644 --- a/mp/src/game/shared/neo/weapons/weapon_mpns.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_mpns.cpp @@ -30,111 +30,6 @@ CWeaponMPN_S::CWeaponMPN_S() m_nNumShotsFired = 0; } -void CWeaponMPN_S::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponMPN_S::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponMPN_S::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponMPN_S::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponMPN_S::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponMPN_S::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponMPN_S::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponMPN_S::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponMPN_S::AddViewKick() { auto pOwner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_mpns.h b/mp/src/game/shared/neo/weapons/weapon_mpns.h index 8ddc5bc48..5c2a10764 100644 --- a/mp/src/game/shared/neo/weapons/weapon_mpns.h +++ b/mp/src/game/shared/neo/weapons/weapon_mpns.h @@ -33,30 +33,15 @@ class CWeaponMPN_S : public CNEOBaseCombatWeapon CWeaponMPN_S(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - virtual void Spawn(void); - virtual bool Deploy(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_MPN_S | NEO_WEP_SUPPRESSED; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_MPN_S | NEO_WEP_SUPPRESSED; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } - - virtual float GetSpeedScale(void) const { return 1.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 1.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.025f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 0.5f; } private: CWeaponMPN_S(const CWeaponMPN_S &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_mx.cpp b/mp/src/game/shared/neo/weapons/weapon_mx.cpp index 5313434dd..65a812580 100644 --- a/mp/src/game/shared/neo/weapons/weapon_mx.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_mx.cpp @@ -30,110 +30,6 @@ CWeaponMX::CWeaponMX() m_nNumShotsFired = 0; } -void CWeaponMX::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponMX::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponMX::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponMX::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponMX::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponMX::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponMX::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponMX::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponMX::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_mx.h b/mp/src/game/shared/neo/weapons/weapon_mx.h index 0a230e4c3..d34e7aa71 100644 --- a/mp/src/game/shared/neo/weapons/weapon_mx.h +++ b/mp/src/game/shared/neo/weapons/weapon_mx.h @@ -33,30 +33,15 @@ class CWeaponMX : public CNEOBaseCombatWeapon CWeaponMX(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - virtual void Spawn(void); - virtual bool Deploy(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_MX; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_MX; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } - - virtual float GetSpeedScale(void) const { return 145.0 / 170.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 145.0 / 170.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 0.5f; } private: CWeaponMX(const CWeaponMX &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_mxs.cpp b/mp/src/game/shared/neo/weapons/weapon_mxs.cpp index db0f6c97d..71eb4068d 100644 --- a/mp/src/game/shared/neo/weapons/weapon_mxs.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_mxs.cpp @@ -30,110 +30,6 @@ CWeaponMX_S::CWeaponMX_S() m_nNumShotsFired = 0; } -void CWeaponMX_S::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponMX_S::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponMX_S::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponMX_S::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponMX_S::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponMX_S::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponMX_S::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponMX_S::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponMX_S::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_mxs.h b/mp/src/game/shared/neo/weapons/weapon_mxs.h index 9df123230..009895a9a 100644 --- a/mp/src/game/shared/neo/weapons/weapon_mxs.h +++ b/mp/src/game/shared/neo/weapons/weapon_mxs.h @@ -33,30 +33,15 @@ class CWeaponMX_S : public CNEOBaseCombatWeapon CWeaponMX_S(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - virtual void Spawn(void); - virtual bool Deploy(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_MX_S | NEO_WEP_SUPPRESSED; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_MX_S | NEO_WEP_SUPPRESSED; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } - - virtual float GetSpeedScale(void) const { return 145.0 / 170.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 145.0 / 170.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 0.5f; } private: CWeaponMX_S(const CWeaponMX_S &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_neobasecombatweapon.cpp b/mp/src/game/shared/neo/weapons/weapon_neobasecombatweapon.cpp index 37c178d97..556ffab63 100644 --- a/mp/src/game/shared/neo/weapons/weapon_neobasecombatweapon.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_neobasecombatweapon.cpp @@ -67,6 +67,8 @@ BEGIN_DATADESC( CNEOBaseCombatWeapon ) END_DATADESC() #endif +ConVar sv_neo_accuracy_penalty_scale("sv_neo_accuracy_penalty_scale", "1.0", FCVAR_REPLICATED, "Scales the accuracy penalty per shot.", true, 0.0f, true, 2.0f); + const char *GetWeaponByLoadoutId(int id) { if (id < 0 || id >= NEO_WEP_LOADOUT_ID_COUNT) @@ -113,7 +115,7 @@ void CNEOBaseCombatWeapon::Spawn() // If this fires, either the enum bit mask has overflowed, // this derived gun has no valid NeoBitFlags set, // or we are spawning an instance of this base class for some reason. - Assert(GetNeoWepBits() != NEO_WEP_INVALID); + Assert(GetNeoWepBits() != NEO_WEP_INVALID); BaseClass::Spawn(); @@ -329,6 +331,31 @@ void CNEOBaseCombatWeapon::CheckReload(void) BaseClass::CheckReload(); } +void CNEOBaseCombatWeapon::UpdateInaccuracy() +{ + CNEO_Player *pOwner = static_cast(ToBasePlayer(GetOwner())); + if (!pOwner) + return; + + if (pOwner->IsAirborne()) + { + m_flAccuracyPenalty += gpGlobals->frametime * 3.0; + } + + if (!pOwner->IsInAim() && pOwner->GetAbsVelocity().Length2D() > 5.0) + { + m_flAccuracyPenalty += gpGlobals->frametime * 2.0; + } + + m_flAccuracyPenalty -= gpGlobals->frametime * GetAccuracyPenaltyDecay(); + m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); +} + +void CNEOBaseCombatWeapon::ItemPreFrame(void) +{ + UpdateInaccuracy(); +} + // Handles lowering the weapon view model when character is sprinting void CNEOBaseCombatWeapon::ProcessAnimationEvents(void) { @@ -375,6 +402,8 @@ void CNEOBaseCombatWeapon::ItemPostFrame(void) if (!pOwner) return; + ProcessAnimationEvents(); + UpdateAutoFire(); //Track the duration of the fire @@ -410,7 +439,7 @@ void CNEOBaseCombatWeapon::ItemPostFrame(void) else { // FIXME: This isn't necessarily true if the weapon doesn't have a secondary fire! - // For instance, the crossbow doesn't have a 'real' secondary fire, but it still + // For instance, the crossbow doesn't have a 'real' secondary fire, but it still // stops the crossbow from firing on the 360 if the player chooses to hold down their // zoom button. (sjb) Orange Box 7/25/2007 #if !defined(CLIENT_DLL) @@ -442,7 +471,13 @@ void CNEOBaseCombatWeapon::ItemPostFrame(void) ((UsesClipsForAmmo1() && m_iClip1 <= 0) || (!UsesClipsForAmmo1() && m_iPrimaryAmmoCount <= 0))) { if (m_bRoundChambered) // bolt action rifles can have this value set to false, prevents empty clicking when holding the attack button when looking through scope to prevent bolting/reloading + { HandleFireOnEmpty(); + } + else + { + DryFire(); + } } else if (pOwner->GetWaterLevel() == 3 && m_bFiresUnderwater == false) { @@ -501,103 +536,92 @@ void CNEOBaseCombatWeapon::ItemPostFrame(void) } } -ConVar sv_neo_wep_acc_penalty_scale("sv_neo_wep_acc_penalty_scale", "7.5", FCVAR_REPLICATED, - "Temporary global neo wep accuracy penalty scaler.", true, 0.01, true, 9999.0); - -ConVar sv_neo_wep_cone_min_scale("sv_neo_wep_cone_min_scale", "0.01", FCVAR_REPLICATED, - "Temporary global neo wep bloom min cone scaler.", true, 0.01, true, 10.0); - -ConVar sv_neo_wep_cone_max_scale("sv_neo_wep_cone_max_scale", "0.7", FCVAR_REPLICATED, - "Temporary global neo wep bloom max cone scaler.", true, 0.01, true, 10.0); - -// NEO HACK/FIXME (Rain): Doing some temporary bloom accuracy scaling here for easier testing. -// Need to clean this up later once we have good values!! -#define TEMP_WEP_STR(name) #name -#define MAKE_TEMP_WEP_BLOOM_SCALER(weapon, defval) ConVar sv_neo_##weapon##_bloom_scale(TEMP_WEP_STR(sv_neo_##weapon##_bloom_scale), #defval, FCVAR_REPLICATED, TEMP_WEP_STR(Temporary weapon bloom scaler for #weapon), true, 0.01, true, 9999.0) - -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_jitte, 2); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_jittescoped, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_kyla, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_m41, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_m41l, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_m41s, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_milso, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_mpn, 20.0); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_mpn_unsilenced, 4.0); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_mx, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_mx_silenced, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_pz, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_smac, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_srm, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_srm_s, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_tachi, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_zr68c, 2.5); -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_zr68s, 2.5); -#ifdef INCLUDE_WEP_PBK -MAKE_TEMP_WEP_BLOOM_SCALER(weapon_pbk56s, 2.5); -#endif - -const Vector& CNEOBaseCombatWeapon::GetBulletSpread(void) +struct WeaponHandlingInfo_t { - static Vector cone; - - // NEO HACK/FIXME (Rain): Doing some temporary bloom accuracy scaling here for easier testing. - // Need to clean this up later once we have good values!! - const std::initializer_list bloomScalers = { - &sv_neo_weapon_jitte_bloom_scale, - &sv_neo_weapon_jittescoped_bloom_scale, - &sv_neo_weapon_kyla_bloom_scale, - &sv_neo_weapon_m41_bloom_scale, - &sv_neo_weapon_m41l_bloom_scale, - &sv_neo_weapon_m41s_bloom_scale, - &sv_neo_weapon_milso_bloom_scale, - &sv_neo_weapon_mpn_bloom_scale, - &sv_neo_weapon_mpn_unsilenced_bloom_scale, - &sv_neo_weapon_mx_bloom_scale, - &sv_neo_weapon_mx_silenced_bloom_scale, - &sv_neo_weapon_pz_bloom_scale, - &sv_neo_weapon_smac_bloom_scale, - &sv_neo_weapon_srm_bloom_scale, - &sv_neo_weapon_srm_s_bloom_scale, - &sv_neo_weapon_tachi_bloom_scale, - &sv_neo_weapon_zr68c_bloom_scale, - &sv_neo_weapon_zr68s_bloom_scale, -#ifdef INCLUDE_WEP_PBK - & sv_neo_weapon_pbk56s_bloom_scale, -#endif + NeoWepBits weaponID; + Vector minSpreadHip; + Vector maxSpreadHip; + Vector minSpreadAim; + Vector maxSpreadAim; + // TODO: recoil +}; + +const Vector &CNEOBaseCombatWeapon::GetBulletSpread(void) +{ + // TODO: This lookup could be more efficient with sequential IDs a la SDK, + // but we'll probably move this stuff to the weapon scripts anyway. + static const WeaponHandlingInfo_t handlingTable[] = { + {NEO_WEP_AA13, VECTOR_CONE_5DEGREES, VECTOR_CONE_5DEGREES, VECTOR_CONE_5DEGREES, VECTOR_CONE_5DEGREES}, + {NEO_WEP_JITTE, VECTOR_CONE_3DEGREES, VECTOR_CONE_10DEGREES, VECTOR_CONE_1DEGREES, VECTOR_CONE_3DEGREES}, + {NEO_WEP_JITTE_S, VECTOR_CONE_3DEGREES, VECTOR_CONE_10DEGREES, VECTOR_CONE_1DEGREES, VECTOR_CONE_3DEGREES}, + {NEO_WEP_KYLA, VECTOR_CONE_5DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_2DEGREES, VECTOR_CONE_4DEGREES}, + {NEO_WEP_M41, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_PRECALCULATED, VECTOR_CONE_3DEGREES}, + {NEO_WEP_M41_S, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_PRECALCULATED, VECTOR_CONE_3DEGREES}, + {NEO_WEP_MILSO, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_2DEGREES, VECTOR_CONE_4DEGREES}, + {NEO_WEP_MPN, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_1DEGREES, VECTOR_CONE_4DEGREES}, + {NEO_WEP_MPN_S, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_1DEGREES, VECTOR_CONE_4DEGREES}, + {NEO_WEP_MX, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_PRECALCULATED, VECTOR_CONE_3DEGREES}, + {NEO_WEP_MX_S, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_PRECALCULATED, VECTOR_CONE_3DEGREES}, + {NEO_WEP_PZ, VECTOR_CONE_2DEGREES, VECTOR_CONE_5DEGREES, VECTOR_CONE_1DEGREES / 2, VECTOR_CONE_2DEGREES}, + {NEO_WEP_SRM, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_1DEGREES, VECTOR_CONE_4DEGREES}, + {NEO_WEP_SRM_S, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_1DEGREES, VECTOR_CONE_4DEGREES}, + {NEO_WEP_SRS, VECTOR_CONE_7DEGREES, VECTOR_CONE_20DEGREES, VECTOR_CONE_PRECALCULATED, VECTOR_CONE_7DEGREES}, + {NEO_WEP_SUPA7, VECTOR_CONE_5DEGREES, VECTOR_CONE_5DEGREES, VECTOR_CONE_5DEGREES, VECTOR_CONE_5DEGREES}, + {NEO_WEP_TACHI, VECTOR_CONE_5DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_1DEGREES, VECTOR_CONE_4DEGREES}, + {NEO_WEP_ZR68_C, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_PRECALCULATED, VECTOR_CONE_3DEGREES}, + {NEO_WEP_ZR68_L, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_PRECALCULATED, VECTOR_CONE_2DEGREES}, + {NEO_WEP_ZR68_S, VECTOR_CONE_4DEGREES, VECTOR_CONE_7DEGREES, VECTOR_CONE_PRECALCULATED, VECTOR_CONE_3DEGREES}, }; - float wepSpecificBloomScale = 1.0f; - for (ConVar* scaler : bloomScalers) + + auto weaponHandling = handlingTable[0]; + for (WeaponHandlingInfo_t handling : handlingTable) { - if (V_strstr(scaler->GetName(), GetName())) + if (handling.weaponID & GetNeoWepBits()) { - wepSpecificBloomScale = scaler->GetFloat(); + weaponHandling = handling; break; } } + Assert(weaponHandling.weaponID & GetNeoWepBits()); - Assert(GetInnateInaccuracy() <= GetMaxAccuracyPenalty()); - - const float ramp = RemapValClamped(m_flAccuracyPenalty, - GetInnateInaccuracy(), - GetMaxAccuracyPenalty() * sv_neo_wep_acc_penalty_scale.GetFloat(), - 0.0f, - 1.0f); + CNEO_Player *pOwner = static_cast(ToBasePlayer(GetOwner())); + Assert(pOwner); // We lerp from very accurate to inaccurate over time - VectorLerp( - GetMinCone() * sv_neo_wep_cone_min_scale.GetFloat(), - GetMaxCone() * sv_neo_wep_cone_max_scale.GetFloat() * wepSpecificBloomScale, - ramp, - cone); + static Vector cone; + if (pOwner && pOwner->IsInAim()) + { + VectorLerp( + weaponHandling.minSpreadAim, + weaponHandling.maxSpreadAim, + m_flAccuracyPenalty, + cone); + } + else + { + VectorLerp( + weaponHandling.minSpreadHip, + weaponHandling.maxSpreadHip, + m_flAccuracyPenalty, + cone); + } return cone; } -void CNEOBaseCombatWeapon::PrimaryAttack(void) +void CNEOBaseCombatWeapon::DryFire() { - Assert(!ShootingIsPrevented()); + WeaponSound(EMPTY); + SendWeaponAnim(ACT_VM_DRYFIRE); + m_flNextPrimaryAttack = gpGlobals->curtime + GetFastestDryRefireTime(); // SequenceDuration(); +} +void CNEOBaseCombatWeapon::PrimaryAttack(void) +{ + if (ShootingIsPrevented()) + { + return; + } if (gpGlobals->curtime < m_flSoonestAttack) { return; @@ -615,9 +639,7 @@ void CNEOBaseCombatWeapon::PrimaryAttack(void) } else { - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - m_flNextPrimaryAttack = 0.2; + DryFire(); } return; } @@ -684,7 +706,7 @@ void CNEOBaseCombatWeapon::PrimaryAttack(void) info.m_vecDirShooting = pPlayer->GetAutoaimVector(AUTOAIM_SCALE_DEFAULT); - // To make the firing framerate independent, we may have to fire more than one bullet here on low-framerate systems, + // To make the firing framerate independent, we may have to fire more than one bullet here on low-framerate systems, // especially if the weapon we're firing has a really fast rate of fire. info.m_iShots = 0; float fireRate = GetFireRate(); @@ -719,7 +741,7 @@ void CNEOBaseCombatWeapon::PrimaryAttack(void) // Fire the bullets info.m_vecSpread = pPlayer->GetAttackSpread(this); #else - //!!!HACKHACK - what does the client want this function for? + //!!!HACKHACK - what does the client want this function for? info.m_vecSpread = GetActiveWeapon()->GetBulletSpread(); #endif // CLIENT_DLL @@ -736,7 +758,32 @@ void CNEOBaseCombatWeapon::PrimaryAttack(void) //Add our view kick in AddViewKick(); - m_flAccuracyPenalty += GetAccuracyPenalty(); + m_flAccuracyPenalty = min( + GetMaxAccuracyPenalty(), + m_flAccuracyPenalty + GetAccuracyPenalty() * sv_neo_accuracy_penalty_scale.GetFloat() + ); +} + +void CNEOBaseCombatWeapon::SecondaryAttack() +{ + if (!ShootingIsPrevented()) + { + BaseClass::SecondaryAttack(); + } +} + +Activity CNEOBaseCombatWeapon::GetPrimaryAttackActivity() +{ + if (m_nNumShotsFired < 1) + return ACT_VM_PRIMARYATTACK; + + if (m_nNumShotsFired < 2) + return ACT_VM_RECOIL1; + + if (m_nNumShotsFired < 3) + return ACT_VM_RECOIL2; + + return ACT_VM_RECOIL3; } bool CNEOBaseCombatWeapon::CanBePickedUpByClass(int classId) @@ -756,7 +803,7 @@ void CNEOBaseCombatWeapon::ProcessMuzzleFlashEvent() int iAttachment = -1; if (!GetBaseAnimating()) return; - + // Find the attachment point index iAttachment = GetBaseAnimating()->LookupAttachment("muzzle_flash"); if (iAttachment <= 0) @@ -812,7 +859,7 @@ static inline bool ShouldDrawLocalPlayerViewModel(void) } //----------------------------------------------------------------------------- -// Purpose: +// Purpose: // Output : Returns true on success, false on failure. //----------------------------------------------------------------------------- bool CNEOBaseCombatWeapon::ShouldDraw(void) @@ -862,7 +909,7 @@ int CNEOBaseCombatWeapon::DrawModel(int flags) C_BaseCombatCharacter* localPlayer = C_BasePlayer::GetLocalPlayer(); if (GetOwner() == localPlayer && ShouldDrawLocalPlayerViewModel()) return 0; - + return BaseClass::DrawModel(flags); } #endif diff --git a/mp/src/game/shared/neo/weapons/weapon_neobasecombatweapon.h b/mp/src/game/shared/neo/weapons/weapon_neobasecombatweapon.h index b78771931..7289a2b6a 100644 --- a/mp/src/game/shared/neo/weapons/weapon_neobasecombatweapon.h +++ b/mp/src/game/shared/neo/weapons/weapon_neobasecombatweapon.h @@ -53,13 +53,13 @@ enum NeoWepBits : NEO_WEP_BITS_UNDERLYING_TYPE { NEO_WEP_SCOPEDWEAPON = (static_cast(1) << 28), // Scoped weapons should OR this in their flags. NEO_WEP_THROWABLE = (static_cast(1) << 29), // Generic for grenades NEO_WEP_SUPPRESSED = (static_cast(1) << 30), // Suppressed weapons - + // NOTE!!! remember to update NEP_WEP_BITS_LAST_VALUE below, if editing this/these last values! NEO_WEP_EXPLOSIVE = (static_cast(1) << 31), // Generic for weapons that count as explosive kills on killfeed. #ifdef INCLUDE_WEP_PBK NEO_WEP_PBK56S = (static_cast (1) << 32), #endif - + #ifndef INCLUDE_WEP_PBK NEP_WEP_BITS_LAST_VALUE = NEO_WEP_EXPLOSIVE #else @@ -130,32 +130,35 @@ class CNEOBaseCombatWeapon : public CBaseHL2MPCombatWeapon #endif CNEOBaseCombatWeapon(); - virtual void Precache() OVERRIDE; + virtual void Precache() override; - virtual void Spawn(); - virtual void Equip(CBaseCombatCharacter* pOwner) OVERRIDE; - virtual void CheckReload(void); + virtual void Spawn() override; + virtual void Equip(CBaseCombatCharacter* pOwner) override; + virtual void CheckReload(void) override; - virtual bool Reload( void ); - virtual void FinishReload(void) OVERRIDE; + virtual bool Reload( void ) override; + virtual void FinishReload(void) override; - virtual bool CanBeSelected(void); + virtual bool CanBeSelected(void) override; virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { Assert(false); return NEO_WEP_INVALID; } // Should never call this base class; implement in children. virtual int GetNeoWepXPCost(const int neoClass) const { Assert(false); return 0; } // Should never call this base class; implement in children. virtual float GetSpeedScale(void) const { Assert(false); return 1.0; } // Should never call this base class; implement in children. - virtual void ItemPostFrame(void); + virtual void ItemPreFrame(void) override; + virtual void ItemPostFrame(void) override; + + virtual void PrimaryAttack(void) override; + virtual void SecondaryAttack(void) override; + + virtual void DryFire(void); - virtual void PrimaryAttack(void); + virtual Activity GetPrimaryAttackActivity(void) override; #ifdef CLIENT_DLL void DispatchMuzzleParticleEffect(int iAttachment); - virtual void ProcessMuzzleFlashEvent(void) OVERRIDE; + virtual void ProcessMuzzleFlashEvent(void) override; #endif - - virtual float GetInnateInaccuracy(void) const { return 0.0f; } // NEO TODO (Rain): make this abstract & implement some amount of inaccuracy (spread) for weapons? - bool IsGhost(void) const { return (GetNeoWepBits() & NEO_WEP_GHOST) ? true : false; } bool IsExplosive(void) const { return (GetNeoWepBits() & NEO_WEP_EXPLOSIVE) ? true : false; } @@ -196,10 +199,7 @@ class CNEOBaseCombatWeapon : public CBaseHL2MPCombatWeapon // Whether this weapon should fire only once per each attack command, even if held down. bool IsSemiAuto(void) const { return !IsAutomatic(); } - virtual Vector GetMinCone() const { static Vector cone = VECTOR_CONE_1DEGREES; return cone; } - virtual Vector GetMaxCone() const { static Vector cone = VECTOR_CONE_10DEGREES; return cone; } - - virtual const Vector& GetBulletSpread(void) OVERRIDE; + virtual const Vector& GetBulletSpread(void) override; virtual bool CanBePickedUpByClass(int classId); virtual bool CanDrop(void); @@ -208,9 +208,9 @@ class CNEOBaseCombatWeapon : public CBaseHL2MPCombatWeapon #ifdef CLIENT_DLL virtual bool Holster(CBaseCombatWeapon* pSwitchingTo); - virtual void ItemHolsterFrame() OVERRIDE; - virtual bool ShouldDraw(void) OVERRIDE; - virtual int DrawModel(int flags) OVERRIDE; + virtual void ItemHolsterFrame() override; + virtual bool ShouldDraw(void) override; + virtual int DrawModel(int flags) override; #endif virtual bool Deploy(void); @@ -221,8 +221,10 @@ class CNEOBaseCombatWeapon : public CBaseHL2MPCombatWeapon float GetPenetration() const; protected: - virtual float GetAccuracyPenalty() const { Assert(false); return 0; } // Should never call this base class; implement in children. - virtual float GetMaxAccuracyPenalty() const { Assert(false); return 0; } // Should never call this base class; implement in children. + virtual void UpdateInaccuracy(void); + virtual float GetAccuracyPenalty() const { return 0.8; } + virtual float GetMaxAccuracyPenalty() const { return 1.0; } + virtual float GetAccuracyPenaltyDecay() const { return 1.2; } virtual float GetFastestDryRefireTime() const { Assert(false); return 0; } // Should never call this base class; implement in children. protected: diff --git a/mp/src/game/shared/neo/weapons/weapon_neobasemeleeweapon.cpp b/mp/src/game/shared/neo/weapons/weapon_neobasemeleeweapon.cpp deleted file mode 100644 index 8eb1247d2..000000000 --- a/mp/src/game/shared/neo/weapons/weapon_neobasemeleeweapon.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "cbase.h" -#include "weapon_neobasemeleeweapon.h" diff --git a/mp/src/game/shared/neo/weapons/weapon_neobasemeleeweapon.h b/mp/src/game/shared/neo/weapons/weapon_neobasemeleeweapon.h deleted file mode 100644 index a84bc7701..000000000 --- a/mp/src/game/shared/neo/weapons/weapon_neobasemeleeweapon.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef WEAPON_NEO_BASEMELEEWEAPON_SHARED_H -#define WEAPON_NEO_BASEMELEEWEAPON_SHARED_H -#ifdef _WIN32 -#pragma once -#endif - -#include "weapon_neobaseweapon.h" -#include "weapon_hl2mpbasebasebludgeon.h" - -#ifdef CLIENT_DLL -#include "c_neo_player.h" -#else -#include "neo_player.h" -#endif - -#ifdef CLIENT_DLL -#define CNEOBaseMeleeWeapon C_NEOBaseMeleeWeapon -#endif - -abstract_class INEOBaseMeleeWeapon : public INEOBaseWeapon -{ -private: - INEOBaseMeleeWeapon(const INEOBaseMeleeWeapon &other); -}; - -#endif // WEAPON_NEO_BASEMELEEWEAPON_SHARED_H \ No newline at end of file diff --git a/mp/src/game/shared/neo/weapons/weapon_neobaseweapon.cpp b/mp/src/game/shared/neo/weapons/weapon_neobaseweapon.cpp deleted file mode 100644 index a89b88bca..000000000 --- a/mp/src/game/shared/neo/weapons/weapon_neobaseweapon.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "cbase.h" -#include "weapon_neobaseweapon.h" - -const char *GetWeaponByLoadoutId(int loadoutId) -{ - if (loadoutId < 0 || loadoutId >= NEO_WEP_LOADOUT_ID_COUNT) - { - Assert(false); - return ""; - } - - const char* weps[] = { - "weapon_mpn", - "weapon_srm", - "weapon_srm_s", - "weapon_jitte", - "weapon_jittescoped", - "weapon_zr68c", - "weapon_zr68s", - "weapon_zr68l", - "weapon_mx", - "weapon_pz", - "weapon_supa7", - "weapon_m41", - "weapon_m41l", - }; - - COMPILE_TIME_ASSERT(NEO_WEP_LOADOUT_ID_COUNT == ARRAYSIZE(weps)); - - return weps[loadoutId]; -} diff --git a/mp/src/game/shared/neo/weapons/weapon_neobaseweapon.h b/mp/src/game/shared/neo/weapons/weapon_neobaseweapon.h deleted file mode 100644 index 5ff2027df..000000000 --- a/mp/src/game/shared/neo/weapons/weapon_neobaseweapon.h +++ /dev/null @@ -1,88 +0,0 @@ -#ifndef WEAPON_NEO_BASEWEAPON_SHARED_H -#define WEAPON_NEO_BASEWEAPON_SHARED_H -#ifdef _WIN32 -#pragma once -#endif - -#include "weapon_hl2mpbase.h" - -#ifdef CLIENT_DLL -#include "c_neo_player.h" -#else -#include "neo_player.h" -#endif - -// Weapon bit flags -enum NeoWepBits { - NEO_WEP_INVALID = 0x0, - - NEO_WEP_AA13 = (1 << 0), - NEO_WEP_DETPACK = (1 << 1), - NEO_WEP_GHOST = (1 << 2), - NEO_WEP_FRAG_GRENADE = (1 << 3), - NEO_WEP_JITTE = (1 << 4), - NEO_WEP_JITTE_S = (1 << 5), - NEO_WEP_KNIFE = (1 << 6), - NEO_WEP_KYLA = (1 << 7), - NEO_WEP_M41 = (1 << 8), - NEO_WEP_M41_L = (1 << 9), - NEO_WEP_M41_S = (1 << 10), - NEO_WEP_MILSO = (1 << 11), - NEO_WEP_MPN = (1 << 12), - NEO_WEP_MPN_S = (1 << 13), - NEO_WEP_MX = (1 << 14), - NEO_WEP_MX_S = (1 << 15), - NEO_WEP_PROX_MINE = (1 << 16), - NEO_WEP_PZ = (1 << 17), - NEO_WEP_SMAC = (1 << 18), - NEO_WEP_SMOKE_GRENADE = (1 << 19), - NEO_WEP_SRM = (1 << 20), - NEO_WEP_SRM_S = (1 << 21), - NEO_WEP_SRS = (1 << 22), - NEO_WEP_SUPA7 = (1 << 23), - NEO_WEP_TACHI = (1 << 24), - NEO_WEP_ZR68_C = (1 << 25), - NEO_WEP_ZR68_L = (1 << 26), - NEO_WEP_ZR68_S = (1 << 27), - - NEO_WEP_HIGHEST_VALID_BITS = NEO_WEP_ZR68_S -}; - -// These are the .res file id numbers for -// NEO weapon loadout choices used by the -// client cvar "loadout " -enum { - NEO_WEP_LOADOUT_ID_MPN = 0, - NEO_WEP_LOADOUT_ID_SRM, - NEO_WEP_LOADOUT_ID_SRM_S, - NEO_WEP_LOADOUT_ID_JITTE, - NEO_WEP_LOADOUT_ID_JITTE_S, - NEO_WEP_LOADOUT_ID_ZR68C, - NEO_WEP_LOADOUT_ID_ZR68S, - NEO_WEP_LOADOUT_ID_ZR68L, - NEO_WEP_LOADOUT_ID_MX, - NEO_WEP_LOADOUT_ID_PZ, - NEO_WEP_LOADOUT_ID_SUPA7, - NEO_WEP_LOADOUT_ID_M41, - NEO_WEP_LOADOUT_ID_M41L, - - NEO_WEP_LOADOUT_ID_COUNT -}; -const char *GetWeaponByLoadoutId(int loadoutId); - -#ifdef CLIENT_DLL -#define CNEOBaseWeapon C_NEOBaseWeapon -#endif - -abstract_class INEOBaseWeapon -{ -public: - virtual int GetNeoWepBits(void) const = 0; - - bool IsGhost(void) const { return (GetNeoWepBits() & NEO_WEP_GHOST) ? true : false; } - -private: - INEOBaseWeapon(const INEOBaseWeapon &other); -}; - -#endif // WEAPON_NEO_BASEWEAPON_SHARED_H \ No newline at end of file diff --git a/mp/src/game/shared/neo/weapons/weapon_pbk56s.cpp b/mp/src/game/shared/neo/weapons/weapon_pbk56s.cpp index 7791f4ef1..7491e0563 100644 --- a/mp/src/game/shared/neo/weapons/weapon_pbk56s.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_pbk56s.cpp @@ -25,4 +25,4 @@ PRECACHE_WEAPON_REGISTER(weapon_pbk56s); CWeaponPBK56S::CWeaponPBK56S() { -} \ No newline at end of file +} diff --git a/mp/src/game/shared/neo/weapons/weapon_pbk56s.h b/mp/src/game/shared/neo/weapons/weapon_pbk56s.h index ff72acaa1..6989b221f 100644 --- a/mp/src/game/shared/neo/weapons/weapon_pbk56s.h +++ b/mp/src/game/shared/neo/weapons/weapon_pbk56s.h @@ -38,15 +38,11 @@ class CWeaponPBK56S : public CNEOBaseCombatWeapon virtual float GetSpeedScale(void) const OVERRIDE { return 1.0; } - virtual float GetFireRate(void) OVERRIDE { return 0.08f; } - protected: - virtual float GetAccuracyPenalty() const { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const { return 0.2f; } virtual float GetFastestDryRefireTime() const { return 1.5f; } private: CWeaponPBK56S(const CWeaponPBK56S& other); }; -#endif // NEO_WEAPON_PBK56S_H \ No newline at end of file +#endif // NEO_WEAPON_PBK56S_H diff --git a/mp/src/game/shared/neo/weapons/weapon_pz.cpp b/mp/src/game/shared/neo/weapons/weapon_pz.cpp index 3eea72d7a..641593ba1 100644 --- a/mp/src/game/shared/neo/weapons/weapon_pz.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_pz.cpp @@ -30,110 +30,6 @@ CWeaponPZ::CWeaponPZ() m_nNumShotsFired = 0; } -void CWeaponPZ::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponPZ::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponPZ::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponPZ::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponPZ::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponPZ::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponPZ::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponPZ::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - bool CWeaponPZ::CanBePickedUpByClass(int classId) { return classId != NEO_CLASS_RECON; diff --git a/mp/src/game/shared/neo/weapons/weapon_pz.h b/mp/src/game/shared/neo/weapons/weapon_pz.h index 94cbbec09..47c9e9e82 100644 --- a/mp/src/game/shared/neo/weapons/weapon_pz.h +++ b/mp/src/game/shared/neo/weapons/weapon_pz.h @@ -33,31 +33,16 @@ class CWeaponPZ : public CNEOBaseCombatWeapon CWeaponPZ(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - virtual void Spawn(void); - virtual bool Deploy(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_PZ; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 20; } - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_PZ; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 20; } - - virtual float GetSpeedScale(void) const { return 108.0 / 136.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 108.0 / 136.0; } bool CanBePickedUpByClass(int classId) OVERRIDE; protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 0.5f; } private: CWeaponPZ(const CWeaponPZ &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_smac.cpp b/mp/src/game/shared/neo/weapons/weapon_smac.cpp index 939b4f818..2b5bc0e41 100644 --- a/mp/src/game/shared/neo/weapons/weapon_smac.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_smac.cpp @@ -30,110 +30,6 @@ CWeaponSMAC::CWeaponSMAC() m_nNumShotsFired = 0; } -void CWeaponSMAC::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponSMAC::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponSMAC::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponSMAC::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponSMAC::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponSMAC::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponSMAC::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponSMAC::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponSMAC::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_smac.h b/mp/src/game/shared/neo/weapons/weapon_smac.h index 5eb2ccd52..efb0b7666 100644 --- a/mp/src/game/shared/neo/weapons/weapon_smac.h +++ b/mp/src/game/shared/neo/weapons/weapon_smac.h @@ -33,30 +33,15 @@ class CWeaponSMAC : public CNEOBaseCombatWeapon CWeaponSMAC(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - virtual void Spawn(void); - virtual bool Deploy(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_SMAC; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_SMAC; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } - - virtual float GetSpeedScale(void) const { return 1.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 1.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } private: CWeaponSMAC(const CWeaponSMAC& other); diff --git a/mp/src/game/shared/neo/weapons/weapon_srm.cpp b/mp/src/game/shared/neo/weapons/weapon_srm.cpp index fa055b485..43c4aeb62 100644 --- a/mp/src/game/shared/neo/weapons/weapon_srm.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_srm.cpp @@ -30,111 +30,6 @@ CWeaponSRM::CWeaponSRM() m_nNumShotsFired = 0; } -void CWeaponSRM::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponSRM::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponSRM::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponSRM::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponSRM::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponSRM::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponSRM::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponSRM::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponSRM::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_srm.h b/mp/src/game/shared/neo/weapons/weapon_srm.h index 35cf184dd..9dd677363 100644 --- a/mp/src/game/shared/neo/weapons/weapon_srm.h +++ b/mp/src/game/shared/neo/weapons/weapon_srm.h @@ -33,30 +33,15 @@ class CWeaponSRM : public CNEOBaseCombatWeapon CWeaponSRM(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - virtual void Spawn(void); - virtual bool Deploy(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_SRM; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_SRM; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } - - virtual float GetSpeedScale(void) const { return 1.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 1.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } private: CWeaponSRM(const CWeaponSRM &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_srms.cpp b/mp/src/game/shared/neo/weapons/weapon_srms.cpp index 11d46ef97..e0581f667 100644 --- a/mp/src/game/shared/neo/weapons/weapon_srms.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_srms.cpp @@ -30,111 +30,6 @@ CWeaponSRM_S::CWeaponSRM_S() m_nNumShotsFired = 0; } -void CWeaponSRM_S::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponSRM_S::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponSRM_S::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponSRM_S::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, - 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponSRM_S::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponSRM_S::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponSRM_S::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponSRM_S::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponSRM_S::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_srms.h b/mp/src/game/shared/neo/weapons/weapon_srms.h index 479832bb7..d70c6a6c6 100644 --- a/mp/src/game/shared/neo/weapons/weapon_srms.h +++ b/mp/src/game/shared/neo/weapons/weapon_srms.h @@ -33,30 +33,15 @@ class CWeaponSRM_S : public CNEOBaseCombatWeapon CWeaponSRM_S(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - virtual void Spawn(void); - virtual bool Deploy(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_SRM_S | NEO_WEP_SUPPRESSED; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_SRM_S | NEO_WEP_SUPPRESSED; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } - - virtual float GetSpeedScale(void) const { return 1.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 1.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } private: CWeaponSRM_S(const CWeaponSRM_S &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_srs.cpp b/mp/src/game/shared/neo/weapons/weapon_srs.cpp index 86f6e551f..dad7b6ec7 100644 --- a/mp/src/game/shared/neo/weapons/weapon_srs.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_srs.cpp @@ -30,24 +30,6 @@ CWeaponSRS::CWeaponSRS() m_nNumShotsFired = 0; } -void CWeaponSRS::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponSRS::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponSRS::Deploy(void) -{ - return BaseClass::Deploy(); -} - void CWeaponSRS::PrimaryAttack(void) { if (!ShootingIsPrevented() && GetRoundChambered()) { @@ -58,29 +40,8 @@ void CWeaponSRS::PrimaryAttack(void) } } -void CWeaponSRS::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if ((owner->m_nButtons & IN_ATTACK) == false) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } - } -} - void CWeaponSRS::ItemPreFrame() { - UpdatePenaltyTime(); - if (m_flChamberFinishTime <= gpGlobals->curtime && m_bRoundBeingChambered == true) { // Finished chambering a round, enable Primary attack m_bRoundBeingChambered = false; @@ -106,38 +67,23 @@ void CWeaponSRS::ItemPreFrame() BaseClass::ItemPreFrame(); } -void CWeaponSRS::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponSRS::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); -} - -Activity CWeaponSRS::GetPrimaryAttackActivity() +bool CWeaponSRS::Reload() { - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) + if (auto owner = ToBasePlayer(GetOwner())) { - return ACT_VM_RECOIL2; + if (!(owner->m_nButtons & IN_ATTACK)) + { + return BaseClass::Reload(); + } + return false; } + return false; +} - return ACT_VM_RECOIL3; +void CWeaponSRS::FinishReload() +{ + m_bRoundChambered = true; + BaseClass::FinishReload(); } void CWeaponSRS::AddViewKick() diff --git a/mp/src/game/shared/neo/weapons/weapon_srs.h b/mp/src/game/shared/neo/weapons/weapon_srs.h index 4b15fb59c..5db7c9384 100644 --- a/mp/src/game/shared/neo/weapons/weapon_srs.h +++ b/mp/src/game/shared/neo/weapons/weapon_srs.h @@ -33,33 +33,20 @@ class CWeaponSRS : public CNEOBaseCombatWeapon CWeaponSRS(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); + void ItemPreFrame(void) override; void PrimaryAttack(void) OVERRIDE; - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - virtual bool Reload(void) OVERRIDE { if (auto owner = ToBasePlayer(GetOwner())) { if (!(owner->m_nButtons & IN_ATTACK)) { return BaseClass::Reload(); } return false; } return false; } - virtual void FinishReload(void) OVERRIDE { m_bRoundChambered = true; BaseClass::FinishReload(); } - void AddViewKick(void); - void DryFire(void); + virtual bool Reload(void) OVERRIDE; + virtual void FinishReload(void) OVERRIDE; + void AddViewKick(void) override; - virtual void Spawn(void); - virtual bool Deploy(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_SRS | NEO_WEP_SCOPEDWEAPON; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 20; } - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_SRS | NEO_WEP_SCOPEDWEAPON; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 20; } - - virtual float GetSpeedScale(void) const { return 116.0 / 136.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 116.0 / 136.0; } float m_flChamberFinishTime = maxfloat16bits; protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } virtual bool GetRoundChambered() const { return m_bRoundChambered.Get(); } virtual bool GetRoundBeingChambered() const { return m_bRoundBeingChambered.Get(); } diff --git a/mp/src/game/shared/neo/weapons/weapon_supa7.cpp b/mp/src/game/shared/neo/weapons/weapon_supa7.cpp index d760485f2..548075635 100644 --- a/mp/src/game/shared/neo/weapons/weapon_supa7.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_supa7.cpp @@ -277,14 +277,6 @@ void CWeaponSupa7::FillClipSlug(void) } } -void CWeaponSupa7::DryFire(void) -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - ProposeNextAttack(gpGlobals->curtime + SequenceDuration()); -} - void CWeaponSupa7::PrimaryAttack(void) { if (ShootingIsPrevented()) @@ -541,4 +533,4 @@ void CWeaponSupa7::Drop(const Vector& vecVelocity) { ClearDelayedInputs(); CNEOBaseCombatWeapon::Drop(vecVelocity); -} \ No newline at end of file +} diff --git a/mp/src/game/shared/neo/weapons/weapon_supa7.h b/mp/src/game/shared/neo/weapons/weapon_supa7.h index 10a7bce75..f77f1b623 100644 --- a/mp/src/game/shared/neo/weapons/weapon_supa7.h +++ b/mp/src/game/shared/neo/weapons/weapon_supa7.h @@ -55,16 +55,13 @@ class CWeaponSupa7 : public CNEOBaseCombatWeapon void ItemPostFrame(void); void PrimaryAttack(void); void SecondaryAttack(void); - void DryFire(void); - + void Drop(const Vector& vecVelocity) OVERRIDE; void ClearDelayedInputs(void); protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 0; } private: // Purpose: Only update next attack time if it's further away in the future. diff --git a/mp/src/game/shared/neo/weapons/weapon_tachi.cpp b/mp/src/game/shared/neo/weapons/weapon_tachi.cpp index 917aeb2cf..ecb339a64 100644 --- a/mp/src/game/shared/neo/weapons/weapon_tachi.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_tachi.cpp @@ -55,19 +55,6 @@ CWeaponTachi::CWeaponTachi() m_bIsPrimaryFireMode = true; } -void CWeaponTachi::Precache(void) -{ - BaseClass::Precache(); -} - -void CWeaponTachi::DryFire(void) -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - void CWeaponTachi::SwitchFireMode( void ) { if (m_flSoonestFiremodeSwitch > gpGlobals->curtime) @@ -98,51 +85,8 @@ void CWeaponTachi::ForceSetFireMode( bool bPrimaryMode, bool bPlaySound, } } -void CWeaponTachi::UpdatePenaltyTime( void ) -{ - CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); - - if ( pOwner == NULL ) - return; - - // Check our penalty time decay - if ( ( pOwner->m_nButtons & IN_ATTACK ) == false ) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - - if (m_flSoonestAttack > gpGlobals->curtime) - { - m_flSoonestAttack -= (gpGlobals->curtime - m_flLastAttackTime); - } -} - -void CWeaponTachi::ItemPreFrame( void ) -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponTachi::ItemBusyFrame( void ) -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - void CWeaponTachi::ItemPostFrame( void ) { - ProcessAnimationEvents(); - BaseClass::ItemPostFrame(); if ( m_bInReload ) @@ -155,7 +99,7 @@ void CWeaponTachi::ItemPostFrame( void ) if ( pOwner == NULL ) { return; - } + } if ( (pOwner->m_nButtons & IN_ATTACK2) && (!(pOwner->m_afButtonLast & IN_ATTACK2)) ) { @@ -171,30 +115,12 @@ void CWeaponTachi::ItemPostFrame( void ) } //----------------------------------------------------------------------------- -// Purpose: -// Output : int -//----------------------------------------------------------------------------- -Activity CWeaponTachi::GetPrimaryAttackActivity( void ) -{ - if ( m_nNumShotsFired < 1 ) - return ACT_VM_PRIMARYATTACK; - - if ( m_nNumShotsFired < 2 ) - return ACT_VM_RECOIL1; - - if ( m_nNumShotsFired < 3 ) - return ACT_VM_RECOIL2; - - return ACT_VM_RECOIL3; -} - -//----------------------------------------------------------------------------- -// Purpose: +// Purpose: //----------------------------------------------------------------------------- void CWeaponTachi::AddViewKick( void ) { CBasePlayer *pPlayer = ToBasePlayer( GetOwner() ); - + if ( pPlayer == NULL ) return; diff --git a/mp/src/game/shared/neo/weapons/weapon_tachi.h b/mp/src/game/shared/neo/weapons/weapon_tachi.h index 744a61601..d3cdc1520 100644 --- a/mp/src/game/shared/neo/weapons/weapon_tachi.h +++ b/mp/src/game/shared/neo/weapons/weapon_tachi.h @@ -24,7 +24,7 @@ class CWeaponTachi : public CNEOBaseCombatWeapon { DECLARE_CLASS(CWeaponTachi, CNEOBaseCombatWeapon); public: - DECLARE_NETWORKCLASS(); + DECLARE_NETWORKCLASS(); DECLARE_PREDICTABLE(); #ifdef GAME_DLL @@ -34,28 +34,18 @@ class CWeaponTachi : public CNEOBaseCombatWeapon CWeaponTachi(); - void Precache( void ); - void ItemPostFrame( void ); - void ItemPreFrame( void ); - void ItemBusyFrame( void ); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick( void ); - void DryFire( void ); - - void UpdatePenaltyTime( void ); - - Activity GetPrimaryAttackActivity( void ); + void ItemPostFrame( void ) override; + void AddViewKick( void ) override; virtual void SwitchFireMode( void ); virtual void ForceSetFireMode( bool bPrimaryMode, bool bPlaySound = false, float flSoonestSwitch = 0.0f ); - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_TACHI; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_TACHI; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } + + virtual float GetSpeedScale(void) const override { return 1.0; } - virtual float GetSpeedScale(void) const { return 1.0; } - virtual int GetMinBurst() OVERRIDE { return 1; } virtual int GetMaxBurst() OVERRIDE { return 3; } @@ -66,8 +56,6 @@ class CWeaponTachi : public CNEOBaseCombatWeapon protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } private: CNetworkVar(float, m_flSoonestFiremodeSwitch); diff --git a/mp/src/game/shared/neo/weapons/weapon_zr68c.cpp b/mp/src/game/shared/neo/weapons/weapon_zr68c.cpp index 9a28b8603..b71d8087f 100644 --- a/mp/src/game/shared/neo/weapons/weapon_zr68c.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_zr68c.cpp @@ -30,111 +30,6 @@ CWeaponZR68C::CWeaponZR68C() m_nNumShotsFired = 0; } -void CWeaponZR68C::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponZR68C::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponZR68C::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponZR68C::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponZR68C::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponZR68C::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponZR68C::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponZR68C::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponZR68C::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_zr68c.h b/mp/src/game/shared/neo/weapons/weapon_zr68c.h index 9faad29ca..2a94b2187 100644 --- a/mp/src/game/shared/neo/weapons/weapon_zr68c.h +++ b/mp/src/game/shared/neo/weapons/weapon_zr68c.h @@ -33,30 +33,15 @@ class CWeaponZR68C : public CNEOBaseCombatWeapon CWeaponZR68C(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - virtual void Spawn(void); - virtual bool Deploy(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_ZR68_C; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_ZR68_C; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } - - virtual float GetSpeedScale(void) const { return 160.0 / 170.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 160.0 / 170.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } private: CWeaponZR68C(const CWeaponZR68C &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_zr68l.cpp b/mp/src/game/shared/neo/weapons/weapon_zr68l.cpp index 443b0fe8f..802be18bd 100644 --- a/mp/src/game/shared/neo/weapons/weapon_zr68l.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_zr68l.cpp @@ -30,92 +30,6 @@ CWeaponZR68L::CWeaponZR68L() m_nNumShotsFired = 0; } -void CWeaponZR68L::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + GetFastestDryRefireTime(); -} - -void CWeaponZR68L::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponZR68L::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponZR68L::UpdatePenaltyTime() -{ - CBasePlayer* pOwner = ToBasePlayer(GetOwner()); - - if (pOwner == NULL) - return; - - // Check our penalty time decay - if ((pOwner->m_nButtons & IN_ATTACK) == false) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - - if (m_flSoonestAttack > gpGlobals->curtime) - { - m_flSoonestAttack -= (gpGlobals->curtime - m_flLastAttackTime); - } -} - -void CWeaponZR68L::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponZR68L::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponZR68L::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); -} - -Activity CWeaponZR68L::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponZR68L::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_zr68l.h b/mp/src/game/shared/neo/weapons/weapon_zr68l.h index 566bebd9f..c4c08497b 100644 --- a/mp/src/game/shared/neo/weapons/weapon_zr68l.h +++ b/mp/src/game/shared/neo/weapons/weapon_zr68l.h @@ -33,30 +33,15 @@ class CWeaponZR68L : public CNEOBaseCombatWeapon CWeaponZR68L(); - void ItemPostFrame(void); - void ItemPreFrame(void); - void ItemBusyFrame(void); - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } - void AddViewKick(void); - void DryFire(void); + void AddViewKick(void) override; - virtual void Spawn(void); - virtual bool Deploy(void); + virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_ZR68_L | NEO_WEP_SCOPEDWEAPON; } + virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; } - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const { return NEO_WEP_ZR68_L | NEO_WEP_SCOPEDWEAPON; } - virtual int GetNeoWepXPCost(const int neoClass) const { return 0; } - - virtual float GetSpeedScale(void) const { return 145.0 / 170.0; } - - void UpdatePenaltyTime(void); - - Activity GetPrimaryAttackActivity(void); + virtual float GetSpeedScale(void) const override { return 145.0 / 170.0; } protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } private: CWeaponZR68L(const CWeaponZR68L &other); diff --git a/mp/src/game/shared/neo/weapons/weapon_zr68s.cpp b/mp/src/game/shared/neo/weapons/weapon_zr68s.cpp index 4deeffa6a..81e8322a3 100644 --- a/mp/src/game/shared/neo/weapons/weapon_zr68s.cpp +++ b/mp/src/game/shared/neo/weapons/weapon_zr68s.cpp @@ -30,111 +30,6 @@ CWeaponZR68S::CWeaponZR68S() m_nNumShotsFired = 0; } -void CWeaponZR68S::DryFire() -{ - WeaponSound(EMPTY); - SendWeaponAnim(ACT_VM_DRYFIRE); - - m_flNextPrimaryAttack = gpGlobals->curtime + SequenceDuration(); -} - -void CWeaponZR68S::Spawn() -{ - BaseClass::Spawn(); -} - -bool CWeaponZR68S::Deploy(void) -{ - return BaseClass::Deploy(); -} - -void CWeaponZR68S::UpdatePenaltyTime() -{ - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (((owner->m_nButtons & IN_ATTACK) == false) && - (m_flSoonestAttack < gpGlobals->curtime)) - { - m_flAccuracyPenalty -= gpGlobals->frametime; - m_flAccuracyPenalty = clamp(m_flAccuracyPenalty, 0.0f, GetMaxAccuracyPenalty()); - } -} - -void CWeaponZR68S::ItemPreFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemPreFrame(); -} - -void CWeaponZR68S::ItemBusyFrame() -{ - UpdatePenaltyTime(); - - BaseClass::ItemBusyFrame(); -} - -void CWeaponZR68S::ItemPostFrame() -{ - ProcessAnimationEvents(); - - BaseClass::ItemPostFrame(); - - if (m_bInReload) - { - return; - } - - auto owner = ToBasePlayer(GetOwner()); - - if (!owner) - { - return; - } - - if (owner->m_nButtons & IN_ATTACK) - { - if (m_flSoonestAttack < gpGlobals->curtime) - { - if (m_iClip1 <= 0) - { - DryFire(); - - m_flSoonestAttack = gpGlobals->curtime + GetFastestDryRefireTime(); - } - else - { - m_flSoonestAttack = gpGlobals->curtime + GetFireRate(); - } - } - } -} - -Activity CWeaponZR68S::GetPrimaryAttackActivity() -{ - if (m_nNumShotsFired < 1) - { - return ACT_VM_PRIMARYATTACK; - } - - if (m_nNumShotsFired < 2) - { - return ACT_VM_RECOIL1; - } - - if (m_nNumShotsFired < 3) - { - return ACT_VM_RECOIL2; - } - - return ACT_VM_RECOIL3; -} - void CWeaponZR68S::AddViewKick() { auto owner = ToBasePlayer(GetOwner()); diff --git a/mp/src/game/shared/neo/weapons/weapon_zr68s.h b/mp/src/game/shared/neo/weapons/weapon_zr68s.h index 54a23dbac..182a86ce8 100644 --- a/mp/src/game/shared/neo/weapons/weapon_zr68s.h +++ b/mp/src/game/shared/neo/weapons/weapon_zr68s.h @@ -33,31 +33,15 @@ class CWeaponZR68S : public CNEOBaseCombatWeapon CWeaponZR68S(); - virtual void ItemPostFrame(void) OVERRIDE; - virtual void ItemPreFrame(void) OVERRIDE; - virtual void ItemBusyFrame(void) OVERRIDE; - virtual void PrimaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::PrimaryAttack(); } } - virtual void SecondaryAttack(void) OVERRIDE { if (!ShootingIsPrevented()) { BaseClass::SecondaryAttack(); } } virtual void AddViewKick(void) OVERRIDE; - void DryFire(void); - - virtual void Spawn(void) OVERRIDE; - virtual bool Deploy(void) OVERRIDE; - virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_ZR68_S | NEO_WEP_SUPPRESSED; } virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; } virtual float GetSpeedScale(void) const OVERRIDE { return 155.0 / 170.0; } - void UpdatePenaltyTime(void); - - virtual Activity GetPrimaryAttackActivity(void) OVERRIDE; - protected: virtual float GetFastestDryRefireTime() const OVERRIDE { return 0.2f; } - virtual float GetAccuracyPenalty() const OVERRIDE { return 0.2f; } - virtual float GetMaxAccuracyPenalty() const OVERRIDE { return 1.5f; } private: CWeaponZR68S(const CWeaponZR68S &other);