I have some bad news...
After looking into the situation. It seems the only way to rectify it would be to create Disambiguation pages and have each Enemy variant with the same name on separate pages.
This is due in large to how parser functions grab properties from pages to generate tables.
As far as I can tell, there is no way to get the parser functions to grab just the properties from the associated template. It HAS to search the whole page.
My suggestions for page naming would be something along these lines:
- Simple redirect for those who don't know to search for the Enemy: namespace. Directed to below.
- Enemy: name
- For enemies that do not have variants, and also for disambiguation pages of Enemies that do have variants.
- Enemy: name (level)
- For enemies that do not have leveltype variants, but do have level variants.
- Enemy: name (leveltype)
- For enemies that do not have level variants, but do have leveltype variants.
- Enemy: name (leveltype) (level)
- For enemies that have both level and leveltype variants.
It would be a pain in the ass, but honestly seems to be the only way to work around it.