- Tank have superior surrender strength, making it much harder to get the enemy to surrender when he has tanks

Overheating:
- OVERHEATING_DISPLAY_JAMPERCENTAGE controls wether the temperature bar shows temperature/jam threshold(true) or temperature/damage threshold (false)
- OVERHEATING_TEMPERATURE_GLOBAL_MODIFIER is obsolete and this removed, as the same effect can be achieved by OVERHEATING_TEMPERATURE_PISTOL_gunclass



git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6531 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2013-10-25 19:23:55 +00:00
parent f008316275
commit b23be615b9
7 changed files with 27 additions and 15 deletions
+1 -1
View File
@@ -1487,9 +1487,9 @@ void LoadGameExternalOptions()
// Flugente: These settings control the behavior of Weapon Overheating, its severity, and its display.
gGameExternalOptions.fWeaponOverheating = iniReader.ReadBoolean("Tactical Weapon Overheating Settings","OVERHEATING",FALSE);
gGameExternalOptions.fDisplayOverheatThermometer = iniReader.ReadBoolean("Tactical Weapon Overheating Settings","OVERHEATING_DISPLAY_THERMOMETER",TRUE);
gGameExternalOptions.fDisplayOverheatJamPercentage = iniReader.ReadBoolean("Tactical Weapon Overheating Settings","OVERHEATING_DISPLAY_JAMPERCENTAGE",TRUE);
gGameExternalOptions.ubOverheatThermometerRedOffset = iniReader.ReadInteger("Tactical Weapon Overheating Settings","OVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET", 100, 0, 255);
gGameExternalOptions.iCooldownModificatorLonelyBarrel = iniReader.ReadFloat ("Tactical Weapon Overheating Settings","OVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", 1.15f, 1.0f, 10.0f);
gGameExternalOptions.iOverheatTemperatureGlobalModfier = iniReader.ReadFloat ("Tactical Weapon Overheating Settings","OVERHEATING_TEMPERATURE_GLOBAL_MODIFIER", 1.0f, 0.1f, 10.0f);
#ifdef ENABLE_ZOMBIES
//################# Tactical Zombie Settings ##################
+1 -1
View File
@@ -1215,9 +1215,9 @@ typedef struct
// Flugente: Weapon Overheating
BOOLEAN fWeaponOverheating; // Should weapons overheat, thus increasing the chance of malfunction?
BOOLEAN fDisplayOverheatThermometer; // Should a 'thermometer' for guns and replacable barrels be displayed?
BOOLEAN fDisplayOverheatJamPercentage; // Should we display temperature/jam threshold (true) or temperature/damage threshold (false)?
UINT8 ubOverheatThermometerRedOffset; // amount of red colour while temperature is below threshold
FLOAT iCooldownModificatorLonelyBarrel; // Cooldown modificator for barrels left alone in the landscape ;-)
FLOAT iOverheatTemperatureGlobalModfier; // a global modifier to the single shot temperature value, if one feels that all values should be lower/higher
// Flugente: Weapon Mounting
BOOLEAN fWeaponResting; // Should it be possible to rest your weapon on structures in crouched position?
+1 -1
View File
@@ -11577,7 +11577,7 @@ void DrawAdvancedValues( OBJECTTYPE *gpItemDescObject )
sTop = gItemDescAdvRegions[cnt-sFirstLine][1].sTop;
sHeight = gItemDescAdvRegions[cnt-sFirstLine][1].sBottom - sTop;
iFloatModifier[0] = Weapon[ gpItemDescObject->usItem ].usOverheatingSingleShotTemperature * gGameExternalOptions.iOverheatTemperatureGlobalModfier;
iFloatModifier[0] = Weapon[ gpItemDescObject->usItem ].usOverheatingSingleShotTemperature;
if ( Item[gpItemDescObject->usItem].usItemClass & IC_GUN )
iFloatModifier[0] *= gItemSettings.fOverheatTemperatureModifierGun[ Weapon[ gpItemDescObject->usItem ].ubWeaponType ];
else if ( Item[gpItemDescObject->usItem].usItemClass & IC_LAUNCHER )
+6 -5
View File
@@ -3918,7 +3918,7 @@ void INVRenderItem( UINT32 uiBuffer, SOLDIERTYPE * pSoldier, OBJECTTYPE *pObjec
if ( pSoldier )
pObjShown = pSoldier->GetUsedWeapon(pObject);
FLOAT overheatjampercentage = GetGunOverheatJamPercentage( pObjShown );
FLOAT overheatjampercentage = GetGunOverheatDisplayPercentage( pObjShown );
UINT32 red, green, blue;
UINT8 TemperatureStringNum = GetTemperatureString( overheatjampercentage, &red, &green, &blue );
@@ -6750,7 +6750,8 @@ void RenderItemDescriptionBox( )
iter != (*gpItemDescObject)[gubItemDescStatusIndex]->attachments.end(); ++iter, ++cnt) {
//Madd: again, only do this if the slot isn't hidden
if( iter->exists() && gItemDescAttachmentsXY[cnt].sHeight > 0 && gItemDescAttachmentsXY[cnt].sWidth > 0 ){
if( iter->exists() && gItemDescAttachmentsXY[cnt].sHeight > 0 && gItemDescAttachmentsXY[cnt].sWidth > 0 )
{
sCenX = gsInvDescX + gItemDescAttachmentsXY[cnt].sX;
sCenY = gsInvDescY + gItemDescAttachmentsXY[cnt].sY;
INVRenderItem( guiSAVEBUFFER, NULL, gpItemDescObject, sCenX, sCenY, gItemDescAttachmentsXY[cnt].sWidth, gItemDescAttachmentsXY[cnt].sHeight, DIRTYLEVEL2, NULL, (UINT8)(RENDER_ITEM_ATTACHMENT1 + cnt), FALSE, 0, gubItemDescStatusIndex );
@@ -6759,9 +6760,9 @@ void RenderItemDescriptionBox( )
DrawItemUIBarEx( gpItemDescObject, (UINT8)(DRAW_ITEM_STATUS_ATTACHMENT1 + cnt), sCenX, sCenY, ITEM_BAR_WIDTH, ITEM_BAR_HEIGHT, Get16BPPColor( STATUS_BAR ), Get16BPPColor( STATUS_BAR_SHADOW ), TRUE , guiSAVEBUFFER, gubItemDescStatusIndex );
// Flugente: overheating
if ( gGameExternalOptions.fWeaponOverheating && ( Item[ (iter)->usItem ].usItemClass & (IC_GUN|IC_LAUNCHER) || Item[ (iter)->usItem ].barrel == TRUE) ) // Flugente FTW 1.1
if ( gGameExternalOptions.fWeaponOverheating && ( Item[ (iter)->usItem ].usItemClass & (IC_GUN|IC_LAUNCHER) || Item[ (iter)->usItem ].barrel == TRUE) ) // Flugente
{
FLOAT overheatjampercentage = GetGunOverheatJamPercentage( &(*iter));
FLOAT overheatjampercentage = GetGunOverheatDisplayPercentage( &(*iter));
UINT32 red, green, blue;
UINT8 TemperatureStringNum = GetTemperatureString( overheatjampercentage, &red, &green, &blue );
@@ -6940,7 +6941,7 @@ void RenderItemDescriptionBox( )
// Record length
INT16 indent = StringPixLength( gTemperatureDesc[0], ITEMDESC_FONT );
FLOAT overheatjampercentage = GetGunOverheatJamPercentage( gpItemDescObject);
FLOAT overheatjampercentage = GetGunOverheatDisplayPercentage( gpItemDescObject);
UINT32 red, green, blue;
UINT8 TemperatureStringNum = GetTemperatureString( overheatjampercentage, &red, &green, &blue );
+4
View File
@@ -15749,6 +15749,10 @@ UINT32 SOLDIERTYPE::GetSurrenderStrength()
else if ( this->ubSoldierClass == SOLDIER_CLASS_ADMINISTRATOR || this->ubSoldierClass == SOLDIER_CLASS_GREEN_MILITIA )
value *= 0.75f;
// tanks won't surrender that easy
if ( TANK(this) )
value *= 10;
return value;
}
+11 -5
View File
@@ -1452,7 +1452,7 @@ BOOLEAN OKFireWeapon( SOLDIERTYPE *pSoldier )
}
// Flugente FTW 1: Get percentage: temperature/damagethreshold
// Flugente: Get percentage: temperature/damagethreshold
FLOAT GetGunOverheatDamagePercentage( FLOAT usTemperature, UINT16 usIndx )
{
FLOAT damagethreshold = Weapon[Item[ usIndx ].ubClassIndex].usOverheatingDamageThreshold;
@@ -1465,7 +1465,7 @@ FLOAT GetGunOverheatDamagePercentage( FLOAT usTemperature, UINT16 usIndx )
return usTemperature/ damagethreshold ;
}
// Flugente FTW 1: Get percentage: temperature/jamthreshold
// Flugente: Get percentage: temperature/jamthreshold
FLOAT GetGunOverheatJamPercentage( FLOAT usTemperature, UINT16 usIndx )
{
FLOAT jamthreshold = Weapon[Item[ usIndx ].ubClassIndex].usOverheatingJamThreshold;
@@ -12159,9 +12159,6 @@ FLOAT GetSingleShotTemperature( OBJECTTYPE *pObj )
modificator += AmmoTypes[(*pObj)[0]->data.gun.ubGunAmmoType].temperatureModificator;
singleshottemperature *= modificator;
// multiply again for global modifer
singleshottemperature *= gGameExternalOptions.iOverheatTemperatureGlobalModfier;
}
return singleshottemperature;
@@ -12193,6 +12190,15 @@ FLOAT GetGunOverheatJamPercentage( OBJECTTYPE * pObj )
return temperature/ jamthreshold ;
}
// Flugente: Get displyed overheat percentage - either GetGunOverheatDamagePercentage or GetGunOverheatJamPercentage
FLOAT GetGunOverheatDisplayPercentage( OBJECTTYPE * pObj )
{
if ( !gGameExternalOptions.fDisplayOverheatJamPercentage )
return GetGunOverheatDamagePercentage(pObj);
return GetGunOverheatJamPercentage(pObj);
}
FLOAT GetOverheatJamThresholdModifier( OBJECTTYPE *pObj )
{
// determine modificator according to attachments
+3 -2
View File
@@ -486,8 +486,8 @@ extern void GetTargetWorldPositions( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo,
extern BOOLEAN OKFireWeapon( SOLDIERTYPE *pSoldier );
extern BOOLEAN CheckForGunJam( SOLDIERTYPE * pSoldier );
extern FLOAT GetGunOverheatDamagePercentage( FLOAT usTemperature, UINT16 usIndx ); // Flugente FTW 1: Get percentage: temperature/damagethreshold
extern FLOAT GetGunOverheatJamPercentage( FLOAT usTemperature, UINT16 usIndx ); // Flugente FTW 1: Get percentage: temperature/jamthreshold
extern FLOAT GetGunOverheatDamagePercentage( FLOAT usTemperature, UINT16 usIndx ); // Flugente: Get percentage: temperature/damagethreshold
extern FLOAT GetGunOverheatJamPercentage( FLOAT usTemperature, UINT16 usIndx ); // Flugente: Get percentage: temperature/jamthreshold
extern INT32 CalcMaxTossRange( SOLDIERTYPE * pSoldier, UINT16 usItem, BOOLEAN fArmed );
extern UINT32 CalcThrownChanceToHit(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos );
@@ -533,6 +533,7 @@ FLOAT GetTemperatureModifier( OBJECTTYPE *pObj );
FLOAT GetSingleShotTemperature( OBJECTTYPE *pObj );
FLOAT GetGunOverheatDamagePercentage( OBJECTTYPE * pObj ); // Flugente: Get percentage: temperature/damagethreshold
FLOAT GetGunOverheatJamPercentage( OBJECTTYPE * pObj ); // Flugente: Get percentage: temperature/jamthreshold
FLOAT GetGunOverheatDisplayPercentage( OBJECTTYPE * pObj ); // Flugente: Get displyed overheat percentage - either GetGunOverheatDamagePercentage or GetGunOverheatJamPercentage
FLOAT GetOverheatJamThresholdModifier( OBJECTTYPE *pObj );
FLOAT GetOverheatJamThreshold( OBJECTTYPE *pObj );
FLOAT GetOverheatDamageThresholdModifier( OBJECTTYPE *pObj );