diff --git a/GameVersion.cpp b/GameVersion.cpp index 8646b0d0..0912812e 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -23,7 +23,7 @@ INT16 zVersionLabel[256] = { L"Beta v. 0.98" }; #else //RELEASE BUILD VERSION - INT16 zVersionLabel[256] = { L"Release v1.13.438" }; + INT16 zVersionLabel[256] = { L"Release v1.13.439" }; #endif diff --git a/Tactical/Item Types.h b/Tactical/Item Types.h index c4e1d48a..175c8a19 100644 --- a/Tactical/Item Types.h +++ b/Tactical/Item Types.h @@ -312,7 +312,7 @@ typedef struct BOOLEAN lockbomb; BOOLEAN flare; INT16 percentnoisereduction; - BOOLEAN bipod; + INT16 bipod; INT16 tohitbonus; INT16 bestlaserrange; INT16 rangebonus; diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index bd2a3717..224aac05 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -6214,14 +6214,18 @@ INT16 GetToHitBonus( OBJECTTYPE * pObj, INT32 iRange, UINT8 bLightLevel, BOOLEAN // Snap: bipod is effective only in the prone stance - if ( ! Item[pObj->usItem].bipod || fProneStance ) - bns = BonusReduceMore( LaserBonus( &Item[pObj->usItem], iRange, bLightLevel), pObj->bStatus[0] ); + if ( fProneStance ) + bns += Item[pObj->usItem].bipod; + + bns += BonusReduceMore( LaserBonus( &Item[pObj->usItem], iRange, bLightLevel), pObj->bStatus[0] ); bns += Item[pObj->usGunAmmoItem].tohitbonus; for (int i = 0; i < MAX_ATTACHMENTS; i++) { - if ( ! Item[pObj->usAttachItem[i]].bipod || fProneStance ) - bns += BonusReduceMore( LaserBonus( &Item[pObj->usAttachItem[i]], iRange, bLightLevel), pObj->bAttachStatus[i] ); + if ( fProneStance ) + bns += Item[pObj->usAttachItem[i]].bipod; + + bns += BonusReduceMore( LaserBonus( &Item[pObj->usAttachItem[i]], iRange, bLightLevel), pObj->bAttachStatus[i] ); } // Snap (TODO): add special treatment of laser scopes @@ -6234,14 +6238,18 @@ INT16 GetBurstToHitBonus( OBJECTTYPE * pObj, BOOLEAN fProneStance ) // Snap: bipod is effective only in the prone stance - if ( ! Item[pObj->usItem].bipod || fProneStance ) - bns = BonusReduceMore( Item[pObj->usItem].bursttohitbonus, pObj->bStatus[0] ); + if ( fProneStance ) + bns += Item[pObj->usItem].bipod; + + bns += BonusReduceMore( Item[pObj->usItem].bursttohitbonus, pObj->bStatus[0] ); bns += Item[pObj->usGunAmmoItem].bursttohitbonus ; for (int i = 0; i < MAX_ATTACHMENTS; i++) { - if ( ! Item[pObj->usAttachItem[i]].bipod || fProneStance ) - bns += BonusReduceMore( Item[pObj->usAttachItem[i]].bursttohitbonus, pObj->bAttachStatus[i] ); + if ( fProneStance ) + bns += Item[pObj->usAttachItem[i]].bipod; + + bns += BonusReduceMore( Item[pObj->usAttachItem[i]].bursttohitbonus, pObj->bAttachStatus[i] ); } return( bns ); @@ -6354,13 +6362,19 @@ INT16 GetAutoToHitBonus( OBJECTTYPE * pObj, BOOLEAN fProneStance ) // Snap: bipod is effective only in the prone stance - if ( ! Item[pObj->usItem].bipod || fProneStance ) - bns = BonusReduceMore( Item[pObj->usItem].autofiretohitbonus, pObj->bStatus[0] ); + if ( fProneStance ) + bns += Item[pObj->usItem].bipod; + + + bns += BonusReduceMore( Item[pObj->usItem].autofiretohitbonus, pObj->bStatus[0] ); + bns += Item[pObj->usGunAmmoItem].autofiretohitbonus ; for (int i = 0; i < MAX_ATTACHMENTS; i++) { - if ( ! Item[pObj->usAttachItem[i]].bipod || fProneStance ) + if ( fProneStance ) + bns += Item[pObj->usAttachItem[i]].bipod; + bns += BonusReduceMore( Item[pObj->usAttachItem[i]].autofiretohitbonus, pObj->bAttachStatus[i] ); } diff --git a/Utils/XML_Items.cpp b/Utils/XML_Items.cpp index 7c19cf27..04c98840 100644 --- a/Utils/XML_Items.cpp +++ b/Utils/XML_Items.cpp @@ -565,7 +565,7 @@ itemEndElementHandle(void *userData, const char *name) else if(strcmp(name, "Bipod") == 0) { pData->curElement = ELEMENT; - pData->curItem.bipod = (BOOLEAN) atol(pData->szCharData); + pData->curItem.bipod = (INT16) atol(pData->szCharData); } else if(strcmp(name, "ToHitBonus") == 0) {