diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 3876c061a2..e11d987d83 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1040,7 +1040,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); @@ -1051,7 +1051,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); @@ -1071,7 +1071,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; @@ -1519,6 +1519,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 680ca60dc8..29780b30f5 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -3203,6 +3203,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; } @@ -3423,6 +3424,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)) { @@ -3511,6 +3513,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*/