diff --git a/Strategic/strategicmap.cpp b/Strategic/strategicmap.cpp index 5968f0ee..59c51b99 100644 --- a/Strategic/strategicmap.cpp +++ b/Strategic/strategicmap.cpp @@ -6639,12 +6639,30 @@ void CrippledVersionFailureToLoadMapCallBack( UINT8 bExitValue ) #endif BOOLEAN EscapeDirectionIsValid( INT8 * pbDirection ) { + UINT8 ubSectorID = SECTOR( gWorldSectorX, gWorldSectorY ); + switch( *pbDirection ) - { - case NORTHEAST: if( gWorldSectorX + 1 > MAXIMUM_VALID_X_COORDINATE ) *pbDirection = -1; break; // east - case SOUTHEAST: if( gWorldSectorY + 1 > MAXIMUM_VALID_Y_COORDINATE ) *pbDirection = -1; break; // south - case SOUTHWEST: if( gWorldSectorX - 1 < MINIMUM_VALID_X_COORDINATE ) *pbDirection = -1; break; // west - case NORTHWEST: if( gWorldSectorY - 1 < MINIMUM_VALID_Y_COORDINATE ) *pbDirection = -1; break; // north + { + case NORTHEAST: // east + if( gWorldSectorX + 1 > MAXIMUM_VALID_X_COORDINATE || gMapInformation.sEastGridNo == NOWHERE || + SectorInfo[ ubSectorID ].ubTraversability[ EAST_STRATEGIC_MOVE ] == GROUNDBARRIER || SectorInfo[ ubSectorID ].ubTraversability[ EAST_STRATEGIC_MOVE ] == EDGEOFWORLD ) + *pbDirection = -1; + break; + case SOUTHEAST: // south + if( gWorldSectorY + 1 > MAXIMUM_VALID_Y_COORDINATE || gMapInformation.sSouthGridNo == NOWHERE || + SectorInfo[ ubSectorID ].ubTraversability[ SOUTH_STRATEGIC_MOVE ] == GROUNDBARRIER || SectorInfo[ ubSectorID ].ubTraversability[ SOUTH_STRATEGIC_MOVE ] == EDGEOFWORLD ) + *pbDirection = -1; + break; + case SOUTHWEST: // west + if( gWorldSectorX - 1 < MINIMUM_VALID_X_COORDINATE || gMapInformation.sWestGridNo == NOWHERE || + SectorInfo[ ubSectorID ].ubTraversability[ WEST_STRATEGIC_MOVE ] == GROUNDBARRIER || SectorInfo[ ubSectorID ].ubTraversability[ WEST_STRATEGIC_MOVE ] == EDGEOFWORLD ) + *pbDirection = -1; + break; + case NORTHWEST: // north + if( gWorldSectorY - 1 < MINIMUM_VALID_Y_COORDINATE || gMapInformation.sNorthGridNo == NOWHERE || + SectorInfo[ ubSectorID ].ubTraversability[ NORTH_STRATEGIC_MOVE ] == GROUNDBARRIER || SectorInfo[ ubSectorID ].ubTraversability[ NORTH_STRATEGIC_MOVE ] == EDGEOFWORLD ) + *pbDirection = -1; + break; default: *pbDirection = -1; } return( *pbDirection != -1 ); diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 3e8d94a4..d9303363 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -7082,7 +7082,8 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_BATTLE_LOST, gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); // SANDRO - end quest if cleared the sector after interrogation (sector N7 by Meduna) - if ( gWorldSectorX == 7 && gWorldSectorY == 14 && gbWorldSectorZ == 0 && gubQuest[ QUEST_INTERROGATION ] == QUESTINPROGRESS ) + if ( gWorldSectorX == gModSettings.ubMeanwhileInterrogatePOWSectorX && gWorldSectorY == gModSettings.ubMeanwhileInterrogatePOWSectorY && + gbWorldSectorZ == 0 && gubQuest[ QUEST_INTERROGATION ] == QUESTINPROGRESS ) { // Quest failed InternalEndQuest( QUEST_INTERROGATION, gWorldSectorX, gWorldSectorY, FALSE ); @@ -7271,7 +7272,8 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) ShouldBeginAutoBandage( ); } // SANDRO - end quest if cleared the sector after interrogation (sector N7 by Meduna) - if ( gWorldSectorX == 7 && gWorldSectorY == 14 && gbWorldSectorZ == 0 && gubQuest[ QUEST_INTERROGATION ] == QUESTINPROGRESS ) + if ( gWorldSectorX == gModSettings.ubMeanwhileInterrogatePOWSectorX && gWorldSectorY == gModSettings.ubMeanwhileInterrogatePOWSectorY && + gbWorldSectorZ == 0 && gubQuest[ QUEST_INTERROGATION ] == QUESTINPROGRESS ) { // Complete quest EndQuest( QUEST_INTERROGATION, gWorldSectorX, gWorldSectorY );