Optstring field is either byte 0 (NULL) or byte 1 followed by string (2 bytes length, 2 bytes per character).
Yes, there's an optstring there. It is one byte most of the time for this field.
PFM describes them with silly -> notation.
Also I think PFM deals with table schema versions by listing all possible schemas
and guessing somehow, not by looking in headers which version it is.
Code:
battlefield_buildings Building ID,String;
Type,String;
Building 2 ID,String;
Material,String;
unknown,UInt32;
->,Boolean,1;Fort type,String;
->,Boolean,1;Terrain,String
<table name='battlefield_buildings_tables'>
<field name='Battlefield_Building_ID' pk='true' type='string'/>
<field name='Type' type='string'/>
<field fkey='battlefield_buildings_tables.Battlefield_Building_ID' name='Building_2' type='string'/>
<field name='Material' type='string'/>
<field name='Hit_points' type='int'/>
<field name='unknown6' type='int' version_start='3'/>
<field name='unknown7' type='int' version_start='3'/>
<field name='Fort_type' type='optstring'/>
<field name='Terrain' type='optstring'/>
</table>