Problem
I got that single error this morning when I tried to BSP and banged my head against the monitor for about an hour before I finally figured it out - so I thought I'd post something about it. I checked the .map file in a text editor, tried recreating brushes, etc, etc... [[AF]haste]
Solution
It was one of the shader files. I used, line 178: "surfaceparm" with no parameter. You'd never guess it from the error message. [[AF]haste]
Solution (alternative)
The "Line [value] is incomplete" error is actually referring to a problem picked up by the *.srf file during the BSP compile process.
As it's text based it can be opened in NotePad and the corresponding line to the error inspected. The .srf files lists information to do with the data in the map file as the compiler runs through the process of converting the map to a BSP.
The following is an example of an 'error' as shown in the .srf file;
85 // SURFACE_TRIANGLES V: 86 I: 288
{
shader //textures/widget/widgetbody
sampleSize 0
}
It should read like this;
85 // SURFACE_TRIANGLES V: 86 I: 288
{
shader textures/widget/widgetbody
sampleSize 0
}
Note the difference between the two entries, the double backslashes, '//', in front of the shader path referenced, "//textures/widget/..", it's these additional characters that are the actual component triggering the error. In other words, in this instance two backslashes ('//') have been found where there shouldn't be. For idTech 3 game editing this might mean having to check shader paths used in models, in particular ASE's; make sure when editing shader paths that errant backslashes '/' are not left in place. Doing this;
*MATERIAL_NAME "//textures/widget/widgetbody"
is incorrect and will result in the "Line 178 is incomplete error". It's corrected by doing this;
*MATERIAL_NAME "textures/widget/widgetbody"
The two backslashes, '//', have been removed from in front of the "texture/widget/.." path.
A first port of call when this error crops up is to look through the .srf file and the corresponding line of text to see what being picked up as causing the error. It's then a case of finding what asset or assets using that reference and correcting the problem.