Update (by anv):

- fix: data read from Data/AdditionalProperties,
- new tag: <bTrapBonus> + updated data for tiles, trap level influenced by terrain,
- new feature/option: COVER_SYSTEM_STATIC_SHADOWS_DECREASE_BRIGHTNESS.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7016 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2014-03-03 20:38:26 +00:00
parent 95b1c783eb
commit 8e06bdaf4c
9 changed files with 49 additions and 3 deletions
+2
View File
@@ -1486,6 +1486,8 @@ void LoadGameExternalOptions()
// anv: detailed tileset terrain types
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 );
//################# Tactical Suppression Fire Settings ##################
// These settings control the behavior of Suppression Fire, its severity, and its side-effects.
+2
View File
@@ -846,6 +846,8 @@ typedef struct
// anv: additional tile properties
BOOLEAN fAdditionalTileProperties;
// static shadows decrease brightness
BOOLEAN fStaticShadowsDecreaseBrightness;
// HEADROCK HAM B1: Global modifier for mine income (0 is automatically turned to 1 to avoid divide-by-zero.)
INT16 usMineIncomePercentage;
+9
View File
@@ -1826,6 +1826,14 @@ void HandleSoldierDropBomb( SOLDIERTYPE *pSoldier, INT32 sGridNo )
if ( pSoldier->HasBackgroundFlag( BACKGROUND_TRAPLEVEL ) )
pSoldier->inv[ HANDPOS ][0]->data.bTrap++;
// anv: additional tile properties - modify trap level depending on its placement
if(gGameExternalOptions.fAdditionalTileProperties && Item[ pSoldier->inv[ HANDPOS ].usItem ].tripwire != 1 )
{
ADDITIONAL_TILE_PROPERTIES_VALUES zAllTileValues = GetAllAdditonalTilePropertiesForGrid( sGridNo, pSoldier->pathing.bLevel );
pSoldier->inv[ HANDPOS ][0]->data.bTrap += zAllTileValues.bTrapBonus;
}
pSoldier->inv[ HANDPOS ][0]->data.bTrap = __max( 0, pSoldier->inv[ HANDPOS ][0]->data.bTrap );
pSoldier->inv[ HANDPOS ][0]->data.misc.ubBombOwner = pSoldier->ubID + 2;
// Flugente: determine the direction we are looking at and apply that direction to our explosive
@@ -5765,6 +5773,7 @@ BOOLEAN NearbyGroundSeemsWrong( SOLDIERTYPE * pSoldier, INT32 sGridNo, BOOLEAN f
BOOLEAN fMining, fFoundMetal = FALSE;
// ITEM_POOL * pItemPool;
UINT8 ubMovementCost;
INT8 bTrapBonus = 0;
ubDetectLevel = 0;
@@ -45,6 +45,7 @@ additionalTilePropertyStartElementHandle(void *userData, const XML_Char *name, c
strcmp(name, "bCamoStanceModifer") == 0 ||
strcmp(name, "bSoundModifier") == 0 ||
strcmp(name, "bStealthDifficultyModifer") == 0 ||
strcmp(name, "bTrapBonus") == 0 ||
strcmp(name, "fBlockedWindow") == 0
))
{
@@ -122,6 +123,11 @@ additionalTilePropertyEndElementHandle(void *userData, const XML_Char *name)
pData->curElement = ELEMENT;
zAdditionalTileProperties.bStealthDifficultyModifer = (INT8) atol(pData->szCharData);
}
else if(strcmp(name, "bTrapBonus") == 0)
{
pData->curElement = ELEMENT;
zAdditionalTileProperties.bTrapBonus = (INT8) atol(pData->szCharData);
}
else if(strcmp(name, "fBlockedWindow") == 0)
{
pData->curElement = ELEMENT;
+4 -2
View File
@@ -125,9 +125,9 @@ TILE_IMAGERY *LoadTileSurface( STR8 cFilename )
}
else
{
// and if not found, then in /Tilesets/
// and if not found, then in /AdditionalProperties/
cEndOfName = strrchr( cAdditionalPropertiesFilename, '\\' );
sprintf( cCommonAdditionalPropertiesFilename, "TILESETS\\ADDITIONALPROPERTIES%s", cEndOfName );
sprintf( cCommonAdditionalPropertiesFilename, "ADDITIONALPROPERTIES%s", cEndOfName );
if (FileExists( cCommonAdditionalPropertiesFilename ))
{
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
@@ -155,6 +155,8 @@ TILE_IMAGERY *LoadTileSurface( STR8 cFilename )
pTileSurf->bCamoStanceModifer = zAdditionalTileProperties.bCamoStanceModifer;
pTileSurf->bStealthDifficultyModifer = zAdditionalTileProperties.bStealthDifficultyModifer;
pTileSurf->bTrapBonus = zAdditionalTileProperties.bTrapBonus;
pTileSurf->uiAdditionalFlags = zAdditionalTileProperties.uiAdditionalFlags;
if (pStructureFileRef && pStructureFileRef->pAuxData != NULL)
+1
View File
@@ -960,6 +960,7 @@ void SetSpecificDatabaseValues( UINT16 usType, UINT16 uiDatabaseElem, TILE_ELEME
TileElement->bSoundModifier = 0;
TileElement->bCamoStanceModifer= 0;
TileElement->bStealthDifficultyModifer = 0;
TileElement->bTrapBonus = 0;
TileElement->uiAdditionalFlags = 0;
}
}
+17
View File
@@ -754,6 +754,23 @@ UINT8 LightTrueLevel( INT32 sGridNo, INT16 bLevel )
{
iSum=pNode->ubNaturalShadeLevel - (pNode->ubSumLights - pNode->ubFakeShadeLevel );
if(gGameExternalOptions.fStaticShadowsDecreaseBrightness && ( gRenderFlags & RENDER_FLAG_SHADOWS ))
{
INT32 sNewGridNo = NewGridNo( sGridNo, (UINT16)DirectionInc( NORTH ) );
STRUCTURE* pStructure = gpWorldLevelData[ sNewGridNo ].pStructureHead;
if(pStructure != NULL)
{
LEVELNODE* pShadowNode = NULL;
if(!(pStructure->fFlags & STRUCTURE_BASE_TILE))
pShadowNode = gpWorldLevelData[ FindBaseStructure(pStructure)->sGridNo ].pShadowHead;
else
pShadowNode = gpWorldLevelData[ sNewGridNo ].pShadowHead;
if(pShadowNode != NULL)
{
iSum += max( 0, (StructureHeight(pStructure) - 1 ) );
}
}
}
iSum=__min(SHADE_MIN, iSum);
iSum=__max(SHADE_MAX, iSum);
return( (UINT8) iSum );
+2
View File
@@ -694,6 +694,8 @@ void CreateTileDatabase( INT32 iTilesetID )
TileElement.bSoundModifier = TileSurf->bSoundModifier;
TileElement.bStealthDifficultyModifer = TileSurf->bStealthDifficultyModifer;
TileElement.bTrapBonus = TileSurf->bTrapBonus;
TileElement.uiAdditionalFlags = TileSurf->uiAdditionalFlags;
// Check for multi-z stuff
+6 -1
View File
@@ -92,6 +92,8 @@ typedef struct
INT8 bSoundModifier;
INT8 bStealthDifficultyModifer;
INT8 bTrapBonus;
UINT32 uiAdditionalFlags;
@@ -151,6 +153,8 @@ typedef struct
INT8 bSoundModifier;
INT8 bStealthDifficultyModifer;
INT8 bTrapBonus;
UINT32 uiAdditionalFlags;
@@ -196,10 +200,11 @@ typedef struct
INT8 bSoundModifier;
INT8 bStealthDifficultyModifer;
INT8 bTrapBonus;
UINT32 uiAdditionalFlags;
} ADDITIONAL_TILE_PROPERTIES_VALUES;
extern ADDITIONAL_TILE_PROPERTIES_VALUES zAdditionalTileProperties;
void CreateTileDatabase( INT32 iTilesetID );