From 3aa412ac56d1a76c82a15b44724843dc1643bbcd Mon Sep 17 00:00:00 2001 From: silversurfer Date: Sat, 10 Nov 2018 14:34:01 +0000 Subject: [PATCH] Fix: Incorrect movement cost calculation for jumping over fences with obstacles behind them git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8640 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameVersion.cpp | 4 ++-- TileEngine/worlddef.cpp | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/GameVersion.cpp b/GameVersion.cpp index 185435424..50687f9ad 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -55,8 +55,8 @@ #endif -CHAR8 czVersionNumber[16] = { "Build 18.08.11" }; //YY.MM.DD +CHAR8 czVersionNumber[16] = { "Build 18.10.11" }; //YY.MM.DD CHAR16 zTrackingNumber[16] = { L"Z" }; -CHAR16 zRevisionNumber[16] = { L"Revision 8637" }; +CHAR16 zRevisionNumber[16] = { L"Revision 8640" }; // SAVE_GAME_VERSION is defined in header, change it there diff --git a/TileEngine/worlddef.cpp b/TileEngine/worlddef.cpp index 0bf4da61c..63c31b3c4 100644 --- a/TileEngine/worlddef.cpp +++ b/TileEngine/worlddef.cpp @@ -1016,11 +1016,18 @@ void CompileTileMovementCosts( INT32 usGridNo ) SET_CURRMOVEMENTCOST( WEST, TRAVELCOST_OBSTACLE ); SET_CURRMOVEMENTCOST( NORTHWEST, TRAVELCOST_OBSTACLE ); // set values for the tiles EXITED from this location - FORCE_SET_MOVEMENTCOST( usGridNo - WORLD_COLS, NORTH, 0, TRAVELCOST_NONE ); + // silversurfer: make sure that there is no obstacle in the target tile! + if ( gubWorldMovementCosts[ usGridNo - WORLD_COLS ][ NORTH ][ 0 ] < TRAVELCOST_BLOCKED ) + { + FORCE_SET_MOVEMENTCOST( usGridNo - WORLD_COLS, NORTH, 0, TRAVELCOST_NONE ); + } SET_MOVEMENTCOST( usGridNo - WORLD_COLS + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE ); SET_MOVEMENTCOST( usGridNo + 1, EAST, 0, TRAVELCOST_OBSTACLE ); SET_MOVEMENTCOST( usGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE ); - FORCE_SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTH, 0, TRAVELCOST_NONE ); + if ( gubWorldMovementCosts[ usGridNo + WORLD_COLS ][ SOUTH ][ 0 ] < TRAVELCOST_BLOCKED ) + { + FORCE_SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTH, 0, TRAVELCOST_NONE ); + } SET_MOVEMENTCOST( usGridNo + WORLD_COLS - 1, SOUTHWEST, 0, TRAVELCOST_OBSTACLE ); SET_MOVEMENTCOST( usGridNo - 1, WEST, 0, TRAVELCOST_OBSTACLE ); SET_MOVEMENTCOST( usGridNo - WORLD_COLS - 1, NORTHWEST, 0, TRAVELCOST_OBSTACLE );