Auto-translated
If anyone needs it, I can explain how to create a new town (I looked at the Naga town created by zahar and roughly understood the principle).
1) Select the town, go to Shared, and you'll see the shared resources for the towns. Take, for example, Academy (AdvMapTownShared) and copy it. You'll get two towns: Academy (AdvMapTownShared) and Academy (AdvMapTownShared) (2).
2) Select the town on the map, and in the shared resources, write AdvMapTownShared:MapObjects\Academy (AdvMapTownShared) (2). As a result, you'll get a clone of the Academy town on the map.
3) Select the town, click on the line next to shared, and buttons ... and New will appear. Click on ..., select AdvMapTownShared:MapObjects\Academy (AdvMapTownShared) (2). On the right side, you'll see the town's data: model, animation, effects, etc. (the model and animation are missing by default, so the town will look like the faction's symbol if you don't change anything). Find buildings. Under the numbers 19 and 20, you'll find the stone and obsidian parapets. Click on the line next to 19 (TownBuildingSharedStats:GameMechanics\TownBuildingSharedStats\Academy\Dwelling_2\StoneParapet) and on ..., you'll be taken to that address. Copy StoneParapet, and you'll get StoneParapet (2). Select it, and the following will appear in the right column:
namefileref - name (write the desired name in a new text file and change the path to this file)
desriptionfileref - description (similarly)
Type - building type
uprage - building level (up to 5)
cost - price
creature - recruitable monsters
4) For example, change the recruitable monsters from CREATURE_STONE_GARGOYLE to CREATURE_WATER_ELEMENTAL. Go back to buildings, and next to the number 19, it should say not TownBuildingSharedStats:GameMechanics\TownBuildingSharedStats\Academy\Dwelling_2\StoneParapet, but TownBuildingSharedStats:GameMechanics\TownBuildingSharedStats\Academy\Dwelling_2\StoneParapet (2). Do the same for the obsidian parapet, replacing the obsidian and elemental gargoyles with ice and mist elementals.
As a result, in the new town Academy (AdvMapTownShared) (2), water elementals will be recruited in the 2nd-level dwelling instead of gargoyles, and in the old Academy (AdvMapTownShared), gargoyles will still be recruited.
I don't know how to make it so that this new town can appear when a random town is placed, but you can try adding Academy (AdvMapTownShared) (2) to the list of towns in the file \MapObjects\_(AdvMapSharedGroup)\Towns\any; this should help.