1
0
Fork 0

(svn r9942) -Fix [FS#804]: crash when upgrading both ends of a bridge.

release/0.6
rubidium 2007-05-26 20:52:23 +00:00
parent c346cc430a
commit 016e651ffd
1 changed files with 10 additions and 1 deletions

View File

@ -538,6 +538,7 @@ int32 CmdBuildLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint32 p2)
{
TileIndex start_tile, tile;
int32 cost, ret;
bool had_bridge = false;
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
@ -573,8 +574,16 @@ int32 CmdBuildLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint32 p2)
if (_error_message != STR_1007_ALREADY_BUILT) return CMD_ERROR;
_error_message = INVALID_STRING_ID;
} else {
/* Only pay for the upgrade on one side of the bridge */
if (IsBridgeTile(tile)) {
if ((!had_bridge || GetBridgeRampDirection(tile) == DIAGDIR_SE || GetBridgeRampDirection(tile) == DIAGDIR_SW)) {
cost += ret;
}
had_bridge = true;
} else {
cost += ret;
}
}
if (tile == end_tile) break;