diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index 39ad253d..82edd885 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -2536,20 +2536,17 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) { INT16 ammoReliability = Item[(*pObjAttHand)[0]->data.gun.usGunAmmoItem].bReliability; // HEADROCK HAM 5: Variable base chance - INT32 depreciatetest = 0; if ( UsingNewCTHSystem() == true) { UINT16 usBaseChance = gGameCTHConstants.BASIC_RELIABILITY_ODDS; FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)gItemSettings.usBasicDeprecateChance); // Compare original odds to new odds. - depreciatetest = usBaseChance + (INT16)( dReliabilityRatio * (Item[ iter->usItem ].bReliability + ammoReliability) ); + uiDepreciateTest = usBaseChance + (INT16)( dReliabilityRatio * (Item[ iter->usItem ].bReliability + ammoReliability) ); + uiDepreciateTest = max(0, uiDepreciateTest); } else { - depreciatetest = gItemSettings.usBasicDeprecateChance + 3 * (Item[iter->usItem].bReliability + ammoReliability); + uiDepreciateTest = max( 0, gItemSettings.usBasicDeprecateChance + 3 * (Item[iter->usItem].bReliability + ammoReliability) ); } - - uiDepreciateTest = min( 100, max( 0, depreciatetest ) ); - if ( !PreRandom( uiDepreciateTest ) && ( (*pObjAttHand)[0]->data.objectStatus > 1) ) { (*pA)[0]->data.objectStatus--; @@ -3042,20 +3039,18 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) // Flugente: Added a malus to reliability for overheated guns // HEADROCK HAM 5: Variable NCTH base change - INT32 depreciatetest = 0; if ( UsingNewCTHSystem() == true) { UINT16 usBaseChance = gGameCTHConstants.BASIC_RELIABILITY_ODDS; FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)gItemSettings.usBasicDeprecateChance); // Compare original odds to new odds. - uiDepreciateTest = (usBaseChance + (INT16)( dReliabilityRatio * GetReliability( &(pSoldier->inv[pSoldier->ubAttackingHand]) ) - iOverheatReliabilityMalus)) / dirtincreasefactor; + uiDepreciateTest = (UINT32)((usBaseChance + (INT16)( dReliabilityRatio * GetReliability( &(pSoldier->inv[pSoldier->ubAttackingHand]) ) - iOverheatReliabilityMalus)) / dirtincreasefactor); + uiDepreciateTest = max(0, uiDepreciateTest); } else { - depreciatetest = ( gItemSettings.usBasicDeprecateChance + 3 * GetReliability( pObjAttHand ) - iOverheatReliabilityMalus ) / dirtincreasefactor; + uiDepreciateTest = max( (UINT32)((gItemSettings.usBasicDeprecateChance + 3 * GetReliability( pObjAttHand ) - iOverheatReliabilityMalus) / dirtincreasefactor), 0 ); } - uiDepreciateTest = min( 100, max( 0, depreciatetest ) ); - if ( !PreRandom( uiDepreciateTest ) && ( (*pObjAttHand)[0]->data.objectStatus > 1) ) { (*pObjAttHand)[0]->data.objectStatus--; @@ -3271,21 +3266,17 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) { INT16 ammoReliability = Item[(*pObjUsed)[0]->data.gun.usGunAmmoItem].bReliability; // HEADROCK HAM 5: Variable base chance - - INT32 depreciatetest = 0; if ( UsingNewCTHSystem() == true ) { UINT16 usBaseChance = gGameCTHConstants.BASIC_RELIABILITY_ODDS; FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)gItemSettings.usBasicDeprecateChance); // Compare original odds to new odds. - depreciatetest = usBaseChance + (INT16)( dReliabilityRatio * (Item[ iter->usItem ].bReliability + ammoReliability) ); + uiDepreciateTest = usBaseChance + (INT16)( dReliabilityRatio * (Item[ iter->usItem ].bReliability + ammoReliability) ); + uiDepreciateTest = __max(0, uiDepreciateTest); } else { - depreciatetest = gItemSettings.usBasicDeprecateChance + 3 * (Item[iter->usItem].bReliability + ammoReliability); + uiDepreciateTest = __max( 0, gItemSettings.usBasicDeprecateChance + 3 * (Item[iter->usItem].bReliability + ammoReliability) ); } - - uiDepreciateTest = min( 100, max( 0, depreciatetest ) ); - if ( !PreRandom( uiDepreciateTest ) && ( (*pObjUsed)[0]->data.objectStatus > 1) ) { (*pA)[0]->data.objectStatus--; @@ -3812,20 +3803,18 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) } // Flugente: Added a malus to reliability for overheated guns - INT32 depreciatetest = 0; if ( UsingNewCTHSystem() == true ) { UINT16 usBaseChance = gGameCTHConstants.BASIC_RELIABILITY_ODDS; FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)gItemSettings.usBasicDeprecateChance); // Compare original odds to new odds. - uiDepreciateTest = usBaseChance + (INT16)( dReliabilityRatio * GetReliability( &(pSoldier->inv[ pSoldier->ubAttackingHand ])) - iOverheatReliabilityMalus) / dirtincreasefactor; + uiDepreciateTest = (UINT32)(usBaseChance + (INT16)( dReliabilityRatio * GetReliability( &(pSoldier->inv[ pSoldier->ubAttackingHand ])) - iOverheatReliabilityMalus) / dirtincreasefactor); + uiDepreciateTest = max(0, uiDepreciateTest); } else { - depreciatetest = (gItemSettings.usBasicDeprecateChance + 3 * (GetReliability( pObjUsed )) - iOverheatReliabilityMalus) / dirtincreasefactor; + uiDepreciateTest = max( (UINT32)((gItemSettings.usBasicDeprecateChance + 3 * (GetReliability( pObjUsed )) - iOverheatReliabilityMalus) / dirtincreasefactor), 0 ); } - uiDepreciateTest = min( 100, max( 0, depreciatetest ) ); - if ( !PreRandom( uiDepreciateTest ) && ( (*pObjUsed)[0]->data.objectStatus > 1) ) { (*pObjUsed)[0]->data.objectStatus--;