I have created an “always active” Layer trait for a piece, and I have set the Level Name field to be neither prefix nor suffix. The consequence appears to be that Vassal uses the level name as a substitute for the piece name in reports. Maddening.
For example, I have a piece with the basic piece name “infantry.” I create an always-active Layer trait with 2 levels named “untried” and “veteran”. (I double-quote here for clarity. I do not double-quote the actual fields.) I do not check off “is prefix/suffix” fields. I also have a Report trait “$newPieceName$ is eliminated.” Instead of reporting “infantry is eliminated” as I would expect, I get “veteran is eliminated” or “untried is eliminated.” I.e. the level name has become the piece name.
In truth, I care nothing about reporting the level name. I use it in property tests only. So why not make the level name a prefix? Because then I get “veteraninfantry” or “untriedinfantry” unless I add a space after the level names or before the piece names, which is a headache. If I add it after the level name, then my property tests break because I can’t seem to test against "veteran " or "untried ".