From c117a02441ba257716d086f0aaaad1b3cd4e1684 Mon Sep 17 00:00:00 2001 From: Flugente Date: Sat, 17 May 2014 19:21:17 +0000 Subject: [PATCH] - The base chance for gun degradation, BASIC_DEPRECIATE_CHANCE, is now externalised to Item_Settings.ini. - Fix: BASIC_RELIABILITY_ODDS now ranges from 0 to 10000. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7208 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameSettings.cpp | 3 ++- GameSettings.h | 1 + Tactical/LOS.cpp | 4 ++-- Tactical/Weapons.cpp | 20 ++++++++++---------- Tactical/Weapons.h | 3 ++- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/GameSettings.cpp b/GameSettings.cpp index 3a73090a..200d39b6 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -2783,6 +2783,7 @@ void LoadItemSettings() // -------------- COMMON MODIFIERS ---------------- gItemSettings.fBestLaserRangeModifier = iniReader.ReadFloat ("Common Settings","BEST_LASER_RANGE_MODIFIER", 1.0f, 0.1f, 5.0f); + gItemSettings.usBasicDeprecateChance = iniReader.ReadInteger("Common Settings","BASIC_DEPRECIATE_CHANCE", 15, 1, 10000 ); // -------------- WEAPON MODIFIERS ---------------- // weapon overheating modifiers @@ -3259,7 +3260,7 @@ void LoadCTHConstants() gGameCTHConstants.SCOPE_EFFECTIVENESS_MINIMUM_SNIPER = iniReader.ReadInteger("General", "SCOPE_EFFECTIVENESS_MINIMUM_SNIPER", 100, 0, 100); gGameCTHConstants.SIDE_FACING_DIVISOR = iniReader.ReadFloat("General", "SIDE_FACING_DIVISOR", 2.0, 1.0f, 10.0f); // HEADROCK HAM 5: Basic chance to lose condition point when firing - gGameCTHConstants.BASIC_RELIABILITY_ODDS = iniReader.ReadInteger("General", "BASIC_RELIABILITY_ODDS", 15, 0, 100); + gGameCTHConstants.BASIC_RELIABILITY_ODDS = iniReader.ReadInteger("General", "BASIC_RELIABILITY_ODDS", 15, 0, 10000); //////////////////////////////////////////////////////////// // Coefficients for factors affecting Base CTH diff --git a/GameSettings.h b/GameSettings.h index 4f3ec9cf..3b4ea3bb 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -2224,6 +2224,7 @@ typedef struct { // -------------- COMMON MODIFIERS ---------------- FLOAT fBestLaserRangeModifier; + UINT16 usBasicDeprecateChance; // -------------- WEAPON MODIFIERS ---------------- // weapon overheating modifiers diff --git a/Tactical/LOS.cpp b/Tactical/LOS.cpp index 111d9aa7..6de372a4 100644 --- a/Tactical/LOS.cpp +++ b/Tactical/LOS.cpp @@ -6022,13 +6022,13 @@ INT8 FireBulletGivenTargetTrapOnly( SOLDIERTYPE* pThrower, OBJECTTYPE* pObj, INT if ( UsingNewCTHSystem() == true) { UINT16 usBaseChance = gGameCTHConstants.BASIC_RELIABILITY_ODDS; - FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)BASIC_DEPRECIATE_CHANCE); // Compare original odds to new odds. + FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)gItemSettings.usBasicDeprecateChance); // Compare original odds to new odds. uiDepreciateTest = usBaseChance + (INT16)( dReliabilityRatio * GetReliability( pObj ) - iOverheatReliabilityMalus); uiDepreciateTest = max(0, uiDepreciateTest); } else { - uiDepreciateTest = max( BASIC_DEPRECIATE_CHANCE + 3 * GetReliability( pObj ) - iOverheatReliabilityMalus, 0); + uiDepreciateTest = max( gItemSettings.usBasicDeprecateChance + 3 * GetReliability( pObj ) - iOverheatReliabilityMalus, 0 ); } if ( !PreRandom( uiDepreciateTest ) && ( (*pObj)[0]->data.objectStatus > 1) ) { diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index 463cd853..53666069 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -1925,13 +1925,13 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) if ( UsingNewCTHSystem() == true) { UINT16 usBaseChance = gGameCTHConstants.BASIC_RELIABILITY_ODDS; - FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)BASIC_DEPRECIATE_CHANCE); // Compare original odds to new odds. + FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)gItemSettings.usBasicDeprecateChance); // Compare original odds to new odds. uiDepreciateTest = usBaseChance + (INT16)( dReliabilityRatio * (Item[ iter->usItem ].bReliability + ammoReliability) ); uiDepreciateTest = max(0, uiDepreciateTest); } else { - uiDepreciateTest = max(0,BASIC_DEPRECIATE_CHANCE + 3 * (Item[ iter->usItem ].bReliability + ammoReliability)); + uiDepreciateTest = max( 0, gItemSettings.usBasicDeprecateChance + 3 * (Item[iter->usItem].bReliability + ammoReliability) ); } if ( !PreRandom( uiDepreciateTest ) && ( (*pObjAttHand)[0]->data.objectStatus > 1) ) { @@ -2317,18 +2317,18 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) // ammoReliability = Item[(*pGun)[0]->data.gun.usGunAmmoItem].bReliability; //} - // Flugente FTW 1: Added a malus to reliability for overheated guns + // Flugente: Added a malus to reliability for overheated guns // HEADROCK HAM 5: Variable NCTH base change if ( UsingNewCTHSystem() == true) { UINT16 usBaseChance = gGameCTHConstants.BASIC_RELIABILITY_ODDS; - FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)BASIC_DEPRECIATE_CHANCE); // Compare original odds to new 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); uiDepreciateTest = max(0, uiDepreciateTest); } else { - uiDepreciateTest = max( BASIC_DEPRECIATE_CHANCE + 3 * GetReliability( pObjAttHand ) - iOverheatReliabilityMalus, 0); + uiDepreciateTest = max( gItemSettings.usBasicDeprecateChance + 3 * GetReliability( pObjAttHand ) - iOverheatReliabilityMalus, 0 ); } if ( !PreRandom( uiDepreciateTest ) && ( (*pObjAttHand)[0]->data.objectStatus > 1) ) { @@ -2531,13 +2531,13 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) if ( UsingNewCTHSystem() == true ) { UINT16 usBaseChance = gGameCTHConstants.BASIC_RELIABILITY_ODDS; - FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)BASIC_DEPRECIATE_CHANCE); // Compare original odds to new odds. + FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)gItemSettings.usBasicDeprecateChance); // Compare original odds to new odds. uiDepreciateTest = usBaseChance + (INT16)( dReliabilityRatio * (Item[ iter->usItem ].bReliability + ammoReliability) ); uiDepreciateTest = __max(0, uiDepreciateTest); } else { - uiDepreciateTest = __max(0,BASIC_DEPRECIATE_CHANCE + 3 * (Item[ iter->usItem ].bReliability + ammoReliability)); + uiDepreciateTest = __max( 0, gItemSettings.usBasicDeprecateChance + 3 * (Item[iter->usItem].bReliability + ammoReliability) ); } if ( !PreRandom( uiDepreciateTest ) && ( (*pObjUsed)[0]->data.objectStatus > 1) ) { @@ -2957,17 +2957,17 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) } */ - // Flugente FTW 1: Added a malus to reliability for overheated guns + // Flugente: Added a malus to reliability for overheated guns if ( UsingNewCTHSystem() == true ) { UINT16 usBaseChance = gGameCTHConstants.BASIC_RELIABILITY_ODDS; - FLOAT dReliabilityRatio = 3.0f * ((FLOAT)usBaseChance / (FLOAT)BASIC_DEPRECIATE_CHANCE); // Compare original odds to new 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); uiDepreciateTest = max(0, uiDepreciateTest); } else { - uiDepreciateTest = max( BASIC_DEPRECIATE_CHANCE + 3 * ( GetReliability( pObjUsed ) ) - iOverheatReliabilityMalus, 0); + uiDepreciateTest = max( gItemSettings.usBasicDeprecateChance + 3 * (GetReliability( pObjUsed )) - iOverheatReliabilityMalus, 0 ); } if ( !PreRandom( uiDepreciateTest ) && ( (*pObjUsed)[0]->data.objectStatus > 1) ) diff --git a/Tactical/Weapons.h b/Tactical/Weapons.h index 2dc7ec9b..5d0db55a 100644 --- a/Tactical/Weapons.h +++ b/Tactical/Weapons.h @@ -80,8 +80,9 @@ void HandleTacticalEffectsOfEquipmentChange( SOLDIERTYPE *pSoldier, UINT32 uiInv #define MIN_MORTAR_RANGE 150 // minimum range of a mortar +// Flugente: this value is now externalised to gItemSettings.usBasicDeprecateChance // NB this is arbitrary, chances in DG ranged from 1 in 6 to 1 in 20 -#define BASIC_DEPRECIATE_CHANCE 15 +//#define BASIC_DEPRECIATE_CHANCE 15 // WEAPON CLASSES enum