mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r11024) -Fix [FS#1173]: give a more correct error when building some things on tile 0; "Can't build on water" or "Too close to the edge" instead of "Vehicle in the way". Patch by SmatZ.
This commit is contained in:
parent
a8033758e7
commit
8c85125fd9
|
@ -403,8 +403,6 @@ CommandCost CmdPurchaseLandArea(TileIndex tile, uint32 flags, uint32 p1, uint32
|
||||||
|
|
||||||
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
|
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
|
||||||
|
|
||||||
if (!EnsureNoVehicle(tile)) return CMD_ERROR;
|
|
||||||
|
|
||||||
if (IsOwnedLandTile(tile) && IsTileOwner(tile, _current_player)) {
|
if (IsOwnedLandTile(tile) && IsTileOwner(tile, _current_player)) {
|
||||||
return_cmd_error(STR_5807_YOU_ALREADY_OWN_IT);
|
return_cmd_error(STR_5807_YOU_ALREADY_OWN_IT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -255,6 +255,11 @@ CommandCost CmdPlantTree(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||||
cost.AddCost(_price.build_trees * 2);
|
cost.AddCost(_price.build_trees * 2);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MP_WATER:
|
||||||
|
msg = STR_3807_CAN_T_BUILD_ON_WATER;
|
||||||
|
continue;
|
||||||
|
break;
|
||||||
|
|
||||||
case MP_CLEAR:
|
case MP_CLEAR:
|
||||||
if (!IsTileOwner(tile, OWNER_NONE) ||
|
if (!IsTileOwner(tile, OWNER_NONE) ||
|
||||||
IsBridgeAbove(tile)) {
|
IsBridgeAbove(tile)) {
|
||||||
|
|
|
@ -67,12 +67,9 @@ CommandCost CmdBuildShipDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
|
||||||
|
|
||||||
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
|
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
|
||||||
|
|
||||||
if (!EnsureNoVehicle(tile)) return CMD_ERROR;
|
|
||||||
|
|
||||||
Axis axis = Extract<Axis, 0>(p1);
|
Axis axis = Extract<Axis, 0>(p1);
|
||||||
|
|
||||||
tile2 = tile + (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
|
tile2 = tile + (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
|
||||||
if (!EnsureNoVehicle(tile2)) return CMD_ERROR;
|
|
||||||
|
|
||||||
if (!IsClearWaterTile(tile) || !IsClearWaterTile(tile2))
|
if (!IsClearWaterTile(tile) || !IsClearWaterTile(tile2))
|
||||||
return_cmd_error(STR_3801_MUST_BE_BUILT_ON_WATER);
|
return_cmd_error(STR_3801_MUST_BE_BUILT_ON_WATER);
|
||||||
|
@ -289,15 +286,15 @@ static CommandCost ClearTile_Water(TileIndex tile, byte flags)
|
||||||
case WATER_TILE_CLEAR:
|
case WATER_TILE_CLEAR:
|
||||||
if (flags & DC_NO_WATER) return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER);
|
if (flags & DC_NO_WATER) return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER);
|
||||||
|
|
||||||
/* Make sure no vehicle is on the tile */
|
|
||||||
if (!EnsureNoVehicle(tile)) return CMD_ERROR;
|
|
||||||
|
|
||||||
/* Make sure it's not an edge tile. */
|
/* Make sure it's not an edge tile. */
|
||||||
if (!IS_INT_INSIDE(TileX(tile), 1, MapMaxX() - 1) ||
|
if (!IS_INT_INSIDE(TileX(tile), 1, MapMaxX() - 1) ||
|
||||||
!IS_INT_INSIDE(TileY(tile), 1, MapMaxY() - 1)) {
|
!IS_INT_INSIDE(TileY(tile), 1, MapMaxY() - 1)) {
|
||||||
return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP);
|
return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Make sure no vehicle is on the tile */
|
||||||
|
if (!EnsureNoVehicle(tile)) return CMD_ERROR;
|
||||||
|
|
||||||
if (GetTileOwner(tile) != OWNER_WATER && GetTileOwner(tile) != OWNER_NONE && !CheckTileOwnership(tile)) return CMD_ERROR;
|
if (GetTileOwner(tile) != OWNER_WATER && GetTileOwner(tile) != OWNER_NONE && !CheckTileOwnership(tile)) return CMD_ERROR;
|
||||||
|
|
||||||
if (flags & DC_EXEC) DoClearSquare(tile);
|
if (flags & DC_EXEC) DoClearSquare(tile);
|
||||||
|
@ -309,12 +306,6 @@ static CommandCost ClearTile_Water(TileIndex tile, byte flags)
|
||||||
/* Make sure no vehicle is on the tile */
|
/* Make sure no vehicle is on the tile */
|
||||||
if (!EnsureNoVehicle(tile)) return CMD_ERROR;
|
if (!EnsureNoVehicle(tile)) return CMD_ERROR;
|
||||||
|
|
||||||
/* Make sure it's not an edge tile. */
|
|
||||||
if (!IS_INT_INSIDE(TileX(tile), 1, MapMaxX() - 1) ||
|
|
||||||
!IS_INT_INSIDE(TileY(tile), 1, MapMaxY() - 1)) {
|
|
||||||
return_cmd_error(STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & DC_EXEC) DoClearSquare(tile);
|
if (flags & DC_EXEC) DoClearSquare(tile);
|
||||||
if (slope == SLOPE_N || slope == SLOPE_E || slope == SLOPE_S || slope == SLOPE_W) {
|
if (slope == SLOPE_N || slope == SLOPE_E || slope == SLOPE_S || slope == SLOPE_W) {
|
||||||
return CommandCost(_price.clear_water);
|
return CommandCost(_price.clear_water);
|
||||||
|
|
Loading…
Reference in New Issue