diff -r 9b1552d0fd9b -r f8eb3e208514 src/vehicle.cpp --- a/src/vehicle.cpp Thu Feb 21 22:34:54 2008 +0000 +++ b/src/vehicle.cpp Fri Feb 22 00:25:54 2008 +0000 @@ -613,8 +613,10 @@ */ void VehicleEnteredDepotThisTick(Vehicle *v) { - /* we need to set v->leave_depot_instantly as we have no control of it's contents at this time */ - if (HasBit(v->current_order.flags, OF_HALT_IN_DEPOT) && !HasBit(v->current_order.flags, OF_PART_OF_ORDERS) && v->current_order.type == OT_GOTO_DEPOT) { + /* We need to set v->leave_depot_instantly as we have no control of it's contents at this time. + * Vehicle should stop in the depot if it was in 'stopping' state - train intered depot while slowing down. */ + if ((HasBit(v->current_order.flags, OF_HALT_IN_DEPOT) && !HasBit(v->current_order.flags, OF_PART_OF_ORDERS) && v->current_order.type == OT_GOTO_DEPOT) || + (v->vehstatus & VS_STOPPED)) { /* we keep the vehicle in the depot since the user ordered it to stay */ v->leave_depot_instantly = false; } else { @@ -2797,6 +2799,7 @@ SLE_VAR(Vehicle, day_counter, SLE_UINT8), SLE_VAR(Vehicle, tick_counter, SLE_UINT8), + SLE_CONDVAR(Vehicle, running_ticks, SLE_UINT8, 88, SL_MAX_VERSION), SLE_VAR(Vehicle, cur_order_index, SLE_UINT8), SLE_VAR(Vehicle, num_orders, SLE_UINT8), @@ -2853,11 +2856,11 @@ SLE_CONDVAR(Vehicle, value, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), SLE_CONDVAR(Vehicle, value, SLE_INT64, 65, SL_MAX_VERSION), - SLE_VAR(Vehicle, random_bits, SLE_UINT8), - SLE_VAR(Vehicle, waiting_triggers, SLE_UINT8), - - SLE_REF(Vehicle, next_shared, REF_VEHICLE), - SLE_REF(Vehicle, prev_shared, REF_VEHICLE), + SLE_CONDVAR(Vehicle, random_bits, SLE_UINT8, 2, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, waiting_triggers, SLE_UINT8, 2, SL_MAX_VERSION), + + SLE_CONDREF(Vehicle, next_shared, REF_VEHICLE, 2, SL_MAX_VERSION), + SLE_CONDREF(Vehicle, prev_shared, REF_VEHICLE, 2, SL_MAX_VERSION), SLE_CONDVAR(Vehicle, group_id, SLE_UINT16, 60, SL_MAX_VERSION),