diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 5b18e4b4e7..d56942aa5a 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1041,7 +1041,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, } if (flags & DC_EXEC) { if (p2 == 0 && HasWormholeSignals(tile)) { // Toggle signal if already signals present. - if (IsTunnelBridgeEntrance (tile)) { + if (IsTunnelBridgeEntrance(tile)) { ClrBitTunnelBridgeSignal(tile); ClrBitTunnelBridgeExit(tile_exit); SetBitTunnelBridgeExit(tile); @@ -1052,7 +1052,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, SetBitTunnelBridgeExit(tile_exit); SetBitTunnelBridgeSignal(tile); } - } else{ + } else { /* Create one direction tunnel/bridge if required. */ if (p2 == 0) { SetBitTunnelBridgeSignal(tile); @@ -1072,7 +1072,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, } MarkTileDirtyByTile(tile); MarkTileDirtyByTile(tile_exit); - AddSideToSignalBuffer(tile, INVALID_DIAGDIR, _current_company); + AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile)); YapfNotifyTrackLayoutChange(tile, track); } return cost; @@ -1526,6 +1526,8 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1 _m[end].m2 = 0; MarkTileDirtyByTile(tile); MarkTileDirtyByTile(end); + AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile)); + YapfNotifyTrackLayoutChange(tile, track); return CommandCost(EXPENSES_CONSTRUCTION, cost); } diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 7d17272cd4..74d05d08ab 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -3324,6 +3324,7 @@ static bool CheckTrainStayInWormHole(Train *t, TileIndex tile) } SigSegState seg_state = _settings_game.pf.reserve_paths ? SIGSEG_PBS : UpdateSignalsOnSegment(tile, INVALID_DIAGDIR, t->owner); if (seg_state == SIGSEG_FULL || (seg_state == SIGSEG_PBS && !TryPathReserve(t))) { + t->vehstatus |= VS_TRAIN_SLOWING; t->cur_speed = 0; return true; } @@ -3565,6 +3566,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) if (v->IsFrontEngine() && v->force_proceed == 0) { if (IsTunnelBridgeWithSignRed(gp.new_tile)) { v->cur_speed = 0; + v->vehstatus |= VS_TRAIN_SLOWING; return false; } if (IsTunnelBridgeExit(gp.new_tile)) { @@ -3653,6 +3655,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) if (IsToCloseBehindTrain(v, gp.new_tile, distance == 0)) { if (distance == 0) v->wait_counter = 0; v->cur_speed = 0; + v->vehstatus |= VS_TRAIN_SLOWING; return false; } /* flip signal in front to red on bridges*/