From aa1fa4990305e170776afe8db5d17251f917ccc6 Mon Sep 17 00:00:00 2001 From: Wanne Date: Fri, 28 Mar 2014 19:59:38 +0000 Subject: [PATCH] - Bugfixes for Additional Tile Properties and Lightning Feature (by anv) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7122 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/LOS.cpp | 10 +++++++--- TileEngine/lighting.cpp | 9 ++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Tactical/LOS.cpp b/Tactical/LOS.cpp index 4c98844f..111d9aa7 100644 --- a/Tactical/LOS.cpp +++ b/Tactical/LOS.cpp @@ -525,6 +525,11 @@ ADDITIONAL_TILE_PROPERTIES_VALUES GetAllAdditonalTilePropertiesForGrid( const IN BOOLEAN fFoundBottom = FALSE; memset(&ubAllTileProperties,0,sizeof(ubAllTileProperties)); + if( !( sGridNo > -1 && sGridNo < WORLD_MAX ) || !( bLevel == FIRST_LEVEL || bLevel == SECOND_LEVEL ) ) + { + // incorrect argument values, what the hell? + return ubAllTileProperties; + } for(UINT8 ubCnt=0; ubCnt<5 && !fFoundBottom; ubCnt++) { if (bLevel == I_ROOF_LEVEL) @@ -566,11 +571,10 @@ ADDITIONAL_TILE_PROPERTIES_VALUES GetAllAdditonalTilePropertiesForGrid( const IN break; } } - if( pNode!= NULL ) + if( pNode!= NULL && pNode->usIndex < NUMBEROFTILES ) { iWoodCamoAffinity += gTileDatabase[ pNode->usIndex ].bWoodCamoAffinity; - iDesertCamoAffinity += gTileDatabase[ pNode->usIndex ].bDesertCamoAffinity; - iUrbanCamoAffinity += gTileDatabase[ pNode->usIndex ].bUrbanCamoAffinity; + iDesertCamoAffinity += gTileDatabase[ pNode->usIndex ].bDesertCamoAffinity; iUrbanCamoAffinity += gTileDatabase[ pNode->usIndex ].bUrbanCamoAffinity; iSnowCamoAffinity += gTileDatabase[ pNode->usIndex ].bSnowCamoAffinity; iCamoStanceModifer += gTileDatabase[ pNode->usIndex ].bCamoStanceModifer; diff --git a/TileEngine/lighting.cpp b/TileEngine/lighting.cpp index bc74b666..e4ab604a 100644 --- a/TileEngine/lighting.cpp +++ b/TileEngine/lighting.cpp @@ -762,11 +762,14 @@ UINT8 LightTrueLevel( INT32 sGridNo, INT16 bLevel ) { LEVELNODE* pShadowNode = NULL; if(!(pStructure->fFlags & STRUCTURE_BASE_TILE)) - pShadowNode = gpWorldLevelData[ FindBaseStructure(pStructure)->sGridNo ].pShadowHead; + { + STRUCTURE* pBaseStructure = FindBaseStructure(pStructure); + if( pBaseStructure != NULL ) + pShadowNode = gpWorldLevelData[ pBaseStructure->sGridNo ].pShadowHead; + } else pShadowNode = gpWorldLevelData[ sNewGridNo ].pShadowHead; - if(pShadowNode != NULL) - { + if(pShadowNode != NULL) { iSum += max( 0, (StructureHeight(pStructure) - 1 ) ); } }