@ -1617,6 +1617,7 @@ static int32 ReplaceVehicle(Vehicle **w, byte flags)
const UnitID cached_unitnumber = old_v - > unitnumber ;
const UnitID cached_unitnumber = old_v - > unitnumber ;
bool new_front = false ;
bool new_front = false ;
Vehicle * new_v = NULL ;
Vehicle * new_v = NULL ;
char vehicle_name [ 32 ] ;
new_engine_type = EngineReplacement ( p , old_v - > engine_type ) ;
new_engine_type = EngineReplacement ( p , old_v - > engine_type ) ;
if ( new_engine_type = = INVALID_ENGINE ) new_engine_type = old_v - > engine_type ;
if ( new_engine_type = = INVALID_ENGINE ) new_engine_type = old_v - > engine_type ;
@ -1665,6 +1666,13 @@ static int32 ReplaceVehicle(Vehicle **w, byte flags)
}
}
/* We are done setting up the new vehicle. Now we move the cargo from the old one to the new one */
/* We are done setting up the new vehicle. Now we move the cargo from the old one to the new one */
MoveVehicleCargo ( new_v - > type = = VEH_Train ? GetFirstVehicleInChain ( new_v ) : new_v , old_v ) ;
MoveVehicleCargo ( new_v - > type = = VEH_Train ? GetFirstVehicleInChain ( new_v ) : new_v , old_v ) ;
// Get the name of the old vehicle if it has a custom name.
if ( ( old_v - > string_id & 0xF800 ) ! = 0x7800 ) {
vehicle_name [ 0 ] = ' \0 ' ;
} else {
GetName ( old_v - > string_id & 0x7FF , vehicle_name ) ;
}
}
}
// sell the engine/ find out how much you get for the old engine
// sell the engine/ find out how much you get for the old engine
@ -1675,6 +1683,12 @@ static int32 ReplaceVehicle(Vehicle **w, byte flags)
new_v - > unitnumber = cached_unitnumber ;
new_v - > unitnumber = cached_unitnumber ;
}
}
// Transfer the name of the old vehicle.
if ( ( flags & DC_EXEC ) & & vehicle_name [ 0 ] ! = ' \0 ' ) {
_cmd_text = vehicle_name ;
DoCommand ( 0 , 0 , new_v - > index , 0 , DC_EXEC , CMD_NAME_VEHICLE ) ;
}
return cost ;
return cost ;
}
}