mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Additional tile properteis update (by anv):
- COVER_TOOLTIP_DISPLAY_DETAILED_TILE_PROPERTIES under [Tactical Cover System Settings] set to true will let "f" cover tooltip to present detailed information about tile. Only relevant (non-zero) info will be shown. - fixed bug causing trap level to be ignored and limited final maximum and minimum camo of given map grid between 0 and 100. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7073 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -1501,6 +1501,10 @@ void LoadGameExternalOptions()
|
||||
gGameExternalOptions.fAdditionalTileProperties = iniReader.ReadBoolean("Tactical Cover System Settings", "COVER_SYSTEM_ADDITIONAL_TILE_PROPERTIES", TRUE );
|
||||
// static shadows decrease brightness
|
||||
gGameExternalOptions.fStaticShadowsDecreaseBrightness = iniReader.ReadBoolean("Tactical Cover System Settings", "COVER_SYSTEM_STATIC_SHADOWS_DECREASE_BRIGHTNESS", FALSE );
|
||||
// camo affinities will be used as caps not multipliers (suggested by mmm) - it will be possible to achieve perfect camo on mixed terrain using mixed camo types
|
||||
gGameExternalOptions.fAlternateMultiTerrainCamoCalculation = iniReader.ReadBoolean("Tactical Cover System Settings", "COVER_SYSTEM_ALTERNATE_MULTI_TERRAIN_CAMO_CALCULATION", TRUE );
|
||||
// cover tooltip ("f") will display detailed properties and their values
|
||||
gGameExternalOptions.fCoverTooltipDetailedTileProperties = iniReader.ReadBoolean("Tactical Cover System Settings","COVER_TOOLTIP_DISPLAY_DETAILED_TILE_PROPERTIES", TRUE);
|
||||
|
||||
//################# Tactical Suppression Fire Settings ##################
|
||||
// These settings control the behavior of Suppression Fire, its severity, and its side-effects.
|
||||
|
||||
@@ -851,6 +851,10 @@ typedef struct
|
||||
BOOLEAN fAdditionalTileProperties;
|
||||
// static shadows decrease brightness
|
||||
BOOLEAN fStaticShadowsDecreaseBrightness;
|
||||
// camo affinities will be used as caps not multipliers (suggested by mmm) - it will be possible to achieve perfect camo on mixed terrain using mixed camo types
|
||||
BOOLEAN fAlternateMultiTerrainCamoCalculation;
|
||||
// cover tooltip ("f") will display detailed properties and their values
|
||||
BOOLEAN fCoverTooltipDetailedTileProperties;
|
||||
|
||||
// HEADROCK HAM B1: Global modifier for mine income (0 is automatically turned to 1 to avoid divide-by-zero.)
|
||||
INT16 usMineIncomePercentage;
|
||||
|
||||
@@ -710,9 +710,86 @@ void DisplayRangeToTarget( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo )
|
||||
|
||||
if(gGameExternalOptions.fAdditionalTileProperties)
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE,
|
||||
gzDisplayCoverText[DC_MSG__COVER_INFORMATION],
|
||||
ubCover, GetDetailedTerrainName(zGivenTileProperties), ubBrightness );
|
||||
if(!gGameExternalOptions.fCoverTooltipDetailedTileProperties)
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE,
|
||||
gzDisplayCoverText[DC_MSG__COVER_INFORMATION],
|
||||
ubCover, GetDetailedTerrainName(zGivenTileProperties), ubBrightness );
|
||||
}
|
||||
else
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE,
|
||||
gzDisplayCoverText[DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO],
|
||||
ubCover, ubBrightness );
|
||||
|
||||
UINT8 ubApplicableProperties = 0;
|
||||
swprintf( zOutputString, L"" );
|
||||
if(zGivenTileProperties.bWoodCamoAffinity > 0)
|
||||
{
|
||||
swprintf( zOutputString + wcslen(zOutputString), gzDisplayCoverText[DC_TTI__WOOD]);
|
||||
swprintf( zOutputString + wcslen(zOutputString), L": %d/100", zGivenTileProperties.bWoodCamoAffinity);
|
||||
ubApplicableProperties++;
|
||||
}
|
||||
if(zGivenTileProperties.bDesertCamoAffinity > 0)
|
||||
{
|
||||
if(ubApplicableProperties)
|
||||
swprintf( zOutputString + wcslen(zOutputString), L", ");
|
||||
swprintf( zOutputString + wcslen(zOutputString), gzDisplayCoverText[DC_TTI__DESERT]);
|
||||
swprintf( zOutputString + wcslen(zOutputString), L": %d/100", zGivenTileProperties.bDesertCamoAffinity);
|
||||
ubApplicableProperties++;
|
||||
}
|
||||
if(zGivenTileProperties.bUrbanCamoAffinity > 0)
|
||||
{
|
||||
if(ubApplicableProperties)
|
||||
swprintf( zOutputString + wcslen(zOutputString), L", ");
|
||||
swprintf( zOutputString + wcslen(zOutputString), gzDisplayCoverText[DC_TTI__URBAN]);
|
||||
swprintf( zOutputString + wcslen(zOutputString), L": %d/100", zGivenTileProperties.bUrbanCamoAffinity);
|
||||
ubApplicableProperties++;
|
||||
}
|
||||
if(zGivenTileProperties.bSnowCamoAffinity > 0)
|
||||
{
|
||||
if(ubApplicableProperties)
|
||||
swprintf( zOutputString + wcslen(zOutputString), L", ");
|
||||
swprintf( zOutputString + wcslen(zOutputString), gzDisplayCoverText[DC_TTI__SNOW]);
|
||||
swprintf( zOutputString + wcslen(zOutputString), L": %d/100", zGivenTileProperties.bSnowCamoAffinity);
|
||||
ubApplicableProperties++;
|
||||
}
|
||||
if(zGivenTileProperties.bSoundModifier != 0)
|
||||
{
|
||||
if(ubApplicableProperties)
|
||||
swprintf( zOutputString + wcslen(zOutputString), L", ");
|
||||
swprintf( zOutputString + wcslen(zOutputString), gzDisplayCoverText[DC_TTI__DETAILED_SOUND]);
|
||||
if(zGivenTileProperties.bSoundModifier > 0)
|
||||
swprintf( zOutputString + wcslen(zOutputString), L": +%d", zGivenTileProperties.bSoundModifier);
|
||||
else
|
||||
swprintf( zOutputString + wcslen(zOutputString), L": %d", zGivenTileProperties.bSoundModifier);
|
||||
ubApplicableProperties++;
|
||||
}
|
||||
if(zGivenTileProperties.bStealthDifficultyModifer != 0)
|
||||
{
|
||||
if(ubApplicableProperties)
|
||||
swprintf( zOutputString + wcslen(zOutputString), L", ");
|
||||
swprintf( zOutputString + wcslen(zOutputString), gzDisplayCoverText[DC_TTI__DETAILED_STEALTH]);
|
||||
if(zGivenTileProperties.bStealthDifficultyModifer > 0)
|
||||
swprintf( zOutputString + wcslen(zOutputString), L": +%d/100", zGivenTileProperties.bStealthDifficultyModifer);
|
||||
else
|
||||
swprintf( zOutputString + wcslen(zOutputString), L": %d/100", zGivenTileProperties.bStealthDifficultyModifer);
|
||||
ubApplicableProperties++;
|
||||
}
|
||||
if(zGivenTileProperties.bTrapBonus != 0)
|
||||
{
|
||||
if(ubApplicableProperties)
|
||||
swprintf( zOutputString + wcslen(zOutputString), L", ");
|
||||
swprintf( zOutputString + wcslen(zOutputString), gzDisplayCoverText[DC_TTI__DETAILED_TRAP_LEVEL]);
|
||||
if(zGivenTileProperties.bTrapBonus > 0)
|
||||
swprintf( zOutputString + wcslen(zOutputString), L": +%d", zGivenTileProperties.bTrapBonus);
|
||||
else
|
||||
swprintf( zOutputString + wcslen(zOutputString), L": %d", zGivenTileProperties.bTrapBonus);
|
||||
ubApplicableProperties++;
|
||||
}
|
||||
if( wcslen(zOutputString) > 0 )
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, zOutputString );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+26
-10
@@ -520,6 +520,7 @@ ADDITIONAL_TILE_PROPERTIES_VALUES GetAllAdditonalTilePropertiesForGrid( const IN
|
||||
INT16 iCamoStanceModifer = 0;
|
||||
INT16 iSoundModifier = 0;
|
||||
INT16 iStealthDifficultyModifer = 0;
|
||||
INT16 iTrapBonus = 0;
|
||||
UINT8 ubTerrainID = 0;
|
||||
BOOLEAN fFoundBottom = FALSE;
|
||||
|
||||
@@ -576,6 +577,8 @@ ADDITIONAL_TILE_PROPERTIES_VALUES GetAllAdditonalTilePropertiesForGrid( const IN
|
||||
iSoundModifier += gTileDatabase[ pNode->usIndex ].bSoundModifier;
|
||||
iStealthDifficultyModifer += gTileDatabase[ pNode->usIndex ].bStealthDifficultyModifer;
|
||||
|
||||
iTrapBonus += gTileDatabase[ pNode->usIndex ].bTrapBonus;
|
||||
|
||||
ubTerrainID = gTileDatabase[ pNode->usIndex ].ubTerrainID;
|
||||
// going from the top, if any tile has terrain type, we're ignoring all tiles below it
|
||||
if(ubTerrainID != NO_TERRAIN)
|
||||
@@ -586,15 +589,17 @@ ADDITIONAL_TILE_PROPERTIES_VALUES GetAllAdditonalTilePropertiesForGrid( const IN
|
||||
|
||||
}
|
||||
|
||||
ubAllTileProperties.bWoodCamoAffinity = (INT8)iWoodCamoAffinity;
|
||||
ubAllTileProperties.bDesertCamoAffinity = (INT8)iDesertCamoAffinity;
|
||||
ubAllTileProperties.bUrbanCamoAffinity = (INT8)iUrbanCamoAffinity;
|
||||
ubAllTileProperties.bSnowCamoAffinity = (INT8)iSnowCamoAffinity;
|
||||
ubAllTileProperties.bWoodCamoAffinity = (INT8)max(0, min(100, iWoodCamoAffinity));
|
||||
ubAllTileProperties.bDesertCamoAffinity = (INT8)max(0, min(100, iDesertCamoAffinity));
|
||||
ubAllTileProperties.bUrbanCamoAffinity = (INT8)max(0, min(100, iUrbanCamoAffinity));
|
||||
ubAllTileProperties.bSnowCamoAffinity = (INT8)max(0, min(100, iSnowCamoAffinity));
|
||||
|
||||
ubAllTileProperties.bCamoStanceModifer = (INT8)iCamoStanceModifer;
|
||||
ubAllTileProperties.bSoundModifier = (INT8)iSoundModifier;
|
||||
ubAllTileProperties.bStealthDifficultyModifer = (INT8)iStealthDifficultyModifer;
|
||||
|
||||
ubAllTileProperties.bTrapBonus = (INT8)iTrapBonus;
|
||||
|
||||
return ubAllTileProperties;
|
||||
}
|
||||
|
||||
@@ -662,13 +667,24 @@ INT8 GetDetailedSightAdjustmentCamouflageOnTerrain( SOLDIERTYPE* pSoldier, const
|
||||
effectiveness += (UINT8)(pSoldier->GetBackgroundValue(BG_PERC_CAMO));
|
||||
|
||||
scaler = effectiveness * scaler / 6;
|
||||
if(gGameExternalOptions.fAlternateMultiTerrainCamoCalculation)
|
||||
{
|
||||
iResult += min( -GetJungleCamouflage(pSoldier) * scaler / 100, zGivenTileProperties.bWoodCamoAffinity);
|
||||
iResult += min( -GetDesertCamouflage(pSoldier) * scaler / 100, zGivenTileProperties.bDesertCamoAffinity);
|
||||
iResult += min( -GetUrbanCamouflage(pSoldier) * scaler / 100, zGivenTileProperties.bUrbanCamoAffinity);
|
||||
iResult += min( -GetSnowCamouflage(pSoldier) * scaler / 100, zGivenTileProperties.bSnowCamoAffinity);
|
||||
iResult = min( iResult, 100);
|
||||
iResult = -iResult;
|
||||
}
|
||||
else
|
||||
{
|
||||
iResult += GetJungleCamouflage(pSoldier) * scaler / 100 * zGivenTileProperties.bWoodCamoAffinity / 100;
|
||||
iResult += GetDesertCamouflage(pSoldier) * scaler / 100 * zGivenTileProperties.bDesertCamoAffinity / 100;
|
||||
iResult += GetUrbanCamouflage(pSoldier) * scaler / 100 * zGivenTileProperties.bUrbanCamoAffinity / 100;
|
||||
iResult += GetSnowCamouflage(pSoldier) * scaler / 100 * zGivenTileProperties.bSnowCamoAffinity / 100;
|
||||
}
|
||||
|
||||
iResult += GetJungleCamouflage(pSoldier) * scaler / 100 * zGivenTileProperties.bWoodCamoAffinity / 100;
|
||||
iResult += GetDesertCamouflage(pSoldier) * scaler / 100 * zGivenTileProperties.bDesertCamoAffinity / 100;
|
||||
iResult += GetUrbanCamouflage(pSoldier) * scaler / 100 * zGivenTileProperties.bUrbanCamoAffinity / 100;
|
||||
iResult += GetSnowCamouflage(pSoldier) * scaler / 100 * zGivenTileProperties.bSnowCamoAffinity / 100;
|
||||
|
||||
return (INT8)min(100, max(0, iResult));
|
||||
return (INT8)max(-100, min(0, iResult));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -499,7 +499,11 @@ STR16 gzDisplayCoverText[]=
|
||||
L"Desert and Urban",
|
||||
L"Desert and Snow",
|
||||
L"Urban and Snow",
|
||||
L"-" // yes empty for now
|
||||
L"-", // yes empty for now
|
||||
L"Cover: %d/100, Brightness: %d/100",
|
||||
L"Footstep volume",
|
||||
L"Stealth difficulty",
|
||||
L"Trap level",
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -71,7 +71,11 @@ enum
|
||||
DC_TTI__DESERT_AND_URBAN,
|
||||
DC_TTI__DESERT_AND_SNOW,
|
||||
DC_TTI__URBAN_AND_SNOW,
|
||||
DC_TTI__UNKNOWN
|
||||
DC_TTI__UNKNOWN,
|
||||
DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO,
|
||||
DC_TTI__DETAILED_SOUND,
|
||||
DC_TTI__DETAILED_STEALTH,
|
||||
DC_TTI__DETAILED_TRAP_LEVEL,
|
||||
};
|
||||
extern STR16 gzDisplayCoverText[];
|
||||
|
||||
|
||||
@@ -498,7 +498,11 @@ STR16 gzDisplayCoverText[]=
|
||||
L"Desert and Urban",
|
||||
L"Desert and Snow",
|
||||
L"Urban and Snow",
|
||||
L"-" // yes empty for now
|
||||
L"-", // yes empty for now
|
||||
L"Cover: %d/100, Brightness: %d/100",
|
||||
L"Footstep volume",
|
||||
L"Stealth difficulty",
|
||||
L"Trap level",
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -71,7 +71,12 @@ enum
|
||||
DC_TTI__DESERT_AND_URBAN,
|
||||
DC_TTI__DESERT_AND_SNOW,
|
||||
DC_TTI__URBAN_AND_SNOW,
|
||||
DC_TTI__UNKNOWN
|
||||
DC_TTI__UNKNOWN,
|
||||
DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO,
|
||||
DC_TTI__DETAILED_SOUND,
|
||||
DC_TTI__DETAILED_STEALTH,
|
||||
DC_TTI__DETAILED_TRAP_LEVEL,
|
||||
|
||||
};
|
||||
extern STR16 gzDisplayCoverText[];
|
||||
|
||||
|
||||
@@ -498,7 +498,11 @@ STR16 gzDisplayCoverText[]=
|
||||
L"Désert et urbain",
|
||||
L"Désert et neige",
|
||||
L"Urbain et neige",
|
||||
L"-" // yes empty for now
|
||||
L"-", // yes empty for now
|
||||
L"Contraste : %d/100, Luminosit� : %d/100",
|
||||
L"Footstep volume",// TODO.Translate
|
||||
L"Stealth difficulty",// TODO.Translate
|
||||
L"Trap level",// TODO.Translate
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -71,7 +71,11 @@ enum
|
||||
DC_TTI__DESERT_AND_URBAN,
|
||||
DC_TTI__DESERT_AND_SNOW,
|
||||
DC_TTI__URBAN_AND_SNOW,
|
||||
DC_TTI__UNKNOWN
|
||||
DC_TTI__UNKNOWN,
|
||||
DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO,
|
||||
DC_TTI__DETAILED_SOUND,
|
||||
DC_TTI__DETAILED_STEALTH,
|
||||
DC_TTI__DETAILED_TRAP_LEVEL,
|
||||
};
|
||||
extern STR16 gzDisplayCoverText[];
|
||||
|
||||
|
||||
@@ -496,7 +496,11 @@ STR16 gzDisplayCoverText[]=
|
||||
L"Wüste und Stadt",
|
||||
L"Wüste und Schnee",
|
||||
L"Stadt und Schnee",
|
||||
L"-" // yes empty for now
|
||||
L"-", // yes empty for now
|
||||
L"Deckung: %d/100, Helligkeit: %d/100",
|
||||
L"Footstep volume",// TODO.Translate
|
||||
L"Stealth difficulty",// TODO.Translate
|
||||
L"Trap level",// TODO.Translate
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -71,7 +71,11 @@ enum
|
||||
DC_TTI__DESERT_AND_URBAN,
|
||||
DC_TTI__DESERT_AND_SNOW,
|
||||
DC_TTI__URBAN_AND_SNOW,
|
||||
DC_TTI__UNKNOWN
|
||||
DC_TTI__UNKNOWN,
|
||||
DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO,
|
||||
DC_TTI__DETAILED_SOUND,
|
||||
DC_TTI__DETAILED_STEALTH,
|
||||
DC_TTI__DETAILED_TRAP_LEVEL,
|
||||
};
|
||||
extern STR16 gzDisplayCoverText[];
|
||||
|
||||
|
||||
@@ -496,7 +496,11 @@ STR16 gzDisplayCoverText[]=
|
||||
L"Deserto e urbano",
|
||||
L"Deserto e neve",
|
||||
L"Urbano e neve",
|
||||
L"-" // yes empty for now
|
||||
L"-", // yes empty for now
|
||||
L"Copertura: %d/100, Luminosit�: %d/100",
|
||||
L"Footstep volume",// TODO.Translate
|
||||
L"Stealth difficulty",// TODO.Translate
|
||||
L"Trap level",// TODO.Translate
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -71,7 +71,11 @@ enum
|
||||
DC_TTI__DESERT_AND_URBAN,
|
||||
DC_TTI__DESERT_AND_SNOW,
|
||||
DC_TTI__URBAN_AND_SNOW,
|
||||
DC_TTI__UNKNOWN
|
||||
DC_TTI__UNKNOWN,
|
||||
DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO,
|
||||
DC_TTI__DETAILED_SOUND,
|
||||
DC_TTI__DETAILED_STEALTH,
|
||||
DC_TTI__DETAILED_TRAP_LEVEL,
|
||||
};
|
||||
extern STR16 gzDisplayCoverText[];
|
||||
|
||||
|
||||
@@ -500,6 +500,10 @@ STR16 gzDisplayCoverText[]=
|
||||
L"Pustynia i śnieg",
|
||||
L"Miasto i śnieg",
|
||||
L"-" // yes empty for now
|
||||
L"Osłona: %d/100, Oświetlenie: %d/100",
|
||||
L"Odgłos krok�w",
|
||||
L"Trudność skradania",
|
||||
L"Poziom pułapek",
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -71,7 +71,11 @@ enum
|
||||
DC_TTI__DESERT_AND_URBAN,
|
||||
DC_TTI__DESERT_AND_SNOW,
|
||||
DC_TTI__URBAN_AND_SNOW,
|
||||
DC_TTI__UNKNOWN
|
||||
DC_TTI__UNKNOWN,
|
||||
DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO,
|
||||
DC_TTI__DETAILED_SOUND,
|
||||
DC_TTI__DETAILED_STEALTH,
|
||||
DC_TTI__DETAILED_TRAP_LEVEL,
|
||||
};
|
||||
extern STR16 gzDisplayCoverText[];
|
||||
|
||||
|
||||
@@ -71,7 +71,11 @@ enum
|
||||
DC_TTI__DESERT_AND_URBAN,
|
||||
DC_TTI__DESERT_AND_SNOW,
|
||||
DC_TTI__URBAN_AND_SNOW,
|
||||
DC_TTI__UNKNOWN
|
||||
DC_TTI__UNKNOWN,
|
||||
DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO,
|
||||
DC_TTI__DETAILED_SOUND,
|
||||
DC_TTI__DETAILED_STEALTH,
|
||||
DC_TTI__DETAILED_TRAP_LEVEL,
|
||||
};
|
||||
extern STR16 gzDisplayCoverText[];
|
||||
|
||||
|
||||
@@ -500,7 +500,11 @@ STR16 gzDisplayCoverText[]=
|
||||
L"Desert and Urban",
|
||||
L"Desert and Snow",
|
||||
L"Urban and Snow",
|
||||
L"-" // yes empty for now
|
||||
L"-", // yes empty for now
|
||||
L"Cover: %d/100, Brightness: %d/100",
|
||||
L"Footstep volume",
|
||||
L"Stealth difficulty",
|
||||
L"Trap level",
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user