From ccf13467dbbaf8491e875772e65723480fcf3cad Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Wed, 19 Dec 2018 18:51:15 +0000 Subject: [PATCH] Prevent AIs from creating or adding to rail custom bridge heads --- src/rail_cmd.cpp | 3 ++- src/script/api/script_rail.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 4b7a312a5d..0f33669714 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -982,6 +982,7 @@ static CommandCost CmdRailTrackHelper(TileIndex tile, DoCommandFlag flags, uint3 Track track = Extract(p2); bool remove = HasBit(p2, 9); bool fail_if_obstacle = HasBit(p2, 10); + bool no_custom_bridge_heads = HasBit(p2, 11); _rail_track_endtile = INVALID_TILE; @@ -997,7 +998,7 @@ static CommandCost CmdRailTrackHelper(TileIndex tile, DoCommandFlag flags, uint3 CommandCost last_error = CMD_ERROR; for (;;) { TileIndex last_endtile = _rail_track_endtile; - CommandCost ret = DoCommand(tile, remove ? 0 : railtype, TrackdirToTrack(trackdir), flags, remove ? CMD_REMOVE_SINGLE_RAIL : CMD_BUILD_SINGLE_RAIL); + CommandCost ret = DoCommand(tile, remove ? 0 : railtype, TrackdirToTrack(trackdir) | (no_custom_bridge_heads ? 1 << 4 : 0), flags, remove ? CMD_REMOVE_SINGLE_RAIL : CMD_BUILD_SINGLE_RAIL); if (ret.Failed()) { last_error = ret; diff --git a/src/script/api/script_rail.cpp b/src/script/api/script_rail.cpp index f7682cfd8f..d0c6305ecd 100644 --- a/src/script/api/script_rail.cpp +++ b/src/script/api/script_rail.cpp @@ -355,7 +355,7 @@ static uint32 SimulateDrag(TileIndex from, TileIndex tile, TileIndex *to) (::TileX(from) == ::TileX(tile) && ::TileX(tile) == ::TileX(to)) || (::TileY(from) == ::TileY(tile) && ::TileY(tile) == ::TileY(to))); - uint32 p2 = SimulateDrag(from, tile, &to) | 1 << 10 | ScriptRail::GetCurrentRailType();; + uint32 p2 = SimulateDrag(from, tile, &to) | 1 << 10 | 1 << 11 | ScriptRail::GetCurrentRailType();; return ScriptObject::DoCommand(tile, to, p2, CMD_BUILD_RAILROAD_TRACK); }