diff --git a/Tactical/Interface Panels.cpp b/Tactical/Interface Panels.cpp index 4e811eb2..0e02cf9e 100644 --- a/Tactical/Interface Panels.cpp +++ b/Tactical/Interface Panels.cpp @@ -1090,7 +1090,8 @@ void UpdateSMPanel( ) if ( ( ( IsGunAutofireCapable( &gpSMCurrentMerc->inv[HANDPOS] ) || IsGunBurstCapable( &gpSMCurrentMerc->inv[HANDPOS], FALSE, gpSMCurrentMerc ) ) && !Weapon[gpSMCurrentMerc->inv[HANDPOS].usItem].NoSemiAuto ) || IsGrenadeLauncherAttached ( &(gpSMCurrentMerc->inv[HANDPOS]) ) || IsWeaponAttached( &(gpSMCurrentMerc->inv[HANDPOS]), IC_GUN ) - || IsWeaponAttached( &( gpSMCurrentMerc->inv[HANDPOS] ), IC_BLADE ) ) + || IsWeaponAttached( &( gpSMCurrentMerc->inv[HANDPOS] ), IC_BLADE ) + || HasSeveralBarrelConfigurations( gpSMCurrentMerc->inv[HANDPOS].usItem ) ) { EnableButton( iSMPanelButtons[ BURSTMODE_BUTTON ] ); } diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index 5e12cea1..2bddab75 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -2539,6 +2539,16 @@ UINT8 GetFittingBarrelMode( UINT16 usItem, UINT8 aBarrelMode ) return bestfound; } +bool HasSeveralBarrelConfigurations( UINT16 usItem ) +{ + if ( ( Item[usItem].usItemClass & IC_BOBBY_GUN ) ) + { + return (Weapon[Item[usItem].ubClassIndex].barrelconfigurations.size() > 1); + } + + return false; +} + // Flugente: this function calls UseGun and handles the firing of severeal shots at once BOOLEAN UseGunWrapper( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) { diff --git a/Tactical/Weapons.h b/Tactical/Weapons.h index 3b49b992..2c223ffb 100644 --- a/Tactical/Weapons.h +++ b/Tactical/Weapons.h @@ -546,5 +546,6 @@ BOOLEAN ArtilleryStrike( UINT16 usItem, UINT8 ubOwnerID, UINT32 usStartingGridNo // Flugente: functions for using several barrels at once UINT8 GetNextBarrelMode( UINT16 usItem, UINT8 aBarrelMode ); UINT8 GetFittingBarrelMode( UINT16 usItem, UINT8 aBarrelMode ); // return a number of barrels this gun can fire, equal or below aBarrelMode +bool HasSeveralBarrelConfigurations( UINT16 usItem ); #endif