From c76455be02acc40e11d6ccd303a1a623add35a1e Mon Sep 17 00:00:00 2001 From: peter1138 Date: Mon, 25 Aug 2008 10:58:24 +0000 Subject: (svn r14165) -Codechange: When over-building rail with a different type, don't convert the rail if the engines of the new type are powered on the existing type. --- src/rail_cmd.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/rail_cmd.cpp') diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 88112966d..992eddd25 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -355,11 +355,16 @@ CommandCost CmdBuildSingleRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p cost.AddCost(ret); /* If the rail types don't match, try to convert only if engines of + * the new rail type are not powered on the present rail type and engines of * the present rail type are powered on the new rail type. */ - if (GetRailType(tile) != railtype && HasPowerOnRail(GetRailType(tile), railtype)) { - ret = DoCommand(tile, tile, railtype, flags, CMD_CONVERT_RAIL); - if (CmdFailed(ret)) return ret; - cost.AddCost(ret); + if (GetRailType(tile) != railtype && !HasPowerOnRail(railtype, GetRailType(tile))) { + if (HasPowerOnRail(GetRailType(tile), railtype)) { + ret = DoCommand(tile, tile, railtype, flags, CMD_CONVERT_RAIL); + if (CmdFailed(ret)) return ret; + cost.AddCost(ret); + } else { + return CMD_ERROR; + } } if (flags & DC_EXEC) { -- cgit v1.2.3-54-g00ecf