Skip to content

Commit 895615e

Browse files
committed
Merge pull request BSVino#43 from TomyLobo/fix-akimbo-quickreload
Fix NPE in new akimbo Deploy/Holster code
2 parents d4f5174 + 693eb2f commit 895615e

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

mp/src/game/shared/sdk/weapon_akimbobase.cpp

+23-13
Original file line numberDiff line numberDiff line change
@@ -85,27 +85,27 @@ Activity CAkimboBase::GetIdleActivity(void)
8585

8686
bool CAkimboBase::Deploy()
8787
{
88-
// Transfer iClip1 of single pistol to m_iRightClip
89-
SDKWeaponID eSingleId = AliasToWeaponID(GetSDKWpnData().m_szSingle);
90-
91-
CWeaponSDKBase *pSingle = GetPlayerOwner()->FindWeapon(eSingleId);
92-
Assert(pSingle);
88+
CWeaponSDKBase *pSingle = FindSingleWeapon();
9389

94-
m_iRightClip = pSingle->m_iClip1;
95-
m_iClip1 = m_iLeftClip + m_iRightClip;
90+
if (pSingle)
91+
{
92+
// Transfer iClip1 of single pistol to m_iRightClip
93+
m_iRightClip = pSingle->m_iClip1;
94+
m_iClip1 = m_iLeftClip + m_iRightClip;
95+
}
9696

9797
return BaseClass::Deploy();
9898
}
9999

100100
bool CAkimboBase::Holster(CBaseCombatWeapon *pSwitchingTo)
101101
{
102-
// Transfer m_iRightClip into iClip1 of single pistol
103-
SDKWeaponID eSingleId = AliasToWeaponID(GetSDKWpnData().m_szSingle);
104-
105-
CWeaponSDKBase *pSingle = GetPlayerOwner()->FindWeapon(eSingleId);
106-
Assert(pSingle);
102+
CWeaponSDKBase *pSingle = FindSingleWeapon();
107103

108-
pSingle->m_iClip1 = m_iRightClip;
104+
if (pSingle)
105+
{
106+
// Transfer m_iRightClip into iClip1 of single pistol
107+
pSingle->m_iClip1 = m_iRightClip;
108+
}
109109

110110
return BaseClass::Holster(pSwitchingTo);
111111
}
@@ -261,3 +261,13 @@ const Vector CAkimboBase::GetShootPosition(CSDKPlayer* pShooter)
261261

262262
return vecPosition + vecRight * (m_bShootRight ? 4 : -4);
263263
}
264+
265+
CWeaponSDKBase *CAkimboBase::FindSingleWeapon()
266+
{
267+
SDKWeaponID eSingleId = AliasToWeaponID(GetSDKWpnData().m_szSingle);
268+
269+
CWeaponSDKBase *pSingle = GetPlayerOwner()->FindWeapon(eSingleId);
270+
Assert(pSingle);
271+
272+
return pSingle;
273+
}

mp/src/game/shared/sdk/weapon_akimbobase.h

+4
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ class CAkimboBase : public CWeaponSDKBase
8181
virtual int GetWeight(void) const;
8282

8383
const Vector GetShootPosition(CSDKPlayer* pShooter);
84+
85+
// Finds the single variant of this akimbo weapon
86+
CWeaponSDKBase *FindSingleWeapon();
87+
8488
protected:
8589
virtual bool NeedsReload( int iClipSize1, int iClipSize2 );
8690
};

0 commit comments

Comments
 (0)