From f5e3733f62dacdf23d29764d4c661e54b072d284 Mon Sep 17 00:00:00 2001 From: Wanne Date: Fri, 18 Nov 2011 09:02:42 +0000 Subject: [PATCH] - Bugfix: Added minimum zero condition for weapon deteriorate test as random generator is unsigned variable (by Buggler) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@4804 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/Weapons.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index cdb68237..76540e33 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -1708,9 +1708,9 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) OBJECTTYPE* pA= &(*iter); if ( (*pA)[0]->data.objectStatus >=USABLE) { - INT16 ammoReliability = Item[(*pInHand)[0]->data.gun.usGunAmmoItem].bReliability; - INT16 uiDepreciateTest = BASIC_DEPRECIATE_CHANCE + 3 * - (Item[ iter->usItem ].bReliability + ammoReliability); + INT8 bAmmoReliability = Item[(*pInHand)[0]->data.gun.usGunAmmoItem].bReliability; + uiDepreciateTest = max( BASIC_DEPRECIATE_CHANCE + 3 * + (Item[ iter->usItem ].bReliability + bAmmoReliability), 0); if ( !PreRandom( uiDepreciateTest ) && ( pSoldier->inv[ pSoldier->ubAttackingHand ][0]->data.objectStatus > 1) ) (*pA)[0]->data.objectStatus--; //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"rel =%d ",Item[ iter->usItem ].bReliability ); @@ -2084,7 +2084,7 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) // ammoReliability = Item[(*pGun)[0]->data.gun.usGunAmmoItem].bReliability; //} - uiDepreciateTest = BASIC_DEPRECIATE_CHANCE + 3 * GetReliability( &(pSoldier->inv[pSoldier->ubAttackingHand]) ); + uiDepreciateTest = max( BASIC_DEPRECIATE_CHANCE + 3 * GetReliability( &(pSoldier->inv[pSoldier->ubAttackingHand]) ), 0); if ( !PreRandom( uiDepreciateTest ) && ( pSoldier->inv[ pSoldier->ubAttackingHand ][0]->data.objectStatus > 1) ) { @@ -2259,9 +2259,9 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) OBJECTTYPE* pA= &(*iter); if ( (*pA)[0]->data.objectStatus >=USABLE) { - INT16 ammoReliability = Item[(*pInHand)[0]->data.gun.usGunAmmoItem].bReliability; - INT16 uiDepreciateTest = BASIC_DEPRECIATE_CHANCE + 3 * - (Item[ iter->usItem ].bReliability + ammoReliability); + INT8 bAmmoReliability = Item[(*pInHand)[0]->data.gun.usGunAmmoItem].bReliability; + uiDepreciateTest = max( BASIC_DEPRECIATE_CHANCE + 3 * + (Item[ iter->usItem ].bReliability + bAmmoReliability), 0); if ( !PreRandom( uiDepreciateTest ) && ( pSoldier->inv[ pSoldier->ubAttackingHand ][0]->data.objectStatus > 1) ) (*pA)[0]->data.objectStatus--; //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"rel =%d ",Item[ iter->usItem ].bReliability ); @@ -2637,7 +2637,7 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) } */ - uiDepreciateTest = BASIC_DEPRECIATE_CHANCE + 3 * ( GetReliability( &(pSoldier->inv[ pSoldier->ubAttackingHand ]) ) ); + uiDepreciateTest = max( BASIC_DEPRECIATE_CHANCE + 3 * ( GetReliability( &(pSoldier->inv[ pSoldier->ubAttackingHand ]) ) ), 0); if ( !PreRandom( uiDepreciateTest ) && ( pSoldier->inv[ pSoldier->ubAttackingHand ][0]->data.objectStatus > 1) ) {