From 9786f78da4ad20141ee88dcc19e7acd0f45609a0 Mon Sep 17 00:00:00 2001 From: MaddMugsy Date: Tue, 3 Apr 2012 22:41:17 +0000 Subject: [PATCH] Fixed a bug that was potentially introduced with the underbarrel weapons. Now checks for pSoldier != NULL when removing attachments, so Ctrl+Shift+F doesn't break. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5152 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/Items.cpp | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index 29e41174..6a173948 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -7481,21 +7481,24 @@ BOOLEAN OBJECTTYPE::RemoveAttachment( OBJECTTYPE* pAttachment, OBJECTTYPE * pNew } } - // if in attached weapon mode and don't have weapon with GL attached in hand, reset weapon mode - if ( ( (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )&& !IsGrenadeLauncherAttached( &(pSoldier->inv[ HANDPOS ]) ) ) || - ( (pSoldier->bWeaponMode == WM_ATTACHED_UB || pSoldier->bWeaponMode == WM_ATTACHED_UB_BURST || pSoldier->bWeaponMode == WM_ATTACHED_UB_AUTO )&& !IsUnderBarrelAttached( &(pSoldier->inv[ HANDPOS ] ) ) ) ) + if (pSoldier != NULL) { - if ( !Weapon[pSoldier->inv[ HANDPOS ].usItem].NoSemiAuto ) + // if in attached weapon mode and don't have weapon with GL attached in hand, reset weapon mode + if ( ( (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )&& !IsGrenadeLauncherAttached( &(pSoldier->inv[ HANDPOS ]) ) ) || + ( (pSoldier->bWeaponMode == WM_ATTACHED_UB || pSoldier->bWeaponMode == WM_ATTACHED_UB_BURST || pSoldier->bWeaponMode == WM_ATTACHED_UB_AUTO )&& !IsUnderBarrelAttached( &(pSoldier->inv[ HANDPOS ] ) ) ) ) { - pSoldier->bWeaponMode = WM_NORMAL; - pSoldier->bDoBurst = FALSE; - pSoldier->bDoAutofire = 0; - } - else - { - pSoldier->bWeaponMode = WM_AUTOFIRE; - pSoldier->bDoBurst = TRUE; - pSoldier->bDoAutofire = 1; + if ( !Weapon[pSoldier->inv[ HANDPOS ].usItem].NoSemiAuto ) + { + pSoldier->bWeaponMode = WM_NORMAL; + pSoldier->bDoBurst = FALSE; + pSoldier->bDoAutofire = 0; + } + else + { + pSoldier->bWeaponMode = WM_AUTOFIRE; + pSoldier->bDoBurst = TRUE; + pSoldier->bDoAutofire = 1; + } } }