Hello folks!
So I'm an amateur modder, fortress lover, and adventure mode enthusiast, so as you can guess I like to do what I can to add content across the board, and love a good new entity. However, there is one thing that is very limiting to anybody trying to make an entity, and that is how they build there sites. But, it would be possible for Toady One the Great to add a massive amount of verity to how entitys construct there towns with almost zero new content.
Firstly, a [HIDDEN] tag. Dwarf fortress vanilla offers 5 major races, but our small friend the kobalt is the only hidden race. They live in caves, aren't seen on the civilizations page on embark, and you can't see there site on any maps. The only way to achieve this for custom races is to make them also live in caves. But personalty I would love hidden villages in forests, and unknown dark towers in badlands full of evil knights. It would add a lot of excitement to not really know what to expect from a site, so please toady, a [HIDDEN] tag so we can hide civilizations.
This brings up the point of what symbol to use for civilizations that live in caves but aren't hidden. Simple solution, can we select out own symbol and color for sites, like creatures, rather then the site type implying that.
So these two things alone are nice and simple, but here comes the slightly trickier part.
So first we do away with the [DEFAULT_SITE_TYPE:(argument)], a well as the liked and tolerates. These things are just holding us back! Instead we assume that all entitys will form some sort of site. Now instead of the site deciding what they build, there is a [CONSTRUCTION:(argument)] tag. This decides what the entity will build. So, for example
[CONSTRUCTION:TOWER]
[CONSTRUCTION:HOUSE]
This would cause the entity to build a large dark tower surrounded by smaller houses. Neither of these are new features, just put together in a new way. Elves would use [CONSTRUCTION:TREE] so that they name trees, and kobalds would have [CONSTRUCTION:CAVE] but since caves can't be built, they would need to look for one!
A for how entitys take over new sites, we now assume that to start with, an entity will take over any site it finds. Now we add the tags [SITE_REQUIRE:(argument)] and [SITE_EXCLUDE:(argument)]. The required tag would mean that the entity will ONLY move in if the site contains this feature, and exclude means that if the site contains that feature, they won't move in. So for example, if we wanted out previous entity to move into only sites with a dark tower, but NOT elfish named trees, we would make it as so
[CONSTRUCTION:TOWER]
[CONSTRUCTION:HOUSE]
[SITE_REQUIRE:TOWER]
[SITE_EXCLUDE:TREE]
Cool? Yea, thought so. Now from what we have so far we could get some AWESOME races going, however, because I like the extra level of depth, lets add one more tag to our list. [BUILDING_MATERIAL:(WOOD/STONE/ANY):(SPECIFIC MATERIAL/ANY)] would follow any of the construction tags. It would tell the game what to construct the building out of. If this tag is missing, it implys [BUILDING_MATERIAL:ANY:ANY] and the entity would be with what ever they can find. The first argument defines what type of material is used, so human houses right now would use [BUILDING_MATERIAL:WOOD:ANY] while dark towers would use [BUILDING_MATERIAL:STONE:OBSIDIAN]
This tag could also be used to give greater control over what sites an entity likes or dislikes. Que our running example. If we wanted them to build there housing out of stone, towers out of marble, and only move into sites with marble towers, we do this
[CONSTRUCTION:TOWER]
[BUILDING_MATERIAL:STONE:MARBLE]
[CONSTRUCTION:HOUSE]
[BUILDING_MATERIAL:STONE:ANY]
[SITE_REQUIRE:TOWER]
[BUILDING_MATERIAL:STONE:MARBLE]
[SITE_EXCLUDE:TREE]
So with just these changed to the raws, it gives us significantly more options in making sites then just the current 6 (If we count layers_linked) and will give modders some more room for creativity.
Entity that lives on glaciers and builds out of ice? Hell yea!