From bdc825d5639f6a9dc99c02d02ea3ea3d5066459b Mon Sep 17 00:00:00 2001 From: Ashetf2 <63692647+Ashetf2@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:49:36 -0500 Subject: [PATCH 1/8] add global? checks to prevent inspect global checks. Maybe cond aiming and zoomed checks could be moved to weapon_sniperrifle --- src/game/shared/tf/tf_weaponbase.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/game/shared/tf/tf_weaponbase.cpp b/src/game/shared/tf/tf_weaponbase.cpp index 091e9da7cc0..0348bd23c19 100644 --- a/src/game/shared/tf/tf_weaponbase.cpp +++ b/src/game/shared/tf/tf_weaponbase.cpp @@ -2572,6 +2572,18 @@ void CTFWeaponBase::HandleInspect() // first time pressing inspecting key if ( !m_bInspecting && pPlayer->IsInspecting() ) { + // Don't inspect while reloading or zooming. TF_COND_ZOOMED for the Classic + if ( IsReloading() || pPlayer->m_Shared.InCond( TF_COND_AIMING ) || pPlayer->m_Shared.InCond( TF_COND_ZOOMED ) ) + { + return; + } + + // Don't inspect if the player has just fired + if ( gpGlobals->curtime < m_flNextPrimaryAttack ) + { + return; + } + m_nInspectStage = INSPECT_INVALID; m_flInspectAnimEndTime = -1.f; if ( SendWeaponAnim( GetInspectActivity( INSPECT_START ) ) ) From 81881b537c81724fd3bbd7f74bfb1493cfc5c801 Mon Sep 17 00:00:00 2001 From: Ashetf2 <63692647+Ashetf2@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:51:24 -0500 Subject: [PATCH 2/8] special checks for flamethrowers --- src/game/shared/tf/tf_weapon_flamethrower.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/game/shared/tf/tf_weapon_flamethrower.cpp b/src/game/shared/tf/tf_weapon_flamethrower.cpp index 28e51555383..57214287427 100644 --- a/src/game/shared/tf/tf_weapon_flamethrower.cpp +++ b/src/game/shared/tf/tf_weapon_flamethrower.cpp @@ -509,6 +509,14 @@ void CTFFlameThrower::UpdateOnRemove( void ) BaseClass::UpdateOnRemove(); } +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +bool CTFFlameThrower::CanInspect() const +{ + return BaseClass::CanInspect() && !IsFiring(); +} + //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- From 5e9fd209df8274cb4afd850761ad4d1fb365a303 Mon Sep 17 00:00:00 2001 From: Ashetf2 <63692647+Ashetf2@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:52:03 -0500 Subject: [PATCH 3/8] additional checks for flamethrowers --- src/game/shared/tf/tf_weapon_flamethrower.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/game/shared/tf/tf_weapon_flamethrower.h b/src/game/shared/tf/tf_weapon_flamethrower.h index 96f7344e599..62efc00a8cb 100644 --- a/src/game/shared/tf/tf_weapon_flamethrower.h +++ b/src/game/shared/tf/tf_weapon_flamethrower.h @@ -111,6 +111,7 @@ class CTFFlameThrower : public CTFWeaponBaseGun bool EffectMeterShouldFlash( void ); virtual bool Deploy( void ) OVERRIDE; + virtual bool CanInspect() const OVERRIDE; #if defined( CLIENT_DLL ) From 1a9acff606ee53413ea070d77f641b0d4368595d Mon Sep 17 00:00:00 2001 From: Ashetf2 <63692647+Ashetf2@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:53:25 -0500 Subject: [PATCH 4/8] additional checks for the dragon's fury --- src/game/shared/tf/tf_weapon_dragons_fury.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/game/shared/tf/tf_weapon_dragons_fury.cpp b/src/game/shared/tf/tf_weapon_dragons_fury.cpp index c5d50367197..ae6b929a479 100644 --- a/src/game/shared/tf/tf_weapon_dragons_fury.cpp +++ b/src/game/shared/tf/tf_weapon_dragons_fury.cpp @@ -245,6 +245,11 @@ bool CTFWeaponFlameBall::HasFullCharge() const return pOwner->m_Shared.GetItemChargeMeter( LOADOUT_POSITION_PRIMARY) >= 100.f; } +bool CTFWeaponFlameBall::CanInspect() const +{ + return BaseClass::CanInspect() && HasFullCharge(); +} + void CTFWeaponFlameBall::ItemPostFrame( void ) { CTFPlayer *pOwner = ToTFPlayer( GetPlayerOwner() ); From d93c5d2038a7694039e7294da8e402efcaa84095 Mon Sep 17 00:00:00 2001 From: Ashetf2 <63692647+Ashetf2@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:54:26 -0500 Subject: [PATCH 5/8] additional checks for the dragon's fury --- src/game/shared/tf/tf_weapon_dragons_fury.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/game/shared/tf/tf_weapon_dragons_fury.h b/src/game/shared/tf/tf_weapon_dragons_fury.h index 539f8cbe523..0505d6b2873 100644 --- a/src/game/shared/tf/tf_weapon_dragons_fury.h +++ b/src/game/shared/tf/tf_weapon_dragons_fury.h @@ -55,6 +55,8 @@ class CTFWeaponFlameBall : public CTFFlameThrower virtual void OnResourceMeterFilled() OVERRIDE; virtual float GetMeterMultiplier() const OVERRIDE; + virtual bool CanInspect() const OVERRIDE; + #ifdef GAME_DLL virtual float GetInitialAfterburnDuration() const OVERRIDE { return 0.f; } void RefundAmmo( int nAmmo ); From f24c4f392e6b9e0bd8f0a7aeec45b70ca29ea120 Mon Sep 17 00:00:00 2001 From: Ashetf2 <63692647+Ashetf2@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:57:52 -0500 Subject: [PATCH 6/8] prevent inspect when charging ball because i'm too nitpicky :D --- src/game/shared/tf/tf_weapon_grenadelauncher.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/game/shared/tf/tf_weapon_grenadelauncher.cpp b/src/game/shared/tf/tf_weapon_grenadelauncher.cpp index b81b9b29372..c79e1b29280 100644 --- a/src/game/shared/tf/tf_weapon_grenadelauncher.cpp +++ b/src/game/shared/tf/tf_weapon_grenadelauncher.cpp @@ -545,6 +545,16 @@ float CTFGrenadeLauncher::GetChargeMaxTime( void ) return GetMortarDetonateTimeLength(); } +bool CTFGrenadeLauncher::CanInspect() const +{ + // we are charging a ball, so don't inspect + if ( m_flDetonateTime > gpGlobals->curtime ) + { + return false; + } + + return BaseClass::CanInspect(); +} void CTFGrenadeLauncher::ResetDetonateTime() { From 8de925103ec6f6c6d72cb02808641b1e28af2306 Mon Sep 17 00:00:00 2001 From: Ashetf2 <63692647+Ashetf2@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:59:37 -0500 Subject: [PATCH 7/8] charging ball: ditto --- src/game/shared/tf/tf_weapon_grenadelauncher.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/game/shared/tf/tf_weapon_grenadelauncher.h b/src/game/shared/tf/tf_weapon_grenadelauncher.h index 6bf5b606e0a..ae311730fad 100644 --- a/src/game/shared/tf/tf_weapon_grenadelauncher.h +++ b/src/game/shared/tf/tf_weapon_grenadelauncher.h @@ -70,6 +70,8 @@ class CTFGrenadeLauncher : public CTFWeaponBaseGun, public ITFChargeUpWeapon virtual float GetChargeBeginTime( void ); virtual float GetChargeMaxTime( void ); + virtual bool CanInspect() const OVERRIDE; + void LaunchGrenade( void ); void AddDonkVictim( const CBaseEntity* pVictim ); From bc1c951015a274fb038de2ac05e07afa722f0696 Mon Sep 17 00:00:00 2001 From: Ashetf2 Date: Mon, 17 Mar 2025 12:35:44 -0500 Subject: [PATCH 8/8] fixed inspecting when ending singlyreload yey --- src/game/shared/tf/tf_weaponbase.cpp | 14 +++++++++++--- src/game/shared/tf/tf_weaponbase.h | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/game/shared/tf/tf_weaponbase.cpp b/src/game/shared/tf/tf_weaponbase.cpp index 0348bd23c19..512325d6138 100644 --- a/src/game/shared/tf/tf_weaponbase.cpp +++ b/src/game/shared/tf/tf_weaponbase.cpp @@ -2068,8 +2068,10 @@ bool CTFWeaponBase::ReloadSingly( void ) case TF_RELOAD_FINISH: default: { + // we create a variable that tracks from curtime to the time + the duration of the finish reload activity if ( SendWeaponAnim( ACT_RELOAD_FINISH ) ) { + m_flTimeFinishReloadSingly = gpGlobals->curtime + SequenceDuration(); // We're done, allow primary attack as soon as we like unless we're an energy weapon. // if ( IsEnergyWeapon() ) // { @@ -2577,11 +2579,17 @@ void CTFWeaponBase::HandleInspect() { return; } - + // Don't inspect if the player has just fired - if ( gpGlobals->curtime < m_flNextPrimaryAttack ) + if ( gpGlobals->curtime < m_flNextPrimaryAttack ) { - return; + return; + } + + // Don't inspect if the weapon isn't idle after reloading the last bullet + if ( gpGlobals->curtime < m_flTimeFinishReloadSingly ) + { + return; } m_nInspectStage = INSPECT_INVALID; diff --git a/src/game/shared/tf/tf_weaponbase.h b/src/game/shared/tf/tf_weaponbase.h index aba20f62157..e3280be2edf 100644 --- a/src/game/shared/tf/tf_weaponbase.h +++ b/src/game/shared/tf/tf_weaponbase.h @@ -710,6 +710,8 @@ class CTFWeaponBase : public CBaseCombatWeapon, public IHasOwner, public IHasGen int m_iLastCritCheckFrame; int m_iCurrentSeed; float m_flLastRapidFireCritCheckTime; + + float m_flTimeFinishReloadSingly; // tc2 float m_flLastDeployTime; float m_flLastReadyTime;