Want to brag.
Made VCMI to change appearances for Castle Town depending on terrains (forum.acidcave.net/topic.php?TID=2393, Sower work).
It is easy, you must only not forget to replace original templates (village,fort,citadel,castle,capitol) by new only grass templates.
{
"core:castle" : {
"town" : {
"mapObject" : {
"filters" : {
"village_dirt": "noneOf", "fort" ] ],
"fort_dirt" : "allOf", "fort" ], "noneOf", "citadel" ] ] ],
"citadel_dirt" : "allOf", "citadel" ], "noneOf", "castle" ] ] ],
"castle_dirt" : "allOf", "castle" ], "noneOf", "capitol" ] ] ],
"capitol_dirt" : "allOf", "castle" ], "capitol" ] ],
"village": "noneOf", "fort" ] ],
"fort" : "allOf", "fort" ], "noneOf", "citadel" ] ] ],
"citadel" : "allOf", "citadel" ], "noneOf", "castle" ] ] ],
"castle" : "allOf", "castle" ], "noneOf", "capitol" ] ] ],
"capitol" : "allOf", "castle" ], "capitol" ] ],
"village_lava": "noneOf", "fort" ] ],
"fort_lava" : "allOf", "fort" ], "noneOf", "citadel" ] ] ],
"citadel_lava" : "allOf", "citadel" ], "noneOf", "castle" ] ] ],
"castle_lava" : "allOf", "castle" ], "noneOf", "capitol" ] ] ],
"capitol_lava" : "allOf", "castle" ], "capitol" ] ],
"village_rough": "noneOf", "fort" ] ],
"fort_rough" : "allOf", "fort" ], "noneOf", "citadel" ] ] ],
"citadel_rough" : "allOf", "citadel" ], "noneOf", "castle" ] ] ],
"castle_rough" : "allOf", "castle" ], "noneOf", "capitol" ] ] ],
"capitol_rough" : "allOf", "castle" ], "capitol" ] ],
"village_sand": "noneOf", "fort" ] ],
"fort_sand" : "allOf", "fort" ], "noneOf", "citadel" ] ] ],
"citadel_sand" : "allOf", "citadel" ], "noneOf", "castle" ] ] ],
"castle_sand" : "allOf", "castle" ], "noneOf", "capitol" ] ] ],
"capitol_sand" : "allOf", "castle" ], "capitol" ] ],
"village_snow": "noneOf", "fort" ] ],
"fort_snow" : "allOf", "fort" ], "noneOf", "citadel" ] ] ],
"citadel_snow" : "allOf", "citadel" ], "noneOf", "castle" ] ] ],
"castle_snow" : "allOf", "castle" ], "noneOf", "capitol" ] ] ],
"capitol_snow" : "allOf", "castle" ], "capitol" ] ],
"village_subterra": "noneOf", "fort" ] ],
"fort_subterra" : "allOf", "fort" ], "noneOf", "citadel" ] ] ],
"citadel_subterra" : "allOf", "citadel" ], "noneOf", "castle" ] ] ],
"castle_subterra" : "allOf", "castle" ], "noneOf", "capitol" ] ] ],
"capitol_subterra" : "allOf", "castle" ], "capitol" ] ],
"village_swamp": "noneOf", "fort" ] ],
"fort_swamp" : "allOf", "fort" ], "noneOf", "citadel" ] ] ],
"citadel_swamp" : "allOf", "citadel" ], "noneOf", "castle" ] ] ],
"castle_swamp" : "allOf", "castle" ], "noneOf", "capitol" ] ] ],
"capitol_swamp" : "allOf", "castle" ], "capitol" ] ],
},
"templates" : {
"village_dirt": {"allowedTerrains":"dirt"], "animation" : "newlook_castle/CastleDirtHall.def"},
"fort_dirt" : {"allowedTerrains":"dirt"], "animation" : "newlook_castle/CastleDirtCastle1.def"},
"citadel_dirt" : {"allowedTerrains":"dirt"], "animation" : "newlook_castle/CastleDirtCastle2.def"},
"castle_dirt" : {"allowedTerrains":"dirt"], "animation" : "newlook_castle/CastleDirtCastle3.def"},
"capitol_dirt" : {"allowedTerrains":"dirt"], "animation" : "newlook_castle/CastleDirtCastle3F.def"},
"village": {"allowedTerrains":"grass"], "animation" : "newlook_castle/CastleGrassHall.def"},
"fort" : {"allowedTerrains":"grass"], "animation" : "newlook_castle/CastleGrassCastle1.def"},
"citadel" : {"allowedTerrains":"grass"], "animation" : "newlook_castle/CastleGrassCastle2.def"},
"castle" : {"allowedTerrains":"grass"], "animation" : "newlook_castle/CastleGrassCastle3.def"},
"capitol" : {"allowedTerrains":"grass"], "animation" : "newlook_castle/CastleGrassCastle3F.def"},
"village_lava": {"allowedTerrains":"lava"], "animation" : "newlook_castle/CastleLavaHall.def"},
"fort_lava" : {"allowedTerrains":"lava"], "animation" : "newlook_castle/CastleLavaCastle1.def"},
"citadel_lava" : {"allowedTerrains":"lava"], "animation" : "newlook_castle/CastleLavaCastle2.def"},
"castle_lava" : {"allowedTerrains":"lava"], "animation" : "newlook_castle/CastleLavaCastle3.def"},
"capitol_lava" : {"allowedTerrains":"lava"], "animation" : "newlook_castle/CastleLavaCastle3F.def"},
"village_rough": {"allowedTerrains":"rough"], "animation" : "newlook_castle/CastleRoughHall.def"},
"fort_rough" : {"allowedTerrains":"rough"], "animation" : "newlook_castle/CastleRoughCastle1.def"},
"citadel_rough" : {"allowedTerrains":"rough"], "animation" : "newlook_castle/CastleRoughCastle2.def"},
"castle_rough" : {"allowedTerrains":"rough"], "animation" : "newlook_castle/CastleRoughCastle3.def"},
"capitol_rough" : {"allowedTerrains":"rough"], "animation" : "newlook_castle/CastleRoughCastle3F.def"},
"village_sand": {"allowedTerrains":"sand"], "animation" : "newlook_castle/CastleSandHall.def"},
"fort_sand" : {"allowedTerrains":"sand"], "animation" : "newlook_castle/CastleSandCastle1.def"},
"citadel_sand" : {"allowedTerrains":"sand"], "animation" : "newlook_castle/CastleSandCastle2.def"},
"castle_sand" : {"allowedTerrains":"sand"], "animation" : "newlook_castle/CastleSandCastle3.def"},
"capitol_sand" : {"allowedTerrains":"sand"], "animation" : "newlook_castle/CastleSandCastle3F.def"},
"village_snow": {"allowedTerrains":"snow"], "animation" : "newlook_castle/CastleSnowHall.def"},
"fort_snow" : {"allowedTerrains":"snow"], "animation" : "newlook_castle/CastleSnowCastle1.def"},
"citadel_snow" : {"allowedTerrains":"snow"], "animation" : "newlook_castle/CastleSnowCastle2.def"},
"castle_snow" : {"allowedTerrains":"snow"], "animation" : "newlook_castle/CastleSnowCastle3.def"},
"capitol_snow" : {"allowedTerrains":"snow"], "animation" : "newlook_castle/CastleSnowCastle3F.def"},
"village_swamp": {"allowedTerrains":"swamp"], "animation" : "newlook_castle/CastleSwampHall.def"},
"fort_swamp" : {"allowedTerrains":"swamp"], "animation" : "newlook_castle/CastleSwampCastle1.def"},
"citadel_swamp" : {"allowedTerrains":"swamp"], "animation" : "newlook_castle/CastleSwampCastle2.def"},
"castle_swamp" : {"allowedTerrains":"swamp"], "animation" : "newlook_castle/CastleSwampCastle3.def"},
"capitol_swamp" : {"allowedTerrains":"swamp"], "animation" : "newlook_castle/CastleSwampCastle3F.def"},
"village_subterra": {"allowedTerrains":"subterra"], "animation" : "newlook_castle/CastleSubterraHall.def"},
"fort_subterra" : {"allowedTerrains":"subterra"], "animation" : "newlook_castle/CastleSubterraCastle1.def"},
"citadel_subterra" : {"allowedTerrains":"subterra"], "animation" : "newlook_castle/CastleSubterraCastle2.def"},
"castle_subterra" : {"allowedTerrains":"subterra"], "animation" : "newlook_castle/CastleSubterraCastle3.def"},
"capitol_subterra" : {"allowedTerrains":"subterra"], "animation" : "newlook_castle/CastleSubterraCastle3F.def"},
}
}
}
}
}
Some color disruption of castle looks is some bug in VCMI (common to HOTA mod - they used system colors for graphics)