The surface properties are defined in the surface type in the root template manager, and then enumerated in the Status Data property of the surface type:

https://imgur.com/IzHGfCP

These status data entries are defined in the Stats/Potions/ subsection of the data file:

https://imgur.com/Yes8Ihg

and can be modified or whole new ones made in there.

Unfortunately, as above, making a NEW surface type seems to either never compile the new type into the surfacetypes enum, or something else breaks ):

Hope that helps.