If anyone needs it, I can tell you how to create a new town (I delved into the Naga town created by zahar and roughly understood the principle).
1) Select the town, go to Shared, see the shared files of the towns. Take, for example, Academy.(AdvMapTownShared) and copy it. You get two towns: Academy.(AdvMapTownShared) and Academy.(AdvMapTownShared) (2).
2) Select the town on the map and in shared write AdvMapTownShared:MapObjects\Academy.(AdvMapTownShared) (2). As a result, a clone of the Academy town appears on the map.
3) Select the town, click on the line next to shared, buttons pop up ... and New. Click ..., select AdvMapTownShared:MapObjects\Academy.(AdvMapTownShared) (2). On the right side there will be data about the town: model, animation, effects, etc. (the model and animation are missing by default, so from the outside the town will look like the faction's emblem if nothing is changed). Find buildings. Under numbers 19 and 20 there will be stone and obsidian parapets. Click on the line next to 19 (TownBuildingSharedStats:GameMechanics\TownBuildingSharedStats\Academy\Dwelling_2\StoneParapet) and on ..., you will be taken to the address. Copy StoneParapet, you get StoneParapet (2). Select it, the following 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 - recruited monsters
4) For example, change the recruited monsters CREATURE_STONE_GARGOYLE to CREATURE_WATER_ELEMENTAL. Return to building, opposite number 19 should not be 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 there.
As a result, in the new town Academy.(AdvMapTownShared) (2), water elementals are recruited in dwelling level 2 instead of gargoyles, and in the old Academy.(AdvMapTownShared) gargoyles are still recruited.
How to make it so that when a random town is placed, it can be the new one - I don't know, but you can try adding Academy.(AdvMapTownShared) (2) to the list of towns in the file \MapObjects\_(AdvMapSharedGroup)\Towns\any, it should help.
and above are paths to models of walls, creatures on towers and buildings of the town, personally I replaced the NINTH town Hill_Castle.(AdvMapTownShared).xdb without affecting others, you can see screenshots here
/topic/at/757464/